home *** CD-ROM | disk | FTP | other *** search
- class FireBeam extends LRG.LRGMovieClip
- {
- var m_kGlobalBeamEndPosition;
- var m_bCollided;
- var m_pExplosionArray;
- var m_bHitSomething;
- var m_fEnemiesHit;
- var m_fNumberExplosions;
- var m_fSpeed;
- var m_kBeamEndPosition;
- function FireBeam()
- {
- super();
- }
- function init()
- {
- super.init();
- this.setClock(_global.getGameTimer());
- this.m_kGlobalBeamEndPosition = new Object();
- this.m_bCollided = false;
- this.m_pExplosionArray = new Array();
- this.m_bHitSomething = false;
- this.m_fEnemiesHit = 0;
- this.m_fNumberExplosions = 0;
- var _loc4_ = new Object();
- _loc4_.m_sName = "ADD_EXPLOSIONS";
- _loc4_.m_fSPF = Settings(_global.getSettings()).getSetting("BEAM_EXPLOSION_WAIT_TIME");
- _loc4_.m_kCallback = this.addExplosionCallback;
- var _loc5_ = new LRG.LRGRepeatedCallbackAction(_loc4_);
- this.addAction(_loc5_);
- }
- function setSpeed(fSpeed)
- {
- this.m_fSpeed = fSpeed;
- }
- function onAdd()
- {
- this.playAnimation("FIRE_ANIMATION",this.m_fSpeed,1,100,false,1);
- this.startAction("ADD_EXPLOSIONS",null,false);
- }
- function onRemove()
- {
- if(this.m_fEnemiesHit > 1)
- {
- PlayerState(_global.getPlayerState()).setComboShotsThisRound(PlayerState(_global.getPlayerState()).getComboShotsThisRound() + 1);
- PlayerState(_global.getPlayerState()).setComboShotsTotal(PlayerState(_global.getPlayerState()).getComboShotsTotal() + 1);
- }
- this.stopAction("ADD_EXPLOSIONS",false);
- var _loc3_ = new Sound(this);
- _loc3_.stop();
- }
- function fadeOut()
- {
- var _loc2_ = new Object();
- _loc2_.m_sName = "FADE_OUT";
- _loc2_.m_fTotalActionTime = 0.15;
- _loc2_.m_fFPS = 60;
- _loc2_.m_bFadeIn = false;
- var _loc3_ = new LRG.LRGFadeAction(_loc2_);
- this.addAction(_loc3_);
- this.stopAction("FIRE_ANIMATION",false);
- this.startAction("FADE_OUT",null,true);
- }
- function doEnterFrame()
- {
- if(this.m_bCollided || !this.m_kGlobalBeamEndPosition || ApplicationState(_global.getApplicationState()).isPaused())
- {
- return undefined;
- }
- this.m_kGlobalBeamEndPosition.x = this.m_kBeamEndPosition._x;
- this.m_kGlobalBeamEndPosition.y = this.m_kBeamEndPosition._y;
- this.localToGlobal(this.m_kGlobalBeamEndPosition);
- if(this.barriersCollisionTest())
- {
- return undefined;
- }
- this.symbolTargetsCollisionTest();
- var _loc4_ = {x:-20,y:0};
- this.localToGlobal(_loc4_);
- var _loc3_ = FullmetalGame(_global.g_kApplication.m_kGameScreen).getEnemyManager().checkCollision(_loc4_,this.m_kGlobalBeamEndPosition);
- if(_loc3_)
- {
- this.m_fEnemiesHit = this.m_fEnemiesHit + 1;
- _loc3_.explode(this.m_fEnemiesHit);
- this.m_bHitSomething = true;
- return undefined;
- }
- }
- function barriersCollisionTest()
- {
- var _loc3_ = _global.g_kApplication.m_kGameScreen;
- if(this.barrierCollisionTest(_loc3_.m_kBarrier1))
- {
- return true;
- }
- if(this.barrierCollisionTest(_loc3_.m_kBarrier2))
- {
- return true;
- }
- if(this.barrierCollisionTest(_loc3_.m_kBarrier3))
- {
- return true;
- }
- if(this.barrierCollisionTest(_loc3_.m_kBarrier4))
- {
- return true;
- }
- if(this.barrierCollisionTest(_loc3_.m_kBarrier5))
- {
- return true;
- }
- if(this.barrierCollisionTest(_loc3_.m_kBarrier6))
- {
- return true;
- }
- if(this.barrierCollisionTest(_loc3_.m_kBarrier7))
- {
- return true;
- }
- if(this.barrierCollisionTest(_loc3_.m_kBarrier8))
- {
- return true;
- }
- return false;
- }
- function barrierCollisionTest(kBarrier)
- {
- if(kBarrier.isExplodable() && kBarrier.hitTest(this.m_kGlobalBeamEndPosition.x,this.m_kGlobalBeamEndPosition.y,true))
- {
- this.m_bCollided = true;
- this.m_bHitSomething = true;
- kBarrier.explode();
- this.fadeOut();
- return true;
- }
- return false;
- }
- function symbolTargetsCollisionTest()
- {
- var _loc3_ = _global.g_kApplication.m_kGameScreen;
- if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget1))
- {
- return true;
- }
- if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget2))
- {
- return true;
- }
- if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget3))
- {
- return true;
- }
- if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget4))
- {
- return true;
- }
- if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget5))
- {
- return true;
- }
- if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget6))
- {
- return true;
- }
- return false;
- }
- function symbolTargetCollisionTest(kSymbolTarget)
- {
- if(!kSymbolTarget.isActive() && kSymbolTarget.hitTest(this.m_kGlobalBeamEndPosition.x,this.m_kGlobalBeamEndPosition.y,true))
- {
- this.m_bHitSomething = true;
- kSymbolTarget.explode();
- return true;
- }
- return false;
- }
- function addExplosionCallback()
- {
- if(this.m_pExplosionArray.length < Settings(_global.getSettings()).getSetting("BEAM_EXPLOSION_MAX_ON_SCREEN"))
- {
- var _loc3_ = {x:this.m_kBeamEndPosition._x,y:this.m_kBeamEndPosition._y};
- this.localToGlobal(_loc3_);
- if(_loc3_.x < -10 || _loc3_.x > 610 || _loc3_.y < -10 || _loc3_.y > 410)
- {
- return undefined;
- }
- this.m_fNumberExplosions = this.m_fNumberExplosions + 1;
- var _loc4_ = LRG.LRGMovieClip(this.attachMovie("s_FireExplosion","",this.getNextHighestDepth()));
- _loc4_._x = this.m_kBeamEndPosition._x;
- _loc4_._y = this.m_kBeamEndPosition._y;
- _loc4_.playAnimation("EXPLODE",40,1,16,false,1);
- var _loc5_ = _loc3_.x / 3 - 100;
- if(this.m_fNumberExplosions % 2 == 0 && Math.random() > 0.3)
- {
- if(this.m_fNumberExplosions % 4 == 0)
- {
- _global.playSound("fma_fire_beam_explosion1.wav",1,_loc4_,_loc5_);
- }
- else
- {
- _global.playSound("fma_fire_beam_explosion2.wav",1,_loc4_,_loc5_);
- }
- }
- this.m_pExplosionArray.push(_loc4_);
- }
- }
- function isHitSomething()
- {
- return this.m_bHitSomething;
- }
- function onActionCompleted(sActionKey)
- {
- if(sActionKey == "FIRE_ANIMATION")
- {
- this.fadeOut();
- }
- else if(sActionKey == "FADE_OUT")
- {
- FullmetalGame(_global.g_kApplication.m_kGameScreen).onRequestRemoveFireBeam();
- }
- else if(sActionKey == "EXPLODE")
- {
- var _loc3_ = LRG.LRGMovieClip(this.m_pExplosionArray.shift());
- _loc3_.removeMovieClip();
- }
- }
- }
-