Merge branch 'main' into 'recadrage-camera'

# Conflicts:
#   src/render.rs
This commit is contained in:
CoCo_Sol 2023-06-02 07:00:59 +00:00
commit e1fdcd4405
6 changed files with 94 additions and 18 deletions

View file

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

18
rustfmt.toml Normal file
View file

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

View file

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

View file

@ -8,7 +8,7 @@
#![deny(clippy::all)]
#![deny(warnings)]
use bevy::{prelude::App, DefaultPlugins};
use bevy::prelude::*;
use border_wars::render::RenderPlugin;
fn main() {

View file

@ -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.

View file

@ -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<Tile>>,
fn render_tiles(
tiles: Query<(Entity, &Tile, &Position), Changed<Tile>>,
mut commands: Commands,
asset_server: Res<AssetServer>,
) {
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",