Bunch more moves, changes in how additional information for items works.

This commit is contained in:
2025-04-14 15:29:26 +02:00
parent 2adbb12367
commit 7c2845502d
60 changed files with 4275 additions and 963 deletions

View File

@@ -29,12 +29,12 @@ public static class ItemDataLoader
public delegate IItem ItemFactoryDelegate(SerializedItem serialized, StringKey name, ItemCategory type,
BattleItemCategory battleType, int price, ImmutableHashSet<StringKey> flags, ISecondaryEffect? effect,
ISecondaryEffect? battleTriggerEffect, byte flingPower);
ISecondaryEffect? battleTriggerEffect, Dictionary<StringKey, object?> additionalData);
[PublicAPI]
public static ItemFactoryDelegate ItemConstructor { get; set; } =
(_, name, type, battleType, price, flags, effect, battleTriggerEffect, flingPower) => new ItemImpl(name, type,
battleType, price, flags, effect, battleTriggerEffect, flingPower);
(_, name, type, battleType, price, flags, effect, battleTriggerEffect, additionalData) => new ItemImpl(name,
type, battleType, price, flags, effect, battleTriggerEffect, additionalData);
private static IItem DeserializeItem(SerializedItem serialized)
{
@@ -43,9 +43,12 @@ public static class ItemDataLoader
Enum.TryParse(serialized.BattleType, true, out BattleItemCategory battleType);
var effect = serialized.Effect?.ParseEffect();
var battleTriggerEffect = serialized.BattleEffect?.ParseEffect();
var additionalData =
serialized.AdditionalData?.ToDictionary(x => (StringKey)x.Key, x => x.Value.ToParameter()) ??
new Dictionary<StringKey, object?>();
return ItemConstructor(serialized, serialized.Name, itemType, battleType, serialized.Price,
serialized.Flags.Select(x => (StringKey)x).ToImmutableHashSet(), effect, battleTriggerEffect,
serialized.FlingPower);
additionalData);
}
}

View File

@@ -1,5 +1,6 @@
using System.Collections.Generic;
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
namespace PkmnLib.Dataloader.Models;
@@ -11,9 +12,10 @@ public class SerializedItem
public string BattleType { get; set; } = null!;
public string[] Flags { get; set; } = null!;
public int Price { get; set; }
public byte FlingPower { get; set; }
public SerializedMoveEffect? Effect { get; set; }
public SerializedMoveEffect? BattleEffect { get; set; }
public Dictionary<string, JsonNode>? AdditionalData { get; set; } = null!;
[JsonExtensionData] public Dictionary<string, JsonElement>? ExtensionData { get; set; }
}