[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