mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-13 09:35:23 -04:00
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:
parent
eb9b0aad28
commit
20e16e0dc9
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
@ -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 {
|
||||
|
@ -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();
|
||||
}
|
||||
|
12
src/Menus.c
12
src/Menus.c
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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 = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user