home *** CD-ROM | disk | FTP | other *** search
/ CD Actual Thematic 7: Programming / CDAT7.iso / Share / Java / Gamelicator / examples / Boinkaroids / com / next / gt / ActorManager.class (.txt) < prev    next >
Encoding:
Java Class File  |  1998-04-20  |  2.6 KB  |  151 lines

  1. package com.next.gt;
  2.  
  3. import java.awt.Rectangle;
  4. import java.util.Vector;
  5.  
  6. public class ActorManager {
  7.    protected Gamelication owner;
  8.    public Vector actors = new Vector();
  9.    private Vector actorsScheduledForRemoval = new Vector();
  10.    private Vector actorsScheduledForInsertion = new Vector();
  11.    private boolean removeAllActors = false;
  12.  
  13.    public ActorManager(Gamelication var1) {
  14.       this.owner = var1;
  15.    }
  16.  
  17.    public void addActor(Actor var1) {
  18.       this.actorsScheduledForInsertion.addElement(var1);
  19.    }
  20.  
  21.    public void removeActor(Actor var1) {
  22.       this.actorsScheduledForRemoval.addElement(var1);
  23.    }
  24.  
  25.    public void removeAllActors() {
  26.       for(int var1 = 0; var1 < this.actors.size(); ++var1) {
  27.       }
  28.  
  29.       this.actorsScheduledForRemoval.removeAllElements();
  30.       this.actorsScheduledForInsertion.removeAllElements();
  31.       this.actors.removeAllElements();
  32.    }
  33.  
  34.    public boolean isActorAt(double var1, double var3) {
  35.       boolean var5 = false;
  36.  
  37.       for(int var6 = 0; var6 < this.actors.size(); ++var6) {
  38.          Actor var7 = (Actor)this.actors.elementAt(var6);
  39.          if (!(var1 >= var7.x)) {
  40.             break;
  41.          }
  42.  
  43.          if (var1 <= var7.x + (double)var7.width && var3 >= var7.y && var3 <= var7.y + (double)var7.height) {
  44.             var5 = true;
  45.          }
  46.       }
  47.  
  48.       return var5;
  49.    }
  50.  
  51.    public boolean isActorIn(Rectangle var1) {
  52.       boolean var2 = false;
  53.       double var3 = (double)(var1.x + var1.width);
  54.  
  55.       for(int var5 = 0; var5 < this.actors.size(); ++var5) {
  56.          Actor var6 = (Actor)this.actors.elementAt(var5);
  57.          if (!(var3 >= var6.x)) {
  58.             break;
  59.          }
  60.  
  61.          if ((double)var1.y <= var6.y) {
  62.             if ((double)(var1.y + var1.height) > var6.y) {
  63.                var2 = true;
  64.             }
  65.          } else if (var6.y + (double)var6.height > (double)var1.y) {
  66.             var2 = true;
  67.          }
  68.       }
  69.  
  70.       return var2;
  71.    }
  72.  
  73.    private final void sortActorsByXCoordinate() {
  74.       int var3 = this.actors.size();
  75.  
  76.       for(int var2 = 1; var2 < var3; ++var2) {
  77.          Actor var4 = (Actor)this.actors.elementAt(var2);
  78.  
  79.          int var1;
  80.          for(var1 = var2 - 1; var1 >= 0; --var1) {
  81.             Actor var5 = (Actor)this.actors.elementAt(var1);
  82.             if (!(var4.x < var5.x)) {
  83.                break;
  84.             }
  85.  
  86.             this.actors.setElementAt(var5, var1 + 1);
  87.          }
  88.  
  89.          if (var2 != var1 + 1) {
  90.             this.actors.setElementAt(var4, var1 + 1);
  91.          }
  92.       }
  93.  
  94.    }
  95.  
  96.    private final void detectCollision() {
  97.       int var3 = this.actors.size();
  98.  
  99.       for(int var2 = 0; var2 + 1 < var3; ++var2) {
  100.          Actor var4 = (Actor)this.actors.elementAt(var2);
  101.          double var5 = var4.x + (double)var4.width;
  102.  
  103.          for(int var1 = var2 + 1; var1 < var3; ++var1) {
  104.             Actor var7 = (Actor)this.actors.elementAt(var1);
  105.             if (!(var5 >= var7.x)) {
  106.                break;
  107.             }
  108.  
  109.             if (var4.y <= var7.y) {
  110.                if (var4.y + (double)var4.height > var7.y) {
  111.                   this.handleBBCollision(var4, var7);
  112.                }
  113.             } else if (var7.y + (double)var7.height > var4.y) {
  114.                this.handleBBCollision(var4, var7);
  115.             }
  116.          }
  117.       }
  118.  
  119.    }
  120.  
  121.    protected void handleBBCollision(Actor var1, Actor var2) {
  122.       var1.collideWithActor(var2);
  123.       var2.collideWithActor(var1);
  124.    }
  125.  
  126.    public void tick() {
  127.       if (this.actorsScheduledForInsertion.size() > 0) {
  128.          for(int var1 = 0; var1 < this.actorsScheduledForInsertion.size(); ++var1) {
  129.             this.actors.addElement(this.actorsScheduledForInsertion.elementAt(var1));
  130.          }
  131.  
  132.          this.actorsScheduledForInsertion.removeAllElements();
  133.       }
  134.  
  135.       if (this.actorsScheduledForRemoval.size() > 0) {
  136.          for(int var2 = 0; var2 < this.actorsScheduledForRemoval.size(); ++var2) {
  137.             this.actors.removeElement(this.actorsScheduledForRemoval.elementAt(var2));
  138.          }
  139.  
  140.          this.actorsScheduledForRemoval.removeAllElements();
  141.       }
  142.  
  143.       for(int var3 = 0; var3 < this.actors.size(); ++var3) {
  144.          ((Actor)this.actors.elementAt(var3)).tick();
  145.       }
  146.  
  147.       this.sortActorsByXCoordinate();
  148.       this.detectCollision();
  149.    }
  150. }
  151.