Fixed vanilla machines not rendering CustomObject(s) when finished producing.
This commit is contained in:
parent
f194b5eb4f
commit
f3f4f4da27
|
@ -5,6 +5,7 @@ using System.Text;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using Microsoft.Xna.Framework;
|
using Microsoft.Xna.Framework;
|
||||||
using Revitalize.Framework.Crafting;
|
using Revitalize.Framework.Crafting;
|
||||||
|
using Revitalize.Framework.Objects;
|
||||||
using Revitalize.Framework.Utilities;
|
using Revitalize.Framework.Utilities;
|
||||||
using StardewValley;
|
using StardewValley;
|
||||||
using SObject = StardewValley.Object;
|
using SObject = StardewValley.Object;
|
||||||
|
@ -17,6 +18,8 @@ namespace Revitalize.Framework.Hacks
|
||||||
/// Returns the object underneath the mouse's position.
|
/// Returns the object underneath the mouse's position.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
|
///
|
||||||
|
public static Dictionary<GameLocation, List<SObject>> TrackedMachines = new Dictionary<GameLocation, List<SObject>>();
|
||||||
public static SObject GetItemAtMouseTile()
|
public static SObject GetItemAtMouseTile()
|
||||||
{
|
{
|
||||||
if (Game1.player == null) return null;
|
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));
|
(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);
|
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<SObject>()
|
||||||
|
{
|
||||||
|
obj
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void Render_RenderCustomObjectsHeldInMachines(object sender, StardewModdingAPI.Events.RenderedWorldEventArgs e)
|
||||||
|
{
|
||||||
|
if (TrackedMachines.ContainsKey(Game1.player.currentLocation))
|
||||||
|
{
|
||||||
|
List<SObject> removalList = new List<SObject>();
|
||||||
|
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
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -226,6 +226,7 @@ namespace Revitalize
|
||||||
ModHelper.Events.GameLoop.DayStarted += ObjectManager.resources.DailyResourceSpawn;
|
ModHelper.Events.GameLoop.DayStarted += ObjectManager.resources.DailyResourceSpawn;
|
||||||
ModHelper.Events.Input.ButtonPressed += ObjectInteractionHacks.Input_CheckForObjectInteraction;
|
ModHelper.Events.Input.ButtonPressed += ObjectInteractionHacks.Input_CheckForObjectInteraction;
|
||||||
ModHelper.Events.GameLoop.DayEnding += Serializer.DayEnding_CleanUpFilesForDeletion;
|
ModHelper.Events.GameLoop.DayEnding += Serializer.DayEnding_CleanUpFilesForDeletion;
|
||||||
|
ModHelper.Events.Display.RenderedWorld += ObjectInteractionHacks.Render_RenderCustomObjectsHeldInMachines;
|
||||||
//ModHelper.Events.Display.Rendered += MenuHacks.EndOfDay_OnMenuChanged;
|
//ModHelper.Events.Display.Rendered += MenuHacks.EndOfDay_OnMenuChanged;
|
||||||
//ModHelper.Events.GameLoop.Saved += MenuHacks.EndOfDay_CleanupForNewDay;
|
//ModHelper.Events.GameLoop.Saved += MenuHacks.EndOfDay_CleanupForNewDay;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue