From 94ba4b698c39733a28a76cf6f0413c48bc82da98 Mon Sep 17 00:00:00 2001 From: fdenef Date: Fri, 18 Nov 2022 10:53:06 +0100 Subject: [PATCH 1/3] Auto LF EOL --- .gitattributes | 1 + 1 file changed, 1 insertion(+) create mode 100644 .gitattributes diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 0000000..2125666 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto \ No newline at end of file From 505aed81386792831e4962932cccb1daf30d516c Mon Sep 17 00:00:00 2001 From: fdenef Date: Fri, 18 Nov 2022 10:53:36 +0100 Subject: [PATCH 2/3] EOL --- src/sheet.rs | 307 ++++++++++++++++++++++++++------------------------- 1 file changed, 158 insertions(+), 149 deletions(-) diff --git a/src/sheet.rs b/src/sheet.rs index e52abd0..97541aa 100644 --- a/src/sheet.rs +++ b/src/sheet.rs @@ -1,183 +1,192 @@ -use eframe::egui::Ui; use eframe::egui::widgets::DragValue; +use eframe::egui::Ui; use crate::gui::SheetGui; #[derive(Debug)] pub enum Classe { - Warrior, - Cautious, - Farmer, - Resourceful, + Warrior, + Cautious, + Farmer, + Resourceful, } #[derive(Debug)] enum CharacteristicType { - Address, - Stamina, - Luck, - Skill, + Address, + Stamina, + Luck, + Skill, } #[derive(Debug)] pub struct CharacterSheet { - character_class: Classe, - /// Field to write the personality/ - pub character: String, - address: Characteristic, - stamina: Characteristic, - luck: Characteristic, - skill: Characteristic, - health: u32, - armor: u32, - damage: u32, - glory: u32, - money: u32, + character_class: Classe, + /// Field to write the personality/ + pub character: String, + address: Characteristic, + stamina: Characteristic, + luck: Characteristic, + skill: Characteristic, + health: u32, + armor: u32, + damage: u32, + glory: u32, + money: u32, } impl CharacterSheet { - pub fn character_class(&self) -> &Classe { - &self.character_class - } - pub fn character(&self) -> &str { - &self.character - } - pub fn address(&self) -> &Characteristic { - &self.address - } - pub fn stamina(&self) -> &Characteristic { - &self.stamina - } - pub fn luck(&self) -> &Characteristic { - &self.luck - } - pub fn skill(&self) -> &Characteristic { - &self.skill - } - pub fn health(&self) -> u32 { - self.health - } - pub fn armor(&self) -> u32 { - self.armor - } - pub fn damage(&self) -> u32 { - self.damage - } - pub fn glory(&self) -> u32 { - self.glory - } - pub fn money(&self) -> u32 { - self.money - } + pub fn character_class(&self) -> &Classe { + &self.character_class + } + pub fn character(&self) -> &str { + &self.character + } + pub fn address(&self) -> &Characteristic { + &self.address + } + pub fn stamina(&self) -> &Characteristic { + &self.stamina + } + pub fn luck(&self) -> &Characteristic { + &self.luck + } + pub fn skill(&self) -> &Characteristic { + &self.skill + } + pub fn health(&self) -> u32 { + self.health + } + pub fn armor(&self) -> u32 { + self.armor + } + pub fn damage(&self) -> u32 { + self.damage + } + pub fn glory(&self) -> u32 { + self.glory + } + pub fn money(&self) -> u32 { + self.money + } } impl SheetGui for CharacterSheet { - fn shortcut(&self, ui: &mut Ui, category: &str, character_field: &Characteristic) -> (u32, u32, u32) { - let mut base = character_field.base; - let mut carac = character_field.carac; - let mut materiel = character_field.materiel; - ui.heading(category); - ui.columns(2, |columns| { - let mut ui_column = &mut columns[0]; - ui_column.label("Base"); - ui_column.label("Carac."); - ui_column.label("Matériel"); + fn shortcut( + &self, + ui: &mut Ui, + category: &str, + character_field: &Characteristic, + ) -> (u32, u32, u32) { + let mut base = character_field.base; + let mut carac = character_field.carac; + let mut materiel = character_field.materiel; + ui.heading(category); + ui.columns(2, |columns| { + let mut ui_column = &mut columns[0]; + ui_column.label("Base"); + ui_column.label("Carac."); + ui_column.label("Matériel"); - ui_column = &mut columns[1]; - ui_column.add(DragValue::new(&mut base)); - ui_column.add(DragValue::new(&mut carac)); - ui_column.add(DragValue::new(&mut materiel)); - }); - return (base, carac, materiel); - } + ui_column = &mut columns[1]; + ui_column.add(DragValue::new(&mut base)); + ui_column.add(DragValue::new(&mut carac)); + ui_column.add(DragValue::new(&mut materiel)); + }); + return (base, carac, materiel); + } - fn gui_address(&mut self, ui: &mut Ui) { - let workaround: &CharacterSheet = self; - (self.address.base, self.address.carac, self.address.materiel) = self.shortcut(ui, "Habileté", workaround.address()); - ui.label("Ne peut dépasser 5"); - } + fn gui_address(&mut self, ui: &mut Ui) { + let workaround: &CharacterSheet = self; + (self.address.base, self.address.carac, self.address.materiel) = + self.shortcut(ui, "Habileté", workaround.address()); + ui.label("Ne peut dépasser 5"); + } - fn gui_stamina(&mut self, ui: &mut Ui) { - let workaround: &CharacterSheet = self; - (self.stamina.base, self.stamina.carac, self.stamina.materiel) = self.shortcut(ui, "Endurance", workaround.stamina()); - } + fn gui_stamina(&mut self, ui: &mut Ui) { + let workaround: &CharacterSheet = self; + (self.stamina.base, self.stamina.carac, self.stamina.materiel) = + self.shortcut(ui, "Endurance", workaround.stamina()); + } - fn gui_luck(&mut self, ui: &mut Ui) { - let workaround: &CharacterSheet = self; - (self.luck.base, self.luck.carac, self.luck.materiel) = self.shortcut(ui, "Chance", workaround.luck()); - } + fn gui_luck(&mut self, ui: &mut Ui) { + let workaround: &CharacterSheet = self; + (self.luck.base, self.luck.carac, self.luck.materiel) = + self.shortcut(ui, "Chance", workaround.luck()); + } - fn gui_skill(&mut self, ui: &mut Ui) { - let workaround: &CharacterSheet = self; - (self.skill.base, self.skill.carac, self.skill.materiel) = self.shortcut(ui, "Habileté", workaround.skill()); - } + fn gui_skill(&mut self, ui: &mut Ui) { + let workaround: &CharacterSheet = self; + (self.skill.base, self.skill.carac, self.skill.materiel) = + self.shortcut(ui, "Habileté", workaround.skill()); + } - fn secondary_stats(&mut self, ui: &mut Ui) { - let workaround: &CharacterSheet = self; - ui.heading("Stat. secondaires"); - ui.columns(2, |columns| { - columns[0].vertical_centered_justified(|ui| { - ui.label("Dégâts"); - ui.label("Armure"); - ui.label("Critique"); - }); - columns[1].vertical_centered_justified(|ui| { - let mut damage = workaround.damage; - let mut armor = workaround.armor; - ui.add(DragValue::new(&mut damage)); - ui.add(DragValue::new(&mut armor)); - }); - }); - } + fn secondary_stats(&mut self, ui: &mut Ui) { + let workaround: &CharacterSheet = self; + ui.heading("Stat. secondaires"); + ui.columns(2, |columns| { + columns[0].vertical_centered_justified(|ui| { + ui.label("Dégâts"); + ui.label("Armure"); + ui.label("Critique"); + }); + columns[1].vertical_centered_justified(|ui| { + let mut damage = workaround.damage; + let mut armor = workaround.armor; + ui.add(DragValue::new(&mut damage)); + ui.add(DragValue::new(&mut armor)); + }); + }); + } } #[derive(Debug)] pub struct Characteristic { - characteristic_type: CharacteristicType, - pub base: u32, - pub carac: u32, - pub materiel: u32, - pub additional: u32, + characteristic_type: CharacteristicType, + pub base: u32, + pub carac: u32, + pub materiel: u32, + pub additional: u32, } impl Default for CharacterSheet { - fn default() -> Self { - Self { - character_class: Classe::Warrior, - character: "Billy".to_string(), - address: Characteristic { - characteristic_type: CharacteristicType::Address, - base: 0, - carac: 0, - materiel: 0, - additional: 1, - }, - stamina: Characteristic { - characteristic_type: CharacteristicType::Stamina, - base: 2, - carac: 0, - materiel: 0, - additional: 0, - }, - luck: Characteristic { - characteristic_type: CharacteristicType::Luck, - base: 3, - carac: 0, - materiel: 0, - additional: 0, - }, - skill: Characteristic { - characteristic_type: CharacteristicType::Skill, - base: 2, - carac: 0, - materiel: 0, - additional: 0, - }, - health: 0, - armor: 0, - damage: 0, - glory: 0, - money: 0, - } - } + fn default() -> Self { + Self { + character_class: Classe::Warrior, + character: "Billy".to_string(), + address: Characteristic { + characteristic_type: CharacteristicType::Address, + base: 0, + carac: 0, + materiel: 0, + additional: 1, + }, + stamina: Characteristic { + characteristic_type: CharacteristicType::Stamina, + base: 2, + carac: 0, + materiel: 0, + additional: 0, + }, + luck: Characteristic { + characteristic_type: CharacteristicType::Luck, + base: 3, + carac: 0, + materiel: 0, + additional: 0, + }, + skill: Characteristic { + characteristic_type: CharacteristicType::Skill, + base: 2, + carac: 0, + materiel: 0, + additional: 0, + }, + health: 0, + armor: 0, + damage: 0, + glory: 0, + money: 0, + } + } } From fbf3d3815c993edb15331ad4fff8f755d6017d72 Mon Sep 17 00:00:00 2001 From: fdenef Date: Fri, 18 Nov 2022 11:17:56 +0100 Subject: [PATCH 3/3] Reformat with cargo fmt --- .fleet/run.json | 17 +++++++ src/gui.rs | 27 ++++++---- src/lib.rs | 2 +- src/main.rs | 132 ++++++++++++++++++++++++------------------------ 4 files changed, 103 insertions(+), 75 deletions(-) create mode 100644 .fleet/run.json diff --git a/.fleet/run.json b/.fleet/run.json new file mode 100644 index 0000000..5e2b0f4 --- /dev/null +++ b/.fleet/run.json @@ -0,0 +1,17 @@ +{ + "configurations": [ + { + "type": "cargo", + "name": "Run Release", + "workingDir": ".", + "cargoArgs": ["run", "--release"], + }, + { + "type": "cargo", + "name": "Build Release", + "cargoArgs": ["build", "--release"], + }, + + + ] +} \ No newline at end of file diff --git a/src/gui.rs b/src/gui.rs index e443dc0..931fb01 100644 --- a/src/gui.rs +++ b/src/gui.rs @@ -1,13 +1,22 @@ -use eframe::egui; use eframe::egui::Ui; -use crate::sheet::{Characteristic, CharacterSheet}; +use crate::sheet::Characteristic; -pub trait SheetGui where Self: Sized { - fn shortcut(&self, _ui: &mut Ui, category: &str, character_field: &Characteristic) -> (u32, u32, u32) { (0, 0, 0) } - fn gui_address(&mut self, ui: &mut Ui); - fn gui_stamina(&mut self, ui: &mut Ui); - fn gui_luck(&mut self, ui: &mut Ui); - fn gui_skill(&mut self, ui: &mut Ui); - fn secondary_stats(&mut self, ui: &mut Ui); +pub trait SheetGui +where + Self: Sized, +{ + fn shortcut( + &self, + _ui: &mut Ui, + _category: &str, + _character_field: &Characteristic, + ) -> (u32, u32, u32) { + (0, 0, 0) + } + fn gui_address(&mut self, ui: &mut Ui); + fn gui_stamina(&mut self, ui: &mut Ui); + fn gui_luck(&mut self, ui: &mut Ui); + fn gui_skill(&mut self, ui: &mut Ui); + fn secondary_stats(&mut self, ui: &mut Ui); } diff --git a/src/lib.rs b/src/lib.rs index 17ebef3..8d3728f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,2 +1,2 @@ -pub mod sheet; pub mod gui; +pub mod sheet; diff --git a/src/main.rs b/src/main.rs index bf2c973..1b15e71 100644 --- a/src/main.rs +++ b/src/main.rs @@ -3,79 +3,81 @@ use eframe::egui; use billy_sheet::gui::SheetGui; fn main() { - let options = eframe::NativeOptions::default(); - eframe::run_native( - "Billy Sheet editor", - options, - Box::new(|_ctx| { - // ctx.egui_ctx.options().screen_reader = true; - Box::new(Gui::default()) - }), - ); + let options = eframe::NativeOptions::default(); + eframe::run_native( + "Billy Sheet editor", + options, + Box::new(|_ctx| { + // ctx.egui_ctx.options().screen_reader = true; + Box::new(Gui::default()) + }), + ); } #[derive(Debug)] struct Gui { - test: billy_sheet::sheet::CharacterSheet, - edit_mode: bool, + test: billy_sheet::sheet::CharacterSheet, + edit_mode: bool, } impl Default for Gui { - fn default() -> Self { - Self { - test: billy_sheet::sheet::CharacterSheet::default(), - edit_mode: true, - } - } + fn default() -> Self { + Self { + test: billy_sheet::sheet::CharacterSheet::default(), + edit_mode: true, + } + } } impl eframe::App for Gui { - fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { - egui::TopBottomPanel::top("menu").show(ctx, |ui| { - egui::menu::bar(ui, |ui| { - egui::widgets::global_dark_light_mode_buttons(ui); - ui.menu_button("File", |ui| { - if ui.button("Open (Ctrl + O)").clicked() {} - if ui.button("Quit (Ctrl + Q)").clicked() { - _frame.close(); - } - }); - if ui.button(format!("Edit mode {}", self.edit_mode)).clicked() { - self.edit_mode = !self.edit_mode.clone(); - } - }); - }); - egui::CentralPanel::default().show(ctx, |ui| { - ui.heading("My egui Application"); - ui.separator(); - ui.vertical_centered_justified(|ui| { - let mut tmp_str = self.test.character().to_string(); - ui.text_edit_multiline(&mut tmp_str); - self.test.character = tmp_str; - }); - ui.columns(2, |columns| { - // let mut col_1_ui = &mut columns[0]; - // let mut col_2_ui = &mut columns[1]; - columns[0].columns(2, |two_columns| { - // let mut in_col1 = &mut two_columns[0]; - // let mut in_col2 = &mut two_columns[1]; - two_columns[0].vertical_centered_justified(|ui| { - self.test.gui_skill(ui); - self.test.gui_stamina(ui); - }); - two_columns[1].vertical_centered_justified(|ui| { - self.test.gui_address(ui); - self.test.gui_luck(ui); - }); - }); - columns[1].vertical_centered_justified(|ui| { - self.test.secondary_stats(ui); - }); - }); - }); - if ctx.input_mut().consume_key(egui::Modifiers::CTRL, egui::Key::Q) - { - _frame.close(); - } - } + fn update(&mut self, ctx: &egui::Context, _frame: &mut eframe::Frame) { + egui::TopBottomPanel::top("menu").show(ctx, |ui| { + egui::menu::bar(ui, |ui| { + egui::widgets::global_dark_light_mode_buttons(ui); + ui.menu_button("File", |ui| { + if ui.button("Open (Ctrl + O)").clicked() {} + if ui.button("Quit (Ctrl + Q)").clicked() { + _frame.close(); + } + }); + if ui.button(format!("Edit mode {}", self.edit_mode)).clicked() { + self.edit_mode = !self.edit_mode.clone(); + } + }); + }); + egui::CentralPanel::default().show(ctx, |ui| { + ui.heading("My egui Application"); + ui.separator(); + ui.vertical_centered_justified(|ui| { + let mut tmp_str = self.test.character().to_string(); + ui.text_edit_multiline(&mut tmp_str); + self.test.character = tmp_str; + }); + ui.columns(2, |columns| { + // let mut col_1_ui = &mut columns[0]; + // let mut col_2_ui = &mut columns[1]; + columns[0].columns(2, |two_columns| { + // let mut in_col1 = &mut two_columns[0]; + // let mut in_col2 = &mut two_columns[1]; + two_columns[0].vertical_centered_justified(|ui| { + self.test.gui_skill(ui); + self.test.gui_stamina(ui); + }); + two_columns[1].vertical_centered_justified(|ui| { + self.test.gui_address(ui); + self.test.gui_luck(ui); + }); + }); + columns[1].vertical_centered_justified(|ui| { + self.test.secondary_stats(ui); + }); + }); + }); + if ctx + .input_mut() + .consume_key(egui::Modifiers::CTRL, egui::Key::Q) + { + _frame.close(); + } + } }