Refactoring es 03

- game now should work
- missing tests docs interaction
This commit is contained in:
2024-05-11 09:46:24 +02:00
parent 109c19a085
commit 9baf5d494d
8 changed files with 450 additions and 215 deletions

View File

@@ -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,
}
}
}