tilemap part 1
This commit is contained in:
+75
-6
@@ -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),
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user