home · contact · privacy
Make is_passable() use yx_uint16 for coordinates instead of two ints.
authorChristian Heller <c.heller@plomlompom.de>
Thu, 27 Jun 2013 23:06:03 +0000 (01:06 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 27 Jun 2013 23:06:03 +0000 (01:06 +0200)
src/actors.c
src/actors.h
src/roguelike.c

index b70f27959338cebcb01d79454ac14d4e571455e0..05525874f6a64aa616ac6151e5d127bdd3e4668b 100644 (file)
@@ -5,11 +5,11 @@
 #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,7 +27,7 @@ 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) {
@@ -46,7 +46,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);
index c97d91bbba3c30d7a4fa6017999d95d783f2cb4e..51d6612ae1c49b65cbd0a35d94fc9f2432eff1b8 100644 (file)
@@ -15,7 +15,7 @@ struct Monster {
   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 *);
index 0d1e96b60966338f4b5e7bba283cd4e64d49334d..d21238852ce7b189b725b4d24a25873830e70b92 100644 (file)
@@ -237,12 +237,12 @@ int main (int argc, char *argv[]) {
   struct Map map = init_map();
   world.map = &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; } }