mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-14 10:05:44 -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
@ -287,7 +287,7 @@ static void OnInit(void) {
|
|||||||
|
|
||||||
Camera.Active = &cam_FirstPerson;
|
Camera.Active = &cam_FirstPerson;
|
||||||
Event_Register_(&PointerEvents.RawMoved, NULL, OnRawMovement);
|
Event_Register_(&PointerEvents.RawMoved, NULL, OnRawMovement);
|
||||||
Event_Register_(&UserEvents.HackPermissionsChanged, NULL, OnHacksChanged);
|
Event_Register_(&UserEvents.HackPermsChanged, NULL, OnHacksChanged);
|
||||||
|
|
||||||
#ifdef CC_BUILD_WIN
|
#ifdef CC_BUILD_WIN
|
||||||
Camera.Sensitivity = Options_GetInt(OPT_SENSITIVITY, 1, 200, 40);
|
Camera.Sensitivity = Options_GetInt(OPT_SENSITIVITY, 1, 200, 40);
|
||||||
|
@ -911,7 +911,7 @@ static void LocalPlayer_Init(void) {
|
|||||||
Entity_Init(&p->Base);
|
Entity_Init(&p->Base);
|
||||||
Entity_SetName(&p->Base, &Game_Username);
|
Entity_SetName(&p->Base, &Game_Username);
|
||||||
Entity_SetSkin(&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->input.GetMovement = LocalPlayer_GetMovement;
|
||||||
p->Collisions.Entity = &p->Base;
|
p->Collisions.Entity = &p->Base;
|
||||||
|
@ -255,7 +255,7 @@ void HacksComp_Update(struct HacksComp* hacks) {
|
|||||||
|
|
||||||
hacks->CanDoubleJump = hacks->Enabled && hacks->CanSpeed;
|
hacks->CanDoubleJump = hacks->Enabled && hacks->CanSpeed;
|
||||||
hacks->CanSeeAllNames = hacks->CanAnyHacks && hacks->IsOp;
|
hacks->CanSeeAllNames = hacks->CanAnyHacks && hacks->IsOp;
|
||||||
Event_RaiseVoid(&UserEvents.HackPermissionsChanged);
|
Event_RaiseVoid(&UserEvents.HackPermsChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
void HacksComp_SetFlying(struct HacksComp* hacks, cc_bool flying) {
|
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 */
|
/* e.g. +ophax allows all hacks if op, -push disables entity pushing */
|
||||||
void HacksComp_RecheckFlags(struct HacksComp* hacks);
|
void HacksComp_RecheckFlags(struct HacksComp* hacks);
|
||||||
/* Updates state based on permissions (e.g. Flying set to false if CanFly is false) */
|
/* 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_Update(struct HacksComp* hacks);
|
||||||
void HacksComp_SetFlying(struct HacksComp* hacks, cc_bool flying);
|
void HacksComp_SetFlying(struct HacksComp* hacks, cc_bool flying);
|
||||||
void HacksComp_SetNoclip(struct HacksComp* hacks, cc_bool noclip);
|
void HacksComp_SetNoclip(struct HacksComp* hacks, cc_bool noclip);
|
||||||
|
@ -69,7 +69,7 @@ void Event_UnregisterAll(void) {
|
|||||||
GfxEvents.ContextRecreated.Count = 0;
|
GfxEvents.ContextRecreated.Count = 0;
|
||||||
|
|
||||||
UserEvents.BlockChanged.Count = 0;
|
UserEvents.BlockChanged.Count = 0;
|
||||||
UserEvents.HackPermissionsChanged.Count = 0;
|
UserEvents.HackPermsChanged.Count = 0;
|
||||||
UserEvents.HeldBlockChanged.Count = 0;
|
UserEvents.HeldBlockChanged.Count = 0;
|
||||||
|
|
||||||
BlockEvents.PermissionsChanged.Count = 0;
|
BlockEvents.PermissionsChanged.Count = 0;
|
||||||
|
@ -133,7 +133,7 @@ CC_VAR extern struct _GfxEventsList {
|
|||||||
|
|
||||||
CC_VAR extern struct _UserEventsList {
|
CC_VAR extern struct _UserEventsList {
|
||||||
struct Event_Block BlockChanged; /* User changes a block */
|
struct Event_Block BlockChanged; /* User changes a block */
|
||||||
struct Event_Void HackPermissionsChanged; /* Hack permissions of the player changes */
|
struct Event_Void HackPermsChanged; /* Hack permissions of the player changes */
|
||||||
struct Event_Void HeldBlockChanged; /* Held block in hotbar changes */
|
struct Event_Void HeldBlockChanged; /* Held block in hotbar changes */
|
||||||
struct Event_Void HacksStateChanged; /* Hack states changed (e.g. stops flying) */
|
struct Event_Void HacksStateChanged; /* Hack states changed (e.g. stops flying) */
|
||||||
} UserEvents;
|
} UserEvents;
|
||||||
|
@ -1065,7 +1065,7 @@ static void OnInit(void) {
|
|||||||
Event_Register_(&InputEvents.Wheel, NULL, OnMouseWheel);
|
Event_Register_(&InputEvents.Wheel, NULL, OnMouseWheel);
|
||||||
|
|
||||||
Event_Register_(&WindowEvents.FocusChanged, NULL, OnFocusChanged);
|
Event_Register_(&WindowEvents.FocusChanged, NULL, OnFocusChanged);
|
||||||
Event_Register_(&UserEvents.HackPermissionsChanged, NULL, InputHandler_CheckZoomFov);
|
Event_Register_(&UserEvents.HackPermsChanged, NULL, InputHandler_CheckZoomFov);
|
||||||
KeyBind_Init();
|
KeyBind_Init();
|
||||||
StoredHotkeys_LoadAll();
|
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->widgets = pause_widgets;
|
||||||
s->numWidgets = Array_Elems(pause_widgets);
|
s->numWidgets = Array_Elems(pause_widgets);
|
||||||
s->maxVertices = PAUSE_MAX_VERTICES;
|
s->maxVertices = PAUSE_MAX_VERTICES;
|
||||||
Event_Register_(&UserEvents.HackPermissionsChanged, s, PauseScreen_CheckHacksAllowed);
|
Event_Register_(&UserEvents.HackPermsChanged, s, PauseScreen_CheckHacksAllowed);
|
||||||
|
|
||||||
if (Gui.ClassicMenu) {
|
if (Gui.ClassicMenu) {
|
||||||
s->descs = classicDescs; /*400*/
|
s->descs = classicDescs; /*400*/
|
||||||
@ -525,7 +525,7 @@ static void PauseScreen_Init(void* screen) {
|
|||||||
|
|
||||||
static void PauseScreen_Free(void* screen) {
|
static void PauseScreen_Free(void* screen) {
|
||||||
struct PauseScreen* s = (struct PauseScreen*)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 = {
|
static const struct ScreenVTABLE PauseScreen_VTABLE = {
|
||||||
@ -628,7 +628,7 @@ static void OptionsGroupScreen_Layout(void* screen) {
|
|||||||
static void OptionsGroupScreen_Init(void* screen) {
|
static void OptionsGroupScreen_Init(void* screen) {
|
||||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)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->widgets = optGroups_widgets;
|
||||||
s->numWidgets = Array_Elems(optGroups_widgets);
|
s->numWidgets = Array_Elems(optGroups_widgets);
|
||||||
s->selectedI = -1;
|
s->selectedI = -1;
|
||||||
@ -641,7 +641,7 @@ static void OptionsGroupScreen_Init(void* screen) {
|
|||||||
|
|
||||||
static void OptionsGroupScreen_Free(void* screen) {
|
static void OptionsGroupScreen_Free(void* screen) {
|
||||||
struct OptionsGroupScreen* s = (struct OptionsGroupScreen*)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) {
|
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);
|
TextGroupWidget_Create(&s->extHelp, 5, s->extHelpTextures, MenuOptionsScreen_GetDesc);
|
||||||
s->extHelp.lines = 0;
|
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 */
|
#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) {
|
static void MenuOptionsScreen_Free(void* screen) {
|
||||||
struct MenuOptionsScreen* s = (struct MenuOptionsScreen*)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);
|
Gui_RemoveCore((struct Screen*)&MenuInputOverlay);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1934,13 +1934,13 @@ static void TouchScreen_BindClick(void* screen, void* widget) {
|
|||||||
|
|
||||||
static const struct TouchButtonDesc onscreenDescs[8] = {
|
static const struct TouchButtonDesc onscreenDescs[8] = {
|
||||||
{ "Chat", KEYBIND_CHAT, 0,0,0, TouchScreen_OnscreenClick },
|
{ "Chat", KEYBIND_CHAT, 0,0,0, TouchScreen_OnscreenClick },
|
||||||
{ "List", KEYBIND_PLAYER_LIST, 0,0,0, TouchScreen_OnscreenClick },
|
{ "Tablist", KEYBIND_PLAYER_LIST, 0,0,0, TouchScreen_OnscreenClick },
|
||||||
{ "Respawn", KEYBIND_RESPAWN, 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 },
|
{ "Set spawn", KEYBIND_SET_SPAWN, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanRespawn },
|
||||||
{ "Fly", KEYBIND_FLY, 0,0,0, TouchScreen_OnscreenClick },
|
{ "Fly", KEYBIND_FLY, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanFly },
|
||||||
{ "Noclip", KEYBIND_NOCLIP, 0,0,0, TouchScreen_OnscreenClick },
|
{ "Noclip", KEYBIND_NOCLIP, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanNoclip },
|
||||||
{ "Speed", KEYBIND_SPEED, 0,0,0, TouchScreen_OnscreenClick },
|
{ "Speed", KEYBIND_SPEED, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanSpeed },
|
||||||
{ "\xabSpeed", KEYBIND_HALF_SPEED, 0,0,0, TouchScreen_OnscreenClick }
|
{ "\xabSpeed", KEYBIND_HALF_SPEED, 0,0,0, TouchScreen_OnscreenClick, &LocalPlayer_Instance.Hacks.CanSpeed }
|
||||||
};
|
};
|
||||||
static const struct TouchButtonDesc normDescs[2] = {
|
static const struct TouchButtonDesc normDescs[2] = {
|
||||||
{ "More", KEYBIND_COUNT, 100, 50, 90, TouchScreen_MoreClick },
|
{ "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;
|
struct HacksComp* hacks = &LocalPlayer_Instance.Hacks;
|
||||||
const struct TouchButtonDesc* desc;
|
const struct TouchButtonDesc* desc;
|
||||||
int i, j;
|
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++) {
|
for (i = 0, j = 0; i < ONSCREEN_MAX_BTNS; i++) {
|
||||||
if (!(Gui._onscreenButtons & (1 << i))) continue;
|
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;
|
if (Gui_GetInputGrab()) return false;
|
||||||
|
|
||||||
i = Screen_DoPointerDown(screen, id, x, y);
|
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;
|
return i >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2091,6 +2091,7 @@ static void TouchScreen_Init(void* screen) {
|
|||||||
s->numWidgets = Array_Elems(touch_widgets);
|
s->numWidgets = Array_Elems(touch_widgets);
|
||||||
s->maxVertices = TOUCH_MAX_VERTICES;
|
s->maxVertices = TOUCH_MAX_VERTICES;
|
||||||
Event_Register_(&UserEvents.HacksStateChanged, screen, TouchScreen_HacksChanged);
|
Event_Register_(&UserEvents.HacksStateChanged, screen, TouchScreen_HacksChanged);
|
||||||
|
Event_Register_(&UserEvents.HackPermsChanged, screen, TouchScreen_HacksChanged);
|
||||||
|
|
||||||
TouchScreen_InitButtons(s);
|
TouchScreen_InitButtons(s);
|
||||||
ThumbstickWidget_Init(&s->thumbstick);
|
ThumbstickWidget_Init(&s->thumbstick);
|
||||||
@ -2100,6 +2101,7 @@ static void TouchScreen_Init(void* screen) {
|
|||||||
|
|
||||||
static void TouchScreen_Free(void* s) {
|
static void TouchScreen_Free(void* s) {
|
||||||
Event_Unregister_(&UserEvents.HacksStateChanged, s, TouchScreen_HacksChanged);
|
Event_Unregister_(&UserEvents.HacksStateChanged, s, TouchScreen_HacksChanged);
|
||||||
|
Event_Unregister_(&UserEvents.HackPermsChanged, s, TouchScreen_HacksChanged);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct ScreenVTABLE TouchScreen_VTABLE = {
|
static const struct ScreenVTABLE TouchScreen_VTABLE = {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user