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

Revision 4703, 4.9 KB checked in by dezhidki, 6 years ago (diff)

Talletus.

Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using CastleMaster.Graphics;
6using Microsoft.Xna.Framework;
7using Microsoft.Xna.Framework.Graphics;
8using CastleMaster.Input;
9using System.Windows.Forms;
10
11namespace CastleMaster.Guis
12{
13    public class GuiMainScreen : Gui
14    {
15        private const string ARROW = "@";
16        private const string DEMO_TEXT = " Demo";
17        private const string HELP1 = "<UP,DOWN> SCROLL";
18        private const string HELP2 = "<ENTER> SELECT";
19        private const string AUTHOR = "Game by Denis Zhidkikh";
20
21        private Game game;
22        private string[] optionsStart = { "Start", "Instructions", "Exit" };
23        private string[] optionsInGame = { "Continue", "Main menu", "Exit" };
24        private Action[] actionsStart, actionsInGame;
25        private int currentOption = 0;
26        private Rectangle backgroundRect;
27        private Vector2 logoPos, infoPos, helpPos, optionPos, optionOffset, arrowOffset;
28        private StringBuilder infoText, helpText;
29        private bool showInstructions = false;
30
31        public GuiMainScreen(GuiManager manager, Game game)
32            : base(manager)
33        {
34            this.game = game;
35            actionsStart = new Action[] { game.StartGame, ShowInstructions, game.Exit };
36            actionsInGame = new Action[] { Remove, ReturnToMain, game.Exit };
37            backgroundRect = new Rectangle(0, 0, Game.WIDTH, Game.HEIGHT);
38            logoPos = new Vector2(Game.WIDTH / 2 - 225, 10);
39
40            infoText = new StringBuilder(Game.VERSION).Append(DEMO_TEXT);
41            infoText.Append("\n").Append(AUTHOR);
42            infoPos = new Vector2(Game.WIDTH - 320, Game.HEIGHT - 50);
43
44            helpText = new StringBuilder(HELP1).Append("\n").Append(HELP2);
45            helpPos = new Vector2(10, Game.HEIGHT - 50);
46
47            optionPos = new Vector2(40, Game.HEIGHT / 2 - 40);
48            optionOffset = new Vector2(0, 25);
49            arrowOffset = new Vector2(-35, 0);
50        }
51
52        public override int Importance
53        {
54            get
55            {
56                return IMPORTANCE_HIGH;
57            }
58        }
59
60        public void ShowInstructions()
61        {
62            showInstructions = true;
63        }
64
65        public void ReturnToMain()
66        {
67            game.ResetGame();
68            manager.AddGui(this, true, true);
69        }
70
71        public override void Update()
72        {
73            if (InputHandler.HasKeyBeenPressed(Keys.Up))
74            {
75                currentOption--;
76                if (currentOption < 0) currentOption = 2;
77            }
78            else if (InputHandler.HasKeyBeenPressed(Keys.Down))
79            {
80                currentOption++;
81                if (currentOption > 2) currentOption = 0;
82            }
83            else if (InputHandler.HasKeyBeenPressed(Keys.Enter))
84            {
85                if (game.IsGameRunning)
86                    actionsInGame[currentOption].Invoke();
87                else
88                    actionsStart[currentOption].Invoke();
89            }
90        }
91
92        public override void Render(RenderHelper renderer)
93        {
94            if (!game.IsGameRunning)
95            {
96                renderer.SpriteBatch.Draw(Resources.SPRITE_GUI_BACKGROUND, backgroundRect, Color.White);
97                renderer.SpriteBatch.Draw(Resources.SPRITE_GUI_LOGO, logoPos, Color.White);
98                renderer.SpriteBatch.DrawString(Resources.FONT, infoText, infoPos, Color.White);
99                renderer.SpriteBatch.DrawString(Resources.FONT, helpText, helpPos, Color.White);
100
101                for (int i = 0; i < optionsStart.Length; i++)
102                {
103                    if (i == currentOption)
104                        renderer.SpriteBatch.DrawString(Resources.FONT, ARROW, optionPos + optionOffset * i + arrowOffset, Color.White, 0.0F, Vector2.Zero, 1.5F, SpriteEffects.None, 0.0F);
105                    renderer.SpriteBatch.DrawString(Resources.FONT, optionsStart[i], optionPos + optionOffset * i, Color.White, 0.0F, Vector2.Zero, 1.5F, SpriteEffects.None, 0.0F);
106                }
107            }
108            else
109            {
110                renderer.SpriteBatch.Draw(Resources.SPRITE_GUI_BACKGROUND_INGAME, backgroundRect, Color.White);
111                renderer.SpriteBatch.DrawString(Resources.FONT, helpText, helpPos, Color.White);
112                for (int i = 0; i < optionsInGame.Length; i++)
113                {
114                    if (i == currentOption)
115                        renderer.SpriteBatch.DrawString(Resources.FONT, ARROW, optionPos + optionOffset * i + arrowOffset, Color.White, 0.0F, Vector2.Zero, 1.5F, SpriteEffects.None, 0.0F);
116                    renderer.SpriteBatch.DrawString(Resources.FONT, optionsInGame[i], optionPos + optionOffset * i, Color.White, 0.0F, Vector2.Zero, 1.5F, SpriteEffects.None, 0.0F);
117                }
118            }
119
120           
121        }
122    }
123
124}
Note: See TracBrowser for help on using the repository browser.