bool AnimFinished(PlrState state) { switch (state) { case PlrState.Jump1: return(sprJumpLong.Frame == 3); case PlrState.JumpLongMid: case PlrState.JumpLongUp: return(sprJumpLong.Frame == 7); case PlrState.JumpShort: return(sprJumpShort.Frame == 7); case PlrState.ClimbL: case PlrState.ClimbR: return(isClimbFinished); case PlrState.FallTouch: return(sprFall.Frame == 2); default: GD.Print("## ALERT"); return(true); } }
void SwitchTo(PlrState newState) { GD.Print(newState.ToString()); if (plrState != newState) { switch (newState) { case PlrState.Idle: TurnOnSpr(SprObj.SprIdle); animPlayer.Stop(); //TODO idle animation velocity.x = 0; //Stopping in every Idle switch break; case PlrState.Run: TurnOnSpr(SprObj.SprRun); animPlayer.Play("run", -1, ANIM_RUN_SPEED); break; case PlrState.Jump1: TurnOnSpr(SprObj.SprJumpLong); animPlayer.Play("jump1", -1, ANIM_JUMP_SPEED); break; case PlrState.JumpLongMid: TurnOnSpr(SprObj.SprJumpLong); animPlayer.Play("jumplong", -1, ANIM_JUMP_SPEED); break; case PlrState.JumpLongUp: TurnOnSpr(SprObj.SprJumpLong); animPlayer.Play("jumplong", -1, ANIM_JUMP_SPEED); break; case PlrState.JumpShort: TurnOnSpr(SprObj.SprJumpShort); animPlayer.Play("jumpshort", -1, ANIM_JUMP_SPEED); break; case PlrState.FallJump1: //do nothing break; case PlrState.Fall: case PlrState.FallJumpLong: sprFall.Frame = 0; TurnOnSpr(SprObj.SprFall); break; case PlrState.FallDelayed: timeToFallAnim = TIME_TO_FALL_ANIM; break; case PlrState.ClimbL: TurnOnSpr(SprObj.SprClimb); gravCoeff = 0.0f; velocity.x = 0; velocity.y = 0; GlobalPosition = GetClimbGlobalPos(climbOffset); isClimbFinished = false; animPlayer.Play("climbl", -1, ANIM_CLIMB_SPEED); break; case PlrState.ClimbR: TurnOnSpr(SprObj.SprClimb); gravCoeff = 0.0f; velocity.x = 0; velocity.y = 0; GlobalPosition = GetClimbGlobalPos(climbOffset); isClimbFinished = false; animPlayer.Play("climbr", -1, ANIM_CLIMB_SPEED); break; case PlrState.FallTouch: animPlayer.Play("touch", -1, ANIM_TOUCH_SPEED); break; } plrState = newState; } }
void AdvanceBody(PlrState plrState, float delta) { switch (plrState) { case PlrState.Jump1: switch (sprJumpLong.Frame) { //jump1 case 0: break; case 1: velocity.x += JUMP_DX * delta * headingX; break; case 2: break; case 3: SlowDownBody(JUMP_NDX * delta * headingX); break; } break; case PlrState.JumpLongMid: switch (sprJumpLong.Frame) { //jumpLong case 4: velocity.x += JUMP_LONG_DX * delta * headingX; break; case 5: break; case 6: //velocity.x -= JUMP_LONG_NDX * delta * headingX; break; case 7: SlowDownBody(JUMP_LONG_NDX * delta * headingX); break; } break; case PlrState.JumpLongUp: switch (sprJumpLong.Frame) { //jumpLong case 4: velocity.x += JUMP_LONG_DX * delta * headingX; break; case 5: break; case 6: //velocity.x -= JUMP_LONG_NDX * delta * headingX; break; case 7: SlowDownBody(JUMP_LONG_NDX * delta * headingX); break; } break; case PlrState.JumpShort: switch (sprJumpShort.Frame) { //jumpShort case 4: velocity.x += ROLL_DX * delta * headingX; break; case 5: break; case 6: velocity.x -= ROLL_NDX * delta * headingX; break; case 7: case 8: velocity.x = 0; break; } break; } }