using System; using System.Collections.Generic; using System.Linq; using Newtonsoft.Json.Linq; using NitroxServer.Serialization.Upgrade; namespace NitroxServer.Serialization.SaveDataUpgrades { public class Upgrade_V1600 : SaveDataUpgrade { public override Version TargetVersion { get; } = new Version(1, 6, 0, 0); protected override void UpgradeWorldData(JObject data) { List cleanUnlockedTechTypes = data["GameData"]["PDAState"]["UnlockedTechTypes"].ToObject>().Distinct().ToList(); List cleanKnownTechTypes = data["GameData"]["PDAState"]["KnownTechTypes"].ToObject>().Distinct().ToList(); List cleanEncyclopediaEntries = data["GameData"]["PDAState"]["EncyclopediaEntries"].ToObject>().Distinct().ToList(); data["GameData"]["PDAState"]["UnlockedTechTypes"] = new JArray(cleanUnlockedTechTypes); data["GameData"]["PDAState"]["KnownTechTypes"] = new JArray(cleanKnownTechTypes); data["GameData"]["PDAState"]["EncyclopediaEntries"] = new JArray(cleanEncyclopediaEntries); List cleanPdaLog = new List(); List pdaLog = data["GameData"]["PDAState"]["PdaLog"].ToObject>(); foreach (JToken pdaLogEntry in pdaLog) { string Key = pdaLogEntry["Key"].ToString(); if (cleanPdaLog.All(entry => entry["Key"].ToString() != Key)) { cleanPdaLog.Add(pdaLogEntry); } } data["GameData"]["PDAState"]["PdaLog"] = new JArray(cleanPdaLog); data.Property("ServerStartTime")?.Remove(); } } }