Documenting 03

- added docs for all things
- added methods for accessing entity stats
- refactored some names
This commit is contained in:
2024-05-11 14:16:29 +02:00
parent 9baf5d494d
commit a75aaa13c7
7 changed files with 330 additions and 91 deletions

View File

@@ -5,11 +5,10 @@ use super::{
use serde::{Deserialize, Serialize};
use std::ops::Range;
/**
* Struttura Config usata per definire il gioco, ha alcune cose utili
* TODO sarebbe bello poterle prendere da file.
*/
/// Struttura di configurazione per la creazione di un dungeon.\
/// Ogni elemento indica un parametro per la generazione di un piano o di una entitità.\
/// Esiste una implementazione di default di questa struttura che genera un dungeon
/// molto semplice e standard.
#[derive(Clone, Deserialize, Serialize)]
pub struct Config {
pub game_seed: u64,
@@ -19,8 +18,15 @@ pub struct Config {
pub effects: Vec<ConfigEffect>,
pub entities_total: usize,
pub entities: Vec<ConfigEntity>,
pub player_stats: ConfigPlayer,
}
/// Un effetto che si può trovare per terra nel dungeon.\
/// La priorità indica quanto verrà spawnato l'effetto in media.\
/// \
/// Es. effetto A priorità 1 ed effetto B con priorità 2\
/// Se in Config mettiamo 15 effetti per piano, allora avremo
/// in media 10 A e 5 B per ogni piano.
#[derive(Clone, Deserialize, Serialize)]
pub struct ConfigEffect {
pub floors: Range<usize>,
@@ -28,6 +34,20 @@ pub struct ConfigEffect {
pub priority: usize,
}
/// Valori di base per le statistiche di un giocatore.\
/// Esse verranno utilizzate quando un giocatore verrà creato.
#[derive(Clone, Deserialize, Serialize)]
pub struct ConfigPlayer {
pub health: i32,
pub attack: i32,
}
/// Una entità che si può trovare in un piano nel dungeon.\
/// La priorità indica quanto verrà spawnata l'entità in media.\
/// \
/// Es. entità A priorità 1 ed entità B con priorità 2\
/// Se in Config mettiamo 15 entità per piano, allora avremo
/// in media 10 A e 5 B per ogni piano.
#[derive(Clone, Deserialize, Serialize)]
pub struct ConfigEntity {
pub floors: Range<usize>,
@@ -35,6 +55,7 @@ pub struct ConfigEntity {
pub decider: Box<dyn Decider>,
pub health: i32,
pub attack: i32,
pub priority: usize,
}
impl Default for Config {
@@ -63,6 +84,10 @@ impl Default for Config {
effects_total: 45,
entities: vec![],
entities_total: 0,
player_stats: ConfigPlayer {
health: 1000,
attack: 100,
}
}
}
}