#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; }
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) {
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);
char name;
struct yx_uint16 pos; };
-extern char is_passable (struct Map *, uint16_t, uint16_t);
+extern char is_passable (struct Map *, struct yx_uint16);
extern void move_monster (struct World *, struct Monster *);
extern void move_player (struct World *, char);
extern void player_wait(struct World *);
struct Map map = init_map();
world.map = ↦
if (1 == world.turn) {
- for (player.pos.y = player.pos.x = 0; 0 == is_passable(&map, player.pos.y, player.pos.x);) {
+ for (player.pos.y = player.pos.x = 0; 0 == is_passable(&map, player.pos);) {
player.pos.y = rrand(0, 0) % map.size.y;
player.pos.x = rrand(0, 0) % map.size.x; }
struct Monster * monster;
for (monster = world.monster; monster != 0; monster = monster->next)
- for (monster->pos.y = monster->pos.x = 0; 0 == is_passable(&map, monster->pos.y, monster->pos.x);) {
+ for (monster->pos.y = monster->pos.x = 0; 0 == is_passable(&map, monster->pos);) {
monster->pos.y = rrand(0, 0) % map.size.y;
monster->pos.x = rrand(0, 0) % map.size.x; } }