]> granicus.if.org Git - nethack/commitdiff
Use enums instead of magic values
authorPasi Kallinen <paxed@alt.org>
Sun, 15 Nov 2020 17:31:22 +0000 (19:31 +0200)
committerPasi Kallinen <paxed@alt.org>
Sun, 15 Nov 2020 17:32:21 +0000 (19:32 +0200)
include/extern.h
include/you.h
src/do.c
src/quest.c
src/teleport.c
src/trap.c
src/u_init.c

index 43e81cf25558f69d581fcd9571474d9203ed8070..d03b6df89da6b8df0f06423eef0cad2836735497 100644 (file)
@@ -420,7 +420,7 @@ E void NDECL(save_currentstate);
 E void FDECL(u_collide_m, (struct monst *));
 E void FDECL(goto_level, (d_level *, BOOLEAN_P, BOOLEAN_P, BOOLEAN_P));
 E void NDECL(maybe_lvltport_feedback);
-E void FDECL(schedule_goto, (d_level *, BOOLEAN_P, BOOLEAN_P, int,
+E void FDECL(schedule_goto, (d_level *, int,
                              const char *, const char *));
 E void NDECL(deferred_goto);
 E boolean FDECL(revive_corpse, (struct obj *));
index 0d1761a1931344122110989479f1d6bf9cbd5e21..738fb61e98ef0b8e661539c5d4d35c7c869123a6 100644 (file)
@@ -334,6 +334,15 @@ enum utraptypes {
     TT_BURIEDBALL = 5
 };
 
+enum utotypes {
+    UTOTYPE_NONE     = 0x00,
+    UTOTYPE_ATSTAIRS = 0x01,
+    UTOTYPE_FALLING  = 0x02,
+    UTOTYPE_PORTAL   = 0x04,
+    UTOTYPE_RMPORTAL = 0x10,  /* remove portal */
+    UTOTYPE_DEFERRED = 0x20,  /* deferred_goto */
+};
+
 /*** Information about the player ***/
 struct you {
     xchar ux, uy;       /* current map coordinates */
index a98417fa330c4ad4f787ad2de8fa9a65d30eee39..f1330eeb05a8ed1d16253fa3d6f289be1f772f7b 100644 (file)
--- a/src/do.c
+++ b/src/do.c
@@ -1446,7 +1446,7 @@ boolean at_stairs, falling, portal;
     assign_level(&u.uz0, &u.uz);
     assign_level(&u.uz, newlevel);
     assign_level(&u.utolev, newlevel);
-    u.utotype = 0;
+    u.utotype = UTOTYPE_NONE;
     if (!builds_up(&u.uz)) { /* usual case */
         if (dunlev(&u.uz) > dunlev_reached(&u.uz))
             dunlev_reached(&u.uz) = dunlev(&u.uz);
@@ -1784,24 +1784,13 @@ final_level()
 
 /* change levels at the end of this turn, after monsters finish moving */
 void
-schedule_goto(tolev, at_stairs, falling, portal_flag, pre_msg, post_msg)
+schedule_goto(tolev, utotype_flags, pre_msg, post_msg)
 d_level *tolev;
-boolean at_stairs, falling;
-int portal_flag;
+int utotype_flags;
 const char *pre_msg, *post_msg;
 {
-    int typmask = 0100; /* non-zero triggers `deferred_goto' */
-
-    /* destination flags (`goto_level' args) */
-    if (at_stairs)
-        typmask |= 1;
-    if (falling)
-        typmask |= 2;
-    if (portal_flag)
-        typmask |= 4;
-    if (portal_flag < 0)
-        typmask |= 0200; /* flag for portal removal */
-    u.utotype = typmask;
+    /* UTOTYPE_DEFERRED is used, so UTOTYPE_NONE can trigger deferred_goto() */
+    u.utotype = utotype_flags | UTOTYPE_DEFERRED;
     /* destination level */
     assign_level(&u.utolev, tolev);
 
@@ -1823,8 +1812,10 @@ deferred_goto()
         assign_level(&oldlev, &u.uz);
         if (g.dfr_pre_msg)
             pline1(g.dfr_pre_msg);
-        goto_level(&dest, !!(typmask & 1), !!(typmask & 2), !!(typmask & 4));
-        if (typmask & 0200) { /* remove portal */
+        goto_level(&dest, !!(typmask & UTOTYPE_ATSTAIRS),
+                   !!(typmask & UTOTYPE_FALLING),
+                   !!(typmask & UTOTYPE_PORTAL));
+        if (typmask & UTOTYPE_RMPORTAL) { /* remove portal */
             struct trap *t = t_at(u.ux, u.uy);
 
             if (t) {
@@ -1835,7 +1826,7 @@ deferred_goto()
         if (g.dfr_post_msg && !on_level(&u.uz, &oldlev))
             pline1(g.dfr_post_msg);
     }
-    u.utotype = 0; /* our caller keys off of this */
+    u.utotype = UTOTYPE_NONE; /* our caller keys off of this */
     if (g.dfr_pre_msg)
         free((genericptr_t) g.dfr_pre_msg), g.dfr_pre_msg = 0;
     if (g.dfr_post_msg)
index 5ca4ec0d78b0bcc0aac58a8f642250f8f6e2aa2f..e1d4dfdbd2ab7e6740a947549f224d4d5127662c 100644 (file)
@@ -182,13 +182,13 @@ boolean seal;
     branch *br;
     d_level *dest;
     struct trap *t;
-    int portal_flag;
+    int portal_flag = u.uevent.qexpelled ? UTOTYPE_NONE : UTOTYPE_PORTAL;
 
     br = dungeon_branch("The Quest");
     dest = (br->end1.dnum == u.uz.dnum) ? &br->end2 : &br->end1;
-    portal_flag = u.uevent.qexpelled ? 0 /* returned via artifact? */
-                                     : !seal ? 1 : -1;
-    schedule_goto(dest, FALSE, FALSE, portal_flag, (char *) 0, (char *) 0);
+    if (seal)
+        portal_flag |= UTOTYPE_RMPORTAL;
+    schedule_goto(dest, portal_flag, (char *) 0, (char *) 0);
     if (seal) { /* remove the portal to the quest - sealing it off */
         int reexpelled = u.uevent.qexpelled;
 
index 48a7202964964cdeb432ae596b84bf7563a5b913..b46a9b56daf14b9b355bac8ad78a43bba1e84d3c 100644 (file)
@@ -941,7 +941,7 @@ level_tele()
         }
         newlevel.dnum = u.uz.dnum;
         newlevel.dlevel = llimit + newlev;
-        schedule_goto(&newlevel, FALSE, FALSE, 0, (char *) 0, (char *) 0);
+        schedule_goto(&newlevel, UTOTYPE_NONE, (char *) 0, (char *) 0);
         return;
     }
 
@@ -1049,7 +1049,7 @@ level_tele()
         }
     }
 
-    schedule_goto(&newlevel, FALSE, FALSE, 0, (char *) 0,
+    schedule_goto(&newlevel, UTOTYPE_NONE, (char *) 0,
                   flags.verbose ? "You materialize on a different level!"
                                 : (char *) 0);
 
@@ -1090,7 +1090,7 @@ register struct trap *ttmp;
     }
 
     target_level = ttmp->dst;
-    schedule_goto(&target_level, FALSE, FALSE, 1,
+    schedule_goto(&target_level, UTOTYPE_PORTAL,
                   "You feel dizzy for a moment, but the sensation passes.",
                   (char *) 0);
 }
index 01c7a80fe9f8f7ccbd73a4e19eb602db227f0fa1..d8b19b3d4936ad0a15f1a4d3db9b5f603ecfd01a 100644 (file)
@@ -536,7 +536,7 @@ unsigned ftflags;
         Sprintf(msgbuf, "The hole in the %s above you closes up.",
                 ceiling(u.ux, u.uy));
 
-    schedule_goto(&dtmp, FALSE, TRUE, 0, (char *) 0,
+    schedule_goto(&dtmp, UTOTYPE_FALLING, (char *) 0,
                   !td ? msgbuf : (char *) 0);
 }
 
index de375a30894fb3d17e4c231553f04c286cf62d36..a0cb5bb68650779c0298ee6ce3fe03919d70ee47 100644 (file)
@@ -614,7 +614,7 @@ u_init()
     u.udg_cnt = 0;
     u.mh = u.mhmax = u.mtimedone = 0;
     u.uz.dnum = u.uz0.dnum = 0;
-    u.utotype = 0;
+    u.utotype = UTOTYPE_NONE;
 #endif /* 0 */
 
     u.uz.dlevel = 1;