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); } }
public Element Get(string name, string category, string culture) { string dictionaryKey = GetElementDictionaryKey(name, category, culture); Element element = null; if (CachedElements.ContainsKey(dictionaryKey)) { element = CachedElements[dictionaryKey]; } if (element == null && this.InnerElementRepository != null) { element = this.InnerElementRepository.Get(name, category, culture); if (element != null) { CachedElements.Add(dictionaryKey, element); } } return(element); }