Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 12 additions & 9 deletions collision.h
Original file line number Diff line number Diff line change
Expand Up @@ -216,15 +216,18 @@ void check_ladder_collisions(vector<vector<shared_ptr<Ladder>>> ladders, unorder
}
break;
}
else if (!(collision == "None" || collision == "Top") && (key_typed(level_players[k]->input.jump_key) || key_typed(level_players[k]->input.crouch_key)))
{
level_players[k]->set_on_ladder(true);
sprite_set_y(level_players[k]->get_player_sprite(), sprite_y(level_players[k]->get_player_sprite()) - 10);
level_players[k]->set_player_dx(0);
level_players[k]->change_state(new ClimbState, "Climb");
level_players[k]->set_on_floor(false);
break;
}
else if (!(collision == "None" || collision == "Top") &&
!key_down(level_players[k]->input.crouch_key) &&
level_players[k]->get_state_type() != "Climb")
{
level_players[k]->set_on_ladder(true);
sprite_set_y(level_players[k]->get_player_sprite(),
sprite_y(level_players[k]->get_player_sprite()) - 10);
level_players[k]->set_player_dx(0);
level_players[k]->change_state(new ClimbState, "Climb");
level_players[k]->set_on_floor(false);
break;
}
else if (collision != "None" && level_players[k]->get_state_type() == "Climb")
{
break;
Expand Down
54 changes: 40 additions & 14 deletions player.h
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ void player_draw_pipe(Player *player)
{
if(player->with_pipe())
{
point_2d position = center_point(player->get_player_sprite());
point_2d position = center_point(player->get_player_sprite());
bitmap pipe = player->get_held_pipe()->get_bitmap();
drawing_options opts = option_defaults();
opts.draw_cell = player->get_held_pipe()->get_cell();
Expand Down Expand Up @@ -869,25 +869,51 @@ void ClimbState::get_input()
sprite_set_dy(player->get_player_sprite(), -CLIMB_SPEED);
}
else if (key_down(player->input.crouch_key))
{
string drop_timer = "LadderDropP" + std::to_string(player->get_player_id());

if (!timer_started(timer_named(drop_timer)))
{
if (!is_moving)
{
sprite_start_animation(this->player->get_player_sprite(), "Climb");
is_moving = true;
}
sprite_set_dy(player->get_player_sprite(), CLIMB_SPEED);
start_timer(drop_timer);
}

if(player->is_on_floor())
{
this->player->change_state(new IdleState, "Idle");
}
if (!is_moving)
{
sprite_start_animation(this->player->get_player_sprite(), "Climb");
is_moving = true;
}

sprite_set_dy(player->get_player_sprite(), CLIMB_SPEED);

if (timer_ticks(drop_timer) >= 500)
{
stop_timer(drop_timer);
player->set_on_ladder(false);
player->set_on_floor(false);
player->change_state(new JumpFallState, "JumpFall");
return;
}

if (player->is_on_floor())
{
stop_timer(drop_timer);
this->player->change_state(new IdleState, "Idle");
}
}
if (key_released(player->input.jump_key) || key_released(player->input.jump_key2) || key_released(player->input.crouch_key))
{
is_moving = false;
sprite_start_animation(this->player->get_player_sprite(), "ClimbIdle");
sprite_set_dy(player->get_player_sprite(), 0);

if (key_released(player->input.crouch_key))
{
is_moving = false;
sprite_start_animation(this->player->get_player_sprite(), "ClimbIdle");
sprite_set_dy(player->get_player_sprite(), 0);
string drop_timer = "LadderDropP" + std::to_string(player->get_player_id());

if (timer_started(timer_named(drop_timer)))
stop_timer(drop_timer);
}
}
if(key_released(player->input.left_key) || key_released(player->input.right_key))
{
is_moving = false;
Expand Down