aboutsummaryrefslogtreecommitdiff
path: root/NorthstarDLL/misccommands.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'NorthstarDLL/misccommands.cpp')
-rw-r--r--NorthstarDLL/misccommands.cpp91
1 files changed, 48 insertions, 43 deletions
diff --git a/NorthstarDLL/misccommands.cpp b/NorthstarDLL/misccommands.cpp
index 42ec15af..572d5620 100644
--- a/NorthstarDLL/misccommands.cpp
+++ b/NorthstarDLL/misccommands.cpp
@@ -1,60 +1,65 @@
#include "pch.h"
#include "misccommands.h"
#include "concommand.h"
-#include "gameutils.h"
+#include "playlist.h"
+#include "r2engine.h"
+#include "r2client.h"
+#include "hoststate.h"
#include "masterserver.h"
#include "serverauthentication.h"
#include "squirrel.h"
+void ConCommand_force_newgame(const CCommand& arg)
+{
+ if (arg.ArgC() < 2)
+ return;
+
+ R2::g_pHostState->m_iNextState = R2::HostState_t::HS_NEW_GAME;
+ strncpy(R2::g_pHostState->m_levelName, arg.Arg(1), sizeof(R2::g_pHostState->m_levelName));
+}
+
+void ConCommand_ns_start_reauth_and_leave_to_lobby(const CCommand& arg)
+{
+ // hack for special case where we're on a local server, so we erase our own newly created auth data on disconnect
+ g_pMasterServerManager->m_bNewgameAfterSelfAuth = true;
+ g_pMasterServerManager->AuthenticateWithOwnServer(R2::g_pLocalPlayerUserID, g_pMasterServerManager->m_sOwnClientAuthToken);
+}
+
+void ConCommand_ns_end_reauth_and_leave_to_lobby(const CCommand& arg)
+{
+ R2::Cbuf_AddText(
+ R2::Cbuf_GetCurrentPlayer(),
+ fmt::format("serverfilter {}", g_pServerAuthentication->m_RemoteAuthenticationData.begin()->first).c_str(),
+ R2::cmd_source_t::kCommandSrcCode);
+ R2::Cbuf_Execute();
+
+ // weird way of checking, but check if client script vm is initialised, mainly just to allow players to cancel this
+ if (g_pSquirrel<ScriptContext::CLIENT>->m_pSQVM)
+ {
+ g_pServerAuthentication->m_bNeedLocalAuthForNewgame = true;
+
+ // this won't set playlist correctly on remote clients, don't think they can set playlist until they've left which sorta
+ // fucks things should maybe set this in HostState_NewGame?
+ R2::SetCurrentPlaylist("tdm");
+ strcpy(R2::g_pHostState->m_levelName, "mp_lobby");
+ R2::g_pHostState->m_iNextState = R2::HostState_t::HS_NEW_GAME;
+ }
+}
+
void AddMiscConCommands()
{
- MAKE_CONCMD(
+ RegisterConCommand(
"force_newgame",
+ ConCommand_force_newgame,
"forces a map load through directly setting g_pHostState->m_iNextState to HS_NEW_GAME",
- FCVAR_NONE,
- [](const CCommand& arg)
- {
- if (arg.ArgC() < 2)
- return;
-
- g_pHostState->m_iNextState = HS_NEW_GAME;
- strncpy(g_pHostState->m_levelName, arg.Arg(1), sizeof(g_pHostState->m_levelName));
- });
+ FCVAR_NONE);
- MAKE_CONCMD(
+ RegisterConCommand(
"ns_start_reauth_and_leave_to_lobby",
+ ConCommand_ns_start_reauth_and_leave_to_lobby,
"called by the server, used to reauth and return the player to lobby when leaving a game",
- FCVAR_SERVER_CAN_EXECUTE,
- [](const CCommand& arg)
- {
- // hack for special case where we're on a local server, so we erase our own newly created auth data on disconnect
- g_MasterServerManager->m_bNewgameAfterSelfAuth = true;
- g_MasterServerManager->AuthenticateWithOwnServer(g_LocalPlayerUserID, g_MasterServerManager->m_ownClientAuthToken);
- });
+ FCVAR_SERVER_CAN_EXECUTE);
// this is a concommand because we make a deferred call to it from another thread
- MAKE_CONCMD(
- "ns_end_reauth_and_leave_to_lobby",
- "",
- FCVAR_NONE,
- [](const CCommand& arg)
- {
- Cbuf_AddText(
- Cbuf_GetCurrentPlayer(),
- fmt::format("serverfilter {}", g_ServerAuthenticationManager->m_authData.begin()->first).c_str(),
- cmd_source_t::kCommandSrcCode);
- Cbuf_Execute();
-
- // weird way of checking, but check if client script vm is initialised, mainly just to allow players to cancel this
- if (g_ClientSquirrelManager->sqvm)
- {
- g_ServerAuthenticationManager->m_bNeedLocalAuthForNewgame = true;
-
- // this won't set playlist correctly on remote clients, don't think they can set playlist until they've left which sorta
- // fucks things should maybe set this in HostState_NewGame?
- SetCurrentPlaylist("tdm");
- strcpy(g_pHostState->m_levelName, "mp_lobby");
- g_pHostState->m_iNextState = HS_NEW_GAME;
- }
- });
+ RegisterConCommand("ns_end_reauth_and_leave_to_lobby", ConCommand_ns_end_reauth_and_leave_to_lobby, "", FCVAR_NONE);
}