- This is some Work in progress to make Wagic less "game" dependent. This change especially is an attempt at moving away from some dangerous patents owned by some company. It introduces "modrules.xml", a global configuration file describing dynamic settings for any given Wagic mod. It is very basic for now, but allows to customize a bit. In particular, it allows to remove the concept of shop and deck editor from the game, dynamically generate the main menu, and represent card activation with a mask rather than a rotation. I have a sample in progress which I hope to submit in the days to come, a proof of concept (nothing fancy yet) for another type of game using these ideas, as well as a few other things I introduced recently. In the future, I am hoping to extend modrules.xml so that it entirely describes the rules of a given card game. the other files in rules.txt will describe "extensions" to the core rules, just like they do right now, so this new file does not make them obsolete. - Also fixed minor bugs I stumbled upon while developing
80 lines
2.0 KiB
C++
80 lines
2.0 KiB
C++
#ifndef _GAME_STATE_MENU_H_
|
|
#define _GAME_STATE_MENU_H_
|
|
|
|
#include <JGui.h>
|
|
#include <dirent.h>
|
|
#include "GameState.h"
|
|
#include "SimpleMenu.h"
|
|
#include "TextScroller.h"
|
|
|
|
class GameStateMenu: public GameState, public JGuiListener
|
|
{
|
|
private:
|
|
TextScroller * scroller;
|
|
int scrollerSet;
|
|
JGuiController* mGuiController;
|
|
SimpleMenu* subMenuController;
|
|
SimpleMenu* gameTypeMenu;
|
|
bool hasChosenGameType;
|
|
JQuadPtr mIcons[10];
|
|
JTexture * bgTexture;
|
|
JQuadPtr mBg;
|
|
JTexture * splashTex;
|
|
float mCreditsYPos;
|
|
int currentState;
|
|
int mVolume;
|
|
char nbcardsStr[400];
|
|
vector<string> langs;
|
|
vector<string> primitives;
|
|
string wallpaper;
|
|
int primitivesLoadCounter;
|
|
|
|
DIR *mDip;
|
|
struct dirent *mDit;
|
|
char mCurrentSetName[32];
|
|
char mCurrentSetFileName[512];
|
|
|
|
int mReadConf;
|
|
float timeIndex;
|
|
void fillScroller();
|
|
|
|
void setLang(int id);
|
|
string getLang(string s);
|
|
void loadLangMenu();
|
|
bool langChoices;
|
|
void runTest(); //!!
|
|
void listPrimitives();
|
|
void genNbCardsStr(); //computes the contents of nbCardsStr
|
|
void ensureMGuiController(); //creates the MGuiController if it doesn't exist
|
|
string loadRandomWallpaper(); //loads a list of string of textures that can be randolmy shown on the loading screen
|
|
|
|
void RenderTopMenu();
|
|
public:
|
|
|
|
GameStateMenu(GameApp* parent);
|
|
virtual ~GameStateMenu();
|
|
virtual void Create();
|
|
virtual void Destroy();
|
|
virtual void Start();
|
|
virtual void End();
|
|
virtual void Update(float dt);
|
|
virtual void Render();
|
|
virtual void ButtonPressed(int controllerId, int controlId);
|
|
|
|
int nextDirectory(const char * root, const char * file); // Retrieves the next directory to have matching file
|
|
void resetDirectory();
|
|
void createUsersFirstDeck(int setId);
|
|
virtual ostream& toString(ostream& out) const;
|
|
|
|
enum
|
|
{
|
|
MENU_CARD_PURCHASE = 2,
|
|
MENU_DECK_SELECTION = 10,
|
|
MENU_DECK_BUILDER = 11,
|
|
MENU_FIRST_DUEL_SUBMENU = 102,
|
|
MENU_LANGUAGE_SELECTION = 103,
|
|
};
|
|
};
|
|
|
|
#endif
|