tilemap part 1

This commit is contained in:
StephenAdamson
2024-12-13 18:29:27 +00:00
parent 01e1349ea1
commit 70cce2c5e9
3 changed files with 102 additions and 34 deletions
+75 -6
View File
@@ -1,9 +1,78 @@
use bevy::prelude::*;
use crate::game::PIXEL_RATIO;
pub enum Tiles{
air,
grass,
dirt,
rock,
#[derive(Component)]
#[require(Sprite)]
pub struct Tile {
pub position: Vec3,
}
// BUNDLES!!
#[derive(Component)]
pub struct TileState {
pub timer: Timer,
}
#[derive(Bundle)]
pub struct TilePrefab {
transform: Transform,
sprite: Sprite,
tile: Tile,
tile_state: TileState,
}
impl TilePrefab {
pub fn dirt(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
TilePrefab {
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
sprite: Sprite {
image: asset_server.load("dirt.png"),
..Default::default()
},
tile: Tile { position },
tile_state: TileState {
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
},
}
}
pub fn grass(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
TilePrefab {
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
sprite: Sprite {
image: asset_server.load("grass.png"),
..Default::default()
},
tile: Tile { position },
tile_state: TileState {
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
},
}
}
pub fn rock(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
TilePrefab {
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
sprite: Sprite {
image: asset_server.load("rock.png"),
..Default::default()
},
tile: Tile { position },
tile_state: TileState {
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
},
}
}
pub fn air(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
TilePrefab {
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
sprite: Sprite {
image: asset_server.load("sky.png"),
..Default::default()
},
tile: Tile { position },
tile_state: TileState {
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
},
}
}
}