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) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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) -> 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() }, } } }