diff -ru mux2.0/src/.depend mux2.0.pse/src/.depend --- mux2.0/src/.depend Mon Feb 28 19:41:23 2000 +++ mux2.0.pse/src/.depend Fri Mar 3 20:43:03 2000 @@ -63,6 +63,6 @@ sa-svdocache.o: sa-svdocache.cpp svdocache.cpp copyright.h autoconf.h config.h externs.h svdrand.h svdhash.h db.h udb.h mudconf.h htab.h alloc.h flags.h mail.h regexp.h dbconvert.o: dbconvert.cpp copyright.h autoconf.h config.h externs.h svdrand.h svdhash.h db.h udb.h mudconf.h htab.h alloc.h flags.h mail.h regexp.h vattr.h mkindx.o: mkindx.cpp copyright.h autoconf.h config.h help.h -unsplit.o: unsplit.cpp copyright.h -slave.o: slave.cpp autoconf.h copyright.h slave.h +unsplit.o: unsplit.cpp copyright.h /usr/include/bits/endian.h +slave.o: slave.cpp autoconf.h copyright.h slave.h /usr/include/arpa/inet.h portconc.o: portconc.cpp diff -ru mux2.0/src/Makefile.in mux2.0.pse/src/Makefile.in --- mux2.0/src/Makefile.in Fri Mar 3 13:25:02 2000 +++ mux2.0.pse/src/Makefile.in Fri Mar 3 19:49:28 2000 @@ -168,6 +168,14 @@ NET_S = bsd.cpp NET_O = bsd.o + +# Use the first line if you wish to enable the space engine. Use the second +# line if you don't. If you use the engine, make sure that the #define SPACE +# line is uncommented in config.h. + +SPACE_O = space/space.o +#SPACE_O = + # ================== END OF CONFIGURATION SECTION ================= # Auxiliary source files: only used by offline utilities. @@ -201,7 +209,7 @@ $(COM_SRC) $(SA_SRC) $(AUX_SRC) $(LIB_SRC) ALLINC = $(D_INC) $(UDB_INC) $(VER_INC) $(NET_INC) $(LIB_INC) $(COMPRESS_INC) SRC = $(D_SRC) $(COM_SRC) $(UDB_S) $(MALLOC_S) $(CONC_S) $(C_COMPRESS_S) -OBJ = $(D_OBJ) $(COM_OBJ) $(UDB_O) $(MALLOC_O) $(CONC_O) $(C_COMPRESS_O) +OBJ = $(D_OBJ) $(COM_OBJ) $(UDB_O) $(MALLOC_O) $(CONC_O) $(C_COMPRESS_O) $(SPACE_O) # Files in the standard distribution DIST = $(ALLSRC) $(ALLINC) $(AUXIL) @@ -273,6 +281,7 @@ depend: $(ALLSRC) unsplit for i in $(D_SRC) $(COM_SRC) $(SA_SRC) $(UDBA_SRC) $(UDBO_SRC) $(AUX_SRC) $(LIB_SRC) $(MALLOC_S) $(CONC_S) slave.cpp portconc.cpp ; do $(CPP) $(ALLCFLAGS) -M $$i; done | sed -e 's:/usr[^ ]* ::g' | ./unsplit > .depend~ mv .depend~ .depend + make -C space depend INCDIR="-I`pwd`" MUDCFLAGS="$(ALLCFLAGS) -DMUX2" USECPP="1" index: help.indx news.indx wizhelp.indx @@ -290,8 +299,15 @@ realclean: -rm -f *.o a.out core gmon.out mux.*log mux.*sum $(OUT) netmux~ + make -C space clean INCDIR="-I`pwd`" MUDCFLAGS="$(ALLCFLAGS) -DMUX2" USECPP="1" clean: -rm -f *.o a.out core gmon.out mux.*log mux.*sum slave conc $(OUT) + make -C space clean INCDIR="-I`pwd`" MUDCFLAGS="$(ALLCFLAGS) -DMUX2" USECPP="1" + +space/space.o: dummy + make -C space engine INCDIR="-I`pwd`" MUDCFLAGS="$(ALLCFLAGS) -DMUX2" USECPP="1" + +dummy: include .depend diff -ru mux2.0/src/attrs.h mux2.0.pse/src/attrs.h --- mux2.0/src/attrs.h Fri Mar 3 13:25:02 2000 +++ mux2.0.pse/src/attrs.h Fri Mar 3 19:51:08 2000 @@ -174,4 +174,10 @@ #define ATR_BUF_CHUNK 100 /* Min size to allocate for attribute buffer */ #define ATR_BUF_INCR 6 /* Max size of one attribute */ +/* Space engine attributes */ +#ifdef SPACE +#define A_USER_DBREF 250 /* Console user */ +#define A_DATA_DBREF 251 /* Space object */ +#endif + #endif diff -ru mux2.0/src/buildnum.data mux2.0.pse/src/buildnum.data --- mux2.0/src/buildnum.data Mon Nov 8 06:10:20 1999 +++ mux2.0.pse/src/buildnum.data Fri Mar 3 22:29:27 2000 @@ -1 +1 @@ -0 +14 diff -ru mux2.0/src/config.h mux2.0.pse/src/config.h --- mux2.0/src/config.h Fri Mar 3 13:25:02 2000 +++ mux2.0.pse/src/config.h Fri Mar 3 20:32:20 2000 @@ -30,6 +30,9 @@ #define StringCopy strcpy #define StringCopyTrunc strncpy +/* Portable Space Engine */ +#define SPACE + /* Do NOT define these. */ /* #define DSPACE */ /* Lauren's hardcoded DSPACE */ diff -ru mux2.0/src/db.cpp mux2.0.pse/src/db.cpp --- mux2.0/src/db.cpp Fri Mar 3 13:25:02 2000 +++ mux2.0.pse/src/db.cpp Fri Mar 3 22:05:50 2000 @@ -274,6 +274,10 @@ {"*Password", A_PASS, AF_DARK | AF_NOPROG | AF_NOCMD | AF_INTERNAL, NULL}, {"*Privileges", A_PRIVS, AF_DARK | AF_NOPROG | AF_NOCMD | AF_INTERNAL, NULL}, {"*Money", A_MONEY, AF_DARK | AF_NOPROG | AF_NOCMD | AF_INTERNAL, NULL}, +#ifdef SPACE + {"UserDBREF", A_USER_DBREF, AF_ODARK, NULL}, + {"DataDBREF", A_DATA_DBREF, AF_ODARK, NULL}, +#endif {NULL, 0, 0, NULL} }; diff -ru mux2.0/src/externs.h mux2.0.pse/src/externs.h --- mux2.0/src/externs.h Fri Mar 3 13:25:02 2000 +++ mux2.0.pse/src/externs.h Fri Mar 3 21:48:17 2000 @@ -357,6 +357,17 @@ extern int FDECL(check_zone_for_player, (dbref, dbref)); extern void FDECL(toast_player, (dbref)); +/* Portable Space Engine routines */ +#ifdef SPACE +extern "C" void NDECL(spaceInit); +extern "C" void NDECL(spaceUpdate); +extern "C" void FDECL(spaceVersion, (dbref)); +extern "C" dbref FDECL(getLocation, (dbref)); +extern "C" int FDECL(validObject, (dbref)); +extern "C" dbref FDECL(getDebugCharacter, ()); +extern "C" int FDECL(isGoodObject, (dbref)); +#endif + /* Command handler keys */ #define ATTRIB_ACCESS 1 /* Change access to attribute */ diff -ru mux2.0/src/flags.cpp mux2.0.pse/src/flags.cpp --- mux2.0/src/flags.cpp Fri Mar 3 13:25:03 2000 +++ mux2.0.pse/src/flags.cpp Fri Mar 3 22:04:28 2000 @@ -249,6 +249,9 @@ {"HAS_FORWARDLIST", HAS_FWDLIST, '&', FLAG_WORD2, CA_GOD|CA_NO_DECOMP, fh_god}, {"HAS_LISTEN", HAS_LISTEN, '@', FLAG_WORD2, CA_GOD|CA_NO_DECOMP, fh_god}, {"HTML", HTML, '(', FLAG_WORD2, 0, fh_any}, +#ifdef SPACE + {"SPACE", SPACECOMPONENT, 'y', FLAG_WORD3, CA_WIZARD, fh_wiz}, +#endif #ifdef WOD_REALMS {"OBF", OBF, 'o', FLAG_WORD3, CA_ADMIN|CA_STAFF, fh_wiz}, {"HSS", HSS, 'k', FLAG_WORD3, CA_ADMIN|CA_STAFF, fh_wiz}, diff -ru mux2.0/src/flags.h mux2.0.pse/src/flags.h --- mux2.0/src/flags.h Fri Mar 3 13:25:02 2000 +++ mux2.0.pse/src/flags.h Fri Mar 3 19:56:49 2000 @@ -258,6 +258,12 @@ #define MUD_ROBOT 0x00004000 #define MUD_CHOWN_OK 0x00008000 +/* Space Flag */ + +#ifdef SPACE +#define SPACECOMPONENT 0x00000001 +#endif + /* --------------------------------------------------------------------------- * FLAGENT: Information about object flags. */ @@ -448,6 +454,11 @@ (Typeof(x) == TYPE_PLAYER)) #define Slave(x) ((Flags2(Owner(x)) & SLAVE) != 0) #define Hidden(x) ((Flags(x) & DARK) != 0) + +/* Portable Space Engine Flag */ +#ifdef SPACE +#define Space(x) (((Flags3(x) & SPACECOMPONENT) != 0) || God(x)) +#endif #define H_Startup(x) ((Flags(x) & HAS_STARTUP) != 0) #define H_Fwdlist(x) ((Flags2(x) & HAS_FWDLIST) != 0) diff -ru mux2.0/src/functions.cpp mux2.0.pse/src/functions.cpp --- mux2.0/src/functions.cpp Fri Mar 3 13:25:03 2000 +++ mux2.0.pse/src/functions.cpp Fri Mar 3 22:23:44 2000 @@ -124,6 +124,10 @@ XFUNCTION(fun_comtitle); // in comsys.cpp XFUNCTION(fun_comalias); // in comsys.cpp +#ifdef SPACE +XFUNCTION(fun_spacecall); +#endif + /* * Trim off leading and trailing spaces if the separator char is a space */ @@ -5381,6 +5385,9 @@ {"ZFUN", fun_zfun, 0, FN_VARARGS, CA_PUBLIC}, {"ZONE", fun_zone, 1, 0, CA_PUBLIC}, {"ZWHO", fun_zwho, 1, 0, CA_PUBLIC}, +#ifdef SPACE + {"SC", fun_spacecall, 0, FN_VARARGS, CA_PUBLIC}, +#endif {NULL, NULL, 0, 0, 0} }; diff -ru mux2.0/src/game.cpp mux2.0.pse/src/game.cpp --- mux2.0/src/game.cpp Fri Mar 3 13:25:03 2000 +++ mux2.0.pse/src/game.cpp Fri Mar 3 22:08:10 2000 @@ -1908,6 +1908,11 @@ } process_preload(); +#ifdef SPACE + /* Initialise the Portable Space Engine */ + spaceInit(); +#endif + #ifndef WIN32 load_restart_db(); #endif // WIN32 diff -ru mux2.0/src/timer.cpp mux2.0.pse/src/timer.cpp --- mux2.0/src/timer.cpp Fri Mar 3 13:25:03 2000 +++ mux2.0.pse/src/timer.cpp Fri Mar 3 22:15:46 2000 @@ -169,6 +169,25 @@ } #endif +#ifdef SPACE +void dispatch_SpaceTick(void *pUnused, int iUnused) +{ + char *cmdsave = mudstate.debug_cmd; + mudstate.debug_cmd = (char *)"< spacetick >"; + spaceUpdate(); + + // Schedule ourselves again. + // + CLinearTimeAbsolute ltaNextTime; + ltaNextTime.GetUTC(); + CLinearTimeDelta ltd; + ltd.SetSeconds(1); + ltaNextTime += ltd; + scheduler.DeferTask(ltaNextTime, PRIORITY_SYSTEM, dispatch_SpaceTick, 0, 0); + mudstate.debug_cmd = cmdsave; +} +#endif + #if 0 void dispatch_CleanChannels(void *pUnused, int iUnused) { @@ -224,6 +243,13 @@ // ltd.SetSeconds(30); scheduler.DeferTask(ltaNow+ltd, PRIORITY_SYSTEM, dispatch_CacheTick, 0, 0); +#endif + +#ifdef SPACE + // Setup re-occuring space_tick task. + // + ltd.SetSeconds(1); + scheduler.DeferTask(ltaNow+ltd, PRIORITY_SYSTEM, dispatch_SpaceTick, 0, 0); #endif #if 0 diff -ru mux2.0/src/version.cpp mux2.0.pse/src/version.cpp --- mux2.0/src/version.cpp Fri Mar 3 13:25:03 2000 +++ mux2.0.pse/src/version.cpp Fri Mar 3 22:16:19 2000 @@ -23,6 +23,9 @@ buff = alloc_mbuf("do_version"); sprintf(buff, "Build date: %s", MUX_BUILD_DATE); notify(player, buff); +#ifdef SPACE + spaceVersion(player); +#endif free_mbuf(buff); }