Updating revitalize. Modular furniture can be placed. Now how to remove it...

This commit is contained in:
2017-08-06 01:21:18 -07:00
parent 7089475d46
commit c4d7e7500b
27 changed files with 6185 additions and 0 deletions

View File

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

View File

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

View File

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

View File

@ -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()
}
}
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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: ""