diff --git a/source/gui/GameTDB.cpp b/source/gui/GameTDB.cpp
index 7886d193..e738caf8 100644
--- a/source/gui/GameTDB.cpp
+++ b/source/gui/GameTDB.cpp
@@ -31,7 +31,7 @@
#include "text.hpp"
#include "config/config.hpp"
#include "gecko/gecko.h"
-
+#include "memory/mem2.hpp"
#define NAME_OFFSET_DB "gametdb_offsets.bin"
#define MAXREADSIZE 1024*1024 //Cache size only for parsing the offsets: 1MB
@@ -54,12 +54,12 @@ static const ReplaceStruct Replacements[] =
};
GameTDB::GameTDB()
- : isLoaded(false), isParsed(false), file(0), filepath(0), LangCode("EN"), GameNodeCache(0)
+ : isLoaded(false), isParsed(false), file(0), filepath(0), LangCode("EN"), GameNodeCache(NULL)
{
}
GameTDB::GameTDB(const char *filepath)
- : isLoaded(false), isParsed(false), file(0), filepath(0), LangCode("EN"), GameNodeCache(0)
+ : isLoaded(false), isParsed(false), file(0), filepath(0), LangCode("EN"), GameNodeCache(NULL)
{
OpenFile(filepath);
}
@@ -108,7 +108,7 @@ void GameTDB::CloseFile()
OffsetMap.clear();
if(GameNodeCache)
- delete [] GameNodeCache;
+ MEM2_free(GameNodeCache);
GameNodeCache = NULL;
if(file)
@@ -143,24 +143,22 @@ bool GameTDB::LoadGameOffsets(const char *path)
bool result = ParseFile();
if(result)
SaveGameOffsets(OffsetDBPath.c_str());
-
return result;
}
- u64 ExistingVersion = GetGameTDBVersion();
- u64 Version = 0;
- u32 NodeCount = 0;
+ u64 ExistingVersion = GetGameTDBVersion();
+ u64 Version = 0;
+ u32 NodeCount = 0;
fread(&Version, 1, sizeof(Version), fp);
if(ExistingVersion != Version)
{
- fclose(fp);
- bool result = ParseFile();
- if(result)
- SaveGameOffsets(OffsetDBPath.c_str());
-
- return result;
+ fclose(fp);
+ bool result = ParseFile();
+ if(result)
+ SaveGameOffsets(OffsetDBPath.c_str());
+ return result;
}
fread(&NodeCount, 1, sizeof(NodeCount), fp);
@@ -171,7 +169,6 @@ bool GameTDB::LoadGameOffsets(const char *path)
bool result = ParseFile();
if(result)
SaveGameOffsets(OffsetDBPath.c_str());
-
return result;
}
@@ -183,7 +180,6 @@ bool GameTDB::LoadGameOffsets(const char *path)
bool result = ParseFile();
if(result)
SaveGameOffsets(OffsetDBPath.c_str());
-
return result;
}
@@ -262,13 +258,13 @@ char *GameTDB::LoadGameNode(const char *id)
if(!offset)
return NULL;
- char *data = new (std::nothrow) char[offset->nodesize+1];
+ char *data = (char*)MEM2_alloc(offset->nodesize+1);
if(!data)
return NULL;
if((read = GetData(data, offset->gamenode, offset->nodesize)) != offset->nodesize)
{
- delete [] data;
+ MEM2_free(data);
return NULL;
}
@@ -281,23 +277,21 @@ char *GameTDB::GetGameNode(const char *id)
{
char *data = NULL;
- if(GameNodeCache != 0 && strncmp(id, GameIDCache, strlen(GameIDCache)) == 0)
+ if(GameNodeCache != NULL && strncmp(id, GameIDCache, strlen(GameIDCache)) == 0)
{
- data = new (std::nothrow) char[strlen(GameNodeCache)+1];
+ data = (char*)MEM2_alloc(strlen(GameNodeCache)+1);
if(data)
strcpy(data, GameNodeCache);
}
else
{
if(GameNodeCache)
- delete [] GameNodeCache;
-
+ MEM2_free(GameNodeCache);
GameNodeCache = LoadGameNode(id);
-
if(GameNodeCache)
{
snprintf(GameIDCache, sizeof(GameIDCache), id);
- data = new (std::nothrow) char[strlen(GameNodeCache)+1];
+ data = (char*)MEM2_alloc(strlen(GameNodeCache)+1);
if(data)
strcpy(data, GameNodeCache);
}
@@ -317,7 +311,7 @@ GameOffsets *GameTDB::GetGameOffset(const char *gameID)
return 0;
}
-static inline char *CleanText(char *in_text)
+static inline char *CleanText(char * &in_text)
{
if(!in_text)
return NULL;
@@ -409,7 +403,7 @@ bool GameTDB::ParseFile()
if(!file)
return false;
- char *Line = new (std::nothrow) char[MAXREADSIZE+1];
+ char *Line = (char*)MEM2_alloc(MAXREADSIZE+1);
if(!Line)
return false;
@@ -454,59 +448,48 @@ bool GameTDB::ParseFile()
OffsetMap[size].nodesize = (gameEndNode-gameNode);
gameNode = gameEndNode;
}
-
if(readnew)
continue;
-
currentPos += read;
}
-
- delete [] Line;
-
+ MEM2_free(Line);
return true;
}
-bool GameTDB::FindTitle(char *data, string & title, string langCode)
+bool GameTDB::FindTitle(char *data, const char * &title, const string &langCode)
{
char *language = SeekLang(data, langCode.c_str());
- if(!language)
+ if(language == NULL)
{
language = SeekLang(data, "EN");
- if(!language)
+ if(language == NULL)
return false;
}
+ title = GetNodeText(language, "
", "");
- char *the_title = GetNodeText(language, "", "");
- if(!the_title)
+ if(title == NULL)
return false;
-
- char tmp[64];
- strncpy(tmp, the_title, sizeof(tmp) - 1);
- tmp[sizeof(tmp) - 1] = '\0';
- title=tmp;
return true;
}
-bool GameTDB::GetTitle(const char *id, string & title)
+bool GameTDB::GetTitle(const char *id, const char * &title)
{
- title = "";
- if(!id)
+ title = NULL;
+ if(id == NULL)
return false;
char *data = GetGameNode(id);
- if(!data)
+ if(data == NULL)
return false;
-
bool retval = FindTitle(data, title, LangCode);
-
- delete [] data;
+ MEM2_free(data);
return retval;
}
-bool GameTDB::GetSynopsis(const char *id, string & synopsis)
+bool GameTDB::GetSynopsis(const char *id, const char * &synopsis)
{
- synopsis = "";
+ synopsis = NULL;
if(!id)
return false;
@@ -515,99 +498,73 @@ bool GameTDB::GetSynopsis(const char *id, string & synopsis)
return false;
char *language = SeekLang(data, LangCode.c_str());
- if(!language)
+ if(language == NULL)
{
language = SeekLang(data, "EN");
- if(!language)
+ if(language == NULL)
{
- delete [] data;
+ MEM2_free(data);
return false;
}
}
+ synopsis = GetNodeText(language, "", "");
+ MEM2_free(data);
- char *the_synopsis = GetNodeText(language, "", "");
- if(!the_synopsis)
- {
- delete [] data;
+ if(synopsis == NULL)
return false;
- }
-
- synopsis = the_synopsis;
-
- delete [] data;
-
return true;
}
-bool GameTDB::GetRegion(const char *id, string & region)
+bool GameTDB::GetRegion(const char *id, const char * ®ion)
{
- region = "";
+ region = NULL;
if(!id)
return false;
char *data = GetGameNode(id);
if(!data)
return false;
+ region = GetNodeText(data, "", "");
+ MEM2_free(data);
- char *the_region = GetNodeText(data, "", "");
- if(!the_region)
- {
- delete [] data;
+ if(region == NULL)
return false;
- }
-
- region = the_region;
-
- delete [] data;
-
return true;
}
-bool GameTDB::GetDeveloper(const char *id, string & dev)
+bool GameTDB::GetDeveloper(const char *id, const char * &dev)
{
- dev = "";
+ dev = NULL;
+ if(id == NULL)
+ return false;
+
+ char *data = GetGameNode(id);
+ if(data == NULL)
+ return false;
+
+ dev = GetNodeText(data, "", "");
+ MEM2_free(data);
+
+ if(dev == NULL)
+ return false;
+ return true;
+}
+
+bool GameTDB::GetPublisher(const char *id, const char * &pub)
+{
+ pub = NULL;
if(!id)
return false;
char *data = GetGameNode(id);
- if(!data)
+ if(data == NULL)
return false;
- char *the_dev = GetNodeText(data, "", "");
- if(!the_dev)
- {
- delete [] data;
+ pub = GetNodeText(data, "", "");
+ MEM2_free(data);
+
+ if(pub == NULL)
return false;
- }
-
- dev = the_dev;
-
- delete [] data;
-
- return true;
-}
-
-bool GameTDB::GetPublisher(const char *id, string & pub)
-{
- pub = "";
- if(!id)
- return false;
-
- char *data = GetGameNode(id);
- if(!data)
- return false;
-
- char *the_pub = GetNodeText(data, "", "");
- if(!the_pub)
- {
- delete [] data;
- return false;
- }
-
- pub = the_pub;
-
- delete [] data;
-
return true;
}
@@ -623,7 +580,7 @@ u32 GameTDB::GetPublishDate(const char *id)
char *year_string = GetNodeText(data, "");
if(!year_string)
{
- delete [] data;
+ MEM2_free(data);
return 0;
}
@@ -634,7 +591,7 @@ u32 GameTDB::GetPublishDate(const char *id)
char *month_string = strstr(year_string, "month=\"");
if(!month_string)
{
- delete [] data;
+ MEM2_free(data);
return 0;
}
@@ -645,7 +602,7 @@ u32 GameTDB::GetPublishDate(const char *id)
char *day_string = strstr(month_string, "day=\"");
if(!day_string)
{
- delete [] data;
+ MEM2_free(data);
return 0;
}
@@ -653,60 +610,27 @@ u32 GameTDB::GetPublishDate(const char *id)
day = atoi(day_string);
- delete [] data;
+ MEM2_free(data);
return ((year & 0xFFFF) << 16 | (month & 0xFF) << 8 | (day & 0xFF));
}
-bool GameTDB::GetGenres(const char *id, string & gen)
+bool GameTDB::GetGenres(const char *id, const char * &gen)
{
- vector genre;
+ gen = NULL;
- gen = "";
- if(!id)
+ if(id == NULL)
return false;
char *data = GetGameNode(id);
- if(!data)
+ if(data == NULL)
return false;
- char *the_genre = GetNodeText(data, "", "");
- if(!the_genre)
- {
- delete [] data;
+ gen = GetNodeText(data, "", "");
+ MEM2_free(data);
+
+ if(gen == NULL)
return false;
- }
-
- u32 genre_num = 0;
- const char *ptr = the_genre;
-
- while(*ptr != '\0')
- {
- if(genre_num >= genre.size())
- genre.resize(genre_num+1);
-
- if(*ptr == ',' || *ptr == '/' || *ptr == ';')
- {
- ptr++;
- while(*ptr == ' ')
- ptr++;
- genre_num++;
- continue;
- }
-
- if(genre[genre_num].size() == 0)
- genre[genre_num].push_back(toupper((int)*ptr));
- else
- genre[genre_num].push_back(*ptr);
-
- ++ptr;
- }
- genre[genre_num].push_back('\0');
-
- delete [] data;
-
- gen = vectorToString(genre, ", ");
-
return true;
}
@@ -743,7 +667,7 @@ int GameTDB::GetRating(const char *id)
char *rating_text = GetNodeText(data, "");
if(!rating_text)
{
- delete [] data;
+ MEM2_free(data);
return rating;
}
@@ -756,14 +680,14 @@ int GameTDB::GetRating(const char *id)
else if(strncmp(rating_text, "GRB", 4) == 0)
rating = GAMETDB_RATING_TYPE_GRB;
- delete [] data;
+ MEM2_free(data);
return rating;
}
-bool GameTDB::GetRatingValue(const char *id, string & rating_value)
+bool GameTDB::GetRatingValue(const char *id, const char * &rating_value)
{
- rating_value = "";
+ rating_value = NULL;
if(!id)
return false;
@@ -774,21 +698,15 @@ bool GameTDB::GetRatingValue(const char *id, string & rating_value)
char *rating_text = GetNodeText(data, "");
if(!rating_text)
{
- delete [] data;
+ MEM2_free(data);
return false;
}
- char *value_text = GetNodeText(rating_text, "value=\"", "\"");
- if(!value_text)
- {
- delete [] data;
+ rating_value = GetNodeText(rating_text, "value=\"", "\"");
+ MEM2_free(data);
+
+ if(rating_value == NULL)
return false;
- }
-
- rating_value = value_text;
-
- delete [] data;
-
return true;
}
@@ -805,7 +723,7 @@ int GameTDB::GetRatingDescriptors(const char *id, vector & desc_list)
char *descriptor_text = GetNodeText(data, "", "");
if(!descriptor_text)
{
- delete [] data;
+ MEM2_free(data);
return -1;
}
@@ -831,7 +749,7 @@ int GameTDB::GetRatingDescriptors(const char *id, vector & desc_list)
++descriptor_text;
}
- delete [] data;
+ MEM2_free(data);
return desc_list.size();
}
@@ -850,7 +768,7 @@ int GameTDB::GetWifiPlayers(const char *id)
char *PlayersNode = GetNodeText(data, "");
if(!PlayersNode)
{
- delete [] data;
+ MEM2_free(data);
return players;
}
@@ -872,7 +790,7 @@ int GameTDB::GetWifiFeatures(const char *id, vector & feat_list)
char *feature_text = GetNodeText(data, "", "");
if(!feature_text)
{
- delete [] data;
+ MEM2_free(data);
return -1;
}
@@ -902,7 +820,7 @@ int GameTDB::GetWifiFeatures(const char *id, vector & feat_list)
++feature_text;
}
- delete [] data;
+ MEM2_free(data);
return feat_list.size();
}
@@ -921,7 +839,7 @@ int GameTDB::GetPlayers(const char *id)
char *PlayersNode = GetNodeText(data, "");
if(!PlayersNode)
{
- delete [] data;
+ MEM2_free(data);
return players;
}
@@ -943,7 +861,7 @@ int GameTDB::GetAccessories(const char *id, vector & acc_list)
char *ControlsNode = GetNodeText(data, "");
if(!ControlsNode)
{
- delete [] data;
+ MEM2_free(data);
return -1;
}
@@ -961,7 +879,7 @@ int GameTDB::GetAccessories(const char *id, vector & acc_list)
char *requiredField = strstr(ControlsNode, "required=\"");
if(!requiredField)
{
- delete [] data;
+ MEM2_free(data);
return -1;
}
@@ -976,7 +894,7 @@ int GameTDB::GetAccessories(const char *id, vector & acc_list)
list_num++;
}
- delete [] data;
+ MEM2_free(data);
return acc_list.size();
}
@@ -1010,7 +928,7 @@ u32 GameTDB::GetCaseColor(const char *id)
if(color != 0xffffffff)
gprintf("GameTDB: Found alternate color(%x) for: %s\n", color, id);
- delete [] data;
+ MEM2_free(data);
return color;
}
@@ -1031,7 +949,7 @@ int GameTDB::GetCaseVersions(const char *id)
char *PlayersNode = GetNodeText(data, "case versions=\"", "\"");
if(!PlayersNode)
{
- delete [] data;
+ MEM2_free(data);
return altcase;
}
@@ -1040,32 +958,6 @@ int GameTDB::GetCaseVersions(const char *id)
return altcase;
}
-bool GameTDB::GetGameXMLInfo(const char *id, GameXMLInfo *gameInfo)
-{
- if(!id || !gameInfo)
- return false;
-
- gameInfo->GameID = id;
-
- GetTitle(id, gameInfo->Title);
- GetSynopsis(id, gameInfo->Synopsis);
- GetRegion(id, gameInfo->Region);
- GetDeveloper(id, gameInfo->Developer);
- GetPublisher(id, gameInfo->Publisher);
- gameInfo->PublishDate = GetPublishDate(id);
- GetGenres(id, gameInfo->Genres);
- gameInfo->RatingType = GetRating(id);
- GetRatingValue(id, gameInfo->RatingValue);
- GetRatingDescriptors(id, gameInfo->RatingDescriptors);
- gameInfo->WifiPlayers = GetWifiPlayers(id);
- GetWifiFeatures(id, gameInfo->WifiFeatures);
- gameInfo->Players = GetPlayers(id);
- GetAccessories(id, gameInfo->Accessories);
- gameInfo->CaseColor = GetCaseColor(id);
-
- return true;
-}
-
bool GameTDB::IsLoaded()
{
return isLoaded;
diff --git a/source/gui/GameTDB.hpp b/source/gui/GameTDB.hpp
index 1f07ae62..9016d27f 100644
--- a/source/gui/GameTDB.hpp
+++ b/source/gui/GameTDB.hpp
@@ -43,27 +43,6 @@ typedef struct _Accessory
bool Required;
} Accessory;
-typedef struct _GameXMLInfo
-{
- string GameID;
- string Region;
- string Title;
- string Synopsis;
- string Developer;
- string Publisher;
- unsigned int PublishDate;
- string Genres;
- int RatingType;
- string RatingValue;
- vector RatingDescriptors;
- int WifiPlayers;
- vector WifiFeatures;
- int Players;
- vector Accessories;
- int CaseColor;
-
-} GameXMLInfo;
-
typedef struct _GameOffsets
{
char gameID[7];
@@ -73,97 +52,95 @@ typedef struct _GameOffsets
class GameTDB
{
- public:
- //! Constructor
- GameTDB();
- //! Constructor
- //! If filepath is passed the xml file is opened and the node offsets are loaded
- GameTDB(const char * filepath);
- //! Destructor
- ~GameTDB();
- //! If filepath is passed the xml file is opened and the node offsets are loaded
- bool OpenFile(const char * filepath);
- //! Closes the GameTDB xml file
- void CloseFile();
- //! Refresh the GameTDB xml file, in case the file has been updated
- void Refresh();
- //! Set the language code which should be use to find the appropriate language
- //! If the language code is not found, the language code defaults to EN
- void SetLanguageCode(const char * code) { if(code) LangCode = code; };
- //! Get the current set language code
- const char * GetLanguageCode() { return LangCode.c_str(); };
- //! Get the title of a specific game id in the language defined in LangCode
- bool GetTitle(const char * id, string & title);
- //! Get the synopsis of a specific game id in the language defined in LangCode
- bool GetSynopsis(const char * id, string & synopsis);
- //! Get the region of a game for a specific game id
- bool GetRegion(const char * id, string & region);
- //! Get the developer of a game for a specific game id
- bool GetDeveloper(const char * id, string & dev);
- //! Get the publisher of a game for a specific game id
- bool GetPublisher(const char * id, string & pub);
- //! Get the publish date of a game for a specific game id
- //! First 1 byte is the day, than 1 byte month and last 2 bytes is the year
- //! year = (return >> 16), month = (return >> 8) & 0xFF, day = return & 0xFF
- unsigned int GetPublishDate(const char * id);
- //! Get the genre list of a game for a specific game id
- bool GetGenres(const char * id, string & gen);
- //! Get the rating type for a specific game id
- //! The rating type can be converted to a string with GameTDB::RatingToString(rating)
- int GetRating(const char * id);
- //! Get the rating value for a specific game id
- bool GetRatingValue(const char * id, string & rating_value);
- //! Get the rating descriptor list inside a vector for a specific game id
- //! Returns the amount of descriptors found or -1 if failed
- int GetRatingDescriptors(const char * id, vector & desc_list);
- //! Get the wifi player count for a specific game id
- //! Returns the amount of wifi players or -1 if failed
- int GetWifiPlayers(const char * id);
- //! Get the wifi feature list inside a vector for a specific game id
- //! Returns the amount of wifi features found or -1 if failed
- int GetWifiFeatures(const char * id, vector & feat_list);
- //! Get the player count for a specific game id
- //! Returns the amount of players or -1 if failed
- int GetPlayers(const char * id);
- //! Returns the amount of accessoires found or -1 if failed
- //! Get the accessoire (inputs) list inside a vector for a specific game id
- int GetAccessories(const char * id, vector & acc_list);
- //! Get the box (case) color for a specific game id
- //! Returns the color in RGB (first 3 bytes)
- unsigned int GetCaseColor(const char * id);
- int GetCaseVersions(const char * id);
- //! Get the complete game info in the GameXMLInfo struct
- bool GetGameXMLInfo(const char * id, GameXMLInfo * gameInfo);
- //! Convert a specific game rating to a string
- static const char * RatingToString(int rating);
- //! Get the version of the gametdb xml database
- unsigned long long GetGameTDBVersion();
- //! Get the entry count in the xml database
- inline size_t GetEntryCount() { return OffsetMap.size(); };
- //! Is a database loaded
- bool IsLoaded();
- private:
- bool ParseFile();
- bool LoadGameOffsets(const char * path);
- bool SaveGameOffsets(const char * path);
- bool CheckTitlesIni(const char * path);
- bool FindTitle(char * data, string & title, string langCode);
- unsigned int FindCaseColor(char * data);
- inline int GetData(char * data, int offset, int size);
- inline char * LoadGameNode(const char * id);
- inline char * GetGameNode(const char * id);
- inline GameOffsets * GetGameOffset(const char * id);
- inline char * SeekLang(char * text, const char * langcode);
- inline char * GetNodeText(char * data, const char * nodestart, const char * nodeend);
+public:
+ //! Constructor
+ GameTDB();
+ //! Constructor
+ //! If filepath is passed the xml file is opened and the node offsets are loaded
+ GameTDB(const char * filepath);
+ //! Destructor
+ ~GameTDB();
+ //! If filepath is passed the xml file is opened and the node offsets are loaded
+ bool OpenFile(const char * filepath);
+ //! Closes the GameTDB xml file
+ void CloseFile();
+ //! Refresh the GameTDB xml file, in case the file has been updated
+ void Refresh();
+ //! Set the language code which should be use to find the appropriate language
+ //! If the language code is not found, the language code defaults to EN
+ void SetLanguageCode(const char * code) { if(code) LangCode = code; };
+ //! Get the current set language code
+ const char * GetLanguageCode() { return LangCode.c_str(); };
+ //! Get the title of a specific game id in the language defined in LangCode
+ bool GetTitle(const char *id, const char * &title);
+ //! Get the synopsis of a specific game id in the language defined in LangCode
+ bool GetSynopsis(const char *id, const char * &synopsis);
+ //! Get the region of a game for a specific game id
+ bool GetRegion(const char *id, const char * ®ion);
+ //! Get the developer of a game for a specific game id
+ bool GetDeveloper(const char *id, const char * &dev);
+ //! Get the publisher of a game for a specific game id
+ bool GetPublisher(const char *id, const char * &pub);
+ //! Get the publish date of a game for a specific game id
+ //! First 1 byte is the day, than 1 byte month and last 2 bytes is the year
+ //! year = (return >> 16), month = (return >> 8) & 0xFF, day = return & 0xFF
+ unsigned int GetPublishDate(const char *id);
+ //! Get the genre list of a game for a specific game id
+ bool GetGenres(const char * id, const char * &gen);
+ //! Get the rating type for a specific game id
+ //! The rating type can be converted to a string with GameTDB::RatingToString(rating)
+ int GetRating(const char * id);
+ //! Get the rating value for a specific game id
+ bool GetRatingValue(const char * id, const char * &rating_value);
+ //! Get the rating descriptor list inside a vector for a specific game id
+ //! Returns the amount of descriptors found or -1 if failed
+ int GetRatingDescriptors(const char * id, vector & desc_list);
+ //! Get the wifi player count for a specific game id
+ //! Returns the amount of wifi players or -1 if failed
+ int GetWifiPlayers(const char * id);
+ //! Get the wifi feature list inside a vector for a specific game id
+ //! Returns the amount of wifi features found or -1 if failed
+ int GetWifiFeatures(const char * id, vector & feat_list);
+ //! Get the player count for a specific game id
+ //! Returns the amount of players or -1 if failed
+ int GetPlayers(const char * id);
+ //! Returns the amount of accessoires found or -1 if failed
+ //! Get the accessoire (inputs) list inside a vector for a specific game id
+ int GetAccessories(const char * id, vector & acc_list);
+ //! Get the box (case) color for a specific game id
+ //! Returns the color in RGB (first 3 bytes)
+ unsigned int GetCaseColor(const char * id);
+ int GetCaseVersions(const char * id);
+ //! Convert a specific game rating to a string
+ static const char * RatingToString(int rating);
+ //! Get the version of the gametdb xml database
+ unsigned long long GetGameTDBVersion();
+ //! Get the entry count in the xml database
+ inline size_t GetEntryCount() { return OffsetMap.size(); };
+ //! Is a database loaded
+ bool IsLoaded();
+private:
+ bool ParseFile();
+ bool LoadGameOffsets(const char * path);
+ bool SaveGameOffsets(const char * path);
+ bool CheckTitlesIni(const char * path);
+ bool FindTitle(char *data, const char * &title, const string &langCode);
+ unsigned int FindCaseColor(char * data);
+ inline int GetData(char * data, int offset, int size);
+ inline char * LoadGameNode(const char * id);
+ inline char * GetGameNode(const char * id);
+ inline GameOffsets * GetGameOffset(const char * id);
+ inline char * SeekLang(char * text, const char * langcode);
+ inline char * GetNodeText(char *data, const char *nodestart, const char *nodeend);
- bool isLoaded;
- bool isParsed;
- vector OffsetMap;
- FILE * file;
- const char *filepath;
- string LangCode;
- char * GameNodeCache;
- char GameIDCache[7];
+ bool isLoaded;
+ bool isParsed;
+ vector OffsetMap;
+ FILE * file;
+ const char *filepath;
+ string LangCode;
+ char *GameNodeCache;
+ char GameIDCache[7];
};
#endif
diff --git a/source/list/ListGenerator.cpp b/source/list/ListGenerator.cpp
index d4e74d72..b000fc1d 100644
--- a/source/list/ListGenerator.cpp
+++ b/source/list/ListGenerator.cpp
@@ -70,18 +70,18 @@ static void AddISO(const char *GameID, const char *GameTitle, const char *GamePa
if(GameID != NULL) strncpy(ListElement.id, GameID, 6);
if(GamePath != NULL) strncpy(ListElement.path, GamePath, sizeof(ListElement.path) - 1);
ListElement.casecolor = CustomTitles.getColor("COVERS", ListElement.id, GameColor).intVal();
- string CustomTitle = CustomTitles.getString("TITLES", ListElement.id);
+ const char *CustomTitle = CustomTitles.getString("TITLES", ListElement.id).c_str();
if(gameTDB.IsLoaded())
{
if(ListElement.casecolor == GameColor)
ListElement.casecolor = gameTDB.GetCaseColor(ListElement.id);
- if(CustomTitle.size() == 0)
- gameTDB.GetTitle(ListElement.id, CustomTitle);
ListElement.wifi = gameTDB.GetWifiPlayers(ListElement.id);
ListElement.players = gameTDB.GetPlayers(ListElement.id);
+ if(CustomTitle == NULL || CustomTitle[0] == '\0')
+ gameTDB.GetTitle(ListElement.id, CustomTitle);
}
- if(CustomTitle.size() > 0)
- mbstowcs(ListElement.title, CustomTitle.c_str(), 63);
+ if(CustomTitle != NULL && CustomTitle[0] != '\0')
+ mbstowcs(ListElement.title, CustomTitle, 63);
else if(GameTitle != NULL)
mbstowcs(ListElement.title, GameTitle, 63);
Asciify(ListElement.title);
@@ -201,18 +201,18 @@ static void Create_Channel_List()
ListElement.settings[1] = TITLE_LOWER(chan->title);
strncpy(ListElement.id, chan->id, 4);
ListElement.casecolor = CustomTitles.getColor("COVERS", ListElement.id, 1).intVal();
- string CustomTitle = CustomTitles.getString("TITLES", ListElement.id);
+ const char *CustomTitle = CustomTitles.getString("TITLES", ListElement.id).c_str();
if(gameTDB.IsLoaded())
{
if(ListElement.casecolor == 1)
ListElement.casecolor = gameTDB.GetCaseColor(ListElement.id);
- if(CustomTitle.size() == 0)
- gameTDB.GetTitle(ListElement.id, CustomTitle);
ListElement.wifi = gameTDB.GetWifiPlayers(ListElement.id);
ListElement.players = gameTDB.GetPlayers(ListElement.id);
+ if(CustomTitle == NULL || CustomTitle[0] == '\0')
+ gameTDB.GetTitle(ListElement.id, CustomTitle);
}
- if(CustomTitle.size() > 0)
- mbstowcs(ListElement.title, CustomTitle.c_str(), 63);
+ if(CustomTitle != NULL && CustomTitle[0] != '\0')
+ mbstowcs(ListElement.title, CustomTitle, 63);
else
wcsncpy(ListElement.title, chan->name, 64);
ListElement.type = TYPE_CHANNEL;
diff --git a/source/menu/menu.cpp b/source/menu/menu.cpp
index fbe5ff52..f8a5ecdb 100644
--- a/source/menu/menu.cpp
+++ b/source/menu/menu.cpp
@@ -1668,60 +1668,59 @@ void CMenu::_initCF(void)
if (ageLock < 19)
{
int ageRated = min(max(gameAgeList.getInt(domain, id), 0), 19);
-
- if(ageRated == 0 && (element->type == TYPE_WII_GAME || element->type == TYPE_CHANNEL))
+ if(ageRated == 0 && gametdb.IsLoaded() && (element->type == TYPE_WII_GAME || element->type == TYPE_CHANNEL))
{
- GameXMLInfo gameinfo;
- if(gametdb.IsLoaded() && gametdb.GetGameXMLInfo(id.c_str(), &gameinfo))
+ const char *RatingValue = NULL;
+ if(gametdb.GetRatingValue(id.c_str(), RatingValue))
{
- switch(gameinfo.RatingType)
+ switch(gametdb.GetRating(id.c_str()))
{
case GAMETDB_RATING_TYPE_CERO:
- if (gameinfo.RatingValue == "A")
+ if(RatingValue[0] == 'A')
ageRated = 3;
- else if (gameinfo.RatingValue == "B")
+ else if(RatingValue[0] == 'B')
ageRated = 12;
- else if (gameinfo.RatingValue == "D")
+ else if(RatingValue[0] == 'D')
ageRated = 15;
- else if (gameinfo.RatingValue == "C")
+ else if(RatingValue[0] == 'C')
ageRated = 17;
- else if (gameinfo.RatingValue == "Z")
+ else if(RatingValue[0] == 'Z')
ageRated = 18;
break;
case GAMETDB_RATING_TYPE_ESRB:
- if (gameinfo.RatingValue == "E")
+ if(RatingValue[0] == 'E')
ageRated = 6;
- else if (gameinfo.RatingValue == "EC")
+ else if(memcmp(RatingValue, "EC", 2) == 0)
ageRated = 3;
- else if (gameinfo.RatingValue == "E10+")
+ else if(memcmp(RatingValue, "E10+", 4) == 0)
ageRated = 10;
- else if (gameinfo.RatingValue == "T")
+ else if(RatingValue[0] == 'T')
ageRated = 13;
- else if (gameinfo.RatingValue == "M")
+ else if(RatingValue[0] == 'M')
ageRated = 17;
- else if (gameinfo.RatingValue == "AO")
+ else if(memcmp(RatingValue, "AO", 2) == 0)
ageRated = 18;
break;
case GAMETDB_RATING_TYPE_PEGI:
- if (gameinfo.RatingValue == "3")
+ if(RatingValue[0] == '3')
ageRated = 3;
- else if (gameinfo.RatingValue == "7")
+ else if(RatingValue[0] == '7')
ageRated = 7;
- else if (gameinfo.RatingValue == "12")
+ else if(memcmp(RatingValue, "12", 2) == 0)
ageRated = 12;
- else if (gameinfo.RatingValue == "16")
+ else if(memcmp(RatingValue, "16", 2) == 0)
ageRated = 16;
- else if (gameinfo.RatingValue == "18")
+ else if(memcmp(RatingValue, "18", 2) == 0)
ageRated = 18;
break;
case GAMETDB_RATING_TYPE_GRB:
- if (gameinfo.RatingValue == "A")
+ if(RatingValue[0] == 'A')
ageRated = 3;
- else if (gameinfo.RatingValue == "12")
+ else if(memcmp(RatingValue, "12", 2) == 0)
ageRated = 12;
- else if (gameinfo.RatingValue == "15")
+ else if(memcmp(RatingValue, "15", 2) == 0)
ageRated = 15;
- else if (gameinfo.RatingValue == "18")
+ else if(memcmp(RatingValue, "18", 2) == 0)
ageRated = 18;
break;
default:
diff --git a/source/menu/menu_gameinfo.cpp b/source/menu/menu_gameinfo.cpp
index 3116c1de..09df8080 100644
--- a/source/menu/menu_gameinfo.cpp
+++ b/source/menu/menu_gameinfo.cpp
@@ -77,11 +77,10 @@ extern const u8 pegi_12_png[];
extern const u8 pegi_16_png[];
extern const u8 pegi_18_png[];
-GameXMLInfo gameinfo;
wstringEx gameinfo_Synopsis_w;
wstringEx gameinfo_Title_w;
-static bool titlecheck = false;
+bool titlecheck = false;
u8 cnt_controlsreq = 0, cnt_controls = 0;
const int pixels_to_skip = 10;
@@ -130,7 +129,7 @@ void CMenu::_gameinfo(void)
amount_of_skips--;
}
}
- else if (BTN_RIGHT_PRESSED && !(m_thrdWorking && m_thrdStop) && page == 0 && gameinfo.Synopsis.size() > 0)
+ else if (BTN_RIGHT_PRESSED && !(m_thrdWorking && m_thrdStop) && page == 0 && !gameinfo_Synopsis_w.empty())
{
page = 1;
amount_of_skips = 0;
@@ -313,24 +312,37 @@ void CMenu::_textGameInfo(void)
GameTDB gametdb;
gametdb.OpenFile(fmt("%s/wiitdb.xml", m_settingsDir.c_str()));
gametdb.SetLanguageCode(m_loc.getString(m_curLanguage, "gametdb_code", "EN").c_str());
-
- titlecheck = gametdb.IsLoaded() && gametdb.GetGameXMLInfo(m_cf.getId().c_str(), &gameinfo);
+ const char *TMP_Char = NULL;
+ titlecheck = gametdb.IsLoaded();
if(titlecheck)
{
- gameinfo_Title_w.fromUTF8(gameinfo.Title);
- m_btnMgr.setText(m_gameinfoLblTitle, gameinfo_Title_w, true);
- gameinfo_Synopsis_w.fromUTF8(gameinfo.Synopsis);
- m_btnMgr.setText(m_gameinfoLblSynopsis, gameinfo_Synopsis_w);
+ char GameID[7];
+ GameID[6] = '\0';
+ strncpy(GameID, m_cf.getId().c_str(), 6);
+ if(gametdb.GetTitle(GameID, TMP_Char))
+ {
+ gameinfo_Title_w.fromUTF8(TMP_Char);
+ m_btnMgr.setText(m_gameinfoLblTitle, gameinfo_Title_w, true);
+ }
+ if(gametdb.GetSynopsis(GameID, TMP_Char))
+ {
+ gameinfo_Synopsis_w.fromUTF8(TMP_Char);
+ m_btnMgr.setText(m_gameinfoLblSynopsis, gameinfo_Synopsis_w);
+ }
+ m_btnMgr.setText(m_gameinfoLblID, wfmt(L"GameID: %s", GameID), true);
+ if(gametdb.GetDeveloper(GameID, TMP_Char))
+ m_btnMgr.setText(m_gameinfoLblDev, wfmt(_fmt("gameinfo1",L"Developer: %s"), TMP_Char), true);
+ if(gametdb.GetPublisher(GameID, TMP_Char))
+ m_btnMgr.setText(m_gameinfoLblPublisher, wfmt(_fmt("gameinfo2",L"Publisher: %s"), TMP_Char), true);
+ if(gametdb.GetRegion(GameID, TMP_Char))
+ m_btnMgr.setText(m_gameinfoLblRegion, wfmt(_fmt("gameinfo3",L"Region: %s"), TMP_Char), true);
+ if(gametdb.GetGenres(GameID, TMP_Char))
+ m_btnMgr.setText(m_gameinfoLblGenre, wfmt(_fmt("gameinfo5",L"Genre: %s"), TMP_Char), true);
- m_btnMgr.setText(m_gameinfoLblID, wfmt(L"GameID: %s", gameinfo.GameID.c_str()), true);
- m_btnMgr.setText(m_gameinfoLblDev, wfmt(_fmt("gameinfo1",L"Developer: %s"), gameinfo.Developer.c_str()), true);
- m_btnMgr.setText(m_gameinfoLblPublisher, wfmt(_fmt("gameinfo2",L"Publisher: %s"), gameinfo.Publisher.c_str()), true);
- m_btnMgr.setText(m_gameinfoLblRegion, wfmt(_fmt("gameinfo3",L"Region: %s"), gameinfo.Region.c_str()), true);
- m_btnMgr.setText(m_gameinfoLblGenre, wfmt(_fmt("gameinfo5",L"Genre: %s"), gameinfo.Genres.c_str()), true);
-
- int year = gameinfo.PublishDate >> 16;
- int day = gameinfo.PublishDate & 0xFF;
- int month = (gameinfo.PublishDate >> 8) & 0xFF;
+ int PublishDate = gametdb.GetPublishDate(GameID);
+ int year = PublishDate >> 16;
+ int day = PublishDate & 0xFF;
+ int month = (PublishDate >> 8) & 0xFF;
switch(CONF_GetRegion())
{
case 0:
@@ -345,151 +357,153 @@ void CMenu::_textGameInfo(void)
m_btnMgr.setText(m_gameinfoLblRlsdate, wfmt(_fmt("gameinfo4",L"Release Date: %i-%i-%i"), day, month, year), true);
break;
}
-
//Ratings
m_rating.fromJPG(norating_jpg, norating_jpg_size);
- switch(gameinfo.RatingType)
+ const char *RatingValue = NULL;
+ if(gametdb.GetRatingValue(GameID, RatingValue))
{
- case GAMETDB_RATING_TYPE_CERO:
- if (gameinfo.RatingValue == "A")
- m_rating.fromPNG(cero_a_png);
- else if (gameinfo.RatingValue == "B")
- m_rating.fromPNG(cero_b_png);
- else if (gameinfo.RatingValue == "D")
- m_rating.fromPNG(cero_d_png);
- else if (gameinfo.RatingValue == "C")
- m_rating.fromPNG(cero_c_png);
- else if (gameinfo.RatingValue == "Z")
- m_rating.fromPNG(cero_z_png);
- break;
- case GAMETDB_RATING_TYPE_ESRB:
- if (gameinfo.RatingValue == "E")
- m_rating.fromJPG(esrb_e_jpg, esrb_e_jpg_size);
- else if (gameinfo.RatingValue == "EC")
- m_rating.fromJPG(esrb_ec_jpg, esrb_ec_jpg_size);
- else if (gameinfo.RatingValue == "E10+")
- m_rating.fromJPG(esrb_eten_jpg, esrb_eten_jpg_size);
- else if (gameinfo.RatingValue == "T")
- m_rating.fromJPG(esrb_t_jpg, esrb_t_jpg_size);
- else if (gameinfo.RatingValue == "M")
- m_rating.fromJPG(esrb_m_jpg, esrb_m_jpg_size);
- else if (gameinfo.RatingValue == "AO")
- m_rating.fromJPG(esrb_ao_jpg, esrb_ao_jpg_size);
- break;
- case GAMETDB_RATING_TYPE_PEGI:
- if (gameinfo.RatingValue == "3")
- m_rating.fromPNG(pegi_3_png);
- else if (gameinfo.RatingValue == "7")
- m_rating.fromPNG(pegi_7_png);
- else if (gameinfo.RatingValue == "12")
- m_rating.fromPNG(pegi_12_png);
- else if (gameinfo.RatingValue == "16")
- m_rating.fromPNG(pegi_16_png);
- else if (gameinfo.RatingValue == "18")
- m_rating.fromPNG(pegi_18_png);
- break;
- case GAMETDB_RATING_TYPE_GRB:
- if (gameinfo.RatingValue == "A")
- m_rating.fromPNG(grb_a_png);
- else if (gameinfo.RatingValue == "12")
- m_rating.fromPNG(grb_12_png);
- else if (gameinfo.RatingValue == "15")
- m_rating.fromPNG(grb_15_png);
- else if (gameinfo.RatingValue == "18")
- m_rating.fromPNG(grb_18_png);
- break;
- default:
- break;
- }
-
+ switch(gametdb.GetRating(GameID))
+ {
+ case GAMETDB_RATING_TYPE_CERO:
+ if(RatingValue[0] == 'A')
+ m_rating.fromPNG(cero_a_png);
+ else if(RatingValue[0] == 'B')
+ m_rating.fromPNG(cero_b_png);
+ else if(RatingValue[0] == 'D')
+ m_rating.fromPNG(cero_d_png);
+ else if(RatingValue[0] == 'C')
+ m_rating.fromPNG(cero_c_png);
+ else if(RatingValue[0] == 'Z')
+ m_rating.fromPNG(cero_z_png);
+ break;
+ case GAMETDB_RATING_TYPE_ESRB:
+ if(RatingValue[0] == 'E')
+ m_rating.fromJPG(esrb_e_jpg, esrb_e_jpg_size);
+ else if(memcmp(RatingValue, "EC", 2) == 0)
+ m_rating.fromJPG(esrb_ec_jpg, esrb_ec_jpg_size);
+ else if(memcmp(RatingValue, "E10+", 4) == 0)
+ m_rating.fromJPG(esrb_eten_jpg, esrb_eten_jpg_size);
+ else if(RatingValue[0] == 'T')
+ m_rating.fromJPG(esrb_t_jpg, esrb_t_jpg_size);
+ else if(RatingValue[0] == 'M')
+ m_rating.fromJPG(esrb_m_jpg, esrb_m_jpg_size);
+ else if(memcmp(RatingValue, "AO", 2) == 0)
+ m_rating.fromJPG(esrb_ao_jpg, esrb_ao_jpg_size);
+ break;
+ case GAMETDB_RATING_TYPE_PEGI:
+ if(RatingValue[0] == '3')
+ m_rating.fromPNG(pegi_3_png);
+ else if(RatingValue[0] == '7')
+ m_rating.fromPNG(pegi_7_png);
+ else if(memcmp(RatingValue, "12", 2) == 0)
+ m_rating.fromPNG(pegi_12_png);
+ else if(memcmp(RatingValue, "16", 2) == 0)
+ m_rating.fromPNG(pegi_16_png);
+ else if(memcmp(RatingValue, "18", 2) == 0)
+ m_rating.fromPNG(pegi_18_png);
+ break;
+ case GAMETDB_RATING_TYPE_GRB:
+ if(RatingValue[0] == 'A')
+ m_rating.fromPNG(grb_a_png);
+ else if(memcmp(RatingValue, "12", 2) == 0)
+ m_rating.fromPNG(grb_12_png);
+ else if(memcmp(RatingValue, "15", 2) == 0)
+ m_rating.fromPNG(grb_15_png);
+ else if(memcmp(RatingValue, "18", 2) == 0)
+ m_rating.fromPNG(grb_18_png);
+ break;
+ default:
+ break;
+ }
+ }
m_btnMgr.setTexture(m_gameinfoLblRating, m_rating);
-
//Wifi players
+ int WifiPlayers = gametdb.GetWifiPlayers(GameID);
STexture emptyTex;
- if (gameinfo.WifiPlayers == 1)
+ if(WifiPlayers == 1)
m_wifi.fromPNG(wifi1_png);
- else if (gameinfo.WifiPlayers == 2)
+ else if(WifiPlayers == 2)
m_wifi.fromPNG(wifi2_png);
- else if (gameinfo.WifiPlayers == 4)
+ else if(WifiPlayers == 4)
m_wifi.fromPNG(wifi4_png);
- else if (gameinfo.WifiPlayers == 8)
+ else if(WifiPlayers == 8)
m_wifi.fromPNG(wifi8_png);
- else if (gameinfo.WifiPlayers == 10)
+ else if(WifiPlayers == 10)
m_wifi.fromPNG(wifi10_png);
- else if (gameinfo.WifiPlayers == 12)
+ else if(WifiPlayers == 12)
m_wifi.fromPNG(wifi12_png);
- else if (gameinfo.WifiPlayers == 16)
+ else if(WifiPlayers == 16)
m_wifi.fromPNG(wifi16_png);
- else if (gameinfo.WifiPlayers == 18)
+ else if(WifiPlayers == 18)
m_wifi.fromPNG(wifi18_png);
- else if (gameinfo.WifiPlayers == 32)
+ else if(WifiPlayers == 32)
m_wifi.fromPNG(wifi32_png);
-
- if(gameinfo.WifiPlayers > 0)
+ if(WifiPlayers > 0)
m_btnMgr.setTexture(m_gameinfoLblWifiplayers, m_wifi);
else
m_btnMgr.setTexture(m_gameinfoLblWifiplayers, emptyTex);
- u8 wiimote=0,
- nunchuk=0,
- classiccontroller=0,
- balanceboard=0,
- dancepad=0,
- guitar=0,
- gamecube=0,
- motionplus=0,
- drums=0,
- microphone=0,
- wheel=0,
- keyboard=0,
- udraw = 0,
- zapper=0;
-
//check required controlls
- for (vector::iterator acc_itr = gameinfo.Accessories.begin(); acc_itr != gameinfo.Accessories.end(); acc_itr++)
- {
- if (!acc_itr->Required) continue;
-
- if (strcmp((acc_itr->Name).c_str(), "wiimote") == 0)
- wiimote=1;
- else if (strcmp((acc_itr->Name).c_str(), "nunchuk") == 0)
- nunchuk=1;
- else if (strcmp((acc_itr->Name).c_str(), "guitar") == 0)
- guitar=1;
- else if (strcmp((acc_itr->Name).c_str(), "drums") == 0)
- drums=1;
- else if (strcmp((acc_itr->Name).c_str(), "dancepad") == 0)
- dancepad=1;
- else if (strcmp((acc_itr->Name).c_str(), "motionplus") == 0)
- motionplus=1;
- else if (strcmp((acc_itr->Name).c_str(), "microphone") == 0)
- microphone=1;
- else if (strcmp((acc_itr->Name).c_str(), "balanceboard") == 0)
- balanceboard=1;
- else if (strcmp((acc_itr->Name).c_str(), "udraw") == 0)
- udraw = 1;
- }
+ bool wiimote = false;
+ bool nunchuk = false;
+ bool classiccontroller = false;
+ bool balanceboard = false;
+ bool dancepad = false;
+ bool guitar = false;
+ bool gamecube = false;
+ bool motionplus = false;
+ bool drums = false;
+ bool microphone = false;
+ bool wheel = false;
+ bool keyboard = false;
+ bool udraw = false;
+ bool zapper = false;
+ vector Accessories;
+ gametdb.GetAccessories(GameID, Accessories);
+ for(vector::iterator acc_itr = Accessories.begin(); acc_itr != Accessories.end(); acc_itr++)
+ {
+ if(!acc_itr->Required)
+ continue;
+ if(strcmp((acc_itr->Name).c_str(), "wiimote") == 0)
+ wiimote = true;
+ else if(strcmp((acc_itr->Name).c_str(), "nunchuk") == 0)
+ nunchuk = true;
+ else if(strcmp((acc_itr->Name).c_str(), "guitar") == 0)
+ guitar = true;
+ else if(strcmp((acc_itr->Name).c_str(), "drums") == 0)
+ drums = true;
+ else if(strcmp((acc_itr->Name).c_str(), "dancepad") == 0)
+ dancepad = true;
+ else if(strcmp((acc_itr->Name).c_str(), "motionplus") == 0)
+ motionplus = true;
+ else if(strcmp((acc_itr->Name).c_str(), "microphone") == 0)
+ microphone = true;
+ else if(strcmp((acc_itr->Name).c_str(), "balanceboard") == 0)
+ balanceboard = true;
+ else if(strcmp((acc_itr->Name).c_str(), "udraw") == 0)
+ udraw = true;
+ }
u8 x = 0;
u8 max_controlsReq = ARRAY_SIZE(m_gameinfoLblControlsReq);
if(wiimote && x < max_controlsReq)
{
- u8 players = gameinfo.Players;
- if (gameinfo.Players >= 10)
- players = players/10;
+ u8 players = gametdb.GetPlayers(GameID);
+ if(players >= 10)
+ players /= 10;
- if (players == 1)
+ if(players == 1)
m_controlsreq[x].fromPNG(wiimote1_png);
- else if (players == 2)
+ else if(players == 2)
m_controlsreq[x].fromPNG(wiimote2_png);
- else if (players == 3)
+ else if(players == 3)
m_controlsreq[x].fromPNG(wiimote3_png);
- else if (players == 4)
+ else if(players == 4)
m_controlsreq[x].fromPNG(wiimote4_png);
- else if (players == 6)
+ else if(players == 6)
m_controlsreq[x].fromPNG(wiimote6_png);
- else if (players == 8)
+ else if(players == 8)
m_controlsreq[x].fromPNG(wiimote8_png);
m_btnMgr.setTexture(m_gameinfoLblControlsReq[x] ,m_controlsreq[x], 20, 60);
@@ -543,60 +557,56 @@ void CMenu::_textGameInfo(void)
m_btnMgr.setTexture(m_gameinfoLblControlsReq[x] ,m_controlsreq[x], 52, 60);
x++;
}
-
cnt_controlsreq = x;
//check optional controlls
- wiimote=0,
- nunchuk=0,
- classiccontroller=0,
- balanceboard=0,
- dancepad=0,
- guitar=0,
- gamecube=0,
- motionplus=0,
- drums=0,
- microphone=0,
- wheel=0,
- keyboard=0,
- udraw = 0,
- zapper=0;
-
- for (vector::iterator acc_itr = gameinfo.Accessories.begin(); acc_itr != gameinfo.Accessories.end(); acc_itr++)
+ wiimote = false;
+ nunchuk = false;
+ classiccontroller = false;
+ balanceboard = false;
+ dancepad = false;
+ guitar = false;
+ gamecube = false;
+ motionplus = false;
+ drums = false;
+ microphone = false;
+ wheel = false;
+ keyboard = false;
+ udraw = false;
+ zapper = false;
+ for(vector::iterator acc_itr = Accessories.begin(); acc_itr != Accessories.end(); acc_itr++)
{
- if (acc_itr->Required) continue;
-
- if (strcmp((acc_itr->Name).c_str(), "classiccontroller") == 0)
- classiccontroller=1;
- else if (strcmp((acc_itr->Name).c_str(), "nunchuk") == 0)
- nunchuk=1;
- else if (strcmp((acc_itr->Name).c_str(), "guitar") == 0)
- guitar=1;
- else if (strcmp((acc_itr->Name).c_str(), "drums") == 0)
- drums=1;
- else if (strcmp((acc_itr->Name).c_str(), "dancepad") == 0)
- dancepad=1;
- else if (strcmp((acc_itr->Name).c_str(), "motionplus") == 0)
- motionplus=1;
- else if (strcmp((acc_itr->Name).c_str(), "balanceboard") == 0)
- balanceboard=1;
- else if (strcmp((acc_itr->Name).c_str(), "microphone") == 0)
- microphone=1;
- else if (strcmp((acc_itr->Name).c_str(), "gamecube") == 0)
- gamecube=1;
- else if (strcmp((acc_itr->Name).c_str(), "keyboard") == 0)
- keyboard=1;
- else if (strcmp((acc_itr->Name).c_str(), "zapper") == 0)
- zapper=1;
- else if (strcmp((acc_itr->Name).c_str(), "wheel") == 0)
- wheel=1;
- else if (strcmp((acc_itr->Name).c_str(), "udraw") == 0)
- udraw = 1;
- }
-
+ if(acc_itr->Required)
+ continue;
+ if(strcmp((acc_itr->Name).c_str(), "classiccontroller") == 0)
+ classiccontroller = true;
+ else if(strcmp((acc_itr->Name).c_str(), "nunchuk") == 0)
+ nunchuk = true;
+ else if(strcmp((acc_itr->Name).c_str(), "guitar") == 0)
+ guitar = true;
+ else if(strcmp((acc_itr->Name).c_str(), "drums") == 0)
+ drums = true;
+ else if(strcmp((acc_itr->Name).c_str(), "dancepad") == 0)
+ dancepad = true;
+ else if(strcmp((acc_itr->Name).c_str(), "motionplus") == 0)
+ motionplus = true;
+ else if(strcmp((acc_itr->Name).c_str(), "balanceboard") == 0)
+ balanceboard = true;
+ else if(strcmp((acc_itr->Name).c_str(), "microphone") == 0)
+ microphone = true;
+ else if(strcmp((acc_itr->Name).c_str(), "gamecube") == 0)
+ gamecube = true;
+ else if(strcmp((acc_itr->Name).c_str(), "keyboard") == 0)
+ keyboard = true;
+ else if(strcmp((acc_itr->Name).c_str(), "zapper") == 0)
+ zapper = true;
+ else if(strcmp((acc_itr->Name).c_str(), "wheel") == 0)
+ wheel = true;
+ else if(strcmp((acc_itr->Name).c_str(), "udraw") == 0)
+ udraw = true;
+ }
x = 0;
u8 max_controls = ARRAY_SIZE(m_gameinfoLblControls);
-
if(classiccontroller && x < max_controls)
{
m_controls[x].fromPNG(classiccontroller_png);
@@ -675,12 +685,10 @@ void CMenu::_textGameInfo(void)
m_btnMgr.setTexture(m_gameinfoLblControls[x] ,m_controls[x], 52, 60);
x++;
}
-
cnt_controls = x;
}
else
m_btnMgr.setText(m_gameinfoLblTitle, wfmt(_fmt("gameinfo6",L"No Gameinfo"), true));
gametdb.CloseFile();
-
-}
\ No newline at end of file
+}