private void OnServerInitialized() { Instance = this; imageStorage = new GameObject().AddComponent <ImageStorage>(); LoadData(); if (wipeDetected) { storedData = new StoredData(); SaveData(); } ServerMgr.Instance.StartCoroutine(FindRegisteredSignage(BaseNetworkable.serverEntities.Where(x => x is Signage).Cast <Signage>())); }
private void Unload() { if (!ServerMgr.Instance.Restarting) { SaveData(); } ItemPlacement[] placementComps = UnityEngine.Object.FindObjectsOfType <ItemPlacement>(); if (placementComps != null) { foreach (ItemPlacement placement in placementComps) { placement.CancelPlacement(); } } for (int i = signRegisteredSkulls.Count - 1; i >= 0; i--) { DroppedItem skullItem = signRegisteredSkulls.ElementAt(i).Value; skullItem?.DestroyItem(); if (skullItem != null && !skullItem.IsDestroyed) { skullItem.Kill(); } } for (int i = 0; i < spearRegisteredSkulls.Count; i++) { KeyValuePair <DroppedItem, List <DroppedItem> > kvp = spearRegisteredSkulls.ElementAt(i); DroppedItem spear = kvp.Key; List <DroppedItem> skulls = kvp.Value; if (spear == null) { continue; } for (int y = 0; y < skulls.Count; y++) { DroppedItem skullItem = skulls[y]; if (skullItem != null) { skullItem.DestroyItem(); if (skullItem != null && !skullItem.IsDestroyed) { skullItem.Kill(); } } } Pool.FreeList(ref skulls); spear.DestroyItem(); if (!spear.IsDestroyed) { spear.Kill(); } } configData = null; Instance = null; }