leveltable::get_level_from_exp
This commit is contained in:
parent
e9f4d78952
commit
27179f924b
@ -76,6 +76,20 @@ impl CharacterLevelTable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn get_level_from_exp(&self, ch_class: CharacterClass, exp: u32) -> u32 {
|
||||||
|
if let Some(statlist) = self.table.get(&ch_class) {
|
||||||
|
statlist
|
||||||
|
.iter()
|
||||||
|
.filter(|stat| {
|
||||||
|
stat.exp <= exp
|
||||||
|
})
|
||||||
|
.count() as u32
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
0
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn get_stats_from_exp(&self, ch_class: CharacterClass, exp: u32) -> (u32, CharacterStats) {
|
pub fn get_stats_from_exp(&self, ch_class: CharacterClass, exp: u32) -> (u32, CharacterStats) {
|
||||||
if let Some(statlist) = self.table.get(&ch_class) {
|
if let Some(statlist) = self.table.get(&ch_class) {
|
||||||
statlist
|
statlist
|
||||||
@ -110,4 +124,12 @@ mod test {
|
|||||||
assert!(table.get_stats_from_exp(CharacterClass::FOmarl, 0) == (1, CharacterStats { hp: 20, atp: 13, mst: 53, evp: 35, dfp: 10, ata: 15, lck: 10 }));
|
assert!(table.get_stats_from_exp(CharacterClass::FOmarl, 0) == (1, CharacterStats { hp: 20, atp: 13, mst: 53, evp: 35, dfp: 10, ata: 15, lck: 10 }));
|
||||||
assert!(table.get_stats_from_exp(CharacterClass::FOmarl, 1 << 17) == (36, CharacterStats { hp: 125, atp: 114, mst: 219, evp: 182, dfp: 42, ata: 213, lck: 10 }));
|
assert!(table.get_stats_from_exp(CharacterClass::FOmarl, 1 << 17) == (36, CharacterStats { hp: 125, atp: 114, mst: 219, evp: 182, dfp: 42, ata: 213, lck: 10 }));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_levels() {
|
||||||
|
let table = CharacterLevelTable::new();
|
||||||
|
assert!(table.get_level_from_exp(CharacterClass::FOmarl, 0) == 1);
|
||||||
|
assert!(table.get_level_from_exp(CharacterClass::FOmarl, 3000) == 8);
|
||||||
|
assert!(table.get_level_from_exp(CharacterClass::FOmarl, 3200) == 9);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user