Gamemode -> GameMode

This commit is contained in:
Luke Street
2026-08-19 20:49:58 -06:00
parent 2f0cb26ceb
commit fd0e33460f
19 changed files with 146 additions and 146 deletions
+14 -14
View File
@@ -1315,21 +1315,21 @@ void dFile_select_c::selectDataNameMove() {
bool isModoruTxtDisp = modoruTxtDispAnm();
#ifdef TARGET_PC
const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode();
const dusk::gamemode::GameMode* gamemode = dusk::gamemode::getGameModeManager().getCurrentGameMode();
if (gamemode) {
if (isHeaderTxtChange == true && isFileRecScale == true && isModoruTxtDisp == true) {
if (mGamemodeSaveStartBuildUi) {
gamemode->invokeOnNewSaveSelectFunction(&mGamemodeProceedToNameSelect, &mGamemodeReturnToFileSelect);
mGamemodeSaveStartBuildUi = false;
if (mGameModeSaveStartBuildUi) {
gamemode->invokeOnNewSaveSelectFunction(&mGameModeProceedToNameSelect, &mGameModeReturnToFileSelect);
mGameModeSaveStartBuildUi = false;
}
if (mGamemodeReturnToFileSelect) {
if (mGameModeReturnToFileSelect) {
backToDataSelectMove();
mGamemodeSaveStartBuildUi = true;
mGamemodeProceedToNameSelect = false;
mGamemodeReturnToFileSelect = false;
mGameModeSaveStartBuildUi = true;
mGameModeProceedToNameSelect = false;
mGameModeReturnToFileSelect = false;
return;
}
if (!mGamemodeProceedToNameSelect) {
if (!mGameModeProceedToNameSelect) {
return;
}
}else {
@@ -1344,9 +1344,9 @@ void dFile_select_c::selectDataNameMove() {
isModoruTxtDisp == true)
{
#ifdef TARGET_PC
mGamemodeSaveStartBuildUi = true;
mGamemodeProceedToNameSelect = false;
mGamemodeReturnToFileSelect = false;
mGameModeSaveStartBuildUi = true;
mGameModeProceedToNameSelect = false;
mGameModeReturnToFileSelect = false;
#endif
mDataSelProc = DATASELPROC_NAME_INPUT_WAIT;
}
@@ -1430,7 +1430,7 @@ void dFile_select_c::menuSelectStart() {
#if TARGET_PC
dusk::mods::svc::save_slot_loaded(mSelectNum, &mSaveData[mSelectNum]);
const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode();
const dusk::gamemode::GameMode* gamemode = dusk::gamemode::getGameModeManager().getCurrentGameMode();
if (gamemode) {
gamemode->invokeOnSaveLoadedFunction();
}
@@ -1787,7 +1787,7 @@ void dFile_select_c::nameInput2() {
mIsSelectEnd = true;
#if TARGET_PC
dusk::mods::svc::save_slot_new(mSelectNum);
const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode();
const dusk::gamemode::GameMode* gamemode = dusk::gamemode::getGameModeManager().getCurrentGameMode();
if (gamemode) {
gamemode->invokeOnNewSaveFunction();
gamemode->invokeOnSaveLoadedFunction();
+1 -1
View File
@@ -809,7 +809,7 @@ void dScnLogo_c::nextSceneChange() {
if (status == 1) {
dusk::mods::svc::save_slot_loaded(
saveSlot, buf + saveSlot * SAVEDATA_SIZE);
const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode();
const dusk::gamemode::GameMode* gamemode = dusk::gamemode::getGameModeManager().getCurrentGameMode();
if (gamemode) {
gamemode->invokeOnSaveLoadedFunction();
}
+2 -2
View File
@@ -1305,8 +1305,8 @@ void AchievementSystem::processEntry(Entry& e) {
void AchievementSystem::tick() {
// Until we implement an AchievementService, achievements will be unavailible in custom gamemodes
if (dusk::gamemode::getGamemodeManager().isCurrentGamemode(dusk::gamemode::kVanillaGamemodeId) == false
&& dusk::gamemode::getGamemodeManager().isCurrentGamemode(dusk::speedrun::kSpeedrunGamemodeId) == false) {
if (dusk::gamemode::getGameModeManager().isCurrentGameMode(dusk::gamemode::kVanillaGameModeId) == false
&& dusk::gamemode::getGameModeManager().isCurrentGameMode(dusk::speedrun::kSpeedrunGameModeId) == false) {
m_signals.clear();
return;
}
+37 -37
View File
@@ -7,85 +7,85 @@
namespace dusk::gamemode {
GamemodeManager g_GamemodeManager;
GameModeManager g_GameModeManager;
aurora::Module DuskGamemodeLog("dusk::gamemode");
aurora::Module DuskGameModeLog("dusk::gamemode");
GamemodeManager::GamemodeManager() {
registerGamemode(Gamemode(kVanillaGamemodeId,"Vanilla","gczelda2"));
mCurrentGamemodeId = kVanillaGamemodeId;
GameModeManager::GameModeManager() {
registerGameMode(GameMode(kVanillaGameModeId,"Vanilla","gczelda2"));
mCurrentGameModeId = kVanillaGameModeId;
}
void GamemodeManager::setGamemodeToPrevious() {
void GameModeManager::setGameModeToPrevious() {
// Gets the value from the settings of the last played gamemode id and sets that to the current gamemode (if registered)
GamemodeId id = dusk::getSettings().game.lastSelectedGamemodeId;
if (mRegisteredGamemodes.find(id) == mRegisteredGamemodes.end()) {
setCurrentGamemode(kVanillaGamemodeId);
GameModeId id = dusk::getSettings().game.lastSelectedGameModeId;
if (mRegisteredGameModes.find(id) == mRegisteredGameModes.end()) {
setCurrentGameMode(kVanillaGameModeId);
return;
}
setCurrentGamemode(id);
setCurrentGameMode(id);
}
void GamemodeManager::registerGamemode(const Gamemode& gamemode) {
void GameModeManager::registerGameMode(const GameMode& gamemode) {
if (gamemode.getId().empty()) {
DuskGamemodeLog.fatal("No gamemode id specified in GamemodeManager::registerGamemode!");
DuskGameModeLog.fatal("No gamemode id specified in GameModeManager::registerGameMode!");
}
if (gamemode.getSaveName().empty()) {
DuskGamemodeLog.fatal("No save name provided for gamemode {}", gamemode.getId());
DuskGameModeLog.fatal("No save name provided for gamemode {}", gamemode.getId());
}
if (gamemode.getFullName().empty()) {
DuskGamemodeLog.fatal("No Name Specified for gamemode {}", gamemode.getId());
DuskGameModeLog.fatal("No Name Specified for gamemode {}", gamemode.getId());
}
if (mRegisteredGamemodes.find(gamemode.getId()) != mRegisteredGamemodes.end()) {
DuskGamemodeLog.warn("Attempting to register gamemode {} when it is already registered!", gamemode.getId());
if (mRegisteredGameModes.find(gamemode.getId()) != mRegisteredGameModes.end()) {
DuskGameModeLog.warn("Attempting to register gamemode {} when it is already registered!", gamemode.getId());
return;
}
mRegisteredGamemodes.emplace(gamemode.getId(),gamemode);
mRegisteredGameModes.emplace(gamemode.getId(),gamemode);
dusk::ui::Prelaunch::rebuild_menu_buttons();
}
void GamemodeManager::unregisterGamemode(const GamemodeId& gamemodeId) {
const auto& it = mRegisteredGamemodes.find(gamemodeId);
if (it == mRegisteredGamemodes.end()) {
DuskGamemodeLog.warn(
void GameModeManager::unregisterGameMode(const GameModeId& gamemodeId) {
const auto& it = mRegisteredGameModes.find(gamemodeId);
if (it == mRegisteredGameModes.end()) {
DuskGameModeLog.warn(
"Attempting to unregister gamemode of id {} that isn't registered!", gamemodeId);
return;
}
if (mCurrentGamemodeId == gamemodeId) {
if (mCurrentGameModeId == gamemodeId) {
// We need to be careful if we are unregistering a running gamemode, the easiest way is just
// to reset the game back to title as vanilla;
ui::prelaunch_state().showPrelaunchOnReset = true;
JUTGamePad::C3ButtonReset::sResetSwitchPushing = true;
setCurrentGamemode(kVanillaGamemodeId);
setCurrentGameMode(kVanillaGameModeId);
}
mRegisteredGamemodes.erase(it);
mRegisteredGameModes.erase(it);
dusk::ui::Prelaunch::rebuild_menu_buttons();
}
void GamemodeManager::setCurrentGamemode(const GamemodeId& id) {
if (mCurrentGamemodeId == id) {
void GameModeManager::setCurrentGameMode(const GameModeId& id) {
if (mCurrentGameModeId == id) {
return;
}
const Gamemode* currentGamemode = getCurrentGamemode();
if (currentGamemode) {
currentGamemode->invokeOnDeactivatedFunction();
const GameMode* currentGameMode = getCurrentGameMode();
if (currentGameMode) {
currentGameMode->invokeOnDeactivatedFunction();
}
if (mRegisteredGamemodes.find(id) == mRegisteredGamemodes.end()) {
DuskGamemodeLog.warn("Attempting to set current game mode to {} when it hasn't been registered!", id);
if (mRegisteredGameModes.find(id) == mRegisteredGameModes.end()) {
DuskGameModeLog.warn("Attempting to set current game mode to {} when it hasn't been registered!", id);
}
mCurrentGamemodeId = id;
dusk::getSettings().game.lastSelectedGamemodeId.setValue(id);
mCurrentGameModeId = id;
dusk::getSettings().game.lastSelectedGameModeId.setValue(id);
dusk::config::save();
currentGamemode = getCurrentGamemode();
if (currentGamemode) {
currentGameMode = getCurrentGameMode();
if (currentGameMode) {
// Set the loaded save file to our gamemode's save name
mDoMemCd_SetFileName(currentGamemode->mSaveName);
currentGamemode->invokeOnActivatedFunction();
mDoMemCd_SetFileName(currentGameMode->mSaveName);
currentGameMode->invokeOnActivatedFunction();
}
}
+23 -23
View File
@@ -4,23 +4,23 @@
#include "d/d_file_select.h"
namespace dusk::gamemode {
using GamemodeId = std::string;
using GameModeId = std::string;
constexpr const char* kVanillaGamemodeId = "vanilla";
constexpr const char* kVanillaGameModeId = "vanilla";
// This class holds the definition for the gamemode and various function pointers to call
class Gamemode {
class GameMode {
public:
Gamemode(const GamemodeId& id, const std::string& fullName, const std::string& saveName) {
GameMode(const GameModeId& id, const std::string& fullName, const std::string& saveName) {
mId = id;
mFullName = fullName;
mSaveName = saveName;
}
const GamemodeId& getId() const { return mId; }
const GameModeId& getId() const { return mId; }
const std::string& getFullName() const { return mFullName; }
const std::string& getSaveName() const { return mSaveName; }
GamemodeId mId;
GameModeId mId;
std::string mFullName;
std::string mSaveName;
@@ -84,37 +84,37 @@ public:
std::function<void()> mOnTickFunction;
};
class GamemodeManager {
class GameModeManager {
public:
GamemodeManager();
void registerGamemode(const Gamemode& gamemode);
void unregisterGamemode(const GamemodeId& gamemodeId);
GameModeManager();
void registerGameMode(const GameMode& gamemode);
void unregisterGameMode(const GameModeId& gamemodeId);
const Gamemode* getCurrentGamemode() const {
const auto& it = mRegisteredGamemodes.find(mCurrentGamemodeId);
return it != mRegisteredGamemodes.end() ? &it->second : &mRegisteredGamemodes.at(kVanillaGamemodeId);
const GameMode* getCurrentGameMode() const {
const auto& it = mRegisteredGameModes.find(mCurrentGameModeId);
return it != mRegisteredGameModes.end() ? &it->second : &mRegisteredGameModes.at(kVanillaGameModeId);
}
bool isCurrentGamemode(const GamemodeId& id) const {
const Gamemode* gamemode = getCurrentGamemode();
bool isCurrentGameMode(const GameModeId& id) const {
const GameMode* gamemode = getCurrentGameMode();
if (gamemode && gamemode->getId() == id) {
return true;
}
return false;
}
void setCurrentGamemode(const GamemodeId& id);
void setGamemodeToPrevious();
void setCurrentGameMode(const GameModeId& id);
void setGameModeToPrevious();
std::map<GamemodeId, Gamemode>& getRegisteredGamemodes() { return mRegisteredGamemodes; }
std::map<GameModeId, GameMode>& getRegisteredGameModes() { return mRegisteredGameModes; }
private:
GamemodeId mCurrentGamemodeId;
std::map<GamemodeId, Gamemode> mRegisteredGamemodes;
GameModeId mCurrentGameModeId;
std::map<GameModeId, GameMode> mRegisteredGameModes;
};
extern GamemodeManager g_GamemodeManager;
extern GameModeManager g_GameModeManager;
inline GamemodeManager& getGamemodeManager() {
return g_GamemodeManager;
inline GameModeManager& getGameModeManager() {
return g_GameModeManager;
}
}; // namespace dusk::gamemode
+12 -12
View File
@@ -32,7 +32,7 @@ void gamemode_remove_mod(LoadedMod& mod) {
const auto it = s_gamemodesRegisteredToMods.find(mod.metadata.id);
if (it != s_gamemodesRegisteredToMods.end()) {
for (const auto& id : it->second) {
dusk::gamemode::getGamemodeManager().unregisterGamemode(id);
dusk::gamemode::getGameModeManager().unregisterGameMode(id);
}
s_gamemodesRegisteredToMods.erase(it);
}
@@ -40,7 +40,7 @@ void gamemode_remove_mod(LoadedMod& mod) {
} // namespace
ModResult register_gamemode(ModContext* ctx, const GamemodeDesc* desc) {
ModResult register_gamemode(ModContext* ctx, const GameModeDesc* desc) {
std::string id;
if (!desc->gamemodeId) {
Log.error("Attempted to register a gamemode with a null id!");
@@ -71,7 +71,7 @@ ModResult register_gamemode(ModContext* ctx, const GamemodeDesc* desc) {
saveName = "gczelda2";
}
dusk::gamemode::Gamemode gamemode(id, fullName, saveName);
dusk::gamemode::GameMode gamemode(id, fullName, saveName);
if (desc->onActivatedFunction) {
gamemode.mOnActivatedFunction = desc->onActivatedFunction;
@@ -98,12 +98,12 @@ ModResult register_gamemode(ModContext* ctx, const GamemodeDesc* desc) {
gamemode.mOnTickFunction = desc->onTickFunction;
}
dusk::gamemode::getGamemodeManager().registerGamemode(gamemode);
dusk::gamemode::getGameModeManager().registerGameMode(gamemode);
const auto it = s_gamemodesRegisteredToMods.find(ctx->mod->metadata.id);
if (it == s_gamemodesRegisteredToMods.end()) {
std::vector<std::string> registeredGamemodes = {id};
s_gamemodesRegisteredToMods.emplace(ctx->mod->metadata.id, registeredGamemodes);
std::vector<std::string> registeredGameModes = {id};
s_gamemodesRegisteredToMods.emplace(ctx->mod->metadata.id, registeredGameModes);
}else {
it->second.push_back(id);
}
@@ -113,7 +113,7 @@ ModResult register_gamemode(ModContext* ctx, const GamemodeDesc* desc) {
ModResult unregister_gamemode(ModContext* ctx, const char* id) {
std::string fullId = get_mod_gamemode_id(ctx,id);
dusk::gamemode::getGamemodeManager().unregisterGamemode(fullId);
dusk::gamemode::getGameModeManager().unregisterGameMode(fullId);
// Remove the gamemode from the service registered gamemodes map
auto it = s_gamemodesRegisteredToMods.find(ctx->mod->metadata.id);
@@ -124,7 +124,7 @@ ModResult unregister_gamemode(ModContext* ctx, const char* id) {
}
ModResult is_active(ModContext* ctx, const char* gamemodeId, bool* out_active) {
*out_active = dusk::gamemode::getGamemodeManager().isCurrentGamemode(get_mod_gamemode_id(ctx,gamemodeId));
*out_active = dusk::gamemode::getGameModeManager().isCurrentGameMode(get_mod_gamemode_id(ctx,gamemodeId));
return MOD_OK;
}
@@ -133,10 +133,10 @@ ModResult is_active(ModContext* ctx, const char* gamemodeId, bool* out_active) {
namespace dusk::mods::svc {
namespace {
constexpr GamemodeService s_gamemodeService{
.header = SERVICE_HEADER(GamemodeService, GAMEMODE_SERVICE_MAJOR, GAMEMODE_SERVICE_MINOR),
.register_gamemode = gamemode_impl::register_gamemode,
.unregister_gamemode = gamemode_impl::unregister_gamemode,
constexpr GameModeService s_gamemodeService{
.header = SERVICE_HEADER(GameModeService, GAMEMODE_SERVICE_MAJOR, GAMEMODE_SERVICE_MINOR),
.register_game_mode = gamemode_impl::register_gamemode,
.unregister_game_mode = gamemode_impl::unregister_gamemode,
.is_active = gamemode_impl::is_active
};
+2 -2
View File
@@ -158,7 +158,7 @@ UserSettings g_userSettings = {
.removeQuestMapMarkers {"game.removeQuestMapMarkers", false},
.showInputViewer {"game.showInputViewer", false},
.showInputViewerGyro {"game.showInputViewerGyro", false},
.lastSelectedGamemodeId {"game.lastSelectedGamemodeId", gamemode::kVanillaGamemodeId}
.lastSelectedGameModeId {"game.lastSelectedGameModeId", gamemode::kVanillaGameModeId}
},
.backend = {
@@ -308,7 +308,7 @@ void registerSettings() {
Register(g_userSettings.game.removeQuestMapMarkers);
Register(g_userSettings.game.showInputViewer);
Register(g_userSettings.game.showInputViewerGyro);
Register(g_userSettings.game.lastSelectedGamemodeId);
Register(g_userSettings.game.lastSelectedGameModeId);
Register(g_userSettings.game.fastSpinner);
Register(g_userSettings.game.infiniteHearts);
Register(g_userSettings.game.infiniteArrows);
+1 -1
View File
@@ -286,7 +286,7 @@ struct UserSettings {
ConfigVar<bool> showInputViewer;
ConfigVar<bool> showInputViewerGyro;
ConfigVar<std::string> lastSelectedGamemodeId;
ConfigVar<std::string> lastSelectedGameModeId;
} game;
struct {
+9 -9
View File
@@ -21,18 +21,18 @@ static void onSpeedrunModeDeactive() {
}
}
void registerSpeedrunGamemode() {
dusk::gamemode::Gamemode speedrunGamemode(kSpeedrunGamemodeId,"Speedrun","gczelda2-speedrun");
speedrunGamemode.mOnSaveLoadedFunction = dusk::speedrun::start;
speedrunGamemode.mOnActivatedFunction = onSpeedrunModeActive;
speedrunGamemode.mOnDeactivatedFunction = onSpeedrunModeDeactive;
speedrunGamemode.mOnTickFunction = dusk::speedrun::onGameFrame;
void registerSpeedrunGameMode() {
dusk::gamemode::GameMode speedrunGameMode(kSpeedrunGameModeId,"Speedrun","gczelda2-speedrun");
speedrunGameMode.mOnSaveLoadedFunction = dusk::speedrun::start;
speedrunGameMode.mOnActivatedFunction = onSpeedrunModeActive;
speedrunGameMode.mOnDeactivatedFunction = onSpeedrunModeDeactive;
speedrunGameMode.mOnTickFunction = dusk::speedrun::onGameFrame;
dusk::gamemode::getGamemodeManager().registerGamemode(speedrunGamemode);
dusk::gamemode::getGameModeManager().registerGameMode(speedrunGameMode);
}
void unregisterSpeedrunGamemode() {
dusk::gamemode::getGamemodeManager().unregisterGamemode(kSpeedrunGamemodeId);
void unregisterSpeedrunGameMode() {
dusk::gamemode::getGameModeManager().unregisterGameMode(kSpeedrunGameModeId);
}
void resetForSpeedrunMode() {
+4 -4
View File
@@ -5,7 +5,7 @@
namespace dusk::speedrun {
constexpr const char* kSpeedrunGamemodeId = "vanilla_speedrun";
constexpr const char* kSpeedrunGameModeId = "vanilla_speedrun";
struct SpeedrunInfo {
@@ -47,13 +47,13 @@ struct SpeedrunInfo {
extern SpeedrunInfo g_speedrunInfo;
void registerSpeedrunGamemode();
void unregisterSpeedrunGamemode();
void registerSpeedrunGameMode();
void unregisterSpeedrunGameMode();
void resetForSpeedrunMode();
void restoreFromSpeedrunMode();
inline bool isActive() {
return dusk::gamemode::getGamemodeManager().isCurrentGamemode(kSpeedrunGamemodeId);
return dusk::gamemode::getGameModeManager().isCurrentGameMode(kSpeedrunGameModeId);
}
} // namespace dusk
+3 -3
View File
@@ -64,8 +64,8 @@ MenuBar::MenuBar()
}
// Only allow us to access achievements if we are playing on a gamemode that uses them
if (dusk::gamemode::getGamemodeManager().isCurrentGamemode(dusk::gamemode::kVanillaGamemodeId)
|| dusk::gamemode::getGamemodeManager().isCurrentGamemode(dusk::speedrun::kSpeedrunGamemodeId)) {
if (dusk::gamemode::getGameModeManager().isCurrentGameMode(dusk::gamemode::kVanillaGameModeId)
|| dusk::gamemode::getGameModeManager().isCurrentGameMode(dusk::speedrun::kSpeedrunGameModeId)) {
mTabBar->add_tab("Achievements", [this] { push(std::make_unique<AchievementsWindow>()); });
}
mTabBar->add_tab("Mods", [this] { push(std::make_unique<ModsWindow>()); });
@@ -100,7 +100,7 @@ MenuBar::MenuBar()
return;
}
dismiss(modal);
if (gamemode::getGamemodeManager().getRegisteredGamemodes().size() > 1) {
if (gamemode::getGameModeManager().getRegisteredGameModes().size() > 1) {
// If we have gamemodes registered, show pre-launch on a menubar reset
prelaunch_state().showPrelaunchOnReset = true;
Document::hide(true);
+12 -12
View File
@@ -766,10 +766,10 @@ static std::string get_playbutton_text() {
return "Select Disc Image";
}
std::string playText;
const dusk::gamemode::Gamemode* currentGameMode =
dusk::gamemode::getGamemodeManager().getCurrentGamemode();
const dusk::gamemode::GameMode* currentGameMode =
dusk::gamemode::getGameModeManager().getCurrentGameMode();
if (currentGameMode != nullptr) {
return currentGameMode->getId() == dusk::gamemode::kVanillaGamemodeId ? "Play" :
return currentGameMode->getId() == dusk::gamemode::kVanillaGameModeId ? "Play" :
"Play " + currentGameMode->getFullName();
}
return "Play";
@@ -821,7 +821,7 @@ Prelaunch::Prelaunch() : Document(kDocumentSource, false, DocumentScope::Prelaun
void Prelaunch::build_menu_buttons() {
if (auto* menuList = mDocument->GetElementById("menu-list")) {
// Set the gamemode to the last used before showing the play button
dusk::gamemode::getGamemodeManager().setGamemodeToPrevious();
dusk::gamemode::getGameModeManager().setGameModeToPrevious();
mMenuButtons.push_back(std::make_unique<Button>(menuList, get_playbutton_text()));
mMenuButtons.back()->on_pressed([this] {
@@ -846,8 +846,8 @@ void Prelaunch::build_menu_buttons() {
}
prelaunch_state().firstLaunch = false;
const dusk::gamemode::Gamemode* gamemode =
dusk::gamemode::getGamemodeManager().getCurrentGamemode();
const dusk::gamemode::GameMode* gamemode =
dusk::gamemode::getGameModeManager().getCurrentGameMode();
if (gamemode) {
gamemode->invokeOnPlayFunction();
}
@@ -873,28 +873,28 @@ void Prelaunch::build_menu_buttons() {
// If we have more gamemodes registered than the default vanilla, show the gamemode
// selection
if (dusk::gamemode::getGamemodeManager().getRegisteredGamemodes().size() > 1) {
mMenuButtons.push_back(std::make_unique<Button>(menuList, "Select Gamemode"));
if (dusk::gamemode::getGameModeManager().getRegisteredGameModes().size() > 1) {
mMenuButtons.push_back(std::make_unique<Button>(menuList, "Select GameMode"));
mMenuButtons.back()->on_pressed([this] {
std::vector<ModalAction> gamemodeActions;
gamemodeActions.push_back(dusk::ui::ModalAction{
.label = "Vanilla", .onPressed = [this](dusk::ui::Modal& modal) {
mDoAud_seStartMenu(kSoundClick);
dusk::gamemode::getGamemodeManager().setCurrentGamemode(dusk::gamemode::kVanillaGamemodeId);
dusk::gamemode::getGameModeManager().setCurrentGameMode(dusk::gamemode::kVanillaGameModeId);
modal.pop();
update();
}});
for (const auto& [id, gamemode] :
dusk::gamemode::getGamemodeManager().getRegisteredGamemodes())
dusk::gamemode::getGameModeManager().getRegisteredGameModes())
{
if (id == dusk::gamemode::kVanillaGamemodeId) {
if (id == dusk::gamemode::kVanillaGameModeId) {
// Force vanilla to the top
continue;
}
gamemodeActions.push_back(dusk::ui::ModalAction{.label = gamemode.getFullName(),
.onPressed = [this, id](dusk::ui::Modal& modal) {
mDoAud_seStartMenu(kSoundClick);
dusk::gamemode::getGamemodeManager().setCurrentGamemode(id);
dusk::gamemode::getGameModeManager().setCurrentGameMode(id);
modal.pop();
update();
}});
+2 -2
View File
@@ -1239,12 +1239,12 @@ SettingsWindow::SettingsWindow(bool prelaunch) : mPrelaunch(prelaunch) {
.onChange =
[this](bool enabled) {
if (enabled) {
dusk::speedrun::registerSpeedrunGamemode();
dusk::speedrun::registerSpeedrunGameMode();
} else {
if (dusk::speedrun::isActive()) {
pop();
}
dusk::speedrun::unregisterSpeedrunGamemode();
dusk::speedrun::unregisterSpeedrunGameMode();
}
MenuBar::rebuild();
},
+1 -1
View File
@@ -846,7 +846,7 @@ void fapGm_Execute() {
cCt_Counter(0);
#ifdef TARGET_PC
const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode();
const dusk::gamemode::GameMode* gamemode = dusk::gamemode::getGameModeManager().getCurrentGameMode();
if (gamemode) {
gamemode->invokeOnTickFunction();
}
+1 -1
View File
@@ -112,7 +112,7 @@ void checkDiskCallback(s32 result, DVDCommandBlock* block) {
void mDoRst_resetCallBack(int port, void*) {
#ifdef TARGET_PC
const dusk::gamemode::Gamemode* gamemode = dusk::gamemode::getGamemodeManager().getCurrentGamemode();
const dusk::gamemode::GameMode* gamemode = dusk::gamemode::getGameModeManager().getCurrentGameMode();
if (gamemode) {
gamemode->invokeOnGameResetFunction();
}
+2 -2
View File
@@ -922,7 +922,7 @@ int game_main(int argc, char* argv[]) {
// Apply after aurora_initialize: speedrun mode mutates cvars whose change callbacks push
// values into aurora.
if (dusk::getSettings().game.speedrunMode) {
dusk::speedrun::registerSpeedrunGamemode();
dusk::speedrun::registerSpeedrunGameMode();
}
if (parsed_arg_options.contains("mods") &&
@@ -938,7 +938,7 @@ int game_main(int argc, char* argv[]) {
}
if (skipPreLaunchUI == true) {
if (dusk::gamemode::getGamemodeManager().getRegisteredGamemodes().size() > 1 && dusk::getSettings().backend.skipPreLaunchUI.getValue()) {
if (dusk::gamemode::getGameModeManager().getRegisteredGameModes().size() > 1 && dusk::getSettings().backend.skipPreLaunchUI.getValue()) {
// Force pre-launch if we have registered gamemodes that we need to choose from
dusk::ui::push_document(std::make_unique<dusk::ui::Prelaunch>(), true);
} else {