]> granicus.if.org Git - nethack/commitdiff
Initial check in of icontext.
authorBart House <bart@barthouse.com>
Fri, 23 Nov 2018 04:47:22 +0000 (20:47 -0800)
committerBart House <bart@barthouse.com>
Fri, 23 Nov 2018 23:22:51 +0000 (15:22 -0800)
include/decl.h
src/decl.c
src/pickup.c
sys/share/pcmain.c
sys/winnt/stubs.c
win/win32/winhack.c

index 5e211f0533625678f0c269b15447d020af0faefe..2cc7f965cc0d121540707f366c96f9543dc08778 100644 (file)
@@ -439,8 +439,20 @@ struct early_opt {
     boolean valallowed;
 };
 
-/* encumbrance */
-E int oldcap;
+/* instance_context holds per game instance data that does not need to be
+ * persisted upon game exit.  This game instance data is one of the first
+ * things initialized during the initialization of the game engine.
+ * It is initialized with icontext_initial_state found in decl.c */
+
+#define PLAYAGAIN
+
+struct instance_context {
+    int oldcap; /* encumberance - pickup.c */
+};
+
+E struct instance_context icontext;
+
+E void icontext_init();
 
 
 #undef E
index 10f67f7dee2f5f84310d2bcb3539a460077cfaed..edfeb3a60441c2d5aa449b029926005306487b99 100644 (file)
@@ -215,9 +215,6 @@ NEARDATA struct monst *migrating_mons = (struct monst *) 0;
 
 NEARDATA struct mvitals mvitals[NUMMONS];
 
-/* originally from pickup.c */
-int oldcap = 0; /* encumbrance */
-
 NEARDATA struct c_color_names c_color_names = {
     "black",  "amber", "golden", "light blue", "red",   "green",
     "silver", "blue",  "purple", "white",      "orange"
@@ -529,8 +526,6 @@ decl_early_init()
     ZERO(ubirthday);
     ZERO(urealtime);
 
-    ZERO(oldcap);
-
     ZEROARRAY(lastseentyp);
 
     ZEROPTR(invent);
@@ -612,4 +607,18 @@ decl_early_init()
 }
 #endif
 
+const struct instance_context icontext_initial_state = {
+    0, /* oldcap - last encumberance in pickup.c */
+};
+
+struct instance_context icontext;
+
+void 
+icontext_init() 
+{
+    icontext = icontext_initial_state;
+
+    decl_early_init();
+};
+
 /*decl.c*/
index b32640dbd8c5910b6cee19f6849f9ddecd035a79..83d5eb2735abc742a63d0ad037d288526fc559ec 100644 (file)
@@ -1558,7 +1558,7 @@ encumber_msg()
 {
     int newcap = near_capacity();
 
-    if (oldcap < newcap) {
+    if (icontext.oldcap < newcap) {
         switch (newcap) {
         case 1:
             Your("movements are slowed slightly because of your load.");
@@ -1576,7 +1576,7 @@ encumber_msg()
             break;
         }
         context.botl = 1;
-    } else if (oldcap > newcap) {
+    } else if (icontext.oldcap > newcap) {
         switch (newcap) {
         case 0:
             Your("movements are now unencumbered.");
@@ -1595,7 +1595,7 @@ encumber_msg()
         context.botl = 1;
     }
 
-    oldcap = newcap;
+    icontext.oldcap = newcap;
     return newcap;
 }
 
index 9ffbeca51c00f65939a3edd5130f646126e4e60a..932ec971e5aa7b48cb35e4452f904cbcebaebaf9 100644 (file)
@@ -97,9 +97,7 @@ char *argv[];
 
     nethack_enter(argc, argv);
 
-#ifdef PLAYAGAIN
-    decl_early_init();
-#endif
+    icontext_init();
     sys_early_init();
 
 #if defined(WIN32) && defined(TTY_GRAPHICS)
index ff3cf591959eed4dbdc7fe8589bffecf89ceb931..9e16c6dce274cfdf2d67d248584ad83d379c3e3f 100644 (file)
@@ -37,9 +37,7 @@ char *argv[];
 {
     boolean resuming;
 
-#ifdef PLAYAGAIN
-    decl_early_init();
-#endif
+    icontext_init();
     sys_early_init();
     Strcpy(default_window_sys, "tty");
     resuming = pcmain(argc, argv);
index 6db66261e260eecca6e77d791cbd0d54de2575b2..ef48d6b639a4df1e96957e7b9786a316b1d48ed8 100644 (file)
@@ -97,9 +97,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine,
 
     win10_init();
 
-#ifdef PLAYAGAIN
-    decl_early_init();
-#endif
+    icontext_init();
     sys_early_init();
 
     /* init applicatio structure */