private static Dictionary <ISalable, int[]> GetAllFurnitures() { Dictionary <ISalable, int[]> decors = new Dictionary <ISalable, int[]>(); Furniture f; foreach (KeyValuePair <int, string> v in Game1.content.Load <Dictionary <int, string> >("Data\\Furniture")) { if (v.Value.Split('/')[1] == "fishtank") { f = new FishTankFurniture(v.Key, Vector2.Zero); } else if (v.Value.Split('/')[1] == "bed") { f = new BedFurniture(v.Key, Vector2.Zero); } else if (v.Value.Split('/')[0].EndsWith("TV")) { f = new TV(v.Key, Vector2.Zero); } else { f = new Furniture(v.Key, Vector2.Zero); } decors.Add(f, new int[] { Config.FreeFurnitureCatalogue ? 0 : (int)Math.Round(f.salePrice() * Config.PriceMult), int.MaxValue }); } return(decors); }
/********* ** Private methods *********/ /// <summary>The method to call before <see cref="FishTankFurniture.GetCapacityForCategory"/>.</summary> /// <returns>Returns whether to run the original method.</returns> private static bool Before_GetCapacityForCategory(FishTankFurniture __instance, FishTankCategories category, ref int __result) { if (__instance is CustomFishTankFurniture fishTank) { __result = fishTank.GetCapacityForCategory(category); return(false); } return(true); }
private static bool DrawPrefix(FishTankFurniture __instance, NetInt ___sourceIndexOffset, NetVector2 ___drawPosition, SpriteBatch spriteBatch, int x, int y, float alpha = 1f) { if (__instance.modData.ContainsKey("AlternativeTextureName")) { var textureModel = AlternativeTextures.textureManager.GetSpecificTextureModel(__instance.modData["AlternativeTextureName"]); if (textureModel is null) { return(true); } var textureVariation = Int32.Parse(__instance.modData["AlternativeTextureVariation"]); if (textureVariation == -1 || AlternativeTextures.modConfig.IsTextureVariationDisabled(textureModel.GetId(), textureVariation)) { return(true); } var textureOffset = textureModel.GetTextureOffset(textureVariation); Vector2 shake = Vector2.Zero; if (!__instance.isTemporarilyInvisible) { Vector2 draw_position = ___drawPosition.Value; if (!Furniture.isDrawingLocationFurniture) { draw_position = new Vector2(x, y) * 64f; draw_position.Y -= __instance.sourceRect.Height * 4 - __instance.boundingBox.Height; } if (__instance.shakeTimer > 0) { shake = new Vector2(Game1.random.Next(-1, 2), Game1.random.Next(-1, 2)); } Rectangle sourceRect = new Rectangle(__instance.sourceRect.Value.Width, __instance.sourceRect.Value.Y, __instance.sourceRect.Value.Width, __instance.sourceRect.Value.Height); sourceRect.Y = textureOffset; spriteBatch.Draw(textureModel.GetTexture(textureVariation), Game1.GlobalToLocal(Game1.viewport, draw_position + shake), sourceRect, Color.White * alpha, 0f, Vector2.Zero, 4f, __instance.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, __instance.GetGlassDrawLayer()); if (Furniture.isDrawingLocationFurniture) { int hatsDrawn = 0; for (int i = 0; i < __instance.tankFish.Count; i++) { TankFish fish = __instance.tankFish[i]; float fish_layer = Utility.Lerp(__instance.GetFishSortRegion().Y, __instance.GetFishSortRegion().X, fish.zPosition / 20f); fish_layer += 1E-07f * (float)i; fish.Draw(spriteBatch, alpha, fish_layer); if (fish.fishIndex != 86) { continue; } int hatsSoFar = 0; foreach (Item h in __instance.heldItems) { if (h is Hat) { if (hatsSoFar == hatsDrawn) { h.drawInMenu(spriteBatch, Game1.GlobalToLocal(fish.GetWorldPosition() + new Vector2(-30 + (fish.facingLeft ? (-4) : 0), -55f)), 0.75f, 1f, fish_layer + 1E-08f, StackDrawType.Hide); hatsDrawn++; break; } hatsSoFar++; } } } for (int j = 0; j < __instance.floorDecorations.Count; j++) { if (__instance.floorDecorations[j].HasValue) { KeyValuePair <Rectangle, Vector2> decoration = __instance.floorDecorations[j].Value; Vector2 decoration_position = decoration.Value; Rectangle decoration_source_rect = decoration.Key; float decoration_layer = Utility.Lerp(__instance.GetFishSortRegion().Y, __instance.GetFishSortRegion().X, decoration_position.Y / 20f) - 1E-06f; spriteBatch.Draw(__instance.GetAquariumTexture(), Game1.GlobalToLocal(new Vector2((float)__instance.GetTankBounds().Left + decoration_position.X * 4f, (float)(__instance.GetTankBounds().Bottom - 4) - decoration_position.Y * 4f)), decoration_source_rect, Color.White * alpha, 0f, new Vector2(decoration_source_rect.Width / 2, decoration_source_rect.Height - 4), 4f, SpriteEffects.None, decoration_layer); } } foreach (Vector4 bubble in __instance.bubbles) { float layer = Utility.Lerp(__instance.GetFishSortRegion().Y, __instance.GetFishSortRegion().X, bubble.Z / 20f) - 1E-06f; spriteBatch.Draw(__instance.GetAquariumTexture(), Game1.GlobalToLocal(new Vector2((float)__instance.GetTankBounds().Left + bubble.X, (float)(__instance.GetTankBounds().Bottom - 4) - bubble.Y - bubble.Z * 4f)), new Rectangle(0, 240, 16, 16), Color.White * alpha, 0f, new Vector2(8f, 8f), 4f * bubble.W, SpriteEffects.None, layer); } } FurniturePatch.DrawPrefix(__instance, ___sourceIndexOffset, ___drawPosition, spriteBatch, x, y, alpha); } return(false); } return(true); }