public override void UpdateAnimation(TerraGuardian guardian, ref bool UsingLeftArmAnimation, ref bool UsingRightArmAnimation) { switch (Step) { case 1: HeldHand hand = HeldHand.Left; guardian.PickHandToUse(ref hand); int AnimationFrame = Time / 8; if (AnimationFrame == 0) { AnimationFrame = guardian.Ducking ? guardian.Base.DuckingSwingFrames[0] : guardian.Base.ItemUseFrames[0]; } else if (AnimationFrame == 1) { AnimationFrame = guardian.Ducking ? guardian.Base.DuckingSwingFrames[1] : guardian.Base.ItemUseFrames[1]; } else if (AnimationFrame == 2) { AnimationFrame = guardian.Ducking ? guardian.Base.DuckingSwingFrames[2] : guardian.Base.ItemUseFrames[3]; } if (hand == HeldHand.Left) { guardian.LeftArmAnimationFrame = AnimationFrame; UsingLeftArmAnimation = true; } else { guardian.RightArmAnimationFrame = AnimationFrame; UsingRightArmAnimation = true; } break; } }
public Vector2 GetHandPosition(TerraGuardian guardian, int AnimationFrame, HeldHand hand) { Vector2 HandPosition = guardian.Position; if ((hand == HeldHand.Right || hand == HeldHand.Both) && guardian.Base.DontUseRightHand) { hand = HeldHand.Left; } if ((hand == HeldHand.Left || hand == HeldHand.Both) && guardian.Base.DontUseLeftHand) { hand = HeldHand.Right; } switch (hand) { case HeldHand.Left: HandPosition += guardian.GetLeftHandPosition(AnimationFrame); break; case HeldHand.Right: HandPosition += guardian.GetRightHandPosition(AnimationFrame); break; case HeldHand.Both: HandPosition += guardian.GetBetweenHandsPosition(AnimationFrame); break; } return(HandPosition); }
public override void Update(TerraGuardian guardian) { if (guardian.SittingOnPlayerMount) { guardian.DoSitOnPlayerMount(false); } if (guardian.PlayerMounted) { guardian.ToggleMount(true); } IgnoreCombat = true; guardian.MoveLeft = guardian.MoveRight = false; switch (Step) { case 0: // guardian.HitBox.Intersects(Target.getRect()) && !guardian.BeingPulledByPlayer if (guardian.ItemAnimationTime == 0 && TryReachingPlayer(guardian, Target)) { ChangeStep(); } else { if (guardian.furniturex > -1) { guardian.LeaveFurniture(); } /*if (Target.Center.X < guardian.CenterPosition.X) * guardian.MoveLeft = true; * else * guardian.MoveRight = true;*/ } break; case 1: HeldHand hand = HeldHand.Left; guardian.PickHandToUse(ref hand); Vector2 HandPosition = Vector2.Zero; if (hand == HeldHand.Left) { HandPosition = guardian.GetGuardianLeftHandPosition; } else if (hand == HeldHand.Right) { HandPosition = guardian.GetGuardianRightHandPosition; BlockOffHandUsage = true; } FocusCameraOnGuardian = true; if (Time >= 24) { InUse = false; } else if (Time == 12) { Target.Center = HandPosition; Target.velocity.X = guardian.Direction * 12.5f; Target.velocity.Y = guardian.GravityDirection * -16.25f; Target.fallStart = (int)Target.position.Y / 16; } else if (Time < 12) { Target.direction = guardian.Direction; Target.Center = HandPosition; Target.fallStart = (int)Target.position.Y / 16; } break; } }
public void SetPlayerOnHandPosition(TerraGuardian guardian, Player player, int AnimationFrame, HeldHand hand) { Vector2 HandPosition = GetHandPosition(guardian, AnimationFrame, hand); player.position.X = HandPosition.X - player.width * 0.5f; player.position.Y = HandPosition.Y - player.height * 0.5f; player.velocity.X = 0; player.velocity.Y = 0; player.fallStart = (int)player.position.Y / 16; }
public override void UpdateAnimation(TerraGuardian guardian, ref bool UsingLeftArmAnimation, ref bool UsingRightArmAnimation) { if (guardian.PlayerMounted || guardian.SittingOnPlayerMount) { return; } bool CanPickupPlayer = guardian.Base.MountUnlockLevel != 255 && !guardian.ReverseMount; bool HoldingPlayer = false; HeldHand hand = HeldHand.Right; if ((hand == HeldHand.Right || hand == HeldHand.Both) && guardian.Base.DontUseRightHand) { hand = HeldHand.Left; } if ((hand == HeldHand.Left || hand == HeldHand.Both) && guardian.Base.DontUseLeftHand) { hand = HeldHand.Right; } switch (Step) { case 1: { int Frame = Time / 4; if (Frame > 1) { Frame = 1; } if (guardian.Ducking) { Frame = guardian.Base.DuckingSwingFrames[2 - Frame]; } else { Frame = guardian.Base.ItemUseFrames[3 - Frame]; } if (hand == HeldHand.Left) { guardian.LeftArmAnimationFrame = Frame; UsingLeftArmAnimation = true; } else if (hand == HeldHand.Right) { guardian.RightArmAnimationFrame = Frame; UsingRightArmAnimation = true; } } break; case 2: case 3: HoldingPlayer = true; break; case 4: if (Time < 8) { int Frame = 2 - Time / 4; if (guardian.Ducking) { Frame = guardian.Base.DuckingSwingFrames[2 - Frame]; } else { Frame = guardian.Base.ItemUseFrames[3 - Frame]; } if (hand == HeldHand.Left) { guardian.LeftArmAnimationFrame = Frame; UsingLeftArmAnimation = true; } else if (hand == HeldHand.Right) { guardian.RightArmAnimationFrame = Frame; UsingRightArmAnimation = true; } } break; } if (HoldingPlayer) { int Frame = 0; if (CanPickupPlayer) { if (guardian.Ducking) { Frame = guardian.Base.DuckingSwingFrames[1]; } else { Frame = guardian.Base.ItemUseFrames[2]; } } else { Frame = guardian.Base.ItemUseFrames[2]; } if (hand == HeldHand.Left) { guardian.LeftArmAnimationFrame = Frame; UsingLeftArmAnimation = true; } else if (hand == HeldHand.Right) { guardian.RightArmAnimationFrame = Frame; UsingRightArmAnimation = true; } } }
public GuardianHand(HeldHand hand) { HandType = hand; }