home *** CD-ROM | disk | FTP | other *** search
- class PlayerPaddle extends Paddle
- {
- var oKeyManager;
- var oTransition;
- var mcRef;
- var bPaddleAffected;
- var bStickedShot;
- var bCalledEnd;
- var bLevelEnd;
- var nStartX;
- var nStartY;
- var bMagicWandAbility;
- var bMoveLeft;
- var bMoveRight;
- var oPaddleAffectTimer;
- var sTargetPaddleLength;
- var bGotBall;
- var nBallStickRemaining;
- var bBallStickAbility;
- var oTrappedBall;
- var nTrappedXOffset;
- var nTrappedYOffset;
- var nMagicWandShotsRemaining;
- static var sPADDLE_STATE_HIDDEN = "Hidden";
- static var sPADDLE_STATE_NORMAL = "Normal";
- static var sPADDLE_STATE_NORMAL_BOUNCE = "NormalBounce";
- static var sPADDLE_STATE_SHORT = "Short";
- static var sPADDLE_STATE_SHORT_BOUNCE = "ShortBounce";
- static var sPADDLE_STATE_LARGE = "Large";
- static var sPADDLE_STATE_LARGE_BOUNCE = "LargeBounce";
- static var sPADDLE_STATE_LOSE = "Lose";
- static var sPADDLE_STATE_LOSE_END = "LoseEnd";
- static var sPADDLE_STATE_WIN = "Win";
- static var sPADDLE_STATE_WIN_END = "WinEnd";
- static var nBOLTS_OFFSET_X = 0;
- static var nBOLTS_OFFSET_Y = -10;
- static var nBALL_LAUNCH_SPEED_BASE = 5;
- static var nBALL_SPAWN_X = 0;
- static var nBALL_SPAWN_Y = -10;
- static var nMOVE_SPEED = 8;
- static var nSTICK_TRANSLATE_Y = 12;
- function PlayerPaddle(_mcRef)
- {
- super(_mcRef);
- this.oKeyManager = new Library.Utils.KeysManager();
- this.oKeyManager.setListenerForKey(this,32);
- this.oKeyManager.setListenerForKey(this,37);
- this.oKeyManager.setListenerForKey(this,39);
- this.oTransition = new Library.Transition(this.mcRef.mcTransition);
- this.oTransition.Listener = this;
- this.bPaddleAffected = false;
- this.bStickedShot = false;
- this.bCalledEnd = false;
- this.bLevelEnd = false;
- this.nStartX = this.mcRef._x;
- this.nStartY = this.mcRef._y;
- this.bMagicWandAbility = false;
- this.setState(PlayerPaddle.sPADDLE_STATE_NORMAL);
- LevelManager.Instance.doAddListener(this.oTransition);
- }
- function doResume()
- {
- super.doResume();
- this.bMoveLeft = this.oKeyManager.isKeyDown(37);
- this.bMoveRight = this.oKeyManager.isKeyDown(39);
- }
- function doEnterFrame()
- {
- super.doEnterFrame();
- if(this.bPaddleAffected)
- {
- if(this.oPaddleAffectTimer.Time <= 0)
- {
- this.onPaddleGoesNormal();
- }
- }
- if(this.bLevelEnd)
- {
- if(this.nStartX < this.mcRef._x - 5)
- {
- this.bMoveLeft = true;
- }
- else if(this.nStartX > this.mcRef._x + 5)
- {
- this.bMoveRight = true;
- }
- else
- {
- this.mcRef._x = this.nStartX;
- if(!this.bCalledEnd)
- {
- LevelManager.Instance.onPaddleMovedCenter();
- }
- this.bCalledEnd = true;
- }
- }
- this.doMove();
- }
- function onLevelEnded(_bWon)
- {
- this.bLevelEnd = true;
- this.bMoveLeft = false;
- this.bMoveRight = false;
- if(this.bPaddleAffected)
- {
- this.sTargetPaddleLength = PlayerPaddle.sPADDLE_STATE_NORMAL;
- this.oTransition.doStart();
- }
- }
- function onKeyManagerEvent(_nEvent, _nCode)
- {
- if(!this.Paused && !this.bLevelEnd)
- {
- switch(_nEvent)
- {
- case Library.Utils.KeysManager.EVENT_KEY_DOWN:
- switch(_nCode)
- {
- case 37:
- this.bMoveLeft = true;
- break;
- case 39:
- this.bMoveRight = true;
- break;
- case 32:
- }
- break;
- case Library.Utils.KeysManager.EVENT_KEY_UP:
- switch(_nCode)
- {
- case 37:
- this.bMoveLeft = false;
- break;
- case 39:
- this.bMoveRight = false;
- break;
- case 32:
- if(LevelManager.Instance.GameStarted)
- {
- if(this.bGotBall)
- {
- this.doLaunchBall();
- }
- else if(this.bMagicWandAbility)
- {
- this.onShootBolts();
- }
- }
- }
- }
- }
- }
- function onBallSticks(_oBall)
- {
- this.nBallStickRemaining = this.nBallStickRemaining - 1;
- if(this.nBallStickRemaining <= 0)
- {
- this.bBallStickAbility = false;
- LevelManager.Instance.onChewingGumEnd();
- }
- this.bStickedShot = true;
- this.bGotBall = true;
- this.oTrappedBall = _oBall;
- this.nTrappedXOffset = _oBall.Ref._x - this.Ref._x;
- this.nTrappedYOffset = _oBall.Ref._y - this.Ref._y + PlayerPaddle.nSTICK_TRANSLATE_Y;
- this.setTrappedPosition();
- Library.Sound.SoundManager.doPlaySoundInCat(Main.sSOUND_CAT_SOUND,"Timmy_Sticks.mp3",50);
- }
- function onMagicWandCatch()
- {
- this.bMagicWandAbility = true;
- this.nMagicWandShotsRemaining = LevelDesignItem.nBONUS_MAGICWAND_SHOTS;
- this.doUpdateBoltsIndicator();
- }
- function onChewingGumCatch()
- {
- this.bBallStickAbility = true;
- this.nBallStickRemaining = LevelDesignItem.nBONUS_CHEWINGGUM_HITS;
- }
- function onChewingGumEnd()
- {
- this.bBallStickAbility = false;
- this.nBallStickRemaining = 0;
- }
- function onPaddleResize(_sTargetLength)
- {
- this.bPaddleAffected = true;
- this.oPaddleAffectTimer = new Library.Utils.Timer();
- this.oPaddleAffectTimer.Method = Library.Utils.Timer.TIMER_COUNT_DOWN;
- LevelManager.Instance.doAddListener(this.oPaddleAffectTimer);
- switch(_sTargetLength)
- {
- case PlayerPaddle.sPADDLE_STATE_SHORT:
- this.oPaddleAffectTimer.setTime(LevelDesignItem.nPOWERDOWN_JACKBOX_TIME);
- break;
- case PlayerPaddle.sPADDLE_STATE_LARGE:
- this.oPaddleAffectTimer.setTime(LevelDesignItem.nBONUS_TRAMPOLINE_TIME);
- }
- this.oPaddleAffectTimer.doStartTimer();
- if(this.CurrentState.indexOf(_sTargetLength) == -1)
- {
- this.sTargetPaddleLength = _sTargetLength;
- this.oTransition.doStart();
- }
- }
- function onTransitionEvent(_nEvent, _oTransition)
- {
- switch(_nEvent)
- {
- case Library.Transition.TRANSITION_SCREEN_COVERED:
- this.setState(this.sTargetPaddleLength);
- this.doMove();
- break;
- case Library.Transition.TRANSITION_COMPLETE:
- }
- }
- function doGetBall()
- {
- this.bGotBall = true;
- this.bStickedShot = false;
- this.oTrappedBall = LevelManager.Instance.getNewBall();
- this.nTrappedXOffset = PlayerPaddle.nBALL_SPAWN_X;
- this.nTrappedYOffset = PlayerPaddle.nBALL_SPAWN_Y;
- this.setTrappedPosition();
- }
- function doDestroy()
- {
- this.oKeyManager.doDestroy();
- delete this.oKeyManager;
- delete this.oTrappedBall;
- delete this.oPaddleAffectTimer;
- LevelManager.Instance.doRemoveListener(this.oTransition);
- super.doDestroy();
- }
- function doNormalBounce()
- {
- if(this.isStateComplete())
- {
- this.setState(PlayerPaddle.sPADDLE_STATE_NORMAL);
- }
- }
- function doShortBounce()
- {
- if(this.isStateComplete())
- {
- this.setState(PlayerPaddle.sPADDLE_STATE_SHORT);
- }
- }
- function doLargeBounce()
- {
- if(this.isStateComplete())
- {
- this.setState(PlayerPaddle.sPADDLE_STATE_LARGE);
- }
- }
- function onPaddleGoesNormal()
- {
- this.bPaddleAffected = false;
- LevelManager.Instance.doRemoveListener(this.oPaddleAffectTimer);
- delete this.oPaddleAffectTimer;
- this.sTargetPaddleLength = PlayerPaddle.sPADDLE_STATE_NORMAL;
- this.oTransition.doStart();
- }
- function doLaunchBall()
- {
- if(this.oTrappedBall.CurrentState != MainBall.sSTATE_APPEARS)
- {
- var _loc2_ = undefined;
- if(this.bStickedShot)
- {
- var _loc7_ = this.oTrappedBall.Ref._x - this.Ref._x;
- var _loc8_ = (Math.abs(this.StateBounds.xMin) + Math.abs(this.StateBounds.xMax)) / 2;
- var _loc5_ = _loc7_ / _loc8_;
- var _loc3_ = (Paddle.nBALL_LAUNCH_ANGLE_MAX - Paddle.nBALL_LAUNCH_ANGLE_MIN) / 2;
- var _loc6_ = Paddle.nBALL_LAUNCH_ANGLE_MIN + _loc3_;
- _loc2_ = _loc6_ + _loc3_ * _loc5_;
- }
- else
- {
- _loc2_ = Library.Utils.MoreMath.getRandomRange(Paddle.nBALL_LAUNCH_ANGLE_MIN,Paddle.nBALL_LAUNCH_ANGLE_MAX);
- }
- var _loc4_ = PlayerPaddle.nBALL_LAUNCH_SPEED_BASE + Game.Instance.Status.SpeedAddon;
- this.oTrappedBall.setAngle(_loc2_);
- this.oTrappedBall.setSpeed(_loc4_);
- this.bGotBall = false;
- this.onPaddleBounce();
- Library.Sound.SoundManager.doPlaySoundInCat(Main.sSOUND_CAT_SOUND,"Timmy_InitialShot.mp3");
- delete this.oTrappedBall;
- }
- }
- function onShootBolts()
- {
- this.nMagicWandShotsRemaining = this.nMagicWandShotsRemaining - 1;
- if(this.nMagicWandShotsRemaining <= 0)
- {
- this.bMagicWandAbility = false;
- }
- this.doUpdateBoltsIndicator();
- LevelManager.Instance.doNewBolt(this.Ref._x + PlayerPaddle.nBOLTS_OFFSET_X,this.Ref._y + PlayerPaddle.nBOLTS_OFFSET_Y);
- }
- function setTrappedPosition()
- {
- this.oTrappedBall.setPosition(this.mcRef._x + this.nTrappedXOffset,this.mcRef._y + this.nTrappedYOffset);
- }
- function onPaddleBounce()
- {
- if(this.bGotBall)
- {
- this.doLaunchBall();
- }
- switch(this.CurrentState)
- {
- case PlayerPaddle.sPADDLE_STATE_NORMAL:
- case PlayerPaddle.sPADDLE_STATE_SHORT:
- case PlayerPaddle.sPADDLE_STATE_LARGE:
- this.setState(this.CurrentState + "Bounce");
- }
- }
- function doMove()
- {
- var _loc3_ = 0;
- if(this.bMoveLeft)
- {
- _loc3_ -= PlayerPaddle.nMOVE_SPEED;
- }
- if(this.bMoveRight)
- {
- _loc3_ += PlayerPaddle.nMOVE_SPEED;
- }
- if(_loc3_ != 0)
- {
- var _loc2_ = this.mcRef._x + _loc3_;
- switch(Library.Utils.MoreMath.getPolarity(_loc3_))
- {
- case 1:
- if(_loc2_ + this.StateBounds.xMax > LevelManager.nLIMITS_RIGHT)
- {
- _loc2_ = LevelManager.nLIMITS_RIGHT - this.StateBounds.xMax;
- }
- break;
- case -1:
- if(_loc2_ + this.StateBounds.xMin < LevelManager.nLIMITS_LEFT)
- {
- _loc2_ = LevelManager.nLIMITS_LEFT - this.StateBounds.xMin;
- }
- }
- this.mcRef._x = _loc2_;
- }
- if(this.bGotBall)
- {
- this.setTrappedPosition();
- }
- }
- function doLoadStateAction()
- {
- super.doLoadStateAction();
- this.doUpdateBoltsIndicator();
- }
- function doUpdateBoltsIndicator()
- {
- if(this.bMagicWandAbility)
- {
- this.mcRef.mcState.mcBolts1._visible = true;
- this.mcRef.mcState.mcBolts1.txtNum.text = this.nMagicWandShotsRemaining;
- this.mcRef.mcState.mcBolts2._visible = true;
- this.mcRef.mcState.mcBolts2.txtNum.text = this.nMagicWandShotsRemaining;
- }
- else
- {
- this.mcRef.mcState.mcBolts1._visible = false;
- this.mcRef.mcState.mcBolts2._visible = false;
- }
- }
- }
-