home *** CD-ROM | disk | FTP | other *** search
/ 600 Games / 600games.iso / Acao / flameout.swf / scripts / __Packages / EnemyManager.as < prev    next >
Encoding:
Text File  |  2006-06-13  |  5.8 KB  |  183 lines

  1. class EnemyManager extends LRG.LRGMovieClip
  2. {
  3.    var m_pEnemyArray;
  4.    var m_fEnemiesToAdd;
  5.    var m_fEnemiesAdded;
  6.    function EnemyManager()
  7.    {
  8.       super();
  9.    }
  10.    function init()
  11.    {
  12.       super.init();
  13.       this.setClock(_global.getGameTimer());
  14.       this.m_pEnemyArray = new Array();
  15.       var _loc4_ = new Object();
  16.       _loc4_.m_sName = "ADD_ENEMIES";
  17.       _loc4_.m_fSPF = 1;
  18.       _loc4_.m_kCallback = this.addCallback;
  19.       var _loc5_ = new LRG.LRGRepeatedCallbackAction(_loc4_);
  20.       this.addAction(_loc5_);
  21.    }
  22.    function onStartGame()
  23.    {
  24.    }
  25.    function onStartRound()
  26.    {
  27.       this.m_fEnemiesToAdd = Settings(_global.getSettings()).getSettingForLevel("ENEMIES_TO_ADD");
  28.       this.m_fEnemiesAdded = 0;
  29.       var _loc3_ = new Object();
  30.       _loc3_.m_fSPF = Settings(_global.getSettings()).getSettingForLevel("ENEMY_ADD_RATE");
  31.       if(_loc3_.m_fSPF < Settings(_global.getSettings()).getSetting("ENEMY_ADD_RATE_MIN"))
  32.       {
  33.          _loc3_.m_fSPF = Settings(_global.getSettings()).getSetting("ENEMY_ADD_RATE_MIN");
  34.       }
  35.       this.startAction("ADD_ENEMIES",_loc3_,true);
  36.    }
  37.    function onEndRound()
  38.    {
  39.       this.stopAction("ADD_ENEMIES",false);
  40.       var _loc2_ = 0;
  41.       while(_loc2_ < this.m_pEnemyArray.length)
  42.       {
  43.          Enemy(this.m_pEnemyArray[_loc2_]).onRemove();
  44.          Enemy(this.m_pEnemyArray[_loc2_]).removeMovieClip();
  45.          _loc2_ = _loc2_ + 1;
  46.       }
  47.       this.m_pEnemyArray.splice(0);
  48.    }
  49.    function isNoMoreEnemies()
  50.    {
  51.       return this.m_pEnemyArray.length <= 0;
  52.    }
  53.    function isNoMoreEnemiesToCome()
  54.    {
  55.       return this.m_fEnemiesAdded > this.m_fEnemiesToAdd;
  56.    }
  57.    function isNoMoreEnemiesInSymbol()
  58.    {
  59.       var _loc3_ = 0;
  60.       while(_loc3_ < this.m_pEnemyArray.length)
  61.       {
  62.          var _loc5_ = Enemy(this.m_pEnemyArray[_loc3_]);
  63.          var _loc4_ = {x:_loc5_._x,y:_loc5_._y};
  64.          this.localToGlobal(_loc4_);
  65.          if(FullmetalGame(_global.g_kApplication.m_kGameScreen).m_kAlchemySymbol.m_kCollision.hitTest(_loc4_.x,_loc4_.y,true))
  66.          {
  67.             return false;
  68.          }
  69.          _loc3_ = _loc3_ + 1;
  70.       }
  71.       return true;
  72.    }
  73.    function explodeAll()
  74.    {
  75.       var _loc2_ = 0;
  76.       while(_loc2_ < this.m_pEnemyArray.length)
  77.       {
  78.          var _loc3_ = Enemy(this.m_pEnemyArray[_loc2_]);
  79.          if(!_loc3_.isExploding())
  80.          {
  81.             _loc3_.explode(1);
  82.          }
  83.          _loc2_ = _loc2_ + 1;
  84.       }
  85.    }
  86.    function checkCollision(kBeamStart, kBeamEnd, kIgnore)
  87.    {
  88.       var _loc8_ = 0;
  89.       while(_loc8_ < this.m_pEnemyArray.length)
  90.       {
  91.          var _loc4_ = Enemy(this.m_pEnemyArray[_loc8_]);
  92.          if(!(_loc4_.isExploding() || _loc4_ == kIgnore))
  93.          {
  94.             var _loc5_ = {x:_loc4_._x,y:_loc4_._y};
  95.             this.localToGlobal(_loc5_);
  96.             var _loc7_ = ((_loc5_.x - kBeamStart.x) * (kBeamEnd.x - kBeamStart.x) + (_loc5_.y - kBeamStart.y) * (kBeamEnd.y - kBeamStart.y)) / (Math.pow(kBeamEnd.x - kBeamStart.x,2) + Math.pow(kBeamEnd.y - kBeamStart.y,2));
  97.             if(_loc7_ >= 0 && _loc7_ <= 1)
  98.             {
  99.                var _loc11_ = kBeamStart.x + _loc7_ * (kBeamEnd.x - kBeamStart.x);
  100.                var _loc10_ = kBeamStart.y + _loc7_ * (kBeamEnd.y - kBeamStart.y);
  101.                var _loc9_ = _global.LRG.Utils.Vector2D.magnitude(_loc5_.x - _loc11_,_loc5_.y - _loc10_);
  102.                if(_loc9_ < _loc4_.getRadius())
  103.                {
  104.                   return _loc4_;
  105.                }
  106.             }
  107.          }
  108.          _loc8_ = _loc8_ + 1;
  109.       }
  110.       return null;
  111.    }
  112.    function addCallback()
  113.    {
  114.       if(this.isNoMoreEnemiesToCome())
  115.       {
  116.          this.stopAction("ADD_ENEMIES",false);
  117.       }
  118.       else
  119.       {
  120.          if(this.m_pEnemyArray.length >= Settings(_global.getSettings()).getSetting("MAX_ENEMIES_ON_SCREEN"))
  121.          {
  122.             return undefined;
  123.          }
  124.          var _loc3_ = _global.g_kApplication.m_kGameScreen;
  125.          if(_loc3_.isSmartBomb())
  126.          {
  127.             return undefined;
  128.          }
  129.          switch(Math.floor(Math.random() * 4))
  130.          {
  131.             case 0:
  132.                this.addEnemy(-25,Math.round(Math.random() * 400),1000);
  133.                break;
  134.             case 1:
  135.                this.addEnemy(650,Math.round(Math.random() * 400),1000);
  136.                break;
  137.             case 2:
  138.                this.addEnemy(Math.round(Math.random() * 600),-20,1000);
  139.                break;
  140.             case 3:
  141.                this.addEnemy(Math.round(Math.random() * 600),420,1000);
  142.          }
  143.       }
  144.    }
  145.    function addEnemy(fPosX, fPosY, fPointValue)
  146.    {
  147.       var _loc6_ = _global.g_kApplication.m_kGameScreen;
  148.       var _loc4_ = Math.floor(Math.random() * 3) + 1;
  149.       var _loc3_ = Enemy(this.attachMovie("s_Enemy" + _loc4_,"m_kEnemy" + this.getNextHighestDepth(),this.getNextHighestDepth()));
  150.       _loc3_._x = fPosX;
  151.       _loc3_._y = fPosY;
  152.       _loc3_.setPointValue(fPointValue);
  153.       _loc3_.setType(_loc4_);
  154.       this.m_pEnemyArray.push(_loc3_);
  155.       var _loc5_ = undefined;
  156.       if(_loc4_ == 1)
  157.       {
  158.          _loc5_ = Settings(_global.getSettings()).getSettingForLevel("ENEMY_SPEEDA");
  159.       }
  160.       else if(_loc4_ == 2)
  161.       {
  162.          _loc5_ = Settings(_global.getSettings()).getSettingForLevel("ENEMY_SPEEDB");
  163.       }
  164.       else if(_loc4_)
  165.       {
  166.          _loc5_ = Settings(_global.getSettings()).getSettingForLevel("ENEMY_SPEEDC");
  167.       }
  168.       _loc3_.setSpeed(_loc5_);
  169.       _loc3_.onAdd();
  170.       this.m_fEnemiesAdded = this.m_fEnemiesAdded + 1;
  171.    }
  172.    function onRequestRemoveEnemy(kEnemy)
  173.    {
  174.       var _loc2_ = this.m_pEnemyArray.getIndex(kEnemy);
  175.       if(_loc2_ != -1)
  176.       {
  177.          this.m_pEnemyArray.splice(_loc2_,1);
  178.          kEnemy.onRemove();
  179.          kEnemy.removeMovieClip();
  180.       }
  181.    }
  182. }
  183.