Skip to content

Commit 3848388

Browse files
committed
expose g_leaderboardOpen and g_leaderboardWillClose, make wakeup reject feature work with sar_disable_challenge_stats_hud values that are not -1
1 parent a8d7225 commit 3848388

File tree

4 files changed

+20
-13
lines changed

4 files changed

+20
-13
lines changed

src/Features/AutoSubmit.cpp

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
#include "AutoSubmit.hpp"
22

33
#include "../Games/Portal2.hpp"
4+
#include "../Modules/Client.hpp"
45
#include "Cheats.hpp"
56
#include "Command.hpp"
67
#include "Event.hpp"
@@ -29,7 +30,7 @@
2930
#define OLD_API_KEY_FILE "autosubmit_key.txt"
3031

3132
bool AutoSubmit::g_cheated = false;
32-
bool AutoSubmit::g_paused = false;
33+
int AutoSubmit::g_paused = 0;
3334
std::string AutoSubmit::g_partner_name = "";
3435

3536
ON_EVENT(SESSION_START) {
@@ -48,11 +49,12 @@ ON_INIT {
4849

4950
ON_EVENT(SESSION_START) {
5051
AutoSubmit::g_cheated = sv_cheats.GetBool();
52+
AutoSubmit::g_paused = 0;
5153
}
5254

5355
ON_EVENT(PRE_TICK) {
5456
if (sv_cheats.GetBool()) AutoSubmit::g_cheated = true;
55-
if (engine->IsGamePaused() && SpeedrunTimer::IsRunning()) AutoSubmit::g_paused = true;
57+
if (engine->IsGamePaused() && SpeedrunTimer::IsRunning() && !(client->g_leaderboardOpen)) AutoSubmit::g_paused += 1;
5658
}
5759

5860
static std::string g_api_base;
@@ -583,11 +585,13 @@ void AutoSubmit::FinishRun(float final_time, const char *demopath, std::optional
583585
return;
584586
}
585587

586-
if (AutoSubmit::g_paused && engine->GetCurrentMapName() == "sp_a1_wakeup") {
588+
int allowedPauses = 0;
589+
if (sar_disable_challenge_stats_hud.GetInt() != -1) allowedPauses = 1;
590+
if (AutoSubmit::g_paused > allowedPauses && engine->GetCurrentMapName() == "sp_a1_wakeup") {
587591
console->Print("Pause Detected in wakeup (pause abuse is not allowed in CM); not autosubmitting\nManually submit this demo if you believe this was a mistake\n");
588592
return;
589-
}
590-
593+
}
594+
591595
#if defined(SAR_DEV_BUILD)
592596
console->Print("Dev SAR build; not autosubmitting\n");
593597
return;

src/Features/AutoSubmit.hpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
namespace AutoSubmit {
88
extern bool g_cheated;
9-
extern bool g_paused;
9+
extern int g_paused;
1010
extern std::string g_partner_name;
1111

1212
void LoadApiKey(bool output_nonexist);

src/Modules/Client.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -350,18 +350,18 @@ DETOUR_T(const char *, Client::GetName) {
350350
return Client::GetName(thisptr);
351351
}
352352

353-
static bool g_leaderboardOpen = false;
354-
static bool g_leaderboardWillClose = false;
353+
bool g_leaderboardOpen = false;
354+
bool g_leaderboardWillClose = false;
355355
DETOUR_COMMAND(Client::openleaderboard) {
356356
Client::openleaderboard_callback(args);
357357

358358
if (args.ArgC() == 2 && !strcmp(args[1], "4") && client->GetChallengeStatus() == CMStatus::CHALLENGE) {
359-
g_leaderboardOpen = true;
359+
client->g_leaderboardOpen = true;
360360
auto ticks = 6;
361361
if (sar_disable_challenge_stats_hud.GetInt() > 1) ticks = sar_disable_challenge_stats_hud.GetInt();
362362
Scheduler::InHostTicks(ticks, []() {
363-
if (sar.game->Is(SourceGame_Portal2) && sar_disable_challenge_stats_hud.GetInt() > 0 && (!engine->IsCoop() || engine->IsOrange() || g_leaderboardWillClose)) {
364-
g_leaderboardWillClose = false;
363+
if (sar.game->Is(SourceGame_Portal2) && sar_disable_challenge_stats_hud.GetInt() > 0 && (!engine->IsCoop() || engine->IsOrange() || client->g_leaderboardWillClose)) {
364+
client->g_leaderboardWillClose = false;
365365
engine->ExecuteCommand("-leaderboard");
366366
}
367367
});
@@ -480,8 +480,8 @@ DETOUR_COMMAND(Client::closeleaderboard) {
480480

481481
Client::closeleaderboard_callback(args);
482482

483-
if (g_leaderboardOpen) {
484-
g_leaderboardOpen = false;
483+
if (client->g_leaderboardOpen) {
484+
client->g_leaderboardOpen = false;
485485
NetMessage::SendMsg(LEADERBOARD_MESSAGE_TYPE, 0, 0);
486486
}
487487
}

src/Modules/Client.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,9 @@ class Client : public Module {
7272
int *nNumSPChapters;
7373
int *nNumMPChapters;
7474

75+
bool g_leaderboardOpen;
76+
bool g_leaderboardWillClose;
77+
7578
std::string lastLevelName;
7679
void **gamerules;
7780

0 commit comments

Comments
 (0)