Exemple #1
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Facilities.Configuration.AutoPlaceItems)
            {
                StatusManager?.Place(ItemID.Cookie);
            }

            switch (status)
            {
            case AnimateStatus.FirstStep:
                Status = AnimateStatus.FirstWait;

                break;

            case AnimateStatus.SecondStep:
                Status = AnimateStatus.FirstWait;

                break;

            case AnimateStatus.Operating:
                StatusManager?.Place(ItemID.Cookie);
                Status = AnimateStatus.Initial;

                break;
            }
        }
Exemple #2
0
 protected override void ProgressStatusInternal(AnimateStatus status)
 {
     if (Facilities.Configuration.AutoPlaceItems)
     {
         StatusManager?.Place(ItemID.GreenCrystal);
     }
 }
Exemple #3
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            switch (status)
            {
            case AnimateStatus.Initial:
            case AnimateStatus.Attack:
                if (status == AnimateStatus.Initial && Facilities.Configuration.FreezeAnimates)
                {
                    break;
                }

                Player?.DecreaseHealth();

                Status = Facilities.Randomizer.Next(2) == 0
                                                ? AnimateStatus.PreparingNextAttack
                                                : AnimateStatus.Attack;

                break;

            case AnimateStatus.PreparingNextAttack:
                Status = AnimateStatus.Attack;

                break;

            case AnimateStatus.Dying:
                StatusManager?.OpenConnection(Direction.North, RoomID.SlimeCave);
                Status = AnimateStatus.Done;

                break;
            }
        }
Exemple #4
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Player == null)
            {
                return;
            }

            Trigger();

            switch (ID)
            {
            case AnimateID.NorthSwamp:
                Player.CurrentRoom = RoomID.EmptyCave51;

                break;

            case AnimateID.MiddleSwamp:
                Player.CurrentRoom = RoomID.GloomyCave;

                break;

            case AnimateID.SouthSwamp:
                Player.CurrentRoom = RoomID.RockCave;

                break;
            }
        }
Exemple #5
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Facilities.Configuration.AutoOpenConnections)
            {
                StatusManager?.OpenConnection(Direction.North, RoomID.MainCave);
            }

            switch (status)
            {
            case AnimateStatus.FirstStep:
                Status = AnimateStatus.FirstWait;

                break;

            case AnimateStatus.SecondStep:
                Status = AnimateStatus.SecondWait;

                break;

            case AnimateStatus.Operating:
                StatusManager?.OpenConnection(Direction.North, RoomID.MainCave);
                Status = AnimateStatus.Done;

                break;
            }
        }
Exemple #6
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (!Facilities.Configuration.FreezeAnimates && status == AnimateStatus.Initial)
            {
                Trigger();

                Status = AnimateStatus.Done;
            }
        }
Exemple #7
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Player == null)
            {
                return;
            }

            Trigger();

            Player.CurrentRoom = RoomID.Forest1;
        }
Exemple #8
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Facilities.Configuration.AutoPlaceItems)
            {
                StatusManager?.Place(ItemID.Paper);
            }

            if (status == AnimateStatus.Operating)
            {
                StatusManager?.Place(ItemID.Paper);
                Status = AnimateStatus.Done;
            }
        }
Exemple #9
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Facilities.Configuration.AutoOpenConnections)
            {
                StatusManager?.OpenConnection(Direction.North, RoomID.GarbageCave);
            }

            if (status == AnimateStatus.Operating)
            {
                StatusManager?.OpenConnection(Direction.North, RoomID.GarbageCave);
                Status = AnimateStatus.Done;
            }
        }
Exemple #10
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Player == null)
            {
                return;
            }

            Trigger();

            if (!Facilities.Configuration.FreezeAnimates)
            {
                Player.DecreaseHealth(HealthImpact.Severe);
            }

            Player.CurrentRoom = RoomID.SnakeCave;
        }
Exemple #11
0
        /// <summary>
        /// Handles the movement of the protagonist
        /// </summary>
        /// <param name="gameTime"></param>
        /// <param name="input"></param>
        public void Update(GameTime gameTime, InputState input)
        {
            //Check inputs
            ProtagonistStatus = AnimateStatus.Idle;
            PlayerIndex player;

            if (Attacking.Occurred(input, null, out player))
            {
                ProtagonistStatus = AnimateStatus.Attacking;
                HandleMovementsWithAttacks(input, player, true);
            }
            else
            {
                HandleMovementsWithAttacks(input, player, false);
            }
        }
Exemple #12
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            switch (status)
            {
            case AnimateStatus.Initial:
                if (!Facilities.Configuration.FreezeAnimates)
                {
                    Status = AnimateStatus.FirstWait;
                }

                break;

            case AnimateStatus.Operating:
                Status = AnimateStatus.Done;

                break;
            }
        }
Exemple #13
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Facilities.Configuration.AutoPlaceItems)
            {
                StatusManager?.Place(ItemID.RedCrystal);
            }

            switch (status)
            {
            case AnimateStatus.Initial:
                if (!Facilities.Configuration.FreezeAnimates)
                {
                    Status = AnimateStatus.PreparingFirstAttack;
                }

                break;

            case AnimateStatus.PreparingFirstAttack:
                Status = AnimateStatus.Attack;

                break;

            case AnimateStatus.Attack:
                Player?.DecreaseHealth();
                Status = AnimateStatus.PreparingNextAttack;

                break;

            case AnimateStatus.PreparingNextAttack:
                if (Facilities.Randomizer.Next(2) == 0)
                {
                    Status = AnimateStatus.Attack;
                }

                break;

            case AnimateStatus.Dying:
                StatusManager?.Place(ItemID.RedCrystal);
                Status = AnimateStatus.Done;

                break;
            }
        }
Exemple #14
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Player != null)
            {
                Trigger();

                switch (Facilities.Randomizer.Next(3))
                {
                case 0:
                    Player.CurrentRoom = RoomID.StormCave;
                    break;

                case 1:
                    Player.CurrentRoom = RoomID.SmallCave;
                    break;

                case 2:
                    Player.CurrentRoom = RoomID.SpiralstaircaseCave1;
                    break;
                }
            }
        }
Exemple #15
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            if (Facilities.Configuration.AutoPlaceItems)
            {
                StatusManager?.Place(ItemID.GasCanister);
            }

            switch (status)
            {
            case AnimateStatus.Initial:
                if (!Facilities.Configuration.FreezeAnimates)
                {
                    Status = AnimateStatus.PreparingFirstAttack;
                }

                break;

            case AnimateStatus.PreparingFirstAttack:
                Status = AnimateStatus.Attack;

                break;

            case AnimateStatus.Attack:
                Player?.DecreaseHealth();

                break;

            case AnimateStatus.FirstStep:
                Status = AnimateStatus.FirstWait;

                break;

            case AnimateStatus.SecondStep:
                StatusManager?.Place(ItemID.GasCanister);
                Status = AnimateStatus.Done;

                break;
            }
        }
Exemple #16
0
        /// <summary>
        /// Helper method to move the protagonist.
        /// Includes Jump, and left and right movements
        /// </summary>
        /// <param name="gameTime"></param>
        /// <param name="input"></param>
        /// <param name="player"></param>
        /// <param name="prioritizeAttack">True to animate Attack. False to animate walk or idle</param>
        private void HandleMovementsWithAttacks(GameTime gameTime, InputState input, PlayerIndex player, bool prioritizeAttack)
        {
            float time = (float)gameTime.ElapsedGameTime.TotalSeconds;

            //If just jumping
            if (GoUp.Occurred(input, null, out player) && jumpingTimer < 0.4)
            {
                ProtagonistBody.LinearVelocity = JumpVelocity;
                jumpingTimer += time;
            }
            else
            {
                if (!GoUp.Occurred(input, null, out player))
                {
                    jumpingTimer = 0;
                }
            }

            if (GoLeft.Occurred(input, null, out player))
            {
                if (!prioritizeAttack)
                {
                    ProtagonistStatus = AnimateStatus.Walking;
                }
                Flipped = true;
                ProtagonistBody.Position += new Vector2(-HorizontalVelocity, 0);
            }

            if (GoRight.Occurred(input, null, out player))
            {
                Flipped = false;
                if (!prioritizeAttack)
                {
                    ProtagonistStatus = AnimateStatus.Walking;
                }
                ProtagonistBody.Position += new Vector2(HorizontalVelocity, 0);
            }
        }
Exemple #17
0
        protected override void ProgressStatusInternal(AnimateStatus status)
        {
            switch (status)
            {
            case AnimateStatus.Initial:
                if (!Facilities.Configuration.FreezeAnimates)
                {
                    Status = AnimateStatus.Attack;
                }

                break;

            case AnimateStatus.Attack:
                Player?.DecreaseHealth();

                break;

            case AnimateStatus.Dying:
                Status = AnimateStatus.Done;

                break;
            }
        }
Exemple #18
0
 private void HandleMovementsWithAttacks(InputState input, PlayerIndex player, bool prioritizeAttack)
 {
     if (GoLeft.Occurred(input, null, out player))
     {
         if (!prioritizeAttack)
         {
             ProtagonistStatus = AnimateStatus.Walking;
         }
         Flipped   = true;
         Position += -HorizontalVelocity;
     }
     if (GoRight.Occurred(input, null, out player))
     {
         Flipped = false;
         if (!prioritizeAttack)
         {
             ProtagonistStatus = AnimateStatus.Walking;
         }
         Position += HorizontalVelocity;
     }
     if (GoDown.Occurred(input, null, out player))
     {
         if (!prioritizeAttack)
         {
             ProtagonistStatus = AnimateStatus.Walking;
         }
         Position += -VerticalVelocity;
     }
     if (GoUp.Occurred(input, null, out player))
     {
         if (!prioritizeAttack)
         {
             ProtagonistStatus = AnimateStatus.Walking;
         }
         Position += VerticalVelocity;
     }
 }