show controller during config (#904)

This commit is contained in:
Logan McNaughton
2026-05-17 16:43:37 +02:00
committed by GitHub
parent 8c53de9cc7
commit e3b63908de
5 changed files with 54 additions and 2 deletions
Generated
+19
View File
@@ -2254,6 +2254,7 @@ dependencies = [
"regex",
"reqwest",
"rfd",
"sdl3-image-sys",
"sdl3-sys",
"sdl3-ttf-sys",
"semver",
@@ -5409,6 +5410,24 @@ dependencies = [
"tiny-skia 0.11.4",
]
[[package]]
name = "sdl3-image-src"
version = "3.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe273101c7dab94551183212eee9adef1a7bf274d407f0b7bfe72482960ab25c"
[[package]]
name = "sdl3-image-sys"
version = "0.6.3+SDL-image-3.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bf532fab7cf015de8c55eec6c82db65a964c8874a22c88cead952813db410f90"
dependencies = [
"cmake",
"rpkg-config",
"sdl3-image-src",
"sdl3-sys",
]
[[package]]
name = "sdl3-src"
version = "3.4.8"
+1
View File
@@ -23,6 +23,7 @@ open = "5.3"
sha2 = "0.11"
sdl3-sys = { version = "0.6", features = ["build-from-source-static"] }
sdl3-ttf-sys = { version = "0.6", features = ["build-static-vendored", "no-sdlttf-harfbuzz", "no-sdlttf-plutosvg"] }
sdl3-image-sys = { version = "0.6", features = ["build-static-vendored"] }
tokio = {version = "1.46", features = ["rt-multi-thread", "macros", "fs", "process"] }
spin_sleep = "1.3"
encoding_rs = "0.8"
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.0 MiB

+21 -1
View File
@@ -596,6 +596,7 @@ fn close_input_profile_window(
renderer: *mut sdl3_sys::render::SDL_Renderer,
text_engine: *mut sdl3_ttf_sys::ttf::TTF_TextEngine,
font: *mut sdl3_ttf_sys::ttf::TTF_Font,
texture: *mut sdl3_sys::render::SDL_Texture,
window: *mut sdl3_sys::video::SDL_Window,
) {
for joystick in open_joysticks {
@@ -606,6 +607,7 @@ fn close_input_profile_window(
}
unsafe {
sdl3_sys::render::SDL_DestroyTexture(texture);
sdl3_ttf_sys::ttf::TTF_CloseFont(font);
sdl3_ttf_sys::ttf::TTF_DestroyRendererTextEngine(text_engine);
sdl3_sys::render::SDL_DestroyRenderer(renderer);
@@ -726,6 +728,15 @@ pub fn configure_input_profile(
initial_state: 0,
};
let image_bytes = include_bytes!("../../data/controller.png");
let image = unsafe {
sdl3_image_sys::image::IMG_LoadPNG_IO(sdl3_sys::everything::SDL_IOFromConstMem(
image_bytes.as_ptr() as *const std::ffi::c_void,
image_bytes.len(),
))
};
let image_texture = unsafe { sdl3_sys::render::SDL_CreateTextureFromSurface(renderer, image) };
unsafe { sdl3_sys::surface::SDL_DestroySurface(image) };
let text_engine = unsafe { sdl3_ttf_sys::ttf::TTF_CreateRendererTextEngine(renderer) };
let font = unsafe {
let font_bytes = include_bytes!("../../data/RobotoMono-Regular.ttf");
@@ -753,6 +764,7 @@ pub fn configure_input_profile(
ui::video::draw_text(
format!("Select binding for: {key}").as_str(),
renderer,
image_texture,
text_engine,
font,
);
@@ -765,6 +777,7 @@ pub fn configure_input_profile(
renderer,
text_engine,
font,
image_texture,
window,
);
return;
@@ -869,7 +882,13 @@ pub fn configure_input_profile(
}
}
}
ui::video::draw_text("Binding set, please wait...", renderer, text_engine, font);
ui::video::draw_text(
"Binding set, please wait...",
renderer,
image_texture,
text_engine,
font,
);
std::thread::sleep(std::time::Duration::from_millis(500));
}
@@ -879,6 +898,7 @@ pub fn configure_input_profile(
renderer,
text_engine,
font,
image_texture,
window,
);
+13 -1
View File
@@ -261,6 +261,7 @@ pub fn onscreen_message(message: &str, milliseconds: MESSAGE_LENGTH) {
pub fn draw_text(
text: &str,
renderer: *mut sdl3_sys::render::SDL_Renderer,
image_texture: *mut sdl3_sys::render::SDL_Texture,
text_engine: *mut sdl3_ttf_sys::ttf::TTF_TextEngine,
font: *mut sdl3_ttf_sys::ttf::TTF_Font,
) {
@@ -272,7 +273,18 @@ pub fn draw_text(
let ttf_text = sdl3_ttf_sys::ttf::TTF_CreateText(text_engine, font, c_text.as_ptr(), 0);
sdl3_sys::everything::SDL_RenderClear(renderer);
sdl3_ttf_sys::ttf::TTF_DrawRendererText(ttf_text, 20.0, h as f32 / 2.0);
let rect = sdl3_sys::rect::SDL_FRect {
x: 0.0,
y: 0.0,
w: w as f32,
h: (h - sdl3_ttf_sys::ttf::TTF_GetFontHeight(font)) as f32,
};
sdl3_sys::render::SDL_RenderTexture(renderer, image_texture, std::ptr::null(), &rect);
sdl3_ttf_sys::ttf::TTF_DrawRendererText(
ttf_text,
20.0,
(h - sdl3_ttf_sys::ttf::TTF_GetFontHeight(font)) as f32,
);
sdl3_sys::render::SDL_RenderPresent(renderer);
sdl3_ttf_sys::ttf::TTF_DestroyText(ttf_text);
}