Esempio n. 1
0
 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;
     }
 }
Esempio n. 2
0
        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);
        }
Esempio n. 3
0
        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;
            }
        }
Esempio n. 4
0
        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;
        }
Esempio n. 5
0
        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;
                }
            }
        }
Esempio n. 6
0
 public GuardianHand(HeldHand hand)
 {
     HandType = hand;
 }