[Scummvm-git-logs] scummvm master -> 390d01500fbccaa28f9d20da86814114aa9bddbc
sev-
noreply at scummvm.org
Fri Nov 10 22:51:20 UTC 2023
This automated email contains information about 2 new commits which have been
pushed to the 'scummvm' repo located at https://github.com/scummvm/scummvm .
Summary:
57c87b4b50 COMMON: Fixed order of loading zip packs
390d01500f GUI: Added grouping by year
Commit: 57c87b4b50fdb52c9aa36e29b5aaa3290e541fc6
https://github.com/scummvm/scummvm/commit/57c87b4b50fdb52c9aa36e29b5aaa3290e541fc6
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-11-10T23:43:58+01:00
Commit Message:
COMMON: Fixed order of loading zip packs
It appears that the subsequent packages actually override previous ones
Changed paths:
common/zip-set.cpp
diff --git a/common/zip-set.cpp b/common/zip-set.cpp
index 8e45e00d1d2..64c2df3acea 100644
--- a/common/zip-set.cpp
+++ b/common/zip-set.cpp
@@ -29,36 +29,14 @@ namespace Common {
struct ArchiveMemberListBackComparator {
bool operator()(const ArchiveMemberPtr &a, const ArchiveMemberPtr &b) {
- return a->getName() > b->getName();
+ return a->getName() < b->getName();
}
};
bool generateZipSet(SearchSet &searchSet, const char *defaultFile, const char *packsMask, const char *packsPath) {
- Archive *dat;
+ Archive *dat = nullptr;
bool changed = false;
- if (!ConfMan.get(packsPath).empty()) {
- FSDirectory *iconDir = new FSDirectory(ConfMan.get(packsPath));
- ArchiveMemberList iconFiles;
-
- iconDir->listMatchingMembers(iconFiles, packsMask);
- sort(iconFiles.begin(), iconFiles.end(), ArchiveMemberListBackComparator());
-
- for (ArchiveMemberList::iterator ic = iconFiles.begin(); ic != iconFiles.end(); ++ic) {
- dat = makeZipArchive((*ic)->createReadStream());
-
- if (dat) {
- searchSet.add((*ic)->getName(), dat);
- changed = true;
- debug(2, "generateZipSet: Loaded pack file: %s", (*ic)->getName().c_str());
- }
- }
-
- delete iconDir;
- }
-
- dat = nullptr;
-
if (ConfMan.hasKey("themepath")) {
FSNode *fs = new FSNode(normalizePath(ConfMan.get("themepath") + "/" + defaultFile, '/'));
if (fs->exists()) {
@@ -95,6 +73,28 @@ bool generateZipSet(SearchSet &searchSet, const char *defaultFile, const char *p
debug(2, "generateZipSet: Loaded pack file: %s", defaultFile);
}
+ dat = nullptr;
+
+ if (!ConfMan.get(packsPath).empty()) {
+ FSDirectory *iconDir = new FSDirectory(ConfMan.get(packsPath));
+ ArchiveMemberList iconFiles;
+
+ iconDir->listMatchingMembers(iconFiles, packsMask);
+ sort(iconFiles.begin(), iconFiles.end(), ArchiveMemberListBackComparator());
+
+ for (ArchiveMemberList::iterator ic = iconFiles.begin(); ic != iconFiles.end(); ++ic) {
+ dat = makeZipArchive((*ic)->createReadStream());
+
+ if (dat) {
+ searchSet.add((*ic)->getName(), dat);
+ changed = true;
+ debug(2, "generateZipSet: Loaded pack file: %s", (*ic)->getName().c_str());
+ }
+ }
+
+ delete iconDir;
+ }
+
return changed;
}
Commit: 390d01500fbccaa28f9d20da86814114aa9bddbc
https://github.com/scummvm/scummvm/commit/390d01500fbccaa28f9d20da86814114aa9bddbc
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2023-11-10T23:45:15+01:00
Commit Message:
GUI: Added grouping by year
Changed paths:
gui/MetadataParser.cpp
gui/MetadataParser.h
gui/launcher.cpp
gui/launcher.h
diff --git a/gui/MetadataParser.cpp b/gui/MetadataParser.cpp
index d5389a6ac1d..b38265d9079 100644
--- a/gui/MetadataParser.cpp
+++ b/gui/MetadataParser.cpp
@@ -72,7 +72,8 @@ bool MetadataParser::closedKeyCallback(ParserNode *node) {
_gameInfo[Common::String::format("%s:%s",
node->values["engine_id"].c_str(), node->values["id"].c_str())] = MetadataGame(
node->values["id"], node->values["name"], node->values["engine_id"], node->values["company_id"],
- node->values["moby_id"], node->values["datafiles"], node->values["series_id"]);
+ node->values["moby_id"], node->values["datafiles"], node->values["series_id"], node->values["zoom_id"], node->values["year"]);
+
if (node->name == "engine")
_engineInfo[node->values["id"]] = MetadataEngine(node->values["id"], node->values["name"], node->values["alt_name"],
true);
diff --git a/gui/MetadataParser.h b/gui/MetadataParser.h
index 4a0407aa4b5..f2a3ae48947 100644
--- a/gui/MetadataParser.h
+++ b/gui/MetadataParser.h
@@ -32,12 +32,15 @@ struct MetadataGame {
Common::String engine_id;
Common::String company_id;
Common::String moby_id;
+ Common::String zoom_id;
+ Common::String year;
Common::String datafiles;
Common::String series_id;
MetadataGame() {}
- MetadataGame(const Common::String i, const Common::String n, const Common::String eid, const Common::String cid, const Common::String mid, const Common::String df, const Common::String sid)
- : id(i), name(n), engine_id(eid), company_id(cid), moby_id(mid), datafiles(df), series_id(sid) {}
+ MetadataGame(const Common::String i, const Common::String n, const Common::String eid, const Common::String cid,
+ const Common::String mid, const Common::String df, const Common::String sid, const Common::String zid, const Common::String yr)
+ : id(i), name(n), engine_id(eid), company_id(cid), year(yr), moby_id(mid), datafiles(df), zoom_id(zid), series_id(sid) {}
};
struct MetadataEngine {
@@ -90,11 +93,13 @@ protected:
XML_PROP(engine_id, true)
XML_PROP(company_id, true)
XML_PROP(moby_id, true)
+ XML_PROP(year, false)
XML_PROP(datafiles, true)
XML_PROP(wikipedia_page, true)
XML_PROP(series_id, true)
XML_PROP(steam_id, false)
XML_PROP(gog_id, false)
+ XML_PROP(zoom_id, false)
XML_PROP(additional_stores, false)
KEY_END() // game end
KEY_END() // games end
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
index f94b3afef7d..9fec603462a 100644
--- a/gui/launcher.cpp
+++ b/gui/launcher.cpp
@@ -115,6 +115,8 @@ const GroupingMode groupingModes[] = {
{"language", _sc("Language", "group"), nullptr, kGroupByLanguage},
// I18N: Group name for the game list, grouped by game platform
{"platform", _sc("Platform", "group"), nullptr, kGroupByPlatform},
+ // I18N: Group name for the game list, grouped by year
+ {"year", _sc("Year", "year"), nullptr, kGroupByYear},
{nullptr, nullptr, nullptr, kGroupByNone}
};
@@ -1253,6 +1255,19 @@ void LauncherSimple::groupEntries(const Common::Array<LauncherEntry> &metadata)
}
break;
}
+ case kGroupByYear: {
+ for (Common::Array<LauncherEntry>::const_iterator iter = metadata.begin(); iter != metadata.end(); ++iter) {
+ Common::U32String year = _metadataParser._gameInfo[buildQualifiedGameName(iter->engineid, iter->gameid)].year;
+ attrs.push_back(year);
+
+ if (!metadataNames.contains(year))
+ metadataNames[year] = year;
+ }
+ _list->setGroupHeaderFormat(Common::U32String(""), Common::U32String(""));
+ // I18N: List group when no year is specified
+ metadataNames[""] = _("Unknown Year");
+ break;
+ }
case kGroupByNone: // Fall-through intentional
default:
_list->setGroupsVisibility(false);
@@ -1436,6 +1451,19 @@ void LauncherGrid::groupEntries(const Common::Array<LauncherEntry> &metadata) {
}
break;
}
+ case kGroupByYear: {
+ for (Common::Array<LauncherEntry>::const_iterator iter = metadata.begin(); iter != metadata.end(); ++iter) {
+ Common::U32String year = _metadataParser._gameInfo[buildQualifiedGameName(iter->engineid, iter->gameid)].year;
+ attrs.push_back(year);
+
+ if (!metadataNames.contains(year))
+ metadataNames[year] = year;
+ }
+ _grid->setGroupHeaderFormat(Common::U32String(""), Common::U32String(""));
+ // I18N: List group when no year is specified
+ metadataNames[""] = _("Unknown Year");
+ break;
+ }
case kGroupByNone: // Fall-through intentional
default:
for (uint i = 0; i < metadata.size(); ++i) {
diff --git a/gui/launcher.h b/gui/launcher.h
index 82b112508ac..9b7b93ccc61 100644
--- a/gui/launcher.h
+++ b/gui/launcher.h
@@ -50,7 +50,8 @@ enum GroupingMethod {
kGroupBySeries,
kGroupByCompany,
kGroupByLanguage,
- kGroupByPlatform
+ kGroupByPlatform,
+ kGroupByYear,
};
struct GroupingMode {
More information about the Scummvm-git-logs
mailing list