Separate floor from fixture
This commit is contained in:
+85
-71
@@ -1,46 +1,27 @@
|
||||
use crate::constants::*;
|
||||
use crate::tile::{Tile, TileState};
|
||||
use crate::tile::{FixtureTile, FloorTile, TileState};
|
||||
use bevy::prelude::*;
|
||||
|
||||
#[derive(Bundle)]
|
||||
pub struct TilePrefab {
|
||||
pub struct FloorTilePrefab {
|
||||
transform: Transform,
|
||||
sprite: Sprite,
|
||||
tile: Tile,
|
||||
tile: FloorTile,
|
||||
tile_state: TileState,
|
||||
}
|
||||
|
||||
impl TilePrefab {
|
||||
impl FloorTilePrefab {
|
||||
pub fn dirt(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
||||
TilePrefab {
|
||||
FloorTilePrefab {
|
||||
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
|
||||
sprite: Sprite {
|
||||
image: asset_server.load("dirt.png"),
|
||||
image: asset_server.load("dirt_floor.png"),
|
||||
..Default::default()
|
||||
},
|
||||
tile: Tile {
|
||||
tile: FloorTile {
|
||||
id: 1,
|
||||
opaque: true,
|
||||
visible_range: [0;8],
|
||||
},
|
||||
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 {
|
||||
id: 2,
|
||||
opaque: true,
|
||||
visible_range: [0;8],
|
||||
},
|
||||
tile_state: TileState {
|
||||
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
|
||||
},
|
||||
@@ -48,68 +29,50 @@ impl TilePrefab {
|
||||
}
|
||||
|
||||
pub fn rock(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
||||
TilePrefab {
|
||||
FloorTilePrefab {
|
||||
transform: Transform::from_translation(position).with_scale(Vec3::splat(PIXEL_RATIO)),
|
||||
sprite: Sprite {
|
||||
image: asset_server.load("rock.png"),
|
||||
image: asset_server.load("rock_floor.png"),
|
||||
..Default::default()
|
||||
},
|
||||
tile: Tile {
|
||||
tile: FloorTile {
|
||||
id: 3,
|
||||
opaque: true,
|
||||
visible_range: [0;8],
|
||||
},
|
||||
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 {
|
||||
id: 0,
|
||||
opaque: false,
|
||||
visible_range: [0;8],
|
||||
},
|
||||
tile_state: TileState {
|
||||
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
|
||||
},
|
||||
}
|
||||
}
|
||||
pub fn bedrock(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("bedrock.png"),
|
||||
..Default::default()
|
||||
},
|
||||
tile: Tile {
|
||||
id: 4,
|
||||
opaque: true,
|
||||
visible_range: [0;8],
|
||||
},
|
||||
tile_state: TileState {
|
||||
timer: Timer::from_seconds(1.0, TimerMode::Repeating),
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
pub fn underground(position: Vec3, asset_server: &Res<AssetServer>) -> Self {
|
||||
TilePrefab {
|
||||
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("underground.png"),
|
||||
image: asset_server.load("sky.png"),
|
||||
..Default::default()
|
||||
},
|
||||
tile: Tile {
|
||||
id: 5,
|
||||
opaque: true,
|
||||
visible_range: [0;8],
|
||||
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),
|
||||
@@ -117,3 +80,54 @@ impl TilePrefab {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[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()
|
||||
},
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user