Switch mode when necessary

This commit is contained in:
Maurice Heumann 2022-12-13 19:11:42 +01:00
parent 6d51d491a7
commit 9ab865ad2a
2 changed files with 7 additions and 18 deletions

View File

@ -43,24 +43,12 @@ namespace party
void launch_mode(const game::eModes mode)
{
const auto* command = "";
switch (mode)
scheduler::once([=]
{
case game::MODE_CAMPAIGN:
command = "startCampaign;";
break;
case game::MODE_ZOMBIES:
command = "startZombies;";
break;
case game::MODE_MULTIPLAYER:
command = "startMultiplayer;";
break;
default:
return;
}
game::Cbuf_AddText(0, command);
const auto local_client = *reinterpret_cast<DWORD*>(0x14342355C_g);
const auto current_mode = game::Com_SessionMode_GetMode();
game::Com_SwitchMode(local_client, current_mode, mode, 6);
}, scheduler::main);
}
void connect_to_lobby_with_mode(const game::netadr_t& addr, const game::eModes mode, const std::string& mapname,

View File

@ -16,7 +16,8 @@ namespace game
// Com
WEAK symbol<void(int channel, unsigned int label, const char* fmt, ...)> Com_Printf{0x1421499C0};
WEAK symbol<void(const char* file, int line, int code, const char* fmt, ...)> Com_Error_{0x1420F8BD0};
WEAK symbol<bool(eModes mode)> Com_SessionMode_IsMode{0x1420F7DD0};
WEAK symbol<bool(eModes mode)> Com_SessionMode_IsMode{ 0x1420F7DD0 };
WEAK symbol<void(uint32_t localClientNum, eModes fromMode, eModes toMode, uint32_t flags)> Com_SwitchMode{0x14214AF30 };
WEAK symbol<void(int localClientNum, const char* text)> Cbuf_AddText{0x1420EC8B0};
WEAK symbol<void(const char* cmdName, xcommand_t function, cmd_function_s* allocedCmd)> Cmd_AddCommandInternal{