mirror of
https://github.com/coop-deluxe/sm64coopdx.git
synced 2026-05-10 19:01:46 +00:00
Add reloading, do last changes (hopefully, can't wait to review and make pr message (it requires search pr to be merged (again (i'm so cooked (its gg)))))
This commit is contained in:
parent
2102da9f56
commit
537eabc3bd
5 changed files with 38 additions and 4 deletions
|
|
@ -9,6 +9,9 @@
|
|||
#include "pc/network/network.h"
|
||||
#include "pc/network/moderation.h"
|
||||
|
||||
struct DjuiButton* sModButton = NULL;
|
||||
static u8 sSelectedIndex = 0;
|
||||
|
||||
static void djui_panel_moderator_menu_action_button_click(struct DjuiBase* caller) {
|
||||
djui_panel_moderation_confirm_create(caller, caller->uTag, caller->tag, caller->bTag, djui_panel_moderator_menu_reload);
|
||||
}
|
||||
|
|
@ -16,12 +19,23 @@ static void djui_panel_moderator_menu_action_button_click(struct DjuiBase* calle
|
|||
static void djui_panel_moderator_menu_inspector_destroy(struct DjuiBase* base) {
|
||||
struct DjuiThreePanel* threePanel = (struct DjuiThreePanel*)base;
|
||||
free(threePanel);
|
||||
sModButton = NULL;
|
||||
}
|
||||
|
||||
void djui_panel_moderator_inspector_reload() {
|
||||
if (!sModButton) return;
|
||||
if (sSelectedIndex >= MAX_PLAYERS) return;
|
||||
struct NetworkPlayer* np = &gNetworkPlayers[sSelectedIndex];
|
||||
|
||||
djui_text_set_text(sModButton->text, np->moderator ? DLANG(MODERATION, UNMOD) : DLANG(MODERATION, MOD));
|
||||
sModButton->base.uTag = np->moderator ? MODERATION_ACTION_UNMOD : MODERATION_ACTION_MOD;
|
||||
}
|
||||
|
||||
void djui_panel_moderator_menu_inspector_create(struct DjuiBase* caller) {
|
||||
if (caller->tag <= 0 || caller->tag >= MAX_PLAYERS) return;
|
||||
struct NetworkPlayer* np = &gNetworkPlayers[caller->tag];
|
||||
if (!np->connected) return;
|
||||
sSelectedIndex = caller->tag;
|
||||
struct DjuiThreePanel* panel = djui_panel_menu_create(DLANG(MODERATION, MODERATOR_MENU_TITLE), true);
|
||||
|
||||
struct DjuiBase* body = djui_three_panel_get_body(panel);
|
||||
|
|
@ -42,10 +56,10 @@ void djui_panel_moderator_menu_inspector_create(struct DjuiBase* caller) {
|
|||
banButton->base.uTag = MODERATION_ACTION_BAN;
|
||||
banButton->base.tag = np->localIndex;
|
||||
|
||||
struct DjuiButton* modButton = djui_button_create(body, np->moderator ? DLANG(MODERATION, UNMOD) : DLANG(MODERATION, MOD), DJUI_BUTTON_STYLE_NORMAL, djui_panel_moderator_menu_action_button_click);
|
||||
modButton->base.uTag = np->moderator ? MODERATION_ACTION_UNMOD : MODERATION_ACTION_MOD;
|
||||
modButton->base.bTag = true;
|
||||
modButton->base.tag = np->localIndex;
|
||||
sModButton = djui_button_create(body, np->moderator ? DLANG(MODERATION, UNMOD) : DLANG(MODERATION, MOD), DJUI_BUTTON_STYLE_NORMAL, djui_panel_moderator_menu_action_button_click);
|
||||
sModButton->base.uTag = np->moderator ? MODERATION_ACTION_UNMOD : MODERATION_ACTION_MOD;
|
||||
sModButton->base.bTag = true;
|
||||
sModButton->base.tag = np->localIndex;
|
||||
|
||||
djui_button_create(body, DLANG(MENU, BACK), DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
#pragma once
|
||||
#include "djui.h"
|
||||
|
||||
void djui_panel_moderator_inspector_reload();
|
||||
void djui_panel_moderator_menu_inspector_create(struct DjuiBase* caller);
|
||||
|
|
@ -2,9 +2,18 @@
|
|||
#include <string.h>
|
||||
#include <PR/ultratypes.h>
|
||||
#include "moderation.h"
|
||||
#include "pc/djui/djui_panel_moderator_menu.h"
|
||||
#include "pc/djui/djui_panel_moderation_list.h"
|
||||
#include "pc/djui/djui_panel_moderator_menu_inspect.h"
|
||||
#include "pc/debuglog.h"
|
||||
#include "pc/ini.h"
|
||||
|
||||
void djui_reload_moderation_panels() {
|
||||
djui_panel_moderator_menu_reload();
|
||||
djui_panel_moderation_list_reload();
|
||||
djui_panel_moderator_inspector_reload();
|
||||
}
|
||||
|
||||
void network_kick_player(u8 localIndex, char* reason) {
|
||||
if (gNetworkPlayerLocal->moderator) {
|
||||
network_send_moderation_action(MODERATION_ACTION_KICK, localIndex, reason, false);
|
||||
|
|
|
|||
|
|
@ -10,6 +10,7 @@ enum ModerationActions {
|
|||
MODERATION_ACTION_COUNT,
|
||||
};
|
||||
|
||||
void djui_reload_moderation_panels();
|
||||
void network_kick_player(u8 localIndex, char* reason);
|
||||
void network_ban_player(u8 localIndex, char* reason, bool permanent);
|
||||
void network_unban_player(char* address);
|
||||
|
|
|
|||
|
|
@ -17,6 +17,7 @@
|
|||
#endif
|
||||
#include "game/mario.h"
|
||||
#include "pc/djui/djui_unicode.h"
|
||||
#include "moderation.h"
|
||||
|
||||
struct NetworkPlayer gNetworkPlayers[MAX_PLAYERS] = { 0 };
|
||||
struct NetworkPlayer *gNetworkPlayerLocal = NULL;
|
||||
|
|
@ -292,6 +293,8 @@ u8 network_player_connected(enum NetworkPlayerType type, u8 globalIndex, u8 mode
|
|||
np->palette = *palette;
|
||||
network_player_update_model(localIndex);
|
||||
|
||||
djui_reload_moderation_panels();
|
||||
|
||||
snprintf(np->name, MAX_CONFIG_STRING, "%s", name);
|
||||
return localIndex;
|
||||
}
|
||||
|
|
@ -327,6 +330,9 @@ u8 network_player_connected(enum NetworkPlayerType type, u8 globalIndex, u8 mode
|
|||
|
||||
snprintf(np->discordId, 64, "%s", discordId);
|
||||
|
||||
// update moderation panels
|
||||
djui_reload_moderation_panels();
|
||||
|
||||
// clear networking fields
|
||||
np->lastReceived = clock_elapsed();
|
||||
np->lastSent = clock_elapsed();
|
||||
|
|
@ -421,6 +427,9 @@ u8 network_player_disconnected(u8 globalIndex) {
|
|||
// reset mario state
|
||||
init_mario_single_from_save_file(&gMarioStates[i], i);
|
||||
|
||||
// reload moderation panels
|
||||
djui_reload_moderation_panels();
|
||||
|
||||
return i;
|
||||
}
|
||||
return UNKNOWN_GLOBAL_INDEX;
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue