From 4b7b6926d1c7e762a7e1fd700f05e72300ec2114 Mon Sep 17 00:00:00 2001 From: MysterD Date: Mon, 9 May 2022 23:20:07 -0700 Subject: [PATCH] Moderator cleanup --- src/pc/chat_commands.c | 6 +++--- src/pc/network/moderator_list.c | 17 +++++++++++++++++ src/pc/network/moderator_list.h | 1 + src/pc/network/network.c | 3 +++ src/pc/network/packets/packet_command_mod.c | 2 +- 5 files changed, 25 insertions(+), 4 deletions(-) diff --git a/src/pc/chat_commands.c b/src/pc/chat_commands.c index a56ff157..5977897f 100644 --- a/src/pc/chat_commands.c +++ b/src/pc/chat_commands.c @@ -9,7 +9,7 @@ #include "level_table.h" -extern int gIsModerator; +extern u8 gIsModerator; static enum ChatConfirmCommand sConfirming = CCC_NONE; static u8 sConfirmPlayerIndex = 0; @@ -65,7 +65,7 @@ bool exec_chat_command(char* command) { if (ccc == CCC_BAN) { struct NetworkPlayer* np = &gNetworkPlayers[sConfirmPlayerIndex]; if (!np->connected) { return true; } - char message[256] = { 0 }; + char message[256] = { 0 }; snprintf(message, 256, "\\#fff982\\Banning '%s%s\\#fff982\\'!", network_get_player_text_color_string(np->localIndex), np->name); djui_chat_message_create(message); if (gNetworkType == NT_SERVER) { @@ -256,7 +256,7 @@ bool exec_chat_command(char* command) { } *(paramArea - 1) = 0; *(paramAct - 1) = 0; - + // Level s32 level = -1; if (sscanf(paramLevel, "%d", &level) <= 0) { diff --git a/src/pc/network/moderator_list.c b/src/pc/network/moderator_list.c index ddf40b7e..f9891dd2 100644 --- a/src/pc/network/moderator_list.c +++ b/src/pc/network/moderator_list.c @@ -8,6 +8,23 @@ char** gModeratorAddresses = NULL; bool* gModerator = NULL; u16 gModeratorCount = 0; +void moderator_list_clear(void) { + for (u16 i = 0; i < gModeratorCount; i++) { + if (gModeratorAddresses[i] == NULL) { continue; } + free(gModeratorAddresses[i]); + } + gModeratorCount = 0; + + if (gModeratorAddresses != NULL) { + free(gModeratorAddresses); + gModeratorAddresses = NULL; + } + if (gModerator != NULL) { + free(gModerator); + gModerator = NULL; + } +} + void moderator_list_add(char* address, bool perm) { u16 index = gModeratorCount++; if (gModeratorAddresses == NULL) { diff --git a/src/pc/network/moderator_list.h b/src/pc/network/moderator_list.h index e390087f..8439930a 100644 --- a/src/pc/network/moderator_list.h +++ b/src/pc/network/moderator_list.h @@ -7,6 +7,7 @@ extern char** gModeratorAddresses; extern bool* gModerator; extern u16 gModeratorCount; +void moderator_list_clear(void); void moderator_list_add(char* address, bool perm); bool moderator_list_contains(char* address); diff --git a/src/pc/network/network.c b/src/pc/network/network.c index fdbd0a90..0f3df7c8 100644 --- a/src/pc/network/network.c +++ b/src/pc/network/network.c @@ -456,6 +456,9 @@ void network_shutdown(bool sendLeaving, bool exiting) { extern s16 gMenuMode; gMenuMode = -1; + extern u8 gIsModerator; + gIsModerator = 0; + djui_panel_shutdown(); extern bool gDjuiInMainMenu; if (!gDjuiInMainMenu) { diff --git a/src/pc/network/packets/packet_command_mod.c b/src/pc/network/packets/packet_command_mod.c index 7816a4f5..1465d8dc 100644 --- a/src/pc/network/packets/packet_command_mod.c +++ b/src/pc/network/packets/packet_command_mod.c @@ -4,7 +4,7 @@ #include "pc/network/ban_list.h" #include "pc/network/moderator_list.h" -int gIsModerator; +u8 gIsModerator = 0; void network_send_chat_command(u8 globalIndex, enum ChatConfirmCommand ccc) { if (gIsModerator == 1) {