1 // ============================================================== 2 // This file is part of Glest (www.glest.org) 3 // 4 // Copyright (C) 2001-2008 Marti�o Figueroa 5 // 6 // You can redistribute this code and/or modify it under 7 // the terms of the GNU General Public License as published 8 // by the Free Software Foundation; either version 2 of the 9 // License, or (at your option) any later version 10 // ============================================================== 11 12 #ifndef _GLEST_GAME_MAINMENU_H_ 13 #define _GLEST_GAME_MAINMENU_H_ 14 15 #include "lang.h" 16 #include "console.h" 17 #include "vec.h" 18 #include "world.h" 19 #include "program.h" 20 #include "components.h" 21 #include "menu_background.h" 22 #include "game_settings.h" 23 24 namespace Glest{ namespace Game{ 25 26 //misc consts 27 struct MapInfo{ 28 Vec2i size; 29 int players; 30 string desc; 31 }; 32 33 struct ScenarioInfo 34 { 35 int difficulty; 36 ControlType factionControls[GameConstants::maxPlayers]; 37 int teams[GameConstants::maxPlayers]; 38 string factionTypeNames[GameConstants::maxPlayers]; 39 40 string mapName; 41 string tilesetName; 42 string techTreeName; 43 44 bool defaultUnits; 45 bool defaultResources; 46 bool defaultVictoryConditions; 47 48 string desc; 49 }; 50 51 class MenuState; 52 53 // ===================================================== 54 // class MainMenu 55 // 56 /// Main menu ProgramState 57 // ===================================================== 58 59 class MainMenu: public ProgramState{ 60 private: 61 //up 62 Program *program; 63 64 //shared 65 GameSettings gameSettings; 66 MenuBackground menuBackground; 67 68 MenuState *state; 69 70 //shared 71 int mouseX, mouseY; 72 int mouse2dAnim; 73 int fps, lastFps; 74 75 public: 76 MainMenu(Program *program); 77 ~MainMenu(); 78 getMenuBackground()79 MenuBackground *getMenuBackground() {return &menuBackground;} 80 81 virtual void render(); 82 virtual void update(); 83 virtual void tick(); 84 virtual void init(); 85 virtual void mouseMove(int x, int y, const MouseState *mouseState); 86 virtual void mouseDownLeft(int x, int y); 87 virtual void mouseDownRight(int x, int y); 88 virtual void keyDown(char key); 89 virtual void keyPress(char key); 90 91 void setState(MenuState *state); 92 }; 93 94 95 // =============================== 96 // class MenuState 97 // =============================== 98 99 class MenuState{ 100 protected: 101 Program *program; 102 103 MainMenu *mainMenu; 104 Camera camera; 105 106 public: 107 MenuState(Program *program, MainMenu *mainMenu, const string &stateName); ~MenuState()108 virtual ~MenuState(){}; 109 virtual void mouseClick(int x, int y, MouseButton mouseButton)=0; 110 virtual void mouseMove(int x, int y, const MouseState *mouseState)=0; 111 virtual void render()=0; update()112 virtual void update(){}; keyDown(char key)113 virtual void keyDown(char key){}; keyPress(char c)114 virtual void keyPress(char c){}; 115 getCamera()116 const Camera *getCamera() const {return &camera;} 117 }; 118 119 }}//end namespace 120 121 #endif 122