diff --git a/.fleet/run.json b/.fleet/run.json index 5e2b0f4..fcb88c8 100644 --- a/.fleet/run.json +++ b/.fleet/run.json @@ -14,4 +14,4 @@ ] -} \ No newline at end of file +} diff --git a/Cargo.lock b/Cargo.lock index e079256..1be0107 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -196,7 +196,8 @@ name = "billy_sheet" version = "0.1.0" dependencies = [ "eframe", - "json", + "serde", + "serde_json", ] [[package]] @@ -1033,6 +1034,12 @@ dependencies = [ "web-sys", ] +[[package]] +name = "itoa" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" + [[package]] name = "jni" version = "0.19.0" @@ -1062,12 +1069,6 @@ dependencies = [ "wasm-bindgen", ] -[[package]] -name = "json" -version = "0.12.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "078e285eafdfb6c4b434e0d31e8cfcb5115b651496faca5749b88fafd4f23bfd" - [[package]] name = "khronos_api" version = "3.1.0" @@ -1623,6 +1624,12 @@ dependencies = [ "ordered-multimap", ] +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + [[package]] name = "safe_arch" version = "0.5.2" @@ -1685,6 +1692,17 @@ dependencies = [ "syn", ] +[[package]] +name = "serde_json" +version = "1.0.89" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +dependencies = [ + "itoa", + "ryu", + "serde", +] + [[package]] name = "serde_repr" version = "0.1.9" diff --git a/Cargo.toml b/Cargo.toml index d68fdd5..903f2f9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -7,4 +7,5 @@ edition = "2021" [dependencies] eframe = { version = "*", features = ["dark-light"] } -json = "*" +serde = { version = "*", features = ["derive"] } +serde_json = "*" diff --git a/src/main.rs b/src/main.rs index 1b15e71..ff12042 100644 --- a/src/main.rs +++ b/src/main.rs @@ -9,7 +9,7 @@ fn main() { options, Box::new(|_ctx| { // ctx.egui_ctx.options().screen_reader = true; - Box::new(Gui::default()) + Box::::default() }), ); } @@ -41,13 +41,14 @@ impl eframe::App for Gui { } }); if ui.button(format!("Edit mode {}", self.edit_mode)).clicked() { - self.edit_mode = !self.edit_mode.clone(); + self.edit_mode = !self.edit_mode; } }); }); egui::CentralPanel::default().show(ctx, |ui| { ui.heading("My egui Application"); ui.separator(); + ui.label("Caractère"); ui.vertical_centered_justified(|ui| { let mut tmp_str = self.test.character().to_string(); ui.text_edit_multiline(&mut tmp_str); diff --git a/src/sheet.rs b/src/sheet.rs index 97541aa..3b7aa69 100644 --- a/src/sheet.rs +++ b/src/sheet.rs @@ -1,9 +1,13 @@ use eframe::egui::widgets::DragValue; use eframe::egui::Ui; +<<<<<<< HEAD +======= +use serde::{Deserialize, Serialize}; +>>>>>>> 281e4eb9f0a44494530a7bc3422fcd557a26088f use crate::gui::SheetGui; -#[derive(Debug)] +#[derive(Debug, Serialize, Deserialize)] pub enum Classe { Warrior, Cautious, @@ -11,7 +15,7 @@ pub enum Classe { Resourceful, } -#[derive(Debug)] +#[derive(Debug, Serialize, Deserialize)] enum CharacteristicType { Address, Stamina, @@ -19,7 +23,7 @@ enum CharacteristicType { Skill, } -#[derive(Debug)] +#[derive(Debug, Serialize, Deserialize)] pub struct CharacterSheet { character_class: Classe, /// Field to write the personality/ @@ -82,6 +86,7 @@ impl SheetGui for CharacterSheet { let mut carac = character_field.carac; let mut materiel = character_field.materiel; ui.heading(category); +<<<<<<< HEAD ui.columns(2, |columns| { let mut ui_column = &mut columns[0]; ui_column.label("Base"); @@ -137,10 +142,68 @@ impl SheetGui for CharacterSheet { ui.add(DragValue::new(&mut armor)); }); }); +======= + ui.horizontal(|ui| { + ui.label("Base"); + ui.add(DragValue::new(&mut base)); + }); + ui.horizontal(|ui| { + ui.label("Carac."); + ui.add(DragValue::new(&mut carac)); + }); + ui.horizontal(|ui| { + ui.label("Matériel"); + ui.add(DragValue::new(&mut materiel)); + }); + (base, carac, materiel) + } + + fn gui_address(&mut self, ui: &mut Ui) { + let workaround = self as &CharacterSheet; + (self.address.base, self.address.carac, self.address.materiel) = + self.shortcut(ui, "Adresse", workaround.address()); + ui.label("Ne peut dépasser 5"); + } + + fn gui_stamina(&mut self, ui: &mut Ui) { + let workaround = self as &CharacterSheet; + (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 = self as &CharacterSheet; + (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 = self as &CharacterSheet; + (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 = self as &CharacterSheet; + let mut damage = workaround.damage; + let mut armor = workaround.armor; + + ui.heading("Stat. secondaires"); + ui.horizontal(|ui| { + ui.label("Dégâts"); + ui.add(DragValue::new(&mut damage)); + }); + + ui.horizontal(|ui| { + ui.label("Armure"); + ui.add(DragValue::new(&mut armor)); + }); + ui.label("Critique"); +>>>>>>> 281e4eb9f0a44494530a7bc3422fcd557a26088f } } -#[derive(Debug)] +#[derive(Debug, Serialize, Deserialize)] pub struct Characteristic { characteristic_type: CharacteristicType, pub base: u32,