// ********************************************************************* public void DoEnterDoor() { enterDoorOk = false; ChangeToState(WitchState.EnterDoor); currentStep = 0; spriteEnterDoor.SetAnimSteps(currentStep, currentStep, 0); PrintState(); }
// ********************************************************************* public void DoWalk() { ChangeToState(WitchState.RightWalk); currentStep = 0; toRight.SetAnimSteps(currentStep, currentStep, 0); PrintState(); }
// ********************************************************************* public Witch(int stepX, int stepY) { Width = 2 * All.TileWidth; Height = 21; toLeft = new OneSprite(20 * 100, 16, 21, 18, 100, true); toRight = new OneSprite(24 * 100, 16, 21, 18, 100, true); spriteMakePotion = new OneSprite(32 * 100, 16, 21, 3, 80, true); spriteDying = new OneSprite(38 * 100, 16, 21, 8, 80, true); spriteExitingDoor = new OneSprite(28 * 100 + 14, 16, 21, 3, 140, true); spriteEnterDoor = new OneSprite(28 * 100, 16, 21, 4, 140, true); currentStep = 0; toRight.SetAnimSteps(currentStep, currentStep, 0); ChangeToState(WitchState.RightWalk); moving = false; this.stepX = stepX; this.stepY = stepY; rightX = 12 * 2; }
// ********************************************************************* private void ChangeToState(WitchState newState) { if (state == WitchState.Dying) { return; } switch (newState) { case WitchState.LeftWalk: animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_WALK); break; case WitchState.LeftMount: toLeft.SetAnimSteps(3, 8, ANIM_DELAY_MOUNT, true); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_MOUNT); break; case WitchState.LeftDescend: toLeft.SetAnimSteps(8, 3, ANIM_DELAY_MOUNT, true); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_MOUNT); break; case WitchState.LeftFlySlow: toLeft.SetAnimSteps(8, 9, ANIM_DELAY_FLY_SLOW); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_FLY_SLOW); break; case WitchState.LeftFlyMiddle: toLeft.SetAnimSteps(14, 17, ANIM_DELAY_FLY_MIDDLE); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_FLY_MIDDLE); break; case WitchState.LeftFlyMax: toLeft.SetAnimSteps(10, 13, ANIM_DELAY_FLY_MAX); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_FLY_MAX); break; case WitchState.RightWalk: animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_WALK); break; case WitchState.RightMount: toRight.SetAnimSteps(3, 8, ANIM_DELAY_MOUNT, true); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_MOUNT); break; case WitchState.RightDescend: toRight.SetAnimSteps(8, 3, ANIM_DELAY_MOUNT, true); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_MOUNT); break; case WitchState.RightFlySlow: toRight.SetAnimSteps(8, 9, ANIM_DELAY_FLY_SLOW); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_FLY_SLOW); break; case WitchState.RightFlyMiddle: toRight.SetAnimSteps(14, 17, ANIM_DELAY_FLY_MIDDLE); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_FLY_MIDDLE); break; case WitchState.RightFlyMax: toRight.SetAnimSteps(10, 13, ANIM_DELAY_FLY_MAX); animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_FLY_MAX); break; case WitchState.MakePotion: animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_MAKE_POTION); break; case WitchState.Dying: animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_DYING); break; case WitchState.ExitingDoor: animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_DOOR_ENTER); break; case WitchState.EnterDoor: animElaps = TimeSpan.FromMilliseconds(ANIM_DELAY_DOOR_ENTER); break; } state = newState; startAnim = DateTime.UtcNow; PrintState(); }