private static void Postfix(Slingshot __instance)
        {
            Farmer lastFarmer = __instance.getLastFarmerToUse();

            if (lastFarmer == null || !lastFarmer.usingSlingshot)
            {
                return;
            }

            if (lastFarmer.IsLocalPlayer)
            {
                lastFarmer.faceGeneralDirection(new Vector2(__instance.aimPos.X, __instance.aimPos.Y));
            }

            int num = lastFarmer.FacingDirection == 3 || lastFarmer.FacingDirection == 1 ? 1 : (lastFarmer.FacingDirection == 0 ? 2 : 0);

            lastFarmer.FarmerSprite.setCurrentFrame(42 + num);
        }
Example #2
0
        private static void DrawReticules(Slingshot slingshot, SpriteBatch spriteBatch)
        {
            Farmer lastFarmer = slingshot.getLastFarmerToUse();

            if (lastFarmer == null || !lastFarmer.usingSlingshot || !lastFarmer.IsLocalPlayer)
            {
                return;
            }

            if (BetterSlingshotsMod.Instance.Config.ShowActualMousePositionWhenAiming)
            {
                SlingshotDrawPatch.DrawTargetingReticule(spriteBatch, new Vector2(Game1.getMouseX(), Game1.getMouseY()));
            }

            Vector2 projectileVelocity = Utils.GetCorrectVelocity(new Vector2(slingshot.aimPos.X, slingshot.aimPos.Y), lastFarmer, !BetterSlingshotsMod.Instance.Config.DisableReverseAiming);

            projectileVelocity.Normalize();

            Vector2 farmerPosition = Utils.GetCorrectFarmerPosition(lastFarmer);

            SlingshotDrawPatch.DrawTargetingReticule(spriteBatch, Game1.GlobalToLocal(Game1.viewport, new Vector2(farmerPosition.X + projectileVelocity.X * 250, farmerPosition.Y + projectileVelocity.Y * 250)));
        }
        private static void FixLastFiredProjectileVelocity(Slingshot slingshot)
        {
            if (Game1.currentLocation.projectiles.Count == 0)
            {
                return;
            }

            Projectile firedProjectile = Game1.currentLocation.projectiles[Game1.currentLocation.projectiles.Count - 1];
            Vector2    newVelocity     = Utils.GetCorrectVelocity(new Vector2(slingshot.aimPos.X, slingshot.aimPos.Y), slingshot.getLastFarmerToUse(), !BetterSlingshotsMod.Instance.Config.DisableReverseAiming);

            BetterSlingshotsMod.Instance.Helper.Reflection.GetField <NetFloat>(firedProjectile, "xVelocity").GetValue().Value = newVelocity.X;
            BetterSlingshotsMod.Instance.Helper.Reflection.GetField <NetFloat>(firedProjectile, "yVelocity").GetValue().Value = newVelocity.Y;
        }
 private static void Postfix(Slingshot __instance)
 {
     __instance.getLastFarmerToUse().CanMove = true;
 }