sm64coopdx/src/pc/djui/djui_panel_controls.c
2023-03-31 03:16:58 -07:00

44 lines
1.9 KiB
C

#include "djui.h"
#include "src/pc/utils/misc.h"
#include "src/pc/configfile.h"
#include "src/pc/controller/controller_api.h"
#include "src/pc/controller/controller_sdl.h"
void djui_panel_controls_value_change(UNUSED struct DjuiBase* caller) {
controller_reconfigure();
}
void djui_panel_controls_create(struct DjuiBase* caller) {
struct DjuiThreePanel* panel = djui_panel_menu_create("\\#ff0800\\C\\#1be700\\O\\#00b3ff\\N\\#ffef00\\T\\#ff0800\\R\\#1be700\\O\\#00b3ff\\L\\#ffef00\\S");
struct DjuiFlowLayout* body = (struct DjuiFlowLayout*)djui_three_panel_get_body(panel);
{
djui_button_create(&body->base, "N64 Binds", DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_n64_create);
djui_button_create(&body->base, "Extra Binds", DJUI_BUTTON_STYLE_NORMAL, djui_panel_controls_extra_create);
djui_checkbox_create(&body->base, "Background Gamepad (must restart)", &configBackgroundGamepad, NULL);
#ifdef HAVE_SDL2
int numJoys = SDL_NumJoysticks();
if (numJoys == 0) { numJoys = 1; }
if (numJoys > 10) { numJoys = 10; }
int strSize = numJoys * 2;
char* gamepadChoices[numJoys];
char gamepadChoicesLong[strSize];
for (int i = 0; i < numJoys; i++) {
int index = i * 2;
if (i > 9) {
index += (i - 9);
}
sprintf(&gamepadChoicesLong[index], "%d", i);
gamepadChoices[i] = &gamepadChoicesLong[index];
}
djui_selectionbox_create(&body->base, "Gamepad", gamepadChoices, numJoys, &configGamepadNumber, NULL);
#endif
djui_slider_create(&body->base, "Deadzone", &configStickDeadzone, 0, 100, djui_panel_controls_value_change);
djui_slider_create(&body->base, "Rumble Strength", &configRumbleStrength, 0, 100, djui_panel_controls_value_change);
djui_button_create(&body->base, "Back", DJUI_BUTTON_STYLE_BACK, djui_panel_menu_back);
}
djui_panel_add(caller, panel, NULL);
}