Пример #1
0
        // *********************************************************************

        public void DoEnterDoor()
        {
            enterDoorOk = false;
            ChangeToState(WitchState.EnterDoor);
            currentStep = 0;
            spriteEnterDoor.SetAnimSteps(currentStep, currentStep, 0);
            PrintState();
        }
Пример #2
0
        // *********************************************************************

        public void DoWalk()
        {
            ChangeToState(WitchState.RightWalk);
            currentStep = 0;
            toRight.SetAnimSteps(currentStep, currentStep, 0);
            PrintState();
        }
Пример #3
0
        // *********************************************************************

        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;
        }
Пример #4
0
        // *********************************************************************

        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();
        }