public void SceneFlash(bool resetAll, bool goToCheckPoint, int changeToSceneIndex) { MarioState.ActionType actionType; MarioState.PowerType powerType = currScene.Mario.GetPower; bool isFire = currScene.Mario.IsFire(); bool throwBullet = Scene.Mario.ThrowBullet; bool invincible = Scene.Mario.Invincible; bool jumpTwice = Scene.Mario.JumpTwice; if (changeToSceneIndex == CurrSceneIndex) { //need reset actionType = currScene.Mario.GetAction; ResetScene(resetAll, goToCheckPoint); } else { // Go to Secre Area, keep the current level. GoToSecretScene(changeToSceneIndex); actionType = currScene.Mario.GetAction; } if (!resetAll) { Scene.Mario.Invincible = invincible; currScene.Mario.RestoreStates(actionType, powerType, isFire, throwBullet, jumpTwice); } }
public void RestoreStates(MarioState.ActionType actionType, MarioState.PowerType powerType, bool isFire, bool thorwBullet, bool jumpTwice) { Mario.ThrowBullet = thorwBullet; Mario.JumpTwice = jumpTwice; switch (actionType) { case MarioState.ActionType.Crouch: Mario.ChangeToCrouch(); break; case MarioState.ActionType.Fall: Mario.ChangeToFalling(); break; case MarioState.ActionType.Idle: Mario.ChangeToIdle(); break; case MarioState.ActionType.Jump: Mario.ChangeToJump(Parameters.Velocity.Y); break; case MarioState.ActionType.Walk: Mario.ChangeToWalk(); break; case MarioState.ActionType.Other: Mario.MarioState.ChangeToDied(); break; default: break; } switch (powerType) { case MarioState.PowerType.Died: Mario.MarioState.ChangeToDied(); break; case MarioState.PowerType.Super: if (isFire) { Mario.MarioState.ChangeToFire(); } else { Mario.MarioState.ChangeToSuper(); } break; default: break; //Mario default powerType is Standard. } }