public void OnLoadingColony(Colony colony, JSONNode data) { if (data.TryGetAs <JSONNode>(nameof(CrateLocations), out var crateJson)) { if (!CrateLocations.ContainsKey(colony)) { CrateLocations.Add(colony, new Dictionary <Vector3Int, CrateInventory>()); } foreach (var loc in crateJson.LoopObject()) { CrateLocations[colony][Vector3Int.Parse(loc.Key)] = new CrateInventory(loc.Value, colony); } } if (data.TryGetAs <JSONNode>(nameof(ItemCrateLocations), out var icl)) { if (!ItemCrateLocations.ContainsKey(colony)) { ItemCrateLocations.Add(colony, new Dictionary <ushort, List <Vector3Int> >()); } foreach (var kvp in icl.LoopObject()) { List <Vector3Int> locs = new List <Vector3Int>(); foreach (var l in kvp.Value.LoopArray()) { locs.Add((Vector3Int)l); } ItemCrateLocations[colony][Convert.ToUInt16(kvp.Key)] = locs; } } }
public void OnSavingColony(Colony colony, JSONNode data) { if (CrateLocations.TryGetValue(colony, out var cl)) { if (!data.HasChild(nameof(CrateLocations))) { data[nameof(CrateLocations)] = new JSONNode(); } var locationsNode = new JSONNode(); foreach (var crateLocation in cl) { locationsNode[crateLocation.Key.ToString()] = crateLocation.Value.ToJSON(); } data[nameof(CrateLocations)] = locationsNode; } if (ItemCrateLocations.TryGetValue(colony, out var icl)) { if (!data.HasChild(nameof(ItemCrateLocations))) { data[nameof(ItemCrateLocations)] = new JSONNode(); } var itemsLocs = new JSONNode(); foreach (var kvp in icl) { var locs = new JSONNode(NodeType.Array); foreach (var l in kvp.Value) { locs.AddToArray((JSONNode)l); } itemsLocs[kvp.Key.ToString()] = locs; } data[nameof(ItemCrateLocations)] = itemsLocs; } }
public void AfterWorldLoad() { _worldLoaded = true; foreach (var colony in ServerManager.ColonyTracker.ColoniesByID.Values) { if (!CrateLocations.ContainsKey(colony)) { CrateLocations.Add(colony, new Dictionary <Vector3Int, CrateInventory>()); } if (!ItemCrateLocations.ContainsKey(colony)) { ItemCrateLocations.Add(colony, new Dictionary <ushort, List <Vector3Int> >()); } RecalcMax(colony); } }
public void AfterWorldLoad() { _worldLoaded = true; if (ServerManager.BlockEntityCallbacks.TryGetAutoLoadedInstance <CivCrateTracker>(out var crateTracker)) { CrateTracker = crateTracker; } foreach (var colony in ServerManager.ColonyTracker.ColoniesByID.Values.Where(c => c != null)) { if (!CrateLocations.ContainsKey(colony)) { CrateLocations.Add(colony, new Dictionary <Vector3Int, CrateInventory>()); } if (!ItemCrateLocations.ContainsKey(colony)) { ItemCrateLocations.Add(colony, new Dictionary <ushort, List <Vector3Int> >()); } RecalcStockpileMaxSize(colony); } }