public void RefreshItems() { ResearchItems.Controls.Clear(); ConstructionButton.BackColor = (_type == ETechType.Construction) ? _backColorType : _backColorNotType; if (_game == null) { StarbaseButton.ForeColor = SupremacyButton.ForeColor = TacticalButton.ForeColor = ExpansionButton.ForeColor = ShipyardButton.ForeColor = _foreColorActive; } else { StarbaseButton.ForeColor = (_game.AllBases.Any(_ => _.Active && _.Team == 1 && _.Type == EBaseType.Starbase)) ? _foreColorActive : _foreColorInActive; SupremacyButton.ForeColor = (_game.AllBases.Any(_ => _.Active && _.Team == 1 && _.Type == EBaseType.Supremacy)) ? _foreColorActive : _foreColorInActive; TacticalButton.ForeColor = (_game.AllBases.Any(_ => _.Active && _.Team == 1 && _.Type == EBaseType.Tactical)) ? _foreColorActive : _foreColorInActive; ExpansionButton.ForeColor = (_game.AllBases.Any(_ => _.Active && _.Team == 1 && _.Type == EBaseType.Expansion)) ? _foreColorActive : _foreColorInActive; ShipyardButton.ForeColor = (_game.AllBases.Any(_ => _.Active && _.Team == 1 && _.Type == EBaseType.Shipyard)) ? _foreColorActive : _foreColorInActive; } StarbaseButton.BackColor = (_type == ETechType.Starbase) ? _backColorType : _backColorNotType; SupremacyButton.BackColor = (_type == ETechType.Supremacy) ? _backColorType : _backColorNotType; TacticalButton.BackColor = (_type == ETechType.Tactical) ? _backColorType : _backColorNotType; ExpansionButton.BackColor = (_type == ETechType.Expansion) ? _backColorType : _backColorNotType; ShipyardButton.BackColor = (_type == ETechType.ShipyardConstruction) ? _backColorType : _backColorNotType; var items = _tree.ResearchableItems(_type); foreach (var i in items) { TechTreeItem c; // Reuse the Tech Tree control if it is still researchable if (_techTreeItems.ContainsKey(i.Name)) { c = _techTreeItems[i.Name]; c.SetInfo(i); } else { c = new TechTreeItem(_game, this); c.SetInfo(i); _techTreeItems.Add(i.Name, c); } ResearchItems.Controls.Add(c); } }
public void UpdateItems() { var activeItems = _tree.ResearchableItems(_type); var removeControls = new List <Control>(); // Update foreach (var c in ResearchItems.Controls) { var item = c as TechTreeItem; if (item == null) { continue; } if (item.Item.Type == _type) { item.RefreshBackColour(); } if (activeItems.Contains(item.Item)) { item.UpdateTime(); activeItems.Remove(item.Item); } else { removeControls.Add((Control)c); } } // Remove removeControls.ForEach(ResearchItems.Controls.Remove); // Insert foreach (var i in activeItems) { var ui = new TechTreeItem(_game, this); ui.SetInfo(i); ResearchItems.Controls.Add(ui); } }