cool things

This commit is contained in:
TudbuT 2024-11-23 23:53:13 +01:00
parent 23e76a73cd
commit 4e3edc5d45
3 changed files with 69 additions and 19 deletions

View file

@ -1,7 +1,9 @@
header header
block-size = 60 block-size = 60
.P = [player] .P = [player]
.S = [spawn]
.T = Blockgrau.png .T = Blockgrau.png
.t = _Blockgrau.png
.E = erdblock_lower.png .E = erdblock_lower.png
.G = grasblock_lower.png .G = grasblock_lower.png
._ = _grasblock_upper.png ._ = _grasblock_upper.png
@ -11,16 +13,31 @@ header
links links
blocks blocks
TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
T T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
T T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
T O T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
T O T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T TTT
T O T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTttttttttttttttttttt _ S T TTT
T P _______ _ T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTtt T _T T TTT
TT ,,,_______,,,_a____,___ __GGGGGGG_______TTTTTTTTTTTT T TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T T _________GT T TTT
TTTTTTTTEEEGGGGGGGEEEGGGGGGEGGGE GGEEEEEEEGGEEEEETTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TGGGGGGGGGET T TTT
TTTTTTTTTEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEETTTTTTTTTTTTTTTEEET TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TTEEEEEEEEEET T TTT
TTTTTTEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEEETTTTTTEEEEEEEEEET TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T T TTTTTTTTTTTTTT T TTT
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTtTTTTTTTTTTTTTTTTTT T TT T TTT
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT T T TT T T
T T T TT T T T
T O S OT T T T
T P O T _______ T T T T
T O S T S _GGGGGGGTTT T T
T ______ _ __GEEEEEEEE T T
TT ,,,_______,,,_a____,___ __GGGGGG TTTTTTTTT _____,_____GGEEEEEEEEE______________T_____ _________________T
TTTTTTTTEEEGGGGGGGEEEGGGGGGEGGGE GGEEEEEE TTTTTTTTTTTTTTTGGGGGEGGGGGEEEEEEEEEEEGGGGGGGGGGGGGGGGGGGG GGGGGGGGGGGGGGGGGT
TTTTTTTTTEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEE TTTTTTTTTTTTEEEEEEEEEETEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEET
TTTTTTEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEE TTTTTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEET
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTT TTTTTTTTTTTTTTTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEET
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTT TTTTTTTTTTTTTTTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEET
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTT TTTTTTTTTTTTTTTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEET
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTT TTTTTTTTTTTTTTTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEET
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTT TTTTTTTTTTTTTTTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEET
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE TTTTTTTTTTTT TTTTTTTTTTTTTTTEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE EEEEEEEEEEEEEEEEET

View file

@ -7,10 +7,22 @@ use bevy_rapier2d::prelude::*;
use crate::{AppState, METER}; use crate::{AppState, METER};
use super::{scene::PlayerCoords, set::IngameSet, PLAYER_DEPTH}; use super::{
scene::{PlayerCoords, WorldInfo},
set::IngameSet,
PLAYER_DEPTH,
};
mod animation; mod animation;
#[derive(Event)]
enum PlayerDeathEvent {
Void,
Spikes,
}
#[derive(Event)]
struct RespawnPointSetEvent;
#[derive(Component)] #[derive(Component)]
struct Player { struct Player {
move_cooldown: Timer, move_cooldown: Timer,
@ -56,6 +68,7 @@ fn debug_player_pos(query: Query<&Transform, With<Player>>) {
let trans = query.single(); let trans = query.single();
} }
fn move_player( fn move_player(
mut commands: Commands,
kb_input: Res<ButtonInput<KeyCode>>, kb_input: Res<ButtonInput<KeyCode>>,
mut query: Query<( mut query: Query<(
&mut Velocity, &mut Velocity,
@ -68,6 +81,7 @@ fn move_player(
mut camera_query: Query<&mut Transform, (With<Camera2d>, Without<Player>)>, mut camera_query: Query<&mut Transform, (With<Camera2d>, Without<Player>)>,
phys: Query<&KinematicCharacterControllerOutput>, phys: Query<&KinematicCharacterControllerOutput>,
player_coords: Res<PlayerCoords>, player_coords: Res<PlayerCoords>,
world_info: Res<WorldInfo>,
time: Res<Time>, time: Res<Time>,
) { ) {
let (mut vel, mut p_transform, mut player, mut controller, mut sprite, mut anim_state) = let (mut vel, mut p_transform, mut player, mut controller, mut sprite, mut anim_state) =
@ -106,7 +120,22 @@ fn move_player(
*anim_state = PlayerAnimations::Idle; *anim_state = PlayerAnimations::Idle;
} }
for p in world_info.spawnpoints.iter().rev() {
let x = p.0 as f32 * world_info.block_size;
if x < p_transform.translation.x && x != player_coords.x {
commands.insert_resource(PlayerCoords {
x,
y: p.1 as f32 * world_info.block_size,
..*player_coords
});
commands.trigger(RespawnPointSetEvent);
break;
}
}
if p_transform.translation.y < -10. * player_coords.block_size { if p_transform.translation.y < -10. * player_coords.block_size {
commands.trigger(PlayerDeathEvent::Void);
p_transform.translation = p_transform.translation =
Vec2::new(player_coords.x, player_coords.y).extend(PLAYER_DEPTH); Vec2::new(player_coords.x, player_coords.y).extend(PLAYER_DEPTH);
} }

View file

@ -54,10 +54,11 @@ pub(super) fn scene_plugin(app: &mut App) {
app.add_systems(Startup, (import_text_world,)); app.add_systems(Startup, (import_text_world,));
} }
#[derive(Default)] #[derive(Default, Resource)]
pub struct WorldInfo { pub struct WorldInfo {
block_size: f32, pub block_size: f32,
blocks: Vec<(String, String)>, pub blocks: Vec<(String, String)>,
pub spawnpoints: Vec<(usize, usize)>,
} }
pub(super) fn import_text_world( pub(super) fn import_text_world(
@ -125,6 +126,8 @@ pub(super) fn import_text_world(
block_size: wi.block_size, block_size: wi.block_size,
}); });
commands.run_system(player_spawn_oneshot.0); commands.run_system(player_spawn_oneshot.0);
} else if tex == "[spawn]" {
wi.spawnpoints.push((i, current_y));
} else { } else {
spawn_block( spawn_block(
&mut commands, &mut commands,
@ -145,6 +148,7 @@ pub(super) fn import_text_world(
panic!("unknown block in at {i},{current_y}"); panic!("unknown block in at {i},{current_y}");
} }
} }
commands.insert_resource(wi);
} }
fn spawn_block( fn spawn_block(
@ -175,9 +179,9 @@ fn spawn_block(
RigidBody::Dynamic RigidBody::Dynamic
}, },
if fixed { if fixed {
Collider::cuboid(block_size / 2.0 * len as f32, block_size / 2.0) Collider::cuboid(block_size / 2. * len as f32, block_size / 2.)
} else { } else {
Collider::ball(block_size as f32 / 2.) Collider::ball(block_size / 2.)
}, },
AdditionalMassProperties::Mass(1.0), AdditionalMassProperties::Mass(1.0),
Velocity::default(), Velocity::default(),