diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 21abc83..90017b0 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,13 +1,66 @@ stages: - checks + - build cargo-test: + image: rust:latest + stage: checks + before_script: + - apt-get update && apt-get install libasound2-dev libudev-dev -y + script: + - cargo test --workspace + rules: + - exists: + - Cargo.toml + +cargo-clippy: image: rust:latest stage: checks before_script: - apt-get update && apt-get install libasound2-dev libudev-dev -y - rustup component add clippy script: - - rustc --version && cargo --version - cargo clippy --workspace - - cargo test --workspace + rules: + - exists: + - Cargo.toml + +cargo-fmt: + image: rust:latest + stage: checks + before_script: + - rustup install nightly --profile minimal + - rustup component add rustfmt --toolchain nightly + script: + - cargo +nightly fmt --check + rules: + - exists: + - Cargo.toml + +development-image: + image: docker:latest + stage: build + services: + - docker:dind + script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG + rules: + - if: $CI_COMMIT_BRANCH != $CI_DEFAULT_BRANCH + exists: + - Dockerfile + +production-image: + image: docker:latest + stage: build + services: + - docker:dind + script: + - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY + - docker build -t $CI_REGISTRY_IMAGE:latest + - docker push $CI_REGISTRY_IMAGE:latest + rules: + - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH + exists: + - Dockerfile diff --git a/rustfmt.toml b/rustfmt.toml new file mode 100644 index 0000000..7bbd24c --- /dev/null +++ b/rustfmt.toml @@ -0,0 +1,18 @@ +use_try_shorthand = true +use_field_init_shorthand = true + +version = "Two" +error_on_line_overflow = true +error_on_unformatted = true + +format_code_in_doc_comments = true +format_macro_bodies = true +format_macro_matchers = true +format_strings = true + +imports_granularity = "Module" +group_imports = "StdExternalCrate" + +normalize_doc_attributes = true +normalize_comments = true +wrap_comments = true diff --git a/src/lib.rs b/src/lib.rs index 69df45e..7f3617d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -25,7 +25,7 @@ pub struct Position { impl Position { /// Peret de recuper la position, sous form d'un transform, d'un objet sur la carte du jeu. - pub fn to_map_position(&self) -> Transform { + pub fn to_world(&self) -> Transform { let offset_x = self.y % 2; let new_x = (offset_x as f32).mul_add(0.5, self.x as f32); Transform::from_xyz(new_x, self.y as f32 * 0.42, self.y as f32 * -1.) @@ -33,7 +33,8 @@ impl Position { } slotmap::new_key_type! { - /// Peut être utiliser pour identifier n'importe quel objet appartenant a un joueur (le joueur compris). + /// Peut être utiliser pour identifier n'importe quel objet appartenant a + /// un joueur (le joueur compris). #[derive(Component)] pub struct PlayerId; } diff --git a/src/main.rs b/src/main.rs index adaccc5..2daf2bf 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,7 +8,7 @@ #![deny(clippy::all)] #![deny(warnings)] -use bevy::{prelude::App, DefaultPlugins}; +use bevy::prelude::*; use border_wars::render::RenderPlugin; fn main() { diff --git a/src/map.rs b/src/map.rs index 4493d5a..a67e97c 100644 --- a/src/map.rs +++ b/src/map.rs @@ -1,15 +1,17 @@ //! Contiens tous ce qui est relatif à la carte du jeu. -use crate::Position; use bevy::prelude::{Commands, Component}; use rand::Rng; +use crate::Position; + #[derive(Debug, Clone, Copy, PartialEq, Eq, Component)] /// 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. + /// 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. @@ -31,24 +33,28 @@ pub enum Tile { /// Une ferme. /// /// Permet de produire du bois. - /// Le nombre de bois généré peut être amélioré à l'aide d'un [Tile::Upgrader]. + /// 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]. + /// 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]. + /// 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. + /// 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. diff --git a/src/render.rs b/src/render.rs index 404b521..f875c5b 100644 --- a/src/render.rs +++ b/src/render.rs @@ -23,24 +23,22 @@ fn setup_camera(mut commands: Commands) { } /// Permet de rendre le tile et de les actualiser. -fn render_tile( - all_tiles: Query<(Entity, &Tile, &Position), Changed>, +fn render_tiles( + tiles: Query<(Entity, &Tile, &Position), Changed>, mut commands: Commands, asset_server: Res, ) { - for (tile_entity, tile_type, tile_pos) in all_tiles.iter() { + for (tile_entity, tile_type, tile_pos) in tiles.iter() { commands.entity(tile_entity).insert(SpriteBundle { texture: asset_server.load(get_tile_path(tile_type)), - transform: tile_pos - .to_map_position() - .with_scale(Vec3::splat(1.0 / 185.0)), + transform: tile_pos.to_world().with_scale(Vec3::splat(1.0 / 185.0)), ..default() }); } } /// Recuper le chemin d'acces d'une case. -pub const fn get_tile_path(tile: &Tile) -> &str { +const fn get_tile_path(tile: &Tile) -> &str { match *tile { Tile::Castle => "tiles/castle.png", Tile::Wall => "tiles/wall.png",