#ifndef _GAME_STATE_H_ #define _GAME_STATE_H_ #define FADING_SPEED 350.0f class JGE; #include #include #include #include #include "DeckMetaData.h" #include "DeckMenu.h" using namespace std; enum ENUM_GAME_STATE { GAME_STATE_NONE = -1, GAME_STATE_MENU = 1, GAME_STATE_DUEL = 2, GAME_STATE_DECK_VIEWER = 3, GAME_STATE_SHOP = 4, GAME_STATE_OPTIONS = 5, GAME_STATE_AWARDS = 6, GAME_STATE_STORY = 7, GAME_STATE_TRANSITION = 8, GAME_STATE_MAX = 9, }; enum ENUM_GS_TRANSITION { TRANSITION_FADE = 0, TRANSITION_FADE_IN = 1, MAX_TRANSITION }; class GameApp; class SimpleMenu; class Player; class GameState { protected: GameApp* mParent; JGE* mEngine; string mStringID; public: GameState(GameApp* parent, string id); virtual ~GameState(){} virtual void Create(){} virtual void Destroy(){} virtual void Start(){} virtual void End(){} virtual void OnScroll(int, int) { } virtual void Update(float dt) = 0; virtual void Render() = 0; string getStringID() {return mStringID;}; // deck manipulation methods // 2010/09/15: // this was originally one method to do everything. That has been split up into two distinct // methods since the original was building a menu and returning a value. The first // creates the vector containing the deck information. The second will render that information // it makes it easier to manipulate the deck information menus. // generate the Deck Meta Data and build the menu items of the menu given static vector fillDeckMenu(SimpleMenu * _menu, const string& path, const string& smallDeckPrefix = "", Player * statsPlayer = NULL); // generate the Deck Meta Data and build the menu items of the menu given // Will display up to maxDecks if maxDecks is non 0,all decks in path otherwise static vector fillDeckMenu(DeckMenu * _menu, const string& path, const string& smallDeckPrefix = "", Player * statsPlayer = NULL, int maxDecks = 0); // build a vector of decks with the information passsed in. static vector BuildDeckList(const string& path, const string& smallDeckPrefix = "", Player * statsPlayer = NULL, int maxDecks = 0); // build menu items based on the vector static void renderDeckMenu(SimpleMenu * _menu, const vector& deckMetaDataList); // build menu items based on the vector static void renderDeckMenu(DeckMenu * _menu, const vector& deckMetaDataList); }; bool sortByName(DeckMetaData * d1, DeckMetaData * d2); #endif