commit 0ea24dd9872db6887a6e73515ebff5b048a86f93 Author: Arthur Roberts Date: Wed May 31 22:08:51 2023 +0100 Initial Commit diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ea8c4bf --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/target diff --git a/Cargo.toml b/Cargo.toml new file mode 100644 index 0000000..18f3b9f --- /dev/null +++ b/Cargo.toml @@ -0,0 +1,9 @@ +[package] +name = "rdl" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +eframe = "0.21.3" diff --git a/src/main.rs b/src/main.rs new file mode 100644 index 0000000..75612e7 --- /dev/null +++ b/src/main.rs @@ -0,0 +1,54 @@ +use eframe::egui; + +fn main() -> Result<(), eframe::Error> { + println!("Hello, world!"); + let options = eframe::NativeOptions { + ..Default::default() + }; + eframe::run_native( + "Rust Doom Launcher", + options, + Box::new(|_cc| Box::::default()), + ) +} + +struct RustDoomLauncher { + launchers: Vec, + all_iwads: Vec, + all_pwads: Vec, + selected_iwad: Option, + selected_pwads: Vec, +} + +impl Default for RustDoomLauncher { + fn default() -> Self { + Self { + launchers: Vec::new(), + all_iwads: vec!["DOOM2.WAD".to_string(), "DOOM.WAD".to_string(), "FREEDOOM.WAD".to_string()], + all_pwads: Vec::new(), + selected_iwad: None, + selected_pwads: Vec::new(), + } + } +} + +impl eframe::App for RustDoomLauncher { + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + egui::containers::panel::CentralPanel::default().show(ctx, |ui| { + ui.heading("RustDoomLauncher"); + ui.horizontal(|ui| { + ui.label("IWADs"); + if ui.button("Add IWAD").clicked() { + // Open file selector + // Add to the IWADS list + // done? + } + }); + for iwad in &self.all_iwads { + if ui.add(egui::SelectableLabel::new(self.selected_iwad.is_some() && self.selected_iwad.as_ref().unwrap() == iwad, iwad)).clicked() { + self.selected_iwad = Some(iwad.to_string()); + } + } + }); + } +}