lint src/ship/shop/tool.rs
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
parent
64a3a1ff97
commit
d42491095e
@ -302,7 +302,7 @@ impl ItemShops {
|
|||||||
|
|
||||||
ItemShops {
|
ItemShops {
|
||||||
weapon_shop: weapon_shop,
|
weapon_shop: weapon_shop,
|
||||||
tool_shop: ToolShop::new(),
|
tool_shop: ToolShop::default(),
|
||||||
armor_shop: ArmorShop::default(),
|
armor_shop: ArmorShop::default(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -53,7 +53,7 @@ impl ShopItem for ToolShopItem {
|
|||||||
fn price(&self) -> usize {
|
fn price(&self) -> usize {
|
||||||
match self {
|
match self {
|
||||||
ToolShopItem::Tool(tool) => {
|
ToolShopItem::Tool(tool) => {
|
||||||
TOOL_STATS.get(&tool)
|
TOOL_STATS.get(tool)
|
||||||
.map(|tool_stats| {
|
.map(|tool_stats| {
|
||||||
tool_stats.price
|
tool_stats.price
|
||||||
})
|
})
|
||||||
@ -146,7 +146,7 @@ fn load_tool_table() -> ToolTable {
|
|||||||
|
|
||||||
let mut table: HashMap<String, Vec<ToolType>> = toml::from_str(s.as_str()).unwrap();
|
let mut table: HashMap<String, Vec<ToolType>> = toml::from_str(s.as_str()).unwrap();
|
||||||
|
|
||||||
ToolTable(table.remove("tools".into()).unwrap())
|
ToolTable(table.remove("tools").unwrap())
|
||||||
}
|
}
|
||||||
|
|
||||||
fn load_tech_table() -> TechTable {
|
fn load_tech_table() -> TechTable {
|
||||||
@ -156,7 +156,7 @@ fn load_tech_table() -> TechTable {
|
|||||||
f.read_to_string(&mut s).unwrap();
|
f.read_to_string(&mut s).unwrap();
|
||||||
|
|
||||||
let mut table: HashMap<String, Vec<TechTierDeserialize>> = toml::from_str(s.as_str()).unwrap();
|
let mut table: HashMap<String, Vec<TechTierDeserialize>> = toml::from_str(s.as_str()).unwrap();
|
||||||
let techniques = table.remove("techniques".into()).unwrap();
|
let techniques = table.remove("techniques").unwrap();
|
||||||
let techniques = techniques.into_iter()
|
let techniques = techniques.into_iter()
|
||||||
.map(|tech_tier| {
|
.map(|tech_tier| {
|
||||||
TechTier {
|
TechTier {
|
||||||
@ -194,15 +194,18 @@ pub struct ToolShop<R: Rng + SeedableRng> {
|
|||||||
rng: R,
|
rng: R,
|
||||||
}
|
}
|
||||||
|
|
||||||
impl<R: Rng + SeedableRng> ToolShop<R> {
|
|
||||||
pub fn new() -> ToolShop<R> {
|
impl<R: Rng + SeedableRng> Default for ToolShop<R> {
|
||||||
|
fn default() -> ToolShop<R> {
|
||||||
ToolShop {
|
ToolShop {
|
||||||
tools: load_tool_table(),
|
tools: load_tool_table(),
|
||||||
techs: load_tech_table(),
|
techs: load_tech_table(),
|
||||||
rng: R::from_entropy(),
|
rng: R::from_entropy(),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<R: Rng + SeedableRng> ToolShop<R> {
|
||||||
fn generate_tech_types(&mut self, character_level: usize) -> Vec<Technique> {
|
fn generate_tech_types(&mut self, character_level: usize) -> Vec<Technique> {
|
||||||
let tier = self.techs.0.iter()
|
let tier = self.techs.0.iter()
|
||||||
.filter(|t| t.level <= character_level)
|
.filter(|t| t.level <= character_level)
|
||||||
@ -233,7 +236,7 @@ impl<R: Rng + SeedableRng> ToolShop<R> {
|
|||||||
let tech_choice = WeightedIndex::new(tier.iter().map(|(_, e)| e.probability)).unwrap();
|
let tech_choice = WeightedIndex::new(tier.iter().map(|(_, e)| e.probability)).unwrap();
|
||||||
while techs.len() < number_of_techs {
|
while techs.len() < number_of_techs {
|
||||||
let tech_detail = tier.get(tech_choice.sample(&mut self.rng)).unwrap();
|
let tech_detail = tier.get(tech_choice.sample(&mut self.rng)).unwrap();
|
||||||
if techs.iter().find(|t| *t == tech_detail.0).is_none() {
|
if !techs.iter().any(|t| t == tech_detail.0) {
|
||||||
techs.push(*tech_detail.0);
|
techs.push(*tech_detail.0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -269,7 +272,7 @@ impl<R: Rng + SeedableRng> ToolShop<R> {
|
|||||||
|
|
||||||
pub fn generate_tool_list(&mut self, character_level: usize) -> Vec<ToolShopItem> {
|
pub fn generate_tool_list(&mut self, character_level: usize) -> Vec<ToolShopItem> {
|
||||||
let mut tools = Vec::new().into_iter()
|
let mut tools = Vec::new().into_iter()
|
||||||
.chain(self.tools.0.clone().into_iter().map(|t| ToolShopItem::Tool(t)))
|
.chain(self.tools.0.clone().into_iter().map(ToolShopItem::Tool))
|
||||||
.chain(self.generate_techs(character_level).into_iter())
|
.chain(self.generate_techs(character_level).into_iter())
|
||||||
.collect::<Vec<_>>();
|
.collect::<Vec<_>>();
|
||||||
tools.sort();
|
tools.sort();
|
||||||
@ -284,12 +287,12 @@ mod test {
|
|||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_loading_tool_shop() {
|
fn test_loading_tool_shop() {
|
||||||
ToolShop::<rand_chacha::ChaCha20Rng>::new();
|
ToolShop::<rand_chacha::ChaCha20Rng>::default();
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_generating_some_tools() {
|
fn test_generating_some_tools() {
|
||||||
let mut ts = ToolShop::<rand_chacha::ChaCha20Rng>::new();
|
let mut ts = ToolShop::<rand_chacha::ChaCha20Rng>::default();
|
||||||
for i in 0..200 {
|
for i in 0..200 {
|
||||||
ts.generate_tool_list(i);
|
ts.generate_tool_list(i);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user