]> granicus.if.org Git - nethack/commitdiff
Reset map x/y start/size in single place
authorPasi Kallinen <paxed@alt.org>
Tue, 2 Aug 2022 14:02:25 +0000 (17:02 +0300)
committerPasi Kallinen <paxed@alt.org>
Tue, 2 Aug 2022 14:02:25 +0000 (17:02 +0300)
include/extern.h
src/mklev.c
src/sp_lev.c

index 3ed02577fa6fcc977b5eeb59254da2f8a1b36ad6..ce9f9e9ccd710aa65d7d020acd7e8bbb40f90209 100644 (file)
@@ -2538,6 +2538,7 @@ extern void release_sound_mappings(void);
 
 #if !defined(CROSSCOMPILE) || defined(CROSSCOMPILE_TARGET)
 extern void create_des_coder(void);
+extern void reset_xystart_size(void);
 extern struct mapfragment *mapfrag_fromstr(char *);
 extern void mapfrag_free(struct mapfragment **);
 extern schar mapfrag_get(struct mapfragment *, int, int);
index 0b647ffeed22419abfb3bd1fe67666dc3113e7c0..17db087e5ca362f1a0313b9424cfa5ac8d6200d0 100644 (file)
@@ -733,10 +733,7 @@ clear_level_structures(void)
     stairway_free_all();
     g.made_branch = FALSE;
     clear_regions();
-    g.xstart = 1;
-    g.ystart = 0;
-    g.xsize = COLNO - 1;
-    g.ysize = ROWNO;
+    reset_xystart_size();
     if (g.lev_message) {
         free(g.lev_message);
         g.lev_message = (char *) 0;
index da68519d60266f17350908cf0dfeb794ef817212..4f4416a6893c54eb5203170756ed180408266de2 100644 (file)
@@ -201,6 +201,15 @@ static struct monst *invent_carrying_monster = (struct monst *) 0;
 
 #define TYP_CANNOT_MATCH(typ) ((typ) == MAX_TYPE || (typ) == INVALID_TYPE)
 
+void
+reset_xystart_size(void)
+{
+    g.xstart = 1; /* column [0] is off limits */
+    g.ystart = 0;
+    g.xsize = COLNO - 1; /* 1..COLNO-1 */
+    g.ysize = ROWNO; /* 0..ROWNO-1 */
+}
+
 /* Does typ match with levl[][].typ, considering special types
    MATCH_WALL and MAX_TYPE (aka transparency)? */
 static boolean
@@ -3923,12 +3932,8 @@ spo_endroom(struct sp_coder* coder UNUSED)
         /* Need to ensure xstart/ystart/xsize/ysize have something sensible,
            in case there's some stuff to be created outside the outermost
            room, and there's no MAP. */
-        if (g.xsize <= 1 && g.ysize <= 1) {
-            g.xstart = 1;
-            g.ystart = 0;
-            g.xsize = COLNO - 1;
-            g.ysize = ROWNO;
-        }
+        if (g.xsize <= 1 && g.ysize <= 1)
+            reset_xystart_size();
     }
     update_croom();
 }
@@ -6349,10 +6354,7 @@ TODO: g.coder->croom needs to be updated
             g.ystart = 0;
     }
     if (g.xsize <= 1 && g.ysize <= 1) {
-        g.xstart = 1;
-        g.ystart = 0;
-        g.xsize = COLNO - 1;
-        g.ysize = ROWNO;
+        reset_xystart_size();
     } else {
         coordxy mptyp;
 
@@ -6493,10 +6495,7 @@ sp_level_coder_init(void)
 
     g.level.flags.is_maze_lev = 0;
 
-    g.xstart = 1; /* column [0] is off limits */
-    g.ystart = 0;
-    g.xsize = COLNO - 1; /* 1..COLNO-1 */
-    g.ysize = ROWNO; /* 0..ROWNO-1 */
+    reset_xystart_size();
 
     return coder;
 }