home *** CD-ROM | disk | FTP | other *** search
- class EnemyManager extends LRG.LRGMovieClip
- {
- var m_pEnemyArray;
- var m_fEnemiesToAdd;
- var m_fEnemiesAdded;
- function EnemyManager()
- {
- super();
- }
- function init()
- {
- super.init();
- this.setClock(_global.getGameTimer());
- this.m_pEnemyArray = new Array();
- var _loc4_ = new Object();
- _loc4_.m_sName = "ADD_ENEMIES";
- _loc4_.m_fSPF = 1;
- _loc4_.m_kCallback = this.addCallback;
- var _loc5_ = new LRG.LRGRepeatedCallbackAction(_loc4_);
- this.addAction(_loc5_);
- }
- function onStartGame()
- {
- }
- function onStartRound()
- {
- this.m_fEnemiesToAdd = Settings(_global.getSettings()).getSettingForLevel("ENEMIES_TO_ADD");
- this.m_fEnemiesAdded = 0;
- var _loc3_ = new Object();
- _loc3_.m_fSPF = Settings(_global.getSettings()).getSettingForLevel("ENEMY_ADD_RATE");
- if(_loc3_.m_fSPF < Settings(_global.getSettings()).getSetting("ENEMY_ADD_RATE_MIN"))
- {
- _loc3_.m_fSPF = Settings(_global.getSettings()).getSetting("ENEMY_ADD_RATE_MIN");
- }
- this.startAction("ADD_ENEMIES",_loc3_,true);
- }
- function onEndRound()
- {
- this.stopAction("ADD_ENEMIES",false);
- var _loc2_ = 0;
- while(_loc2_ < this.m_pEnemyArray.length)
- {
- Enemy(this.m_pEnemyArray[_loc2_]).onRemove();
- Enemy(this.m_pEnemyArray[_loc2_]).removeMovieClip();
- _loc2_ = _loc2_ + 1;
- }
- this.m_pEnemyArray.splice(0);
- }
- function isNoMoreEnemies()
- {
- return this.m_pEnemyArray.length <= 0;
- }
- function isNoMoreEnemiesToCome()
- {
- return this.m_fEnemiesAdded > this.m_fEnemiesToAdd;
- }
- function isNoMoreEnemiesInSymbol()
- {
- var _loc3_ = 0;
- while(_loc3_ < this.m_pEnemyArray.length)
- {
- var _loc5_ = Enemy(this.m_pEnemyArray[_loc3_]);
- var _loc4_ = {x:_loc5_._x,y:_loc5_._y};
- this.localToGlobal(_loc4_);
- if(FullmetalGame(_global.g_kApplication.m_kGameScreen).m_kAlchemySymbol.m_kCollision.hitTest(_loc4_.x,_loc4_.y,true))
- {
- return false;
- }
- _loc3_ = _loc3_ + 1;
- }
- return true;
- }
- function explodeAll()
- {
- var _loc2_ = 0;
- while(_loc2_ < this.m_pEnemyArray.length)
- {
- var _loc3_ = Enemy(this.m_pEnemyArray[_loc2_]);
- if(!_loc3_.isExploding())
- {
- _loc3_.explode(1);
- }
- _loc2_ = _loc2_ + 1;
- }
- }
- function checkCollision(kBeamStart, kBeamEnd, kIgnore)
- {
- var _loc8_ = 0;
- while(_loc8_ < this.m_pEnemyArray.length)
- {
- var _loc4_ = Enemy(this.m_pEnemyArray[_loc8_]);
- if(!(_loc4_.isExploding() || _loc4_ == kIgnore))
- {
- var _loc5_ = {x:_loc4_._x,y:_loc4_._y};
- this.localToGlobal(_loc5_);
- 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));
- if(_loc7_ >= 0 && _loc7_ <= 1)
- {
- var _loc11_ = kBeamStart.x + _loc7_ * (kBeamEnd.x - kBeamStart.x);
- var _loc10_ = kBeamStart.y + _loc7_ * (kBeamEnd.y - kBeamStart.y);
- var _loc9_ = _global.LRG.Utils.Vector2D.magnitude(_loc5_.x - _loc11_,_loc5_.y - _loc10_);
- if(_loc9_ < _loc4_.getRadius())
- {
- return _loc4_;
- }
- }
- }
- _loc8_ = _loc8_ + 1;
- }
- return null;
- }
- function addCallback()
- {
- if(this.isNoMoreEnemiesToCome())
- {
- this.stopAction("ADD_ENEMIES",false);
- }
- else
- {
- if(this.m_pEnemyArray.length >= Settings(_global.getSettings()).getSetting("MAX_ENEMIES_ON_SCREEN"))
- {
- return undefined;
- }
- var _loc3_ = _global.g_kApplication.m_kGameScreen;
- if(_loc3_.isSmartBomb())
- {
- return undefined;
- }
- switch(Math.floor(Math.random() * 4))
- {
- case 0:
- this.addEnemy(-25,Math.round(Math.random() * 400),1000);
- break;
- case 1:
- this.addEnemy(650,Math.round(Math.random() * 400),1000);
- break;
- case 2:
- this.addEnemy(Math.round(Math.random() * 600),-20,1000);
- break;
- case 3:
- this.addEnemy(Math.round(Math.random() * 600),420,1000);
- }
- }
- }
- function addEnemy(fPosX, fPosY, fPointValue)
- {
- var _loc6_ = _global.g_kApplication.m_kGameScreen;
- var _loc4_ = Math.floor(Math.random() * 3) + 1;
- var _loc3_ = Enemy(this.attachMovie("s_Enemy" + _loc4_,"m_kEnemy" + this.getNextHighestDepth(),this.getNextHighestDepth()));
- _loc3_._x = fPosX;
- _loc3_._y = fPosY;
- _loc3_.setPointValue(fPointValue);
- _loc3_.setType(_loc4_);
- this.m_pEnemyArray.push(_loc3_);
- var _loc5_ = undefined;
- if(_loc4_ == 1)
- {
- _loc5_ = Settings(_global.getSettings()).getSettingForLevel("ENEMY_SPEEDA");
- }
- else if(_loc4_ == 2)
- {
- _loc5_ = Settings(_global.getSettings()).getSettingForLevel("ENEMY_SPEEDB");
- }
- else if(_loc4_)
- {
- _loc5_ = Settings(_global.getSettings()).getSettingForLevel("ENEMY_SPEEDC");
- }
- _loc3_.setSpeed(_loc5_);
- _loc3_.onAdd();
- this.m_fEnemiesAdded = this.m_fEnemiesAdded + 1;
- }
- function onRequestRemoveEnemy(kEnemy)
- {
- var _loc2_ = this.m_pEnemyArray.getIndex(kEnemy);
- if(_loc2_ != -1)
- {
- this.m_pEnemyArray.splice(_loc2_,1);
- kEnemy.onRemove();
- kEnemy.removeMovieClip();
- }
- }
- }
-