home *** CD-ROM | disk | FTP | other *** search
- package com.next.gt;
-
- import java.awt.Rectangle;
- import java.util.Vector;
-
- public class ActorManager {
- protected Gamelication owner;
- public Vector actors = new Vector();
- private Vector actorsScheduledForRemoval = new Vector();
- private Vector actorsScheduledForInsertion = new Vector();
- private boolean removeAllActors = false;
-
- public ActorManager(Gamelication var1) {
- this.owner = var1;
- }
-
- public void addActor(Actor var1) {
- this.actorsScheduledForInsertion.addElement(var1);
- }
-
- public void removeActor(Actor var1) {
- this.actorsScheduledForRemoval.addElement(var1);
- }
-
- public void removeAllActors() {
- for(int var1 = 0; var1 < this.actors.size(); ++var1) {
- }
-
- this.actorsScheduledForRemoval.removeAllElements();
- this.actorsScheduledForInsertion.removeAllElements();
- this.actors.removeAllElements();
- }
-
- public boolean isActorAt(double var1, double var3) {
- boolean var5 = false;
-
- for(int var6 = 0; var6 < this.actors.size(); ++var6) {
- Actor var7 = (Actor)this.actors.elementAt(var6);
- if (!(var1 >= var7.x)) {
- break;
- }
-
- if (var1 <= var7.x + (double)var7.width && var3 >= var7.y && var3 <= var7.y + (double)var7.height) {
- var5 = true;
- }
- }
-
- return var5;
- }
-
- public boolean isActorIn(Rectangle var1) {
- boolean var2 = false;
- double var3 = (double)(var1.x + var1.width);
-
- for(int var5 = 0; var5 < this.actors.size(); ++var5) {
- Actor var6 = (Actor)this.actors.elementAt(var5);
- if (!(var3 >= var6.x)) {
- break;
- }
-
- if ((double)var1.y <= var6.y) {
- if ((double)(var1.y + var1.height) > var6.y) {
- var2 = true;
- }
- } else if (var6.y + (double)var6.height > (double)var1.y) {
- var2 = true;
- }
- }
-
- return var2;
- }
-
- private final void sortActorsByXCoordinate() {
- int var3 = this.actors.size();
-
- for(int var2 = 1; var2 < var3; ++var2) {
- Actor var4 = (Actor)this.actors.elementAt(var2);
-
- int var1;
- for(var1 = var2 - 1; var1 >= 0; --var1) {
- Actor var5 = (Actor)this.actors.elementAt(var1);
- if (!(var4.x < var5.x)) {
- break;
- }
-
- this.actors.setElementAt(var5, var1 + 1);
- }
-
- if (var2 != var1 + 1) {
- this.actors.setElementAt(var4, var1 + 1);
- }
- }
-
- }
-
- private final void detectCollision() {
- int var3 = this.actors.size();
-
- for(int var2 = 0; var2 + 1 < var3; ++var2) {
- Actor var4 = (Actor)this.actors.elementAt(var2);
- double var5 = var4.x + (double)var4.width;
-
- for(int var1 = var2 + 1; var1 < var3; ++var1) {
- Actor var7 = (Actor)this.actors.elementAt(var1);
- if (!(var5 >= var7.x)) {
- break;
- }
-
- if (var4.y <= var7.y) {
- if (var4.y + (double)var4.height > var7.y) {
- this.handleBBCollision(var4, var7);
- }
- } else if (var7.y + (double)var7.height > var4.y) {
- this.handleBBCollision(var4, var7);
- }
- }
- }
-
- }
-
- protected void handleBBCollision(Actor var1, Actor var2) {
- var1.collideWithActor(var2);
- var2.collideWithActor(var1);
- }
-
- public void tick() {
- if (this.actorsScheduledForInsertion.size() > 0) {
- for(int var1 = 0; var1 < this.actorsScheduledForInsertion.size(); ++var1) {
- this.actors.addElement(this.actorsScheduledForInsertion.elementAt(var1));
- }
-
- this.actorsScheduledForInsertion.removeAllElements();
- }
-
- if (this.actorsScheduledForRemoval.size() > 0) {
- for(int var2 = 0; var2 < this.actorsScheduledForRemoval.size(); ++var2) {
- this.actors.removeElement(this.actorsScheduledForRemoval.elementAt(var2));
- }
-
- this.actorsScheduledForRemoval.removeAllElements();
- }
-
- for(int var3 = 0; var3 < this.actors.size(); ++var3) {
- ((Actor)this.actors.elementAt(var3)).tick();
- }
-
- this.sortActorsByXCoordinate();
- this.detectCollision();
- }
- }
-