using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Microsoft.Xna.Framework; using Revitalize.Framework.Objects; namespace Revitalize.Framework.Utilities { public class ObjectUtilities { public static bool IsObjectHoldingItem(StardewValley.Object obj) { if (obj.heldObject.Value != null) return true; else return false; } /// /// Checks to see if the given object is a SDV vanilla furnace. /// /// /// public static bool IsObjectFurnace(StardewValley.Object obj) { if (obj.ParentSheetIndex == 13 && obj.bigCraftable.Value && obj.Category == -9 && obj.Name == "Furnace") { return true; } else return false; } public static bool IsSameOrSubclass(Type potentialBase, Type potentialDescendant) { return potentialDescendant.IsSubclassOf(potentialBase) || potentialDescendant == potentialBase; } public static bool IsSameType(Type potentialBase, Type potentialDescendant) { return potentialDescendant == potentialBase; } public static bool IsSubclass(Type potentialBase, Type potentialDescendant) { return potentialDescendant.IsSubclassOf(potentialBase); } /// /// Gets a dimension offset depending on the size of the object passed in. /// /// /// public static Vector2 GetDimensionOffsetFromItem(StardewValley.Object obj) { if (ObjectUtilities.IsSameType(typeof(StardewValley.Object), obj.GetType())) { return new Vector2(64f, 64f); } if (ObjectUtilities.IsSameType(typeof(Revitalize.Framework.Objects.MultiTiledObject), obj.GetType())) { return new Vector2(64f * (obj as MultiTiledObject).Width, 64f * (obj as MultiTiledObject).Height); } return new Vector2(64f, 64f); } /// /// Gets the height of an object. /// /// /// public static float GetHeightOffsetFromItem(StardewValley.Object obj) { return GetDimensionOffsetFromItem(obj).Y; } /// /// Gets the width of an item. /// /// /// public static float GetWidthOffsetFromItem(StardewValley.Object obj) { return GetDimensionOffsetFromItem(obj).X; } } }