main() reorganization (trunk only)

Move some internals-related code out of port-specific main so that
it isn't duplicated a bunch of times.  One minor side-effect of this
change is that if you auto-pickup something at the very start of a game,
it will happen after any full moon/new moon/Friday 13th message rather
than before.  There's a second change for some:  the shared main() used
by several of the micro ports had a small difference in game play--if you
saved a game while on an engraving, it would automatically be read when
you resume--that will now occur for everybody [Elbereth weenies rejoice!].
pcmain() was also calling update_inventory() at start of play.  That's
unnecessary for new games, where inventory initialization triggers a call
to it for each item added to your pack; but I wasn't sure about restored
games, so everybody gets it there now.

     The Mac and BeOS ports evidently haven't been touched it some time;
they still referenced flags.move which got replaced by context.move quite
a while back.  The Windows GUI code has a declaration for mswin_moveloop()
which appears to be non-existant, but I left it alone.  I assume that the
Qt interface uses the existing main() routines; at least I couldn't find
any start of game code specific to it.  vmsmain's revised main() is the
only one which has been tested.
This commit is contained in:
nethack.rankin
2006-04-02 07:35:30 +00:00
parent 8ed2748d52
commit 2c0a072ef1
9 changed files with 94 additions and 108 deletions

View File

@@ -1,4 +1,4 @@
/* SCCS Id: @(#)winhack.c 3.5 2005/01/23 */
/* SCCS Id: @(#)winhack.c 3.5 2006/04/01 */
/* Copyright (C) 2001 by Alex Kompel */
/* NetHack may be freely redistributed. See license for details. */
@@ -62,7 +62,7 @@ NHWinApp _nethack_app;
#endif
// Foward declarations of functions included in this code module:
extern void FDECL(pcmain, (int,char **));
extern boolean FDECL(pcmain, (int,char **));
static void __cdecl mswin_moveloop(void *);
#define MAX_CMDLINE_PARAM 255
@@ -80,6 +80,7 @@ int APIENTRY WinMain(HINSTANCE hInstance,
TCHAR wbuf[BUFSZ];
char buf[BUFSZ];
DWORD major, minor;
boolean resuming;
/* ensure that we don't access violate on a panic() */
@@ -174,9 +175,9 @@ int APIENTRY WinMain(HINSTANCE hInstance,
}
free(savefile);
}
pcmain(argc,argv);
resuming = pcmain(argc,argv);
moveloop();
moveloop(resuming);
return 0;
}