X-Git-Url: https://plomlompom.com/repos/%7B%7B%20web_path%20%7D%7D/decks/%7B%7Bdeck_id%7D%7D/cards/%7B%7Bcard_id%7D%7D/form?a=blobdiff_plain;f=src%2Factors.c;h=ca1305ce6540dc636e6a6e42b854be2b30542068;hb=d966716bf65408119fae415c74fc274ff144f46d;hp=b70f27959338cebcb01d79454ac14d4e571455e0;hpb=47d7b87570ce3c79d3e0a6b8e765c74d065b6ba5;p=plomrogue diff --git a/src/actors.c b/src/actors.c index b70f279..ca1305c 100644 --- a/src/actors.c +++ b/src/actors.c @@ -1,15 +1,14 @@ #include "actors.h" #include #include -#include #include "yx_uint16.h" #include "roguelike.h" -extern char is_passable (struct Map * map, uint16_t y, uint16_t x) { +extern char is_passable (struct Map * map, struct yx_uint16 pos) { // Check if coordinate on (or beyond) map is accessible to actor movement. char passable = 0; - if (0 <= x && x < map->size.x && 0 <= y && y < map->size.y) - if ('.' == map->cells[y * map->size.x + x]) + if (0 <= pos.x && pos.x < map->size.x && 0 <= pos.y && pos.y < map->size.y) + if ('.' == map->cells[pos.y * map->size.x + pos.x]) passable = 1; return passable; } @@ -27,11 +26,11 @@ extern void move_monster (struct World * world, struct Monster * monster) { if (yx_uint16_cmp (t, other_monster->pos)) { update_log (world, "\nMonster hits monster."); return; } } - if (is_passable(world->map, t.y, t.x)) + if (is_passable(world->map, t)) monster->pos = t; } extern void move_player (struct World * world, char d) { -// Move player in direction d, increment turn counter and update log. +// Move player in direction d, update log and turn over to the enemy. struct yx_uint16 t = mv_yx_in_dir (d, world->player->pos); struct Monster * monster; for (monster = world->monster; monster != 0; monster = monster->next) @@ -46,7 +45,7 @@ extern void move_player (struct World * world, char d) { else if (EAST == d) dir = "east" ; else if (SOUTH == d) dir = "south"; else if (WEST == d) dir = "west" ; - if (is_passable(world->map, t.y, t.x)) { + if (is_passable(world->map, t)) { msg_content = "You move"; world->player->pos = t; } sprintf(msg, "\n%s %s.", msg_content, dir);