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 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.
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
///
|
||||
public static Dictionary<GameLocation, List<SObject>> TrackedMachines = new Dictionary<GameLocation, List<SObject>>();
|
||||
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<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.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;
|
||||
|
||||
|
|
Loading…
Reference in New Issue