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

  1. class FireBeam extends LRG.LRGMovieClip
  2. {
  3.    var m_kGlobalBeamEndPosition;
  4.    var m_bCollided;
  5.    var m_pExplosionArray;
  6.    var m_bHitSomething;
  7.    var m_fEnemiesHit;
  8.    var m_fNumberExplosions;
  9.    var m_fSpeed;
  10.    var m_kBeamEndPosition;
  11.    function FireBeam()
  12.    {
  13.       super();
  14.    }
  15.    function init()
  16.    {
  17.       super.init();
  18.       this.setClock(_global.getGameTimer());
  19.       this.m_kGlobalBeamEndPosition = new Object();
  20.       this.m_bCollided = false;
  21.       this.m_pExplosionArray = new Array();
  22.       this.m_bHitSomething = false;
  23.       this.m_fEnemiesHit = 0;
  24.       this.m_fNumberExplosions = 0;
  25.       var _loc4_ = new Object();
  26.       _loc4_.m_sName = "ADD_EXPLOSIONS";
  27.       _loc4_.m_fSPF = Settings(_global.getSettings()).getSetting("BEAM_EXPLOSION_WAIT_TIME");
  28.       _loc4_.m_kCallback = this.addExplosionCallback;
  29.       var _loc5_ = new LRG.LRGRepeatedCallbackAction(_loc4_);
  30.       this.addAction(_loc5_);
  31.    }
  32.    function setSpeed(fSpeed)
  33.    {
  34.       this.m_fSpeed = fSpeed;
  35.    }
  36.    function onAdd()
  37.    {
  38.       this.playAnimation("FIRE_ANIMATION",this.m_fSpeed,1,100,false,1);
  39.       this.startAction("ADD_EXPLOSIONS",null,false);
  40.    }
  41.    function onRemove()
  42.    {
  43.       if(this.m_fEnemiesHit > 1)
  44.       {
  45.          PlayerState(_global.getPlayerState()).setComboShotsThisRound(PlayerState(_global.getPlayerState()).getComboShotsThisRound() + 1);
  46.          PlayerState(_global.getPlayerState()).setComboShotsTotal(PlayerState(_global.getPlayerState()).getComboShotsTotal() + 1);
  47.       }
  48.       this.stopAction("ADD_EXPLOSIONS",false);
  49.       var _loc3_ = new Sound(this);
  50.       _loc3_.stop();
  51.    }
  52.    function fadeOut()
  53.    {
  54.       var _loc2_ = new Object();
  55.       _loc2_.m_sName = "FADE_OUT";
  56.       _loc2_.m_fTotalActionTime = 0.15;
  57.       _loc2_.m_fFPS = 60;
  58.       _loc2_.m_bFadeIn = false;
  59.       var _loc3_ = new LRG.LRGFadeAction(_loc2_);
  60.       this.addAction(_loc3_);
  61.       this.stopAction("FIRE_ANIMATION",false);
  62.       this.startAction("FADE_OUT",null,true);
  63.    }
  64.    function doEnterFrame()
  65.    {
  66.       if(this.m_bCollided || !this.m_kGlobalBeamEndPosition || ApplicationState(_global.getApplicationState()).isPaused())
  67.       {
  68.          return undefined;
  69.       }
  70.       this.m_kGlobalBeamEndPosition.x = this.m_kBeamEndPosition._x;
  71.       this.m_kGlobalBeamEndPosition.y = this.m_kBeamEndPosition._y;
  72.       this.localToGlobal(this.m_kGlobalBeamEndPosition);
  73.       if(this.barriersCollisionTest())
  74.       {
  75.          return undefined;
  76.       }
  77.       this.symbolTargetsCollisionTest();
  78.       var _loc4_ = {x:-20,y:0};
  79.       this.localToGlobal(_loc4_);
  80.       var _loc3_ = FullmetalGame(_global.g_kApplication.m_kGameScreen).getEnemyManager().checkCollision(_loc4_,this.m_kGlobalBeamEndPosition);
  81.       if(_loc3_)
  82.       {
  83.          this.m_fEnemiesHit = this.m_fEnemiesHit + 1;
  84.          _loc3_.explode(this.m_fEnemiesHit);
  85.          this.m_bHitSomething = true;
  86.          return undefined;
  87.       }
  88.    }
  89.    function barriersCollisionTest()
  90.    {
  91.       var _loc3_ = _global.g_kApplication.m_kGameScreen;
  92.       if(this.barrierCollisionTest(_loc3_.m_kBarrier1))
  93.       {
  94.          return true;
  95.       }
  96.       if(this.barrierCollisionTest(_loc3_.m_kBarrier2))
  97.       {
  98.          return true;
  99.       }
  100.       if(this.barrierCollisionTest(_loc3_.m_kBarrier3))
  101.       {
  102.          return true;
  103.       }
  104.       if(this.barrierCollisionTest(_loc3_.m_kBarrier4))
  105.       {
  106.          return true;
  107.       }
  108.       if(this.barrierCollisionTest(_loc3_.m_kBarrier5))
  109.       {
  110.          return true;
  111.       }
  112.       if(this.barrierCollisionTest(_loc3_.m_kBarrier6))
  113.       {
  114.          return true;
  115.       }
  116.       if(this.barrierCollisionTest(_loc3_.m_kBarrier7))
  117.       {
  118.          return true;
  119.       }
  120.       if(this.barrierCollisionTest(_loc3_.m_kBarrier8))
  121.       {
  122.          return true;
  123.       }
  124.       return false;
  125.    }
  126.    function barrierCollisionTest(kBarrier)
  127.    {
  128.       if(kBarrier.isExplodable() && kBarrier.hitTest(this.m_kGlobalBeamEndPosition.x,this.m_kGlobalBeamEndPosition.y,true))
  129.       {
  130.          this.m_bCollided = true;
  131.          this.m_bHitSomething = true;
  132.          kBarrier.explode();
  133.          this.fadeOut();
  134.          return true;
  135.       }
  136.       return false;
  137.    }
  138.    function symbolTargetsCollisionTest()
  139.    {
  140.       var _loc3_ = _global.g_kApplication.m_kGameScreen;
  141.       if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget1))
  142.       {
  143.          return true;
  144.       }
  145.       if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget2))
  146.       {
  147.          return true;
  148.       }
  149.       if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget3))
  150.       {
  151.          return true;
  152.       }
  153.       if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget4))
  154.       {
  155.          return true;
  156.       }
  157.       if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget5))
  158.       {
  159.          return true;
  160.       }
  161.       if(this.symbolTargetCollisionTest(_loc3_.m_kSymbolTargetHolder.m_kSymbolTarget6))
  162.       {
  163.          return true;
  164.       }
  165.       return false;
  166.    }
  167.    function symbolTargetCollisionTest(kSymbolTarget)
  168.    {
  169.       if(!kSymbolTarget.isActive() && kSymbolTarget.hitTest(this.m_kGlobalBeamEndPosition.x,this.m_kGlobalBeamEndPosition.y,true))
  170.       {
  171.          this.m_bHitSomething = true;
  172.          kSymbolTarget.explode();
  173.          return true;
  174.       }
  175.       return false;
  176.    }
  177.    function addExplosionCallback()
  178.    {
  179.       if(this.m_pExplosionArray.length < Settings(_global.getSettings()).getSetting("BEAM_EXPLOSION_MAX_ON_SCREEN"))
  180.       {
  181.          var _loc3_ = {x:this.m_kBeamEndPosition._x,y:this.m_kBeamEndPosition._y};
  182.          this.localToGlobal(_loc3_);
  183.          if(_loc3_.x < -10 || _loc3_.x > 610 || _loc3_.y < -10 || _loc3_.y > 410)
  184.          {
  185.             return undefined;
  186.          }
  187.          this.m_fNumberExplosions = this.m_fNumberExplosions + 1;
  188.          var _loc4_ = LRG.LRGMovieClip(this.attachMovie("s_FireExplosion","",this.getNextHighestDepth()));
  189.          _loc4_._x = this.m_kBeamEndPosition._x;
  190.          _loc4_._y = this.m_kBeamEndPosition._y;
  191.          _loc4_.playAnimation("EXPLODE",40,1,16,false,1);
  192.          var _loc5_ = _loc3_.x / 3 - 100;
  193.          if(this.m_fNumberExplosions % 2 == 0 && Math.random() > 0.3)
  194.          {
  195.             if(this.m_fNumberExplosions % 4 == 0)
  196.             {
  197.                _global.playSound("fma_fire_beam_explosion1.wav",1,_loc4_,_loc5_);
  198.             }
  199.             else
  200.             {
  201.                _global.playSound("fma_fire_beam_explosion2.wav",1,_loc4_,_loc5_);
  202.             }
  203.          }
  204.          this.m_pExplosionArray.push(_loc4_);
  205.       }
  206.    }
  207.    function isHitSomething()
  208.    {
  209.       return this.m_bHitSomething;
  210.    }
  211.    function onActionCompleted(sActionKey)
  212.    {
  213.       if(sActionKey == "FIRE_ANIMATION")
  214.       {
  215.          this.fadeOut();
  216.       }
  217.       else if(sActionKey == "FADE_OUT")
  218.       {
  219.          FullmetalGame(_global.g_kApplication.m_kGameScreen).onRequestRemoveFireBeam();
  220.       }
  221.       else if(sActionKey == "EXPLODE")
  222.       {
  223.          var _loc3_ = LRG.LRGMovieClip(this.m_pExplosionArray.shift());
  224.          _loc3_.removeMovieClip();
  225.       }
  226.    }
  227. }
  228.