started to work on the highscore

This commit is contained in:
2010-06-10 23:30:29 +02:00
parent a9ffd12b43
commit 38096a4502
9 changed files with 330 additions and 57 deletions
+38 -1
View File
@@ -13,13 +13,35 @@ class Model : public Engine::ModelBase {
int DoLoadLevel (const char* filename);
int DoSaveLevel (const char* filename);
bool OnLevelComplete();
bool OnGameOver();
/** \brief Resets values from a previous game */
void OnNewGame ();
int GetPlayerLives () { return mPlayerLives; };
unsigned int GetPoints () { return mPoints; };
std::string GetPlayerName() { return mPlayerName; };
void SetPlayerName(const std::string &name) { mPlayerName = name; };
float GetWorldWidth ();
float GetWorldHeight ();
struct HighscoreEntry {
HighscoreEntry(): name ("unknown"), points (0) { };
HighscoreEntry (const char *e_name, const unsigned int e_points):
name (e_name), points (e_points) { };
std::string name;
unsigned int points;
};
/* Highscore */
void LoadHighscoreList ();
void SaveHighscoreList ();
unsigned int AddHighscoreEntry(const std::string &name, const unsigned int points);
bool HighscoreCmp (HighscoreEntry a, HighscoreEntry b);
std::list<HighscoreEntry> mHighscoreList;
unsigned int mNewestHighscoreEntryIndex;
protected:
/** \brief Initializes the system */
virtual int OnInit (int argc, char* argv[]);
@@ -27,7 +49,9 @@ class Model : public Engine::ModelBase {
Engine::ModelBase::OnDestroy();
mAsteroids.clear();
mLevelList.clear();
SaveHighscoreList();
delete mLevelCompleteEventHandler;
delete mGameOverEventHandler;
};
virtual void OnRegisterCommands ();
@@ -42,8 +66,9 @@ class Model : public Engine::ModelBase {
int mPlayerLives;
unsigned int mPoints;
std::vector<std::string> mLevelList;
unsigned int mCurrentLevelIndex;
std::string mPlayerName;
std::vector<std::string> mLevelList;
/* event handler class definitions */
class LevelCompleteEventHandler : public Engine::EventListenerBase {
@@ -57,8 +82,20 @@ class Model : public Engine::ModelBase {
Model *mModel;
};
class GameOverEventHandler : public Engine::EventListenerBase {
public:
explicit GameOverEventHandler (Model *view) : mModel (view) {};
virtual bool HandleEvent (const Engine::EventBasePtr &event) const {
return mModel->OnGameOver();
}
private:
GameOverEventHandler() {};
Model *mModel;
};
/* event handler member variables */
LevelCompleteEventHandler *mLevelCompleteEventHandler;
GameOverEventHandler *mGameOverEventHandler;
friend class View;
};