home *** CD-ROM | disk | FTP | other *** search
Wrap
class EntityManager { var entitylayer; var activeenemies; var i; static var MANAGER; static var ENEMY_INDEX = 0; static var entity = new Array(); function EntityManager(target) { EntityManager.MANAGER = this; this.entitylayer = target; } function addEntity(startx, starty, startz, entitytype, entityname) { EntityManager.ENEMY_INDEX = EntityManager.ENEMY_INDEX + 1; if(entitytype == "player") { EntityManager.entity.push({name:entityname,instance:new Player(this.entitylayer,"player",startx,starty,startz,20,true)}); } if(entitytype == "enemy_orc") { EntityManager.entity.push({name:entityname + EntityManager.ENEMY_INDEX,instance:new Enemy(this.entitylayer,entityname + EntityManager.ENEMY_INDEX,"enemy1",startx,starty,startz,25,true)}); } if(entitytype == "enemy_spearorc") { EntityManager.entity.push({name:entityname + EntityManager.ENEMY_INDEX,instance:new Enemy(this.entitylayer,entityname + EntityManager.ENEMY_INDEX,"enemy2",startx,starty,startz,25,true)}); } if(entitytype == "enemy_fireorc") { EntityManager.entity.push({name:entityname + EntityManager.ENEMY_INDEX,instance:new Enemy(this.entitylayer,entityname + EntityManager.ENEMY_INDEX,"enemy3",startx,starty,startz,25,true)}); } if(entitytype == "enemy_bossorc") { EntityManager.entity.push({name:entityname + EntityManager.ENEMY_INDEX,instance:new Enemy(this.entitylayer,entityname + EntityManager.ENEMY_INDEX,"enemy4",startx,starty,startz,25,true)}); } if(entitytype == "slash") { EntityManager.entity.push({name:entityname,instance:new Effect(this.entitylayer,entityname,startx,starty,startz,25,false)}); } if(entitytype == "explode") { EntityManager.entity.push({name:entityname,instance:new Effect(this.entitylayer,entityname,startx,starty,startz,25,false)}); } if(entitytype == "blood") { EntityManager.entity.push({name:entityname,instance:new Effect(this.entitylayer,entityname,startx,starty,startz,25,false)}); } return EntityManager.entity[EntityManager.entity.length - 1].instance; } function update() { var _loc2_ = 0; while(_loc2_ < EntityManager.entity.length) { EntityManager.entity[_loc2_].instance.update(); if(EntityManager.entity[_loc2_].instance.entity.dead) { EntityManager.entity[_loc2_].instance.remove(); EntityManager.entity.splice(_loc2_,1); } _loc2_ = _loc2_ + 1; } this.depthSort(); } function checkspawn() { this.activeenemies = 0; var _loc2_ = 0; while(_loc2_ < EntityManager.entity.length) { if(EntityManager.entity[_loc2_].instance.isenemy) { this.activeenemies = this.activeenemies + 1; } _loc2_ = _loc2_ + 1; } return this.activeenemies; } function depthSort() { var _loc1_ = 0; while(_loc1_ < EntityManager.entity.length - 1) { EntityManager.entity[_loc1_].instance.entity.swapDepths(_loc1_); if(EntityManager.entity[_loc1_].instance.y > EntityManager.entity[_loc1_ + 1].instance.y) { EntityManager.entity.splice(_loc1_,0,EntityManager.entity[_loc1_ + 1]); EntityManager.entity.splice(_loc1_ + 2,1); } _loc1_ = _loc1_ + 1; } } function entityCollide(entname, ent) { this.i = 0; while(this.i < EntityManager.entity.length) { if(EntityManager.entity[this.i].name != entname && EntityManager.entity[this.i].instance.collide) { var _loc3_ = (EntityManager.entity[this.i].instance.getX() - ent.getX()) * (EntityManager.entity[this.i].instance.getX() - ent.getX()) + (EntityManager.entity[this.i].instance.getY() - ent.getY()) * (EntityManager.entity[this.i].instance.getY() - ent.getY()); _loc3_ = Math.sqrt(_loc3_); var _loc4_ = _loc3_ - (EntityManager.entity[this.i].instance.getS() + ent.getS()); if(_loc4_ < 0) { _loc4_ /= 3; ent.nudge((EntityManager.entity[this.i].instance.getX() - ent.getX()) / _loc3_ * _loc4_,(EntityManager.entity[this.i].instance.getY() - ent.getY()) / _loc3_ * _loc4_); } } this.i = this.i + 1; } } function resolveAttack(entname, attackbox, tracking, pushback, lift, damage) { this.i = 0; while(this.i < EntityManager.entity.length) { if(EntityManager.entity[this.i].name == entname) { var _loc5_ = EntityManager.entity[this.i].instance.getY(); var _loc8_ = EntityManager.entity[this.i].instance.getX(); } this.i = this.i + 1; } var _loc11_ = false; this.i = 0; while(this.i < EntityManager.entity.length) { if(EntityManager.entity[this.i].name != entname && !EntityManager.entity[this.i].instance.dead) { if(attackbox.hitTest(EntityManager.entity[this.i].instance.entity.anims.hitbox) && Math.abs(_loc5_ - EntityManager.entity[this.i].instance.getY()) < tracking) { var _loc4_ = EntityManager.entity[this.i].instance.getX() - _loc8_; var _loc2_ = EntityManager.entity[this.i].instance.getY() - _loc5_; var _loc3_ = _loc4_ * _loc4_ + _loc2_ * _loc2_; _loc3_ = Math.sqrt(_loc3_); if(Math.abs(_loc2_) < 30) { _loc2_ = 0; } if(EntityManager.entity[this.i].name == "player") { Cam.CAM.tiltCam((- EntityManager.entity[this.i].instance.entity._xscale) / 20); } EntityManager.entity[this.i].instance.entity.attacking = false; EntityManager.entity[this.i].instance.hurt(damage,false); EntityManager.entity[this.i].instance.impulsenudge(_loc4_ / _loc3_ * pushback,_loc2_ / _loc3_ * pushback); EntityManager.entity[this.i].instance.lift(lift); var _loc7_ = this.addEntity(EntityManager.entity[this.i].instance.getX(),EntityManager.entity[this.i].instance.getY(),EntityManager.entity[this.i].instance.getZ(),"blood","blood"); _loc7_.entity._xscale = attackbox._parent._parent._xscale; if(entname == "player") { _loc11_ = true; var _loc15_ = random(3); if(_loc15_ == 0) { new gamesound("slice1",70); } if(_loc15_ == 1) { new gamesound("slice2",70); } if(_loc15_ == 2) { new gamesound("slice3",70); } } } } this.i = this.i + 1; } if(!_loc11_ && entname == "player") { _loc15_ = random(2); if(_loc15_ == 0) { new gamesound("swish1",70); } if(_loc15_ == 1) { new gamesound("swish2",70); } } } function cleanup() { this.i = 0; while(this.i < EntityManager.entity.length) { EntityManager.entity[this.i].instance.entity.removeMovieClip(); this.i = this.i + 1; } EntityManager.entity.splice(0,EntityManager.entity.length); } }