add asset propagation for bundles
This commit is contained in:
parent
16f986c51b
commit
5ea5932661
|
@ -4,12 +4,13 @@
|
|||
## Upcoming release
|
||||
|
||||
* For players:
|
||||
* Updated for the 'Force Off' gamepad mode added in Stardew Valley 1.4.0.1.
|
||||
* Fixed compatibility issue with Arch Linux.
|
||||
* Updated for the 'Force Off' gamepad mode added in Stardew Valley 1.4.1.
|
||||
* Fixed compatibility with Arch Linux.
|
||||
* Internal optimizations.
|
||||
|
||||
* For modders:
|
||||
* Added asset propagation for grass textures.
|
||||
* Added asset propagation for `Data\Bundles` changes (for added bundles only).
|
||||
* `helper.Read/WriteSaveData` can now be used while a save is being loaded (e.g. within a `Specialized.LoadStageChanged` event).
|
||||
* Fixed private textures loaded from content packs not having their `Name` field set.
|
||||
|
||||
|
|
|
@ -3,6 +3,7 @@ using System.Collections.Generic;
|
|||
using System.IO;
|
||||
using System.Linq;
|
||||
using Microsoft.Xna.Framework.Graphics;
|
||||
using Netcode;
|
||||
using StardewModdingAPI.Framework.Reflection;
|
||||
using StardewValley;
|
||||
using StardewValley.BellsAndWhistles;
|
||||
|
@ -11,6 +12,7 @@ using StardewValley.Characters;
|
|||
using StardewValley.GameData.Movies;
|
||||
using StardewValley.Locations;
|
||||
using StardewValley.Menus;
|
||||
using StardewValley.Network;
|
||||
using StardewValley.Objects;
|
||||
using StardewValley.Projectiles;
|
||||
using StardewValley.TerrainFeatures;
|
||||
|
@ -227,6 +229,29 @@ namespace StardewModdingAPI.Metadata
|
|||
Game1.bigCraftablesInformation = content.Load<Dictionary<int, string>>(key);
|
||||
return true;
|
||||
|
||||
case "data\\bundles": // NetWorldState constructor
|
||||
{
|
||||
var bundles = this.Reflection.GetField<NetBundles>(Game1.netWorldState.Value, "bundles").GetValue();
|
||||
var rewards = this.Reflection.GetField<NetIntDictionary<bool, NetBool>>(Game1.netWorldState.Value, "bundleRewards").GetValue();
|
||||
foreach (var pair in content.Load<Dictionary<string, string>>(key))
|
||||
{
|
||||
int bundleKey = int.Parse(pair.Key.Split('/')[1]);
|
||||
int rewardsCount = pair.Value.Split('/')[2].Split(' ').Length;
|
||||
|
||||
// add bundles
|
||||
if (bundles.TryGetValue(bundleKey, out bool[] values))
|
||||
bundles.Remove(bundleKey);
|
||||
else
|
||||
values = new bool[0];
|
||||
bundles[bundleKey] = values.Concat(Enumerable.Repeat(false, rewardsCount - values.Length)).ToArray();
|
||||
|
||||
// add bundle rewards
|
||||
if (!rewards.ContainsKey(bundleKey))
|
||||
rewards[bundleKey] = false;
|
||||
}
|
||||
}
|
||||
break;
|
||||
|
||||
case "data\\clothinginformation": // Game1.LoadContent
|
||||
Game1.clothingInformation = content.Load<Dictionary<int, string>>(key);
|
||||
return true;
|
||||
|
|
Loading…
Reference in New Issue