From cb30de307e13054cf74a76301f251f24384b20a0 Mon Sep 17 00:00:00 2001 From: CoCo_Sol Date: Sat, 27 May 2023 16:52:54 +0200 Subject: [PATCH 1/6] rendu de la map + fonction pour calculer position --- src/lib.rs | 34 +++++++++++++++++++++++++++++++++- src/render.rs | 25 +++++++++++++++++++++++-- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index 1b0ebdf..e39c908 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,7 +8,8 @@ #![deny(clippy::all)] #![deny(warnings)] -use bevy::prelude::Component; +use crate::map::Tile; +use bevy::prelude::{Component, Transform}; pub mod map; pub mod render; @@ -23,8 +24,39 @@ pub struct Position { pub y: u8, } +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 { + 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.) + } +} + slotmap::new_key_type! { /// Peut ĂȘtre utiliser pour identifier n'importe quel objet appartenant a un joueur (le joueur compris). #[derive(Component)] pub struct PlayerId; } + +impl Tile { + /// Recuper le chemin d'acces d'une case. + pub const fn get_path(&self) -> &str { + match *self { + Self::Castle => "tiles/castle.png", + Self::Wall => "tiles/wall.png", + Self::Farm => "tiles/farm.png", + Self::Grass => "tiles/grass.png", + Self::Forest => "tiles/forest.png", + Self::Hill => "tiles/hill.png", + Self::Lumberjack => "tiles/lumberjack.png", + Self::Mine => "tiles/mine.png", + Self::Outpost => "tiles/outpost.png", + Self::Barrack => "tiles/barrack.png", + Self::Upgrader => "tiles/upgrader.png", + Self::Tower => "tiles/tower.png", + } + } +} diff --git a/src/render.rs b/src/render.rs index 08c1b71..62d2316 100644 --- a/src/render.rs +++ b/src/render.rs @@ -1,5 +1,6 @@ //! Permet de Rendre le jeu sur l'ecran. +use crate::{map::Tile, Position}; use bevy::prelude::*; /// Plugin permettant de rendre sur l'ecran le jeu. @@ -7,11 +8,31 @@ pub struct RenderPlugin; impl Plugin for RenderPlugin { fn build(&self, app: &mut App) { - app.add_startup_system(setup_camera); + app.add_startup_system(setup_camera).add_system(render_tile); } } /// Initialisation de la camera. fn setup_camera(mut commands: Commands) { - commands.spawn(Camera2dBundle::default()); + commands.spawn(Camera2dBundle { + transform: Transform::from_xyz(5., 0.5, 100.), + ..default() + }); +} + +/// Permet de rendre le tile et de les actualiser. +fn render_tile( + all_tiles: Query<(Entity, &Tile, &Position), Changed>, + mut commands: Commands, + asset_server: Res, +) { + for (tile_entity, tile_type, tile_pos) in all_tiles.iter() { + commands.entity(tile_entity).insert(SpriteBundle { + texture: asset_server.load(tile_type.get_path()), + transform: tile_pos + .to_map_position() + .with_scale(Vec3::splat(1.0 / 185.0)), + ..default() + }); + } } From 9ae1aec1f18f60768508e2a01d08c3b2b20a3382 Mon Sep 17 00:00:00 2001 From: CoCo_Sol Date: Sat, 27 May 2023 16:53:27 +0200 Subject: [PATCH 2/6] correction fonction de creation de map --- src/map.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/map.rs b/src/map.rs index e9ec6b5..4493d5a 100644 --- a/src/map.rs +++ b/src/map.rs @@ -79,7 +79,7 @@ pub enum Tile { pub fn init_map(width: u8, height: u8, mut commands: Commands) { for x in 0..width { for y in 0..height { - if !(x % 2 == 0 && y == width - 1) { + if !(y % 2 == 1 && x == width - 1) { commands.spawn((get_random_tile(), Position { x, y })); } } From b70a998fd81dae5a72200a5fa89f939ed93291d1 Mon Sep 17 00:00:00 2001 From: CoCo_Sol Date: Sat, 27 May 2023 18:13:49 +0200 Subject: [PATCH 3/6] changement de place de la fonction --- src/lib.rs | 21 --------------------- src/render.rs | 20 ++++++++++++++++++++ 2 files changed, 20 insertions(+), 21 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index e39c908..d373790 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,7 +8,6 @@ #![deny(clippy::all)] #![deny(warnings)] -use crate::map::Tile; use bevy::prelude::{Component, Transform}; pub mod map; @@ -40,23 +39,3 @@ slotmap::new_key_type! { #[derive(Component)] pub struct PlayerId; } - -impl Tile { - /// Recuper le chemin d'acces d'une case. - pub const fn get_path(&self) -> &str { - match *self { - Self::Castle => "tiles/castle.png", - Self::Wall => "tiles/wall.png", - Self::Farm => "tiles/farm.png", - Self::Grass => "tiles/grass.png", - Self::Forest => "tiles/forest.png", - Self::Hill => "tiles/hill.png", - Self::Lumberjack => "tiles/lumberjack.png", - Self::Mine => "tiles/mine.png", - Self::Outpost => "tiles/outpost.png", - Self::Barrack => "tiles/barrack.png", - Self::Upgrader => "tiles/upgrader.png", - Self::Tower => "tiles/tower.png", - } - } -} diff --git a/src/render.rs b/src/render.rs index 62d2316..b77d77a 100644 --- a/src/render.rs +++ b/src/render.rs @@ -36,3 +36,23 @@ fn render_tile( }); } } + +impl Tile { + /// Recuper le chemin d'acces d'une case. + pub const fn get_path(&self) -> &str { + match *self { + Self::Castle => "tiles/castle.png", + Self::Wall => "tiles/wall.png", + Self::Farm => "tiles/farm.png", + Self::Grass => "tiles/grass.png", + Self::Forest => "tiles/forest.png", + Self::Hill => "tiles/hill.png", + Self::Lumberjack => "tiles/lumberjack.png", + Self::Mine => "tiles/mine.png", + Self::Outpost => "tiles/outpost.png", + Self::Barrack => "tiles/barrack.png", + Self::Upgrader => "tiles/upgrader.png", + Self::Tower => "tiles/tower.png", + } + } +} From c1508faabe9697cdc84e14c9c86a736c8475eeb8 Mon Sep 17 00:00:00 2001 From: CoCo_Sol Date: Sat, 27 May 2023 20:58:17 +0200 Subject: [PATCH 4/6] changement fonction --- src/render.rs | 34 ++++++++++++++++------------------ 1 file changed, 16 insertions(+), 18 deletions(-) diff --git a/src/render.rs b/src/render.rs index b77d77a..d748d2a 100644 --- a/src/render.rs +++ b/src/render.rs @@ -28,7 +28,7 @@ fn render_tile( ) { for (tile_entity, tile_type, tile_pos) in all_tiles.iter() { commands.entity(tile_entity).insert(SpriteBundle { - texture: asset_server.load(tile_type.get_path()), + texture: asset_server.load(get_path_tile(tile_type)), transform: tile_pos .to_map_position() .with_scale(Vec3::splat(1.0 / 185.0)), @@ -37,22 +37,20 @@ fn render_tile( } } -impl Tile { - /// Recuper le chemin d'acces d'une case. - pub const fn get_path(&self) -> &str { - match *self { - Self::Castle => "tiles/castle.png", - Self::Wall => "tiles/wall.png", - Self::Farm => "tiles/farm.png", - Self::Grass => "tiles/grass.png", - Self::Forest => "tiles/forest.png", - Self::Hill => "tiles/hill.png", - Self::Lumberjack => "tiles/lumberjack.png", - Self::Mine => "tiles/mine.png", - Self::Outpost => "tiles/outpost.png", - Self::Barrack => "tiles/barrack.png", - Self::Upgrader => "tiles/upgrader.png", - Self::Tower => "tiles/tower.png", - } +/// Recuper le chemin d'acces d'une case. +pub const fn get_path_tile(tile: &Tile) -> &str { + match *tile { + Tile::Castle => "tiles/castle.png", + Tile::Wall => "tiles/wall.png", + Tile::Farm => "tiles/farm.png", + Tile::Grass => "tiles/grass.png", + Tile::Forest => "tiles/forest.png", + Tile::Hill => "tiles/hill.png", + Tile::Lumberjack => "tiles/lumberjack.png", + Tile::Mine => "tiles/mine.png", + Tile::Outpost => "tiles/outpost.png", + Tile::Barrack => "tiles/barrack.png", + Tile::Upgrader => "tiles/upgrader.png", + Tile::Tower => "tiles/tower.png", } } From cc54f884b359d78378b4b762f9f42cd33562966f Mon Sep 17 00:00:00 2001 From: CoCo_Sol Date: Mon, 29 May 2023 20:50:39 +0200 Subject: [PATCH 5/6] fix fmt --- src/lib.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index d373790..d97faa3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -27,9 +27,7 @@ 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 { 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.) } } From 41f5f12b9a540ff039a877de687c80bd4725bc2e Mon Sep 17 00:00:00 2001 From: _Corentin_ Date: Tue, 30 May 2023 10:15:17 +0200 Subject: [PATCH 6/6] fix fmt --- src/lib.rs | 4 ++-- src/render.rs | 17 ++++++++--------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/src/lib.rs b/src/lib.rs index d97faa3..eded9df 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -8,7 +8,7 @@ #![deny(clippy::all)] #![deny(warnings)] -use bevy::prelude::{Component, Transform}; +use bevy::prelude::*; pub mod map; pub mod render; @@ -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.) diff --git a/src/render.rs b/src/render.rs index d748d2a..6402afd 100644 --- a/src/render.rs +++ b/src/render.rs @@ -8,7 +8,8 @@ pub struct RenderPlugin; impl Plugin for RenderPlugin { fn build(&self, app: &mut App) { - app.add_startup_system(setup_camera).add_system(render_tile); + app.add_startup_system(setup_camera) + .add_system(render_tiles); } } @@ -21,24 +22,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_path_tile(tile_type)), - transform: tile_pos - .to_map_position() - .with_scale(Vec3::splat(1.0 / 185.0)), + texture: asset_server.load(get_tile_path(tile_type)), + 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_path_tile(tile: &Tile) -> &str { +const fn get_tile_path(tile: &Tile) -> &str { match *tile { Tile::Castle => "tiles/castle.png", Tile::Wall => "tiles/wall.png",