home *** CD-ROM | disk | FTP | other *** search
/ 600 Games / 600games.iso / Acao / year_of_the_snake.swf / scripts / __Packages / EntityManager.as < prev    next >
Encoding:
Text File  |  2007-03-20  |  7.6 KB  |  196 lines

  1. class EntityManager
  2. {
  3.    var entitylayer;
  4.    var activeenemies;
  5.    var i;
  6.    static var MANAGER;
  7.    static var ENEMY_INDEX = 0;
  8.    static var entity = new Array();
  9.    function EntityManager(target)
  10.    {
  11.       EntityManager.MANAGER = this;
  12.       this.entitylayer = target;
  13.    }
  14.    function addEntity(startx, starty, startz, entitytype, entityname)
  15.    {
  16.       EntityManager.ENEMY_INDEX = EntityManager.ENEMY_INDEX + 1;
  17.       if(entitytype == "player")
  18.       {
  19.          EntityManager.entity.push({name:entityname,instance:new Player(this.entitylayer,"player",startx,starty,startz,20,true)});
  20.       }
  21.       if(entitytype == "enemy_orc")
  22.       {
  23.          EntityManager.entity.push({name:entityname + EntityManager.ENEMY_INDEX,instance:new Enemy(this.entitylayer,entityname + EntityManager.ENEMY_INDEX,"enemy1",startx,starty,startz,25,true)});
  24.       }
  25.       if(entitytype == "enemy_spearorc")
  26.       {
  27.          EntityManager.entity.push({name:entityname + EntityManager.ENEMY_INDEX,instance:new Enemy(this.entitylayer,entityname + EntityManager.ENEMY_INDEX,"enemy2",startx,starty,startz,25,true)});
  28.       }
  29.       if(entitytype == "enemy_fireorc")
  30.       {
  31.          EntityManager.entity.push({name:entityname + EntityManager.ENEMY_INDEX,instance:new Enemy(this.entitylayer,entityname + EntityManager.ENEMY_INDEX,"enemy3",startx,starty,startz,25,true)});
  32.       }
  33.       if(entitytype == "enemy_bossorc")
  34.       {
  35.          EntityManager.entity.push({name:entityname + EntityManager.ENEMY_INDEX,instance:new Enemy(this.entitylayer,entityname + EntityManager.ENEMY_INDEX,"enemy4",startx,starty,startz,25,true)});
  36.       }
  37.       if(entitytype == "slash")
  38.       {
  39.          EntityManager.entity.push({name:entityname,instance:new Effect(this.entitylayer,entityname,startx,starty,startz,25,false)});
  40.       }
  41.       if(entitytype == "explode")
  42.       {
  43.          EntityManager.entity.push({name:entityname,instance:new Effect(this.entitylayer,entityname,startx,starty,startz,25,false)});
  44.       }
  45.       if(entitytype == "blood")
  46.       {
  47.          EntityManager.entity.push({name:entityname,instance:new Effect(this.entitylayer,entityname,startx,starty,startz,25,false)});
  48.       }
  49.       return EntityManager.entity[EntityManager.entity.length - 1].instance;
  50.    }
  51.    function update()
  52.    {
  53.       var _loc2_ = 0;
  54.       while(_loc2_ < EntityManager.entity.length)
  55.       {
  56.          EntityManager.entity[_loc2_].instance.update();
  57.          if(EntityManager.entity[_loc2_].instance.entity.dead)
  58.          {
  59.             EntityManager.entity[_loc2_].instance.remove();
  60.             EntityManager.entity.splice(_loc2_,1);
  61.          }
  62.          _loc2_ = _loc2_ + 1;
  63.       }
  64.       this.depthSort();
  65.    }
  66.    function checkspawn()
  67.    {
  68.       this.activeenemies = 0;
  69.       var _loc2_ = 0;
  70.       while(_loc2_ < EntityManager.entity.length)
  71.       {
  72.          if(EntityManager.entity[_loc2_].instance.isenemy)
  73.          {
  74.             this.activeenemies = this.activeenemies + 1;
  75.          }
  76.          _loc2_ = _loc2_ + 1;
  77.       }
  78.       return this.activeenemies;
  79.    }
  80.    function depthSort()
  81.    {
  82.       var _loc1_ = 0;
  83.       while(_loc1_ < EntityManager.entity.length - 1)
  84.       {
  85.          EntityManager.entity[_loc1_].instance.entity.swapDepths(_loc1_);
  86.          if(EntityManager.entity[_loc1_].instance.y > EntityManager.entity[_loc1_ + 1].instance.y)
  87.          {
  88.             EntityManager.entity.splice(_loc1_,0,EntityManager.entity[_loc1_ + 1]);
  89.             EntityManager.entity.splice(_loc1_ + 2,1);
  90.          }
  91.          _loc1_ = _loc1_ + 1;
  92.       }
  93.    }
  94.    function entityCollide(entname, ent)
  95.    {
  96.       this.i = 0;
  97.       while(this.i < EntityManager.entity.length)
  98.       {
  99.          if(EntityManager.entity[this.i].name != entname && EntityManager.entity[this.i].instance.collide)
  100.          {
  101.             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());
  102.             _loc3_ = Math.sqrt(_loc3_);
  103.             var _loc4_ = _loc3_ - (EntityManager.entity[this.i].instance.getS() + ent.getS());
  104.             if(_loc4_ < 0)
  105.             {
  106.                _loc4_ /= 3;
  107.                ent.nudge((EntityManager.entity[this.i].instance.getX() - ent.getX()) / _loc3_ * _loc4_,(EntityManager.entity[this.i].instance.getY() - ent.getY()) / _loc3_ * _loc4_);
  108.             }
  109.          }
  110.          this.i = this.i + 1;
  111.       }
  112.    }
  113.    function resolveAttack(entname, attackbox, tracking, pushback, lift, damage)
  114.    {
  115.       this.i = 0;
  116.       while(this.i < EntityManager.entity.length)
  117.       {
  118.          if(EntityManager.entity[this.i].name == entname)
  119.          {
  120.             var _loc5_ = EntityManager.entity[this.i].instance.getY();
  121.             var _loc8_ = EntityManager.entity[this.i].instance.getX();
  122.          }
  123.          this.i = this.i + 1;
  124.       }
  125.       var _loc11_ = false;
  126.       this.i = 0;
  127.       while(this.i < EntityManager.entity.length)
  128.       {
  129.          if(EntityManager.entity[this.i].name != entname && !EntityManager.entity[this.i].instance.dead)
  130.          {
  131.             if(attackbox.hitTest(EntityManager.entity[this.i].instance.entity.anims.hitbox) && Math.abs(_loc5_ - EntityManager.entity[this.i].instance.getY()) < tracking)
  132.             {
  133.                var _loc4_ = EntityManager.entity[this.i].instance.getX() - _loc8_;
  134.                var _loc2_ = EntityManager.entity[this.i].instance.getY() - _loc5_;
  135.                var _loc3_ = _loc4_ * _loc4_ + _loc2_ * _loc2_;
  136.                _loc3_ = Math.sqrt(_loc3_);
  137.                if(Math.abs(_loc2_) < 30)
  138.                {
  139.                   _loc2_ = 0;
  140.                }
  141.                if(EntityManager.entity[this.i].name == "player")
  142.                {
  143.                   Cam.CAM.tiltCam((- EntityManager.entity[this.i].instance.entity._xscale) / 20);
  144.                }
  145.                EntityManager.entity[this.i].instance.entity.attacking = false;
  146.                EntityManager.entity[this.i].instance.hurt(damage,false);
  147.                EntityManager.entity[this.i].instance.impulsenudge(_loc4_ / _loc3_ * pushback,_loc2_ / _loc3_ * pushback);
  148.                EntityManager.entity[this.i].instance.lift(lift);
  149.                var _loc7_ = this.addEntity(EntityManager.entity[this.i].instance.getX(),EntityManager.entity[this.i].instance.getY(),EntityManager.entity[this.i].instance.getZ(),"blood","blood");
  150.                _loc7_.entity._xscale = attackbox._parent._parent._xscale;
  151.                if(entname == "player")
  152.                {
  153.                   _loc11_ = true;
  154.                   var _loc15_ = random(3);
  155.                   if(_loc15_ == 0)
  156.                   {
  157.                      new gamesound("slice1",70);
  158.                   }
  159.                   if(_loc15_ == 1)
  160.                   {
  161.                      new gamesound("slice2",70);
  162.                   }
  163.                   if(_loc15_ == 2)
  164.                   {
  165.                      new gamesound("slice3",70);
  166.                   }
  167.                }
  168.             }
  169.          }
  170.          this.i = this.i + 1;
  171.       }
  172.       if(!_loc11_ && entname == "player")
  173.       {
  174.          _loc15_ = random(2);
  175.          if(_loc15_ == 0)
  176.          {
  177.             new gamesound("swish1",70);
  178.          }
  179.          if(_loc15_ == 1)
  180.          {
  181.             new gamesound("swish2",70);
  182.          }
  183.       }
  184.    }
  185.    function cleanup()
  186.    {
  187.       this.i = 0;
  188.       while(this.i < EntityManager.entity.length)
  189.       {
  190.          EntityManager.entity[this.i].instance.entity.removeMovieClip();
  191.          this.i = this.i + 1;
  192.       }
  193.       EntityManager.entity.splice(0,EntityManager.entity.length);
  194.    }
  195. }
  196.