private static bool HandleStockSelection( ref Decorators.PurchaseAnimalsMenu moddedMenu, int x, int y, Farmer moddedPlayer) { var textureComponent = moddedMenu.GetAnimalsToPurchase().Where(o => (o.item as StardewValley.Object).Type == null) .FirstOrDefault(o => o.containsPoint(x, y)); if (textureComponent == null) { return(true); } var amount = textureComponent.item.salePrice(); if (!moddedPlayer.CanAfford(amount)) { return(true); } var randomAnimalShopType = new Api.BetterFarmAnimalVariety(Mod.ReadConfig <ModConfig>()).GetRandomAnimalShopType(textureComponent.hoverText, moddedPlayer.GetOriginal()); var farmAnimal1 = moddedPlayer.CreateFarmAnimal(randomAnimalShopType); SelectedStockBellsAndWhistles(ref moddedMenu); moddedMenu.SetOnFarm(true); moddedMenu.SetAnimalBeingPurchased(farmAnimal1); var farmAnimal2 = new Decorators.FarmAnimal(farmAnimal1); moddedMenu.SetPriceOfAnimal(farmAnimal2.GetPrice()); return(false); }
private static void AdjustMenuHeight(ref Decorators.PurchaseAnimalsMenu moddedMenu, int iconHeight) { if (iconHeight <= 0) { return; } moddedMenu.AdjustHeightBasedOnIcons(iconHeight); }
public static void Postfix(ref StardewValley.Menus.PurchaseAnimalsMenu __instance, ref List <StardewValley.Object> stock) { var moddedMenu = new Decorators.PurchaseAnimalsMenu(__instance); var dictionary = FarmAnimals.GetCategories().Where(o => o.CanBePurchased()) .ToDictionary(o => o.Category, o => o.GetAnimalShopIconTexture()); int iconHeight; moddedMenu.SetUpAnimalsToPurchase(stock, dictionary, out iconHeight); AdjustMenuHeight(ref moddedMenu, iconHeight); StardewValley.Menus.PurchaseAnimalsMenu.menuWidth = 640; }
public static bool Prefix(ref StardewValley.Menus.PurchaseAnimalsMenu __instance, ref SpriteBatch b) { var purchaseAnimalsMenu = new Decorators.PurchaseAnimalsMenu(__instance); var farmAnimal = new Decorators.FarmAnimal(purchaseAnimalsMenu.GetAnimalBeingPurchased()); if (!BellsAndWhistles.IsFaded() && purchaseAnimalsMenu.IsOnFarm()) { var str = Content.FormatMoneyString(farmAnimal.GetPrice()); var x = Game.GetViewport().Width / 2 - Content.GetWidthOfString(str) / 2; var y = (int)(18.0 * SpriteText.fontPixelZoom * 2.0); BellsAndWhistles.DrawScroll(b, str, x, y); } return(true); }
public static bool Prefix( ref StardewValley.Menus.PurchaseAnimalsMenu __instance, ref int x, ref int y, ref bool playSound) { var moddedMenu = new Decorators.PurchaseAnimalsMenu(__instance); if (!IsActionable(moddedMenu) || IsClosingMenu(moddedMenu, x, y)) { return(true); } var moddedPlayer = new Farmer(Game.GetPlayer()); return(moddedMenu.IsOnFarm() ? HandleOnFarm(ref moddedMenu, x, y, moddedPlayer) : HandleStockSelection(ref moddedMenu, x, y, moddedPlayer)); }
private static bool HandleOnFarm( ref Decorators.PurchaseAnimalsMenu moddedMenu, int x, int y, Farmer moddedPlayer) { if (moddedMenu.IsNamingAnimal()) { return(true); } var viewport = Game.GetViewport(); var buildingAt = Game.GetFarm().getBuildingAt(new Vector2((x + viewport.X) / 64, (y + viewport.Y) / 64)); if (buildingAt == null) { return(true); } var animalBeingPurchased = moddedMenu.GetAnimalBeingPurchased(); var moddedAnimal = new Decorators.FarmAnimal(animalBeingPurchased); if (!moddedAnimal.CanLiveIn(buildingAt) || new Building(buildingAt).IsFull() || !moddedAnimal.CanBeNamed()) { return(true); } var priceOfAnimal = moddedMenu.GetPriceOfAnimal(); if (!moddedPlayer.CanAfford(priceOfAnimal)) { return(true); } moddedAnimal.AddToBuilding(buildingAt); moddedMenu.SetAnimalBeingPurchased(animalBeingPurchased); moddedMenu.SetNewAnimalHome(null); moddedMenu.SetNamingAnimal(false); moddedPlayer.SpendMoney(priceOfAnimal); PurchasedAnimalBellsAndWhistles(moddedAnimal); return(false); }
private static void SelectedStockBellsAndWhistles(ref Decorators.PurchaseAnimalsMenu moddedMenu) { BellsAndWhistles.FadeToBlack(afterFade: moddedMenu.GetOriginal().setUpForAnimalPlacement); BellsAndWhistles.PlaySound("smallSelect"); }
private static bool IsClosingMenu(Decorators.PurchaseAnimalsMenu moddedMenu, int x, int y) { return(moddedMenu.HasTappedOkButton(x, y) && moddedMenu.IsReadyToClose()); }
private static bool IsActionable(Decorators.PurchaseAnimalsMenu moddedMenu) { return(!BellsAndWhistles.IsFaded() && !moddedMenu.IsFrozen()); }