//TODO fix this bug //there is a bug with the units arg //it doesnt check weather EVERY spot in its path is vaiid so it allows the possibity of going thru walls if units is more than 1 int attempt_move(struct entity *fuck, int units, int direction) { int xfuture = fuck->x; int yfuture = fuck->y; switch (direction) { case 0: // right xfuture = xfuture + units; if (readmap(xfuture, fuck->y) == '&') { return 0; } else { fuck->x++; fuck->under_char = readmap(fuck->x, fuck->y); return 1; } case 1: // up yfuture = yfuture - units; // we subtract because moving up if (readmap(fuck->x, yfuture) == '&') { return 0; } else { fuck->y--; fuck->under_char = readmap(fuck->x, fuck->y); return 1; } case 2: // left xfuture = xfuture - units; if (readmap(xfuture, fuck->y) == '&') { return 0; } else { fuck->x--; fuck->under_char = readmap(fuck->x, fuck->y); return 1; } case 3: // down yfuture = yfuture + units; if (readmap(fuck->x, yfuture) == '&') { return 0; } else { fuck->y++; fuck->under_char = readmap(fuck->x, fuck->y); return 1; } } return 0; } void all_entity(struct entity *fuck) { fuck->x++; }