diff --git a/GeneralMods/Revitalize/Framework/Hacks/ObjectInteractionHacks.cs b/GeneralMods/Revitalize/Framework/Hacks/ObjectInteractionHacks.cs
index 2e00eed8..5914f950 100644
--- a/GeneralMods/Revitalize/Framework/Hacks/ObjectInteractionHacks.cs
+++ b/GeneralMods/Revitalize/Framework/Hacks/ObjectInteractionHacks.cs
@@ -5,6 +5,7 @@ using System.Text;
using System.Threading.Tasks;
using Microsoft.Xna.Framework;
using Revitalize.Framework.Crafting;
+using Revitalize.Framework.Objects;
using Revitalize.Framework.Utilities;
using StardewValley;
using SObject = StardewValley.Object;
@@ -17,6 +18,8 @@ namespace Revitalize.Framework.Hacks
/// Returns the object underneath the mouse's position.
///
///
+ ///
+ public static Dictionary> TrackedMachines = new Dictionary>();
public static SObject GetItemAtMouseTile()
{
if (Game1.player == null) return null;
@@ -58,9 +61,55 @@ namespace Revitalize.Framework.Hacks
*/
(Game1.player.currentLocation).TemporarySprites.Add(new TemporaryAnimatedSprite(30, obj.TileLocation * 64f + new Vector2(0.0f, -16f), Color.White, 4, false, 50f, 10, 64, (float)(((double)obj.TileLocation.Y + 1.0) * 64.0 / 10000.0 + 9.99999974737875E-05), -1, 0));
obj.addWorkingAnimation(Game1.player.currentLocation);
+ if (TrackedMachines.ContainsKey(Game1.player.currentLocation))
+ {
+ TrackedMachines[Game1.player.currentLocation].Add(obj);
+ }
+ else
+ {
+ TrackedMachines.Add(Game1.player.currentLocation, new List()
+ {
+ obj
+ });
+ }
}
}
}
+ public static void Render_RenderCustomObjectsHeldInMachines(object sender, StardewModdingAPI.Events.RenderedWorldEventArgs e)
+ {
+ if (TrackedMachines.ContainsKey(Game1.player.currentLocation))
+ {
+ List removalList = new List();
+ foreach(SObject obj in TrackedMachines[Game1.player.currentLocation])
+ {
+ if (obj.heldObject.Value == null)
+ {
+ removalList.Add(obj);
+ }
+ else
+ {
+ if(obj.heldObject.Value is CustomObject)
+ {
+ if (obj.MinutesUntilReady == 0)
+ {
+ float num = (float)(4.0 * Math.Round(Math.Sin(DateTime.UtcNow.TimeOfDay.TotalMilliseconds / 250.0), 2));
+ Vector2 pos = new Vector2(obj.TileLocation.X * Game1.tileSize, (obj.TileLocation.Y-1) * Game1.tileSize - 32+num);
+ obj.heldObject.Value.draw(e.SpriteBatch, (int)pos.X, (int)pos.Y, 0.25f, 1f);
+ }
+ }
+ }
+ }
+ foreach(SObject obj in removalList)
+ {
+ TrackedMachines[Game1.player.currentLocation].Remove(obj);
+ }
+ }
+ else
+ {
+
+ }
+ }
+
}
}
diff --git a/GeneralMods/Revitalize/ModCore.cs b/GeneralMods/Revitalize/ModCore.cs
index 3b6be6c3..f09df947 100644
--- a/GeneralMods/Revitalize/ModCore.cs
+++ b/GeneralMods/Revitalize/ModCore.cs
@@ -226,6 +226,7 @@ namespace Revitalize
ModHelper.Events.GameLoop.DayStarted += ObjectManager.resources.DailyResourceSpawn;
ModHelper.Events.Input.ButtonPressed += ObjectInteractionHacks.Input_CheckForObjectInteraction;
ModHelper.Events.GameLoop.DayEnding += Serializer.DayEnding_CleanUpFilesForDeletion;
+ ModHelper.Events.Display.RenderedWorld += ObjectInteractionHacks.Render_RenderCustomObjectsHeldInMachines;
//ModHelper.Events.Display.Rendered += MenuHacks.EndOfDay_OnMenuChanged;
//ModHelper.Events.GameLoop.Saved += MenuHacks.EndOfDay_CleanupForNewDay;