Documenting 03
- added docs for all things - added methods for accessing entity stats - refactored some names
This commit is contained in:
@@ -9,19 +9,30 @@ use std::{
|
||||
rc::Rc,
|
||||
};
|
||||
|
||||
/// Tupla creata per poter implementare qualche metodo sulla struttura Rc<RefCell<Floor>>\
|
||||
/// In questo modo ho incapsulato i borrow e la creazione di questo oggetto per una
|
||||
/// migliore lettura del codice (hopefully).
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub struct FloorPtr(Rc<RefCell<Floor>>);
|
||||
impl FloorPtr {
|
||||
/// Crea un nuovo puntatore al piano indicato.\
|
||||
/// Il piano viene creato a partire dai parametri passati in input, che sono tutte cose
|
||||
/// necessarie ad esso.
|
||||
pub fn new(level: usize, rng: Pcg32, entities: Vec<Entity>, grid: Vec<Vec<Cell>>) -> Self {
|
||||
Self(Rc::new(RefCell::new(Floor::new(
|
||||
level, rng, entities, grid,
|
||||
))))
|
||||
}
|
||||
|
||||
/// Permette di prendere il valore puntato al piano.
|
||||
pub fn get(&mut self) -> RefMut<Floor> {
|
||||
self.0.borrow_mut()
|
||||
}
|
||||
}
|
||||
|
||||
/// Indica un piano del dungeon, in essa si possono trovare le celle in cui si
|
||||
/// cammina e le entità che abitano il piano.\
|
||||
/// Per poter accedere a questa struttura è necessario utilizzare FloorPtr e fare get()
|
||||
#[derive(Clone, Deserialize, Serialize)]
|
||||
pub struct Floor {
|
||||
level: usize,
|
||||
@@ -31,6 +42,7 @@ pub struct Floor {
|
||||
}
|
||||
|
||||
impl Floor {
|
||||
/// Crea un piano secondo i parametri indicati
|
||||
fn new(level: usize, rng: Pcg32, entities: Vec<Entity>, grid: Vec<Vec<Cell>>) -> Self {
|
||||
Self {
|
||||
level,
|
||||
@@ -40,15 +52,25 @@ impl Floor {
|
||||
}
|
||||
}
|
||||
|
||||
/// Restituisce il livello di profondità del piano
|
||||
pub fn get_level(&self) -> usize {
|
||||
self.level
|
||||
}
|
||||
|
||||
/// Restituisce il generatore di numeri casuali utilizzato per qualunque cosa
|
||||
/// inerente al piano (generazione di entità, applicazione di effetti...)
|
||||
pub fn get_rng(&mut self) -> &mut Pcg32 {
|
||||
&mut self.rng
|
||||
}
|
||||
|
||||
/// Restituisce la cella nella posizione indicata.\
|
||||
/// Con essa si può fare cio che si vuole, e quindi anche modificarla.
|
||||
pub fn get_cell(&mut self, pos: Position) -> &mut Cell {
|
||||
&mut self.grid[pos.0][pos.1]
|
||||
}
|
||||
|
||||
/// Restituisce la posizione dell'entrata del piano.\
|
||||
/// Utile come spawn per quando i giocatori arrivano al piano.
|
||||
pub fn get_entrance(&mut self) -> Position {
|
||||
self.grid
|
||||
.iter()
|
||||
@@ -65,9 +87,8 @@ impl Floor {
|
||||
.expect("Entrance of the floor should be inside the grid!")
|
||||
}
|
||||
|
||||
/// Fa l'update di tutte le entità e rimuove eventualmente quelle non più in vita
|
||||
pub fn update_entities(&mut self) {
|
||||
for entity in &mut self.entities {
|
||||
entity.update();
|
||||
}
|
||||
Entity::update_from_vec(&mut self.entities);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user