Added custom local server port option

This commit is contained in:
Bence
2025-11-12 14:59:42 +01:00
committed by GitHub
parent 7f175d6df8
commit aea3ccb2bc

View File

@@ -3,7 +3,7 @@ use eframe::egui;
fn main() -> eframe::Result<()> {
let options = eframe::NativeOptions{
viewport: egui::ViewportBuilder::default()
.with_fullscreen(true)
.with_fullscreen(false)
.with_min_inner_size(egui::vec2(800.0, 600.0)) // Minimum width, height
.with_inner_size(egui::vec2(7680.0, 4320.0)), // Initial size
..Default::default()
@@ -81,12 +81,14 @@ struct ChessApp {
selected: Option<(usize, usize)>,
turn: Turn,
pending_settings: PendingSettings,
server_port: String,
}
#[derive(Default)]
struct PendingSettings {
fullscreen: bool,
selected_resolution: usize,
server_port: String,
}
impl Default for ChessApp {
@@ -106,6 +108,7 @@ impl Default for ChessApp {
selected: None,
turn: Turn::White,
pending_settings: PendingSettings::default(),
server_port: "8080".to_string(), // Default port
}
}
}
@@ -164,6 +167,7 @@ impl ChessApp {
fn apply_settings(&mut self, ctx: &egui::Context) {
self.fullscreen = self.pending_settings.fullscreen;
self.selected_resolution = self.pending_settings.selected_resolution;
self.server_port = self.pending_settings.server_port.clone();
if let Some(resolution) = self.resolutions.get(self.selected_resolution) {
ctx.send_viewport_cmd(egui::ViewportCommand::InnerSize(
@@ -177,6 +181,7 @@ impl ChessApp {
fn enter_settings(&mut self) {
self.pending_settings.fullscreen = self.fullscreen;
self.pending_settings.selected_resolution = self.selected_resolution;
self.pending_settings.server_port = self.server_port.clone();
self.state = AppState::Settings;
}
}
@@ -244,6 +249,15 @@ impl eframe::App for ChessApp {
}
});
});
ui.add_space(10.0);
// Server port input field
ui.horizontal(|ui| {
ui.label("Local Server Port:");
ui.add(egui::TextEdit::singleline(&mut self.pending_settings.server_port)
.desired_width(100.0)
.hint_text("8080"));
});
ui.add_space(30.0);
// Apply and Cancel buttons
@@ -413,5 +427,12 @@ mod tests {
let app = ChessApp::default();
assert_eq!(app.pending_settings.fullscreen, app.fullscreen);
assert_eq!(app.pending_settings.selected_resolution, app.selected_resolution);
assert_eq!(app.pending_settings.server_port, app.server_port);
}
}
#[test]
fn test_server_port_default() {
let app = ChessApp::default();
assert_eq!(app.server_port, "8080");
}
}