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]); } }
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); } }