WuhuIslandTesting/Library/PackageCache/com.stresslevelzero.marrow.sdk@1.2.0/Scripts/SLZ.Marrow/SLZ.Marrow.Forklift.Model/ModRepository.cs
2025-01-07 02:06:59 +01:00

78 lines
No EOL
2.1 KiB
C#

using System;
using System.Collections.Generic;
using Newtonsoft.Json.Linq;
using SLZ.Serialize;
using UnityEngine;
namespace SLZ.Marrow.Forklift.Model
{
[Serializable]
public class ModRepository : IPackable
{
#if UNITY_2021_3_OR_NEWER
[field: SerializeField]
#endif
public string Title { get; set; }
#if UNITY_2021_3_OR_NEWER
[field: SerializeField]
#endif
public string Description { get; set; }
#if UNITY_2021_3_OR_NEWER
[field: SerializeField]
#endif
public List<ModListing> Mods { get; set; } = new List<ModListing>();
public void Pack(ObjectStore store, JObject json)
{
json.Add("title", Title);
json.Add("description", Description);
var jsonModsArray = new JArray();
if (Mods != null && Mods.Count > 0)
{
foreach (var mod in Mods)
{
if (mod != null)
{
jsonModsArray.Add(store.PackReference(mod));
}
}
}
json.Add(new JProperty("mods", jsonModsArray));
}
public void Unpack(ObjectStore store, string objectId)
{
if (store.TryGetJSON("title", objectId, out var nameValue))
{
Title = nameValue.ToObject<string>();
}
if (store.TryGetJSON("description", objectId, out var descriptionValue))
{
Description = descriptionValue.ToObject<string>();
}
if (store.TryGetJSON("mods", objectId, out var modsValue))
{
var arr = (JArray)modsValue;
Mods = new List<ModListing>();
if (arr.Count > 0)
{
foreach (var modValue in arr)
{
var mod = new ModListing();
store.TryUnpackReference(modValue, ref mod);
mod.Repository = this;
Mods.Add(mod);
}
}
}
}
}
}