This commit is contained in:
CoCo_Sol 2023-05-30 10:15:17 +02:00
parent cc54f884b3
commit 41f5f12b9a
2 changed files with 10 additions and 11 deletions

View file

@ -8,7 +8,7 @@
#![deny(clippy::all)] #![deny(clippy::all)]
#![deny(warnings)] #![deny(warnings)]
use bevy::prelude::{Component, Transform}; use bevy::prelude::*;
pub mod map; pub mod map;
pub mod render; pub mod render;
@ -25,7 +25,7 @@ pub struct Position {
impl Position { impl Position {
/// Peret de recuper la position, sous form d'un transform, d'un objet sur la carte du jeu. /// 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 offset_x = self.y % 2;
let new_x = (offset_x as f32).mul_add(0.5, self.x as f32); 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.) Transform::from_xyz(new_x, self.y as f32 * 0.42, self.y as f32 * -1.)

View file

@ -8,7 +8,8 @@ pub struct RenderPlugin;
impl Plugin for RenderPlugin { impl Plugin for RenderPlugin {
fn build(&self, app: &mut App) { 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. /// Permet de rendre le tile et de les actualiser.
fn render_tile( fn render_tiles(
all_tiles: Query<(Entity, &Tile, &Position), Changed<Tile>>, tiles: Query<(Entity, &Tile, &Position), Changed<Tile>>,
mut commands: Commands, mut commands: Commands,
asset_server: Res<AssetServer>, 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 { commands.entity(tile_entity).insert(SpriteBundle {
texture: asset_server.load(get_path_tile(tile_type)), texture: asset_server.load(get_tile_path(tile_type)),
transform: tile_pos transform: tile_pos.to_world().with_scale(Vec3::splat(1.0 / 185.0)),
.to_map_position()
.with_scale(Vec3::splat(1.0 / 185.0)),
..default() ..default()
}); });
} }
} }
/// Recuper le chemin d'acces d'une case. /// 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 { match *tile {
Tile::Castle => "tiles/castle.png", Tile::Castle => "tiles/castle.png",
Tile::Wall => "tiles/wall.png", Tile::Wall => "tiles/wall.png",