Game stats that reset every frame, inspired by immediate mode GUI.
gamedev bevy stats
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

Implement `Display` for `Stat` and `Modifier`.

+26
+11
immediate_stats/src/modifier.rs
··· 1 1 //! Contains a modifier that can be applied to [`Stat`](crate::Stat). 2 2 3 + use std::fmt::{Display, Formatter}; 3 4 use std::ops::{AddAssign, DivAssign, MulAssign, SubAssign}; 4 5 5 6 /// Modifier values that can be [applied](super::Stat::apply) to a [`Stat`](super::Stat). ··· 79 80 self.multiplier /= rhs; 80 81 } 81 82 } 83 + 84 + impl Display for Modifier { 85 + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { 86 + if let Some(precision) = f.precision() { 87 + write!(f, "(+{}) x {:.*}", self.bonus, precision, self.multiplier) 88 + } else { 89 + write!(f, "(+{}) x {}", self.bonus, self.multiplier) 90 + } 91 + } 92 + }
+15
immediate_stats/src/stat.rs
··· 2 2 3 3 use crate::StatContainer; 4 4 use crate::modifier::Modifier; 5 + use std::fmt::{Display, Formatter}; 5 6 use std::ops::{AddAssign, DivAssign, MulAssign, SubAssign}; 6 7 7 8 /// A stat that [resets][reset] to a base value every iteration. ··· 133 134 self.multiplier /= rhs; 134 135 } 135 136 } 137 + 138 + impl Display for Stat { 139 + fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result { 140 + if let Some(precision) = f.precision() { 141 + write!( 142 + f, 143 + "({} + {}) x {:.*}", 144 + self.base, self.bonus, precision, self.multiplier 145 + ) 146 + } else { 147 + write!(f, "({} + {}) x {}", self.base, self.bonus, self.multiplier) 148 + } 149 + } 150 + }