in procgen/src/games/ninja.cpp [347:377]
void set_action_xy(int move_action) override {
action_vx = move_action / 3 - 1;
action_vy = (move_action % 3) - 1;
if (action_vy < 0)
action_vy = 0;
if (action_vx > 0)
facing_right = true;
if (action_vx < 0)
facing_right = false;
int obj_below_1 = get_obj_from_floats(agent->x - (agent->rx - .01), agent->y - (agent->ry + .01));
int obj_below_2 = get_obj_from_floats(agent->x + (agent->rx - .01), agent->y - (agent->ry + .01));
has_support = can_support(obj_below_1) || can_support(obj_below_2);
if (has_support && action_vy == 1) {
action_vy = 1;
jump_charge += jump_charge_inc;
if (jump_charge > 1) {
jump_charge = 1;
}
} else {
action_vy = 0;
}
if (!has_support) {
jump_charge = 0;
}
}