From 6fb7c821a7d8b60d740373ba6e2b5f36b8028607 Mon Sep 17 00:00:00 2001 From: talha Date: Mon, 3 Mar 2025 20:46:11 +0500 Subject: Increased movement speedup, updated teleporter --- source/main.cpp | 26 ++++++++++++++++---------- 1 file changed, 16 insertions(+), 10 deletions(-) diff --git a/source/main.cpp b/source/main.cpp index 5f86f98..fa9f6e4 100755 --- a/source/main.cpp +++ b/source/main.cpp @@ -179,6 +179,9 @@ static const char *level_names[] = { "level8.txt", "level9.txt", "level10.txt", + "hello_portal.txt", + "portal_wind_up_no_jump.txt", + "portal_thereNback.txt", }; const int level_count = ARR_SIZE(level_names); @@ -515,8 +518,10 @@ void setup_level(GameState *state, GLRenderer *renderer, Arena *arena) load_level(state, arena, level_path); Entity player = state->game_level.entities[state->player.index]; - renderer->cam_pos.x = player.position.x - (40.0f * state->render_scale.x); - renderer->cam_pos.y = player.position.y - (40.0f * state->render_scale.y); + Entity goal = state->game_level.entities[state->goal.index]; + Vec2 scr_dims; + renderer->cam_pos.x = goal.position.x - (state->screen_size.x/2.0f * state->render_scale.x); + renderer->cam_pos.y = goal.position.y - (state->screen_size.y/2.0f * state->render_scale.y); state->effective_force = 0.0f; state->player_velocity = Vec2{0.0f, 0.0f}; state->gravity_diry = 1.0f; @@ -735,6 +740,7 @@ int main(int argc, char* argv[]) state.gravity_diry = 1.0f; r32 fall_accelx = 3.0f*motion_scale; r32 move_accelx = 4.0f*motion_scale; + r32 max_speedx = 5.0f*motion_scale; r32 freefall_accel = -11.8f*motion_scale; r32 jump_force = 6.5f*motion_scale; state.effective_force = 0.0f; @@ -1054,7 +1060,7 @@ int main(int argc, char* argv[]) state.effective_force + p_move_dir.x*move_accelx*timer.tDelta ); updated_force = clampf( - updated_force, -move_accelx, move_accelx + updated_force, -max_speedx, max_speedx ); state.effective_force = updated_force; } else { @@ -1313,19 +1319,19 @@ int main(int argc, char* argv[]) inside_teleporter_now |= t_collide; // check if player x-axis is within teleport x-axis - Vec2 displacement; - displacement.x = player.position.x - e.position.x; - displacement.y = player.position.y - e.position.y; + Vec2 player_center = player.position.v2() + player.size/2.0f; + Vec2 entity_center = e.position.v2() + e.size/2.0f; + Vec2 displacement = player_center - entity_center; - if (ABS(displacement.x) <= 5.0f*render_scale) { + if (ABS(displacement.x) <= 5.0f*render_scale || ABS(displacement.y) <= 5.0f*render_scale) { teleporting_now = 1; { // @step: teleport_player Entity teleport_to = get_entity_by_id(state, e.link_id); + Vec2 teleport_to_center = teleport_to.position.v2() + teleport_to.size/2.0f; // set next position - teleported_position.x = teleport_to.position.x + displacement.x; - teleported_position.y = teleport_to.position.y + displacement.y; - // add displacement so it gives a smooth effect of just moving over to someplace + Vec2 teleported_position_center = teleport_to_center + displacement; + teleported_position = teleported_position_center - player.size/2.0f; } } } -- cgit v1.2.3