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