On-screen hacks buttons are disabled if orresponding hack is disabled

E.g -fly or -hax disables on-screen fly button
This commit is contained in:
UnknownShadow200 2020-11-13 22:12:04 +11:00
parent eb9b0aad28
commit 20e16e0dc9
9 changed files with 31 additions and 29 deletions

View File

@ -286,8 +286,8 @@ static void OnInit(void) {
Camera_Register(&cam_ForwardThird);
Camera.Active = &cam_FirstPerson;
Event_Register_(&PointerEvents.RawMoved, NULL, OnRawMovement);
Event_Register_(&UserEvents.HackPermissionsChanged, NULL, OnHacksChanged);
Event_Register_(&PointerEvents.RawMoved, NULL, OnRawMovement);
Event_Register_(&UserEvents.HackPermsChanged, NULL, OnHacksChanged);
#ifdef CC_BUILD_WIN
Camera.Sensitivity = Options_GetInt(OPT_SENSITIVITY, 1, 200, 40);

View File

@ -911,7 +911,7 @@ static void LocalPlayer_Init(void) {
Entity_Init(&p->Base);
Entity_SetName(&p->Base, &Game_Username);
Entity_SetSkin(&p->Base, &Game_Username);
Event_Register_(&UserEvents.HackPermissionsChanged, NULL, LocalPlayer_CheckJumpVelocity);
Event_Register_(&UserEvents.HackPermsChanged, NULL, LocalPlayer_CheckJumpVelocity);
p->input.GetMovement = LocalPlayer_GetMovement;
p->Collisions.Entity = &p->Base;

View File

@ -255,7 +255,7 @@ void HacksComp_Update(struct HacksComp* hacks) {
hacks->CanDoubleJump = hacks->Enabled && hacks->CanSpeed;
hacks->CanSeeAllNames = hacks->CanAnyHacks && hacks->IsOp;
Event_RaiseVoid(&UserEvents.HackPermissionsChanged);
Event_RaiseVoid(&UserEvents.HackPermsChanged);
}
void HacksComp_SetFlying(struct HacksComp* hacks, cc_bool flying) {

View File

@ -70,7 +70,7 @@ cc_bool HacksComp_CanJumpHigher(struct HacksComp* hacks);
/* e.g. +ophax allows all hacks if op, -push disables entity pushing */
void HacksComp_RecheckFlags(struct HacksComp* hacks);
/* Updates state based on permissions (e.g. Flying set to false if CanFly is false) */
/* Raises UserEvents.HackPermissionsChanged */
/* Raises UserEvents.HackPermsChanged */
void HacksComp_Update(struct HacksComp* hacks);
void HacksComp_SetFlying(struct HacksComp* hacks, cc_bool flying);
void HacksComp_SetNoclip(struct HacksComp* hacks, cc_bool noclip);

View File

@ -68,9 +68,9 @@ void Event_UnregisterAll(void) {
GfxEvents.ContextLost.Count = 0;
GfxEvents.ContextRecreated.Count = 0;
UserEvents.BlockChanged.Count = 0;
UserEvents.HackPermissionsChanged.Count = 0;
UserEvents.HeldBlockChanged.Count = 0;
UserEvents.BlockChanged.Count = 0;
UserEvents.HackPermsChanged.Count = 0;
UserEvents.HeldBlockChanged.Count = 0;
BlockEvents.PermissionsChanged.Count = 0;
BlockEvents.BlockDefChanged.Count = 0;

View File

@ -132,10 +132,10 @@ CC_VAR extern struct _GfxEventsList {
} GfxEvents;
CC_VAR extern struct _UserEventsList {
struct Event_Block BlockChanged; /* User changes a block */
struct Event_Void HackPermissionsChanged; /* Hack permissions of the player changes */
struct Event_Void HeldBlockChanged; /* Held block in hotbar changes */
struct Event_Void HacksStateChanged; /* Hack states changed (e.g. stops flying) */
struct Event_Block BlockChanged; /* User changes a block */
struct Event_Void HackPermsChanged; /* Hack permissions of the player changes */
struct Event_Void HeldBlockChanged; /* Held block in hotbar changes */
struct Event_Void HacksStateChanged; /* Hack states changed (e.g. stops flying) */
} UserEvents;
CC_VAR extern struct _BlockEventsList {

View File

@ -1064,8 +1064,8 @@ static void OnInit(void) {
Event_Register_(&InputEvents.Up, NULL, OnInputUp);
Event_Register_(&InputEvents.Wheel, NULL, OnMouseWheel);
Event_Register_(&WindowEvents.FocusChanged, NULL, OnFocusChanged);
Event_Register_(&UserEvents.HackPermissionsChanged, NULL, InputHandler_CheckZoomFov);
Event_Register_(&WindowEvents.FocusChanged, NULL, OnFocusChanged);
Event_Register_(&UserEvents.HackPermsChanged, NULL, InputHandler_CheckZoomFov);
KeyBind_Init();
StoredHotkeys_LoadAll();
}

View File

@ -503,7 +503,7 @@ static void PauseScreen_Init(void* screen) {
s->widgets = pause_widgets;
s->numWidgets = Array_Elems(pause_widgets);
s->maxVertices = PAUSE_MAX_VERTICES;
Event_Register_(&UserEvents.HackPermissionsChanged, s, PauseScreen_CheckHacksAllowed);
Event_Register_(&UserEvents.HackPermsChanged, s, PauseScreen_CheckHacksAllowed);
if (Gui.ClassicMenu) {
s->descs = classicDescs; /*400*/
@ -525,7 +525,7 @@ static void PauseScreen_Init(void* screen) {
static void PauseScreen_Free(void* screen) {
struct PauseScreen* s = (struct PauseScreen*)screen;
Event_Unregister_(&UserEvents.HackPermissionsChanged, s, PauseScreen_CheckHacksAllowed);
Event_Unregister_(&UserEvents.HackPermsChanged, s, PauseScreen_CheckHacksAllowed);
}
static const struct ScreenVTABLE PauseScreen_VTABLE = {
@ -628,7 +628,7 @@ static void OptionsGroupScreen_Layout(void* screen) {
static void OptionsGroupScreen_Init(void* screen) {
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
Event_Register_(&UserEvents.HackPermissionsChanged, s, OptionsGroupScreen_CheckHacksAllowed);
Event_Register_(&UserEvents.HackPermsChanged, s, OptionsGroupScreen_CheckHacksAllowed);
s->widgets = optGroups_widgets;
s->numWidgets = Array_Elems(optGroups_widgets);
s->selectedI = -1;
@ -641,7 +641,7 @@ static void OptionsGroupScreen_Init(void* screen) {
static void OptionsGroupScreen_Free(void* screen) {
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)screen;
Event_Unregister_(&UserEvents.HackPermissionsChanged, s, OptionsGroupScreen_CheckHacksAllowed);
Event_Unregister_(&UserEvents.HackPermsChanged, s, OptionsGroupScreen_CheckHacksAllowed);
}
static int OptionsGroupScreen_PointerMove(void* screen, int id, int x, int y) {
@ -2329,7 +2329,7 @@ static void MenuOptionsScreen_Init(void* screen) {
TextGroupWidget_Create(&s->extHelp, 5, s->extHelpTextures, MenuOptionsScreen_GetDesc);
s->extHelp.lines = 0;
Event_Register_(&UserEvents.HackPermissionsChanged, screen, MenuOptionsScreen_OnHacksChanged);
Event_Register_(&UserEvents.HackPermsChanged, screen, MenuOptionsScreen_OnHacksChanged);
}
#define EXTHELP_PAD 5 /* padding around extended help box */
@ -2352,7 +2352,7 @@ static void MenuOptionsScreen_Render(void* screen, double delta) {
static void MenuOptionsScreen_Free(void* screen) {
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)screen;
Event_Unregister_(&UserEvents.HackPermissionsChanged, screen, MenuOptionsScreen_OnHacksChanged);
Event_Unregister_(&UserEvents.HackPermsChanged, screen, MenuOptionsScreen_OnHacksChanged);
Gui_RemoveCore((struct Screen*)&MenuInputOverlay);
}

View File

@ -1934,13 +1934,13 @@ static void TouchScreen_BindClick(void* screen, void* widget) {
static const struct TouchButtonDesc onscreenDescs[8] = {
{ "Chat", KEYBIND_CHAT, 0,0,0, TouchScreen_OnscreenClick },
{ "List", KEYBIND_PLAYER_LIST, 0,0,0, TouchScreen_OnscreenClick },
{ "Respawn", KEYBIND_RESPAWN, 0,0,0, TouchScreen_OnscreenClick },
{ "Set spawn", KEYBIND_SET_SPAWN, 0,0,0, TouchScreen_OnscreenClick },
{ "Fly", KEYBIND_FLY, 0,0,0, TouchScreen_OnscreenClick },
{ "Noclip", KEYBIND_NOCLIP, 0,0,0, TouchScreen_OnscreenClick },
{ "Speed", KEYBIND_SPEED, 0,0,0, TouchScreen_OnscreenClick },
{ "\xabSpeed", KEYBIND_HALF_SPEED, 0,0,0, TouchScreen_OnscreenClick }
{ "Tablist", KEYBIND_PLAYER_LIST, 0,0,0, TouchScreen_OnscreenClick },
{ "Respawn", KEYBIND_RESPAWN, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanRespawn },
{ "Set spawn", KEYBIND_SET_SPAWN, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanRespawn },
{ "Fly", KEYBIND_FLY, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanFly },
{ "Noclip", KEYBIND_NOCLIP, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanNoclip },
{ "Speed", KEYBIND_SPEED, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanSpeed },
{ "\xabSpeed", KEYBIND_HALF_SPEED, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanSpeed }
};
static const struct TouchButtonDesc normDescs[2] = {
{ "More", KEYBIND_COUNT, 100, 50, 90, TouchScreen_MoreClick },
@ -1956,7 +1956,7 @@ static void TouchScreen_InitButtons(struct TouchScreen* s) {
struct HacksComp* hacks = &LocalPlayer_Instance.Hacks;
const struct TouchButtonDesc* desc;
int i, j;
for (; i < TOUCH_MAX_BTNS; i++) s->widgets[i] = NULL;
for (i = 0; i < TOUCH_MAX_BTNS; i++) s->widgets[i] = NULL;
for (i = 0, j = 0; i < ONSCREEN_MAX_BTNS; i++) {
if (!(Gui._onscreenButtons & (1 << i))) continue;
@ -2032,7 +2032,7 @@ static int TouchScreen_PointerDown(void* screen, int id, int x, int y) {
if (Gui_GetInputGrab()) return false;
i = Screen_DoPointerDown(screen, id, x, y);
if (i >= 0) s->widgets[i]->active |= id;
if (i >= ONSCREEN_MAX_BTNS) s->widgets[i]->active |= id;
return i >= 0;
}
@ -2091,6 +2091,7 @@ static void TouchScreen_Init(void* screen) {
s->numWidgets = Array_Elems(touch_widgets);
s->maxVertices = TOUCH_MAX_VERTICES;
Event_Register_(&UserEvents.HacksStateChanged, screen, TouchScreen_HacksChanged);
Event_Register_(&UserEvents.HackPermsChanged, screen, TouchScreen_HacksChanged);
TouchScreen_InitButtons(s);
ThumbstickWidget_Init(&s->thumbstick);
@ -2100,6 +2101,7 @@ static void TouchScreen_Init(void* screen) {
static void TouchScreen_Free(void* s) {
Event_Unregister_(&UserEvents.HacksStateChanged, s, TouchScreen_HacksChanged);
Event_Unregister_(&UserEvents.HackPermsChanged, s, TouchScreen_HacksChanged);
}
static const struct ScreenVTABLE TouchScreen_VTABLE = {