Adding _mut methods to change base, carac and materiel fields
This commit is contained in:
parent
d85583895c
commit
27868c7f1f
1 changed files with 62 additions and 8 deletions
70
src/sheet.rs
70
src/sheet.rs
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue