00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00019
00020
00021
00023
00024
00026
00027 #ifndef MENU_H
00028 #define MENU_H
00029
00030 #include <string>
00031 #include <SFML/Graphics.hpp>
00032
00033 #include "Globals.hpp"
00034 #include "Bitmapfont.hpp"
00035 #include "MenuListField.hpp"
00036 #include "SaveManager.hpp"
00037
00038 #define MENU_BUTTON_HIT_DELAY 500
00039
00040 #define MENU_CLOSE_NONE 0
00041 #define MENU_CLOSE_START 1
00042 #define MENU_CLOSE_LOAD 2
00043 #define MENU_CLOSE_CREDITS 3
00044
00045 #define MENU_SUB_START 0
00046 #define MENU_SUB_LOAD 1
00047
00049
00053 class CMenu
00054 {
00055 public:
00057 CMenu();
00058 ~CMenu();
00059
00061 void Init(CBitmapFont* BitMapFont, int* MouseX, int* MouseY,
00062 bool* MouseDown);
00063
00065 std::string Update();
00066
00068 int Close()
00069 {
00070 int Close = m_Close;
00071 m_Close = MENU_CLOSE_NONE;
00072 return Close;
00073 }
00074
00076 void SetSubMenu(int Menu)
00077 {
00078 m_CurSubMenu = Menu;
00079 m_ListField.SetScroll(0);
00080 m_SaveListField.SetScroll(0);
00081 }
00082 private:
00083
00084 void RenderAll();
00085
00086
00087 void RenderStart();
00088
00089
00090 void RenderLoad();
00091
00092
00093
00094 int UpdateAll();
00095
00096
00097 void ReadCampaignData();
00098
00099
00100
00101 void ChangeSubMenuToLoad();
00102
00103
00104
00105 std::string GetCurSaveName();
00106
00107 CMenuListField m_ListField;
00108 CMenuListField m_SaveListField;
00109
00110 sf::Sprite m_BackSprite;
00111 sf::Sprite m_CreditsSprite;
00112 sf::Sprite m_TopSprite;
00113
00114 sf::Sprite m_StartSpriteUp;
00115 sf::Sprite m_StartSpriteDown;
00116
00117 sf::Sprite m_LoadSpriteUp;
00118 sf::Sprite m_LoadSpriteDown;
00119
00120 sf::Sprite m_ExitSpriteUp;
00121 sf::Sprite m_ExitSpriteDown;
00122
00123 sf::Sprite m_CreditsSpriteUp;
00124 sf::Sprite m_CreditsSpriteDown;
00125
00126 sf::Sprite m_BackSpriteUp;
00127 sf::Sprite m_BackSpriteDown;
00128
00129
00130 sf::Sprite m_ScrollUpSpriteDis;
00131 sf::Sprite m_ScrollUpSpriteUp;
00132 sf::Sprite m_ScrollUpSpriteDown;
00133
00134 sf::Sprite m_ScrollDownSpriteDis;
00135 sf::Sprite m_ScrollDownSpriteUp;
00136 sf::Sprite m_ScrollDownSpriteDown;
00137
00138 int* m_MouseX;
00139 int* m_MouseY;
00140 bool* m_MouseDown;
00141 bool m_HasHitMouse;
00142 int m_HasHitMouseTime;
00143
00144 bool m_PushingStart;
00145 bool m_PushingLoad;
00146 bool m_PushingCredits;
00147 bool m_PushingExit;
00148
00149 bool m_ScrollingUp;
00150 bool m_ScrollingDown;
00151
00152 int m_Close;
00153
00154 int m_CurSubMenu;
00155 };
00156 #endif