home *** CD-ROM | disk | FTP | other *** search
- class FallingItem extends BaseObject
- {
- var nItemType;
- var nSpeedX;
- var nSpeedY;
- var mcRef;
- static var sSTATE_FALLING = "Falling";
- static var sSTATE_CATCHED = "Catched";
- static var nINITIAL_SPEED_X_MAX = 3;
- static var nINITIAL_SPEED_Y_MIN = -4;
- static var nINITIAL_SPEED_Y_MAX = 2;
- static var nSPEED_X_LOSS = 0.15;
- static var nACCELERATION = 0.2;
- static var nMAX_FALL_SPEED = 14;
- function FallingItem(_mcRef, _nItemType)
- {
- super(_mcRef);
- this.setState(FallingItem.sSTATE_FALLING);
- this.nItemType = _nItemType;
- this.nSpeedX = Library.Utils.MoreMath.getRandomRange(- FallingItem.nINITIAL_SPEED_X_MAX,FallingItem.nINITIAL_SPEED_X_MAX);
- this.nSpeedY = Library.Utils.MoreMath.getRandomRange(FallingItem.nINITIAL_SPEED_Y_MIN,FallingItem.nINITIAL_SPEED_Y_MAX);
- LevelManager.Instance.doAddListener(this);
- }
- function doDestroy()
- {
- LevelManager.Instance.doRemoveListener(this);
- super.doDestroy();
- }
- function get ItemType()
- {
- return this.nItemType;
- }
- function doCatched()
- {
- if(this.isStateComplete())
- {
- this.doDestroy();
- }
- }
- function doFalling()
- {
- if(this.mcRef._y < LevelManager.nLIMITS_FLOOR)
- {
- this.nSpeedY += FallingItem.nACCELERATION;
- if(this.nSpeedY > FallingItem.nMAX_FALL_SPEED)
- {
- this.nSpeedY = FallingItem.nMAX_FALL_SPEED;
- }
- var _loc2_ = this.mcRef._x + this.nSpeedX;
- var _loc3_ = this.mcRef._y + this.nSpeedY;
- _loc2_ = this.doCheckSides(this.nSpeedX,_loc2_);
- this.mcRef._x = _loc2_;
- this.mcRef._y = _loc3_;
- this.doCheckPaddle();
- }
- else
- {
- LevelManager.Instance.onItemLost(this);
- this.doDestroy();
- }
- }
- function doCheckPaddle()
- {
- var _loc2_ = LevelManager.Instance.MainPaddle;
- var _loc3_ = this.getCollideBottom(_loc2_) || this.getCollideRight(_loc2_) || this.getCollideLeft(_loc2_);
- if(_loc3_)
- {
- LevelManager.Instance.onPlayerCatchItem(this);
- this.setState(FallingItem.sSTATE_CATCHED);
- }
- }
- function doCheckSides(_nSpeedX, _nFutureX)
- {
- switch(Library.Utils.MoreMath.getPolarity(_nSpeedX))
- {
- case 1:
- if(_nFutureX + this.StateBounds.xMax > LevelManager.nLIMITS_RIGHT)
- {
- this.onBounceX();
- _nFutureX = LevelManager.nLIMITS_RIGHT - this.StateBounds.xMax;
- }
- break;
- case -1:
- if(_nFutureX + this.StateBounds.xMin < LevelManager.nLIMITS_LEFT)
- {
- this.onBounceX();
- _nFutureX = LevelManager.nLIMITS_LEFT - this.StateBounds.xMin;
- }
- }
- return _nFutureX;
- }
- function onBounceX()
- {
- this.nSpeedX *= -1;
- }
- }
-