Refactoring es 03
- game now should work - missing tests docs interaction
This commit is contained in:
@@ -1,6 +1,9 @@
|
||||
|
||||
use super::cell::{self, Effect};
|
||||
use super::{
|
||||
cell::{Confusion, Effect, InstantDamage},
|
||||
entities::Decider,
|
||||
};
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::ops::Range;
|
||||
|
||||
/**
|
||||
* Struttura Config usata per definire il gioco, ha alcune cose utili
|
||||
@@ -10,26 +13,56 @@ use serde::{Deserialize, Serialize};
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub struct Config {
|
||||
pub game_seed: u64,
|
||||
pub floor_size_range: (usize, usize),
|
||||
pub effects: Vec<ConfigEffect>,
|
||||
pub room_size: Range<usize>,
|
||||
pub floor_size: Range<usize>,
|
||||
pub effects_total: usize,
|
||||
pub effects: Vec<ConfigEffect>,
|
||||
pub entities_total: usize,
|
||||
pub entities: Vec<ConfigEntity>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Copy, Deserialize, Serialize)]
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub struct ConfigEffect {
|
||||
pub effect: Effect,
|
||||
pub first_floor: usize,
|
||||
pub last_floor: usize,
|
||||
pub floors: Range<usize>,
|
||||
pub effect: Box<dyn Effect>,
|
||||
pub priority: usize,
|
||||
}
|
||||
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub struct ConfigEntity {
|
||||
pub floors: Range<usize>,
|
||||
pub name: String,
|
||||
pub decider: Box<dyn Decider>,
|
||||
pub health: i32,
|
||||
pub attack: i32,
|
||||
}
|
||||
|
||||
impl Default for Config {
|
||||
fn default() -> Self {
|
||||
Self {
|
||||
game_seed: 0,
|
||||
floor_size_range: (20, 30),
|
||||
effects: vec![ConfigEffect { effect: cell::POISON, first_floor: 0, last_floor: 255, priority: 1 }],
|
||||
room_size: 5..10,
|
||||
floor_size: 30..40,
|
||||
effects: vec![
|
||||
ConfigEffect {
|
||||
effect: Box::new(InstantDamage(20)),
|
||||
floors: 0..255,
|
||||
priority: 1,
|
||||
},
|
||||
ConfigEffect {
|
||||
effect: Box::new(InstantDamage(-20)),
|
||||
floors: 0..255,
|
||||
priority: 1,
|
||||
},
|
||||
ConfigEffect {
|
||||
effect: Box::new(Confusion(10)),
|
||||
floors: 0..255,
|
||||
priority: 1,
|
||||
},
|
||||
],
|
||||
effects_total: 45,
|
||||
entities: vec![],
|
||||
entities_total: 0,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user