///////////////////////////////////////////////////////////////////////////////// // // FILE : ScriptRouterContext.cpp // PURPOSE : Data set for the script side transition router, which can be used to create Script Router Links, and into which Script Router Links can be resolved. // // AUTHOR : glenn.cullen // STARTED : December 2020 // ///////////////////////////////////////////////////////////////////////////////// #include "ScriptRouterContext.h" #if GEN9_STANDALONE_ENABLED #define SRC_SOURCE_LANDINGPAGE "SRCS_NATIVE_LANDING_PAGE" #define SRC_SOURCE_PROSPEROGAMEINTENT "SRCS_PROSPERO_GAME_INTENT" #define SRC_SOURCE_SCRIPT "SRCS_SCRIPT" #define SRC_MODE_FREEMODE "SRCM_FREE" #define SRC_MODE_STORYMODE "SRCM_STORY" #define SRC_MODE_CREATORMODE "SRCM_CREATOR" #define SRC_MODE_EDITORMODE "SRCM_EDITOR" #define SRC_MODE_LANDINGPAGE "SRCM_LANDING_PAGE" #define SRC_ARGTYPE_NONE "SRCA_NONE" #define SRC_ARGTYPE_LOCATION "SRCA_LOCATION" #define SRC_ARGTYPE_PROPERTY "SRCA_PROPERTY" #define SRC_ARGTYPE_HEIST "SRCA_HEIST" #define SRC_ARGTYPE_SERIES "SRCA_SERIES" #define SRC_ARGTYPE_WEBPAGE "SRCA_WEBPAGE" #define SRC_ARGTYPE_GAMBLING "SRCA_GAMBLING" #define SRC_ARGTYPE_CHARACTER_CREATOR "SRCA_CHARACTER_CREATOR" #define SRC_ARGTYPE_STORE "SRCA_STORE" #define SRC_ARGTYPE_MEMBERSHIP "SRCA_MEMBERSHIP" #define SRC_ARGTYPE_LANDING_PAGE_ENTRYPOINT_ID "SRCA_LANDING_PAGE_ENTRYPOINT_ID" atString ScriptRouterContext::GetStringFromSRCSource(eScriptRouterContextSource SRCSource) { atString returnVal; switch (SRCSource) { case eScriptRouterContextSource::SRCS_INVALID: break; case eScriptRouterContextSource::SRCS_NATIVE_LANDING_PAGE: returnVal = SRC_SOURCE_LANDINGPAGE; break; case eScriptRouterContextSource::SRCS_PROSPERO_GAME_INTENT: returnVal = SRC_SOURCE_PROSPEROGAMEINTENT; break; case eScriptRouterContextSource::SRCS_SCRIPT: returnVal = SRC_SOURCE_SCRIPT; break; } Assertf(returnVal != NULL, "ScriptRouterContext::GetStringFromSRCMode - Supplied source type is none, invalid or not supported."); return returnVal; } atString ScriptRouterContext::GetStringFromSRCMode(eScriptRouterContextMode SRCMode) { atString returnVal; switch (SRCMode) { case eScriptRouterContextMode::SRCM_INVALID: break; case eScriptRouterContextMode::SRCM_FREE: returnVal = SRC_MODE_FREEMODE; break; case eScriptRouterContextMode::SRCM_STORY: returnVal = SRC_MODE_STORYMODE; break; case eScriptRouterContextMode::SRCM_CREATOR: returnVal = SRC_MODE_CREATORMODE; break; case eScriptRouterContextMode::SRCM_EDITOR: returnVal = SRC_MODE_EDITORMODE; break; case eScriptRouterContextMode::SRCM_LANDING_PAGE: returnVal = SRC_MODE_LANDINGPAGE; break; } Assertf(returnVal != NULL, "ScriptRouterContext::GetStringFromSRCMode - Supplied mode type is none, invalid or not supported."); return returnVal; } atString ScriptRouterContext::GetStringFromSRCArgument(eScriptRouterContextArgument SRCArg) { atString returnVal; switch (SRCArg) { case eScriptRouterContextArgument::SRCA_NONE: returnVal = SRC_ARGTYPE_NONE; break; case eScriptRouterContextArgument::SRCA_LOCATION: returnVal = SRC_ARGTYPE_LOCATION; break; case eScriptRouterContextArgument::SRCA_PROPERTY: returnVal = SRC_ARGTYPE_PROPERTY; break; case eScriptRouterContextArgument::SRCA_HEIST: returnVal = SRC_ARGTYPE_HEIST; break; case eScriptRouterContextArgument::SRCA_SERIES: returnVal = SRC_ARGTYPE_SERIES; break; case eScriptRouterContextArgument::SRCA_WEBPAGE: returnVal = SRC_ARGTYPE_WEBPAGE; break; case eScriptRouterContextArgument::SRCA_GAMBLING: returnVal = SRC_ARGTYPE_GAMBLING; break; case eScriptRouterContextArgument::SRCA_CHARACTER_CREATOR: returnVal = SRC_ARGTYPE_CHARACTER_CREATOR; break; case eScriptRouterContextArgument::SRCA_STORE: returnVal = SRC_ARGTYPE_STORE; break; case eScriptRouterContextArgument::SRCA_MEMBERSHIP: returnVal = SRC_ARGTYPE_MEMBERSHIP; break; case eScriptRouterContextArgument::SRCA_LANDING_PAGE_ENTRYPOINT_ID: returnVal = SRC_ARGTYPE_MEMBERSHIP; break; case eScriptRouterContextArgument::SRCA_INVALID: break; } Assertf(returnVal != NULL, "ScriptRouterContext::GetStringFromSRCArgument - Supplied arg type is invalid or not supported."); return returnVal; } eScriptRouterContextSource ScriptRouterContext::GetSRCSourceFromString(const atString& str) { eScriptRouterContextSource returnVal = eScriptRouterContextSource::SRCS_INVALID; if (str == SRC_SOURCE_LANDINGPAGE) { returnVal = eScriptRouterContextSource::SRCS_NATIVE_LANDING_PAGE; } else if (str == SRC_SOURCE_PROSPEROGAMEINTENT) { returnVal = eScriptRouterContextSource::SRCS_PROSPERO_GAME_INTENT; } else if (str == SRC_SOURCE_SCRIPT) { returnVal = eScriptRouterContextSource::SRCS_SCRIPT; } Assertf(returnVal != eScriptRouterContextSource::SRCS_INVALID, "ScriptRouterContext::GetSRCSourceFromString - There is no enum mapping for the supplied string: %s", str.c_str()); return returnVal; } eScriptRouterContextMode ScriptRouterContext::GetSRCModeFromString(const atString& str) { eScriptRouterContextMode returnVal = eScriptRouterContextMode::SRCM_INVALID; if (str == SRC_MODE_FREEMODE) { returnVal = eScriptRouterContextMode::SRCM_FREE; } else if (str == SRC_MODE_STORYMODE) { returnVal = eScriptRouterContextMode::SRCM_STORY; } else if (str == SRC_MODE_CREATORMODE) { returnVal = eScriptRouterContextMode::SRCM_CREATOR; } else if (str == SRC_MODE_EDITORMODE) { returnVal = eScriptRouterContextMode::SRCM_EDITOR; } else if (str == SRC_MODE_LANDINGPAGE) { returnVal = eScriptRouterContextMode::SRCM_LANDING_PAGE; } Assertf(returnVal != eScriptRouterContextMode::SRCM_INVALID, "ScriptRouterContext::GetSRCModeFromString - There is no enum mapping for the supplied string: %s", str.c_str()); return returnVal; } eScriptRouterContextArgument ScriptRouterContext::GetSRCArgFromString(const atString& str) { eScriptRouterContextArgument returnVal = eScriptRouterContextArgument::SRCA_INVALID; if (str == SRC_ARGTYPE_NONE) { returnVal = eScriptRouterContextArgument::SRCA_NONE; } else if (str == SRC_ARGTYPE_LOCATION) { returnVal = eScriptRouterContextArgument::SRCA_LOCATION; } else if (str == SRC_ARGTYPE_PROPERTY) { returnVal = eScriptRouterContextArgument::SRCA_PROPERTY; } else if (str == SRC_ARGTYPE_HEIST) { returnVal = eScriptRouterContextArgument::SRCA_HEIST; } else if (str == SRC_ARGTYPE_SERIES) { returnVal = eScriptRouterContextArgument::SRCA_SERIES; } else if (str == SRC_ARGTYPE_WEBPAGE) { returnVal = eScriptRouterContextArgument::SRCA_WEBPAGE; } else if (str == SRC_ARGTYPE_GAMBLING) { returnVal = eScriptRouterContextArgument::SRCA_GAMBLING; } else if (str == SRC_ARGTYPE_CHARACTER_CREATOR) { returnVal = eScriptRouterContextArgument::SRCA_CHARACTER_CREATOR; } else if (str == SRC_ARGTYPE_STORE) { returnVal = eScriptRouterContextArgument::SRCA_STORE; } else if (str == SRC_ARGTYPE_MEMBERSHIP) { returnVal = eScriptRouterContextArgument::SRCA_MEMBERSHIP; } else if (str == SRC_ARGTYPE_LANDING_PAGE_ENTRYPOINT_ID) { returnVal = eScriptRouterContextArgument::SRCA_LANDING_PAGE_ENTRYPOINT_ID; } Assertf(returnVal != eScriptRouterContextArgument::SRCA_INVALID, "ScriptRouterContext::GetSRCArgFromString - There is no enum mapping for the supplied string: %s", str.c_str()); return returnVal; } MultiplayerGameMode ScriptRouterContext::GetGameModeFromSRCData(const ScriptRouterContextData& srcData) { const eScriptRouterContextMode srcMode = (eScriptRouterContextMode)srcData.m_ScriptRouterMode.Int; switch (srcMode) { case SRCM_FREE: return GameMode_Freeroam; case SRCM_STORY: return GameMode_Invalid; // GameMode_Invalid is GAMEMODE_SP in script case SRCM_CREATOR: return GameMode_Creator; case SRCM_EDITOR: return GameMode_Editor; case SRCM_LANDING_PAGE: return GameMode_Invalid; // TODO GEN9_STANDALONE: Add Landing Page mode to MultiplayerGameMode enum case SRCM_INVALID: Errorf("[ScriptRouterContext::GetGameModeFromSRCData] Attempting to retrieve invalid SRCMode"); return GameMode_Invalid; } return GameMode_Invalid; } #endif