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); }
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; }