[Game List] Separate DC and arcade games

This commit is contained in:
bslenul 2022-10-25 21:45:52 +02:00 committed by flyinghead
parent 4de9076b49
commit c8fc873cf9
1 changed files with 17 additions and 3 deletions

View File

@ -42,6 +42,7 @@ static bool operator<(const GameMedia &left, const GameMedia &right)
class GameScanner
{
std::vector<GameMedia> game_list;
std::vector<GameMedia> arcade_game_list;
std::mutex mutex;
std::mutex threadMutex;
std::unique_ptr<std::thread> scan_thread;
@ -56,6 +57,12 @@ class GameScanner
game_list.insert(std::upper_bound(game_list.begin(), game_list.end(), game), game);
}
void insert_arcade_game(const GameMedia& game)
{
std::lock_guard<std::mutex> guard(mutex);
arcade_game_list.insert(std::upper_bound(arcade_game_list.begin(), arcade_game_list.end(), game), game);
}
void add_game_directory(const std::string& path)
{
DirectoryTree tree(path);
@ -100,6 +107,14 @@ class GameScanner
continue;
gameName = it->second->description;
fileName = fileName + " (" + gameName + ")";
insert_arcade_game(GameMedia{ fileName, child_path, gameName });
continue;
}
else if (extension == "bin" || extension == "lst" || extension == "dat")
{
if (!config::HideLegacyNaomiRoms)
insert_arcade_game(GameMedia{ fileName, child_path, gameName });
continue;
}
else if (extension == "chd" || extension == "gdi")
{
@ -109,9 +124,7 @@ class GameScanner
if (arcade_gdroms.count(basename) != 0)
continue;
}
else if ((config::HideLegacyNaomiRoms
|| (extension != "bin" && extension != "lst" && extension != "dat"))
&& extension != "cdi" && extension != "cue")
else if (extension != "cdi" && extension != "cue")
continue;
insert_game(GameMedia{ fileName, child_path, gameName });
}
@ -167,6 +180,7 @@ public:
if (!running)
break;
}
game_list.insert(game_list.end(), arcade_game_list.begin(), arcade_game_list.end());
if (running)
scan_done = true;
running = false;