mirror of
https://github.com/ClassiCube/ClassiCube.git
synced 2025-09-14 10:05:44 -04:00
Start making scroll wheel bindable
This commit is contained in:
parent
dfe2ae1dd1
commit
48c5c0dc88
@ -12,7 +12,7 @@ EE_OBJS = $(OBJS) $(patsubst %.o, $(BUILD_DIR)/%.o, $(IOP_MODS))
|
||||
EE_LIBS = -lpatches -lpad -lpacket -ldma -lgraph -ldraw -lc -lps2ip -lnetman -lmc
|
||||
EE_CFLAGS = -DPLAT_PS2
|
||||
|
||||
all: $(EE_BIN)
|
||||
all: $(BUILD_DIR) $(EE_BIN)
|
||||
|
||||
clean:
|
||||
rm -f $(EE_BIN) $(EE_OBJS)
|
||||
|
14
src/Input.c
14
src/Input.c
@ -224,6 +224,7 @@ static const char* const storageNames[INPUT_COUNT] = {
|
||||
|
||||
"XButton1", "XButton2", "XButton3", "XButton4", "XButton5", "XButton6",
|
||||
"LeftMouse", "RightMouse", "MiddleMouse",
|
||||
"WheelUp", "WheelDown", "WheelLeft", "WheelRight",
|
||||
Pad_Names
|
||||
};
|
||||
|
||||
@ -254,6 +255,7 @@ const char* const Input_DisplayNames[INPUT_COUNT] = {
|
||||
|
||||
"XBUTTON1", "XBUTTON2", "XBUTTON3", "XBUTTON4", "XBUTTON5", "XBUTTON6",
|
||||
"LMOUSE", "RMOUSE", "MMOUSE",
|
||||
"WHEELUP", "WHEELDOWN", "WHEELLEFT", "WHEELRIGHT",
|
||||
Pad_Names
|
||||
};
|
||||
|
||||
@ -328,8 +330,20 @@ void Pointer_SetPressed(int idx, cc_bool pressed) {
|
||||
}
|
||||
}
|
||||
|
||||
static float scrollingAcc;
|
||||
void Mouse_ScrollWheel(float delta) {
|
||||
int steps = Utils_AccumulateWheelDelta(&scrollingAcc, delta);
|
||||
Event_RaiseFloat(&InputEvents.Wheel, delta);
|
||||
|
||||
if (steps > 0) {
|
||||
for (; steps != 0; steps--)
|
||||
Input_SetPressed(CCWHEEL_UP);
|
||||
Input_SetReleased(CCWHEEL_UP);
|
||||
} else if (steps < 0) {
|
||||
for (; steps != 0; steps++)
|
||||
Input_SetPressed(CCWHEEL_DOWN);
|
||||
Input_SetReleased(CCWHEEL_DOWN);
|
||||
}
|
||||
}
|
||||
|
||||
void Pointer_SetPosition(int idx, int x, int y) {
|
||||
|
@ -50,6 +50,7 @@ enum InputButtons {
|
||||
/* NOTE: RMOUSE must be before MMOUSE for PlayerClick compatibility */
|
||||
CCMOUSE_X1, CCMOUSE_X2, CCMOUSE_X3, CCMOUSE_X4, CCMOUSE_X5, CCMOUSE_X6,
|
||||
CCMOUSE_L, CCMOUSE_R, CCMOUSE_M,
|
||||
CCWHEEL_UP, CCWHEEL_DOWN, CCWHEEL_LEFT, CCWHEEL_RIGHT,
|
||||
|
||||
CCPAD_A, CCPAD_B, CCPAD_X, CCPAD_Y, CCPAD_L, CCPAD_R, CCPAD_Z,
|
||||
CCPAD_LEFT, CCPAD_RIGHT, CCPAD_UP, CCPAD_DOWN,
|
||||
|
@ -283,7 +283,6 @@ static struct ColoursScreen {
|
||||
struct LLabel lblRGB[COLOURS_NUM_COLS];
|
||||
struct LInput iptColours[COLOURS_NUM_ENTRIES];
|
||||
struct LCheckbox cbClassic;
|
||||
float colourAcc;
|
||||
} ColoursScreen;
|
||||
|
||||
#define COLOURSSCREEN_MAX_WIDGETS 25
|
||||
@ -373,14 +372,11 @@ static void ColoursScreen_AdjustSelected(struct LScreen* s, int delta) {
|
||||
ColoursScreen_TextChanged(w);
|
||||
}
|
||||
|
||||
static void ColoursScreen_MouseWheel(struct LScreen* s_, float delta) {
|
||||
struct ColoursScreen* s = (struct ColoursScreen*)s_;
|
||||
int steps = Utils_AccumulateWheelDelta(&s->colourAcc, delta);
|
||||
ColoursScreen_AdjustSelected(s_, steps);
|
||||
}
|
||||
|
||||
static void ColoursScreen_KeyDown(struct LScreen* s, int key, cc_bool was) {
|
||||
int delta = Input_CalcDelta(key, 1, 10);
|
||||
if (key == CCWHEEL_UP) delta = +1;
|
||||
if (key == CCWHEEL_DOWN) delta = -1;
|
||||
|
||||
if (delta) {
|
||||
ColoursScreen_AdjustSelected(s, delta);
|
||||
} else {
|
||||
@ -423,7 +419,6 @@ static void ColoursScreen_Activated(struct LScreen* s_) {
|
||||
struct ColoursScreen* s = (struct ColoursScreen*)s_;
|
||||
ColoursScreen_AddWidgets(s);
|
||||
|
||||
s->colourAcc = 0;
|
||||
LCheckbox_Set(&s->cbClassic, Launcher_Theme.ClassicBackground);
|
||||
ColoursScreen_UpdateAll(s);
|
||||
}
|
||||
@ -437,7 +432,6 @@ void ColoursScreen_SetActive(void) {
|
||||
|
||||
s->Activated = ColoursScreen_Activated;
|
||||
s->KeyDown = ColoursScreen_KeyDown;
|
||||
s->MouseWheel = ColoursScreen_MouseWheel;
|
||||
|
||||
s->title = "Custom theme";
|
||||
s->onEscapeWidget = (struct LWidget*)&s->btnBack;
|
||||
|
17
src/Menus.c
17
src/Menus.c
@ -241,7 +241,6 @@ static struct ListScreen {
|
||||
struct ButtonWidget btns[LIST_SCREEN_ITEMS];
|
||||
struct ButtonWidget left, right, done, action;
|
||||
struct FontDesc font;
|
||||
float wheelAcc;
|
||||
int currentIndex;
|
||||
Widget_LeftClick EntryClick, DoneClick, ActionClick;
|
||||
const char* actionText;
|
||||
@ -374,28 +373,22 @@ static int ListScreen_KeyDown(void* screen, int key) {
|
||||
ListScreen_PageClick(s, false);
|
||||
} else if (Input_IsRightButton(key) || key == CCKEY_PAGEDOWN) {
|
||||
ListScreen_PageClick(s, true);
|
||||
} else if (key == CCWHEEL_UP) {
|
||||
ListScreen_SetCurrentIndex(s, s->currentIndex - 1);
|
||||
} else if (key == CCWHEEL_DOWN) {
|
||||
ListScreen_SetCurrentIndex(s, s->currentIndex + 1);
|
||||
} else {
|
||||
Menu_InputDown(screen, key);
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static int ListScreen_MouseScroll(void* screen, float delta) {
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
int steps = Utils_AccumulateWheelDelta(&s->wheelAcc, delta);
|
||||
|
||||
if (steps) ListScreen_SetCurrentIndex(s, s->currentIndex - steps);
|
||||
return true;
|
||||
}
|
||||
|
||||
static void ListScreen_Init(void* screen) {
|
||||
struct ListScreen* s = (struct ListScreen*)screen;
|
||||
int i, width;
|
||||
s->widgets = list_widgets;
|
||||
s->numWidgets = 0;
|
||||
s->maxWidgets = Array_Elems(list_widgets);
|
||||
|
||||
s->wheelAcc = 0.0f;
|
||||
s->currentIndex = 0;
|
||||
|
||||
for (i = 0; i < LIST_SCREEN_ITEMS; i++)
|
||||
@ -455,7 +448,7 @@ static const struct ScreenVTABLE ListScreen_VTABLE = {
|
||||
ListScreen_Init, Screen_NullUpdate, ListScreen_Free,
|
||||
ListScreen_Render, Screen_BuildMesh,
|
||||
ListScreen_KeyDown, Screen_InputUp, Screen_TKeyPress, Screen_TText,
|
||||
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, ListScreen_MouseScroll,
|
||||
Menu_PointerDown, Screen_PointerUp, Menu_PointerMove, Screen_TMouseScroll,
|
||||
ListScreen_Layout, ListScreen_ContextLost, ListScreen_ContextRecreated
|
||||
};
|
||||
void ListScreen_Show(void) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user