generated from 2ndbeam/bevy-template
feat: Layout changes
- Added padlock layout object - Added lockpick item - Added ItemImage component - Tilemap colliders are now creating from the tiles themselves - Removed items from container bundle - Removed colliders from tilemap bundle - Removed setup_player system
This commit is contained in:
parent
5157450ced
commit
42cfd14214
10 changed files with 175 additions and 57 deletions
|
|
@ -2,12 +2,16 @@ use bevy::{
|
|||
ecs::query::QueryFilter,
|
||||
prelude::*,
|
||||
};
|
||||
|
||||
use bevy_rapier2d::prelude::*;
|
||||
|
||||
use crate::{
|
||||
meters,
|
||||
inventory::item::Item,
|
||||
player::Player,
|
||||
inventory::item::lockpick::lockpick_bundle,
|
||||
player::{
|
||||
Player,
|
||||
player_bundle,
|
||||
},
|
||||
};
|
||||
|
||||
use super::*;
|
||||
|
|
@ -61,20 +65,19 @@ pub fn detect_interact_collisions(
|
|||
}
|
||||
}
|
||||
|
||||
pub fn lock_door(
|
||||
mut commands: Commands,
|
||||
query: Query<&ChildOf, Added<lock::Padlock>>,
|
||||
) {
|
||||
for parent in query {
|
||||
commands.entity(parent.0).insert(Locked);
|
||||
}
|
||||
}
|
||||
|
||||
pub fn setup_world(
|
||||
mut commands: Commands,
|
||||
asset_server: Res<AssetServer>,
|
||||
) {
|
||||
let items = vec![
|
||||
Item::new_positioned(uvec2(1, 1), uvec2(0, 0)),
|
||||
Item::new_positioned(uvec2(2, 1), uvec2(1, 0)),
|
||||
Item::new_positioned(uvec2(3, 1), uvec2(3, 0)),
|
||||
Item::new_positioned(uvec2(2, 2), uvec2(6, 0)),
|
||||
Item::new_positioned(uvec2(6, 2), uvec2(0, 1)),
|
||||
Item::new_positioned(uvec2(2, 3), uvec2(6, 2)),
|
||||
Item::new_positioned(uvec2(4, 4), uvec2(0, 4)),
|
||||
];
|
||||
|
||||
// floor 1F
|
||||
let mut tiles = (0..16).map(|x| {
|
||||
(0, uvec2(x, 1))
|
||||
|
|
@ -102,46 +105,53 @@ pub fn setup_world(
|
|||
|
||||
// wall connectors
|
||||
tiles.extend([
|
||||
(13, 4), (11, 4), (9, 4),
|
||||
(4, 8), (4, 4), (11, 8), (11, 4),
|
||||
].iter().map(|(x, y)| {
|
||||
(2, uvec2(*x, *y))
|
||||
}));
|
||||
|
||||
let colliders: Vec<(Collider, Vec2)> = vec![
|
||||
// 1F
|
||||
(Collider::cuboid(meters(0.5), meters(1.5)),
|
||||
vec2(meters(0.5), meters(-4.5))),
|
||||
(Collider::cuboid(meters(0.5), meters(1.5)),
|
||||
vec2(meters(15.5), meters(-4.5))),
|
||||
// 2F
|
||||
(Collider::cuboid(meters(0.5), meters(1.5)),
|
||||
vec2(meters(0.5), meters(-0.5))),
|
||||
(Collider::cuboid(meters(0.5), meters(1.5)),
|
||||
vec2(meters(15.5), meters(-0.5))),
|
||||
];
|
||||
|
||||
commands.spawn(door::door_bundle(&asset_server, vec2(meters(1.5), 0.), true));
|
||||
commands.spawn(door::door_bundle(&asset_server, vec2(meters(3.5), 0.), false));
|
||||
commands.spawn(door::door_bundle(&asset_server, vec2(meters(5.5), 0.), false)).insert(Locked);
|
||||
commands.spawn(container::container_bundle(&asset_server, vec2(meters(-2.), 0.), uvec2(8, 8), items.clone()));
|
||||
commands.spawn(container::container_bundle(&asset_server, vec2(meters(2.), meters(4.)), uvec2(10, 8), items.clone()));
|
||||
commands.spawn(tilemap::tilemap_bundle(&asset_server, uvec2(16, 16), tiles, colliders));
|
||||
commands.spawn(tilemap::tilemap_bundle(&asset_server, uvec2(16, 10), tiles));
|
||||
|
||||
commands.spawn(door::door_bundle(&asset_server, vec2(meters(-3.5), 0.), false));
|
||||
commands.spawn(door::door_bundle(&asset_server, vec2(meters(-3.5), meters(4.)), false))
|
||||
.with_child(lock::padlock_bundle(&asset_server, false));
|
||||
commands.spawn(door::door_bundle(&asset_server, vec2(meters(3.5), 0.), true))
|
||||
.with_child(lock::padlock_bundle(&asset_server, true));
|
||||
commands.spawn(door::door_bundle(&asset_server, vec2(meters(3.5), meters(4.)), true));
|
||||
|
||||
commands.spawn(stairs::stairs_bundle(
|
||||
&asset_server,
|
||||
vec2(meters(-5.), 0.),
|
||||
vec2(meters(0.), 0.),
|
||||
Some(vec2(meters(2.), meters(4.))),
|
||||
None,
|
||||
));
|
||||
commands.spawn(stairs::stairs_bundle(
|
||||
&asset_server,
|
||||
vec2(meters(-5.), meters(4.)),
|
||||
Some(vec2(meters(2.), meters(4.))),
|
||||
Some(vec2(meters(-2.), meters(-4.))),
|
||||
));
|
||||
commands.spawn(stairs::stairs_bundle(
|
||||
&asset_server,
|
||||
vec2(meters(-5.), meters(8.)),
|
||||
vec2(meters(0.), meters(4.)),
|
||||
None,
|
||||
Some(vec2(meters(-2.), meters(-4.))),
|
||||
));
|
||||
|
||||
commands.spawn(container::container_bundle(
|
||||
&asset_server,
|
||||
vec2(meters(-6.), 0.),
|
||||
uvec2(1, 1),
|
||||
));
|
||||
commands.spawn(container::container_bundle(
|
||||
&asset_server,
|
||||
vec2(meters(-6.), meters(4.)),
|
||||
uvec2(1, 1),
|
||||
)).with_child(lockpick_bundle(&asset_server, UVec2::ZERO));
|
||||
commands.spawn(container::container_bundle(
|
||||
&asset_server,
|
||||
vec2(meters(6.), 0.),
|
||||
uvec2(1, 1),
|
||||
));
|
||||
commands.spawn(container::container_bundle(
|
||||
&asset_server,
|
||||
vec2(meters(6.), meters(4.)),
|
||||
uvec2(1, 1),
|
||||
)).with_child(lockpick_bundle(&asset_server, UVec2::ZERO));
|
||||
|
||||
commands.spawn(player_bundle(&asset_server, vec2(meters(-6.), 0.)));
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue