weapon stats
This commit is contained in:
		
							parent
							
								
									514e18fff3
								
							
						
					
					
						commit
						c13c071946
					
				
							
								
								
									
										2165
									
								
								data/item_stats/weapon_stats.toml
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										2165
									
								
								data/item_stats/weapon_stats.toml
									
									
									
									
									
										Normal file
									
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							| @ -4,6 +4,7 @@ use serde::{Serialize, Deserialize}; | ||||
| use std::fs::File; | ||||
| use std::io::Read; | ||||
| 
 | ||||
| use crate::entity::item::weapon::WeaponType; | ||||
| use crate::entity::item::armor::ArmorType; | ||||
| use crate::entity::item::shield::ShieldType; | ||||
| use crate::entity::item::unit::UnitType; | ||||
| @ -11,6 +12,11 @@ use crate::entity::item::mag::MagType; | ||||
| use crate::entity::item::tool::ToolType; | ||||
| 
 | ||||
| 
 | ||||
| lazy_static::lazy_static! { | ||||
|     pub static ref WEAPON_STATS: HashMap<WeaponType, WeaponStats> = weapon_stats(); | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| fn load_data_file<T: serde::de::DeserializeOwned>(path: &str) -> T { | ||||
|     let mut f = File::open(path).unwrap(); | ||||
|     let mut s = String::new(); | ||||
| @ -20,8 +26,12 @@ fn load_data_file<T: serde::de::DeserializeOwned>(path: &str) -> T { | ||||
| } | ||||
| 
 | ||||
| 
 | ||||
| struct WeaponStats { | ||||
| 
 | ||||
| #[derive(Debug, Copy, Clone, Serialize, Deserialize)] | ||||
| pub struct WeaponStats { | ||||
|     pub grind: usize, | ||||
|     pub atp_min: usize, | ||||
|     pub atp_max: usize, | ||||
|     pub shop_multiplier: f32, | ||||
| } | ||||
| 
 | ||||
| #[derive(Debug, Copy, Clone, Serialize, Deserialize)] | ||||
| @ -86,6 +96,15 @@ pub struct MagFeedTable(HashMap<ToolType, MagFeedStats>); | ||||
| #[derive(Debug)] | ||||
| pub struct MagFeedTables(Vec<MagFeedTable>); | ||||
| 
 | ||||
| pub fn weapon_stats() -> HashMap<WeaponType, WeaponStats> { | ||||
|     let weapon_stats: HashMap<String, WeaponStats> = load_data_file("data/item_stats/weapon_stats.toml"); | ||||
|     weapon_stats.iter() | ||||
|         .inspect(|k| println!("{:?}", k)) | ||||
|         .map(|(name, stats)| { | ||||
|             (name.parse().unwrap(), *stats) | ||||
|         }).collect() | ||||
| } | ||||
| 
 | ||||
| pub fn armor_stats() -> HashMap<ArmorType, ArmorStats> { | ||||
|     let armor_stats: HashMap<String, ArmorStats> = load_data_file("data/item_stats/armor_stats.toml"); | ||||
|     armor_stats.iter() | ||||
| @ -135,6 +154,12 @@ pub fn mag_feed_tables() -> MagFeedTables { | ||||
| mod test { | ||||
|     use super::*; | ||||
|     
 | ||||
|     #[test] | ||||
|     fn test_weapon_stats() { | ||||
|         let wstat = weapon_stats(); | ||||
|         assert!(wstat.get(&WeaponType::MadamsUmbrella).unwrap().atp_max == 280); | ||||
|     } | ||||
| 
 | ||||
|     #[test] | ||||
|     fn test_armor_stats() { | ||||
|         let astat = armor_stats(); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user