void handle_push()

in procgen/src/games/miner.cpp [232:245]


    void handle_push() {
        int agent_idx = get_agent_index();
        int agentx = agent_idx % main_width;

        if (action_vx == 1 && (agent->vx == 0) && (agentx < main_width - 2) && get_obj(agent_idx + 1) == BOULDER && get_obj(agent_idx + 2) == SPACE) {
            set_obj(agent_idx + 1, SPACE);
            set_obj(agent_idx + 2, BOULDER);
            agent->x += 1;
        } else if (action_vx == -1 && (agent->vx == 0) && (agentx > 1) && get_obj(agent_idx - 1) == BOULDER && get_obj(agent_idx - 2) == SPACE) {
            set_obj(agent_idx - 1, SPACE);
            set_obj(agent_idx - 2, BOULDER);
            agent->x -= 1;
        }
    }