source: 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/GuiManager.cs @ 4703

Revision 4703, 1.8 KB checked in by dezhidki, 7 years ago (diff)

Talletus.

Line 
1using CastleMaster.Graphics;
2using System;
3using System.Collections.Generic;
4using System.Linq;
5using System.Text;
6
7namespace CastleMaster.Guis
8{
9    public class GuiManager
10    {
11        private List<Gui> registeredGuis;
12        private Gui importantGui = null;
13        private bool hasImportantGui = false;
14
15        public GuiManager()
16        {
17            registeredGuis = new List<Gui>();
18        }
19
20        public void AddGui(Gui gui, bool activate, bool important = false)
21        {
22            if (important)
23            {
24                importantGui = gui;
25                hasImportantGui = true;
26            }
27            else
28                registeredGuis.Add(gui);
29            gui.IsActive = activate;
30            registeredGuis = registeredGuis.OrderBy(g => g.Importance).ToList();
31        }
32
33        public void RemoveGui(Gui gui)
34        {
35            gui.IsActive = false;
36            if (importantGui == gui)
37            {
38                importantGui = null;
39                hasImportantGui = false;
40            }
41            else
42                registeredGuis.Remove(gui);
43        }
44
45        public void Update()
46        {
47            if (hasImportantGui)
48            {
49                importantGui.Update();
50                return;
51            }
52
53            for (int i = 0; i < registeredGuis.Count; i++)
54            {
55                Gui g = registeredGuis[i];
56                if (g.IsActive) g.Update();
57            }
58        }
59
60        public void Render(RenderHelper renderer)
61        {
62            if (registeredGuis.Count > 0)
63            {
64                foreach (Gui g in registeredGuis)
65                    if (g.IsActive) g.Render(renderer);
66            }
67
68            if (hasImportantGui)
69                importantGui.Render(renderer);
70        }
71    }
72}
Note: See TracBrowser for help on using the repository browser.