예제 #1
0
        private void InitializeControls()
        {
            manager = new Manager(CurrGame, CurrGame.Graphics, "Green")
            {
                SkinDirectory = CurrGame.ApplicationDirectory + @"\Content\GUI\Skin\"
            };
            try
            {
                manager.Initialize();
            }
            catch (Exception)
            {
                throw;
            }

            manager.AutoCreateRenderTarget = true;

            Console = new Console(manager);
            Console.Init();
            LoadConsoleCommands();
            manager.Add(Console);
            Console.ChannelsVisible = false;
            Console.MessageSent    += Console_MessageSent;
            Console.MessageFormat   = ConsoleMessageFormats.None;
            Console.Width           = manager.ScreenWidth;
            Console.Channels.Add(new ConsoleChannel(0, "[System]", Color.Orange));
            Console.Channels.Add(new ConsoleChannel(1, "[User]", Color.White));
            Console.Channels.Add(new ConsoleChannel(2, "[Error]", Color.DarkRed));
            Console.SelectedChannel = 1;
            Console.Hide();

            tabControl = new TabControl(manager);
            tabControl.Init();
            tabControl.Left   = CurrGame.CreepFieldWidth;
            tabControl.Top    = 0;
            tabControl.Width  = CurrGame.Width - CurrGame.CreepFieldWidth;
            tabControl.Height = CurrGame.Height;

            #region Gameplaypage

            GameplayPage = tabControl.AddPage();
            GameplayPage.Init();
            GameplayPage.Text = "Spiel";

            #region Turmauswahl

            var thumbnailBox = new GroupBox(manager);
            thumbnailBox.Init();
            thumbnailBox.Parent = GameplayPage;
            thumbnailBox.Left   = 2;
            thumbnailBox.Top    = 2;
            thumbnailBox.Width  = thumbnailBox.Parent.Width - 4;
            thumbnailBox.Height = 100;

            int counter = 0;
            foreach (TowerClass towerClass in GamePlayScreen.TowerManager.TowerClassList)
            {
                var towerButton = new ImageButton(manager)
                {
                    Image    = GamePlayScreen.TowerManager.GetThumbnail(towerClass.TowerKey),
                    SizeMode = SizeMode.Stretched,
                    Top      = 14,
                    Tag      = towerClass
                };
                towerButton.Width      = towerButton.Height = 60;
                towerButton.Left       = 6 + counter * (towerButton.Width + 5);
                towerButton.Click     += towerButton_Click;
                towerButton.MouseOver += towerButton_MouseOver;
                towerButton.MouseOut  += towerButton_MouseOut;
                towerButton.Init();
                thumbnailBox.Add(towerButton);
                BuyTowerButtons.Add(towerButton);
                counter++;
            }

            thumbnailBox.AutoScroll = true;

            var scrollBar = new ScrollBar(manager, Orientation.Horizontal);
            scrollBar.Init();
            thumbnailBox.Add(scrollBar);
            scrollBar.Visible = false;

            #endregion

            #region Informationen

            var infoBox = new GroupBox(manager);
            infoBox.Init();
            infoBox.Parent = GameplayPage;
            infoBox.Text   = "Informationen";
            infoBox.Width  = infoBox.Parent.Width - 4;
            infoBox.Height = 110;
            infoBox.Left   = 2;
            infoBox.Top    = thumbnailBox.Top + thumbnailBox.Height + 2;

            CreepNumber = new Label(manager);
            CreepNumber.Init();
            CreepNumber.Parent  = infoBox;
            CreepNumber.Top     = 14;
            CreepNumber.Left    = 4;
            CreepNumber.Width   = CreepNumber.Parent.Width - 4;
            CreepNumber.ToolTip = new ToolTip(manager)
            {
                Text = "So viele Creeps sind momentan\nauf dem Spielfeld"
            };
            CreepNumber.Passive = false;

            CreepHealth = new Label(manager);
            CreepHealth.Init();
            CreepHealth.Parent  = infoBox;
            CreepHealth.Top     = CreepNumber.Top + CreepNumber.Height + 2;
            CreepHealth.Left    = CreepNumber.Left;
            CreepHealth.Width   = CreepHealth.Parent.Width - 4;
            CreepHealth.ToolTip = new ToolTip(manager)
            {
                Text = "Die Gesamtenergie aller auf dem\nSpielfeld befindlicher Creeps"
            };
            CreepHealth.Passive = false;

            Money = new Label(manager);
            Money.Init();
            Money.Parent  = infoBox;
            Money.Top     = CreepHealth.Top + CreepHealth.Height + 2;
            Money.Left    = CreepNumber.Left;
            Money.Width   = Money.Parent.Width - 4;
            Money.ToolTip = new ToolTip(manager)
            {
                Text = "So viel Geld besitzt der Spieler"
            };
            Money.Passive = false;

            OwnHealth = new Label(manager);
            OwnHealth.Init();
            OwnHealth.Parent  = infoBox;
            OwnHealth.Top     = Money.Top + Money.Height + 2;
            OwnHealth.Left    = CreepNumber.Left;
            OwnHealth.Width   = OwnHealth.Parent.Width - 4;
            OwnHealth.ToolTip = new ToolTip(manager)
            {
                Text = "So viel Energie hat der Spieler noch"
            };
            OwnHealth.Passive = false;

            Points = new Label(manager);
            Points.Init();
            Points.Parent  = infoBox;
            Points.Top     = OwnHealth.Top + OwnHealth.Height + 2;
            Points.Left    = CreepNumber.Left;
            Points.Width   = Points.Parent.Width - 4;
            Points.ToolTip = new ToolTip(manager)
            {
                Text = "So viele Punkte hat der Spieler schon.\nDie Punkte setzen sich aus Energie\nund Geschwindigkeit der Creeps zusammen.\nJe näher ein Gegner am Ziel ist, desto mehr\nPunkte gibt er."
            };
            Points.Passive = false;

            #endregion

            #region Waves

            var waveBox = new GroupBox(manager);
            waveBox.Init();
            waveBox.Parent = GameplayPage;
            waveBox.Text   = "Waves";
            waveBox.Left   = 2;
            waveBox.Top    = infoBox.Top + infoBox.Height + 2;
            waveBox.Width  = waveBox.Parent.Width - 4;
            waveBox.Height = 137;

            WaveNumber = new Label(manager);
            WaveNumber.Init();
            WaveNumber.Parent = waveBox;
            WaveNumber.Top    = 14;
            WaveNumber.Left   = 4;
            WaveNumber.Width  = WaveNumber.Parent.Width - 4;

            RealWaveNumber = new Label(manager);
            RealWaveNumber.Init();
            RealWaveNumber.Parent = waveBox;
            RealWaveNumber.Top    = WaveNumber.Top + WaveNumber.Height + 2;
            RealWaveNumber.Left   = WaveNumber.Left;
            RealWaveNumber.Width  = RealWaveNumber.Parent.Width - 4;

            CreepsLeft = new Label(manager);
            CreepsLeft.Init();
            CreepsLeft.Parent  = waveBox;
            CreepsLeft.Top     = RealWaveNumber.Top + RealWaveNumber.Height + 2;
            CreepsLeft.Left    = WaveNumber.Left;
            CreepsLeft.Width   = CreepsLeft.Parent.Width - 4;
            CreepsLeft.Passive = false;
            CreepsLeft.ToolTip = new ToolTip(manager)
            {
                Text = "So viele Creeps werden noch im Level erscheinen,\nbevor die Aktuelle Welle vorbei ist."
            };

            CreepHealthLevel = new Label(manager);
            CreepHealthLevel.Init();
            CreepHealthLevel.Parent  = waveBox;
            CreepHealthLevel.Top     = CreepsLeft.Top + CreepsLeft.Height + 2;
            CreepHealthLevel.Left    = WaveNumber.Left;
            CreepHealthLevel.Width   = CreepHealthLevel.Parent.Width - 4;
            CreepHealthLevel.Passive = false;
            CreepHealthLevel.ToolTip = new ToolTip(manager)
            {
                Text = "Wenn alle Waves eines Levels fertig sind, werden die Waves von Anfang anwiederholt.\nAllerdings steigt die Energie der Creeps dabei.\nDas Gesundheitsniveau liegt dieser Energie zugrunde."
            };

            TimeLeftNextWave = new Label(manager);
            TimeLeftNextWave.Init();
            TimeLeftNextWave.Parent = waveBox;
            TimeLeftNextWave.Top    = CreepHealthLevel.Top + CreepHealthLevel.Height + 2;
            TimeLeftNextWave.Left   = WaveNumber.Left;
            TimeLeftNextWave.Width  = TimeLeftNextWave.Parent.Width - 4;

            var nextWaveButton = new Button(manager);
            nextWaveButton.Init();
            nextWaveButton.Parent = waveBox;
            nextWaveButton.Text   = "Nächste Welle";
            nextWaveButton.Left   = 2;
            nextWaveButton.Top    = TimeLeftNextWave.Top + TimeLeftNextWave.Height + 2;
            nextWaveButton.Width  = nextWaveButton.Parent.Width - 4;
            nextWaveButton.Click += delegate { GamePlayScreen.StartNextWave(); };

            #endregion

            #region Spielsteuerung

            var gameBox = new GroupBox(manager);
            gameBox.Init();
            gameBox.Text   = "Spielsteuerung";
            gameBox.Parent = GameplayPage;
            gameBox.Width  = gameBox.Parent.Width - 4;
            gameBox.Height = 200;
            gameBox.Left   = 2;
            gameBox.Top    = waveBox.Top + waveBox.Height + 2;

            var playButton = new ImageButton(manager)
            {
                Image =
                    CurrGame.Content.Load <Texture2D>(CurrGame.ApplicationDirectory + "\\Content\\GUI\\play"),
                SizeMode = SizeMode.Stretched,
                Top      = 14,
                Left     = 2,
                Width    = 50
            };
            playButton.Height = playButton.Width;
            playButton.Click += ((sender, e) => GamePlayScreen.StartGame());
            playButton.Init();

            var pauseButton = new ImageButton(manager)
            {
                Image =
                    CurrGame.Content.Load <Texture2D>(CurrGame.ApplicationDirectory +
                                                      "\\Content\\GUI\\pause"),
                SizeMode = SizeMode.Stretched,
                Top      = 14,
                Left     = playButton.Left + playButton.Width + 4
            };
            pauseButton.Width  = pauseButton.Height = playButton.Width;
            pauseButton.Click += ((sender, e) => GamePlayScreen.StopGame());
            pauseButton.Init();

            gameBox.Add(playButton);
            gameBox.Add(pauseButton);

            #endregion

            RefreshGameInformation();

            #endregion

            #region Optionspage

            OptionsPage      = tabControl.AddPage();
            OptionsPage.Text = "Optionen";

            #endregion

            #region SaveLoadPage

            #endregion

            manager.Add(tabControl);
        }