mirror of https://github.com/PCSX2/pcsx2.git
pcsx2: Remove GameDB write related code
There's no use for it now that the database editor has been removed. Also remove the Game_Data POD comment because I don't think it makes sense and remove an unused variable.
This commit is contained in:
parent
846f31851e
commit
76a75efef1
|
@ -80,20 +80,6 @@ Game_Data* BaseGameDatabaseImpl::createNewGame( const wxString& id )
|
||||||
return retval;
|
return retval;
|
||||||
}
|
}
|
||||||
|
|
||||||
void BaseGameDatabaseImpl::updateGame(const Game_Data& game)
|
|
||||||
{
|
|
||||||
GameDataHash::const_iterator iter( gHash.find(game.id) );
|
|
||||||
|
|
||||||
if( iter == gHash.end() ) {
|
|
||||||
*(createNewGame( game.id )) = game;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// Re-assign existing vector/array entry!
|
|
||||||
*gHash[game.id] = game;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Searches the current game's data to see if the given key exists
|
// Searches the current game's data to see if the given key exists
|
||||||
bool Game_Data::keyExists(const wxChar* key) const {
|
bool Game_Data::keyExists(const wxChar* key) const {
|
||||||
for (auto it = kList.begin(); it != kList.end(); ++it) {
|
for (auto it = kList.begin(); it != kList.end(); ++it) {
|
||||||
|
@ -104,16 +90,6 @@ bool Game_Data::keyExists(const wxChar* key) const {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Totally Deletes the specified key/pair value from the current game's data
|
|
||||||
void Game_Data::deleteKey(const wxChar* key) {
|
|
||||||
for (auto it = kList.begin(); it != kList.end(); ++it) {
|
|
||||||
if (it->CompareKey(key)) {
|
|
||||||
kList.erase(it);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Gets a string representation of the 'value' for the given key
|
// Gets a string representation of the 'value' for the given key
|
||||||
wxString Game_Data::getString(const wxChar* key) const {
|
wxString Game_Data::getString(const wxChar* key) const {
|
||||||
for (auto it = kList.begin(); it != kList.end(); ++it) {
|
for (auto it = kList.begin(); it != kList.end(); ++it) {
|
||||||
|
@ -138,8 +114,3 @@ void Game_Data::writeString(const wxString& key, const wxString& value) {
|
||||||
kList.push_back(key_pair(key, value));
|
kList.push_back(key_pair(key, value));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write a bool value to the specified key
|
|
||||||
void Game_Data::writeBool(const wxString& key, bool value) {
|
|
||||||
writeString(key, value ? L"1" : L"0");
|
|
||||||
}
|
|
|
@ -60,35 +60,11 @@ struct key_pair {
|
||||||
bool IsOk() const {
|
bool IsOk() const {
|
||||||
return !key.IsEmpty();
|
return !key.IsEmpty();
|
||||||
}
|
}
|
||||||
|
|
||||||
wxString toString() const {
|
|
||||||
if (key[0] == '[') {
|
|
||||||
pxAssertDev( key.EndsWith(L"]"), "Malformed multiline key detected: missing end bracket!" );
|
|
||||||
|
|
||||||
// Terminating tag must be written without the "rvalue" -- in the form of:
|
|
||||||
// [/patches]
|
|
||||||
// Use Mid() to strip off the left and right side brackets.
|
|
||||||
wxString midLine(key.Mid(1, key.Length()-2));
|
|
||||||
wxString keyLvalue(midLine.BeforeFirst(L'=').Trim(true).Trim(false));
|
|
||||||
|
|
||||||
return wxsFormat( L"%s\n%s[/%s]\n",
|
|
||||||
key.c_str(), value.c_str(), keyLvalue.c_str()
|
|
||||||
);
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
// Note: 6 char padding on the l-value makes things look nicer.
|
|
||||||
return wxsFormat(L"%-6s = %s\n", key.c_str(), value.c_str() );
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
};
|
||||||
|
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
// Game_Data
|
// Game_Data
|
||||||
// --------------------------------------------------------------------------------------
|
// --------------------------------------------------------------------------------------
|
||||||
// This container is more or less required to be a simple struct (POD classification) --
|
|
||||||
// no virtuals and no inheritance. This is because it is used in a std::vector, so POD
|
|
||||||
// makes things... smoother.
|
|
||||||
struct Game_Data
|
struct Game_Data
|
||||||
{
|
{
|
||||||
wxString id; // Serial Identification Code
|
wxString id; // Serial Identification Code
|
||||||
|
@ -109,10 +85,8 @@ struct Game_Data
|
||||||
}
|
}
|
||||||
|
|
||||||
bool keyExists(const wxChar* key) const;
|
bool keyExists(const wxChar* key) const;
|
||||||
void deleteKey(const wxChar* key);
|
|
||||||
wxString getString(const wxChar* key) const;
|
wxString getString(const wxChar* key) const;
|
||||||
void writeString(const wxString& key, const wxString& value);
|
void writeString(const wxString& key, const wxString& value);
|
||||||
void writeBool(const wxString& key, bool value);
|
|
||||||
|
|
||||||
bool IsOk() const {
|
bool IsOk() const {
|
||||||
return !id.IsEmpty();
|
return !id.IsEmpty();
|
||||||
|
@ -183,7 +157,6 @@ public:
|
||||||
virtual wxString getBaseKey() const=0;
|
virtual wxString getBaseKey() const=0;
|
||||||
virtual bool findGame(Game_Data& dest, const wxString& id)=0;
|
virtual bool findGame(Game_Data& dest, const wxString& id)=0;
|
||||||
virtual Game_Data* createNewGame( const wxString& id )=0;
|
virtual Game_Data* createNewGame( const wxString& id )=0;
|
||||||
virtual void updateGame(const Game_Data& game)=0;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
typedef std::unordered_map<wxString, Game_Data*, StringHashNoCase> GameDataHash;
|
typedef std::unordered_map<wxString, Game_Data*, StringHashNoCase> GameDataHash;
|
||||||
|
@ -213,7 +186,6 @@ public:
|
||||||
|
|
||||||
bool findGame(Game_Data& dest, const wxString& id);
|
bool findGame(Game_Data& dest, const wxString& id);
|
||||||
Game_Data* createNewGame( const wxString& id );
|
Game_Data* createNewGame( const wxString& id );
|
||||||
void updateGame(const Game_Data& game);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
extern IGameDatabase* AppHost_GetGameDatabase();
|
extern IGameDatabase* AppHost_GetGameDatabase();
|
||||||
|
|
|
@ -42,7 +42,6 @@ public:
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
wxString ReadHeader();
|
|
||||||
void ReadGames();
|
void ReadGames();
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
@ -97,38 +96,10 @@ void DBLoaderHelper::extract() {
|
||||||
if( m_keyPair.value.IsEmpty() ) doError(true);
|
if( m_keyPair.value.IsEmpty() ) doError(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
wxString DBLoaderHelper::ReadHeader()
|
|
||||||
{
|
|
||||||
wxString header;
|
|
||||||
header.reserve(2048);
|
|
||||||
|
|
||||||
while(!m_reader.Eof()) {
|
|
||||||
pxReadLine(m_reader, m_dest, m_intermediate);
|
|
||||||
m_dest.Trim(false).Trim(true);
|
|
||||||
if( !(m_dest.IsEmpty() || m_dest.StartsWith(L"--") || m_dest.StartsWith( L"//" ) || m_dest.StartsWith( L";" )) ) break;
|
|
||||||
header += m_dest + L'\n';
|
|
||||||
}
|
|
||||||
|
|
||||||
if( !m_dest.IsEmpty() )
|
|
||||||
{
|
|
||||||
m_keyPair.Clear();
|
|
||||||
if( !extractMultiLine() ) extract();
|
|
||||||
}
|
|
||||||
return header;
|
|
||||||
}
|
|
||||||
|
|
||||||
void DBLoaderHelper::ReadGames()
|
void DBLoaderHelper::ReadGames()
|
||||||
{
|
{
|
||||||
Game_Data* game = NULL;
|
Game_Data* game = NULL;
|
||||||
|
|
||||||
if (m_keyPair.IsOk())
|
|
||||||
{
|
|
||||||
game = m_gamedb.createNewGame(m_keyPair.value);
|
|
||||||
game->writeString(m_keyPair.key, m_keyPair.value);
|
|
||||||
//if( m_keyPair.CompareKey(m_gamedb.getBaseKey()) )
|
|
||||||
// game.id = m_keyPair.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
while(!m_reader.Eof()) { // Fill game data, find new game, repeat...
|
while(!m_reader.Eof()) { // Fill game data, find new game, repeat...
|
||||||
pthread_testcancel();
|
pthread_testcancel();
|
||||||
pxReadLine(m_reader, m_dest, m_intermediate);
|
pxReadLine(m_reader, m_dest, m_intermediate);
|
||||||
|
@ -187,7 +158,6 @@ AppGameDatabase& AppGameDatabase::LoadFromFile(const wxString& _file, const wxSt
|
||||||
DBLoaderHelper loader( reader, *this );
|
DBLoaderHelper loader( reader, *this );
|
||||||
|
|
||||||
u64 qpc_Start = GetCPUTicks();
|
u64 qpc_Start = GetCPUTicks();
|
||||||
header = loader.ReadHeader();
|
|
||||||
loader.ReadGames();
|
loader.ReadGames();
|
||||||
u64 qpc_end = GetCPUTicks();
|
u64 qpc_end = GetCPUTicks();
|
||||||
|
|
||||||
|
@ -197,31 +167,6 @@ AppGameDatabase& AppGameDatabase::LoadFromFile(const wxString& _file, const wxSt
|
||||||
return *this;
|
return *this;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Saves changes to the database
|
|
||||||
|
|
||||||
void AppGameDatabase::SaveToFile(const wxString& file) {
|
|
||||||
wxFFileOutputStream writer( file );
|
|
||||||
pxWriteMultiline(writer, header);
|
|
||||||
|
|
||||||
for(uint blockidx=0; blockidx<=m_BlockTableWritePos; ++blockidx)
|
|
||||||
{
|
|
||||||
if( !m_BlockTable[blockidx] ) continue;
|
|
||||||
|
|
||||||
const uint endidx = (blockidx == m_BlockTableWritePos) ? m_CurBlockWritePos : m_GamesPerBlock;
|
|
||||||
|
|
||||||
for( uint gameidx=0; gameidx<endidx; ++gameidx )
|
|
||||||
{
|
|
||||||
const Game_Data& game( m_BlockTable[blockidx][gameidx] );
|
|
||||||
|
|
||||||
for (auto i = game.kList.begin(); i != game.kList.end(); ++i) {
|
|
||||||
pxWriteMultiline(writer, i->toString() );
|
|
||||||
}
|
|
||||||
|
|
||||||
pxWriteLine(writer, L"---------------------------------------------");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
AppGameDatabase* Pcsx2App::GetGameDatabase()
|
AppGameDatabase* Pcsx2App::GetGameDatabase()
|
||||||
{
|
{
|
||||||
pxAppResources& res( GetResourceCache() );
|
pxAppResources& res( GetResourceCache() );
|
||||||
|
|
|
@ -41,10 +41,6 @@
|
||||||
|
|
||||||
class AppGameDatabase : public BaseGameDatabaseImpl
|
class AppGameDatabase : public BaseGameDatabaseImpl
|
||||||
{
|
{
|
||||||
protected:
|
|
||||||
wxString header; // Header of the database
|
|
||||||
wxString baseKey; // Key to separate games by ("Serial")
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
AppGameDatabase() {}
|
AppGameDatabase() {}
|
||||||
virtual ~AppGameDatabase() {
|
virtual ~AppGameDatabase() {
|
||||||
|
@ -55,7 +51,6 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
AppGameDatabase& LoadFromFile(const wxString& file = Path::Combine( PathDefs::GetProgramDataDir(), wxFileName(L"GameIndex.dbf") ), const wxString& key = L"Serial" );
|
AppGameDatabase& LoadFromFile(const wxString& file = Path::Combine( PathDefs::GetProgramDataDir(), wxFileName(L"GameIndex.dbf") ), const wxString& key = L"Serial" );
|
||||||
void SaveToFile(const wxString& file = Path::Combine( PathDefs::GetProgramDataDir(), wxFileName(L"GameIndex.dbf")) );
|
|
||||||
};
|
};
|
||||||
|
|
||||||
static wxString compatToStringWX(int compat) {
|
static wxString compatToStringWX(int compat) {
|
||||||
|
|
Loading…
Reference in New Issue