source: 2013/30/DenisZ/CastleMaster/CastleMaster/CastleMaster/Guis/GuiInstructions.cs @ 4753

Revision 4753, 3.5 KB checked in by dezhidki, 6 years ago (diff)
  • Lisätty kunnon ohjeet.
  • Ctrl + RMouse toimii nyt kunnolla (voi valita monta kerrallaan).
Line 
1using CastleMaster.Graphics;
2using CastleMaster.Input;
3using Microsoft.Xna.Framework;
4using System;
5using System.Collections.Generic;
6using System.Linq;
7using System.Text;
8using System.Windows.Forms;
9using Microsoft.Xna.Framework.Graphics;
10
11namespace CastleMaster.Guis
12{
13    public class GuiInstructions : Gui
14    {
15        private const String HELP_MOVE = "<LEFT, RIGHT> Switch Pages";
16        private const String HELP_CLOSE = "<X> Main menu";
17        private const String NAME = "Instructions";
18        private const String PAGE = "Page";
19        private const char AST = '/';
20
21        private GuiMainScreen mainMenu;
22        private Rectangle backGroundRect;
23        private Vector2 helpPos, pageNumPos, helpPos2;
24        private StringBuilder pageNumText;
25        private int currentPage = 0;
26        private Texture2D[] pages;
27
28        public GuiInstructions(GuiMainScreen mainMenu, GuiManager manager)
29            : base(manager)
30        {
31            this.mainMenu = mainMenu;
32            backGroundRect = new Rectangle(0, 0, Game.WIDTH, Game.HEIGHT);
33            helpPos = new Vector2(10, Game.HEIGHT - 50);
34
35            pages = new Texture2D[] { Resources.SPRITE_PAGE_WELCOME, Resources.SPRITE_PAGE_CONTROLS, Resources.SPRITE_PAGE_GUI, Resources.SPRITE_PAGE_BUILDINGS, Resources.SPRITE_PAGE_UNITS };
36            pageNumText = new StringBuilder(PAGE).Append(" 1/").Append(pages.Length);
37            pageNumPos = new Vector2(Game.WIDTH - 150, Game.HEIGHT - 50);
38
39            helpPos2 = new Vector2(helpPos.X, helpPos.Y + 16);
40        }
41
42        public override int Importance
43        {
44            get
45            {
46                return Gui.IMPORTANCE_HIGH;
47            }
48        }
49
50        private void ShowMainMenu()
51        {
52            Remove();
53            manager.AddGui(mainMenu, true, true);
54        }
55
56        public override void Update()
57        {
58            if (InputHandler.HasKeyBeenPressed(Keys.X))
59                ShowMainMenu();
60
61            if (InputHandler.HasKeyBeenPressed(Keys.Right))
62            {
63                currentPage++;
64                if (currentPage >= pages.Length)
65                    currentPage = 0;
66
67                pageNumText.Clear().Append(PAGE).Append(' ').Append(currentPage + 1).Append(AST).Append(pages.Length);
68            }
69            else if (InputHandler.HasKeyBeenPressed(Keys.Left))
70            {
71                currentPage--;
72                if (currentPage < 0)
73                    currentPage = pages.Length - 1;
74                pageNumText.Clear().Append(PAGE).Append(' ').Append(currentPage + 1).Append(AST).Append(pages.Length);
75            }
76
77        }
78
79        public override void Render(RenderHelper renderer)
80        {
81            renderer.SpriteBatch.Draw(pages[currentPage], backGroundRect, Color.White);
82
83            renderer.SpriteBatch.DrawString(Resources.FONT, HELP_CLOSE, helpPos, Color.White);
84            renderer.SpriteBatch.DrawString(Resources.FONT, pageNumText, pageNumPos, Color.White);
85            renderer.SpriteBatch.DrawString(Resources.FONT, HELP_MOVE, helpPos2, Color.White);
86        }
87    }
88
89    internal class Page
90    {
91        public virtual void Render(RenderHelper renderer) { }
92    }
93
94    internal class Page1 : Page
95    {
96        private const string TEST = "Hello, world!";
97
98        public override void Render(RenderHelper renderer)
99        {
100            renderer.SpriteBatch.DrawString(Resources.FONT, TEST, new Vector2(10, 100), Color.White);
101        }
102    }
103}
Note: See TracBrowser for help on using the repository browser.