Пример #1
0
        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>()));
        }
Пример #2
0
        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;
        }