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; } }
protected override void ProgressStatusInternal(AnimateStatus status) { if (Facilities.Configuration.AutoPlaceItems) { StatusManager?.Place(ItemID.GreenCrystal); } }
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; } }
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; } }
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; } }
protected override void ProgressStatusInternal(AnimateStatus status) { if (!Facilities.Configuration.FreezeAnimates && status == AnimateStatus.Initial) { Trigger(); Status = AnimateStatus.Done; } }
protected override void ProgressStatusInternal(AnimateStatus status) { if (Player == null) { return; } Trigger(); Player.CurrentRoom = RoomID.Forest1; }
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; } }
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; } }
protected override void ProgressStatusInternal(AnimateStatus status) { if (Player == null) { return; } Trigger(); if (!Facilities.Configuration.FreezeAnimates) { Player.DecreaseHealth(HealthImpact.Severe); } Player.CurrentRoom = RoomID.SnakeCave; }
/// <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); } }
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; } }
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; } }
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; } } }
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; } }
/// <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); } }
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; } }
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; } }