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