From 064932c46fd3c5d551808db563e8b86d992fd2de Mon Sep 17 00:00:00 2001 From: Pieter Hulshoff Date: Wed, 1 Jun 2016 09:55:00 +0200 Subject: [PATCH] Added support for control type information: - Use tag in the meta XML. - Use type "ctrlType" in the layout XML. --- RetroFE/Source/Collection/Item.h | 1 + RetroFE/Source/Database/MetadataDatabase.cpp | 28 +++++++++++-------- .../Graphics/Component/ReloadableText.cpp | 4 +++ 3 files changed, 22 insertions(+), 11 deletions(-) diff --git a/RetroFE/Source/Collection/Item.h b/RetroFE/Source/Collection/Item.h index 31775a6..bf4bc91 100644 --- a/RetroFE/Source/Collection/Item.h +++ b/RetroFE/Source/Collection/Item.h @@ -36,6 +36,7 @@ public: std::string cloneof; std::string numberPlayers; std::string numberButtons; + std::string ctrlType; std::string joyWays; std::string rating; CollectionInfo *collectionInfo; diff --git a/RetroFE/Source/Database/MetadataDatabase.cpp b/RetroFE/Source/Database/MetadataDatabase.cpp index c157a9a..bb898d8 100644 --- a/RetroFE/Source/Database/MetadataDatabase.cpp +++ b/RetroFE/Source/Database/MetadataDatabase.cpp @@ -84,6 +84,7 @@ bool MetadataDatabase::initialize() sql.append("genre TEXT NOT NULL DEFAULT '',"); sql.append("cloneOf TEXT NOT NULL DEFAULT '',"); sql.append("players TEXT NOT NULL DEFAULT '',"); + sql.append("ctrltype TEXT NOT NULL DEFAULT '',"); sql.append("buttons TEXT NOT NULL DEFAULT '',"); sql.append("joyways TEXT NOT NULL DEFAULT '',"); sql.append("rating TEXT NOT NULL DEFAULT '');"); @@ -207,7 +208,7 @@ void MetadataDatabase::injectMetadata(CollectionInfo *collection) //todo: program crashes if this query fails sqlite3_prepare_v2(handle, - "SELECT DISTINCT Meta.name, Meta.title, Meta.year, Meta.manufacturer, Meta.genre, Meta.players, Meta.buttons, Meta.joyways, Meta.cloneOf, Meta.rating " + "SELECT DISTINCT Meta.name, Meta.title, Meta.year, Meta.manufacturer, Meta.genre, Meta.players, Meta.ctrltype, Meta.buttons, Meta.joyways, Meta.cloneOf, Meta.rating " "FROM Meta WHERE collectionName=? ORDER BY title ASC;", -1, &stmt, 0); @@ -223,10 +224,11 @@ void MetadataDatabase::injectMetadata(CollectionInfo *collection) std::string manufacturer = (char *)sqlite3_column_text(stmt, 3); std::string genre = (char *)sqlite3_column_text(stmt, 4); std::string numberPlayers = (char *)sqlite3_column_text(stmt, 5); - std::string numberButtons = (char *)sqlite3_column_text(stmt, 6); - std::string joyWays = (char *)sqlite3_column_text(stmt, 7); - std::string cloneOf = (char *)sqlite3_column_text(stmt, 8); - std::string rating = (char *)sqlite3_column_text(stmt, 9); + std::string ctrlType = (char *)sqlite3_column_text(stmt, 6); + std::string numberButtons = (char *)sqlite3_column_text(stmt, 7); + std::string joyWays = (char *)sqlite3_column_text(stmt, 8); + std::string cloneOf = (char *)sqlite3_column_text(stmt, 9); + std::string rating = (char *)sqlite3_column_text(stmt, 10); std::string launcher; std::string title = fullTitle; @@ -276,6 +278,7 @@ void MetadataDatabase::injectMetadata(CollectionInfo *collection) item->genre = genre; item->numberPlayers = numberPlayers; item->numberButtons = numberButtons; + item->ctrlType = ctrlType; item->joyWays = joyWays; item->cloneof = cloneOf; item->rating = rating; @@ -342,6 +345,7 @@ bool MetadataDatabase::importHyperlist(std::string hyperlistFile, std::string co rapidxml::xml_node<> *genreXml = game->first_node("genre"); rapidxml::xml_node<> *ratingXml = game->first_node("rating"); rapidxml::xml_node<> *numberPlayersXml = game->first_node("players"); + rapidxml::xml_node<> *ctrlTypeXml = game->first_node("ctrltype"); rapidxml::xml_node<> *numberButtonsXml = game->first_node("buttons"); rapidxml::xml_node<> *numberJoyWaysXml = game->first_node("joyways"); rapidxml::xml_node<> *enabledXml = game->first_node("enabled"); @@ -354,6 +358,7 @@ bool MetadataDatabase::importHyperlist(std::string hyperlistFile, std::string co std::string genre = (genreXml) ? genreXml->value() : ""; std::string rating = (ratingXml) ? ratingXml->value() : ""; std::string numberPlayers = (numberPlayersXml) ? numberPlayersXml->value() : ""; + std::string ctrlType = (ctrlTypeXml) ? ctrlTypeXml->value() : ""; std::string numberButtons = (numberButtonsXml) ? numberButtonsXml->value() : ""; std::string numberJoyWays = (numberJoyWaysXml) ? numberJoyWaysXml->value() : ""; std::string enabled = (enabledXml) ? enabledXml->value() : ""; @@ -363,7 +368,7 @@ bool MetadataDatabase::importHyperlist(std::string hyperlistFile, std::string co sqlite3_stmt *stmt; sqlite3_prepare_v2(handle, - "INSERT OR REPLACE INTO Meta (name, title, year, manufacturer, genre, players, buttons, joyways, cloneOf, collectionName, rating) VALUES (?,?,?,?,?,?,?,?,?,?,?)", + "INSERT OR REPLACE INTO Meta (name, title, year, manufacturer, genre, players, ctrltype, buttons, joyways, cloneOf, collectionName, rating) VALUES (?,?,?,?,?,?,?,?,?,?,?,?)", -1, &stmt, 0); sqlite3_bind_text(stmt, 1, name.c_str(), -1, SQLITE_TRANSIENT); @@ -372,11 +377,12 @@ bool MetadataDatabase::importHyperlist(std::string hyperlistFile, std::string co sqlite3_bind_text(stmt, 4, manufacturer.c_str(), -1, SQLITE_TRANSIENT); sqlite3_bind_text(stmt, 5, genre.c_str(), -1, SQLITE_TRANSIENT); sqlite3_bind_text(stmt, 6, numberPlayers.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 7, numberButtons.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 8, numberJoyWays.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 9, cloneOf.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 10, collectionName.c_str(), -1, SQLITE_TRANSIENT); - sqlite3_bind_text(stmt, 11, rating.c_str(), -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 7, ctrlType.c_str(), -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 8, numberButtons.c_str(), -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 9, numberJoyWays.c_str(), -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 10, cloneOf.c_str(), -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 11, collectionName.c_str(), -1, SQLITE_TRANSIENT); + sqlite3_bind_text(stmt, 12, rating.c_str(), -1, SQLITE_TRANSIENT); sqlite3_step(stmt); sqlite3_finalize(stmt); diff --git a/RetroFE/Source/Graphics/Component/ReloadableText.cpp b/RetroFE/Source/Graphics/Component/ReloadableText.cpp index 7f7543e..da4d380 100644 --- a/RetroFE/Source/Graphics/Component/ReloadableText.cpp +++ b/RetroFE/Source/Graphics/Component/ReloadableText.cpp @@ -164,6 +164,10 @@ void ReloadableText::ReloadTexture() ss << " Players"; } } + else if (type_ == "ctrlType") + { + ss << selectedItem->ctrlType; + } else if (type_ == "numberJoyWays") { ss << selectedItem->joyWays;