134 lines
4.1 KiB
Rust
134 lines
4.1 KiB
Rust
use crate::constants::*;
|
|
use crate::tile::{FixtureTile, FloorTile, TileState};
|
|
use bevy::prelude::*;
|
|
|
|
#[derive(Bundle)]
|
|
pub struct FloorTilePrefab {
|
|
transform: Transform,
|
|
sprite: Sprite,
|
|
tile: FloorTile,
|
|
tile_state: TileState,
|
|
}
|
|
|
|
impl FloorTilePrefab {
|
|
pub fn dirt(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
|
FloorTilePrefab {
|
|
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
|
|
sprite: Sprite {
|
|
image: asset_server.load("dirt_floor.png"),
|
|
..Default::default()
|
|
},
|
|
tile: FloorTile {
|
|
id: 1,
|
|
..Default::default()
|
|
},
|
|
tile_state: TileState {
|
|
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
|
|
},
|
|
}
|
|
}
|
|
|
|
pub fn rock(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
|
FloorTilePrefab {
|
|
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
|
|
sprite: Sprite {
|
|
image: asset_server.load("rock_floor.png"),
|
|
..Default::default()
|
|
},
|
|
tile: FloorTile {
|
|
id: 3,
|
|
..Default::default()
|
|
},
|
|
tile_state: TileState {
|
|
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
|
|
},
|
|
}
|
|
}
|
|
|
|
pub fn air(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
|
FloorTilePrefab {
|
|
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
|
|
sprite: Sprite {
|
|
image: asset_server.load("sky.png"),
|
|
..Default::default()
|
|
},
|
|
tile: FloorTile {
|
|
id: 0,
|
|
opaque: false,
|
|
..Default::default()
|
|
},
|
|
tile_state: TileState {
|
|
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
|
|
},
|
|
}
|
|
}
|
|
|
|
pub fn bedrock(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
|
FloorTilePrefab {
|
|
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
|
|
sprite: Sprite {
|
|
image: asset_server.load("bedrock_floor.png"),
|
|
..Default::default()
|
|
},
|
|
tile: FloorTile {
|
|
id: 4,
|
|
..Default::default()
|
|
},
|
|
tile_state: TileState {
|
|
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
|
|
},
|
|
}
|
|
}
|
|
}
|
|
|
|
#[derive(Bundle)]
|
|
pub struct FixtureTilePrefab {
|
|
transform: Transform,
|
|
sprite: Sprite,
|
|
tile: FixtureTile,
|
|
}
|
|
|
|
impl FixtureTilePrefab {
|
|
pub fn dirt(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
|
FixtureTilePrefab {
|
|
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
|
|
sprite: Sprite {
|
|
image: asset_server.load("dirt_wall.png"),
|
|
..Default::default()
|
|
},
|
|
tile: FixtureTile {
|
|
id: 1,
|
|
..Default::default()
|
|
},
|
|
}
|
|
}
|
|
|
|
pub fn rock(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
|
FixtureTilePrefab {
|
|
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
|
|
sprite: Sprite {
|
|
image: asset_server.load("rock_wall.png"),
|
|
..Default::default()
|
|
},
|
|
tile: FixtureTile {
|
|
id: 3,
|
|
..Default::default()
|
|
},
|
|
}
|
|
}
|
|
|
|
pub fn bedrock(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
|
FixtureTilePrefab {
|
|
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
|
|
sprite: Sprite {
|
|
image: asset_server.load("bedrock_wall.png"),
|
|
..Default::default()
|
|
},
|
|
tile: FixtureTile {
|
|
id: 4,
|
|
..Default::default()
|
|
},
|
|
}
|
|
}
|
|
}
|