home · contact · privacy
Server: Minor refactoring, removal of unneeded is_passable().
authorChristian Heller <c.heller@plomlompom.de>
Thu, 21 Aug 2014 23:35:41 +0000 (01:35 +0200)
committerChristian Heller <c.heller@plomlompom.de>
Thu, 21 Aug 2014 23:35:41 +0000 (01:35 +0200)
src/server/map.c
src/server/map.h
src/server/thing_actions.c
src/server/things.c

index 50c7bf1560105c5e6b3f2af12971637492ae2ac5..d98a61f28813730e33388fe48f42b7ec3ff7391b 100644 (file)
@@ -152,18 +152,6 @@ extern void remake_map()
 
 
 
-extern uint8_t is_passable(struct yx_uint8 pos)
-{
-    uint8_t passable = 0;
-    if (pos.x < world.map.length && pos.y < world.map.length)
-    {
-        passable = ('.' == world.map.cells[(pos.y * world.map.length) + pos.x]);
-    }
-    return passable;
-}
-
-
-
 extern uint8_t mv_yx_in_dir_legal(char dir, struct yx_uint8 * yx)
 {
     uint8_t wraptest = mv_yx_in_dir_wrap(dir, yx, 0);
index e3a28f9dc99b15dbccd5f03278779356ef524ab0..5407dafe34942b65f0ce6a1b6570b38baa8b4771 100644 (file)
  */
 extern void remake_map();
 
-/* Check if coordinate "pos" on (or beyond) world.map is accessible to thing
- * movement.
- */
-extern uint8_t is_passable(struct yx_uint8 pos);
-
 /* Wrapper to mv_yx_in_dir_wrap(), returns 1 if the wrapped function moved "yx"
  * within the wrap borders and the map size, else 0.
  */
index d12087692514d70569c297a4fee893ae3b2d76ce..9f1f5726a3d2f82c33539800b155decacaab6d07 100644 (file)
@@ -15,7 +15,7 @@
                      * set_thing_position(), get_thing_type(),
                      * free_things_in_memory()
                      */
-#include "map.h" /* mv_yx_in_dir_legal(), is_passable() */
+#include "map.h" /* mv_yx_in_dir_legal() */
 #include "yx_uint8.h" /* mv_yx_in_dir_wrap(), yx_uint8_cmp() */
 #include "world.h" /* global world */
 
@@ -278,7 +278,8 @@ extern void actor_move(struct Thing * t)
             }
         }
     }
-    uint8_t passable = legal_move && is_passable(target);
+    char target_cell = world.map.cells[target.y * world.map.length + target.x];
+    uint8_t passable = legal_move && '.' == target_cell;
     if (passable)
     {
         set_thing_position(t, target);
index ffa30b01324b4405c143fa6d3c5617d06cb052fe..ebecf6d59e1cb0c5d93ad31b8f16508b413c8256 100644 (file)
@@ -11,7 +11,6 @@
 #include "../common/yx_uint8.h" /* yx_uint8 */
 #include "cleanup.h" /* set_cleanup_flag() */
 #include "hardcoded_strings.h" /* s */
-#include "map.h" /* is_passable() */
 #include "rrand.h" /* rrand() */
 #include "thing_actions.h" /* actor_wait */
 #include "world.h" /* world */
@@ -267,10 +266,11 @@ extern void add_things(uint8_t type, uint8_t n)
         struct yx_uint8 pos;
         while (1)
         {
-            char * err = "Space to put thing on too hard to find."
-                         "Map too small?";
+            char * err="Space to put thing on too hard to find. Map too small?";
             uint16_t i_pos = 0;
-            for (pos.y = pos.x = 0; 0 == is_passable(pos); i_pos++)
+            for (pos.y = pos.x = 0;
+                 '.' != world.map.cells[pos.y * world.map.length + pos.x];
+                 i_pos++)
             {
                 exit_err(UINT16_MAX == i_pos, err);
                 pos.y = rrand() % world.map.length;