Updating revitalize. Modular furniture can be placed. Now how to remove it...
This commit is contained in:
parent
7089475d46
commit
c4d7e7500b
|
@ -0,0 +1,97 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using StardewValley;
|
||||||
|
using StardewValley.Menus;
|
||||||
|
using System;
|
||||||
|
|
||||||
|
namespace OmegasisCore.Menus.MenuComponentsAndResources
|
||||||
|
{
|
||||||
|
public class ClickableTextureComponentExtended : ClickableTextureComponent
|
||||||
|
{
|
||||||
|
public Texture2D texture;
|
||||||
|
|
||||||
|
public Rectangle sourceRect;
|
||||||
|
|
||||||
|
public float baseScale;
|
||||||
|
|
||||||
|
public string hoverText = "";
|
||||||
|
|
||||||
|
public bool drawShadow;
|
||||||
|
|
||||||
|
public int value;
|
||||||
|
|
||||||
|
public ClickableTextureComponentExtended(string name, Rectangle bounds, string label, string hoverText, Texture2D texture, Rectangle sourceRect, float scale, int value, bool drawShadow = false) : base(name, bounds, label, hoverText, texture, sourceRect, scale, drawShadow)
|
||||||
|
{
|
||||||
|
this.texture = texture;
|
||||||
|
if (sourceRect.Equals(Rectangle.Empty) && texture != null)
|
||||||
|
{
|
||||||
|
this.sourceRect = texture.Bounds;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.sourceRect = sourceRect;
|
||||||
|
}
|
||||||
|
this.scale = scale;
|
||||||
|
this.baseScale = scale;
|
||||||
|
this.hoverText = hoverText;
|
||||||
|
this.drawShadow = drawShadow;
|
||||||
|
this.label = label;
|
||||||
|
this.value = value;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ClickableTextureComponentExtended(Rectangle bounds, Texture2D texture, Rectangle sourceRect, float scale, int value, bool drawShadow = false) : this("", bounds, "", "", texture, sourceRect, scale, value, drawShadow)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public Vector2 getVector2()
|
||||||
|
{
|
||||||
|
return new Vector2((float)this.bounds.X, (float)this.bounds.Y);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void tryHover(int x, int y, float maxScaleIncrease = 0.1f)
|
||||||
|
{
|
||||||
|
if (this.bounds.Contains(x, y))
|
||||||
|
{
|
||||||
|
this.scale = Math.Min(this.scale + 0.04f, this.baseScale + maxScaleIncrease);
|
||||||
|
Game1.SetFreeCursorDrag();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.scale = Math.Max(this.scale - 0.04f, this.baseScale);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void draw(SpriteBatch b)
|
||||||
|
{
|
||||||
|
if (this.visible)
|
||||||
|
{
|
||||||
|
this.draw(b, Color.White, 0.86f + (float)this.bounds.Y / 20000f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void draw(SpriteBatch b, Color c, float layerDepth)
|
||||||
|
{
|
||||||
|
if (this.visible)
|
||||||
|
{
|
||||||
|
if (this.drawShadow)
|
||||||
|
{
|
||||||
|
Utility.drawWithShadow(b, this.texture, new Vector2((float)this.bounds.X + (float)(this.sourceRect.Width / 2) * this.baseScale, (float)this.bounds.Y + (float)(this.sourceRect.Height / 2) * this.baseScale), this.sourceRect, c, 0f, new Vector2((float)(this.sourceRect.Width / 2), (float)(this.sourceRect.Height / 2)), this.scale, false, layerDepth, -1, -1, 0.35f);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
b.Draw(this.texture, new Vector2((float)this.bounds.X + (float)(this.sourceRect.Width / 2) * this.baseScale, (float)this.bounds.Y + (float)(this.sourceRect.Height / 2) * this.baseScale), new Rectangle?(this.sourceRect), c, 0f, new Vector2((float)(this.sourceRect.Width / 2), (float)(this.sourceRect.Height / 2)), this.scale, SpriteEffects.None, layerDepth);
|
||||||
|
}
|
||||||
|
if (!string.IsNullOrEmpty(this.label))
|
||||||
|
{
|
||||||
|
b.DrawString(Game1.smallFont, this.label, new Vector2((float)(this.bounds.X + this.bounds.Width), (float)this.bounds.Y + ((float)(this.bounds.Height / 2) - Game1.smallFont.MeasureString(this.label).Y / 2f)), Game1.textColor);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drawItem(SpriteBatch b, int xOffset = 0, int yOffset = 0)
|
||||||
|
{
|
||||||
|
if (this.item != null && this.visible)
|
||||||
|
{
|
||||||
|
this.item.drawInMenu(b, new Vector2((float)(this.bounds.X + xOffset), (float)(this.bounds.Y + yOffset)), this.scale / (float)Game1.pixelZoom);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
using StardewValley.Menus;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace OmegasisCore.Menus.MenuComponentsAndResources
|
||||||
|
{
|
||||||
|
public class GameMenuComponentPair
|
||||||
|
{
|
||||||
|
public ClickableTextureComponentExtended menuTab;
|
||||||
|
public IClickableMenu menuPage;
|
||||||
|
|
||||||
|
public GameMenuComponentPair(ClickableTextureComponentExtended ClickableTextureComponent, IClickableMenu MenuPage)
|
||||||
|
{
|
||||||
|
menuTab = ClickableTextureComponent;
|
||||||
|
menuPage = MenuPage;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace OmegasisCore.Menus.MenuComponentsAndResources
|
||||||
|
{
|
||||||
|
public class TextureDataNode
|
||||||
|
{
|
||||||
|
public Texture2D texture;
|
||||||
|
public string path;
|
||||||
|
|
||||||
|
public TextureDataNode(Texture2D Texture, string Path)
|
||||||
|
{
|
||||||
|
texture = Texture;
|
||||||
|
path = Path;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,17 @@
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace OmegasisCore.Menus.MenuComponentsAndResources
|
||||||
|
{
|
||||||
|
class Utility
|
||||||
|
{
|
||||||
|
public static ClickableTextureComponentExtended MakeEasyMenuTab(string name,int boundsMultiplier,string label,Texture2D Texture) {
|
||||||
|
return new ClickableTextureComponentExtended()
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,585 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using Microsoft.Xna.Framework.Input;
|
||||||
|
using OmegasisCore.Menus.MenuComponentsAndResources;
|
||||||
|
using OmegasisCore.Resources;
|
||||||
|
using StardewModdingAPI;
|
||||||
|
using StardewValley;
|
||||||
|
using StardewValley.Menus;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
|
||||||
|
namespace OmegasisCore.Menus
|
||||||
|
{
|
||||||
|
public class GameMenu : IClickableMenu
|
||||||
|
{
|
||||||
|
public const int inventoryTab = 0;
|
||||||
|
|
||||||
|
public const int skillsTab = 1;
|
||||||
|
|
||||||
|
public const int socialTab = 2;
|
||||||
|
|
||||||
|
public const int mapTab = 3;
|
||||||
|
|
||||||
|
public const int craftingTab = 4;
|
||||||
|
|
||||||
|
public const int collectionsTab = 5;
|
||||||
|
|
||||||
|
public const int optionsTab = 6;
|
||||||
|
|
||||||
|
public const int exitTab = 7;
|
||||||
|
|
||||||
|
public const int numberOfTabs = 7;
|
||||||
|
|
||||||
|
public int currentTab;
|
||||||
|
|
||||||
|
private string hoverText = "";
|
||||||
|
|
||||||
|
private string descriptionText = "";
|
||||||
|
|
||||||
|
public const int maxTabsPerPage = 11;
|
||||||
|
|
||||||
|
private int maxTabValue;
|
||||||
|
|
||||||
|
public int currentMenuPage;
|
||||||
|
public int currentMenuPageMax;
|
||||||
|
|
||||||
|
public int currentTabIndex;
|
||||||
|
|
||||||
|
//change to clickable texture component extended
|
||||||
|
private List<ClickableTextureComponentExtended> tabs = new List<ClickableTextureComponentExtended>();
|
||||||
|
|
||||||
|
private List<IClickableMenu> pages = new List<IClickableMenu>();
|
||||||
|
|
||||||
|
public bool invisible;
|
||||||
|
|
||||||
|
public static bool forcePreventClose;
|
||||||
|
|
||||||
|
private ClickableTextureComponent junimoNoteIcon;
|
||||||
|
|
||||||
|
public ClickableTextureComponent LeftButton;
|
||||||
|
public ClickableTextureComponent RightButton;
|
||||||
|
|
||||||
|
/*
|
||||||
|
/// <summary>
|
||||||
|
/// BROKEN!!!! Creates a custom game menu using specific tabs, which allows a wide variety of options. This is the default form, and is hardcoded by the OmegasisCore mod.
|
||||||
|
/// </summary>
|
||||||
|
public GameMenu() : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true)
|
||||||
|
{
|
||||||
|
//can only hold about 12 tabs per menu page
|
||||||
|
this.tabs.Add(new ClickableTextureComponentExtended("inventory", new Rectangle(this.xPositionOnScreen + Game1.tileSize, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Inventory", "Inventory", Game1.content.Load<Texture2D>(Path.Combine("Revitalize", "Menus", "GameMenu", "TabIcons", "InventoryTabIcon")), new Rectangle(0 * Game1.tileSize, 0 * Game1.tileSize, Game1.tileSize, Game1.tileSize), 1f, 0,false));
|
||||||
|
this.pages.Add(new InventoryPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height));
|
||||||
|
this.tabs.Add(new ClickableTextureComponentExtended("Skills", new Rectangle(this.xPositionOnScreen + Game1.tileSize * 2, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Skills", "Skills", Game1.content.Load<Texture2D>(Path.Combine("Revitalize", "Menus", "GameMenu", "TabIcons", "BlankTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 1, false));
|
||||||
|
this.pages.Add(new SkillsPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height));
|
||||||
|
this.tabs.Add(new ClickableTextureComponentExtended("Social", new Rectangle(this.xPositionOnScreen + Game1.tileSize * 3, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Social", "Social", Game1.content.Load<Texture2D>(Path.Combine("Revitalize", "Menus", "GameMenu", "TabIcons", "SocialTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 2, false));
|
||||||
|
this.pages.Add(new SocialPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height));
|
||||||
|
this.tabs.Add(new ClickableTextureComponentExtended("Map", new Rectangle(this.xPositionOnScreen + Game1.tileSize * 4, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Map", "Map", Game1.content.Load<Texture2D>(Path.Combine("Revitalize", "Menus", "GameMenu", "TabIcons", "MapTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 3, false));
|
||||||
|
this.pages.Add(new MapPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height));
|
||||||
|
this.tabs.Add(new ClickableTextureComponentExtended("Crafting", new Rectangle(this.xPositionOnScreen + Game1.tileSize * 5, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Crafting", "Crafting", Game1.content.Load<Texture2D>(Path.Combine("Revitalize", "Menus", "GameMenu", "TabIcons", "CraftingTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 4, false));
|
||||||
|
this.pages.Add(new CraftingPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height, false));
|
||||||
|
this.tabs.Add(new ClickableTextureComponentExtended("Collections", new Rectangle(this.xPositionOnScreen + Game1.tileSize * 6, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Collections", "Collections", Game1.content.Load<Texture2D>(Path.Combine("Revitalize", "Menus", "GameMenu", "TabIcons", "CollectionsTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 5, false));
|
||||||
|
this.pages.Add(new CollectionsPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width - Game1.tileSize - Game1.tileSize / 4, this.height));
|
||||||
|
this.tabs.Add(new ClickableTextureComponentExtended("Options", new Rectangle(this.xPositionOnScreen + Game1.tileSize * 7, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Options", "Options", Game1.content.Load<Texture2D>(Path.Combine("Revitalize", "Menus", "GameMenu", "TabIcons", "OptionsTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 6, false));
|
||||||
|
this.pages.Add(new OptionsPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width - Game1.tileSize - Game1.tileSize / 4, this.height));
|
||||||
|
this.tabs.Add(new ClickableTextureComponentExtended("Exit", new Rectangle(this.xPositionOnScreen + Game1.tileSize * 8, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Exit", "Exit", Game1.content.Load<Texture2D>(Path.Combine("Revitalize", "Menus", "GameMenu", "TabIcons", "QuitTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 7, false));
|
||||||
|
this.pages.Add(new ExitPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width - Game1.tileSize - Game1.tileSize / 4, this.height));
|
||||||
|
|
||||||
|
/*
|
||||||
|
this.tabs.Add(new ClickableComponentExtended(new Rectangle(this.xPositionOnScreen + Game1.tileSize * 1, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "bungalo", "12", 12));
|
||||||
|
this.pages.Add(new ExitPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width - Game1.tileSize - Game1.tileSize / 4, this.height));
|
||||||
|
this.tabs.Add(new ClickableComponentExtended(new Rectangle(this.xPositionOnScreen + Game1.tileSize * 2, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "bungalo", "13", 13));
|
||||||
|
this.pages.Add(new CollectionsPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width - Game1.tileSize - Game1.tileSize / 4, this.height));
|
||||||
|
this.tabs.Add(new ClickableComponentExtended(new Rectangle(this.xPositionOnScreen + Game1.tileSize * 1, this.yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "bungalo", "24", 24));
|
||||||
|
this.pages.Add(new Revitalize.Menus.InventoryPage(this.xPositionOnScreen, this.yPositionOnScreen, this.width, this.height));
|
||||||
|
|
||||||
|
|
||||||
|
currentMenuPage = 0;
|
||||||
|
if (Game1.activeClickableMenu == null)
|
||||||
|
{
|
||||||
|
Game1.playSound("bigSelect");
|
||||||
|
}
|
||||||
|
if (Game1.player.hasOrWillReceiveMail("canReadJunimoText") && !Game1.player.hasOrWillReceiveMail("JojaMember") && !Game1.player.hasCompletedCommunityCenter())
|
||||||
|
{
|
||||||
|
this.junimoNoteIcon = new ClickableTextureComponent("", new Rectangle(this.xPositionOnScreen + this.width, this.yPositionOnScreen + Game1.tileSize * 3 / 2, Game1.tileSize, Game1.tileSize), "", Game1.content.LoadString("Strings\\UI:GameMenu_JunimoNote_Hover", new object[0]), Game1.mouseCursors, new Rectangle(331, 374, 15, 14), (float)Game1.pixelZoom, false);
|
||||||
|
}
|
||||||
|
GameMenu.forcePreventClose = false;
|
||||||
|
if (Game1.options.gamepadControls && Game1.isAnyGamePadButtonBeingPressed())
|
||||||
|
{
|
||||||
|
this.setUpForGamePadMode();
|
||||||
|
}
|
||||||
|
int i = -1;
|
||||||
|
foreach (var v in this.tabs)
|
||||||
|
{
|
||||||
|
if (v.value > i) i = v.value;
|
||||||
|
}
|
||||||
|
currentTabIndex = 0;
|
||||||
|
currentMenuPageMax = (int)(Math.Floor(Convert.ToDouble(i / 12)));
|
||||||
|
maxTabValue = i;
|
||||||
|
TextureDataNode d;
|
||||||
|
Dictionaries.spriteFontList.TryGetValue("leftArrow", out d);
|
||||||
|
TextureDataNode f;
|
||||||
|
Dictionaries.spriteFontList.TryGetValue("rightArrow", out f);
|
||||||
|
this.LeftButton = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen - (Game1.tileSize * 3), this.yPositionOnScreen / 4, Game1.tileSize, Game1.tileSize), d.texture, new Rectangle(0, 0, 16, 16), 4f, false);
|
||||||
|
this.RightButton = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen - Game1.tileSize, this.yPositionOnScreen / 4, Game1.tileSize, Game1.tileSize), f.texture, new Rectangle(0, 0, 16, 16), 4f, false);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
/// <summary>
|
||||||
|
/// Pretty sure this implementation is broken right now. Woops.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tabsToAdd"></param> The tabs to be added to this custom menu.
|
||||||
|
/// <param name="pagesToAdd"></param> The menus to add
|
||||||
|
public GameMenu(List<List<ClickableTextureComponentExtended>> tabsToAdd, List<List<IClickableMenu>> pagesToAdd) : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true)
|
||||||
|
{
|
||||||
|
//can only hold about 12 tabs per menu page
|
||||||
|
int i = -1;
|
||||||
|
foreach (var v in tabsToAdd)
|
||||||
|
{
|
||||||
|
foreach (var k in v)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
k.value = i;
|
||||||
|
tabs.Add(k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
foreach (var v in pagesToAdd)
|
||||||
|
{
|
||||||
|
foreach (var k in v)
|
||||||
|
{
|
||||||
|
pages.Add(k);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
currentMenuPage = 0;
|
||||||
|
if (Game1.activeClickableMenu == null)
|
||||||
|
{
|
||||||
|
Game1.playSound("bigSelect");
|
||||||
|
}
|
||||||
|
if (Game1.player.hasOrWillReceiveMail("canReadJunimoText") && !Game1.player.hasOrWillReceiveMail("JojaMember") && !Game1.player.hasCompletedCommunityCenter())
|
||||||
|
{
|
||||||
|
this.junimoNoteIcon = new ClickableTextureComponent("", new Rectangle(this.xPositionOnScreen + this.width, this.yPositionOnScreen + Game1.tileSize * 3 / 2, Game1.tileSize, Game1.tileSize), "", Game1.content.LoadString("Strings\\UI:GameMenu_JunimoNote_Hover", new object[0]), Game1.mouseCursors, new Rectangle(331, 374, 15, 14), (float)Game1.pixelZoom, false);
|
||||||
|
}
|
||||||
|
GameMenu.forcePreventClose = false;
|
||||||
|
if (Game1.options.gamepadControls && Game1.isAnyGamePadButtonBeingPressed())
|
||||||
|
{
|
||||||
|
this.setUpForGamePadMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
currentMenuPageMax = (int)(Math.Floor(Convert.ToDouble(this.tabs.Count / 13)));
|
||||||
|
TextureDataNode d;
|
||||||
|
Dictionaries.spriteFontList.TryGetValue("leftArrow", out d);
|
||||||
|
TextureDataNode f;
|
||||||
|
Dictionaries.spriteFontList.TryGetValue("rightArrow", out f);
|
||||||
|
this.LeftButton = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen - (Game1.tileSize * 3), this.yPositionOnScreen / 4, Game1.tileSize, Game1.tileSize), d.texture, new Rectangle(0, 0, 16, 16), 4f, false);
|
||||||
|
this.RightButton = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen - Game1.tileSize, this.yPositionOnScreen / 4, Game1.tileSize, Game1.tileSize), f.texture, new Rectangle(0, 0, 16, 16), 4f, false);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
public GameMenu(List<GameMenuComponentPair> MenuComponentsToAdd) : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true)
|
||||||
|
{
|
||||||
|
//can only hold about 12 tabs per menu page
|
||||||
|
|
||||||
|
foreach (var v in MenuComponentsToAdd)
|
||||||
|
{
|
||||||
|
int i = v.menuTab.value;
|
||||||
|
foreach (var c in tabs)
|
||||||
|
{
|
||||||
|
if (c.value == v.menuTab.value)
|
||||||
|
{
|
||||||
|
bool found = false;
|
||||||
|
if (pages.Count != 0)
|
||||||
|
{
|
||||||
|
while (found == false)
|
||||||
|
{
|
||||||
|
//Look through all the tabs already added in and see if any values conflict. If there is a confliction, try and resolve it.
|
||||||
|
foreach (var q in tabs)
|
||||||
|
{
|
||||||
|
if (q.value == i) found = false;
|
||||||
|
else found = true;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
v.menuTab.value = i;
|
||||||
|
tabs.Add(v.menuTab);
|
||||||
|
pages.Add(v.menuPage);
|
||||||
|
}
|
||||||
|
|
||||||
|
currentMenuPage = 0;
|
||||||
|
if (Game1.activeClickableMenu == null)
|
||||||
|
{
|
||||||
|
Game1.playSound("bigSelect");
|
||||||
|
}
|
||||||
|
if (Game1.player.hasOrWillReceiveMail("canReadJunimoText") && !Game1.player.hasOrWillReceiveMail("JojaMember") && !Game1.player.hasCompletedCommunityCenter())
|
||||||
|
{
|
||||||
|
this.junimoNoteIcon = new ClickableTextureComponent("", new Rectangle(this.xPositionOnScreen + this.width, this.yPositionOnScreen + Game1.tileSize * 3 / 2, Game1.tileSize, Game1.tileSize), "", Game1.content.LoadString("Strings\\UI:GameMenu_JunimoNote_Hover", new object[0]), Game1.mouseCursors, new Rectangle(331, 374, 15, 14), (float)Game1.pixelZoom, false);
|
||||||
|
}
|
||||||
|
GameMenu.forcePreventClose = false;
|
||||||
|
if (Game1.options.gamepadControls && Game1.isAnyGamePadButtonBeingPressed())
|
||||||
|
{
|
||||||
|
this.setUpForGamePadMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
int i2 = -1;
|
||||||
|
foreach (var v in this.tabs)
|
||||||
|
{
|
||||||
|
if (v.value >= i2) i2 = v.value;
|
||||||
|
}
|
||||||
|
currentTabIndex = 0;
|
||||||
|
currentMenuPageMax = (int)(Math.Floor(Convert.ToDouble(i2 / 12)));
|
||||||
|
// if (currentMenuPageMax == 0) currentMenuPageMax = 0;
|
||||||
|
maxTabValue = i2;
|
||||||
|
TextureDataNode d;
|
||||||
|
Dictionaries.spriteFontList.TryGetValue("leftArrow", out d);
|
||||||
|
TextureDataNode f;
|
||||||
|
Dictionaries.spriteFontList.TryGetValue("rightArrow", out f);
|
||||||
|
this.LeftButton = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen - (Game1.tileSize * 3), this.yPositionOnScreen / 4, Game1.tileSize, Game1.tileSize), d.texture, new Rectangle(0, 0, 16, 16), 4f, false);
|
||||||
|
this.RightButton = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen - Game1.tileSize, this.yPositionOnScreen / 4, Game1.tileSize, Game1.tileSize), f.texture, new Rectangle(0, 0, 16, 16), 4f, false);
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
/// <summary>
|
||||||
|
/// Creates a custom game menu using specific tabs, which allows a wide variety of options. Hypothetically should work but would require outside sources to manager their own tab values.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="tabsToAdd"></param> The tab components to be added. They must have a "value" field assigned to them otherwise they won't be used.
|
||||||
|
/// <param name="pagesToAdd"></param> The corresponding menus to add
|
||||||
|
public GameMenu(List<ClickableTextureComponentExpanded> tabsToAdd, List<IClickableMenu> pagesToAdd) : base(Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2, Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2, 800 + IClickableMenu.borderWidth * 2, 600 + IClickableMenu.borderWidth * 2, true)
|
||||||
|
{
|
||||||
|
//can only hold about 12 tabs per menu page
|
||||||
|
int i = 0;
|
||||||
|
foreach(var v in tabsToAdd)
|
||||||
|
{
|
||||||
|
if (v.value == -1) continue;
|
||||||
|
tabs.Add(v);
|
||||||
|
pages.Add(pagesToAdd[i]);
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
|
||||||
|
currentMenuPage = 0;
|
||||||
|
if (Game1.activeClickableMenu == null)
|
||||||
|
{
|
||||||
|
Game1.playSound("bigSelect");
|
||||||
|
}
|
||||||
|
if (Game1.player.hasOrWillReceiveMail("canReadJunimoText") && !Game1.player.hasOrWillReceiveMail("JojaMember") && !Game1.player.hasCompletedCommunityCenter())
|
||||||
|
{
|
||||||
|
this.junimoNoteIcon = new ClickableTextureComponent("", new Rectangle(this.xPositionOnScreen + this.width, this.yPositionOnScreen + Game1.tileSize * 3 / 2, Game1.tileSize, Game1.tileSize), "", Game1.content.LoadString("Strings\\UI:GameMenu_JunimoNote_Hover", new object[0]), Game1.mouseCursors, new Rectangle(331, 374, 15, 14), (float)Game1.pixelZoom, false);
|
||||||
|
}
|
||||||
|
GameMenu.forcePreventClose = false;
|
||||||
|
if (Game1.options.gamepadControls && Game1.isAnyGamePadButtonBeingPressed())
|
||||||
|
{
|
||||||
|
this.setUpForGamePadMode();
|
||||||
|
}
|
||||||
|
|
||||||
|
currentMenuPageMax = (int)(Math.Floor(Convert.ToDouble(this.tabs.Count / 13)));
|
||||||
|
TextureDataNode d;
|
||||||
|
Dictionaries.spriteFontList.TryGetValue("leftArrow", out d);
|
||||||
|
TextureDataNode f;
|
||||||
|
Dictionaries.spriteFontList.TryGetValue("rightArrow", out f);
|
||||||
|
this.LeftButton = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen - (Game1.tileSize * 3), this.yPositionOnScreen / 4, Game1.tileSize, Game1.tileSize), d.texture, new Rectangle(0, 0, 16, 16), 4f, false);
|
||||||
|
this.RightButton = new ClickableTextureComponent(new Rectangle(this.xPositionOnScreen - Game1.tileSize, this.yPositionOnScreen / 4, Game1.tileSize, Game1.tileSize), f.texture, new Rectangle(0, 0, 16, 16), 4f, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
public GameMenu(int startingTab, int extra = -1) : this()
|
||||||
|
{
|
||||||
|
this.changeTab(startingTab);
|
||||||
|
if (startingTab == 6 && extra != -1)
|
||||||
|
{
|
||||||
|
(this.pages[6] as OptionsPage).currentItemIndex = extra;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void receiveGamePadButton(Buttons b)
|
||||||
|
{
|
||||||
|
base.receiveGamePadButton(b);
|
||||||
|
if (b == Buttons.RightTrigger)
|
||||||
|
{
|
||||||
|
if (this.currentTab == 3)
|
||||||
|
{
|
||||||
|
Game1.activeClickableMenu = new GameMenu(4, -1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.currentTab < 6 && this.pages[this.currentTab].readyToClose())
|
||||||
|
{
|
||||||
|
this.changeTab(this.currentTab + 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (b == Buttons.LeftTrigger)
|
||||||
|
{
|
||||||
|
if (this.currentTab == 3)
|
||||||
|
{
|
||||||
|
Game1.activeClickableMenu = new GameMenu(2, -1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.currentTab > 0 && this.pages[this.currentTab].readyToClose())
|
||||||
|
{
|
||||||
|
this.changeTab(this.currentTab - 1);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
public override void setUpForGamePadMode()
|
||||||
|
{
|
||||||
|
base.setUpForGamePadMode();
|
||||||
|
if (this.pages.Count > this.currentTab)
|
||||||
|
{
|
||||||
|
this.pages[this.currentTab].setUpForGamePadMode();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void receiveLeftClick(int x, int y, bool playSound = true)
|
||||||
|
{
|
||||||
|
base.receiveLeftClick(x, y, playSound);
|
||||||
|
|
||||||
|
if (this.LeftButton.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
if (this.currentMenuPage > 0) this.currentMenuPage--;
|
||||||
|
}
|
||||||
|
if (this.RightButton.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
if (this.currentMenuPage < currentMenuPageMax) this.currentMenuPage++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!this.invisible && !GameMenu.forcePreventClose)
|
||||||
|
{
|
||||||
|
int i = -1;
|
||||||
|
foreach (var current in this.tabs)
|
||||||
|
{
|
||||||
|
i++;
|
||||||
|
// if (current.value > (11 + (12 * currentMenuPage))) continue;
|
||||||
|
// if (current.value < (0 + (12 * currentMenuPage))) continue;
|
||||||
|
if (current.containsPoint(x, y) && this.pages[this.currentTabIndex].readyToClose())
|
||||||
|
{
|
||||||
|
currentTabIndex = i;
|
||||||
|
this.changeTab(currentTabIndex);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.junimoNoteIcon != null && this.junimoNoteIcon.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
Game1.activeClickableMenu = new JunimoNoteMenu(true, 1, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
this.pages[this.currentTabIndex].receiveLeftClick(x, y, true);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string getLabelOfTabFromIndex(int index)
|
||||||
|
{
|
||||||
|
switch (index)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
return Game1.content.LoadString("Strings\\UI:GameMenu_Inventory", new object[0]);
|
||||||
|
case 1:
|
||||||
|
return Game1.content.LoadString("Strings\\UI:GameMenu_Skills", new object[0]);
|
||||||
|
case 2:
|
||||||
|
return Game1.content.LoadString("Strings\\UI:GameMenu_Social", new object[0]);
|
||||||
|
case 3:
|
||||||
|
return Game1.content.LoadString("Strings\\UI:GameMenu_Map", new object[0]);
|
||||||
|
case 4:
|
||||||
|
return Game1.content.LoadString("Strings\\UI:GameMenu_Crafting", new object[0]);
|
||||||
|
case 5:
|
||||||
|
return Game1.content.LoadString("Strings\\UI:GameMenu_Collections", new object[0]);
|
||||||
|
case 6:
|
||||||
|
return Game1.content.LoadString("Strings\\UI:GameMenu_Options", new object[0]);
|
||||||
|
case 7:
|
||||||
|
return Game1.content.LoadString("Strings\\UI:GameMenu_Exit", new object[0]);
|
||||||
|
default:
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void receiveRightClick(int x, int y, bool playSound = true)
|
||||||
|
{
|
||||||
|
this.pages[this.currentTabIndex].receiveRightClick(x, y, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void receiveScrollWheelAction(int direction)
|
||||||
|
{
|
||||||
|
base.receiveScrollWheelAction(direction);
|
||||||
|
if (currentTab >= this.tabs.Count) this.pages[currentTab - (maxTabValue - this.tabs.Count) - 1].receiveScrollWheelAction(direction);
|
||||||
|
else this.pages[this.currentTab].receiveScrollWheelAction(direction);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void performHoverAction(int x, int y)
|
||||||
|
{
|
||||||
|
base.performHoverAction(x, y);
|
||||||
|
this.hoverText = "";
|
||||||
|
this.pages[this.currentTabIndex].performHoverAction(x, y);
|
||||||
|
foreach (var current in this.tabs)
|
||||||
|
{
|
||||||
|
if (current.value > (11 + (12 * currentMenuPage))) continue;
|
||||||
|
if (current.value < (0 + (12 * currentMenuPage))) continue;
|
||||||
|
if (current.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
this.hoverText = current.label + current.value;
|
||||||
|
//Log.AsyncM(current.value);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.junimoNoteIcon != null)
|
||||||
|
{
|
||||||
|
this.junimoNoteIcon.tryHover(x, y, 0.1f);
|
||||||
|
if (this.junimoNoteIcon.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
this.hoverText = this.junimoNoteIcon.hoverText;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (LeftButton.containsPoint(Game1.getMousePosition().X, Game1.getMousePosition().Y) && this.currentMenuPage != 0) this.hoverText = "Previous Page";
|
||||||
|
if (RightButton.containsPoint(Game1.getMousePosition().X, Game1.getMousePosition().Y) && this.currentMenuPage != this.currentMenuPageMax) this.hoverText = "Next Page";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public override void releaseLeftClick(int x, int y)
|
||||||
|
{
|
||||||
|
base.releaseLeftClick(x, y);
|
||||||
|
|
||||||
|
this.pages[this.currentTabIndex].releaseLeftClick(x, y);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void leftClickHeld(int x, int y)
|
||||||
|
{
|
||||||
|
base.leftClickHeld(x, y);
|
||||||
|
this.pages[this.currentTabIndex].leftClickHeld(x, y);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool readyToClose()
|
||||||
|
{
|
||||||
|
return this.pages[this.currentTabIndex].readyToClose();
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
public void changeTab(int whichTab)
|
||||||
|
{
|
||||||
|
if (this.currentTab == 2)
|
||||||
|
{
|
||||||
|
if (this.junimoNoteIcon != null)
|
||||||
|
{
|
||||||
|
this.junimoNoteIcon = new ClickableTextureComponent("", new Rectangle(this.xPositionOnScreen + this.width, this.yPositionOnScreen + Game1.tileSize * 3 / 2, Game1.tileSize, Game1.tileSize), "", Game1.content.LoadString("Strings\\UI:GameMenu_JunimoNote_Hover", new object[0]), Game1.mouseCursors, new Rectangle(331, 374, 15, 14), (float)Game1.pixelZoom, false);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (whichTab == 2 && this.junimoNoteIcon != null)
|
||||||
|
{
|
||||||
|
ClickableTextureComponent expr_AA_cp_0_cp_0 = this.junimoNoteIcon;
|
||||||
|
expr_AA_cp_0_cp_0.bounds.X = expr_AA_cp_0_cp_0.bounds.X + Game1.tileSize;
|
||||||
|
}
|
||||||
|
this.currentTab = this.tabs[whichTab].value;
|
||||||
|
// Log.AsyncO("EXCUSE ME!!! " + this.tabs[whichTab].value);
|
||||||
|
// Log.AsyncO("NO WAY!!! " + whichTab);
|
||||||
|
if (this.currentTab == 3)
|
||||||
|
{
|
||||||
|
this.invisible = true;
|
||||||
|
this.width += Game1.tileSize * 2;
|
||||||
|
base.initializeUpperRightCloseButton();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.width = 800 + IClickableMenu.borderWidth * 2;
|
||||||
|
base.initializeUpperRightCloseButton();
|
||||||
|
this.invisible = false;
|
||||||
|
}
|
||||||
|
Game1.playSound("smallSelect");
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void draw(SpriteBatch b)
|
||||||
|
{
|
||||||
|
if (!this.invisible)
|
||||||
|
{
|
||||||
|
if (!Game1.options.showMenuBackground)
|
||||||
|
{
|
||||||
|
b.Draw(Game1.fadeToBlackRect, Game1.graphics.GraphicsDevice.Viewport.Bounds, Color.Black * 0.4f);
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Game1.drawDialogueBox(this.xPositionOnScreen, this.yPositionOnScreen, this.pages[currentTabIndex].width, this.pages[currentTabIndex].height, false, true, null, false);
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
// Log.AsyncC(currentTabIndex);
|
||||||
|
// Log.AsyncM(this.pages.Count);
|
||||||
|
// Log.AsyncO(this.tabs.Count);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
this.pages[currentTabIndex].draw(b);
|
||||||
|
|
||||||
|
b.End();
|
||||||
|
b.Begin(SpriteSortMode.FrontToBack, BlendState.NonPremultiplied, SamplerState.PointClamp, null, null);
|
||||||
|
if (!GameMenu.forcePreventClose)
|
||||||
|
{
|
||||||
|
//foreach (ClickableComponentExtended current in this.tabs)
|
||||||
|
//{
|
||||||
|
|
||||||
|
foreach (var current in this.tabs)
|
||||||
|
{
|
||||||
|
if (current.value > (11 + (12 * currentMenuPage))) continue;
|
||||||
|
if (current.value < (0 + (12 * currentMenuPage))) continue;
|
||||||
|
int num = current.value;
|
||||||
|
string name = current.name;
|
||||||
|
//!!!!!BINGO! HERE ARE THE TEXTURES
|
||||||
|
b.Draw(current.texture, new Vector2((float)current.bounds.X, (float)(current.bounds.Y)), new Rectangle(0, 0, 16, 16), Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, 0.0001f);
|
||||||
|
if (current.name.Equals("skills") || current.name.Equals("Skills"))
|
||||||
|
{
|
||||||
|
Game1.player.FarmerRenderer.drawMiniPortrat(b, new Vector2((float)(current.bounds.X + 8), (float)(current.bounds.Y + 12 + ((this.currentTab == current.value) ? 8 : 0))), 0.00011f, 3f, 2, Game1.player);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//} //end for each
|
||||||
|
b.End();
|
||||||
|
b.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null);
|
||||||
|
if (this.junimoNoteIcon != null)
|
||||||
|
{
|
||||||
|
this.junimoNoteIcon.draw(b);
|
||||||
|
}
|
||||||
|
if (!this.hoverText.Equals(""))
|
||||||
|
{
|
||||||
|
IClickableMenu.drawHoverText(b, this.hoverText, Game1.smallFont, 0, 0, -1, null, -1, null, null, 0, -1, -1, -1, -1, 1f, null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.pages[this.currentTab].draw(b);
|
||||||
|
}
|
||||||
|
if (this.currentMenuPage != 0) LeftButton.draw(b);
|
||||||
|
if (this.currentMenuPage != currentMenuPageMax) RightButton.draw(b);
|
||||||
|
if (!GameMenu.forcePreventClose)
|
||||||
|
{
|
||||||
|
base.draw(b);
|
||||||
|
}
|
||||||
|
if (!Game1.options.hardwareCursor)
|
||||||
|
{
|
||||||
|
b.Draw(Game1.mouseCursors, new Vector2((float)Game1.getOldMouseX(), (float)Game1.getOldMouseY()), new Rectangle?(Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, Game1.options.gamepadControls ? 44 : 0, 16, 16)), Color.White, 0f, Vector2.Zero, (float)Game1.pixelZoom + Game1.dialogueButtonScale / 150f, SpriteEffects.None, 1f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool areGamePadControlsImplemented()
|
||||||
|
{
|
||||||
|
return this.pages[this.currentTabIndex].gamePadControlsImplemented;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void receiveKeyPress(Keys key)
|
||||||
|
{
|
||||||
|
if (Game1.options.menuButton.Contains(new InputButton(key)) && this.readyToClose())
|
||||||
|
{
|
||||||
|
Game1.exitActiveMenu();
|
||||||
|
Game1.playSound("bigDeSelect");
|
||||||
|
}
|
||||||
|
|
||||||
|
this.pages[this.currentTabIndex].receiveKeyPress(key);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,638 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using Microsoft.Xna.Framework.Input;
|
||||||
|
using StardewValley;
|
||||||
|
using StardewValley.BellsAndWhistles;
|
||||||
|
using StardewValley.Menus;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
|
namespace OmegasisCore.Menus
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Credit to Pathoschild for this code.
|
||||||
|
/// </summary>
|
||||||
|
public class ModdedMapPage : IClickableMenu
|
||||||
|
{
|
||||||
|
private string descriptionText = "";
|
||||||
|
private string hoverText = "";
|
||||||
|
public List<ClickableComponent> points = new List<ClickableComponent>();
|
||||||
|
public const int region_desert = 1001;
|
||||||
|
public const int region_farm = 1002;
|
||||||
|
public const int region_backwoods = 1003;
|
||||||
|
public const int region_busstop = 1004;
|
||||||
|
public const int region_wizardtower = 1005;
|
||||||
|
public const int region_marnieranch = 1006;
|
||||||
|
public const int region_leahcottage = 1007;
|
||||||
|
public const int region_samhouse = 1008;
|
||||||
|
public const int region_haleyhouse = 1009;
|
||||||
|
public const int region_townsquare = 1010;
|
||||||
|
public const int region_harveyclinic = 1011;
|
||||||
|
public const int region_generalstore = 1012;
|
||||||
|
public const int region_blacksmith = 1013;
|
||||||
|
public const int region_saloon = 1014;
|
||||||
|
public const int region_manor = 1015;
|
||||||
|
public const int region_museum = 1016;
|
||||||
|
public const int region_elliottcabin = 1017;
|
||||||
|
public const int region_sewer = 1018;
|
||||||
|
public const int region_graveyard = 1019;
|
||||||
|
public const int region_trailer = 1020;
|
||||||
|
public const int region_alexhouse = 1021;
|
||||||
|
public const int region_sciencehouse = 1022;
|
||||||
|
public const int region_tent = 1023;
|
||||||
|
public const int region_mines = 1024;
|
||||||
|
public const int region_adventureguild = 1025;
|
||||||
|
public const int region_quarry = 1026;
|
||||||
|
public const int region_jojamart = 1027;
|
||||||
|
public const int region_fishshop = 1028;
|
||||||
|
public const int region_spa = 1029;
|
||||||
|
public const int region_secretwoods = 1030;
|
||||||
|
public const int region_ruinedhouse = 1031;
|
||||||
|
public const int region_communitycenter = 1032;
|
||||||
|
public const int region_sewerpipe = 1033;
|
||||||
|
public const int region_railroad = 1034;
|
||||||
|
private string playerLocationName;
|
||||||
|
private Texture2D map;
|
||||||
|
private int mapX;
|
||||||
|
private int mapY;
|
||||||
|
private Vector2 playerMapPosition;
|
||||||
|
public ClickableTextureComponent okButton;
|
||||||
|
|
||||||
|
public ModdedMapPage(int x, int y, int width, int height, bool setUpPlayerPositions=false)
|
||||||
|
: base(x, y, width, height, false)
|
||||||
|
{
|
||||||
|
this.okButton = new ClickableTextureComponent(Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11059"), new Rectangle(this.xPositionOnScreen + width + Game1.tileSize, this.yPositionOnScreen + height - IClickableMenu.borderWidth - Game1.tileSize / 4, Game1.tileSize, Game1.tileSize), (string)null, (string)null, Game1.mouseCursors, Game1.getSourceRectForStandardTileSheet(Game1.mouseCursors, 46, -1, -1), 1f, false);
|
||||||
|
this.map = Game1.content.Load<Texture2D>("LooseSprites\\map");
|
||||||
|
Vector2 centeringOnScreen = Utility.getTopLeftPositionForCenteringOnScreen(this.map.Bounds.Width * Game1.pixelZoom, 180 * Game1.pixelZoom, 0, 0);
|
||||||
|
this.mapX = (int)centeringOnScreen.X;
|
||||||
|
this.mapY = (int)centeringOnScreen.Y;
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX, this.mapY, 292, 152), Game1.player.mailReceived.Contains("ccVault") ? Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11062") : "???")
|
||||||
|
{
|
||||||
|
myID = 1001,
|
||||||
|
rightNeighborID = 1003,
|
||||||
|
downNeighborID = 1030
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 324, this.mapY + 252, 188, 132), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11064", (object)Game1.player.farmName))
|
||||||
|
{
|
||||||
|
myID = 1002,
|
||||||
|
leftNeighborID = 1005,
|
||||||
|
upNeighborID = 1003,
|
||||||
|
rightNeighborID = 1004,
|
||||||
|
downNeighborID = 1006
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 360, this.mapY + 96, 188, 132), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11065"))
|
||||||
|
{
|
||||||
|
myID = 1003,
|
||||||
|
downNeighborID = 1002,
|
||||||
|
leftNeighborID = 1001,
|
||||||
|
rightNeighborID = 1022,
|
||||||
|
upNeighborID = 1029
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 516, this.mapY + 224, 76, 100), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11066"))
|
||||||
|
{
|
||||||
|
myID = 1004,
|
||||||
|
leftNeighborID = 1002,
|
||||||
|
upNeighborID = 1003,
|
||||||
|
downNeighborID = 1006,
|
||||||
|
rightNeighborID = 1011
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 196, this.mapY + 352, 36, 76), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11067"))
|
||||||
|
{
|
||||||
|
myID = 1005,
|
||||||
|
upNeighborID = 1001,
|
||||||
|
downNeighborID = 1031,
|
||||||
|
rightNeighborID = 1006,
|
||||||
|
leftNeighborID = 1030
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 420, this.mapY + 392, 76, 40), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11068") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11069"))
|
||||||
|
{
|
||||||
|
myID = 1006,
|
||||||
|
leftNeighborID = 1005,
|
||||||
|
downNeighborID = 1007,
|
||||||
|
upNeighborID = 1002,
|
||||||
|
rightNeighborID = 1008
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 452, this.mapY + 436, 32, 24), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11070"))
|
||||||
|
{
|
||||||
|
myID = 1007,
|
||||||
|
upNeighborID = 1006,
|
||||||
|
downNeighborID = 1033,
|
||||||
|
leftNeighborID = 1005,
|
||||||
|
rightNeighborID = 1008
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 612, this.mapY + 396, 36, 52), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11071") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11072"))
|
||||||
|
{
|
||||||
|
myID = 1008,
|
||||||
|
leftNeighborID = 1006,
|
||||||
|
upNeighborID = 1010,
|
||||||
|
rightNeighborID = 1009
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 652, this.mapY + 408, 40, 36), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11073") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11074"))
|
||||||
|
{
|
||||||
|
myID = 1009,
|
||||||
|
leftNeighborID = 1008,
|
||||||
|
upNeighborID = 1010,
|
||||||
|
rightNeighborID = 1018
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 672, this.mapY + 340, 44, 60), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11075"))
|
||||||
|
{
|
||||||
|
myID = 1010,
|
||||||
|
leftNeighborID = 1008,
|
||||||
|
downNeighborID = 1009,
|
||||||
|
rightNeighborID = 1014,
|
||||||
|
upNeighborID = 1011
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 680, this.mapY + 304, 16, 32), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11076") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11077"))
|
||||||
|
{
|
||||||
|
myID = 1011,
|
||||||
|
leftNeighborID = 1004,
|
||||||
|
rightNeighborID = 1012,
|
||||||
|
downNeighborID = 1010,
|
||||||
|
upNeighborID = 1032
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 696, this.mapY + 296, 28, 40), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11078") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11079") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11080"))
|
||||||
|
{
|
||||||
|
myID = 1012,
|
||||||
|
leftNeighborID = 1011,
|
||||||
|
downNeighborID = 1014,
|
||||||
|
rightNeighborID = 1021,
|
||||||
|
upNeighborID = 1032
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 852, this.mapY + 388, 80, 36), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11081") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11082"))
|
||||||
|
{
|
||||||
|
myID = 1013,
|
||||||
|
upNeighborID = 1027,
|
||||||
|
rightNeighborID = 1016,
|
||||||
|
downNeighborID = 1017,
|
||||||
|
leftNeighborID = 1015
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 716, this.mapY + 352, 28, 40), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11083") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11084"))
|
||||||
|
{
|
||||||
|
myID = 1014,
|
||||||
|
leftNeighborID = 1010,
|
||||||
|
rightNeighborID = 1020,
|
||||||
|
downNeighborID = 1019,
|
||||||
|
upNeighborID = 1012
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 768, this.mapY + 388, 44, 56), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11085"))
|
||||||
|
{
|
||||||
|
myID = 1015,
|
||||||
|
leftNeighborID = 1019,
|
||||||
|
upNeighborID = 1020,
|
||||||
|
rightNeighborID = 1013,
|
||||||
|
downNeighborID = 1017
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 892, this.mapY + 416, 32, 28), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11086") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11087"))
|
||||||
|
{
|
||||||
|
myID = 1016,
|
||||||
|
downNeighborID = 1017,
|
||||||
|
leftNeighborID = 1013,
|
||||||
|
upNeighborID = 1027,
|
||||||
|
rightNeighborID = 99989
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 824, this.mapY + 564, 28, 20), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11088"))
|
||||||
|
{
|
||||||
|
myID = 1017,
|
||||||
|
downNeighborID = 1028,
|
||||||
|
upNeighborID = 1015,
|
||||||
|
rightNeighborID = 99989
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 696, this.mapY + 448, 24, 20), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11089"))
|
||||||
|
{
|
||||||
|
myID = 1018,
|
||||||
|
downNeighborID = 1017,
|
||||||
|
rightNeighborID = 1019,
|
||||||
|
upNeighborID = 1014,
|
||||||
|
leftNeighborID = 1009
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 724, this.mapY + 424, 40, 32), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11090"))
|
||||||
|
{
|
||||||
|
myID = 1019,
|
||||||
|
leftNeighborID = 1018,
|
||||||
|
upNeighborID = 1014,
|
||||||
|
rightNeighborID = 1015,
|
||||||
|
downNeighborID = 1017
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 780, this.mapY + 360, 24, 20), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11091"))
|
||||||
|
{
|
||||||
|
myID = 1020,
|
||||||
|
upNeighborID = 1021,
|
||||||
|
leftNeighborID = 1014,
|
||||||
|
downNeighborID = 1015,
|
||||||
|
rightNeighborID = 1027
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 748, this.mapY + 316, 36, 36), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11092") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11093"))
|
||||||
|
{
|
||||||
|
myID = 1021,
|
||||||
|
rightNeighborID = 1027,
|
||||||
|
downNeighborID = 1020,
|
||||||
|
leftNeighborID = 1012,
|
||||||
|
upNeighborID = 1032
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 732, this.mapY + 148, 48, 32), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11094") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11095") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11096"))
|
||||||
|
{
|
||||||
|
myID = 1022,
|
||||||
|
downNeighborID = 1032,
|
||||||
|
leftNeighborID = 1003,
|
||||||
|
upNeighborID = 1034,
|
||||||
|
rightNeighborID = 1023
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 784, this.mapY + 128, 12, 16), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11097"))
|
||||||
|
{
|
||||||
|
myID = 1023,
|
||||||
|
leftNeighborID = 1034,
|
||||||
|
downNeighborID = 1022,
|
||||||
|
rightNeighborID = 1024
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 880, this.mapY + 96, 16, 24), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11098"))
|
||||||
|
{
|
||||||
|
myID = 1024,
|
||||||
|
leftNeighborID = 1023,
|
||||||
|
rightNeighborID = 1025,
|
||||||
|
downNeighborID = 1027
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 900, this.mapY + 108, 32, 36), Game1.stats.DaysPlayed >= 5U ? Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11099") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11100") : "???")
|
||||||
|
{
|
||||||
|
myID = 1025,
|
||||||
|
leftNeighborID = 1024,
|
||||||
|
rightNeighborID = 1026,
|
||||||
|
downNeighborID = 1027
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 968, this.mapY + 116, 88, 76), Game1.player.mailReceived.Contains("ccCraftsRoom") ? Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11103") : "???")
|
||||||
|
{
|
||||||
|
myID = 1026,
|
||||||
|
leftNeighborID = 1025,
|
||||||
|
downNeighborID = 1027
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 872, this.mapY + 280, 52, 52), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11105") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11106"))
|
||||||
|
{
|
||||||
|
myID = 1027,
|
||||||
|
upNeighborID = 1025,
|
||||||
|
leftNeighborID = 1021,
|
||||||
|
downNeighborID = 1013
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 844, this.mapY + 608, 36, 40), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11107") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11108"))
|
||||||
|
{
|
||||||
|
myID = 1028,
|
||||||
|
upNeighborID = 1017,
|
||||||
|
rightNeighborID = 99989
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 576, this.mapY + 60, 48, 36), Game1.isLocationAccessible("Railroad") ? Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11110") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11111") : "???")
|
||||||
|
{
|
||||||
|
myID = 1029,
|
||||||
|
rightNeighborID = 1034,
|
||||||
|
downNeighborID = 1003,
|
||||||
|
leftNeighborID = 1001
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX, this.mapY + 272, 196, 176), Game1.player.mailReceived.Contains("beenToWoods") ? Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11114") : "???")
|
||||||
|
{
|
||||||
|
myID = 1030,
|
||||||
|
upNeighborID = 1001,
|
||||||
|
rightNeighborID = 1005
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 260, this.mapY + 572, 20, 20), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11116"))
|
||||||
|
{
|
||||||
|
myID = 1031,
|
||||||
|
rightNeighborID = 1033,
|
||||||
|
upNeighborID = 1005
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 692, this.mapY + 204, 44, 36), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11117"))
|
||||||
|
{
|
||||||
|
myID = 1032,
|
||||||
|
downNeighborID = 1012,
|
||||||
|
upNeighborID = 1022,
|
||||||
|
leftNeighborID = 1004
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 380, this.mapY + 596, 24, 32), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11118"))
|
||||||
|
{
|
||||||
|
myID = 1033,
|
||||||
|
leftNeighborID = 1031,
|
||||||
|
rightNeighborID = 1017,
|
||||||
|
upNeighborID = 1007
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 644, this.mapY + 64, 16, 8), Game1.isLocationAccessible("Railroad") ? Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11119") : "???")
|
||||||
|
{
|
||||||
|
myID = 1034,
|
||||||
|
leftNeighborID = 1029,
|
||||||
|
rightNeighborID = 1023,
|
||||||
|
downNeighborID = 1022
|
||||||
|
});
|
||||||
|
this.points.Add(new ClickableComponent(new Rectangle(this.mapX + 728, this.mapY + 652, 28, 28), Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11122")));
|
||||||
|
if (setUpPlayerPositions == true)
|
||||||
|
{
|
||||||
|
this.setUpPlayerMapPosition();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void snapToDefaultClickableComponent()
|
||||||
|
{
|
||||||
|
this.currentlySnappedComponent = this.getComponentWithID(1002);
|
||||||
|
this.snapCursorToCurrentSnappedComponent();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpPlayerMapPosition()
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2(-999f, -999f);
|
||||||
|
string str = Game1.player.currentLocation.Name;
|
||||||
|
string name1 = Game1.player.currentLocation.Name;
|
||||||
|
|
||||||
|
switch (name1)
|
||||||
|
{
|
||||||
|
case "BathHouse_Entry":
|
||||||
|
case "BathHouse_Pool":
|
||||||
|
case "BathHouse_MensLocker":
|
||||||
|
case "BathHouse_WomensLocker":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11110") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11111");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "WizardHouse":
|
||||||
|
case "WizardHouseBasement":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11067");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "ScienceHouse":
|
||||||
|
case "SebastianRoom":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11094") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11095");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Desert":
|
||||||
|
case "SandyHouse":
|
||||||
|
case "SandyShop":
|
||||||
|
case "SkullCave":
|
||||||
|
case "Club":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11062");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Temp":
|
||||||
|
if (Game1.player.currentLocation.Map.Id.Contains("Town"))
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "HarveyRoom":
|
||||||
|
case "Hospital":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11076") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11077");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "JoshHouse":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11092") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11093");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "ManorHouse":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11085");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "CommunityCenter":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11117");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "SeedShop":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11078") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11079") + Environment.NewLine + Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11080");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Mine":
|
||||||
|
case "UndergroundMine":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11098");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "ElliottHouse":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11088");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Backwoods":
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "Woods":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11114");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "ArchaeologyHouse":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11086");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "AdventureGuild":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11099");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "FishShop":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11107");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "AnimalShop":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11068");
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "WitchWarpCave":
|
||||||
|
str = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11119");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (ClickableComponent point in this.points)
|
||||||
|
{
|
||||||
|
if (point.name.Equals(str) || point.name.Replace(" ", "").Equals(str) || point.name.Contains(Environment.NewLine) && point.name.Substring(0, point.name.IndexOf(Environment.NewLine)).Equals(str.Substring(0, str.Contains(Environment.NewLine) ? str.IndexOf(Environment.NewLine) : str.Length)))
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2((float)point.bounds.Center.X, (float)point.bounds.Center.Y);
|
||||||
|
this.playerLocationName = point.name.Contains(Environment.NewLine) ? point.name.Substring(0, point.name.IndexOf(Environment.NewLine)) : point.name;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
int tileX = Game1.player.getTileX();
|
||||||
|
int tileY = Game1.player.getTileY();
|
||||||
|
string name2 = Game1.player.currentLocation.name;
|
||||||
|
|
||||||
|
switch (name2)
|
||||||
|
{
|
||||||
|
case "Backwoods":
|
||||||
|
case "Tunnel":
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 109 * Game1.pixelZoom), (float)(this.mapY + 47 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11180");
|
||||||
|
return;
|
||||||
|
|
||||||
|
case "Temp":
|
||||||
|
if (!Game1.player.currentLocation.Map.Id.Contains("Town"))
|
||||||
|
return;
|
||||||
|
if (tileX > 84 && tileY < 68)
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 225 * Game1.pixelZoom), (float)(this.mapY + 81 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tileX > 80 && tileY >= 68)
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 220 * Game1.pixelZoom), (float)(this.mapY + 108 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tileY <= 42)
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 178 * Game1.pixelZoom), (float)(this.mapY + 64 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tileY > 42 && tileY < 76)
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 175 * Game1.pixelZoom), (float)(this.mapY + 88 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 182 * Game1.pixelZoom), (float)(this.mapY + 109 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
|
||||||
|
case "Coop":
|
||||||
|
case "Big Coop":
|
||||||
|
case "Farm":
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 96 * Game1.pixelZoom), (float)(this.mapY + 72 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11064", (object)Game1.player.farmName);
|
||||||
|
return;
|
||||||
|
|
||||||
|
case "Forest":
|
||||||
|
if (tileY > 51)
|
||||||
|
{
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11186");
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 70 * Game1.pixelZoom), (float)(this.mapY + 135 * Game1.pixelZoom));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tileX < 58)
|
||||||
|
{
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11186");
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 63 * Game1.pixelZoom), (float)(this.mapY + 104 * Game1.pixelZoom));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11188");
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 109 * Game1.pixelZoom), (float)(this.mapY + 107 * Game1.pixelZoom));
|
||||||
|
return;
|
||||||
|
|
||||||
|
case "Town":
|
||||||
|
if (tileX > 84 && tileY < 68)
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 225 * Game1.pixelZoom), (float)(this.mapY + 81 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tileX > 80 && tileY >= 68)
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 220 * Game1.pixelZoom), (float)(this.mapY + 108 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tileY <= 42)
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 178 * Game1.pixelZoom), (float)(this.mapY + 64 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tileY > 42 && tileY < 76)
|
||||||
|
{
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 175 * Game1.pixelZoom), (float)(this.mapY + 88 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 182 * Game1.pixelZoom), (float)(this.mapY + 109 * Game1.pixelZoom));
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11190");
|
||||||
|
return;
|
||||||
|
|
||||||
|
case "Saloon":
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11172");
|
||||||
|
return;
|
||||||
|
|
||||||
|
case "Mountain":
|
||||||
|
if (tileX < 38)
|
||||||
|
{
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11176");
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 185 * Game1.pixelZoom), (float)(this.mapY + 36 * Game1.pixelZoom));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (tileX < 96)
|
||||||
|
{
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11177");
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 220 * Game1.pixelZoom), (float)(this.mapY + 38 * Game1.pixelZoom));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11178");
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 253 * Game1.pixelZoom), (float)(this.mapY + 40 * Game1.pixelZoom));
|
||||||
|
return;
|
||||||
|
|
||||||
|
case "Beach":
|
||||||
|
this.playerLocationName = Game1.content.LoadString("Strings\\StringsFromCSFiles:MapPage.cs.11174");
|
||||||
|
this.playerMapPosition = new Vector2((float)(this.mapX + 202 * Game1.pixelZoom), (float)(this.mapY + 141 * Game1.pixelZoom));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void receiveKeyPress(Keys key)
|
||||||
|
{
|
||||||
|
base.receiveKeyPress(key);
|
||||||
|
if (!Game1.options.doesInputListContain(Game1.options.mapButton, key))
|
||||||
|
return;
|
||||||
|
this.exitThisMenu(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void receiveLeftClick(int x, int y, bool playSound = true)
|
||||||
|
{
|
||||||
|
if (this.okButton.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
this.okButton.scale -= 0.25f;
|
||||||
|
this.okButton.scale = Math.Max(0.75f, this.okButton.scale);
|
||||||
|
(Game1.activeClickableMenu as GameMenu).changeTab(0);
|
||||||
|
}
|
||||||
|
foreach (ClickableComponent point in this.points)
|
||||||
|
{
|
||||||
|
if (point.containsPoint(x, y) && point.name == "Lonely Stone")
|
||||||
|
Game1.playSound("stoneCrack");
|
||||||
|
}
|
||||||
|
if (Game1.activeClickableMenu == null)
|
||||||
|
return;
|
||||||
|
(Game1.activeClickableMenu as GameMenu).changeTab(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void receiveRightClick(int x, int y, bool playSound = true)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void performHoverAction(int x, int y)
|
||||||
|
{
|
||||||
|
this.descriptionText = "";
|
||||||
|
this.hoverText = "";
|
||||||
|
foreach (ClickableComponent point in this.points)
|
||||||
|
{
|
||||||
|
if (point.containsPoint(x, y))
|
||||||
|
{
|
||||||
|
this.hoverText = point.name;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.okButton.containsPoint(x, y))
|
||||||
|
this.okButton.scale = Math.Min(this.okButton.scale + 0.02f, this.okButton.baseScale + 0.1f);
|
||||||
|
else
|
||||||
|
this.okButton.scale = Math.Max(this.okButton.scale - 0.02f, this.okButton.baseScale);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void draw(SpriteBatch b)
|
||||||
|
{
|
||||||
|
Game1.drawDialogueBox(this.mapX - Game1.pixelZoom * 8, this.mapY - Game1.pixelZoom * 24, (this.map.Bounds.Width + 16) * Game1.pixelZoom, 212 * Game1.pixelZoom, false, true, (string)null, false);
|
||||||
|
b.Draw(this.map, new Vector2((float)this.mapX, (float)this.mapY), new Rectangle?(new Rectangle(0, 0, 300, 180)), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, 0.86f);
|
||||||
|
switch (Game1.whichFarm)
|
||||||
|
{
|
||||||
|
case 1:
|
||||||
|
b.Draw(this.map, new Vector2((float)this.mapX, (float)(this.mapY + 43 * Game1.pixelZoom)), new Rectangle?(new Rectangle(0, 180, 131, 61)), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, 0.861f);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
b.Draw(this.map, new Vector2((float)this.mapX, (float)(this.mapY + 43 * Game1.pixelZoom)), new Rectangle?(new Rectangle(131, 180, 131, 61)), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, 0.861f);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
b.Draw(this.map, new Vector2((float)this.mapX, (float)(this.mapY + 43 * Game1.pixelZoom)), new Rectangle?(new Rectangle(0, 241, 131, 61)), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, 0.861f);
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
b.Draw(this.map, new Vector2((float)this.mapX, (float)(this.mapY + 43 * Game1.pixelZoom)), new Rectangle?(new Rectangle(131, 241, 131, 61)), Color.White, 0.0f, Vector2.Zero, 4f, SpriteEffects.None, 0.861f);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
Game1.player.FarmerRenderer.drawMiniPortrat(b, this.playerMapPosition - new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize / 2)), 0.00011f, 4f, 2, Game1.player);
|
||||||
|
if (this.playerLocationName != null)
|
||||||
|
SpriteText.drawStringWithScrollCenteredAt(b, this.playerLocationName, this.xPositionOnScreen + this.width / 2, this.yPositionOnScreen + this.height + Game1.tileSize / 2 + Game1.pixelZoom * 4, "", 1f, -1, 0, 0.88f, false);
|
||||||
|
this.okButton.draw(b);
|
||||||
|
if (this.hoverText.Equals(""))
|
||||||
|
return;
|
||||||
|
IClickableMenu.drawHoverText(b, this.hoverText, Game1.smallFont, 0, 0, -1, (string)null, -1, (string[])null, (Item)null, 0, -1, -1, -1, -1, 1f, (CraftingRecipe)null);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using OmegasisCore.Menus.MenuComponentsAndResources;
|
||||||
|
using StardewValley;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace OmegasisCore.Resources
|
||||||
|
{
|
||||||
|
public class Dictionaries
|
||||||
|
{
|
||||||
|
public static Dictionary<string, TextureDataNode> spriteFontList;
|
||||||
|
public static string vanillaFontPath;
|
||||||
|
|
||||||
|
public static void initalizeDictionaries()
|
||||||
|
{
|
||||||
|
vanillaFontPath = Path.Combine(@"assets", "Fonts", "colorlessSpriteFont", "vanilla");
|
||||||
|
spriteFontList = new Dictionary<string, TextureDataNode>();
|
||||||
|
fillAllDictionaries();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void fillAllDictionaries()
|
||||||
|
{
|
||||||
|
fillSpriteFontList();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void fillSpriteFontList()
|
||||||
|
{
|
||||||
|
|
||||||
|
spriteFontList.Add("0", new TextureDataNode(ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(vanillaFontPath, "0.xnb")), Path.Combine(vanillaFontPath, "0")));
|
||||||
|
|
||||||
|
spriteFontList.Add("leftArrow", new TextureDataNode(ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(vanillaFontPath, "leftArrow")), Path.Combine(vanillaFontPath, "leftArrow")));
|
||||||
|
spriteFontList.Add("rightArrow", new TextureDataNode(ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(vanillaFontPath, "rightArrow")), Path.Combine(vanillaFontPath, "rightArrow")));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,87 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using OmegasisCore.Menus;
|
||||||
|
using OmegasisCore.Menus.MenuComponentsAndResources;
|
||||||
|
using StardewModdingAPI;
|
||||||
|
using StardewValley;
|
||||||
|
using StardewValley.Menus;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace OmegasisCore.Resources
|
||||||
|
{
|
||||||
|
public class Lists
|
||||||
|
{
|
||||||
|
public static List<GameMenuComponentPair> ModdedGameMenuTabsAndPages;
|
||||||
|
public static List<GameMenuComponentPair> VanillaGameMenuTabs;
|
||||||
|
|
||||||
|
public static void initalizeLists()
|
||||||
|
{
|
||||||
|
ModdedGameMenuTabsAndPages = new List<GameMenuComponentPair>();
|
||||||
|
VanillaGameMenuTabs = new List<GameMenuComponentPair>();
|
||||||
|
initalizeVanillaGameMenuTabs();
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void initalizeVanillaGameMenuTabs()
|
||||||
|
{
|
||||||
|
int xPositionOnScreen = Game1.viewport.Width / 2 - (800 + IClickableMenu.borderWidth * 2) / 2;
|
||||||
|
int yPositionOnScreen = Game1.viewport.Height / 2 - (600 + IClickableMenu.borderWidth * 2) / 2;
|
||||||
|
int width = 800 + IClickableMenu.borderWidth * 2;
|
||||||
|
int height = 600 + IClickableMenu.borderWidth * 2;
|
||||||
|
|
||||||
|
VanillaGameMenuTabs.Add(
|
||||||
|
new Menus.MenuComponentsAndResources.GameMenuComponentPair(
|
||||||
|
new ClickableTextureComponentExtended("inventory", new Rectangle(xPositionOnScreen + Game1.tileSize, yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Inventory", "Inventory", ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(ModCore.ModAssetFolder, "Menus", "GameMenu", "TabIcons", "InventoryTabIcon.xnb")), new Rectangle(0 * Game1.tileSize, 0 * Game1.tileSize, Game1.tileSize, Game1.tileSize), 1f, 0, false),
|
||||||
|
new InventoryPage(xPositionOnScreen, yPositionOnScreen, width, height)
|
||||||
|
));
|
||||||
|
|
||||||
|
VanillaGameMenuTabs.Add(
|
||||||
|
new GameMenuComponentPair(
|
||||||
|
new ClickableTextureComponentExtended("Skills", new Rectangle(xPositionOnScreen + Game1.tileSize * 2, yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Skills", "Skills", ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(ModCore.ModAssetFolder,"Menus", "GameMenu", "TabIcons", "BlankTabIcon.xnb")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 1, false),
|
||||||
|
new SkillsPage(xPositionOnScreen, yPositionOnScreen, width, height)
|
||||||
|
));
|
||||||
|
|
||||||
|
//For some reason I have to add in the Social Page after the game has been compiled. Probably something to do with retreiving the farmer and their list of friends.
|
||||||
|
VanillaGameMenuTabs.Add(
|
||||||
|
new GameMenuComponentPair(
|
||||||
|
new ClickableTextureComponentExtended("Social", new Rectangle(xPositionOnScreen + Game1.tileSize * 3, yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Social", "Social", ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(ModCore.ModAssetFolder, "Menus", "GameMenu", "TabIcons", "SocialTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 2, false),
|
||||||
|
new SocialPage(xPositionOnScreen, yPositionOnScreen, width, height)
|
||||||
|
));
|
||||||
|
|
||||||
|
VanillaGameMenuTabs.Add(
|
||||||
|
new GameMenuComponentPair(
|
||||||
|
new ClickableTextureComponentExtended("Map", new Rectangle(xPositionOnScreen + Game1.tileSize * 4, yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Map", "Map", ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(ModCore.ModAssetFolder, "Menus", "GameMenu", "TabIcons", "MapTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 3, false),
|
||||||
|
//This should be new MapPage(xPositionOnScreen, yPositionOnScreen, width, height), but it throws an error upon Mod.Entry.
|
||||||
|
new ModdedMapPage(xPositionOnScreen, yPositionOnScreen, width, height)
|
||||||
|
));
|
||||||
|
|
||||||
|
VanillaGameMenuTabs.Add(
|
||||||
|
new GameMenuComponentPair(
|
||||||
|
new ClickableTextureComponentExtended("Crafting", new Rectangle(xPositionOnScreen + Game1.tileSize * 5, yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Crafting", "Crafting", ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(ModCore.ModAssetFolder, "Menus", "GameMenu", "TabIcons", "CraftingTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 4, false),
|
||||||
|
new CraftingPage(xPositionOnScreen, yPositionOnScreen, width, height, false)
|
||||||
|
));
|
||||||
|
|
||||||
|
VanillaGameMenuTabs.Add(
|
||||||
|
new GameMenuComponentPair(
|
||||||
|
new ClickableTextureComponentExtended("Collections", new Rectangle(xPositionOnScreen + Game1.tileSize * 6, yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Collections", "Collections", ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(ModCore.ModAssetFolder, "Menus", "GameMenu", "TabIcons", "CollectionsTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 5, false),
|
||||||
|
new CollectionsPage(xPositionOnScreen, yPositionOnScreen, width - Game1.tileSize - Game1.tileSize / 4, height)
|
||||||
|
));
|
||||||
|
|
||||||
|
VanillaGameMenuTabs.Add(
|
||||||
|
new GameMenuComponentPair(
|
||||||
|
new ClickableTextureComponentExtended("Options", new Rectangle(xPositionOnScreen + Game1.tileSize * 7, yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Options", "Options", ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(ModCore.ModAssetFolder, "Menus", "GameMenu", "TabIcons", "OptionsTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 6, false),
|
||||||
|
new OptionsPage(xPositionOnScreen, yPositionOnScreen, width - Game1.tileSize - Game1.tileSize / 4, height)
|
||||||
|
));
|
||||||
|
|
||||||
|
VanillaGameMenuTabs.Add(
|
||||||
|
new GameMenuComponentPair(
|
||||||
|
new ClickableTextureComponentExtended("Exit", new Rectangle(xPositionOnScreen + Game1.tileSize * 8, yPositionOnScreen + IClickableMenu.tabYPositionRelativeToMenuY + Game1.tileSize, Game1.tileSize, Game1.tileSize), "Exit", "Exit", ModCore.HELPER.Content.Load<Texture2D>(Path.Combine(ModCore.ModAssetFolder, "Menus", "GameMenu", "TabIcons", "QuitTabIcon")), new Rectangle(0 * Game1.tileSize, 0, Game1.tileSize, Game1.tileSize), 1f, 7, false),
|
||||||
|
new ExitPage(xPositionOnScreen, yPositionOnScreen, width - Game1.tileSize - Game1.tileSize / 4, height)
|
||||||
|
));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,956 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using Revitalize.Resources;
|
||||||
|
using StardewModdingAPI;
|
||||||
|
using StardewValley;
|
||||||
|
using StardewValley.Locations;
|
||||||
|
using StardewValley.Menus;
|
||||||
|
using StardewValley.Objects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.IO;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace Revitalize.Objects
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Original Stardew Furniture Class but rewritten to be placed anywhere.
|
||||||
|
/// </summary>
|
||||||
|
public class BlankObject : CoreObject
|
||||||
|
{
|
||||||
|
public const int chair = 0;
|
||||||
|
|
||||||
|
public const int bench = 1;
|
||||||
|
|
||||||
|
public const int couch = 2;
|
||||||
|
|
||||||
|
public const int armchair = 3;
|
||||||
|
|
||||||
|
public const int dresser = 4;
|
||||||
|
|
||||||
|
public const int longTable = 5;
|
||||||
|
|
||||||
|
public const int painting = 6;
|
||||||
|
|
||||||
|
public const int lamp = 7;
|
||||||
|
|
||||||
|
public const int decor = 8;
|
||||||
|
|
||||||
|
public const int other = 9;
|
||||||
|
|
||||||
|
public const int bookcase = 10;
|
||||||
|
|
||||||
|
public const int table = 11;
|
||||||
|
|
||||||
|
public const int rug = 12;
|
||||||
|
|
||||||
|
public const int window = 13;
|
||||||
|
|
||||||
|
public new int price;
|
||||||
|
|
||||||
|
public int Decoration_type;
|
||||||
|
|
||||||
|
public int rotations;
|
||||||
|
|
||||||
|
public int currentRotation;
|
||||||
|
|
||||||
|
private int sourceIndexOffset;
|
||||||
|
|
||||||
|
public Vector2 drawPosition;
|
||||||
|
|
||||||
|
public Rectangle sourceRect;
|
||||||
|
|
||||||
|
public Rectangle defaultSourceRect;
|
||||||
|
|
||||||
|
public Rectangle defaultBoundingBox;
|
||||||
|
|
||||||
|
public string description;
|
||||||
|
|
||||||
|
public Texture2D TextureSheet;
|
||||||
|
|
||||||
|
public new bool flipped;
|
||||||
|
|
||||||
|
[XmlIgnore]
|
||||||
|
public bool flaggedForPickUp;
|
||||||
|
|
||||||
|
private bool lightGlowAdded;
|
||||||
|
|
||||||
|
public string texturePath;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public override string Name
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlankObject()
|
||||||
|
{
|
||||||
|
this.updateDrawPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlankObject(bool f)
|
||||||
|
{
|
||||||
|
//does nothng
|
||||||
|
}
|
||||||
|
|
||||||
|
public BlankObject( Vector2 tile, int xOffset, int yOffset, bool isRemovable = true,int which=0)
|
||||||
|
{
|
||||||
|
//this.xTileOffset = xOffset;
|
||||||
|
//this.yTileOffset = yOffset;
|
||||||
|
removable = isRemovable;
|
||||||
|
// this.thisType = GetType();
|
||||||
|
this.tileLocation = tile;
|
||||||
|
this.InitializeBasics(0, tile);
|
||||||
|
if (TextureSheet == null)
|
||||||
|
{
|
||||||
|
TextureSheet = Game1.content.Load<Texture2D>(Path.Combine("Revitalize","Furniture","Graphics","Blank"));
|
||||||
|
texturePath = Path.Combine("Revitalize", "Furniture", "Blank");
|
||||||
|
}
|
||||||
|
Dictionary<int, string> dictionary = Game1.content.Load<Dictionary<int, string>> (Path.Combine("Revitalize", "Furniture","Data", "Blank"));
|
||||||
|
string[] array = dictionary[which].Split(new char[]
|
||||||
|
{
|
||||||
|
'/'
|
||||||
|
});
|
||||||
|
this.name = array[0];
|
||||||
|
this.Decoration_type = this.getTypeNumberFromName(array[1]);
|
||||||
|
this.description = "Can be placed inside your house.";
|
||||||
|
this.defaultSourceRect = new Rectangle(which * 16 % TextureSheet.Width, which * 16 / TextureSheet.Width * 16, 1, 1);
|
||||||
|
if (array[2].Equals("-1"))
|
||||||
|
{
|
||||||
|
this.sourceRect = this.getDefaultSourceRectForType(which, this.Decoration_type);
|
||||||
|
this.defaultSourceRect = this.sourceRect;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.defaultSourceRect.Width = Convert.ToInt32(array[2].Split(new char[]
|
||||||
|
{
|
||||||
|
' '
|
||||||
|
})[0]);
|
||||||
|
this.defaultSourceRect.Height = Convert.ToInt32(array[2].Split(new char[]
|
||||||
|
{
|
||||||
|
' '
|
||||||
|
})[1]);
|
||||||
|
this.sourceRect = new Rectangle(which * 16 % TextureSheet.Width, which * 16 / TextureSheet.Width * 16, this.defaultSourceRect.Width * 16, this.defaultSourceRect.Height * 16);
|
||||||
|
this.defaultSourceRect = this.sourceRect;
|
||||||
|
}
|
||||||
|
this.defaultBoundingBox = new Rectangle((int)this.tileLocation.X, (int)this.tileLocation.Y, 1, 1);
|
||||||
|
if (array[3].Equals("-1"))
|
||||||
|
{
|
||||||
|
this.boundingBox = this.getDefaultBoundingBoxForType(this.Decoration_type);
|
||||||
|
this.defaultBoundingBox = this.boundingBox;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.defaultBoundingBox.Width = Convert.ToInt32(array[3].Split(new char[]
|
||||||
|
{
|
||||||
|
' '
|
||||||
|
})[0]);
|
||||||
|
this.defaultBoundingBox.Height = Convert.ToInt32(array[3].Split(new char[]
|
||||||
|
{
|
||||||
|
' '
|
||||||
|
})[1]);
|
||||||
|
this.boundingBox = new Rectangle((int)this.tileLocation.X * Game1.tileSize, (int)this.tileLocation.Y * Game1.tileSize, this.defaultBoundingBox.Width * Game1.tileSize, this.defaultBoundingBox.Height * Game1.tileSize);
|
||||||
|
this.defaultBoundingBox = this.boundingBox;
|
||||||
|
}
|
||||||
|
this.updateDrawPosition();
|
||||||
|
this.rotations = Convert.ToInt32(array[4]);
|
||||||
|
this.price = Convert.ToInt32(array[5]);
|
||||||
|
this.parentSheetIndex = which;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string getDescription()
|
||||||
|
{
|
||||||
|
return this.description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool performDropDownAction(StardewValley.Farmer who)
|
||||||
|
{
|
||||||
|
this.resetOnPlayerEntry((who == null) ? Game1.currentLocation : who.currentLocation);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void hoverAction()
|
||||||
|
{
|
||||||
|
base.hoverAction();
|
||||||
|
if (!Game1.player.isInventoryFull())
|
||||||
|
{
|
||||||
|
Game1.mouseCursor = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool checkForAction(StardewValley.Farmer who, bool justCheckingForActivity = false)
|
||||||
|
{
|
||||||
|
var mState = Microsoft.Xna.Framework.Input.Mouse.GetState();
|
||||||
|
if (mState.RightButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("YOOO");
|
||||||
|
//do some stuff when the right button is down
|
||||||
|
rotate();
|
||||||
|
Game1.playSound("coin");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Game1.showRedMessage("CRY");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (justCheckingForActivity)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (this.parentSheetIndex == 1402)
|
||||||
|
{
|
||||||
|
Game1.activeClickableMenu = new Billboard(false);
|
||||||
|
}
|
||||||
|
return this.clicked(who);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool clicked(StardewValley.Farmer who)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (removable == false) return false;
|
||||||
|
// Game1.showRedMessage("THIS IS CLICKED!!!");
|
||||||
|
Game1.haltAfterCheck = false;
|
||||||
|
if (this.Decoration_type == 11 && who.ActiveObject != null && who.ActiveObject != null && this.heldObject == null)
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("Why1?");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.heldObject == null && (who.ActiveObject == null || !(who.ActiveObject is BlankObject)))
|
||||||
|
{
|
||||||
|
if (Game1.player.currentLocation is FarmHouse)
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("Why2?");
|
||||||
|
// this.heldObject = new BlankObject(parentSheetIndex, Vector2.Zero);
|
||||||
|
Util.addItemToInventoryAndCleanTrackedList(this);
|
||||||
|
this.flaggedForPickUp = true;
|
||||||
|
this.thisLocation = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// return true;
|
||||||
|
|
||||||
|
this.flaggedForPickUp = true;
|
||||||
|
if (this is TV)
|
||||||
|
{
|
||||||
|
this.heldObject = new TV(parentSheetIndex, Vector2.Zero);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// this.heldObject = new BlankObject(parentSheetIndex, Vector2.Zero);
|
||||||
|
Util.addItemToInventoryAndCleanTrackedList(this);
|
||||||
|
// this.heldObject.performRemoveAction(this.tileLocation, who.currentLocation);
|
||||||
|
// this.heldObject = null;
|
||||||
|
Game1.playSound("coin");
|
||||||
|
this.thisLocation = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.heldObject != null && who.addItemToInventoryBool(this.heldObject, false))
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("Why3?");
|
||||||
|
this.heldObject.performRemoveAction(this.tileLocation, who.currentLocation);
|
||||||
|
this.heldObject = null;
|
||||||
|
Util.addItemToInventoryAndCleanTrackedList(this);
|
||||||
|
Game1.playSound("coin");
|
||||||
|
this.thisLocation = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void DayUpdate(GameLocation location)
|
||||||
|
{
|
||||||
|
base.DayUpdate(location);
|
||||||
|
this.lightGlowAdded = false;
|
||||||
|
if (!Game1.isDarkOut() || (Game1.newDay && !Game1.isRaining))
|
||||||
|
{
|
||||||
|
this.removeLights(location);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.addLights(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetOnPlayerEntry(GameLocation environment)
|
||||||
|
{
|
||||||
|
this.removeLights(environment);
|
||||||
|
if (Game1.isDarkOut())
|
||||||
|
{
|
||||||
|
this.addLights(environment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool performObjectDropInAction(StardewValley.Object dropIn, bool probe, StardewValley.Farmer who)
|
||||||
|
{
|
||||||
|
if ((this.Decoration_type == 11 || this.Decoration_type == 5) && this.heldObject == null && !dropIn.bigCraftable && (!(dropIn is BlankObject) || ((dropIn as BlankObject).getTilesWide() == 1 && (dropIn as BlankObject).getTilesHigh() == 1)))
|
||||||
|
{
|
||||||
|
this.heldObject = (StardewValley.Object)dropIn.getOne();
|
||||||
|
this.heldObject.tileLocation = this.tileLocation;
|
||||||
|
this.heldObject.boundingBox.X = this.boundingBox.X;
|
||||||
|
this.heldObject.boundingBox.Y = this.boundingBox.Y;
|
||||||
|
// Log.AsyncO(getDefaultBoundingBoxForType((dropIn as BlankObject).Decoration_type));
|
||||||
|
this.heldObject.performDropDownAction(who);
|
||||||
|
if (!probe)
|
||||||
|
{
|
||||||
|
Game1.playSound("woodyStep");
|
||||||
|
// Log.AsyncC("HUH?");
|
||||||
|
if (who != null)
|
||||||
|
{
|
||||||
|
who.reduceActiveItemByOne();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addLights(GameLocation environment)
|
||||||
|
{
|
||||||
|
// this.lightSource.lightTexture = Game1.content.Load<Texture2D>("LooseSprites\\Lighting\\lantern");
|
||||||
|
|
||||||
|
if (this.Decoration_type == 7)
|
||||||
|
{
|
||||||
|
if (this.sourceIndexOffset == 0)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
this.sourceRect.X = this.sourceRect.X + this.sourceRect.Width;
|
||||||
|
}
|
||||||
|
this.sourceIndexOffset = 1;
|
||||||
|
if (this.lightSource == null)
|
||||||
|
{
|
||||||
|
Utility.removeLightSource((int)(this.tileLocation.X * 2000f + this.tileLocation.Y));
|
||||||
|
this.lightSource = new LightSource(4, new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y - Game1.tileSize)), 2f, Color.Black, (int)(this.tileLocation.X * 2000f + this.tileLocation.Y));
|
||||||
|
Game1.currentLightSources.Add(this.lightSource);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (this.Decoration_type == 13)
|
||||||
|
{
|
||||||
|
if (this.sourceIndexOffset == 0)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
this.sourceRect.X = this.sourceRect.X + this.sourceRect.Width;
|
||||||
|
}
|
||||||
|
this.sourceIndexOffset = 1;
|
||||||
|
if (this.lightGlowAdded)
|
||||||
|
{
|
||||||
|
environment.lightGlows.Remove(new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y + Game1.tileSize)));
|
||||||
|
this.lightGlowAdded = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void removeLights(GameLocation environment)
|
||||||
|
{
|
||||||
|
if (this.Decoration_type == 7)
|
||||||
|
{
|
||||||
|
if (this.sourceIndexOffset == 1)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
}
|
||||||
|
this.sourceIndexOffset = 0;
|
||||||
|
Utility.removeLightSource((int)(this.tileLocation.X * 2000f + this.tileLocation.Y));
|
||||||
|
this.lightSource = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.Decoration_type == 13)
|
||||||
|
{
|
||||||
|
if (this.sourceIndexOffset == 1)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
}
|
||||||
|
this.sourceIndexOffset = 0;
|
||||||
|
if (Game1.isRaining)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
this.sourceRect.X = this.sourceRect.X + this.sourceRect.Width;
|
||||||
|
this.sourceIndexOffset = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!this.lightGlowAdded && !environment.lightGlows.Contains(new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y + Game1.tileSize))))
|
||||||
|
{
|
||||||
|
environment.lightGlows.Add(new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y + Game1.tileSize)));
|
||||||
|
}
|
||||||
|
this.lightGlowAdded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool minutesElapsed(int minutes, GameLocation environment)
|
||||||
|
{
|
||||||
|
if (Game1.isDarkOut())
|
||||||
|
{
|
||||||
|
this.addLights(environment);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.removeLights(environment);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void performRemoveAction(Vector2 tileLocation, GameLocation environment)
|
||||||
|
{
|
||||||
|
this.removeLights(environment);
|
||||||
|
if (this.Decoration_type == 13 && this.lightGlowAdded)
|
||||||
|
{
|
||||||
|
environment.lightGlows.Remove(new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y + Game1.tileSize)));
|
||||||
|
this.lightGlowAdded = false;
|
||||||
|
}
|
||||||
|
base.performRemoveAction(tileLocation, environment);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rotate()
|
||||||
|
{
|
||||||
|
if (this.rotations < 2)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int num = (this.rotations == 4) ? 1 : 2;
|
||||||
|
this.currentRotation += num;
|
||||||
|
this.currentRotation %= 4;
|
||||||
|
this.flipped = false;
|
||||||
|
Point point = default(Point);
|
||||||
|
int num2 = this.Decoration_type;
|
||||||
|
switch (num2)
|
||||||
|
{
|
||||||
|
case 2:
|
||||||
|
point.Y = 1;
|
||||||
|
point.X = -1;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
point.X = -1;
|
||||||
|
point.Y = 1;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
point.Y = 0;
|
||||||
|
point.X = -1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (num2 == 12)
|
||||||
|
{
|
||||||
|
point.X = 0;
|
||||||
|
point.Y = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bool flag = this.Decoration_type == 5 || this.Decoration_type == 12 || this.parentSheetIndex == 724 || this.parentSheetIndex == 727;
|
||||||
|
bool flag2 = this.defaultBoundingBox.Width != this.defaultBoundingBox.Height;
|
||||||
|
if (flag && this.currentRotation == 2)
|
||||||
|
{
|
||||||
|
this.currentRotation = 1;
|
||||||
|
}
|
||||||
|
if (flag2)
|
||||||
|
{
|
||||||
|
int height = this.boundingBox.Height;
|
||||||
|
switch (this.currentRotation)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 2:
|
||||||
|
this.boundingBox.Height = this.defaultBoundingBox.Height;
|
||||||
|
this.boundingBox.Width = this.defaultBoundingBox.Width;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 3:
|
||||||
|
this.boundingBox.Height = this.boundingBox.Width + point.X * Game1.tileSize;
|
||||||
|
this.boundingBox.Width = height + point.Y * Game1.tileSize;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Point point2 = default(Point);
|
||||||
|
int num3 = this.Decoration_type;
|
||||||
|
if (num3 == 12)
|
||||||
|
{
|
||||||
|
point2.X = 1;
|
||||||
|
point2.Y = -1;
|
||||||
|
}
|
||||||
|
if (flag2)
|
||||||
|
{
|
||||||
|
switch (this.currentRotation)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + this.defaultSourceRect.Width, this.defaultSourceRect.Y, this.defaultSourceRect.Height - 16 + point.Y * 16 + point2.X * 16, this.defaultSourceRect.Width + 16 + point.X * 16 + point2.Y * 16);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + this.defaultSourceRect.Width + this.defaultSourceRect.Height - 16 + point.Y * 16 + point2.X * 16, this.defaultSourceRect.Y, this.defaultSourceRect.Width, this.defaultSourceRect.Height);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + this.defaultSourceRect.Width, this.defaultSourceRect.Y, this.defaultSourceRect.Height - 16 + point.Y * 16 + point2.X * 16, this.defaultSourceRect.Width + 16 + point.X * 16 + point2.Y * 16);
|
||||||
|
this.flipped = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.flipped = (this.currentRotation == 3);
|
||||||
|
if (this.rotations == 2)
|
||||||
|
{
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + ((this.currentRotation == 2) ? 1 : 0) * this.defaultSourceRect.Width, this.defaultSourceRect.Y, this.defaultSourceRect.Width, this.defaultSourceRect.Height);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + ((this.currentRotation == 3) ? 1 : this.currentRotation) * this.defaultSourceRect.Width, this.defaultSourceRect.Y, this.defaultSourceRect.Width, this.defaultSourceRect.Height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (flag && this.currentRotation == 1)
|
||||||
|
{
|
||||||
|
this.currentRotation = 2;
|
||||||
|
}
|
||||||
|
this.updateDrawPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool isGroundFurniture()
|
||||||
|
{
|
||||||
|
return this.Decoration_type != 13 && this.Decoration_type != 6 && this.Decoration_type != 13;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool canBeGivenAsGift()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
||||||
|
{
|
||||||
|
if ((l is FarmHouse))
|
||||||
|
{
|
||||||
|
for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++)
|
||||||
|
{
|
||||||
|
Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize;
|
||||||
|
vector.X += (float)(Game1.tileSize / 2);
|
||||||
|
vector.Y += (float)(Game1.tileSize / 2);
|
||||||
|
foreach (KeyValuePair<Vector2, StardewValley.Object> something in l.objects)
|
||||||
|
{
|
||||||
|
StardewValley.Object obj = something.Value;
|
||||||
|
if ((obj.GetType()).ToString().Contains("BlankObject"))
|
||||||
|
{
|
||||||
|
BlankObject current = (BlankObject)obj;
|
||||||
|
if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1)
|
||||||
|
{
|
||||||
|
bool result = true;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y))
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return base.canBePlacedHere(l, tile);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("NOT FARMHOUSE");
|
||||||
|
for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++)
|
||||||
|
{
|
||||||
|
Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize;
|
||||||
|
vector.X += (float)(Game1.tileSize / 2);
|
||||||
|
vector.Y += (float)(Game1.tileSize / 2);
|
||||||
|
/*
|
||||||
|
foreach (BlankObject current in (l as FarmHouse).BlankObject)
|
||||||
|
{
|
||||||
|
if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1)
|
||||||
|
{
|
||||||
|
bool result = true;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y))
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return base.canBePlacedHere(l, tile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateDrawPosition()
|
||||||
|
{
|
||||||
|
this.drawPosition = new Vector2((float)this.boundingBox.X, (float)(this.boundingBox.Y - (this.sourceRect.Height * Game1.pixelZoom - this.boundingBox.Height)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTilesWide()
|
||||||
|
{
|
||||||
|
return this.boundingBox.Width / Game1.tileSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTilesHigh()
|
||||||
|
{
|
||||||
|
return this.boundingBox.Height / Game1.tileSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool placementAction(GameLocation location, int x, int y, StardewValley.Farmer who = null)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Point point = new Point(x / Game1.tileSize, y / Game1.tileSize);
|
||||||
|
|
||||||
|
|
||||||
|
this.tileLocation = new Vector2((float)point.X, (float)point.Y);
|
||||||
|
bool flag = false;
|
||||||
|
if (this.Decoration_type == 6 || this.Decoration_type == 13 || this.parentSheetIndex == 1293)
|
||||||
|
{
|
||||||
|
int num = (this.parentSheetIndex == 1293) ? 3 : 0;
|
||||||
|
bool flag2 = false;
|
||||||
|
|
||||||
|
if (!flag2)
|
||||||
|
{
|
||||||
|
Game1.showRedMessage("Must be placed on wall");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
for (int i = point.X; i < point.X + this.getTilesWide(); i++)
|
||||||
|
{
|
||||||
|
for (int j = point.Y; j < point.Y + this.getTilesHigh(); j++)
|
||||||
|
{
|
||||||
|
if (location.doesTileHaveProperty(i, j, "NoFurniture", "Back") != null)
|
||||||
|
{
|
||||||
|
Game1.showRedMessage("Furniture can't be placed here");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (location.getTileIndexAt(i, j, "Buildings") != -1)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.boundingBox = new Rectangle(x / Game1.tileSize * Game1.tileSize, y / Game1.tileSize * Game1.tileSize, this.boundingBox.Width, this.boundingBox.Height);
|
||||||
|
/*
|
||||||
|
foreach (Furniture current2 in (location as DecoratableLocation).furniture)
|
||||||
|
{
|
||||||
|
if (current2.furniture_type == 11 && current2.heldObject == null && current2.getBoundingBox(current2.tileLocation).Intersects(this.boundingBox))
|
||||||
|
{
|
||||||
|
current2.performObjectDropInAction(this, false, (who == null) ? Game1.player : who);
|
||||||
|
bool result = true;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
using (List<StardewValley.Farmer>.Enumerator enumerator3 = location.getFarmers().GetEnumerator())
|
||||||
|
{
|
||||||
|
while (enumerator3.MoveNext())
|
||||||
|
{
|
||||||
|
if (enumerator3.Current.GetBoundingBox().Intersects(this.boundingBox))
|
||||||
|
{
|
||||||
|
Game1.showRedMessage("Can't place on top of a person.");
|
||||||
|
bool result = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.updateDrawPosition();
|
||||||
|
return Util.placementAction(this, location, x, y, who);
|
||||||
|
|
||||||
|
// Game1.showRedMessage("Can only be placed in House");
|
||||||
|
// return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool isPlaceable()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Rectangle getBoundingBox(Vector2 tileLocation)
|
||||||
|
{
|
||||||
|
return this.boundingBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Rectangle getDefaultSourceRectForType(int tileIndex, int type)
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
int num2;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
num = 1;
|
||||||
|
num2 = 0;
|
||||||
|
goto IL_94;
|
||||||
|
case 1:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 2:
|
||||||
|
num = 3;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 3:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 4:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 5:
|
||||||
|
num = 5;
|
||||||
|
num2 = 3;
|
||||||
|
goto IL_94;
|
||||||
|
case 6:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 7:
|
||||||
|
num = 1;
|
||||||
|
num2 = 3;
|
||||||
|
goto IL_94;
|
||||||
|
case 8:
|
||||||
|
num = 1;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 10:
|
||||||
|
num = 2;
|
||||||
|
num2 = 3;
|
||||||
|
goto IL_94;
|
||||||
|
case 11:
|
||||||
|
num = 2;
|
||||||
|
num2 = 3;
|
||||||
|
goto IL_94;
|
||||||
|
case 12:
|
||||||
|
num = 3;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 13:
|
||||||
|
num = 1;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
}
|
||||||
|
num = 1;
|
||||||
|
num2 = 2;
|
||||||
|
IL_94:
|
||||||
|
return new Rectangle(tileIndex * 16 % TextureSheet.Width, tileIndex * 16 / TextureSheet.Width * 16, num * 16, num2 * 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Rectangle getDefaultBoundingBoxForType(int type)
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
int num2;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
num = 1;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 1:
|
||||||
|
num = 2;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 2:
|
||||||
|
num = 3;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 3:
|
||||||
|
num = 2;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 4:
|
||||||
|
num = 2;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 5:
|
||||||
|
num = 5;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 6:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 7:
|
||||||
|
num = 1;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 8:
|
||||||
|
num = 1;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 10:
|
||||||
|
num = 2;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 11:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 12:
|
||||||
|
num = 3;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 13:
|
||||||
|
num = 1;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
}
|
||||||
|
num = 1;
|
||||||
|
num2 = 1;
|
||||||
|
IL_94:
|
||||||
|
return new Rectangle((int)this.tileLocation.X * Game1.tileSize, (int)this.tileLocation.Y * Game1.tileSize, num * Game1.tileSize, num2 * Game1.tileSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getTypeNumberFromName(string typeName)
|
||||||
|
{
|
||||||
|
string key;
|
||||||
|
switch (key = typeName.ToLower())
|
||||||
|
{
|
||||||
|
case "chair":
|
||||||
|
return 0;
|
||||||
|
case "bench":
|
||||||
|
return 1;
|
||||||
|
case "couch":
|
||||||
|
return 2;
|
||||||
|
case "armchair":
|
||||||
|
return 3;
|
||||||
|
case "dresser":
|
||||||
|
return 4;
|
||||||
|
case "long table":
|
||||||
|
return 5;
|
||||||
|
case "painting":
|
||||||
|
return 6;
|
||||||
|
case "lamp":
|
||||||
|
return 7;
|
||||||
|
case "decor":
|
||||||
|
return 8;
|
||||||
|
case "bookcase":
|
||||||
|
return 10;
|
||||||
|
case "table":
|
||||||
|
return 11;
|
||||||
|
case "rug":
|
||||||
|
return 12;
|
||||||
|
case "window":
|
||||||
|
return 13;
|
||||||
|
}
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int salePrice()
|
||||||
|
{
|
||||||
|
return this.price;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int maximumStackSize()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int getStack()
|
||||||
|
{
|
||||||
|
return this.stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int addToStack(int amount)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private float getScaleSize()
|
||||||
|
{
|
||||||
|
int num = this.sourceRect.Width / 16;
|
||||||
|
int num2 = this.sourceRect.Height / 16;
|
||||||
|
if (num >= 5)
|
||||||
|
{
|
||||||
|
return 0.75f;
|
||||||
|
}
|
||||||
|
if (num2 >= 3)
|
||||||
|
{
|
||||||
|
return 1f;
|
||||||
|
}
|
||||||
|
if (num <= 2)
|
||||||
|
{
|
||||||
|
return 2f;
|
||||||
|
}
|
||||||
|
if (num <= 4)
|
||||||
|
{
|
||||||
|
return 1f;
|
||||||
|
}
|
||||||
|
return 0.1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void drawWhenHeld(SpriteBatch spriteBatch, Vector2 objectPosition, StardewValley.Farmer f)
|
||||||
|
{
|
||||||
|
base.drawWhenHeld(spriteBatch, objectPosition, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber)
|
||||||
|
{
|
||||||
|
spriteBatch.Draw(TextureSheet, location + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize / 2)), new Rectangle?(this.defaultSourceRect), Color.White * transparency, 0f, new Vector2((float)(this.defaultSourceRect.Width / 2), (float)(this.defaultSourceRect.Height / 2)), 1f * this.getScaleSize() * scaleSize, SpriteEffects.None, layerDepth);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void draw(SpriteBatch spriteBatch, int x, int y, float alpha = 1f)
|
||||||
|
{
|
||||||
|
if (x == -1)
|
||||||
|
{
|
||||||
|
spriteBatch.Draw(TextureSheet, Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
spriteBatch.Draw(TextureSheet, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), (float)(y * Game1.tileSize - (this.sourceRect.Height * Game1.pixelZoom - this.boundingBox.Height)))), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f));
|
||||||
|
}
|
||||||
|
if (this.heldObject != null)
|
||||||
|
{
|
||||||
|
if (this.heldObject is BlankObject)
|
||||||
|
{
|
||||||
|
(this.heldObject as BlankObject).drawAtNonTileSpot(spriteBatch, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(this.boundingBox.Center.X - Game1.tileSize / 2), (float)(this.boundingBox.Center.Y - (this.heldObject as BlankObject).sourceRect.Height * Game1.pixelZoom - Game1.tileSize / 4))), (float)(this.boundingBox.Bottom - 7) / 10000f, alpha);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
spriteBatch.Draw(Game1.shadowTexture, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(this.boundingBox.Center.X - Game1.tileSize / 2), (float)(this.boundingBox.Center.Y - Game1.tileSize * 4 / 3))) + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize * 5 / 6)), new Rectangle?(Game1.shadowTexture.Bounds), Color.White * alpha, 0f, new Vector2((float)Game1.shadowTexture.Bounds.Center.X, (float)Game1.shadowTexture.Bounds.Center.Y), 4f, SpriteEffects.None, (float)this.boundingBox.Bottom / 10000f);
|
||||||
|
spriteBatch.Draw(Game1.objectSpriteSheet, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(this.boundingBox.Center.X - Game1.tileSize / 2), (float)(this.boundingBox.Center.Y - Game1.tileSize * 4 / 3))), new Rectangle?(Game1.currentLocation.getSourceRectForObject(this.heldObject.ParentSheetIndex)), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, (float)(this.boundingBox.Bottom + 1) / 10000f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drawAtNonTileSpot(SpriteBatch spriteBatch, Vector2 location, float layerDepth, float alpha = 1f)
|
||||||
|
{
|
||||||
|
spriteBatch.Draw(TextureSheet, location, new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, layerDepth);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Item getOne()
|
||||||
|
{
|
||||||
|
BlankObject BlankObject = new BlankObject( this.tileLocation,0,0);
|
||||||
|
|
||||||
|
/*
|
||||||
|
drawPosition = this.drawPosition;
|
||||||
|
defaultBoundingBox = this.defaultBoundingBox;
|
||||||
|
boundingBox = this.boundingBox;
|
||||||
|
currentRotation = this.currentRotation - 1;
|
||||||
|
rotations = this.rotations;
|
||||||
|
rotate();
|
||||||
|
*/
|
||||||
|
return BlankObject;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string getCategoryName()
|
||||||
|
{
|
||||||
|
return "BlankObject";
|
||||||
|
// return base.getCategoryName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Color getCategoryColor()
|
||||||
|
{
|
||||||
|
return Util.invertColor(LightColors.Black);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,953 @@
|
||||||
|
using Microsoft.Xna.Framework;
|
||||||
|
using Microsoft.Xna.Framework.Graphics;
|
||||||
|
using Revitalize.Resources;
|
||||||
|
using StardewModdingAPI;
|
||||||
|
using StardewValley;
|
||||||
|
using StardewValley.Locations;
|
||||||
|
using StardewValley.Menus;
|
||||||
|
using StardewValley.Objects;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Xml.Serialization;
|
||||||
|
|
||||||
|
namespace Revitalize.Objects
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Original Stardew Furniture Class but rewritten to be placed anywhere.
|
||||||
|
/// </summary>
|
||||||
|
public class Decoration : CoreObject
|
||||||
|
{
|
||||||
|
public const int chair = 0;
|
||||||
|
|
||||||
|
public const int bench = 1;
|
||||||
|
|
||||||
|
public const int couch = 2;
|
||||||
|
|
||||||
|
public const int armchair = 3;
|
||||||
|
|
||||||
|
public const int dresser = 4;
|
||||||
|
|
||||||
|
public const int longTable = 5;
|
||||||
|
|
||||||
|
public const int painting = 6;
|
||||||
|
|
||||||
|
public const int lamp = 7;
|
||||||
|
|
||||||
|
public const int decor = 8;
|
||||||
|
|
||||||
|
public const int other = 9;
|
||||||
|
|
||||||
|
public const int bookcase = 10;
|
||||||
|
|
||||||
|
public const int table = 11;
|
||||||
|
|
||||||
|
public const int rug = 12;
|
||||||
|
|
||||||
|
public const int window = 13;
|
||||||
|
|
||||||
|
public new int price;
|
||||||
|
|
||||||
|
public int Decoration_type;
|
||||||
|
|
||||||
|
public int rotations;
|
||||||
|
|
||||||
|
public int currentRotation;
|
||||||
|
|
||||||
|
private int sourceIndexOffset;
|
||||||
|
|
||||||
|
public Vector2 drawPosition;
|
||||||
|
|
||||||
|
public Rectangle sourceRect;
|
||||||
|
|
||||||
|
public Rectangle defaultSourceRect;
|
||||||
|
|
||||||
|
public Rectangle defaultBoundingBox;
|
||||||
|
|
||||||
|
public string description;
|
||||||
|
|
||||||
|
public Texture2D TextureSheet;
|
||||||
|
|
||||||
|
public new bool flipped;
|
||||||
|
|
||||||
|
[XmlIgnore]
|
||||||
|
public bool flaggedForPickUp;
|
||||||
|
|
||||||
|
private bool lightGlowAdded;
|
||||||
|
|
||||||
|
public string texturePath;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
public override string Name
|
||||||
|
{
|
||||||
|
get
|
||||||
|
{
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public Decoration()
|
||||||
|
{
|
||||||
|
this.updateDrawPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
public Decoration(bool f)
|
||||||
|
{
|
||||||
|
//does nothng
|
||||||
|
}
|
||||||
|
|
||||||
|
public Decoration(int which, Vector2 tile, bool isRemovable = true)
|
||||||
|
{
|
||||||
|
removable = isRemovable;
|
||||||
|
// this.thisType = GetType();
|
||||||
|
this.tileLocation = tile;
|
||||||
|
this.InitializeBasics(0, tile);
|
||||||
|
if (TextureSheet == null)
|
||||||
|
{
|
||||||
|
TextureSheet = Game1.content.Load<Texture2D>("TileSheets\\furniture");
|
||||||
|
texturePath = "TileSheets\\furniture";
|
||||||
|
}
|
||||||
|
Dictionary<int, string> dictionary = Game1.content.Load<Dictionary<int, string>>("Data\\Furniture");
|
||||||
|
string[] array = dictionary[which].Split(new char[]
|
||||||
|
{
|
||||||
|
'/'
|
||||||
|
});
|
||||||
|
this.name = array[0];
|
||||||
|
this.Decoration_type = this.getTypeNumberFromName(array[1]);
|
||||||
|
this.description = "Can be placed inside your house.";
|
||||||
|
this.defaultSourceRect = new Rectangle(which * 16 % TextureSheet.Width, which * 16 / TextureSheet.Width * 16, 1, 1);
|
||||||
|
if (array[2].Equals("-1"))
|
||||||
|
{
|
||||||
|
this.sourceRect = this.getDefaultSourceRectForType(which, this.Decoration_type);
|
||||||
|
this.defaultSourceRect = this.sourceRect;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.defaultSourceRect.Width = Convert.ToInt32(array[2].Split(new char[]
|
||||||
|
{
|
||||||
|
' '
|
||||||
|
})[0]);
|
||||||
|
this.defaultSourceRect.Height = Convert.ToInt32(array[2].Split(new char[]
|
||||||
|
{
|
||||||
|
' '
|
||||||
|
})[1]);
|
||||||
|
this.sourceRect = new Rectangle(which * 16 % TextureSheet.Width, which * 16 / TextureSheet.Width * 16, this.defaultSourceRect.Width * 16, this.defaultSourceRect.Height * 16);
|
||||||
|
this.defaultSourceRect = this.sourceRect;
|
||||||
|
}
|
||||||
|
this.defaultBoundingBox = new Rectangle((int)this.tileLocation.X, (int)this.tileLocation.Y, 1, 1);
|
||||||
|
if (array[3].Equals("-1"))
|
||||||
|
{
|
||||||
|
this.boundingBox = this.getDefaultBoundingBoxForType(this.Decoration_type);
|
||||||
|
this.defaultBoundingBox = this.boundingBox;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.defaultBoundingBox.Width = Convert.ToInt32(array[3].Split(new char[]
|
||||||
|
{
|
||||||
|
' '
|
||||||
|
})[0]);
|
||||||
|
this.defaultBoundingBox.Height = Convert.ToInt32(array[3].Split(new char[]
|
||||||
|
{
|
||||||
|
' '
|
||||||
|
})[1]);
|
||||||
|
this.boundingBox = new Rectangle((int)this.tileLocation.X * Game1.tileSize, (int)this.tileLocation.Y * Game1.tileSize, this.defaultBoundingBox.Width * Game1.tileSize, this.defaultBoundingBox.Height * Game1.tileSize);
|
||||||
|
this.defaultBoundingBox = this.boundingBox;
|
||||||
|
}
|
||||||
|
this.updateDrawPosition();
|
||||||
|
this.rotations = Convert.ToInt32(array[4]);
|
||||||
|
this.price = Convert.ToInt32(array[5]);
|
||||||
|
this.parentSheetIndex = which;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string getDescription()
|
||||||
|
{
|
||||||
|
return this.description;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool performDropDownAction(StardewValley.Farmer who)
|
||||||
|
{
|
||||||
|
this.resetOnPlayerEntry((who == null) ? Game1.currentLocation : who.currentLocation);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void hoverAction()
|
||||||
|
{
|
||||||
|
base.hoverAction();
|
||||||
|
if (!Game1.player.isInventoryFull())
|
||||||
|
{
|
||||||
|
Game1.mouseCursor = 2;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool checkForAction(StardewValley.Farmer who, bool justCheckingForActivity = false)
|
||||||
|
{
|
||||||
|
var mState = Microsoft.Xna.Framework.Input.Mouse.GetState();
|
||||||
|
if (mState.RightButton == Microsoft.Xna.Framework.Input.ButtonState.Pressed)
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("YOOO");
|
||||||
|
//do some stuff when the right button is down
|
||||||
|
rotate();
|
||||||
|
Game1.playSound("coin");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//Game1.showRedMessage("CRY");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (justCheckingForActivity)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
if (this.parentSheetIndex == 1402)
|
||||||
|
{
|
||||||
|
Game1.activeClickableMenu = new Billboard(false);
|
||||||
|
}
|
||||||
|
return this.clicked(who);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool clicked(StardewValley.Farmer who)
|
||||||
|
{
|
||||||
|
|
||||||
|
if (removable == false) return false;
|
||||||
|
// Game1.showRedMessage("THIS IS CLICKED!!!");
|
||||||
|
Game1.haltAfterCheck = false;
|
||||||
|
if (this.Decoration_type == 11 && who.ActiveObject != null && who.ActiveObject != null && this.heldObject == null)
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("Why1?");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if (this.heldObject == null && (who.ActiveObject == null || !(who.ActiveObject is Decoration)))
|
||||||
|
{
|
||||||
|
if (Game1.player.currentLocation is FarmHouse)
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("Why2?");
|
||||||
|
// this.heldObject = new Decoration(parentSheetIndex, Vector2.Zero);
|
||||||
|
Util.addItemToInventoryAndCleanTrackedList(this);
|
||||||
|
this.flaggedForPickUp = true;
|
||||||
|
this.thisLocation = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// return true;
|
||||||
|
|
||||||
|
this.flaggedForPickUp = true;
|
||||||
|
if (this is TV)
|
||||||
|
{
|
||||||
|
this.heldObject = new TV(parentSheetIndex, Vector2.Zero);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// this.heldObject = new Decoration(parentSheetIndex, Vector2.Zero);
|
||||||
|
Util.addItemToInventoryAndCleanTrackedList(this);
|
||||||
|
// this.heldObject.performRemoveAction(this.tileLocation, who.currentLocation);
|
||||||
|
// this.heldObject = null;
|
||||||
|
Game1.playSound("coin");
|
||||||
|
this.thisLocation = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (this.heldObject != null && who.addItemToInventoryBool(this.heldObject, false))
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("Why3?");
|
||||||
|
this.heldObject.performRemoveAction(this.tileLocation, who.currentLocation);
|
||||||
|
this.heldObject = null;
|
||||||
|
Util.addItemToInventoryAndCleanTrackedList(this);
|
||||||
|
Game1.playSound("coin");
|
||||||
|
this.thisLocation = null;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void DayUpdate(GameLocation location)
|
||||||
|
{
|
||||||
|
base.DayUpdate(location);
|
||||||
|
this.lightGlowAdded = false;
|
||||||
|
if (!Game1.isDarkOut() || (Game1.newDay && !Game1.isRaining))
|
||||||
|
{
|
||||||
|
this.removeLights(location);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.addLights(location);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void resetOnPlayerEntry(GameLocation environment)
|
||||||
|
{
|
||||||
|
this.removeLights(environment);
|
||||||
|
if (Game1.isDarkOut())
|
||||||
|
{
|
||||||
|
this.addLights(environment);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool performObjectDropInAction(StardewValley.Object dropIn, bool probe, StardewValley.Farmer who)
|
||||||
|
{
|
||||||
|
if ((this.Decoration_type == 11 || this.Decoration_type == 5) && this.heldObject == null && !dropIn.bigCraftable && (!(dropIn is Decoration) || ((dropIn as Decoration).getTilesWide() == 1 && (dropIn as Decoration).getTilesHigh() == 1)))
|
||||||
|
{
|
||||||
|
this.heldObject = (StardewValley.Object)dropIn.getOne();
|
||||||
|
this.heldObject.tileLocation = this.tileLocation;
|
||||||
|
this.heldObject.boundingBox.X = this.boundingBox.X;
|
||||||
|
this.heldObject.boundingBox.Y = this.boundingBox.Y;
|
||||||
|
// Log.AsyncO(getDefaultBoundingBoxForType((dropIn as Decoration).Decoration_type));
|
||||||
|
this.heldObject.performDropDownAction(who);
|
||||||
|
if (!probe)
|
||||||
|
{
|
||||||
|
Game1.playSound("woodyStep");
|
||||||
|
// Log.AsyncC("HUH?");
|
||||||
|
if (who != null)
|
||||||
|
{
|
||||||
|
who.reduceActiveItemByOne();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void addLights(GameLocation environment)
|
||||||
|
{
|
||||||
|
// this.lightSource.lightTexture = Game1.content.Load<Texture2D>("LooseSprites\\Lighting\\lantern");
|
||||||
|
|
||||||
|
if (this.Decoration_type == 7)
|
||||||
|
{
|
||||||
|
if (this.sourceIndexOffset == 0)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
this.sourceRect.X = this.sourceRect.X + this.sourceRect.Width;
|
||||||
|
}
|
||||||
|
this.sourceIndexOffset = 1;
|
||||||
|
if (this.lightSource == null)
|
||||||
|
{
|
||||||
|
Utility.removeLightSource((int)(this.tileLocation.X * 2000f + this.tileLocation.Y));
|
||||||
|
this.lightSource = new LightSource(4, new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y - Game1.tileSize)), 2f, Color.Black, (int)(this.tileLocation.X * 2000f + this.tileLocation.Y));
|
||||||
|
Game1.currentLightSources.Add(this.lightSource);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (this.Decoration_type == 13)
|
||||||
|
{
|
||||||
|
if (this.sourceIndexOffset == 0)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
this.sourceRect.X = this.sourceRect.X + this.sourceRect.Width;
|
||||||
|
}
|
||||||
|
this.sourceIndexOffset = 1;
|
||||||
|
if (this.lightGlowAdded)
|
||||||
|
{
|
||||||
|
environment.lightGlows.Remove(new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y + Game1.tileSize)));
|
||||||
|
this.lightGlowAdded = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void removeLights(GameLocation environment)
|
||||||
|
{
|
||||||
|
if (this.Decoration_type == 7)
|
||||||
|
{
|
||||||
|
if (this.sourceIndexOffset == 1)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
}
|
||||||
|
this.sourceIndexOffset = 0;
|
||||||
|
Utility.removeLightSource((int)(this.tileLocation.X * 2000f + this.tileLocation.Y));
|
||||||
|
this.lightSource = null;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (this.Decoration_type == 13)
|
||||||
|
{
|
||||||
|
if (this.sourceIndexOffset == 1)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
}
|
||||||
|
this.sourceIndexOffset = 0;
|
||||||
|
if (Game1.isRaining)
|
||||||
|
{
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
this.sourceRect.X = this.sourceRect.X + this.sourceRect.Width;
|
||||||
|
this.sourceIndexOffset = 1;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (!this.lightGlowAdded && !environment.lightGlows.Contains(new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y + Game1.tileSize))))
|
||||||
|
{
|
||||||
|
environment.lightGlows.Add(new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y + Game1.tileSize)));
|
||||||
|
}
|
||||||
|
this.lightGlowAdded = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool minutesElapsed(int minutes, GameLocation environment)
|
||||||
|
{
|
||||||
|
if (Game1.isDarkOut())
|
||||||
|
{
|
||||||
|
this.addLights(environment);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.removeLights(environment);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void performRemoveAction(Vector2 tileLocation, GameLocation environment)
|
||||||
|
{
|
||||||
|
this.removeLights(environment);
|
||||||
|
if (this.Decoration_type == 13 && this.lightGlowAdded)
|
||||||
|
{
|
||||||
|
environment.lightGlows.Remove(new Vector2((float)(this.boundingBox.X + Game1.tileSize / 2), (float)(this.boundingBox.Y + Game1.tileSize)));
|
||||||
|
this.lightGlowAdded = false;
|
||||||
|
}
|
||||||
|
Lists.DecorationsToDraw.Remove(this);
|
||||||
|
base.performRemoveAction(tileLocation, environment);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void rotate()
|
||||||
|
{
|
||||||
|
if (this.rotations < 2)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
int num = (this.rotations == 4) ? 1 : 2;
|
||||||
|
this.currentRotation += num;
|
||||||
|
this.currentRotation %= 4;
|
||||||
|
this.flipped = false;
|
||||||
|
Point point = default(Point);
|
||||||
|
int num2 = this.Decoration_type;
|
||||||
|
switch (num2)
|
||||||
|
{
|
||||||
|
case 2:
|
||||||
|
point.Y = 1;
|
||||||
|
point.X = -1;
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
point.X = -1;
|
||||||
|
point.Y = 1;
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
break;
|
||||||
|
case 5:
|
||||||
|
point.Y = 0;
|
||||||
|
point.X = -1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (num2 == 12)
|
||||||
|
{
|
||||||
|
point.X = 0;
|
||||||
|
point.Y = 0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
bool flag = this.Decoration_type == 5 || this.Decoration_type == 12 || this.parentSheetIndex == 724 || this.parentSheetIndex == 727;
|
||||||
|
bool flag2 = this.defaultBoundingBox.Width != this.defaultBoundingBox.Height;
|
||||||
|
if (flag && this.currentRotation == 2)
|
||||||
|
{
|
||||||
|
this.currentRotation = 1;
|
||||||
|
}
|
||||||
|
if (flag2)
|
||||||
|
{
|
||||||
|
int height = this.boundingBox.Height;
|
||||||
|
switch (this.currentRotation)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
case 2:
|
||||||
|
this.boundingBox.Height = this.defaultBoundingBox.Height;
|
||||||
|
this.boundingBox.Width = this.defaultBoundingBox.Width;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
case 3:
|
||||||
|
this.boundingBox.Height = this.boundingBox.Width + point.X * Game1.tileSize;
|
||||||
|
this.boundingBox.Width = height + point.Y * Game1.tileSize;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Point point2 = default(Point);
|
||||||
|
int num3 = this.Decoration_type;
|
||||||
|
if (num3 == 12)
|
||||||
|
{
|
||||||
|
point2.X = 1;
|
||||||
|
point2.Y = -1;
|
||||||
|
}
|
||||||
|
if (flag2)
|
||||||
|
{
|
||||||
|
switch (this.currentRotation)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
this.sourceRect = this.defaultSourceRect;
|
||||||
|
break;
|
||||||
|
case 1:
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + this.defaultSourceRect.Width, this.defaultSourceRect.Y, this.defaultSourceRect.Height - 16 + point.Y * 16 + point2.X * 16, this.defaultSourceRect.Width + 16 + point.X * 16 + point2.Y * 16);
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + this.defaultSourceRect.Width + this.defaultSourceRect.Height - 16 + point.Y * 16 + point2.X * 16, this.defaultSourceRect.Y, this.defaultSourceRect.Width, this.defaultSourceRect.Height);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + this.defaultSourceRect.Width, this.defaultSourceRect.Y, this.defaultSourceRect.Height - 16 + point.Y * 16 + point2.X * 16, this.defaultSourceRect.Width + 16 + point.X * 16 + point2.Y * 16);
|
||||||
|
this.flipped = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.flipped = (this.currentRotation == 3);
|
||||||
|
if (this.rotations == 2)
|
||||||
|
{
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + ((this.currentRotation == 2) ? 1 : 0) * this.defaultSourceRect.Width, this.defaultSourceRect.Y, this.defaultSourceRect.Width, this.defaultSourceRect.Height);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.sourceRect = new Rectangle(this.defaultSourceRect.X + ((this.currentRotation == 3) ? 1 : this.currentRotation) * this.defaultSourceRect.Width, this.defaultSourceRect.Y, this.defaultSourceRect.Width, this.defaultSourceRect.Height);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (flag && this.currentRotation == 1)
|
||||||
|
{
|
||||||
|
this.currentRotation = 2;
|
||||||
|
}
|
||||||
|
this.updateDrawPosition();
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool isGroundFurniture()
|
||||||
|
{
|
||||||
|
return this.Decoration_type != 13 && this.Decoration_type != 6 && this.Decoration_type != 13;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool canBeGivenAsGift()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool canBePlacedHere(GameLocation l, Vector2 tile)
|
||||||
|
{
|
||||||
|
if ((l is FarmHouse))
|
||||||
|
{
|
||||||
|
for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++)
|
||||||
|
{
|
||||||
|
Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize;
|
||||||
|
vector.X += (float)(Game1.tileSize / 2);
|
||||||
|
vector.Y += (float)(Game1.tileSize / 2);
|
||||||
|
foreach (KeyValuePair<Vector2, StardewValley.Object> something in l.objects)
|
||||||
|
{
|
||||||
|
StardewValley.Object obj = something.Value;
|
||||||
|
if ((obj.GetType()).ToString().Contains("Decoration"))
|
||||||
|
{
|
||||||
|
Decoration current = (Decoration)obj;
|
||||||
|
if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1)
|
||||||
|
{
|
||||||
|
bool result = true;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y))
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return base.canBePlacedHere(l, tile);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// Game1.showRedMessage("NOT FARMHOUSE");
|
||||||
|
for (int i = 0; i < this.boundingBox.Width / Game1.tileSize; i++)
|
||||||
|
{
|
||||||
|
for (int j = 0; j < this.boundingBox.Height / Game1.tileSize; j++)
|
||||||
|
{
|
||||||
|
Vector2 vector = tile * (float)Game1.tileSize + new Vector2((float)i, (float)j) * (float)Game1.tileSize;
|
||||||
|
vector.X += (float)(Game1.tileSize / 2);
|
||||||
|
vector.Y += (float)(Game1.tileSize / 2);
|
||||||
|
/*
|
||||||
|
foreach (Decoration current in (l as FarmHouse).Decoration)
|
||||||
|
{
|
||||||
|
if (current.Decoration_type == 11 && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y) && current.heldObject == null && this.getTilesWide() == 1)
|
||||||
|
{
|
||||||
|
bool result = true;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
if ((current.Decoration_type != 12 || this.Decoration_type == 12) && current.getBoundingBox(current.tileLocation).Contains((int)vector.X, (int)vector.Y))
|
||||||
|
{
|
||||||
|
bool result = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return base.canBePlacedHere(l, tile);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void updateDrawPosition()
|
||||||
|
{
|
||||||
|
this.drawPosition = new Vector2((float)this.boundingBox.X, (float)(this.boundingBox.Y - (this.sourceRect.Height * Game1.pixelZoom - this.boundingBox.Height)));
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTilesWide()
|
||||||
|
{
|
||||||
|
return this.boundingBox.Width / Game1.tileSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTilesHigh()
|
||||||
|
{
|
||||||
|
return this.boundingBox.Height / Game1.tileSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool placementAction(GameLocation location, int x, int y, StardewValley.Farmer who = null)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
Point point = new Point(x / Game1.tileSize, y / Game1.tileSize);
|
||||||
|
|
||||||
|
|
||||||
|
this.tileLocation = new Vector2((float)point.X, (float)point.Y);
|
||||||
|
bool flag = false;
|
||||||
|
if (this.Decoration_type == 6 || this.Decoration_type == 13 || this.parentSheetIndex == 1293)
|
||||||
|
{
|
||||||
|
int num = (this.parentSheetIndex == 1293) ? 3 : 0;
|
||||||
|
bool flag2 = false;
|
||||||
|
|
||||||
|
if (!flag2)
|
||||||
|
{
|
||||||
|
Game1.showRedMessage("Must be placed on wall");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
flag = true;
|
||||||
|
}
|
||||||
|
for (int i = point.X; i < point.X + this.getTilesWide(); i++)
|
||||||
|
{
|
||||||
|
for (int j = point.Y; j < point.Y + this.getTilesHigh(); j++)
|
||||||
|
{
|
||||||
|
if (location.doesTileHaveProperty(i, j, "NoFurniture", "Back") != null)
|
||||||
|
{
|
||||||
|
Game1.showRedMessage("Furniture can't be placed here");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (location.getTileIndexAt(i, j, "Buildings") != -1)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.boundingBox = new Rectangle(x / Game1.tileSize * Game1.tileSize, y / Game1.tileSize * Game1.tileSize, this.boundingBox.Width, this.boundingBox.Height);
|
||||||
|
/*
|
||||||
|
foreach (Furniture current2 in (location as DecoratableLocation).furniture)
|
||||||
|
{
|
||||||
|
if (current2.furniture_type == 11 && current2.heldObject == null && current2.getBoundingBox(current2.tileLocation).Intersects(this.boundingBox))
|
||||||
|
{
|
||||||
|
current2.performObjectDropInAction(this, false, (who == null) ? Game1.player : who);
|
||||||
|
bool result = true;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
using (List<StardewValley.Farmer>.Enumerator enumerator3 = location.getFarmers().GetEnumerator())
|
||||||
|
{
|
||||||
|
while (enumerator3.MoveNext())
|
||||||
|
{
|
||||||
|
if (enumerator3.Current.GetBoundingBox().Intersects(this.boundingBox))
|
||||||
|
{
|
||||||
|
Game1.showRedMessage("Can't place on top of a person.");
|
||||||
|
bool result = false;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.updateDrawPosition();
|
||||||
|
Lists.DecorationsToDraw.Add(this);
|
||||||
|
return Util.placementAction(this,location, x, y, who);
|
||||||
|
|
||||||
|
// Game1.showRedMessage("Can only be placed in House");
|
||||||
|
// return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override bool isPlaceable()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Rectangle getBoundingBox(Vector2 tileLocation)
|
||||||
|
{
|
||||||
|
return this.boundingBox;
|
||||||
|
}
|
||||||
|
|
||||||
|
private Rectangle getDefaultSourceRectForType(int tileIndex, int type)
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
int num2;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
num = 1;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 1:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 2:
|
||||||
|
num = 3;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 3:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 4:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 5:
|
||||||
|
num = 5;
|
||||||
|
num2 = 3;
|
||||||
|
goto IL_94;
|
||||||
|
case 6:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 7:
|
||||||
|
num = 1;
|
||||||
|
num2 = 3;
|
||||||
|
goto IL_94;
|
||||||
|
case 8:
|
||||||
|
num = 1;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 10:
|
||||||
|
num = 2;
|
||||||
|
num2 = 3;
|
||||||
|
goto IL_94;
|
||||||
|
case 11:
|
||||||
|
num = 2;
|
||||||
|
num2 = 3;
|
||||||
|
goto IL_94;
|
||||||
|
case 12:
|
||||||
|
num = 3;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 13:
|
||||||
|
num = 1;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
}
|
||||||
|
num = 1;
|
||||||
|
num2 = 2;
|
||||||
|
IL_94:
|
||||||
|
return new Rectangle(tileIndex * 16 % TextureSheet.Width, tileIndex * 16 / TextureSheet.Width * 16, num * 16, num2 * 16);
|
||||||
|
}
|
||||||
|
|
||||||
|
private Rectangle getDefaultBoundingBoxForType(int type)
|
||||||
|
{
|
||||||
|
int num;
|
||||||
|
int num2;
|
||||||
|
switch (type)
|
||||||
|
{
|
||||||
|
case 0:
|
||||||
|
num = 1;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 1:
|
||||||
|
num = 2;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 2:
|
||||||
|
num = 3;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 3:
|
||||||
|
num = 2;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 4:
|
||||||
|
num = 2;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 5:
|
||||||
|
num = 5;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 6:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 7:
|
||||||
|
num = 1;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 8:
|
||||||
|
num = 1;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 10:
|
||||||
|
num = 2;
|
||||||
|
num2 = 1;
|
||||||
|
goto IL_94;
|
||||||
|
case 11:
|
||||||
|
num = 2;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 12:
|
||||||
|
num = 3;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
case 13:
|
||||||
|
num = 1;
|
||||||
|
num2 = 2;
|
||||||
|
goto IL_94;
|
||||||
|
}
|
||||||
|
num = 1;
|
||||||
|
num2 = 1;
|
||||||
|
IL_94:
|
||||||
|
return new Rectangle((int)this.tileLocation.X * Game1.tileSize, (int)this.tileLocation.Y * Game1.tileSize, num * Game1.tileSize, num2 * Game1.tileSize);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int getTypeNumberFromName(string typeName)
|
||||||
|
{
|
||||||
|
string key;
|
||||||
|
switch (key = typeName.ToLower())
|
||||||
|
{
|
||||||
|
case "chair":
|
||||||
|
return 0;
|
||||||
|
case "bench":
|
||||||
|
return 1;
|
||||||
|
case "couch":
|
||||||
|
return 2;
|
||||||
|
case "armchair":
|
||||||
|
return 3;
|
||||||
|
case "dresser":
|
||||||
|
return 4;
|
||||||
|
case "long table":
|
||||||
|
return 5;
|
||||||
|
case "painting":
|
||||||
|
return 6;
|
||||||
|
case "lamp":
|
||||||
|
return 7;
|
||||||
|
case "decor":
|
||||||
|
return 8;
|
||||||
|
case "bookcase":
|
||||||
|
return 10;
|
||||||
|
case "table":
|
||||||
|
return 11;
|
||||||
|
case "rug":
|
||||||
|
return 12;
|
||||||
|
case "window":
|
||||||
|
return 13;
|
||||||
|
}
|
||||||
|
return 9;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int salePrice()
|
||||||
|
{
|
||||||
|
return this.price;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int maximumStackSize()
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int getStack()
|
||||||
|
{
|
||||||
|
return this.stack;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override int addToStack(int amount)
|
||||||
|
{
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private float getScaleSize()
|
||||||
|
{
|
||||||
|
int num = this.sourceRect.Width / 16;
|
||||||
|
int num2 = this.sourceRect.Height / 16;
|
||||||
|
if (num >= 5)
|
||||||
|
{
|
||||||
|
return 0.75f;
|
||||||
|
}
|
||||||
|
if (num2 >= 3)
|
||||||
|
{
|
||||||
|
return 1f;
|
||||||
|
}
|
||||||
|
if (num <= 2)
|
||||||
|
{
|
||||||
|
return 2f;
|
||||||
|
}
|
||||||
|
if (num <= 4)
|
||||||
|
{
|
||||||
|
return 1f;
|
||||||
|
}
|
||||||
|
return 0.1f;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void drawWhenHeld(SpriteBatch spriteBatch, Vector2 objectPosition, StardewValley.Farmer f)
|
||||||
|
{
|
||||||
|
base.drawWhenHeld(spriteBatch, objectPosition, f);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void drawInMenu(SpriteBatch spriteBatch, Vector2 location, float scaleSize, float transparency, float layerDepth, bool drawStackNumber)
|
||||||
|
{
|
||||||
|
spriteBatch.Draw(TextureSheet, location + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize / 2)), new Rectangle?(this.defaultSourceRect), Color.White * transparency, 0f, new Vector2((float)(this.defaultSourceRect.Width / 2), (float)(this.defaultSourceRect.Height / 2)), 1f * this.getScaleSize() * scaleSize, SpriteEffects.None, layerDepth);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override void draw(SpriteBatch spriteBatch, int x, int y, float alpha = 1f)
|
||||||
|
{
|
||||||
|
if (x == -1)
|
||||||
|
{
|
||||||
|
spriteBatch.Draw(TextureSheet, Game1.GlobalToLocal(Game1.viewport, this.drawPosition), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
spriteBatch.Draw(TextureSheet, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(x * Game1.tileSize), (float)(y * Game1.tileSize - (this.sourceRect.Height * Game1.pixelZoom - this.boundingBox.Height)))), new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, (this.Decoration_type == 12) ? 0f : ((float)(this.boundingBox.Bottom - 8) / 10000f));
|
||||||
|
}
|
||||||
|
if (this.heldObject != null)
|
||||||
|
{
|
||||||
|
if (this.heldObject is Decoration)
|
||||||
|
{
|
||||||
|
(this.heldObject as Decoration).drawAtNonTileSpot(spriteBatch, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(this.boundingBox.Center.X - Game1.tileSize / 2), (float)(this.boundingBox.Center.Y - (this.heldObject as Decoration).sourceRect.Height * Game1.pixelZoom - Game1.tileSize / 4))), (float)(this.boundingBox.Bottom - 7) / 10000f, alpha);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
spriteBatch.Draw(Game1.shadowTexture, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(this.boundingBox.Center.X - Game1.tileSize / 2), (float)(this.boundingBox.Center.Y - Game1.tileSize * 4 / 3))) + new Vector2((float)(Game1.tileSize / 2), (float)(Game1.tileSize * 5 / 6)), new Rectangle?(Game1.shadowTexture.Bounds), Color.White * alpha, 0f, new Vector2((float)Game1.shadowTexture.Bounds.Center.X, (float)Game1.shadowTexture.Bounds.Center.Y), 4f, SpriteEffects.None, (float)this.boundingBox.Bottom / 10000f);
|
||||||
|
spriteBatch.Draw(Game1.objectSpriteSheet, Game1.GlobalToLocal(Game1.viewport, new Vector2((float)(this.boundingBox.Center.X - Game1.tileSize / 2), (float)(this.boundingBox.Center.Y - Game1.tileSize * 4 / 3))), new Rectangle?(Game1.currentLocation.getSourceRectForObject(this.heldObject.ParentSheetIndex)), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, SpriteEffects.None, (float)(this.boundingBox.Bottom + 1) / 10000f);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public void drawAtNonTileSpot(SpriteBatch spriteBatch, Vector2 location, float layerDepth, float alpha = 1f)
|
||||||
|
{
|
||||||
|
spriteBatch.Draw(TextureSheet, location, new Rectangle?(this.sourceRect), Color.White * alpha, 0f, Vector2.Zero, (float)Game1.pixelZoom, this.flipped ? SpriteEffects.FlipHorizontally : SpriteEffects.None, layerDepth);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Item getOne()
|
||||||
|
{
|
||||||
|
Decoration Decoration = new Decoration(this.parentSheetIndex, this.tileLocation);
|
||||||
|
|
||||||
|
/*
|
||||||
|
drawPosition = this.drawPosition;
|
||||||
|
defaultBoundingBox = this.defaultBoundingBox;
|
||||||
|
boundingBox = this.boundingBox;
|
||||||
|
currentRotation = this.currentRotation - 1;
|
||||||
|
rotations = this.rotations;
|
||||||
|
rotate();
|
||||||
|
*/
|
||||||
|
return Decoration;
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string getCategoryName()
|
||||||
|
{
|
||||||
|
return "Decoration";
|
||||||
|
// return base.getCategoryName();
|
||||||
|
}
|
||||||
|
|
||||||
|
public override Color getCategoryColor()
|
||||||
|
{
|
||||||
|
return Util.invertColor(LightColors.Purple);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,218 @@
|
||||||
|
|
||||||
|
xnbData:
|
||||||
|
target: "w"
|
||||||
|
compressed: true
|
||||||
|
hiDef: true
|
||||||
|
readerData:
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.DictionaryReader`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.Int32Reader"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.StringReader"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
|
||||||
|
numSharedResources: 0
|
||||||
|
|
||||||
|
content: #!Dictionary<Int32,String>
|
||||||
|
0: "Blank Object/chair/-1/-1/1/1" #!String
|
||||||
|
3: "Walnut Chair/chair/-1/-1/4/350" #!String
|
||||||
|
6: "Birch Chair/chair/-1/-1/4/350" #!String
|
||||||
|
9: "Mahogany Chair/chair/-1/-1/4/1000" #!String
|
||||||
|
12: "Red Diner Chair/chair/-1/-1/4/750" #!String
|
||||||
|
15: "Blue Diner Chair/chair/-1/-1/4/750" #!String
|
||||||
|
18: "Country Chair/chair/-1/-1/4/750" #!String
|
||||||
|
21: "Breakfast Chair/chair/-1/-1/4/750" #!String
|
||||||
|
24: "Pink Office Chair/chair/-1/-1/4/500" #!String
|
||||||
|
27: "Purple Office Chair/chair/-1/-1/4/500" #!String
|
||||||
|
30: "Green Office Stool/chair/-1/-1/4/350" #!String
|
||||||
|
31: "Orange Office Stool/chair/-1/-1/4/350" #!String
|
||||||
|
64: "Dark Throne/chair/-1/-1/4/2000" #!String
|
||||||
|
67: "Dining Chair/chair/-1/-1/4/1200" #!String
|
||||||
|
70: "Dining Chair/chair/-1/-1/4/1200" #!String
|
||||||
|
73: "Green Plush Seat/chair/-1/-1/4/750" #!String
|
||||||
|
76: "Pink Plush Seat/chair/-1/-1/4/750" #!String
|
||||||
|
79: "Winter Chair/chair/-1/-1/4/750" #!String
|
||||||
|
82: "Groovy Chair/chair/-1/-1/4/750" #!String
|
||||||
|
85: "Cute Chair/chair/-1/-1/4/1200" #!String
|
||||||
|
88: "Stump Seat/chair/-1/-1/4/2000" #!String
|
||||||
|
91: "Metal Chair/chair/-1/-1/4/800" #!String
|
||||||
|
94: "Green Stool/chair/-1/-1/4/350" #!String
|
||||||
|
95: "Blue Stool/chair/-1/-1/4/350" #!String
|
||||||
|
128: "King Chair/chair/-1/-1/4/3000" #!String
|
||||||
|
131: "Crystal Chair/chair/-1/-1/4/3000" #!String
|
||||||
|
192: "Oak Bench/bench/-1/-1/4/750" #!String
|
||||||
|
197: "Walnut Bench/bench/-1/-1/4/750" #!String
|
||||||
|
202: "Birch Bench/bench/-1/-1/4/750" #!String
|
||||||
|
207: "Mahogany Bench/bench/-1/-1/4/2000" #!String
|
||||||
|
212: "Modern Bench/bench/-1/-1/4/2000" #!String
|
||||||
|
288: "Blue Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
294: "Red Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
300: "Green Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
306: "Yellow Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
312: "Brown Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
416: "Blue Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
424: "Red Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
432: "Green Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
440: "Yellow Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
512: "Brown Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
520: "Dark Couch/couch/-1/-1/4/2500" #!String
|
||||||
|
528: "Wizard Couch/couch/-1/-1/4/4000" #!String
|
||||||
|
536: "Woodsy Couch/couch/-1/-1/4/3000" #!String
|
||||||
|
704: "Oak Dresser/dresser/-1/-1/4/1000" #!String
|
||||||
|
709: "Walnut Dresser/dresser/-1/-1/4/1000" #!String
|
||||||
|
714: "Birch Dresser/dresser/-1/-1/4/1000" #!String
|
||||||
|
719: "Mahogany Dresser/dresser/-1/-1/4/2000" #!String
|
||||||
|
724: "Coffee Table/table/2 2/2 1/2/1250" #!String
|
||||||
|
727: "Stone Slab/table/2 2/2 1/2/1000" #!String
|
||||||
|
800: "Winter Dining Table/long table/-1/-1/2/3500" #!String
|
||||||
|
807: "Festive Dining Table/long table/-1/-1/2/3500" #!String
|
||||||
|
814: "Mahogany Dining Table/long table/-1/-1/2/3000" #!String
|
||||||
|
821: "Modern Dining Table/long table/-1/-1/2/2700" #!String
|
||||||
|
1120: "Oak Table/table/2 3/2 2 0 1/1/750" #!String
|
||||||
|
1122: "Walnut Table/table/-1/-1/1/750" #!String
|
||||||
|
1124: "Birch Table/table/-1/-1/1/750" #!String
|
||||||
|
1126: "Mahogany Table/table/-1/-1/1/1500" #!String
|
||||||
|
1128: "Sun Table/table/-1/-1/1/2500" #!String
|
||||||
|
1130: "Moon Table/table/-1/-1/1/2500" #!String
|
||||||
|
1132: "Modern Table/table/-1/-1/1/1250" #!String
|
||||||
|
1134: "Pub Table/table/-1/-1/1/800" #!String
|
||||||
|
1136: "Luxury Table/table/-1/-1/1/2000" #!String
|
||||||
|
1138: "Diviner Table/table/-1/-1/1/2250" #!String
|
||||||
|
1140: "Neolithic Table/table/-1/-1/1/1800" #!String
|
||||||
|
1142: "Puzzle Table/table/-1/-1/1/1500" #!String
|
||||||
|
1144: "Winter Table/table/-1/-1/1/1250" #!String
|
||||||
|
1146: "Candy Table/table/-1/-1/1/1000" #!String
|
||||||
|
1148: "Luau Table/table/-1/-1/1/1000" #!String
|
||||||
|
1150: "Dark Table/table/-1/-1/1/2000" #!String
|
||||||
|
1216: "Oak Tea-Table/table/2 2/-1/1/750" #!String
|
||||||
|
1218: "Walnut Tea-Table/table/2 2/-1/1/750" #!String
|
||||||
|
1220: "Birch Tea-Table/table/2 2/-1/1/750" #!String
|
||||||
|
1222: "Mahogany Tea-Table/table/2 2/-1/1/1500" #!String
|
||||||
|
1224: "Modern Tea-Table/table/2 2/-1/1/1000" #!String
|
||||||
|
1226: "Furniture Catalogue/table/2 2/-1/1/200000" #!String
|
||||||
|
1280: "China Cabinet/other/3 3/3 1/1/6000" #!String
|
||||||
|
1283: "Artist Bookcase/bookcase/-1/-1/1/1200" #!String
|
||||||
|
1285: "Luxury Bookcase/bookcase/-1/-1/1/2000" #!String
|
||||||
|
1287: "Modern Bookcase/bookcase/-1/-1/1/1600" #!String
|
||||||
|
1289: "Dark Bookcase/bookcase/-1/-1/1/2000" #!String
|
||||||
|
1291: "Ceramic Pillar/decor/1 3/1 1/1/250" #!String
|
||||||
|
1292: "Gold Pillar/decor/1 3/1 1/1/450" #!String
|
||||||
|
1293: "Industrial Pipe/decor/1 3/1 1/1/300" #!String
|
||||||
|
1294: "Indoor Palm/decor/1 3/1 1/1/600" #!String
|
||||||
|
1295: "Totem Pole/decor/1 3/1 1/1/750" #!String
|
||||||
|
1296: "Manicured Pine/decor/1 3/1 1/1/500" #!String
|
||||||
|
1297: "Topiary Tree/decor/1 3/1 1/1/500" #!String
|
||||||
|
1298: "Standing Geode/decor/1 2/1 1/1/500" #!String
|
||||||
|
1299: "Obsidian Vase/decor/1 2/1 1/1/500" #!String
|
||||||
|
1300: "Singing Stone/decor/1 2/1 1/1/500" #!String
|
||||||
|
1301: "Sloth Skeleton L/decor/1 2/1 1/1/500" #!String
|
||||||
|
1302: "Sloth Skeleton M/decor/1 2/1 1/1/500" #!String
|
||||||
|
1303: "Sloth Skeleton R/decor/1 2/1 1/1/500" #!String
|
||||||
|
1304: "Skeleton/decor/1 2/1 1/1/500" #!String
|
||||||
|
1305: "Chicken Statue/decor/1 2/1 1/1/500" #!String
|
||||||
|
1306: "Leah's Sculpture/decor/1 2/1 1/1/500" #!String
|
||||||
|
1307: "Dried Sunflowers/decor/1 2/1 1/1/500" #!String
|
||||||
|
1308: "Catalogue/decor/1 2/1 1/1/30000" #!String
|
||||||
|
1362: "Small Plant/decor/1 1/1 1/1/250" #!String
|
||||||
|
1363: "Table Plant/decor/1 1/1 1/1/250" #!String
|
||||||
|
1364: "Decorative Bowl/decor/1 1/1 1/1/250" #!String
|
||||||
|
1365: "Futan Bear/decor/1 1/1 1/1/1500" #!String
|
||||||
|
1366: "Globe/decor/1 1/1 1/1/750" #!String
|
||||||
|
1367: "Model Ship/decor/1 1/1 1/1/750" #!String
|
||||||
|
1368: "Small Crystal/decor/1 1/1 1/1/750" #!String
|
||||||
|
1369: "Decorative Lantern/decor/1 1/1 1/1/500" #!String
|
||||||
|
1376: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1377: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1378: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1379: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1380: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1381: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1382: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1383: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1384: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1385: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1386: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1387: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1388: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1389: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1390: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1391: "Oak End Table/table/1 2/1 1/2/500" #!String
|
||||||
|
1393: "Walnut End Table/table/1 2/1 1/2/500" #!String
|
||||||
|
1395: "Birch End Table/table/1 2/1 1/2/500" #!String
|
||||||
|
1397: "Mahogany End Table/table/1 2/1 1/2/1000" #!String
|
||||||
|
1399: "Modern End Table/table/1 2/1 1/1/800" #!String
|
||||||
|
1400: "Grandmother End Table/table/1 2/1 1/1/1000" #!String
|
||||||
|
1401: "Winter End Table/table/1 2/1 1/1/800" #!String
|
||||||
|
1402: "Calendar/painting/1 2/1 2/1/2000" #!String
|
||||||
|
1440: "Tree of the Winter Star/decor/3 5/3 2/1/5000" #!String
|
||||||
|
1443: "Country Lamp/lamp/-1/-1/1/500" #!String
|
||||||
|
1445: "Box Lamp/lamp/-1/-1/1/750" #!String
|
||||||
|
1447: "Modern Lamp/lamp/-1/-1/1/750" #!String
|
||||||
|
1449: "Classic Lamp/lamp/-1/-1/1/1000" #!String
|
||||||
|
1451: "Red Rug/rug/-1/-1/2/1000" #!String
|
||||||
|
1456: "Patchwork Rug/rug/-1/-1/2/800" #!String
|
||||||
|
1461: "Dark Rug/rug/-1/-1/2/2000" #!String
|
||||||
|
1466: "Budget TV/decor/2 3/2 2/1/750" #!String
|
||||||
|
1468: "Plasma TV/decor/3 3/3 1/1/4500" #!String
|
||||||
|
1539: "'The Muzzamaroo'/painting/-1/-1/1/1000" #!String
|
||||||
|
1541: "'A Night On Eco-Hill'/painting/-1/-1/1/1000" #!String
|
||||||
|
1543: "'Pathways'/painting/-1/-1/1/750" #!String
|
||||||
|
1545: "'Burnt Offering'/painting/-1/-1/1/1000" #!String
|
||||||
|
1547: "'Queen of the Gem Sea'/painting/3 2/3 2/1/1200" #!String
|
||||||
|
1550: "'Vanilla Villa'/painting/-1/-1/1/500" #!String
|
||||||
|
1552: "'Primal Motion'/painting/-1/-1/1/1500" #!String
|
||||||
|
1554: "'Jade Hills'/painting/3 2/3 2/1/1750" #!String
|
||||||
|
1557: "'Sun #44'/painting/-1/-1/1/800" #!String
|
||||||
|
1559: "Wallflower Pal/painting/-1/-1/1/500" #!String
|
||||||
|
1561: "'Spires'/painting/-1/-1/1/800" #!String
|
||||||
|
1563: "'Highway 89'/painting/-1/-1/1/800" #!String
|
||||||
|
1565: "Calico Falls/painting/-1/-1/1/750" #!String
|
||||||
|
1567: "Needlepoint Flower/painting/1 2/1 2/1/500" #!String
|
||||||
|
1600: "Skull Poster/painting/1 2/1 2/1/500" #!String
|
||||||
|
1601: "'Sun #45'/painting/1 2/1 2/1/350" #!String
|
||||||
|
1602: "'Little Tree'/painting/1 2/1 2/1/350" #!String
|
||||||
|
1603: "'Blueberries'/painting/1 2/1 2/1/250" #!String
|
||||||
|
1604: "'Blue City'/painting/1 2/1 2/1/250" #!String
|
||||||
|
1605: "Little Photos/painting/1 2/1 2/1/250" #!String
|
||||||
|
1606: "'Dancing Grass'/painting/1 2/1 2/1/400" #!String
|
||||||
|
1607: "'VGA Paradise'/painting/2 2/2 2/1/1200" #!String
|
||||||
|
1609: "J. Cola Light/painting/3 2/3 2/1/1000" #!String
|
||||||
|
1612: "'Kitemaster '95'/painting/-1/-1/1/600" #!String
|
||||||
|
1614: "Basic Window/window/-1/-1/1/300" #!String
|
||||||
|
1616: "Small Window/window/-1/-1/1/300" #!String
|
||||||
|
1618: "Red Cottage Rug/rug/-1/-1/2/750" #!String
|
||||||
|
1623: "Green Cottage Rug/rug/-1/-1/2/750" #!String
|
||||||
|
1628: "Monster Rug/rug/2 2/2 2/1/1250" #!String
|
||||||
|
1630: "Boarded Window/painting/1 2/1 2/1/400" #!String
|
||||||
|
1664: "Mystic Rug/rug/-1/-1/2/1250" #!String
|
||||||
|
1669: "Lg. Futan Bear/decor/2 2/2 1/1/4000" #!String
|
||||||
|
1671: "Bear Statue/decor/2 4/2 1/1/4000" #!String
|
||||||
|
1673: "Porthole/window/-1/-1/1/700" #!String
|
||||||
|
1675: "Anchor/painting/1 2/1 2/1/750" #!String
|
||||||
|
1676: "World Map/painting/-1/-1/1/500" #!String
|
||||||
|
1678: "Ornate Window/window/-1/-1/1/900" #!String
|
||||||
|
1680: "Floor TV/decor/2 2/2 1/1/700" #!String
|
||||||
|
1682: "Carved Window/window/-1/-1/1/900" #!String
|
||||||
|
1733: "Junimo Plush/decor/2 2/2 1/1/4000" #!String
|
||||||
|
1737: "Nautical Rug/rug/-1/-1/2/1250" #!String
|
||||||
|
1742: "Burlap Rug/rug/2 2/2 2/1/350" #!String
|
||||||
|
1744: "Tree Column/decor/1 3/1 1/1/1000" #!String
|
||||||
|
1745: "L. Light String/painting/2 1/2 1/1/400" #!String
|
||||||
|
1747: "S. Pine/decor/1 2/1 1/1/500" #!String
|
||||||
|
1748: "Bonsai Tree/decor/1 2/1 1/1/800" #!String
|
||||||
|
1749: "Metal Window/window/-1/-1/1/800" #!String
|
||||||
|
1751: "Candle Lamp/lamp/-1/-1/1/1000" #!String
|
||||||
|
1753: "Miner's Crest/painting/2 2/2 2/1/1000" #!String
|
||||||
|
1755: "Bamboo Mat/rug/2 1/2 1/2/250" #!String
|
||||||
|
1758: "Ornate Lamp/lamp/-1/-1/1/1050" #!String
|
||||||
|
1777: "Woodcut Rug/rug/2 2/2 2/1/800" #!String
|
||||||
|
1811: "Hanging Shield/painting/1 1/1 1/1/500" #!String
|
||||||
|
1812: "Monster Danglers/painting/2 1/2 1/1/1000" #!String
|
||||||
|
1814: "Ceiling Flags/painting/1 1/1 1/1/50" #!String
|
||||||
|
|
|
@ -0,0 +1,218 @@
|
||||||
|
|
||||||
|
xnbData:
|
||||||
|
target: "w"
|
||||||
|
compressed: true
|
||||||
|
hiDef: true
|
||||||
|
readerData:
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.DictionaryReader`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.Int32Reader"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.StringReader"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
|
||||||
|
numSharedResources: 0
|
||||||
|
|
||||||
|
content: #!Dictionary<Int32,String>
|
||||||
|
0: "Oak Chair/chair/-1/-1/4/350" #!String
|
||||||
|
3: "Walnut Chair/chair/-1/-1/4/350" #!String
|
||||||
|
6: "Birch Chair/chair/-1/-1/4/350" #!String
|
||||||
|
9: "Mahogany Chair/chair/-1/-1/4/1000" #!String
|
||||||
|
12: "Red Diner Chair/chair/-1/-1/4/750" #!String
|
||||||
|
15: "Blue Diner Chair/chair/-1/-1/4/750" #!String
|
||||||
|
18: "Country Chair/chair/-1/-1/4/750" #!String
|
||||||
|
21: "Breakfast Chair/chair/-1/-1/4/750" #!String
|
||||||
|
24: "Pink Office Chair/chair/-1/-1/4/500" #!String
|
||||||
|
27: "Purple Office Chair/chair/-1/-1/4/500" #!String
|
||||||
|
30: "Green Office Stool/chair/-1/-1/4/350" #!String
|
||||||
|
31: "Orange Office Stool/chair/-1/-1/4/350" #!String
|
||||||
|
64: "Dark Throne/chair/-1/-1/4/2000" #!String
|
||||||
|
67: "Dining Chair/chair/-1/-1/4/1200" #!String
|
||||||
|
70: "Dining Chair/chair/-1/-1/4/1200" #!String
|
||||||
|
73: "Green Plush Seat/chair/-1/-1/4/750" #!String
|
||||||
|
76: "Pink Plush Seat/chair/-1/-1/4/750" #!String
|
||||||
|
79: "Winter Chair/chair/-1/-1/4/750" #!String
|
||||||
|
82: "Groovy Chair/chair/-1/-1/4/750" #!String
|
||||||
|
85: "Cute Chair/chair/-1/-1/4/1200" #!String
|
||||||
|
88: "Stump Seat/chair/-1/-1/4/2000" #!String
|
||||||
|
91: "Metal Chair/chair/-1/-1/4/800" #!String
|
||||||
|
94: "Green Stool/chair/-1/-1/4/350" #!String
|
||||||
|
95: "Blue Stool/chair/-1/-1/4/350" #!String
|
||||||
|
128: "King Chair/chair/-1/-1/4/3000" #!String
|
||||||
|
131: "Crystal Chair/chair/-1/-1/4/3000" #!String
|
||||||
|
192: "Oak Bench/bench/-1/-1/4/750" #!String
|
||||||
|
197: "Walnut Bench/bench/-1/-1/4/750" #!String
|
||||||
|
202: "Birch Bench/bench/-1/-1/4/750" #!String
|
||||||
|
207: "Mahogany Bench/bench/-1/-1/4/2000" #!String
|
||||||
|
212: "Modern Bench/bench/-1/-1/4/2000" #!String
|
||||||
|
288: "Blue Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
294: "Red Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
300: "Green Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
306: "Yellow Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
312: "Brown Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
416: "Blue Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
424: "Red Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
432: "Green Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
440: "Yellow Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
512: "Brown Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
520: "Dark Couch/couch/-1/-1/4/2500" #!String
|
||||||
|
528: "Wizard Couch/couch/-1/-1/4/4000" #!String
|
||||||
|
536: "Woodsy Couch/couch/-1/-1/4/3000" #!String
|
||||||
|
704: "Oak Dresser/dresser/-1/-1/4/1000" #!String
|
||||||
|
709: "Walnut Dresser/dresser/-1/-1/4/1000" #!String
|
||||||
|
714: "Birch Dresser/dresser/-1/-1/4/1000" #!String
|
||||||
|
719: "Mahogany Dresser/dresser/-1/-1/4/2000" #!String
|
||||||
|
724: "Coffee Table/table/2 2/2 1/2/1250" #!String
|
||||||
|
727: "Stone Slab/table/2 2/2 1/2/1000" #!String
|
||||||
|
800: "Winter Dining Table/long table/-1/-1/2/3500" #!String
|
||||||
|
807: "Festive Dining Table/long table/-1/-1/2/3500" #!String
|
||||||
|
814: "Mahogany Dining Table/long table/-1/-1/2/3000" #!String
|
||||||
|
821: "Modern Dining Table/long table/-1/-1/2/2700" #!String
|
||||||
|
1120: "Oak Table/table/2/2/1/750" #!String
|
||||||
|
1122: "Walnut Table/table/-1/-1/1/750" #!String
|
||||||
|
1124: "Birch Table/table/-1/-1/1/750" #!String
|
||||||
|
1126: "Mahogany Table/table/-1/-1/1/1500" #!String
|
||||||
|
1128: "Sun Table/table/-1/-1/1/2500" #!String
|
||||||
|
1130: "Moon Table/table/-1/-1/1/2500" #!String
|
||||||
|
1132: "Modern Table/table/-1/-1/1/1250" #!String
|
||||||
|
1134: "Pub Table/table/-1/-1/1/800" #!String
|
||||||
|
1136: "Luxury Table/table/-1/-1/1/2000" #!String
|
||||||
|
1138: "Diviner Table/table/-1/-1/1/2250" #!String
|
||||||
|
1140: "Neolithic Table/table/-1/-1/1/1800" #!String
|
||||||
|
1142: "Puzzle Table/table/-1/-1/1/1500" #!String
|
||||||
|
1144: "Winter Table/table/-1/-1/1/1250" #!String
|
||||||
|
1146: "Candy Table/table/-1/-1/1/1000" #!String
|
||||||
|
1148: "Luau Table/table/-1/-1/1/1000" #!String
|
||||||
|
1150: "Dark Table/table/-1/-1/1/2000" #!String
|
||||||
|
1216: "Oak Tea-Table/table/2 2/-1/1/750" #!String
|
||||||
|
1218: "Walnut Tea-Table/table/2 2/-1/1/750" #!String
|
||||||
|
1220: "Birch Tea-Table/table/2 2/-1/1/750" #!String
|
||||||
|
1222: "Mahogany Tea-Table/table/2 2/-1/1/1500" #!String
|
||||||
|
1224: "Modern Tea-Table/table/2 2/-1/1/1000" #!String
|
||||||
|
1226: "Furniture Catalogue/table/2 2/-1/1/200000" #!String
|
||||||
|
1280: "China Cabinet/other/3 3/3 1/1/6000" #!String
|
||||||
|
1283: "Artist Bookcase/bookcase/-1/-1/1/1200" #!String
|
||||||
|
1285: "Luxury Bookcase/bookcase/-1/-1/1/2000" #!String
|
||||||
|
1287: "Modern Bookcase/bookcase/-1/-1/1/1600" #!String
|
||||||
|
1289: "Dark Bookcase/bookcase/-1/-1/1/2000" #!String
|
||||||
|
1291: "Ceramic Pillar/decor/1 3/1 1/1/250" #!String
|
||||||
|
1292: "Gold Pillar/decor/1 3/1 1/1/450" #!String
|
||||||
|
1293: "Industrial Pipe/decor/1 3/1 1/1/300" #!String
|
||||||
|
1294: "Indoor Palm/decor/1 3/1 1/1/600" #!String
|
||||||
|
1295: "Totem Pole/decor/1 3/1 1/1/750" #!String
|
||||||
|
1296: "Manicured Pine/decor/1 3/1 1/1/500" #!String
|
||||||
|
1297: "Topiary Tree/decor/1 3/1 1/1/500" #!String
|
||||||
|
1298: "Standing Geode/decor/1 2/1 1/1/500" #!String
|
||||||
|
1299: "Obsidian Vase/decor/1 2/1 1/1/500" #!String
|
||||||
|
1300: "Singing Stone/decor/1 2/1 1/1/500" #!String
|
||||||
|
1301: "Sloth Skeleton L/decor/1 2/1 1/1/500" #!String
|
||||||
|
1302: "Sloth Skeleton M/decor/1 2/1 1/1/500" #!String
|
||||||
|
1303: "Sloth Skeleton R/decor/1 2/1 1/1/500" #!String
|
||||||
|
1304: "Skeleton/decor/1 2/1 1/1/500" #!String
|
||||||
|
1305: "Chicken Statue/decor/1 2/1 1/1/500" #!String
|
||||||
|
1306: "Leah's Sculpture/decor/1 2/1 1/1/500" #!String
|
||||||
|
1307: "Dried Sunflowers/decor/1 2/1 1/1/500" #!String
|
||||||
|
1308: "Catalogue/decor/1 2/1 1/1/30000" #!String
|
||||||
|
1362: "Small Plant/decor/1 1/1 1/1/250" #!String
|
||||||
|
1363: "Table Plant/decor/1 1/1 1/1/250" #!String
|
||||||
|
1364: "Decorative Bowl/decor/1 1/1 1/1/250" #!String
|
||||||
|
1365: "Futan Bear/decor/1 1/1 1/1/1500" #!String
|
||||||
|
1366: "Globe/decor/1 1/1 1/1/750" #!String
|
||||||
|
1367: "Model Ship/decor/1 1/1 1/1/750" #!String
|
||||||
|
1368: "Small Crystal/decor/1 1/1 1/1/750" #!String
|
||||||
|
1369: "Decorative Lantern/decor/1 1/1 1/1/500" #!String
|
||||||
|
1376: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1377: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1378: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1379: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1380: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1381: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1382: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1383: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1384: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1385: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1386: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1387: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1388: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1389: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1390: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1391: "Oak End Table/table/1 2/1 1/2/500" #!String
|
||||||
|
1393: "Walnut End Table/table/1 2/1 1/2/500" #!String
|
||||||
|
1395: "Birch End Table/table/1 2/1 1/2/500" #!String
|
||||||
|
1397: "Mahogany End Table/table/1 2/1 1/2/1000" #!String
|
||||||
|
1399: "Modern End Table/table/1 2/1 1/1/800" #!String
|
||||||
|
1400: "Grandmother End Table/table/1 2/1 1/1/1000" #!String
|
||||||
|
1401: "Winter End Table/table/1 2/1 1/1/800" #!String
|
||||||
|
1402: "Calendar/painting/1 2/1 2/1/2000" #!String
|
||||||
|
1440: "Tree of the Winter Star/decor/3 5/3 2/1/5000" #!String
|
||||||
|
1443: "Country Lamp/lamp/-1/-1/1/500" #!String
|
||||||
|
1445: "Box Lamp/lamp/-1/-1/1/750" #!String
|
||||||
|
1447: "Modern Lamp/lamp/-1/-1/1/750" #!String
|
||||||
|
1449: "Classic Lamp/lamp/-1/-1/1/1000" #!String
|
||||||
|
1451: "Red Rug/rug/-1/-1/2/1000" #!String
|
||||||
|
1456: "Patchwork Rug/rug/-1/-1/2/800" #!String
|
||||||
|
1461: "Dark Rug/rug/-1/-1/2/2000" #!String
|
||||||
|
1466: "Budget TV/decor/2 3/2 2/1/750" #!String
|
||||||
|
1468: "Plasma TV/decor/3 3/3 1/1/4500" #!String
|
||||||
|
1539: "'The Muzzamaroo'/painting/-1/-1/1/1000" #!String
|
||||||
|
1541: "'A Night On Eco-Hill'/painting/-1/-1/1/1000" #!String
|
||||||
|
1543: "'Pathways'/painting/-1/-1/1/750" #!String
|
||||||
|
1545: "'Burnt Offering'/painting/-1/-1/1/1000" #!String
|
||||||
|
1547: "'Queen of the Gem Sea'/painting/3 2/3 2/1/1200" #!String
|
||||||
|
1550: "'Vanilla Villa'/painting/-1/-1/1/500" #!String
|
||||||
|
1552: "'Primal Motion'/painting/-1/-1/1/1500" #!String
|
||||||
|
1554: "'Jade Hills'/painting/3 2/3 2/1/1750" #!String
|
||||||
|
1557: "'Sun #44'/painting/-1/-1/1/800" #!String
|
||||||
|
1559: "Wallflower Pal/painting/-1/-1/1/500" #!String
|
||||||
|
1561: "'Spires'/painting/-1/-1/1/800" #!String
|
||||||
|
1563: "'Highway 89'/painting/-1/-1/1/800" #!String
|
||||||
|
1565: "Calico Falls/painting/-1/-1/1/750" #!String
|
||||||
|
1567: "Needlepoint Flower/painting/1 2/1 2/1/500" #!String
|
||||||
|
1600: "Skull Poster/painting/1 2/1 2/1/500" #!String
|
||||||
|
1601: "'Sun #45'/painting/1 2/1 2/1/350" #!String
|
||||||
|
1602: "'Little Tree'/painting/1 2/1 2/1/350" #!String
|
||||||
|
1603: "'Blueberries'/painting/1 2/1 2/1/250" #!String
|
||||||
|
1604: "'Blue City'/painting/1 2/1 2/1/250" #!String
|
||||||
|
1605: "Little Photos/painting/1 2/1 2/1/250" #!String
|
||||||
|
1606: "'Dancing Grass'/painting/1 2/1 2/1/400" #!String
|
||||||
|
1607: "'VGA Paradise'/painting/2 2/2 2/1/1200" #!String
|
||||||
|
1609: "J. Cola Light/painting/3 2/3 2/1/1000" #!String
|
||||||
|
1612: "'Kitemaster '95'/painting/-1/-1/1/600" #!String
|
||||||
|
1614: "Basic Window/window/-1/-1/1/300" #!String
|
||||||
|
1616: "Small Window/window/-1/-1/1/300" #!String
|
||||||
|
1618: "Red Cottage Rug/rug/-1/-1/2/750" #!String
|
||||||
|
1623: "Green Cottage Rug/rug/-1/-1/2/750" #!String
|
||||||
|
1628: "Monster Rug/rug/2 2/2 2/1/1250" #!String
|
||||||
|
1630: "Boarded Window/painting/1 2/1 2/1/400" #!String
|
||||||
|
1664: "Mystic Rug/rug/-1/-1/2/1250" #!String
|
||||||
|
1669: "Lg. Futan Bear/decor/2 2/2 1/1/4000" #!String
|
||||||
|
1671: "Bear Statue/decor/2 4/2 1/1/4000" #!String
|
||||||
|
1673: "Porthole/window/-1/-1/1/700" #!String
|
||||||
|
1675: "Anchor/painting/1 2/1 2/1/750" #!String
|
||||||
|
1676: "World Map/painting/-1/-1/1/500" #!String
|
||||||
|
1678: "Ornate Window/window/-1/-1/1/900" #!String
|
||||||
|
1680: "Floor TV/decor/2 2/2 1/1/700" #!String
|
||||||
|
1682: "Carved Window/window/-1/-1/1/900" #!String
|
||||||
|
1733: "Junimo Plush/decor/2 2/2 1/1/4000" #!String
|
||||||
|
1737: "Nautical Rug/rug/-1/-1/2/1250" #!String
|
||||||
|
1742: "Burlap Rug/rug/2 2/2 2/1/350" #!String
|
||||||
|
1744: "Tree Column/decor/1 3/1 1/1/1000" #!String
|
||||||
|
1745: "L. Light String/painting/2 1/2 1/1/400" #!String
|
||||||
|
1747: "S. Pine/decor/1 2/1 1/1/500" #!String
|
||||||
|
1748: "Bonsai Tree/decor/1 2/1 1/1/800" #!String
|
||||||
|
1749: "Metal Window/window/-1/-1/1/800" #!String
|
||||||
|
1751: "Candle Lamp/lamp/-1/-1/1/1000" #!String
|
||||||
|
1753: "Miner's Crest/painting/2 2/2 2/1/1000" #!String
|
||||||
|
1755: "Bamboo Mat/rug/2 1/2 1/2/250" #!String
|
||||||
|
1758: "Ornate Lamp/lamp/-1/-1/1/1050" #!String
|
||||||
|
1777: "Woodcut Rug/rug/2 2/2 2/1/800" #!String
|
||||||
|
1811: "Hanging Shield/painting/1 1/1 1/1/500" #!String
|
||||||
|
1812: "Monster Danglers/painting/2 1/2 1/1/1000" #!String
|
||||||
|
1814: "Ceiling Flags/painting/1 1/1 1/1/50" #!String
|
||||||
|
|
|
@ -0,0 +1,218 @@
|
||||||
|
|
||||||
|
xnbData:
|
||||||
|
target: "w"
|
||||||
|
compressed: true
|
||||||
|
hiDef: true
|
||||||
|
readerData:
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.DictionaryReader`2[[System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]]"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.Int32Reader"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.StringReader"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
|
||||||
|
numSharedResources: 0
|
||||||
|
|
||||||
|
content: #!Dictionary<Int32,String>
|
||||||
|
0: "Oak Chair/chair/1 2/1 1 0 1 0 0/4/350" #!String
|
||||||
|
3: "Walnut Chair/chair/-1/-1/4/350" #!String
|
||||||
|
6: "Birch Chair/chair/-1/-1/4/350" #!String
|
||||||
|
9: "Mahogany Chair/chair/-1/-1/4/1000" #!String
|
||||||
|
12: "Red Diner Chair/chair/-1/-1/4/750" #!String
|
||||||
|
15: "Blue Diner Chair/chair/-1/-1/4/750" #!String
|
||||||
|
18: "Country Chair/chair/-1/-1/4/750" #!String
|
||||||
|
21: "Breakfast Chair/chair/-1/-1/4/750" #!String
|
||||||
|
24: "Pink Office Chair/chair/-1/-1/4/500" #!String
|
||||||
|
27: "Purple Office Chair/chair/-1/-1/4/500" #!String
|
||||||
|
30: "Green Office Stool/chair/-1/-1/4/350" #!String
|
||||||
|
31: "Orange Office Stool/chair/-1/-1/4/350" #!String
|
||||||
|
64: "Dark Throne/chair/-1/-1/4/2000" #!String
|
||||||
|
67: "Dining Chair/chair/-1/-1/4/1200" #!String
|
||||||
|
70: "Dining Chair/chair/-1/-1/4/1200" #!String
|
||||||
|
73: "Green Plush Seat/chair/-1/-1/4/750" #!String
|
||||||
|
76: "Pink Plush Seat/chair/-1/-1/4/750" #!String
|
||||||
|
79: "Winter Chair/chair/-1/-1/4/750" #!String
|
||||||
|
82: "Groovy Chair/chair/-1/-1/4/750" #!String
|
||||||
|
85: "Cute Chair/chair/-1/-1/4/1200" #!String
|
||||||
|
88: "Stump Seat/chair/-1/-1/4/2000" #!String
|
||||||
|
91: "Metal Chair/chair/-1/-1/4/800" #!String
|
||||||
|
94: "Green Stool/chair/-1/-1/4/350" #!String
|
||||||
|
95: "Blue Stool/chair/-1/-1/4/350" #!String
|
||||||
|
128: "King Chair/chair/-1/-1/4/3000" #!String
|
||||||
|
131: "Crystal Chair/chair/-1/-1/4/3000" #!String
|
||||||
|
192: "Oak Bench/bench/-1/-1/4/750" #!String
|
||||||
|
197: "Walnut Bench/bench/-1/-1/4/750" #!String
|
||||||
|
202: "Birch Bench/bench/-1/-1/4/750" #!String
|
||||||
|
207: "Mahogany Bench/bench/-1/-1/4/2000" #!String
|
||||||
|
212: "Modern Bench/bench/-1/-1/4/2000" #!String
|
||||||
|
288: "Blue Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
294: "Red Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
300: "Green Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
306: "Yellow Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
312: "Brown Armchair/armchair/-1/-1/4/1000" #!String
|
||||||
|
416: "Blue Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
424: "Red Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
432: "Green Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
440: "Yellow Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
512: "Brown Couch/couch/-1/-1/4/1750" #!String
|
||||||
|
520: "Dark Couch/couch/-1/-1/4/2500" #!String
|
||||||
|
528: "Wizard Couch/couch/-1/-1/4/4000" #!String
|
||||||
|
536: "Woodsy Couch/couch/-1/-1/4/3000" #!String
|
||||||
|
704: "Oak Dresser/dresser/-1/-1/4/1000" #!String
|
||||||
|
709: "Walnut Dresser/dresser/-1/-1/4/1000" #!String
|
||||||
|
714: "Birch Dresser/dresser/-1/-1/4/1000" #!String
|
||||||
|
719: "Mahogany Dresser/dresser/-1/-1/4/2000" #!String
|
||||||
|
724: "Coffee Table/table/2 2/2 1/2/1250" #!String
|
||||||
|
727: "Stone Slab/table/2 2/2 1/2/1000" #!String
|
||||||
|
800: "Winter Dining Table/long table/-1/-1/2/3500" #!String
|
||||||
|
807: "Festive Dining Table/long table/-1/-1/2/3500" #!String
|
||||||
|
814: "Mahogany Dining Table/long table/-1/-1/2/3000" #!String
|
||||||
|
821: "Modern Dining Table/long table/-1/-1/2/2700" #!String
|
||||||
|
1120: "Oak Table/table/2 3/1 1 0 1 0 1/1/750" #!String
|
||||||
|
1122: "Walnut Table/table/-1/-1/1/750" #!String
|
||||||
|
1124: "Birch Table/table/-1/-1/1/750" #!String
|
||||||
|
1126: "Mahogany Table/table/-1/-1/1/1500" #!String
|
||||||
|
1128: "Sun Table/table/-1/-1/1/2500" #!String
|
||||||
|
1130: "Moon Table/table/-1/-1/1/2500" #!String
|
||||||
|
1132: "Modern Table/table/-1/-1/1/1250" #!String
|
||||||
|
1134: "Pub Table/table/-1/-1/1/800" #!String
|
||||||
|
1136: "Luxury Table/table/-1/-1/1/2000" #!String
|
||||||
|
1138: "Diviner Table/table/-1/-1/1/2250" #!String
|
||||||
|
1140: "Neolithic Table/table/-1/-1/1/1800" #!String
|
||||||
|
1142: "Puzzle Table/table/-1/-1/1/1500" #!String
|
||||||
|
1144: "Winter Table/table/-1/-1/1/1250" #!String
|
||||||
|
1146: "Candy Table/table/-1/-1/1/1000" #!String
|
||||||
|
1148: "Luau Table/table/-1/-1/1/1000" #!String
|
||||||
|
1150: "Dark Table/table/-1/-1/1/2000" #!String
|
||||||
|
1216: "Oak Tea-Table/table/2 2/-1/1/750" #!String
|
||||||
|
1218: "Walnut Tea-Table/table/2 2/-1/1/750" #!String
|
||||||
|
1220: "Birch Tea-Table/table/2 2/-1/1/750" #!String
|
||||||
|
1222: "Mahogany Tea-Table/table/2 2/-1/1/1500" #!String
|
||||||
|
1224: "Modern Tea-Table/table/2 2/-1/1/1000" #!String
|
||||||
|
1226: "Furniture Catalogue/table/2 2/-1/1/200000" #!String
|
||||||
|
1280: "China Cabinet/other/3 3/3 1/1/6000" #!String
|
||||||
|
1283: "Artist Bookcase/bookcase/-1/-1/1/1200" #!String
|
||||||
|
1285: "Luxury Bookcase/bookcase/-1/-1/1/2000" #!String
|
||||||
|
1287: "Modern Bookcase/bookcase/-1/-1/1/1600" #!String
|
||||||
|
1289: "Dark Bookcase/bookcase/-1/-1/1/2000" #!String
|
||||||
|
1291: "Ceramic Pillar/decor/1 3/1 1/1/250" #!String
|
||||||
|
1292: "Gold Pillar/decor/1 3/1 1/1/450" #!String
|
||||||
|
1293: "Industrial Pipe/decor/1 3/1 1/1/300" #!String
|
||||||
|
1294: "Indoor Palm/decor/1 3/1 1/1/600" #!String
|
||||||
|
1295: "Totem Pole/decor/1 3/1 1/1/750" #!String
|
||||||
|
1296: "Manicured Pine/decor/1 3/1 1/1/500" #!String
|
||||||
|
1297: "Topiary Tree/decor/1 3/1 1/1/500" #!String
|
||||||
|
1298: "Standing Geode/decor/1 2/1 1/1/500" #!String
|
||||||
|
1299: "Obsidian Vase/decor/1 2/1 1/1/500" #!String
|
||||||
|
1300: "Singing Stone/decor/1 2/1 1/1/500" #!String
|
||||||
|
1301: "Sloth Skeleton L/decor/1 2/1 1/1/500" #!String
|
||||||
|
1302: "Sloth Skeleton M/decor/1 2/1 1/1/500" #!String
|
||||||
|
1303: "Sloth Skeleton R/decor/1 2/1 1/1/500" #!String
|
||||||
|
1304: "Skeleton/decor/1 2/1 1/1/500" #!String
|
||||||
|
1305: "Chicken Statue/decor/1 2/1 1/1/500" #!String
|
||||||
|
1306: "Leah's Sculpture/decor/1 2/1 1/1/500" #!String
|
||||||
|
1307: "Dried Sunflowers/decor/1 2/1 1/1/500" #!String
|
||||||
|
1308: "Catalogue/decor/1 2/1 1/1/30000" #!String
|
||||||
|
1362: "Small Plant/decor/1 1/1 1/1/250" #!String
|
||||||
|
1363: "Table Plant/decor/1 1/1 1/1/250" #!String
|
||||||
|
1364: "Decorative Bowl/decor/1 1/1 1/1/250" #!String
|
||||||
|
1365: "Futan Bear/decor/1 1/1 1/1/1500" #!String
|
||||||
|
1366: "Globe/decor/1 1/1 1/1/750" #!String
|
||||||
|
1367: "Model Ship/decor/1 1/1 1/1/750" #!String
|
||||||
|
1368: "Small Crystal/decor/1 1/1 1/1/750" #!String
|
||||||
|
1369: "Decorative Lantern/decor/1 1/1 1/1/500" #!String
|
||||||
|
1376: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1377: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1378: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1379: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1380: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1381: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1382: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1383: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1384: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1385: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1386: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1387: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1388: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1389: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1390: "House Plant/decor/1 2/1 1/1/250" #!String
|
||||||
|
1391: "Oak End Table/table/1 2/1 1/2/500" #!String
|
||||||
|
1393: "Walnut End Table/table/1 2/1 1/2/500" #!String
|
||||||
|
1395: "Birch End Table/table/1 2/1 1/2/500" #!String
|
||||||
|
1397: "Mahogany End Table/table/1 2/1 1/2/1000" #!String
|
||||||
|
1399: "Modern End Table/table/1 2/1 1/1/800" #!String
|
||||||
|
1400: "Grandmother End Table/table/1 2/1 1/1/1000" #!String
|
||||||
|
1401: "Winter End Table/table/1 2/1 1/1/800" #!String
|
||||||
|
1402: "Calendar/painting/1 2/1 2/1/2000" #!String
|
||||||
|
1440: "Tree of the Winter Star/decor/3 5/3 2/1/5000" #!String
|
||||||
|
1443: "Country Lamp/lamp/-1/-1/1/500" #!String
|
||||||
|
1445: "Box Lamp/lamp/-1/-1/1/750" #!String
|
||||||
|
1447: "Modern Lamp/lamp/-1/-1/1/750" #!String
|
||||||
|
1449: "Classic Lamp/lamp/-1/-1/1/1000" #!String
|
||||||
|
1451: "Red Rug/rug/-1/-1/2/1000" #!String
|
||||||
|
1456: "Patchwork Rug/rug/-1/-1/2/800" #!String
|
||||||
|
1461: "Dark Rug/rug/-1/-1/2/2000" #!String
|
||||||
|
1466: "Budget TV/decor/2 3/2 2/1/750" #!String
|
||||||
|
1468: "Plasma TV/decor/3 3/3 1/1/4500" #!String
|
||||||
|
1539: "'The Muzzamaroo'/painting/-1/-1/1/1000" #!String
|
||||||
|
1541: "'A Night On Eco-Hill'/painting/-1/-1/1/1000" #!String
|
||||||
|
1543: "'Pathways'/painting/-1/-1/1/750" #!String
|
||||||
|
1545: "'Burnt Offering'/painting/-1/-1/1/1000" #!String
|
||||||
|
1547: "'Queen of the Gem Sea'/painting/3 2/3 2/1/1200" #!String
|
||||||
|
1550: "'Vanilla Villa'/painting/-1/-1/1/500" #!String
|
||||||
|
1552: "'Primal Motion'/painting/-1/-1/1/1500" #!String
|
||||||
|
1554: "'Jade Hills'/painting/3 2/3 2/1/1750" #!String
|
||||||
|
1557: "'Sun #44'/painting/-1/-1/1/800" #!String
|
||||||
|
1559: "Wallflower Pal/painting/-1/-1/1/500" #!String
|
||||||
|
1561: "'Spires'/painting/-1/-1/1/800" #!String
|
||||||
|
1563: "'Highway 89'/painting/-1/-1/1/800" #!String
|
||||||
|
1565: "Calico Falls/painting/-1/-1/1/750" #!String
|
||||||
|
1567: "Needlepoint Flower/painting/1 2/1 2/1/500" #!String
|
||||||
|
1600: "Skull Poster/painting/1 2/1 2/1/500" #!String
|
||||||
|
1601: "'Sun #45'/painting/1 2/1 2/1/350" #!String
|
||||||
|
1602: "'Little Tree'/painting/1 2/1 2/1/350" #!String
|
||||||
|
1603: "'Blueberries'/painting/1 2/1 2/1/250" #!String
|
||||||
|
1604: "'Blue City'/painting/1 2/1 2/1/250" #!String
|
||||||
|
1605: "Little Photos/painting/1 2/1 2/1/250" #!String
|
||||||
|
1606: "'Dancing Grass'/painting/1 2/1 2/1/400" #!String
|
||||||
|
1607: "'VGA Paradise'/painting/2 2/2 2/1/1200" #!String
|
||||||
|
1609: "J. Cola Light/painting/3 2/3 2/1/1000" #!String
|
||||||
|
1612: "'Kitemaster '95'/painting/-1/-1/1/600" #!String
|
||||||
|
1614: "Basic Window/window/-1/-1/1/300" #!String
|
||||||
|
1616: "Small Window/window/-1/-1/1/300" #!String
|
||||||
|
1618: "Red Cottage Rug/rug/-1/-1/2/750" #!String
|
||||||
|
1623: "Green Cottage Rug/rug/-1/-1/2/750" #!String
|
||||||
|
1628: "Monster Rug/rug/2 2/2 2/1/1250" #!String
|
||||||
|
1630: "Boarded Window/painting/1 2/1 2/1/400" #!String
|
||||||
|
1664: "Mystic Rug/rug/-1/-1/2/1250" #!String
|
||||||
|
1669: "Lg. Futan Bear/decor/2 2/2 1/1/4000" #!String
|
||||||
|
1671: "Bear Statue/decor/2 4/2 1/1/4000" #!String
|
||||||
|
1673: "Porthole/window/-1/-1/1/700" #!String
|
||||||
|
1675: "Anchor/painting/1 2/1 2/1/750" #!String
|
||||||
|
1676: "World Map/painting/-1/-1/1/500" #!String
|
||||||
|
1678: "Ornate Window/window/-1/-1/1/900" #!String
|
||||||
|
1680: "Floor TV/decor/2 2/2 1/1/700" #!String
|
||||||
|
1682: "Carved Window/window/-1/-1/1/900" #!String
|
||||||
|
1733: "Junimo Plush/decor/2 2/2 1/1/4000" #!String
|
||||||
|
1737: "Nautical Rug/rug/-1/-1/2/1250" #!String
|
||||||
|
1742: "Burlap Rug/rug/2 2/2 2/1/350" #!String
|
||||||
|
1744: "Tree Column/decor/1 3/1 1/1/1000" #!String
|
||||||
|
1745: "L. Light String/painting/2 1/2 1/1/400" #!String
|
||||||
|
1747: "S. Pine/decor/1 2/1 1/1/500" #!String
|
||||||
|
1748: "Bonsai Tree/decor/1 2/1 1/1/800" #!String
|
||||||
|
1749: "Metal Window/window/-1/-1/1/800" #!String
|
||||||
|
1751: "Candle Lamp/lamp/-1/-1/1/1000" #!String
|
||||||
|
1753: "Miner's Crest/painting/2 2/2 2/1/1000" #!String
|
||||||
|
1755: "Bamboo Mat/rug/2 1/2 1/2/250" #!String
|
||||||
|
1758: "Ornate Lamp/lamp/-1/-1/1/1050" #!String
|
||||||
|
1777: "Woodcut Rug/rug/2 2/2 2/1/800" #!String
|
||||||
|
1811: "Hanging Shield/painting/1 1/1 1/1/500" #!String
|
||||||
|
1812: "Monster Danglers/painting/2 1/2 1/1/1000" #!String
|
||||||
|
1814: "Ceiling Flags/painting/1 1/1 1/1/50" #!String
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 171 B |
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
xnbData:
|
||||||
|
target: "w"
|
||||||
|
compressed: true
|
||||||
|
hiDef: true
|
||||||
|
readerData:
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.Texture2DReader, Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
|
||||||
|
numSharedResources: 0
|
||||||
|
|
||||||
|
content: #!Texture2D
|
||||||
|
format: 0
|
||||||
|
|
||||||
|
extractedImages:
|
||||||
|
-
|
||||||
|
path: ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 222 KiB |
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
xnbData:
|
||||||
|
target: "w"
|
||||||
|
compressed: true
|
||||||
|
hiDef: true
|
||||||
|
readerData:
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.Texture2DReader, Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
|
||||||
|
numSharedResources: 0
|
||||||
|
|
||||||
|
content: #!Texture2D
|
||||||
|
format: 0
|
||||||
|
|
||||||
|
extractedImages:
|
||||||
|
-
|
||||||
|
path: ""
|
||||||
|
|
||||||
|
|
Binary file not shown.
After Width: | Height: | Size: 222 KiB |
|
@ -0,0 +1,21 @@
|
||||||
|
|
||||||
|
xnbData:
|
||||||
|
target: "w"
|
||||||
|
compressed: true
|
||||||
|
hiDef: true
|
||||||
|
readerData:
|
||||||
|
-
|
||||||
|
type: "Microsoft.Xna.Framework.Content.Texture2DReader, Microsoft.Xna.Framework.Graphics, Version=4.0.0.0, Culture=neutral, PublicKeyToken=842cf8be1de50553"
|
||||||
|
version: 0
|
||||||
|
|
||||||
|
|
||||||
|
numSharedResources: 0
|
||||||
|
|
||||||
|
content: #!Texture2D
|
||||||
|
format: 0
|
||||||
|
|
||||||
|
extractedImages:
|
||||||
|
-
|
||||||
|
path: ""
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue