예제 #1
0
    private void InitElements()
    {
        var elements = Elements;

        //Init and add new elements to cache
        for (var i = 0; i < elements.Count; i++)
        {
            NetUIElement element = elements[i];
            if (!CachedElements.ContainsValue(element))
            {
                element.Init();
                CachedElements.Add(element.name, element);
            }
        }

        var toRemove = new List <string>();

        //Mark non-existent elements for removal
        foreach (var pair in CachedElements)
        {
            if (!elements.Contains(pair.Value))
            {
                toRemove.Add(pair.Key);
            }
        }
        //Remove obsolete elements from cache
        for (var i = 0; i < toRemove.Count; i++)
        {
            CachedElements.Remove(toRemove[i]);
        }
    }
예제 #2
0
    private void InitElements(bool serverFirstTime = false)
    {
        // Init and add new elements to cache
        var elements = Elements;

        foreach (var element in elements)
        {
            if (serverFirstTime && element is NetPageSwitcher switcher && switcher.StartInitialized == false)
            {
                // First time we make sure all pages are enabled in order to be scanned
                switcher.Init();
                InitElements(true);
                return;
            }

            if (CachedElements.ContainsKey(element.name))
            {
                continue;
            }
            element.Init();

            if (CachedElements.ContainsKey(element.name))
            {
                // Someone called InitElements in Init()
                Logger.LogError($"'{name}': rescan during '{element}' Init(), aborting initial scan", Category.NetUI);
                return;
            }

            CachedElements.Add(element.name, element);
        }

        var toRemove = new List <string>();

        // Mark non-existent elements for removal
        foreach (var pair in CachedElements)
        {
            if (elements.Contains(pair.Value) == false)
            {
                toRemove.Add(pair.Key);
            }
        }

        // Remove obsolete elements from cache
        foreach (var removed in toRemove)
        {
            CachedElements.Remove(removed);
        }
    }