From b887dd99e740c1071b126da8eb34974e95639418 Mon Sep 17 00:00:00 2001
From: thecozies <79979276+thecozies@users.noreply.github.com>
Date: Sun, 20 Jul 2025 17:42:57 -0500
Subject: [PATCH] WIP code driven input mapping and player assignment
---
CMakeLists.txt | 8 +-
assets/config_menu.rml | 14 +
assets/icons/Cont.svg | 3 +
assets/icons/Port.svg | 6 +
include/recomp_input.h | 44 ++-
src/game/input.cpp | 382 +++++++++++++++------
src/ui/elements/ui_binding_button.cpp | 40 ++-
src/ui/elements/ui_binding_button.h | 2 +
src/ui/elements/ui_config_page.cpp | 125 +++++++
src/ui/elements/ui_config_page.h | 49 +++
src/ui/elements/ui_pill_button.cpp | 205 +++++++++++
src/ui/elements/ui_pill_button.h | 43 +++
src/ui/elements/ui_theme.cpp | 17 +
src/ui/elements/ui_theme.h | 8 +
src/ui/ui_assign_players_modal.cpp | 145 ++++++++
src/ui/ui_assign_players_modal.h | 29 ++
src/ui/ui_config_page_controls.cpp | 275 +++++++++++++++
src/ui/ui_config_page_controls.h | 104 ++++++
src/ui/ui_config_page_controls_element.cpp | 113 ++++++
src/ui/ui_config_page_controls_element.h | 17 +
src/ui/ui_config_page_example.cpp | 61 ++++
src/ui/ui_config_page_example.h | 13 +
src/ui/ui_elements.cpp | 2 +
src/ui/ui_elements.h | 2 +
src/ui/ui_state.cpp | 18 +-
25 files changed, 1589 insertions(+), 136 deletions(-)
create mode 100644 assets/icons/Cont.svg
create mode 100644 assets/icons/Port.svg
create mode 100644 src/ui/elements/ui_config_page.cpp
create mode 100644 src/ui/elements/ui_config_page.h
create mode 100644 src/ui/elements/ui_pill_button.cpp
create mode 100644 src/ui/elements/ui_pill_button.h
create mode 100644 src/ui/ui_assign_players_modal.cpp
create mode 100644 src/ui/ui_assign_players_modal.h
create mode 100644 src/ui/ui_config_page_controls.cpp
create mode 100644 src/ui/ui_config_page_controls.h
create mode 100644 src/ui/ui_config_page_controls_element.cpp
create mode 100644 src/ui/ui_config_page_controls_element.h
create mode 100644 src/ui/ui_config_page_example.cpp
create mode 100644 src/ui/ui_config_page_example.h
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 26cbf0d..c151eed 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -168,6 +168,10 @@ set (SOURCES
${CMAKE_SOURCE_DIR}/src/ui/ui_state.cpp
${CMAKE_SOURCE_DIR}/src/ui/ui_launcher.cpp
${CMAKE_SOURCE_DIR}/src/ui/ui_config.cpp
+ ${CMAKE_SOURCE_DIR}/src/ui/ui_assign_players_modal.cpp
+ ${CMAKE_SOURCE_DIR}/src/ui/ui_config_page_example.cpp
+ ${CMAKE_SOURCE_DIR}/src/ui/ui_config_page_controls.cpp
+ ${CMAKE_SOURCE_DIR}/src/ui/ui_config_page_controls_element.cpp
${CMAKE_SOURCE_DIR}/src/ui/ui_prompt.cpp
${CMAKE_SOURCE_DIR}/src/ui/ui_config_sub_menu.cpp
${CMAKE_SOURCE_DIR}/src/ui/ui_color_hack.cpp
@@ -186,10 +190,12 @@ set (SOURCES
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_button.cpp
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_icon_button.cpp
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_clickable.cpp
+ ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_config_page.cpp
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_container.cpp
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_element.cpp
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_image.cpp
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_label.cpp
+ ${CMAKE_SOURCE_DIR}/src/ui/elements/ui_pill_button.cpp
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_radio.cpp
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_scroll_container.cpp
${CMAKE_SOURCE_DIR}/src/ui/elements/ui_slider.cpp
@@ -288,7 +294,7 @@ if (WIN32)
PROPERTIES
LINK_FLAGS_DEBUG "/SUBSYSTEM:CONSOLE"
LINK_FLAGS_RELEASE "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup"
- LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup"
+ LINK_FLAGS_RELWITHDEBINFO "/SUBSYSTEM:CONSOLE" # "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup"
LINK_FLAGS_MINSIZEREL "/SUBSYSTEM:WINDOWS /ENTRY:mainCRTStartup"
)
diff --git a/assets/config_menu.rml b/assets/config_menu.rml
index 8d582dc..1770221 100644
--- a/assets/config_menu.rml
+++ b/assets/config_menu.rml
@@ -78,6 +78,20 @@