inline bool occupied() { if (! m_calculated) { m_occupied = is_occupied(); m_calculated = true; } return m_occupied; }
int is_entity_ok (int x, int y) { // On vérifie si aucune autre entité n'est sur la case visée if (is_occupied(x, y)) return 0; // On vérifie si le personnage n'essaye pas de sortir de la map if (!is_in_map(x, y)) return 0; // On vérifie si le personnage peut marcher si le tile visé if (is_bloquant(x, y)) return 0; if (is_object(x, y)) return 0; return 1; }
static void get_grid_input(Grid* grid, int* mov, int* rot, int* drop) { if(is_occupied(grid->nr)) { *mov = button_down(grid->nr, BUTTON_RIGHT) - button_down(grid->nr, BUTTON_LEFT); *rot = button_down(grid->nr, BUTTON_A) - button_down(grid->nr, BUTTON_B); *drop = button_down(grid->nr, BUTTON_DOWN); } else { grid_bot(grid, mov, rot, drop); } if(*mov != grid->input_mov) grid->input_rep = 0; grid->input_mov = *mov; if(grid->input_rep <= 0) grid->input_rep = 6; else { grid->input_rep--; *mov = 0; } if(*rot != grid->input_rot) grid->input_rot = *rot; else *rot = 0; }