Adding _mut methods to change base, carac and materiel fields

This commit is contained in:
Pcornat 2026-02-05 18:51:04 +01:00
commit 27868c7f1f
Signed by: Pcornat
GPG key ID: E0326CC678A00BDD

View file

@ -57,6 +57,13 @@ impl CharacterSheet {
unreachable!() unreachable!()
} }
} }
fn address_mut(&mut self) -> &mut Characteristic {
if let CharacteristicType::Address(addr) = &mut self.address {
addr
} else {
unreachable!()
}
}
pub fn stamina(&self) -> &Characteristic { pub fn stamina(&self) -> &Characteristic {
if let CharacteristicType::Stamina(sta) = &self.stamina { if let CharacteristicType::Stamina(sta) = &self.stamina {
sta sta
@ -64,6 +71,13 @@ impl CharacterSheet {
unreachable!() unreachable!()
} }
} }
fn stamina_mut(&mut self) -> &mut Characteristic {
if let CharacteristicType::Stamina(sta) = &mut self.stamina {
sta
} else {
unreachable!()
}
}
pub fn luck(&self) -> &Characteristic { pub fn luck(&self) -> &Characteristic {
if let CharacteristicType::Luck(luck) = &self.luck { if let CharacteristicType::Luck(luck) = &self.luck {
luck luck
@ -71,6 +85,13 @@ impl CharacterSheet {
unreachable!() unreachable!()
} }
} }
fn luck_mut(&mut self) -> &mut Characteristic {
if let CharacteristicType::Luck(luck) = &mut self.luck {
luck
} else {
unreachable!()
}
}
pub fn skill(&self) -> &Characteristic { pub fn skill(&self) -> &Characteristic {
if let CharacteristicType::Skill(sk) = &self.skill { if let CharacteristicType::Skill(sk) = &self.skill {
sk sk
@ -78,6 +99,14 @@ impl CharacterSheet {
unreachable!() unreachable!()
} }
} }
fn skill_mut(&mut self) -> &mut Characteristic {
if let CharacteristicType::Skill(sk) = &mut self.skill {
sk
} else {
unreachable!()
}
}
pub fn health(&self) -> u32 { pub fn health(&self) -> u32 {
self.health self.health
} }
@ -95,6 +124,17 @@ impl CharacterSheet {
} }
} }
impl CharacteristicType {
fn check(&self) {
match self {
CharacteristicType::Address(_) => println!("Rules for address"),
CharacteristicType::Stamina(_) => println!("Rules for stamina"),
CharacteristicType::Luck(_) => println!("Rules for luck"),
CharacteristicType::Skill(_) => println!("Rules for skill"),
}
}
}
impl SheetGui for CharacterSheet { impl SheetGui for CharacterSheet {
fn shortcut( fn shortcut(
&self, &self,
@ -123,27 +163,39 @@ impl SheetGui for CharacterSheet {
fn gui_address(&mut self, ui: &mut Ui) { fn gui_address(&mut self, ui: &mut Ui) {
let workaround = self as &CharacterSheet; let workaround = self as &CharacterSheet;
(self.address.base, self.address.carac, self.address.materiel) = (
self.shortcut(ui, "Adresse", workaround.address()); self.address_mut().base,
self.address_mut().carac,
self.address_mut().materiel,
) = self.shortcut(ui, "Adresse", workaround.address());
ui.label("Ne peut dépasser 5"); ui.label("Ne peut dépasser 5");
} }
fn gui_stamina(&mut self, ui: &mut Ui) { fn gui_stamina(&mut self, ui: &mut Ui) {
let workaround = self as &CharacterSheet; let workaround = self as &CharacterSheet;
(self.stamina.base, self.stamina.carac, self.stamina.materiel) = (
self.shortcut(ui, "Endurance", workaround.stamina()); self.stamina_mut().base,
self.stamina_mut().carac,
self.stamina_mut().materiel,
) = self.shortcut(ui, "Endurance", workaround.stamina());
} }
fn gui_luck(&mut self, ui: &mut Ui) { fn gui_luck(&mut self, ui: &mut Ui) {
let workaround = self as &CharacterSheet; let workaround = self as &CharacterSheet;
(self.luck.base, self.luck.carac, self.luck.materiel) = (
self.shortcut(ui, "Chance", workaround.luck()); self.luck_mut().base,
self.luck_mut().carac,
self.luck_mut().materiel,
) = self.shortcut(ui, "Chance", workaround.luck());
} }
fn gui_skill(&mut self, ui: &mut Ui) { fn gui_skill(&mut self, ui: &mut Ui) {
let workaround = self as &CharacterSheet; let workaround = self as &CharacterSheet;
(self.skill.base, self.skill.carac, self.skill.materiel) = (
self.shortcut(ui, "Habileté", workaround.skill()); self.skill_mut().base,
self.skill_mut().carac,
self.skill_mut().materiel,
) = self.shortcut(ui, "Habileté", workaround.skill());
} }
fn secondary_stats(&mut self, ui: &mut Ui) { fn secondary_stats(&mut self, ui: &mut Ui) {
@ -162,6 +214,8 @@ impl SheetGui for CharacterSheet {
ui.add(DragValue::new(&mut armor)); ui.add(DragValue::new(&mut armor));
}); });
ui.label("Critique"); ui.label("Critique");
self.damage = damage;
self.armor = armor;
} }
} }