forked from tas/major_tom
Add height zones, jetpack boost particles, and TigerStyle guidelines
Level generator: add vertical variety with tall levels (46 tiles). Segment generators accept ground_row parameter, SEG_CLIMB connects height zones, transitions inherit predecessor ground row to prevent walkability gaps. Climb segments respect traversal direction. Jetpack boost: add blue flame particles during dash (burst + trail) and continuous idle glow from player back while boost timer is active. Camera: add 30px vertical look-ahead when player velocity exceeds 50 px/s. Fix flame vent pedestal in gen_pit to use ground-relative position instead of map bottom (broken in tall HIGH-zone levels). Add TigerStyle coding guidelines to AGENTS.md adapted for C11. Add tall_test.lvl (40x46) for height zone validation.
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -288,6 +288,11 @@ void player_update(Entity *self, float dt, const Tilemap *map) {
|
||||
);
|
||||
particle_emit_jetpack_trail(exhaust_pos, pd->dash_dir);
|
||||
|
||||
/* Blue flame trail when boost is active */
|
||||
if (pd->jetpack_boost_timer > 0) {
|
||||
particle_emit_jetpack_boost_trail(exhaust_pos, pd->dash_dir);
|
||||
}
|
||||
|
||||
/* Skip normal movement during dash */
|
||||
physics_update(body, dt, map);
|
||||
animation_update(&self->anim, dt);
|
||||
@@ -330,10 +335,28 @@ void player_update(Entity *self, float dt, const Tilemap *map) {
|
||||
);
|
||||
particle_emit_jetpack_burst(exhaust_pos, pd->dash_dir);
|
||||
|
||||
/* Blue flame accents when boost powerup is active */
|
||||
if (pd->jetpack_boost_timer > 0) {
|
||||
particle_emit_jetpack_boost_burst(exhaust_pos, pd->dash_dir);
|
||||
}
|
||||
|
||||
audio_play_sound(s_sfx_dash, 96);
|
||||
return;
|
||||
}
|
||||
|
||||
/* ── Jetpack boost idle glow ─────────────── */
|
||||
/* Ambient blue flame from the player's back while boost is active
|
||||
* and not dashing. Emits from the rear center of the sprite. */
|
||||
if (pd->jetpack_boost_timer > 0) {
|
||||
bool facing_left = (self->flags & ENTITY_FACING_LEFT) != 0;
|
||||
Vec2 back_pos = vec2(
|
||||
facing_left ? body->pos.x + body->size.x - 1.0f
|
||||
: body->pos.x + 1.0f,
|
||||
body->pos.y + body->size.y * 0.45f
|
||||
);
|
||||
particle_emit_jetpack_boost_idle(back_pos, facing_left);
|
||||
}
|
||||
|
||||
/* ── Horizontal movement ─────────────────── */
|
||||
float target_vx = 0.0f;
|
||||
if (hold_left) target_vx -= PLAYER_SPEED;
|
||||
|
||||
Reference in New Issue
Block a user