home *** CD-ROM | disk | FTP | other *** search
/ Champak 48 / cdrom_image.iso / Games / breakawish.swf / scripts / __Packages / Block.as < prev    next >
Encoding:
Text File  |  2007-09-28  |  4.0 KB  |  143 lines

  1. class Block extends BaseObject
  2. {
  3.    var nCurrentStep;
  4.    var aItems;
  5.    var nNeverDiesMaxStep;
  6.    var bLevelEnded;
  7.    var mcRef;
  8.    static var sSTATE_IDLE = "Idle";
  9.    static var sSTATE_OUT = "Out";
  10.    static var nBLOCK_BOUNCE_AMPLITUDE = 35;
  11.    static var nNEVER_DIE_MAX_STEPS = 6;
  12.    function Block(_mcRef, _nSteps)
  13.    {
  14.       super(_mcRef);
  15.       this.nCurrentStep = _nSteps;
  16.       this.aItems = new Array();
  17.       if(!this.NeverDies)
  18.       {
  19.          this.setState(Block.sSTATE_IDLE + this.nCurrentStep);
  20.       }
  21.       else
  22.       {
  23.          this.nNeverDiesMaxStep = Block.nNEVER_DIE_MAX_STEPS;
  24.          this.setState("Idle");
  25.       }
  26.       LevelManager.Instance.doAddListener(this);
  27.    }
  28.    function doEnterFrame()
  29.    {
  30.       super.doEnterFrame();
  31.    }
  32.    function onBoltHit()
  33.    {
  34.       if(!this.bLevelEnded)
  35.       {
  36.          this.onCrushed();
  37.       }
  38.    }
  39.    function onBallHit(_oBall, _nSideUsedForHit)
  40.    {
  41.       if(!this.NeverDies)
  42.       {
  43.          this.nCurrentStep = this.nCurrentStep - 1;
  44.          if(this.nCurrentStep > 0)
  45.          {
  46.             this.setState(Block.sSTATE_IDLE + this.nCurrentStep);
  47.             this.doBounce(Block.nBLOCK_BOUNCE_AMPLITUDE,Block.nBLOCK_BOUNCE_AMPLITUDE);
  48.             var _loc2_ = Library.Sound.SoundManager.isSoundPlaying("Block_Hit.mp3");
  49.             if(_loc2_.bPlaying)
  50.             {
  51.                _loc2_.oSound.doStop();
  52.                _loc2_.oSound.doStart();
  53.             }
  54.             Library.Sound.SoundManager.doPlaySoundInCat(Main.sSOUND_CAT_SOUND,"Block_Hit.mp3",100,1,true);
  55.             Game.Instance.Status.onBlockHit();
  56.          }
  57.          else
  58.          {
  59.             this.onCrushed();
  60.          }
  61.       }
  62.       else if(!(_oBall instanceof ShootingStar))
  63.       {
  64.          this.nNeverDiesMaxStep = this.nNeverDiesMaxStep - 1;
  65.          if(this.nNeverDiesMaxStep > 0)
  66.          {
  67.             this.doBounce(Block.nBLOCK_BOUNCE_AMPLITUDE,Block.nBLOCK_BOUNCE_AMPLITUDE);
  68.             _loc2_ = Library.Sound.SoundManager.isSoundPlaying("Block_NeverDies_Hit.mp3");
  69.             if(_loc2_.bPlaying)
  70.             {
  71.                _loc2_.oSound.doStop();
  72.                _loc2_.oSound.doStart();
  73.             }
  74.             Library.Sound.SoundManager.doPlaySoundInCat(Main.sSOUND_CAT_SOUND,"Block_NeverDies_Hit.mp3",100,1,true);
  75.          }
  76.          else
  77.          {
  78.             this.onCrushed();
  79.          }
  80.       }
  81.    }
  82.    function doAddItem(_nItemType)
  83.    {
  84.       this.aItems.push(_nItemType);
  85.    }
  86.    function doDestroy()
  87.    {
  88.       LevelManager.Instance.doRemoveListener(this);
  89.       super.doDestroy();
  90.    }
  91.    function get NeverDies()
  92.    {
  93.       return this.nCurrentStep == Infinity;
  94.    }
  95.    function get StillAlive()
  96.    {
  97.       return this.nCurrentStep > 0;
  98.    }
  99.    function get BonusAssigned()
  100.    {
  101.       return this.aItems.length != 0;
  102.    }
  103.    function doOut()
  104.    {
  105.       if(this.isStateComplete())
  106.       {
  107.          this.doDestroy();
  108.       }
  109.    }
  110.    function onCrushed()
  111.    {
  112.       LevelManager.Instance.doPutInFront(this.mcRef);
  113.       this.setState(Block.sSTATE_OUT);
  114.       var _loc2_ = Library.Sound.SoundManager.isSoundPlaying("Block_Break.mp3");
  115.       if(_loc2_.bPlaying)
  116.       {
  117.          _loc2_.oSound.doStop();
  118.          _loc2_.oSound.doStart();
  119.       }
  120.       Library.Sound.SoundManager.doPlaySoundInCat(Main.sSOUND_CAT_SOUND,"Block_Break.mp3",40,1,true);
  121.       this.onReleaseBonuses();
  122.       Game.Instance.Status.onBlockCrushed();
  123.       LevelManager.Instance.onBlockCrushed(this);
  124.    }
  125.    function onReleaseBonuses()
  126.    {
  127.       if(this.aItems.length > 0)
  128.       {
  129.          for(var _loc3_ in this.aItems)
  130.          {
  131.             var _loc2_ = this.aItems[_loc3_];
  132.             LevelManager.Instance.doAddItemAt(this.Ref._x,this.Ref._y,_loc2_);
  133.          }
  134.          var _loc4_ = Library.Sound.SoundManager.isSoundPlaying("Bonus_Release.mp3");
  135.          if(_loc4_.bPlaying)
  136.          {
  137.             _loc4_.oSound.doStop();
  138.          }
  139.          Library.Sound.SoundManager.doPlaySoundInCat(Main.sSOUND_CAT_SOUND,"Bonus_Release.mp3",100,1,true);
  140.       }
  141.    }
  142. }
  143.