diff --git a/Cargo.lock b/Cargo.lock index 7d071f8..a3b016e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1024,6 +1024,7 @@ name = "border-wars" version = "0.1.0" dependencies = [ "bevy", + "slotmap", ] [[package]] diff --git a/Cargo.toml b/Cargo.toml index d273036..f6994e7 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -5,3 +5,4 @@ edition = "2021" [dependencies] bevy = "0.10.1" +slotmap = "1.0.6" diff --git a/src/lib.rs b/src/lib.rs index b307c1c..dfde36f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,4 +1,4 @@ -//! Contient les fonctions utilisées dans le jeu. +//! Contient les structures de données permettant le bon fonctionnement du jeu. #![deny(clippy::missing_docs_in_private_items)] #![deny(clippy::unwrap_in_result)] @@ -8,4 +8,19 @@ #![deny(clippy::all)] #![deny(warnings)] -// TODO +pub mod map; + +/// Position d'un object sur la carte du jeu. +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +pub struct Position { + /// La position en x. + pub x: u8, + + /// La position en y. + pub y: u8, +} + +slotmap::new_key_type! { + /// Peut être utiliser pour identifier n'importe quel objet appartenant a un joueur (le joueur compris). + pub struct PlayerId; +} diff --git a/src/map.rs b/src/map.rs new file mode 100644 index 0000000..7073893 --- /dev/null +++ b/src/map.rs @@ -0,0 +1,72 @@ +//! Contiens tous ce qui est relatif à la carte du jeu. + +#[derive(Debug, Clone, Copy, PartialEq, Eq)] +/// Une case sur la carte du jeu. +pub enum Tile { + /// Un chateau. + /// + /// C'est la base du joueur qui doit defendre. Le but des autres joueurs est de la détruire pour gagner la partie. + Castle, + + /// De l'herbe. + /// + /// Un case "vide" ou on peux construire et y deplacer des troupes + Grass, + + /// Une forêt. + /// + /// Une case permettant de récupérer rapidement du bois. + /// Elle permet aussi de cacher des troupes a l'interieur. + Forest, + + /// Une montagne. + /// + /// Une case permettant de récupérer rapidement de la p + Hill, + + /// Une ferme. + /// + /// Permet de produire du bois. + /// Le nombre de bois généré peut être amélioré à l'aide d'un [Tile::Upgrader]. + Lumberjack, + + /// Une mine. + /// + /// Permet de produire de la pierre. + /// Le nombre de pierre généré peut être amélioré à l'aide d'un [Tile::Upgrader]. + Mine, + + /// Une ferme. + /// + /// Permet de produire de la nourriture. + /// Le nombre de nourriture généré peut être amélioré à l'aide d'un [Tile::Upgrader]. + Farm, + + /// Un avant poste. + /// + /// Permet de déplacer les troupes plus rapidement en les faisant aller d'un avant poste a l'autre comme un portail de téléportation. + Outpost, + + /// Un caserne. + /// + /// Permet de faire apparaitre de nouvelles troupes. + /// Le cout des troupes peut être réduis a l'aide d'un [Tile::Upgrader]. + Barrack, + + /// Une tower. + /// + /// Permet de deffendre le territoire des assauts enemie. + /// Elle ajoute des dégats au troupes dans un certain rayon. + /// Ce rayon peut être amélioré a l'aide d'un [Tile::Upgrader]. + Tower, + + /// Un ameliorateur. + /// + /// Permet d'améliorer les performances des batiments adjacents. + Upgrader, + + /// Un mur. + /// + /// Permet de bloquer le passage des troupes. + Wall, +}