Source code "cleanup," herein referred to as "rape"

git-svn-id: https://svn.eduke32.com/eduke32@1625 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2010-05-02 23:27:30 +00:00
parent 4ba108994c
commit 45d93544a6
72 changed files with 6489 additions and 5916 deletions

View file

@ -3,8 +3,7 @@
SOURCEFILES=GNU.TXT buildlic.txt \
Makefile Makefile.deps Makefile.msvc Makefile.watcom MakeDistributions \
makemsc.bat makew.bat ChangeLog.html duke3d.def.sample \
SEHELP.HLP STHELP.HLP ChangeLog enhance.con.sample names.h
duke3d.def.sample SEHELP.HLP STHELP.HLP enhance.con.sample names.h
BINARYFILES=mapster32.exe eduke32.exe GNU.TXT buildlic.txt \
ChangeLog.html setup.exe duke3d.def.sample SEHELP.HLP STHELP.HLP \

View file

@ -80,6 +80,9 @@ ifeq (4,$(GCC_MAJOR))
# debug += -finline-small-functions -fpredictive-commoning
endif
endif
ifeq (5,$(GCC_MINOR))
debug += -flto
endif
endif
endif
@ -89,7 +92,7 @@ OURCFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \
-fjump-tables -fno-stack-protector
# -march=pentium3 -mtune=generic -mmmx -m3dnow -msse -mfpmath=sse
OURCXXFLAGS=-fno-exceptions -fno-rtti
LIBS=-lm
LIBS=-lm -ldl -pthread
NASMFLAGS = -s
EXESUFFIX=

View file

@ -24,14 +24,12 @@ flags_cl= /Od /Zi
flags_link=/DEBUG
!else
# release options
flags_cl=/Ox /GL /arch:SSE
flags_cl=/O2 /GL /arch:SSE /MP
flags_link=/RELEASE /LTCG
!endif
DXROOT="U:\SDKs\Microsoft DirectX SDK (April 2007)
MSSDKROOT="N:\Program Files\Microsoft Visual Studio 9.0\VC
PLATFORMSDK="N:\Program Files\Microsoft Visual Studio 9.0\VC\PlatformSDK
DXROOT="C:\Program Files\Microsoft DirectX SDK (February 2010)"
ENGINEOPTS=/DSUPERBUILD /DPOLYMOST /DUSE_OPENGL /DPOLYMER
@ -40,10 +38,10 @@ AS=ml
LINK=link /nologo /opt:ref
MT=mt
CFLAGS= /MT /J /nologo $(flags_cl) \
/I$(INC) /I$(EINC)\msvc /I$(EINC)\ /I$(SRC)\jmact /I$(JAUDIOLIBDIR)\include /I$(ENETDIR)\include /I$(MSSDKROOT)\include" /I$(PLATFORMSDK)\include" \
/I$(INC) /I$(EINC)\msvc /I$(EINC)\ /I$(SRC)\jmact /I$(JAUDIOLIBDIR)\include /I$(ENETDIR)\include \
/D "_CRT_SECURE_NO_DEPRECATE" /W2 $(ENGINEOPTS) \
/I$(DXROOT)\include" /DRENDERTYPEWIN=1
LIBS=user32.lib gdi32.lib shell32.lib dxguid.lib winmm.lib ws2_32.lib comctl32.lib \
/I$(DXROOT)\include /DRENDERTYPEWIN=1
LIBS=user32.lib gdi32.lib shell32.lib winmm.lib ws2_32.lib dxguid.lib comctl32.lib \
/NODEFAULTLIB:glu32.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:msvcrtd.lib
LIBS=vorbisfile_static.lib vorbis_static.lib ogg_static.lib dsound.lib advapi32.lib $(LIBS)
@ -128,18 +126,18 @@ EDITOROBJS=$(OBJ)\astub.$o \
$(CC) /c $(CFLAGS) /Fo$@ $<
{$(SRC)\misc}.rc{$(OBJ)\}.res:
$(RC) /i$(EINC)\ /i$(SRC)\ /I$(MSSDKROOT)\include" /I$(PLATFORMSDK)\include" /DPOLYMER /fo$@ /r $<
$(RC) /i$(EINC)\ /i$(SRC)\ /DPOLYMER /fo$@ /r $<
# TARGETS
all: eduke32$(EXESUFFIX) mapster32$(EXESUFFIX) # duke3d_w32$(EXESUFFIX);
eduke32$(EXESUFFIX): $(GAMEOBJS) $(EOBJ)\$(ENGINELIB) $(JAUDIOLIBDIR)\$(JAUDIOLIB) $(ENETDIR)\$(ENETLIB)
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS)
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib\x86 $(flags_link) /MAP $** $(LIBS)
$(MT) -manifest $(RSRC)\manifest.game.xml -hashupdate -outputresource:$@ -out:$@.manifest
mapster32$(EXESUFFIX): $(EDITOROBJS) $(EOBJ)\$(ENGINELIB) $(EOBJ)\$(EDITORLIB) $(JAUDIOLIBDIR)\$(JAUDIOLIB)
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS)
$(LINK) /OUT:$@ /SUBSYSTEM:WINDOWS /LIBPATH:$(DXROOT)\lib\x86 $(flags_link) /MAP $** $(LIBS)
$(MT) -manifest $(RSRC)\manifest.build.xml -hashupdate -outputresource:$@ -out:$@.manifest
!include Makefile.deps

View file

@ -102,6 +102,9 @@ ifeq (4,$(GCC_MAJOR))
# debug += -finline-small-functions -fpredictive-commoning
endif
endif
ifeq (5,$(GCC_MINOR))
debug += -flto
endif
endif
endif
@ -111,7 +114,7 @@ OURCFLAGS=$(debug) -W -Wall -Wimplicit -Werror-implicit-function-declaration \
-fjump-tables -fno-stack-protector
# -march=pentium3 -mtune=generic -mmmx -m3dnow -msse -mfpmath=sse
OURCXXFLAGS=-fno-exceptions -fno-rtti
LIBS=-pthread
LIBS=-pthread -ldl
ASFLAGS=-s #-g
EXESUFFIX=
@ -140,7 +143,8 @@ ENGINEOBJS+= \
$(OBJ)/osd.$o \
$(OBJ)/pragmas.$o \
$(OBJ)/scriptfile.$o \
$(OBJ)/nedmalloc.$o
$(OBJ)/nedmalloc.$o \
$(OBJ)/mutex.$o
ifeq (1,$(USE_OPENGL))
ENGINEOBJS+= $(OBJ)/mdsprite.$o
@ -202,7 +206,7 @@ ifeq ($(RENDERTYPE),SDL)
endif
endif
ifeq ($(RENDERTYPE),WIN)
ENGINEOBJS+= $(OBJ)/winlayer.$o
ENGINEOBJS+= $(OBJ)/winlayer.$o $(OBJ)/rawinput.$o
EDITOROBJS+= $(OBJ)/startwin.editor.$o
endif

View file

@ -29,6 +29,8 @@ $(OBJ)/gtkbits.$o: $(SRC)/gtkbits.c $(INC)/baselayer.h $(INC)/build.h $(INC)/dyn
$(OBJ)/dynamicgtk.$o: $(SRC)/dynamicgtk.c $(INC)/dynamicgtk.h
$(OBJ)/polymer.$o: $(SRC)/polymer.c $(INC)/polymer.h $(INC)/compat.h $(INC)/build.h $(INC)/glbuild.h $(INC)/osd.h $(INC)/pragmas.h $(INC)/mdsprite.h $(INC)/polymost.h
$(OBJ)/nedmalloc.$o: $(SRC)/nedmalloc.c $(INC)/nedmalloc.h $(INC)/malloc.c.h
$(OBJ)/mutex.$o: $(SRC)/mutex.c $(INC)/mutex.h
$(OBJ)/rawinput.$o: $(SRC)/rawinput.c $(INC)/rawinput.h
$(OBJ)/buildres.$(res): $(SRC)/misc/buildres.rc $(INC)/startwin.editor.h
$(OBJ)/startwin.editor.$o: $(SRC)/startwin.editor.c $(INC)/build.h $(INC)/editor.h $(INC)/winlayer.h $(INC)/compat.h $(INC)/startwin.editor.h

View file

@ -19,9 +19,6 @@ asm=masm
ENGINELIB=engine.lib
EDITORLIB=build.lib
DXROOT="U:\SDKs\Microsoft DirectX SDK (April 2007)
MSSDKROOT="N:\Program Files\Microsoft Visual Studio 9.0\VC
PLATFORMSDK="N:\Program Files\Microsoft Visual Studio 9.0\VC\PlatformSDK
# ENETROOT=$(SRC)\enet
# /D these to enable certain features of the port's compile process
@ -37,7 +34,7 @@ flags_link=/DEBUG
flags_lib=
!else
# release options
flags_cl=/Ox /GL /arch:SSE
flags_cl=/O2 /GL /arch:SSE /MP
flags_link=/RELEASE /LTCG
flags_lib=/LTCG
!endif
@ -46,7 +43,7 @@ CC=cl
AS=ml
RC=rc
LINK=link /opt:ref /nologo
CFLAGS=$(CFLAGS) /nologo /MT /J $(flags_cl) $(TARGETOPTS) /I$(INC) /I$(MSSDKROOT)\include" /I$(PLATFORMSDK)\include" /I$(DXROOT)\include" # /I$(ENETROOT)\include"
CFLAGS=$(CFLAGS) /nologo /MT /J $(flags_cl) $(TARGETOPTS) /I$(INC) # /I$(ENETROOT)\include"
ASFLAGS=/nologo /coff /c
EXESUFFIX=.exe
!ifdef DEBUG
@ -80,14 +77,16 @@ ENGINEOBJS= \
$(OBJ)\scriptfile.$o \
$(OBJ)\winlayer.$o \
$(OBJ)\polymer.$o \
$(OBJ)\nedmalloc.$o
$(OBJ)\nedmalloc.$o \
$(OBJ)\mutex.$o \
$(OBJ)\rawinput.$o
EDITOROBJS=$(OBJ)\build.$o \
$(OBJ)\startwin.editor.$o \
$(OBJ)\config.$o
RENDERTYPE=WIN
LIBS=$(LIBS) user32.lib gdi32.lib shell32.lib dxguid.lib wsock32.lib comctl32.lib
LIBS=$(LIBS) user32.lib gdi32.lib shell32.lib wsock32.lib comctl32.lib dxguid.lib
CFLAGS=$(CFLAGS) /DRENDERTYPE$(RENDERTYPE)=1 /D "_CRT_SECURE_NO_DEPRECATE" /W2
# RULES
@ -127,23 +126,23 @@ $(OBJ)\$(EDITORLIB): $(EDITOROBJS)
# the tools
kextract$(EXESUFFIX): $(OBJ)\kextract.$o $(OBJ)\compat.$o $(OBJ)\nedmalloc.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS)
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE $(flags_link) /MAP $** $(LIBS)
$(MT) -manifest $@.manifest -outputresource:$@
kgroup$(EXESUFFIX): $(OBJ)\kgroup.$o $(OBJ)\compat.$o $(OBJ)\nedmalloc.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS)
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE $(flags_link) /MAP $** $(LIBS)
$(MT) -manifest $@.manifest -outputresource:$@
transpal$(EXESUFFIX): $(OBJ)\transpal.$o $(OBJ)\pragmas.$o $(OBJ)\compat.$o $(OBJ)\nedmalloc.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS)
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE $(flags_link) /MAP $** $(LIBS)
$(MT) -manifest $@.manifest -outputresource:$@
wad2map$(EXESUFFIX): $(OBJ)\wad2map.$o $(OBJ)\pragmas.$o $(OBJ)\compat.$o $(OBJ)\nedmalloc.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS)
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE $(flags_link) /MAP $** $(LIBS)
$(MT) -manifest $@.manifest -outputresource:$@
wad2art$(EXESUFFIX): $(OBJ)\wad2art.$o $(OBJ)\pragmas.$o $(OBJ)\compat.$o $(OBJ)\nedmalloc.$o
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE /LIBPATH:$(DXROOT)\lib\x86" /LIBPATH:$(PLATFORMSDK)\lib" /LIBPATH:$(MSSDKROOT)\lib" $(flags_link) /MAP $** $(LIBS)
$(LINK) /OUT:$@ /SUBSYSTEM:CONSOLE $(flags_link) /MAP $** $(LIBS)
$(MT) -manifest $@.manifest -outputresource:$@
# DEPENDENCIES

View file

@ -38,7 +38,7 @@ extern void (*baselayer_onvideomodechange)(int32_t);
#ifdef USE_OPENGL
extern int32_t osdcmd_glinfo(const osdfuncparm_t *parm);
struct glinfo {
struct glinfo_t {
const char *vendor;
const char *renderer;
const char *version;
@ -66,7 +66,7 @@ struct glinfo {
char dumped;
};
extern struct glinfo glinfo;
extern struct glinfo_t glinfo;
extern void setvsync(int32_t sync);
#endif
@ -113,7 +113,8 @@ const char *getjoyname(int32_t what, int32_t num); // what: 0=axis, 1=button, 2=
char *strtolower(char *str, int32_t len);
char bgetchar(void);
int32_t bkbhit(void);
#define bkbhit() (keyasciififoplc != keyasciififoend)
void bflushchars(void);
int32_t initmouse(void);

View file

@ -158,8 +158,7 @@ typedef struct
typedef struct {
uint32_t mdanimtims;
int16_t mdanimcur;
int16_t angoff;
int16_t pitch, roll;
int16_t angoff, pitch, roll;
int32_t xoff, yoff, zoff;
uint8_t flags;
uint8_t xpanning, ypanning;

View file

@ -4,6 +4,7 @@
#define __cache1d_h__
#include "compat.h"
#include "mutex.h"
#ifdef __cplusplus
extern "C" {
@ -19,6 +20,7 @@ void allocache(intptr_t *newhandle, int32_t newbytes, char *newlockptr);
void suckcache(intptr_t *suckptr);
void agecache(void);
mutex_t cachemutex;
extern int32_t pathsearchmode; // 0 = gamefs mode (default), 1 = localfs mode (editor's mode)
int32_t addsearchpath(const char *p);
int32_t findfrompath(const char *fn, char **where);

View file

@ -1,298 +1,6 @@
#ifndef __dxdidf_h__
#define __dxdidf_h__
// Keyboard
static DIOBJECTDATAFORMAT c_dfDIKeyboard_odf[] = {
{ &GUID_Key, 0, 0x8000000C, 0x00000000 },
{ &GUID_Key, 1, 0x8000010C, 0x00000000 },
{ &GUID_Key, 2, 0x8000020C, 0x00000000 },
{ &GUID_Key, 3, 0x8000030C, 0x00000000 },
{ &GUID_Key, 4, 0x8000040C, 0x00000000 },
{ &GUID_Key, 5, 0x8000050C, 0x00000000 },
{ &GUID_Key, 6, 0x8000060C, 0x00000000 },
{ &GUID_Key, 7, 0x8000070C, 0x00000000 },
{ &GUID_Key, 8, 0x8000080C, 0x00000000 },
{ &GUID_Key, 9, 0x8000090C, 0x00000000 },
{ &GUID_Key, 10, 0x80000A0C, 0x00000000 },
{ &GUID_Key, 11, 0x80000B0C, 0x00000000 },
{ &GUID_Key, 12, 0x80000C0C, 0x00000000 },
{ &GUID_Key, 13, 0x80000D0C, 0x00000000 },
{ &GUID_Key, 14, 0x80000E0C, 0x00000000 },
{ &GUID_Key, 15, 0x80000F0C, 0x00000000 },
{ &GUID_Key, 16, 0x8000100C, 0x00000000 },
{ &GUID_Key, 17, 0x8000110C, 0x00000000 },
{ &GUID_Key, 18, 0x8000120C, 0x00000000 },
{ &GUID_Key, 19, 0x8000130C, 0x00000000 },
{ &GUID_Key, 20, 0x8000140C, 0x00000000 },
{ &GUID_Key, 21, 0x8000150C, 0x00000000 },
{ &GUID_Key, 22, 0x8000160C, 0x00000000 },
{ &GUID_Key, 23, 0x8000170C, 0x00000000 },
{ &GUID_Key, 24, 0x8000180C, 0x00000000 },
{ &GUID_Key, 25, 0x8000190C, 0x00000000 },
{ &GUID_Key, 26, 0x80001A0C, 0x00000000 },
{ &GUID_Key, 27, 0x80001B0C, 0x00000000 },
{ &GUID_Key, 28, 0x80001C0C, 0x00000000 },
{ &GUID_Key, 29, 0x80001D0C, 0x00000000 },
{ &GUID_Key, 30, 0x80001E0C, 0x00000000 },
{ &GUID_Key, 31, 0x80001F0C, 0x00000000 },
{ &GUID_Key, 32, 0x8000200C, 0x00000000 },
{ &GUID_Key, 33, 0x8000210C, 0x00000000 },
{ &GUID_Key, 34, 0x8000220C, 0x00000000 },
{ &GUID_Key, 35, 0x8000230C, 0x00000000 },
{ &GUID_Key, 36, 0x8000240C, 0x00000000 },
{ &GUID_Key, 37, 0x8000250C, 0x00000000 },
{ &GUID_Key, 38, 0x8000260C, 0x00000000 },
{ &GUID_Key, 39, 0x8000270C, 0x00000000 },
{ &GUID_Key, 40, 0x8000280C, 0x00000000 },
{ &GUID_Key, 41, 0x8000290C, 0x00000000 },
{ &GUID_Key, 42, 0x80002A0C, 0x00000000 },
{ &GUID_Key, 43, 0x80002B0C, 0x00000000 },
{ &GUID_Key, 44, 0x80002C0C, 0x00000000 },
{ &GUID_Key, 45, 0x80002D0C, 0x00000000 },
{ &GUID_Key, 46, 0x80002E0C, 0x00000000 },
{ &GUID_Key, 47, 0x80002F0C, 0x00000000 },
{ &GUID_Key, 48, 0x8000300C, 0x00000000 },
{ &GUID_Key, 49, 0x8000310C, 0x00000000 },
{ &GUID_Key, 50, 0x8000320C, 0x00000000 },
{ &GUID_Key, 51, 0x8000330C, 0x00000000 },
{ &GUID_Key, 52, 0x8000340C, 0x00000000 },
{ &GUID_Key, 53, 0x8000350C, 0x00000000 },
{ &GUID_Key, 54, 0x8000360C, 0x00000000 },
{ &GUID_Key, 55, 0x8000370C, 0x00000000 },
{ &GUID_Key, 56, 0x8000380C, 0x00000000 },
{ &GUID_Key, 57, 0x8000390C, 0x00000000 },
{ &GUID_Key, 58, 0x80003A0C, 0x00000000 },
{ &GUID_Key, 59, 0x80003B0C, 0x00000000 },
{ &GUID_Key, 60, 0x80003C0C, 0x00000000 },
{ &GUID_Key, 61, 0x80003D0C, 0x00000000 },
{ &GUID_Key, 62, 0x80003E0C, 0x00000000 },
{ &GUID_Key, 63, 0x80003F0C, 0x00000000 },
{ &GUID_Key, 64, 0x8000400C, 0x00000000 },
{ &GUID_Key, 65, 0x8000410C, 0x00000000 },
{ &GUID_Key, 66, 0x8000420C, 0x00000000 },
{ &GUID_Key, 67, 0x8000430C, 0x00000000 },
{ &GUID_Key, 68, 0x8000440C, 0x00000000 },
{ &GUID_Key, 69, 0x8000450C, 0x00000000 },
{ &GUID_Key, 70, 0x8000460C, 0x00000000 },
{ &GUID_Key, 71, 0x8000470C, 0x00000000 },
{ &GUID_Key, 72, 0x8000480C, 0x00000000 },
{ &GUID_Key, 73, 0x8000490C, 0x00000000 },
{ &GUID_Key, 74, 0x80004A0C, 0x00000000 },
{ &GUID_Key, 75, 0x80004B0C, 0x00000000 },
{ &GUID_Key, 76, 0x80004C0C, 0x00000000 },
{ &GUID_Key, 77, 0x80004D0C, 0x00000000 },
{ &GUID_Key, 78, 0x80004E0C, 0x00000000 },
{ &GUID_Key, 79, 0x80004F0C, 0x00000000 },
{ &GUID_Key, 80, 0x8000500C, 0x00000000 },
{ &GUID_Key, 81, 0x8000510C, 0x00000000 },
{ &GUID_Key, 82, 0x8000520C, 0x00000000 },
{ &GUID_Key, 83, 0x8000530C, 0x00000000 },
{ &GUID_Key, 84, 0x8000540C, 0x00000000 },
{ &GUID_Key, 85, 0x8000550C, 0x00000000 },
{ &GUID_Key, 86, 0x8000560C, 0x00000000 },
{ &GUID_Key, 87, 0x8000570C, 0x00000000 },
{ &GUID_Key, 88, 0x8000580C, 0x00000000 },
{ &GUID_Key, 89, 0x8000590C, 0x00000000 },
{ &GUID_Key, 90, 0x80005A0C, 0x00000000 },
{ &GUID_Key, 91, 0x80005B0C, 0x00000000 },
{ &GUID_Key, 92, 0x80005C0C, 0x00000000 },
{ &GUID_Key, 93, 0x80005D0C, 0x00000000 },
{ &GUID_Key, 94, 0x80005E0C, 0x00000000 },
{ &GUID_Key, 95, 0x80005F0C, 0x00000000 },
{ &GUID_Key, 96, 0x8000600C, 0x00000000 },
{ &GUID_Key, 97, 0x8000610C, 0x00000000 },
{ &GUID_Key, 98, 0x8000620C, 0x00000000 },
{ &GUID_Key, 99, 0x8000630C, 0x00000000 },
{ &GUID_Key, 100, 0x8000640C, 0x00000000 },
{ &GUID_Key, 101, 0x8000650C, 0x00000000 },
{ &GUID_Key, 102, 0x8000660C, 0x00000000 },
{ &GUID_Key, 103, 0x8000670C, 0x00000000 },
{ &GUID_Key, 104, 0x8000680C, 0x00000000 },
{ &GUID_Key, 105, 0x8000690C, 0x00000000 },
{ &GUID_Key, 106, 0x80006A0C, 0x00000000 },
{ &GUID_Key, 107, 0x80006B0C, 0x00000000 },
{ &GUID_Key, 108, 0x80006C0C, 0x00000000 },
{ &GUID_Key, 109, 0x80006D0C, 0x00000000 },
{ &GUID_Key, 110, 0x80006E0C, 0x00000000 },
{ &GUID_Key, 111, 0x80006F0C, 0x00000000 },
{ &GUID_Key, 112, 0x8000700C, 0x00000000 },
{ &GUID_Key, 113, 0x8000710C, 0x00000000 },
{ &GUID_Key, 114, 0x8000720C, 0x00000000 },
{ &GUID_Key, 115, 0x8000730C, 0x00000000 },
{ &GUID_Key, 116, 0x8000740C, 0x00000000 },
{ &GUID_Key, 117, 0x8000750C, 0x00000000 },
{ &GUID_Key, 118, 0x8000760C, 0x00000000 },
{ &GUID_Key, 119, 0x8000770C, 0x00000000 },
{ &GUID_Key, 120, 0x8000780C, 0x00000000 },
{ &GUID_Key, 121, 0x8000790C, 0x00000000 },
{ &GUID_Key, 122, 0x80007A0C, 0x00000000 },
{ &GUID_Key, 123, 0x80007B0C, 0x00000000 },
{ &GUID_Key, 124, 0x80007C0C, 0x00000000 },
{ &GUID_Key, 125, 0x80007D0C, 0x00000000 },
{ &GUID_Key, 126, 0x80007E0C, 0x00000000 },
{ &GUID_Key, 127, 0x80007F0C, 0x00000000 },
{ &GUID_Key, 128, 0x8000800C, 0x00000000 },
{ &GUID_Key, 129, 0x8000810C, 0x00000000 },
{ &GUID_Key, 130, 0x8000820C, 0x00000000 },
{ &GUID_Key, 131, 0x8000830C, 0x00000000 },
{ &GUID_Key, 132, 0x8000840C, 0x00000000 },
{ &GUID_Key, 133, 0x8000850C, 0x00000000 },
{ &GUID_Key, 134, 0x8000860C, 0x00000000 },
{ &GUID_Key, 135, 0x8000870C, 0x00000000 },
{ &GUID_Key, 136, 0x8000880C, 0x00000000 },
{ &GUID_Key, 137, 0x8000890C, 0x00000000 },
{ &GUID_Key, 138, 0x80008A0C, 0x00000000 },
{ &GUID_Key, 139, 0x80008B0C, 0x00000000 },
{ &GUID_Key, 140, 0x80008C0C, 0x00000000 },
{ &GUID_Key, 141, 0x80008D0C, 0x00000000 },
{ &GUID_Key, 142, 0x80008E0C, 0x00000000 },
{ &GUID_Key, 143, 0x80008F0C, 0x00000000 },
{ &GUID_Key, 144, 0x8000900C, 0x00000000 },
{ &GUID_Key, 145, 0x8000910C, 0x00000000 },
{ &GUID_Key, 146, 0x8000920C, 0x00000000 },
{ &GUID_Key, 147, 0x8000930C, 0x00000000 },
{ &GUID_Key, 148, 0x8000940C, 0x00000000 },
{ &GUID_Key, 149, 0x8000950C, 0x00000000 },
{ &GUID_Key, 150, 0x8000960C, 0x00000000 },
{ &GUID_Key, 151, 0x8000970C, 0x00000000 },
{ &GUID_Key, 152, 0x8000980C, 0x00000000 },
{ &GUID_Key, 153, 0x8000990C, 0x00000000 },
{ &GUID_Key, 154, 0x80009A0C, 0x00000000 },
{ &GUID_Key, 155, 0x80009B0C, 0x00000000 },
{ &GUID_Key, 156, 0x80009C0C, 0x00000000 },
{ &GUID_Key, 157, 0x80009D0C, 0x00000000 },
{ &GUID_Key, 158, 0x80009E0C, 0x00000000 },
{ &GUID_Key, 159, 0x80009F0C, 0x00000000 },
{ &GUID_Key, 160, 0x8000A00C, 0x00000000 },
{ &GUID_Key, 161, 0x8000A10C, 0x00000000 },
{ &GUID_Key, 162, 0x8000A20C, 0x00000000 },
{ &GUID_Key, 163, 0x8000A30C, 0x00000000 },
{ &GUID_Key, 164, 0x8000A40C, 0x00000000 },
{ &GUID_Key, 165, 0x8000A50C, 0x00000000 },
{ &GUID_Key, 166, 0x8000A60C, 0x00000000 },
{ &GUID_Key, 167, 0x8000A70C, 0x00000000 },
{ &GUID_Key, 168, 0x8000A80C, 0x00000000 },
{ &GUID_Key, 169, 0x8000A90C, 0x00000000 },
{ &GUID_Key, 170, 0x8000AA0C, 0x00000000 },
{ &GUID_Key, 171, 0x8000AB0C, 0x00000000 },
{ &GUID_Key, 172, 0x8000AC0C, 0x00000000 },
{ &GUID_Key, 173, 0x8000AD0C, 0x00000000 },
{ &GUID_Key, 174, 0x8000AE0C, 0x00000000 },
{ &GUID_Key, 175, 0x8000AF0C, 0x00000000 },
{ &GUID_Key, 176, 0x8000B00C, 0x00000000 },
{ &GUID_Key, 177, 0x8000B10C, 0x00000000 },
{ &GUID_Key, 178, 0x8000B20C, 0x00000000 },
{ &GUID_Key, 179, 0x8000B30C, 0x00000000 },
{ &GUID_Key, 180, 0x8000B40C, 0x00000000 },
{ &GUID_Key, 181, 0x8000B50C, 0x00000000 },
{ &GUID_Key, 182, 0x8000B60C, 0x00000000 },
{ &GUID_Key, 183, 0x8000B70C, 0x00000000 },
{ &GUID_Key, 184, 0x8000B80C, 0x00000000 },
{ &GUID_Key, 185, 0x8000B90C, 0x00000000 },
{ &GUID_Key, 186, 0x8000BA0C, 0x00000000 },
{ &GUID_Key, 187, 0x8000BB0C, 0x00000000 },
{ &GUID_Key, 188, 0x8000BC0C, 0x00000000 },
{ &GUID_Key, 189, 0x8000BD0C, 0x00000000 },
{ &GUID_Key, 190, 0x8000BE0C, 0x00000000 },
{ &GUID_Key, 191, 0x8000BF0C, 0x00000000 },
{ &GUID_Key, 192, 0x8000C00C, 0x00000000 },
{ &GUID_Key, 193, 0x8000C10C, 0x00000000 },
{ &GUID_Key, 194, 0x8000C20C, 0x00000000 },
{ &GUID_Key, 195, 0x8000C30C, 0x00000000 },
{ &GUID_Key, 196, 0x8000C40C, 0x00000000 },
{ &GUID_Key, 197, 0x8000C50C, 0x00000000 },
{ &GUID_Key, 198, 0x8000C60C, 0x00000000 },
{ &GUID_Key, 199, 0x8000C70C, 0x00000000 },
{ &GUID_Key, 200, 0x8000C80C, 0x00000000 },
{ &GUID_Key, 201, 0x8000C90C, 0x00000000 },
{ &GUID_Key, 202, 0x8000CA0C, 0x00000000 },
{ &GUID_Key, 203, 0x8000CB0C, 0x00000000 },
{ &GUID_Key, 204, 0x8000CC0C, 0x00000000 },
{ &GUID_Key, 205, 0x8000CD0C, 0x00000000 },
{ &GUID_Key, 206, 0x8000CE0C, 0x00000000 },
{ &GUID_Key, 207, 0x8000CF0C, 0x00000000 },
{ &GUID_Key, 208, 0x8000D00C, 0x00000000 },
{ &GUID_Key, 209, 0x8000D10C, 0x00000000 },
{ &GUID_Key, 210, 0x8000D20C, 0x00000000 },
{ &GUID_Key, 211, 0x8000D30C, 0x00000000 },
{ &GUID_Key, 212, 0x8000D40C, 0x00000000 },
{ &GUID_Key, 213, 0x8000D50C, 0x00000000 },
{ &GUID_Key, 214, 0x8000D60C, 0x00000000 },
{ &GUID_Key, 215, 0x8000D70C, 0x00000000 },
{ &GUID_Key, 216, 0x8000D80C, 0x00000000 },
{ &GUID_Key, 217, 0x8000D90C, 0x00000000 },
{ &GUID_Key, 218, 0x8000DA0C, 0x00000000 },
{ &GUID_Key, 219, 0x8000DB0C, 0x00000000 },
{ &GUID_Key, 220, 0x8000DC0C, 0x00000000 },
{ &GUID_Key, 221, 0x8000DD0C, 0x00000000 },
{ &GUID_Key, 222, 0x8000DE0C, 0x00000000 },
{ &GUID_Key, 223, 0x8000DF0C, 0x00000000 },
{ &GUID_Key, 224, 0x8000E00C, 0x00000000 },
{ &GUID_Key, 225, 0x8000E10C, 0x00000000 },
{ &GUID_Key, 226, 0x8000E20C, 0x00000000 },
{ &GUID_Key, 227, 0x8000E30C, 0x00000000 },
{ &GUID_Key, 228, 0x8000E40C, 0x00000000 },
{ &GUID_Key, 229, 0x8000E50C, 0x00000000 },
{ &GUID_Key, 230, 0x8000E60C, 0x00000000 },
{ &GUID_Key, 231, 0x8000E70C, 0x00000000 },
{ &GUID_Key, 232, 0x8000E80C, 0x00000000 },
{ &GUID_Key, 233, 0x8000E90C, 0x00000000 },
{ &GUID_Key, 234, 0x8000EA0C, 0x00000000 },
{ &GUID_Key, 235, 0x8000EB0C, 0x00000000 },
{ &GUID_Key, 236, 0x8000EC0C, 0x00000000 },
{ &GUID_Key, 237, 0x8000ED0C, 0x00000000 },
{ &GUID_Key, 238, 0x8000EE0C, 0x00000000 },
{ &GUID_Key, 239, 0x8000EF0C, 0x00000000 },
{ &GUID_Key, 240, 0x8000F00C, 0x00000000 },
{ &GUID_Key, 241, 0x8000F10C, 0x00000000 },
{ &GUID_Key, 242, 0x8000F20C, 0x00000000 },
{ &GUID_Key, 243, 0x8000F30C, 0x00000000 },
{ &GUID_Key, 244, 0x8000F40C, 0x00000000 },
{ &GUID_Key, 245, 0x8000F50C, 0x00000000 },
{ &GUID_Key, 246, 0x8000F60C, 0x00000000 },
{ &GUID_Key, 247, 0x8000F70C, 0x00000000 },
{ &GUID_Key, 248, 0x8000F80C, 0x00000000 },
{ &GUID_Key, 249, 0x8000F90C, 0x00000000 },
{ &GUID_Key, 250, 0x8000FA0C, 0x00000000 },
{ &GUID_Key, 251, 0x8000FB0C, 0x00000000 },
{ &GUID_Key, 252, 0x8000FC0C, 0x00000000 },
{ &GUID_Key, 253, 0x8000FD0C, 0x00000000 },
{ &GUID_Key, 254, 0x8000FE0C, 0x00000000 },
{ &GUID_Key, 255, 0x8000FF0C, 0x00000000 }
};
const DIDATAFORMAT c_dfDIKeyboard = { 24, 16, 0x00000002, 256, 256, c_dfDIKeyboard_odf };
// Mouse
/*
static DIOBJECTDATAFORMAT c_dfDIMouse_odf[] = {
{ &GUID_XAxis, 0, 0x00FFFF03, 0x00000000 },
{ &GUID_YAxis, 4, 0x00FFFF03, 0x00000000 },
{ &GUID_ZAxis, 8, 0x80FFFF03, 0x00000000 },
{ NULL, 12, 0x00FFFF0C, 0x00000000 },
{ NULL, 13, 0x00FFFF0C, 0x00000000 },
{ NULL, 14, 0x80FFFF0C, 0x00000000 },
{ NULL, 15, 0x80FFFF0C, 0x00000000 }
};
const DIDATAFORMAT c_dfDIMouse = { 24, 16, 0x00000002, 16, 7, c_dfDIMouse_odf };
*/
static DIOBJECTDATAFORMAT c_dfDIMouse2_odf[] = {
{&GUID_XAxis, 0, 16776963, 0},
{&GUID_YAxis, 4, 16776963, 0},
{&GUID_ZAxis, 8, -2130706685, 0},
{0, 12, 16776972, 0},
{0, 13, 16776972, 0},
{0, 14, -2130706676, 0},
{0, 15, -2130706676, 0},
{0, 16, -2130706676, 0},
{0, 17, -2130706676, 0},
{0, 18, -2130706676,0},
{0, 19, -2130706676, 0}
};
const DIDATAFORMAT c_dfDIMouse2 = {24, 16, 2, 20, 11, c_dfDIMouse2_odf};
// Joystick
static DIOBJECTDATAFORMAT c_dfDIJoystick_odf[] = {

View file

@ -46,11 +46,11 @@ extern int32_t g_numQuoteRedefinitions;
//extern int16_t neartagsector, neartagwall, neartagsprite;
//extern int32_t neartaghitdist;
extern int32_t X_DoExecute(int32_t once);
extern void X_OnEvent(register int32_t iEventID, register int32_t iActor);
extern int32_t VM_Execute(int32_t once);
extern void VM_OnEvent(register int32_t iEventID, register int32_t iActor);
extern void X_ScriptInfo(void);
extern void X_Disasm(ofstype beg, int32_t size);
extern void VM_ScriptInfo(void);
extern void VM_Disasm(ofstype beg, int32_t size);
extern void C_ReportError(int32_t iError);
extern int32_t Gv_NewVar(const char *pszLabel, intptr_t lValue, uint32_t dwFlags);
@ -77,12 +77,12 @@ extern int32_t g_scriptSize;
extern char *label;
//extern int32_t label_allocsize;
extern hashtable_t labelH;
extern hashtable_t h_labels;
#define MAXLABELLEN 32
//extern uint8_t waterpal[768],slimepal[768],titlepal[768],drealms[768],endingpal[768],animpal[768];
//extern char currentboardfilename[BMAX_PATH];
//extern char currentboardfilename[BMAVM_PATH];
enum GameEvent_t {
@ -180,10 +180,10 @@ extern int32_t g_iThisActorID; // var ID of "I" ///"THISACTOR"
extern int32_t g_numQuoteRedefinitions;
extern hashtable_t gamevarH;
extern hashtable_t arrayH;
extern hashtable_t keywH;
extern hashtable_t gamefuncH;
extern hashtable_t h_gamevars;
extern hashtable_t h_arrays;
extern hashtable_t h_keywords;
extern hashtable_t h_gamefuncs;
extern int16_t asksave;

View file

@ -1937,7 +1937,7 @@ struct win32_mlock_t {
#define TRY_LOCK(sl) win32_try_lock(sl)
#define SPINS_PER_YIELD 63
static MLOCK_T malloc_global_mutex = { 0, 0, 0};
static MLOCK_T malloc_global_mutex = { 0, "", 0, 0};
static FORCEINLINE int win32_acquire_lock (MLOCK_T *sl) {
int spins = 0;

View file

@ -0,0 +1,21 @@
#ifndef __mutex_h__
#define __mutex_h__
#if defined(_WIN32)
#include <windows.h>
#include <process.h>
#else
#include <pthread.h>
#endif
#if defined(_WIN32)
typedef HANDLE mutex_t;
#else
typedef pthread_mutex_t mutex_t;
#endif
extern int32_t mutex_init(mutex_t *mutex);
extern int32_t mutex_lock(mutex_t *mutex);
extern int32_t mutex_unlock(mutex_t *mutex);
#endif

View file

@ -24,20 +24,20 @@ typedef struct _symbol
symbol_t *symbols;
const char *stripcolorcodes(char *out, const char *in);
const char *OSD_StripColors(char *out, const char *in);
enum cvartypes
enum cvartype_t
{
CVAR_FLOAT = 1,
CVAR_INT = 2,
CVAR_UINT = 4,
CVAR_BOOL = 8,
CVAR_STRING = 16,
CVAR_DOUBLE = 32,
CVAR_NOMULTI = 128,
CVAR_MULTI = 256,
CVAR_NOSAVE = 512,
CVAR_FUNCPTR = 1024,
CVAR_FLOAT = 0x00000001,
CVAR_INT = 0x00000002,
CVAR_UINT = 0x00000004,
CVAR_BOOL = 0x00000008,
CVAR_STRING = 0x00000010,
CVAR_DOUBLE = 0x00000020,
CVAR_NOMULTI = 0x00000040,
CVAR_MULTI = 0x00000080,
CVAR_NOSAVE = 0x00000100,
CVAR_FUNCPTR = 0x00000200,
};
typedef struct
@ -45,15 +45,24 @@ typedef struct
char *name;
char *helpstr;
void *var;
int32_t type; // 0 = integer, 1 = unsigned integer, 2 = boolean, 3 = string, |128 = not in multiplayer, |256 = update multi
int32_t extra; // for string, is the length
int32_t type; // see cvartype_t
int32_t min;
int32_t max;
int32_t max; // for string, is the length
} cvar_t;
enum osdflags_t
{
OSD_INITIALIZED = 0x00000001,
OSD_DRAW = 0x00000002,
OSD_CAPTURE = 0x00000004,
OSD_OVERTYPE = 0x00000008,
OSD_SHIFT = 0x00000010,
OSD_CTRL = 0x00000020,
OSD_CAPS = 0x00000040
};
#define OSD_ALIAS 1337
#define OSD_UNALIASED 1338
#define OSD_ALIAS (void *)0x1337
#define OSD_UNALIASED (void *)0xDEAD
#define OSDCMD_OK 0
#define OSDCMD_SHOWHELP 1
@ -112,7 +121,7 @@ void OSD_ResizeDisplay(int32_t w,int32_t h);
void OSD_CaptureInput(int32_t cap);
// sets the console version string
void OSD_SetVersionString(const char *version, int32_t shade, int32_t pal);
void OSD_SetVersion(const char *version, int32_t shade, int32_t pal);
// shows or hides the onscreen display
void OSD_ShowDisplay(int32_t onf);

View file

@ -67,7 +67,7 @@ extern GLuint peelprogram[2];
extern int32_t cachefilehandle;
extern FILE *cacheindexptr;
extern hashtable_t cacheH;
extern hashtable_t h_texcache;
struct cacheitem_t
{

View file

@ -0,0 +1,26 @@
#ifndef rawinput_h__
#define rawinput_h__
#include "compat.h"
void RI_PollDevices();
uint8_t RI_MouseState( uint8_t Button );
int8_t RI_WheelState();
int32_t RI_CaptureInput(int32_t grab, HWND target);
#define VK_LBUTTON 0x01
#define VK_RBUTTON 0x02
#define VK_CANCEL 0x03
#define VK_MBUTTON 0x04 /* NOT contiguous with L & RBUTTON */
// mouse states for RI_MouseState
#define BUTTON_PRESSED 0x01
#define BUTTON_RELEASED 0x02
#define BUTTON_HELD 0x03
#endif // rawinput_h__

View file

@ -0,0 +1,123 @@
#define sc_None 0
#define sc_Bad 0xff
#define sc_Comma 0x33
#define sc_Period 0x34
#define sc_Return 0x1c
#define sc_Enter sc_Return
#define sc_Escape 0x01
#define sc_Space 0x39
#define sc_BackSpace 0x0e
#define sc_Tab 0x0f
#define sc_LeftAlt 0x38
#define sc_LeftControl 0x1d
#define sc_CapsLock 0x3a
#define sc_LeftShift 0x2a
#define sc_RightShift 0x36
#define sc_F1 0x3b
#define sc_F2 0x3c
#define sc_F3 0x3d
#define sc_F4 0x3e
#define sc_F5 0x3f
#define sc_F6 0x40
#define sc_F7 0x41
#define sc_F8 0x42
#define sc_F9 0x43
#define sc_F10 0x44
#define sc_F11 0x57
#define sc_F12 0x58
#define sc_Kpad_Star 0x37
#define sc_Pause 0x59
#define sc_ScrollLock 0x46
#define sc_NumLock 0x45
#define sc_Slash 0x35
#define sc_SemiColon 0x27
#define sc_Quote 0x28
#define sc_Tilde 0x29
#define sc_BackSlash 0x2b
#define sc_OpenBracket 0x1a
#define sc_CloseBracket 0x1b
#define sc_1 0x02
#define sc_2 0x03
#define sc_3 0x04
#define sc_4 0x05
#define sc_5 0x06
#define sc_6 0x07
#define sc_7 0x08
#define sc_8 0x09
#define sc_9 0x0a
#define sc_0 0x0b
#define sc_Minus 0x0c
#define sc_Equals 0x0d
#define sc_Plus 0x0d
#define sc_kpad_1 0x4f
#define sc_kpad_2 0x50
#define sc_kpad_3 0x51
#define sc_kpad_4 0x4b
#define sc_kpad_5 0x4c
#define sc_kpad_6 0x4d
#define sc_kpad_7 0x47
#define sc_kpad_8 0x48
#define sc_kpad_9 0x49
#define sc_kpad_0 0x52
#define sc_kpad_Minus 0x4a
#define sc_kpad_Plus 0x4e
#define sc_kpad_Period 0x53
#define sc_A 0x1e
#define sc_B 0x30
#define sc_C 0x2e
#define sc_D 0x20
#define sc_E 0x12
#define sc_F 0x21
#define sc_G 0x22
#define sc_H 0x23
#define sc_I 0x17
#define sc_J 0x24
#define sc_K 0x25
#define sc_L 0x26
#define sc_M 0x32
#define sc_N 0x31
#define sc_O 0x18
#define sc_P 0x19
#define sc_Q 0x10
#define sc_R 0x13
#define sc_S 0x1f
#define sc_T 0x14
#define sc_U 0x16
#define sc_V 0x2f
#define sc_W 0x11
#define sc_X 0x2d
#define sc_Y 0x15
#define sc_Z 0x2c
// Extended scan codes
#define sc_UpArrow 0xc8 //0x5a
#define sc_DownArrow 0xd0 //0x6a
#define sc_LeftArrow 0xcb //0x6b
#define sc_RightArrow 0xcd //0x6c
#define sc_Insert 0xd2 //0x5e
#define sc_Delete 0xd3 //0x5f
#define sc_Home 0xc7 //0x61
#define sc_End 0xcf //0x62
#define sc_PgUp 0xc9 //0x63
#define sc_PgDn 0xd1 //0x64
#define sc_RightAlt 0xb8 //0x65
#define sc_RightControl 0x9d //0x66
#define sc_kpad_Slash 0xb5 //0x67
#define sc_kpad_Enter 0x9c //0x68
#define sc_PrintScreen 0xb7 //0x69
#define sc_LastScanCode 0x6e
// Ascii scan codes
#define asc_Enter 13
#define asc_Escape 27
#define asc_BackSpace 8
#define asc_Tab 9
#define asc_Space 32

View file

@ -16,6 +16,10 @@ int32_t win_gethinstance(void);
void win_allowtaskswitching(int32_t onf);
int32_t win_checkinstance(void);
extern void (*keypresscallback)(int32_t,int32_t);
extern void (*mousepresscallback)(int32_t,int32_t);
extern void (*joypresscallback)(int32_t,int32_t);
#include "baselayer.h"
#else

View file

@ -1 +0,0 @@
make -f Makefile %1 %2 %3 %4 %5

View file

@ -1 +0,0 @@
nmake /f Makefile.msvc %1 %2 %3 %4 %5

View file

@ -1 +0,0 @@
wmake -f Makefile.watcom %1 %2 %3 %4 %5

View file

@ -3,7 +3,7 @@
; See the included license file "BUILDLIC.TXT" for license info.
.586P
.8087
;.8087
;include mmx.inc ;Include this if using < WATCOM 11.0 WASM
;Warning: IN THIS FILE, ALL SEGMENTS ARE REMOVED. THIS MEANS THAT DS:[]

View file

@ -22,7 +22,7 @@ char scantoasc[128] =
};
#ifdef USE_OPENGL
struct glinfo glinfo =
struct glinfo_t glinfo =
{
"Unknown", // vendor
"Unknown", // renderer
@ -230,17 +230,19 @@ int32_t baselayer_init(void)
cvar_t cvars_engine[] =
{
#ifdef SUPERBUILD
{ "r_novoxmips","r_novoxmips: turn off/on the use of mipmaps when rendering 8-bit voxels",(void *)&novoxmips, CVAR_BOOL, 0, 0, 1 },
{ "r_voxels","r_voxels: enable/disable automatic sprite->voxel rendering",(void *)&usevoxels, CVAR_BOOL, 0, 0, 1 },
{ "r_scrcaptureformat","r_scrcaptureformat: sets the output format for screenshots (TGA or PCX)",osdcmd_vars, CVAR_FUNCPTR, 0, 0, 0 },
{ "r_novoxmips","r_novoxmips: turn off/on the use of mipmaps when rendering 8-bit voxels",(void *)&novoxmips, CVAR_BOOL, 0, 1 },
{ "r_voxels","r_voxels: enable/disable automatic sprite->voxel rendering",(void *)&usevoxels, CVAR_BOOL, 0, 1 },
{ "r_scrcaptureformat","r_scrcaptureformat: sets the output format for screenshots (TGA or PCX)",osdcmd_vars, CVAR_FUNCPTR, 0, 0 },
#endif
};
for (i=0; i<sizeof(cvars_engine)/sizeof(cvars_engine[0]); i++)
{
OSD_RegisterCvar(&cvars_engine[i]);
if (cvars_engine[i].type == CVAR_FUNCPTR) OSD_RegisterFunction(cvars_engine[i].name, cvars_engine[i].helpstr, cvars_engine[i].var);
else OSD_RegisterFunction(cvars_engine[i].name, cvars_engine[i].helpstr, osdcmd_cvar_set);
if (OSD_RegisterCvar(&cvars_engine[i]))
continue;
OSD_RegisterFunction(cvars_engine[i].name, cvars_engine[i].helpstr,
cvars_engine[i].type == CVAR_FUNCPTR ? cvars_engine[i].var : osdcmd_cvar_set);
}
#ifdef POLYMOST

View file

@ -1108,7 +1108,7 @@ void editinput(void)
updatenumsprites();
asksave = 1;
X_OnEvent(EVENT_INSERTSPRITE3D, i);
VM_OnEvent(EVENT_INSERTSPRITE3D, i);
}
keystatus[0x1f] = 0;
@ -1288,6 +1288,9 @@ void overheadeditor(void)
keystatus[buildkeys[BK_MODE2D_3D]] = 0;
while ((keystatus[buildkeys[BK_MODE2D_3D]]>>1) == 0)
{
if ((keystatus[buildkeys[BK_MOVEUP]] || (bstatus&(16|32)) || keystatus[buildkeys[BK_MOVEDOWN]]) == 0)
idle_waitevent();
if (handleevents())
{
if (quitevent)
@ -1297,11 +1300,10 @@ void overheadeditor(void)
}
}
idle();
OSD_DispatchQueued();
if (totalclock < 120*3)
printmessage16("Based on BUILD by Ken Silverman.");
printmessage16("Uses BUILD technology by Ken Silverman.");
else if (totalclock < 120*6)
{
printmessage16("Press F1 for help. This is a test release; always keep backups of your maps.");
@ -1319,6 +1321,7 @@ void overheadeditor(void)
}
searchx += mousx;
searchy += mousy;
if (searchx < 8) searchx = 8;
if (searchx > xdim-8-1) searchx = xdim-8-1;
if (searchy < 8) searchy = 8;
@ -1422,7 +1425,7 @@ void overheadeditor(void)
}
draw2dscreen(pos.x,pos.y,ang,zoom,grid);
X_OnEvent(EVENT_DRAW2DSCREEN, -1);
VM_OnEvent(EVENT_DRAW2DSCREEN, -1);
begindrawing(); //{{{
if (showtags == 1)
@ -1620,7 +1623,7 @@ void overheadeditor(void)
OSD_Draw();
}
X_OnEvent(EVENT_PREKEYS2D, -1);
VM_OnEvent(EVENT_PREKEYS2D, -1);
ExtCheckKeys(); // TX 20050101, it makes more sense to have this here so keys can be overwritten with new functions in bstub.c
// Flip/mirror sector Ed Coolidge
@ -2864,7 +2867,7 @@ SKIP:
if ((keystatus[buildkeys[BK_MOVEUP]] || (bstatus&16)) && (zoom < 65536))
{
zoom += synctics*(zoom>>4);
zoom += (synctics>>1)*(zoom>>3);
if (zoom < 24) zoom += 2;
if (bstatus&16 && (keystatus[0x38] || keystatus[0xb8]))
{
@ -2878,7 +2881,7 @@ SKIP:
}
if ((keystatus[buildkeys[BK_MOVEDOWN]] || (bstatus&32)) && (zoom > 8))
{
zoom -= synctics*(zoom>>4);
zoom -= (synctics>>1)*(zoom>>3);
if (bstatus&32 && (keystatus[0x38] || keystatus[0xb8]))
{
searchx = halfxdim16;
@ -3193,7 +3196,7 @@ SKIP:
updatenumsprites();
asksave = 1;
X_OnEvent(EVENT_INSERTSPRITE2D, i);
VM_OnEvent(EVENT_INSERTSPRITE2D, i);
}
keystatus[0x1f] = 0;
@ -4747,7 +4750,7 @@ CANCEL:
clearkeys();
}
X_OnEvent(EVENT_KEYS2D, -1);
VM_OnEvent(EVENT_KEYS2D, -1);
//nextpage();
}
@ -4783,7 +4786,7 @@ CANCEL:
searchx = scale(searchx,xdimgame,xdim2d);
searchy = scale(searchy,ydimgame,ydim2d-STATUS2DSIZ);
X_OnEvent(EVENT_ENTER3DMODE, -1);
VM_OnEvent(EVENT_ENTER3DMODE, -1);
}
void getpoint(int32_t searchxe, int32_t searchye, int32_t *x, int32_t *y)
@ -6142,27 +6145,15 @@ void showsectordata(int16_t sectnum)
int32_t mode = (sectnum & 16384);
int32_t color = mode?whitecol:editorcolors[11];
if (mode)
{
int32_t i;
row = 2;
begindrawing();
col = whitecol - 21;
for (i=ydim-(row*96)-STATUS2DSIZ+16; i<ydim-STATUS2DSIZ2-8; i++)
{
// drawline256(0, i<<12, xdim<<12, i<<12, col);
clearbufbyte((char *)(frameplace + (i*bytesperline) + 4), 192, ((int32_t)col<<24)|((int32_t)col<<16)|((int32_t)col<<8)|col);
if (col > 0) col--;
}
enddrawing();
col = 1;
}
sectnum &= ~16384;
Bsprintf(snotbuf,"^10Sector %d",sectnum);
if (mode)
Bstrcat(snotbuf," ^O(F7 to edit)");
{
_printmessage16("^10Sector %d ^O(F7 to edit)",sectnum);
return;
}
Bsprintf(snotbuf,"^10Sector %d",sectnum);
printext16(8,ydim-(row*96)-STATUS2DSIZ+32,color,-1,snotbuf,0);
Bsprintf(snotbuf,"Firstwall: %d",sector[sectnum].wallptr);
printext16(8,ydim-(row*96)-STATUS2DSIZ+48,color,-1,snotbuf,0);
@ -6181,9 +6172,7 @@ void showsectordata(int16_t sectnum)
Bsprintf(snotbuf,"Pixel height: %d",(sector[sectnum].floorz-sector[sectnum].ceilingz)>>8);
printext16(8,ydim-(row*96)-STATUS2DSIZ+104,color,-1,snotbuf,0);
if (mode)
row--;
else col++;
col++;
printext16(8+((col-1)*200),ydim-(row*96)-STATUS2DSIZ+32,color,-1,"^10CEILING:^O",0);
Bsprintf(snotbuf,"Flags (hex): %x",sector[sectnum].ceilingstat);
@ -6201,9 +6190,7 @@ void showsectordata(int16_t sectnum)
Bsprintf(snotbuf,"Palookup number: %d",sector[sectnum].ceilingpal);
printext16(8+((col-1)*200),ydim-(row*96)-STATUS2DSIZ+96,color,-1,snotbuf,0);
if (mode)
row--;
else col++;
col++;
printext16(8+((col-1)*200),ydim-STATUS2DSIZ+32,color,-1,"^10FLOOR:^O",0);
Bsprintf(snotbuf,"Flags (hex): %x",sector[sectnum].floorstat);
@ -6230,27 +6217,15 @@ void showwalldata(int16_t wallnum)
int32_t mode = (wallnum & 16384);
int32_t color = mode?whitecol:editorcolors[11];
if (mode)
{
int32_t i;
row = 2;
begindrawing();
col = whitecol - 21;
for (i=ydim-(row*80)-STATUS2DSIZ+16; i<ydim-STATUS2DSIZ2-8; i++)
{
// drawline256(0, i<<12, xdim<<12, i<<12, col);
clearbufbyte((char *)(frameplace + (i*bytesperline) + 4), 192, ((int32_t)col<<24)|((int32_t)col<<16)|((int32_t)col<<8)|col);
if (col > 0) col--;
}
enddrawing();
col = 1;
}
wallnum &= ~16384;
if (mode)
{
_printmessage16("^10Wall %d ^O(F8 to edit)",wallnum);
return;
}
Bsprintf(snotbuf,"^10Wall %d",wallnum);
if (mode) Bstrcat(snotbuf," ^O(F8 to edit)");
printext16(8,ydim-(row*80)-STATUS2DSIZ+32,color,-1,snotbuf,0);
Bsprintf(snotbuf,"X-coordinate: %d",wall[wallnum].x);
printext16(8,ydim-(row*80)-STATUS2DSIZ+48,color,-1,snotbuf,0);
@ -6266,9 +6241,7 @@ void showwalldata(int16_t wallnum)
Bsprintf(snotbuf," (0x%x), (0x%x)",wall[wallnum].hitag,wall[wallnum].lotag);
printext16(8,ydim-(row*80)-STATUS2DSIZ+96,color,-1,snotbuf,0);
if (mode)
row--;
else col++;
col++;
Bsprintf(snotbuf,"^10%s^O",names[wall[wallnum].picnum]);
printext16(8+((col-1)*200),ydim-(row*80)-STATUS2DSIZ+32,color,-1,snotbuf,0);
@ -6287,9 +6260,7 @@ void showwalldata(int16_t wallnum)
Bsprintf(snotbuf,"OverTile number: %d",wall[wallnum].overpicnum);
printext16(8+((col-1)*200),ydim-(row*80)-STATUS2DSIZ+96,color,-1,snotbuf,0);
if (mode)
row--;
else col++;
col++;
Bsprintf(snotbuf,"nextsector: %d",wall[wallnum].nextsector);
printext16(8+((col-1)*200),ydim-STATUS2DSIZ+48-(mode?16:0),color,-1,snotbuf,0);
@ -6320,26 +6291,15 @@ void showspritedata(int16_t spritenum)
int32_t mode = (spritenum & 16384);
int32_t color = mode?whitecol:editorcolors[11];
if (mode)
{
int32_t i;
row = 2;
begindrawing();
col = whitecol - 21;
for (i=ydim-(row*80)-STATUS2DSIZ+16; i<ydim-STATUS2DSIZ2-8; i++)
{
// drawline256(0, i<<12, xdim<<12, i<<12, col);
clearbufbyte((char *)(frameplace + (i*bytesperline) + 4), 224, ((int32_t)col<<24)|((int32_t)col<<16)|((int32_t)col<<8)|col);
if (col > 0) col--;
}
enddrawing();
col = 1;
}
spritenum &= ~16384;
if (mode)
{
_printmessage16("^10Sprite %d ^O(F8 to edit)",spritenum);
return;
}
Bsprintf(snotbuf,"^10Sprite %d",spritenum);
if (mode) Bstrcat(snotbuf," ^O(F8 to edit)");
printext16(8,ydim-(row*80)-STATUS2DSIZ+32,color,-1,snotbuf,0);
Bsprintf(snotbuf,"X-coordinate: %d",sprite[spritenum].x);
printext16(8,ydim-(row*80)-STATUS2DSIZ+48,color,-1,snotbuf,0);
@ -6358,9 +6318,7 @@ void showspritedata(int16_t spritenum)
Bsprintf(snotbuf," (0x%x), (0x%x)",sprite[spritenum].hitag,sprite[spritenum].lotag);
printext16(8,ydim-(row*80)-STATUS2DSIZ+104,color,-1,snotbuf,0);
if (mode)
row--;
else col++;
col++;
Bsprintf(snotbuf,"^10%s^O",names[sprite[spritenum].picnum]);
printext16(8+((col-1)*200),ydim-(row*72)-STATUS2DSIZ+32,color,-1,snotbuf,0);
@ -6377,9 +6335,7 @@ void showspritedata(int16_t spritenum)
Bsprintf(snotbuf,"Tile number: %d",sprite[spritenum].picnum);
printext16(8+((col-1)*200),ydim-(row*72)-STATUS2DSIZ+88,color,-1,snotbuf,0);
if (mode)
row--;
else col++;
col++;
Bsprintf(snotbuf,"Angle (2048 degrees): %d",sprite[spritenum].ang);
printext16(8+((col-1)*200),ydim-STATUS2DSIZ+48,color,-1,snotbuf,0);

View file

@ -9,6 +9,7 @@
#include "cache1d.h"
#include "pragmas.h"
#include "baselayer.h"
#include "mutex.h"
#ifdef WITHKPLIB
#include "kplib.h"
@ -59,6 +60,7 @@ static intptr_t kzipopen(char *filnam)
#define MAXCACHEOBJECTS 9216
mutex_t cachemutex;
static int32_t cachesize = 0;
int32_t cachecount = 0;
char zerochar = 0;
@ -99,6 +101,7 @@ void initcache(intptr_t dacachestart, int32_t dacachesize)
cac[0].lock = &zerochar;
cacnum = 1;
mutex_init(&cachemutex);
initprintf("Initialized %.1fM cache\n", (float)(dacachesize/1024.f/1024.f));
}
@ -186,8 +189,10 @@ void suckcache(intptr_t *suckptr)
{
int32_t i;
while(mutex_lock(&cachemutex));
//Can't exit early, because invalid pointer might be same even though lock = 0
for (i=0; i<cacnum; i++)
{
if ((intptr_t)(*cac[i].hand) == (intptr_t)suckptr)
{
if (*cac[i].lock) *cac[i].hand = 0;
@ -206,6 +211,9 @@ void suckcache(intptr_t *suckptr)
cacnum--; copybuf(&cac[i+1],&cac[i],(cacnum-i)*sizeof(cactype));
}
}
}
mutex_unlock(&cachemutex);
}
void agecache(void)
@ -214,6 +222,7 @@ void agecache(void)
if (agecount >= cacnum) agecount = cacnum-1;
if (agecount < 0 || !cnt) return;
while(mutex_lock(&cachemutex));
for (; cnt>=0; cnt--)
{
if ((((*cac[agecount].lock)-2)&255) < 198)
@ -222,6 +231,7 @@ void agecache(void)
agecount--;
if (agecount < 0) agecount = cacnum-1;
}
mutex_unlock(&cachemutex);
}
static void reportandexit(char *errormessage)

View file

@ -15,7 +15,7 @@
#ifdef _WIN32
#define WIN32_LEAN_AND_MEAN
#define _WIN32_IE 0x0400
#define _WIN32_WINNT 0x0500
#define _WIN32_WINNT 0x0501
#include <windows.h>
#include <shlobj.h>
#include <direct.h>

View file

@ -10039,7 +10039,7 @@ void setbrightness(char dabrightness, uint8_t *dapal, char noapply)
//
void setpalettefade(char r, char g, char b, char offset)
{
int32_t i,k;
int32_t i;
palette_t p;
palfadergb.r = min(63,r) << 2;
@ -10047,7 +10047,6 @@ void setpalettefade(char r, char g, char b, char offset)
palfadergb.b = min(63,b) << 2;
palfadedelta = min(63,offset) << 2;
k = 0;
for (i=0; i<256; i++)
{
if (gammabrightness) p = curpalette[i];

View file

@ -550,7 +550,7 @@ int32_t mdloadskin_trytexcache(char *fn, int32_t len, int32_t pal, char effect,
}
while (cacheindexptr->next);
*/
i = hash_find(&cacheH,cachefn);
i = hash_find(&h_texcache,cachefn);
if (i != -1)
{
texcacheindex *cacheindexptr = cacheptrs[i];

View file

@ -0,0 +1,35 @@
#include "compat.h"
#include "mutex.h"
int32_t mutex_init(mutex_t *mutex)
{
#ifdef _WIN32
*mutex = CreateMutex(0, FALSE, 0);
return (*mutex == 0);
#else
return pthread_mutex_init(mutex, NULL);
#endif
return -1;
}
int32_t mutex_lock(mutex_t *mutex)
{
#ifdef _WIN32
return (WaitForSingleObject(*mutex, INFINITE) == WAIT_FAILED);
#else
return pthread_mutex_lock(mutex);
#endif
return -1;
}
int32_t mutex_unlock(mutex_t *mutex)
{
#ifdef _WIN32
return (ReleaseMutex(*mutex) == 0);
#else
return pthread_mutex_unlock(mutex);
#endif
return -1;
}

View file

@ -450,7 +450,11 @@ static NEDMALLOCNOALIASATTR mstate nedblkmstate(void *RESTRICT mem) THROWSPEC
}
#else
#ifdef WIN32
#ifdef _MSC_VER
__try
#elif defined(__MINGW32__)
__try1
#endif
#endif
{
/* We try to return zero here if it isn't one of our own blocks, however
@ -493,7 +497,11 @@ static NEDMALLOCNOALIASATTR mstate nedblkmstate(void *RESTRICT mem) THROWSPEC
}
}
#ifdef WIN32
#ifdef _MSC_VER
__except(1) { }
#elif defined(__MINGW32__)
__except1(1) { }
#endif
#endif
#endif
#endif

File diff suppressed because it is too large Load diff

View file

@ -256,7 +256,7 @@ void drawline2d(float x0, float y0, float x1, float y1, char col)
int32_t cachefilehandle = -1; // texture cache file handle
FILE *cacheindexptr = NULL;
hashtable_t cacheH = { 1024, NULL };
hashtable_t h_texcache = { 1024, NULL };
char TEXCACHEFILE[BMAX_PATH] = "textures";
@ -718,7 +718,7 @@ void polymost_glinit()
// Bmemset(&firstcacheindex, 0, sizeof(texcacheindex));
// Bmemset(&cacheptrs[0], 0, sizeof(cacheptrs));
hash_init(&cacheH);
hash_init(&h_texcache);
LoadCacheOffsets();
Bstrcpy(ptempbuf,TEXCACHEFILE);
@ -803,7 +803,7 @@ void invalidatecache(void)
// Bmemset(&firstcacheindex, 0, sizeof(texcacheindex));
// Bmemset(&cacheptrs[0], 0, sizeof(cacheptrs));
hash_init(&cacheH);
hash_init(&h_texcache);
// LoadCacheOffsets();
Bstrcpy(ptempbuf,TEXCACHEFILE);
@ -1214,7 +1214,7 @@ static int32_t LoadCacheOffsets(void)
if (scriptfile_getnumber(script, &foffset)) break; // offset in cache
if (scriptfile_getnumber(script, &fsize)) break; // size
i = hash_find(&cacheH,fname);
i = hash_find(&h_texcache,fname);
if (i > -1)
{
// update an existing entry
@ -1229,7 +1229,7 @@ static int32_t LoadCacheOffsets(void)
curcacheindex->offset = foffset;
curcacheindex->len = fsize;
curcacheindex->next = (texcacheindex *)Bcalloc(1, sizeof(texcacheindex));
hash_replace(&cacheH, Bstrdup(fname), numcacheentries);
hash_replace(&h_texcache, Bstrdup(fname), numcacheentries);
cacheptrs[numcacheentries++] = curcacheindex;
curcacheindex = curcacheindex->next;
}
@ -1275,7 +1275,7 @@ int32_t trytexcache(char *fn, int32_t len, int32_t dameth, char effect, texcache
int32_t len = 0;
int32_t i;
i = hash_find(&cacheH,cachefn);
i = hash_find(&h_texcache,cachefn);
if (i > -1)
{
texcacheindex *t = cacheptrs[i];
@ -1420,7 +1420,7 @@ void writexcache(char *fn, int32_t len, int32_t dameth, char effect, texcachehea
}
{
int32_t i = hash_find(&cacheH,cachefn);
int32_t i = hash_find(&h_texcache,cachefn);
if (i > -1)
{
// update an existing entry
@ -1450,7 +1450,7 @@ void writexcache(char *fn, int32_t len, int32_t dameth, char effect, texcachehea
}
else OSD_Printf("wtf?\n");
hash_add(&cacheH, Bstrdup(cachefn), numcacheentries);
hash_add(&h_texcache, Bstrdup(cachefn), numcacheentries);
cacheptrs[numcacheentries++] = curcacheindex;
curcacheindex = curcacheindex->next;
}
@ -5959,77 +5959,77 @@ void polymost_initosdfuncs(void)
cvar_t cvars_polymost[] =
{
#ifdef USE_OPENGL
{ "r_animsmoothing","r_animsmoothing: enable/disable model animation smoothing",(void *)&r_animsmoothing, CVAR_BOOL, 0, 0, 1 },
{ "r_modelocclusionchecking","r_modelocclusionchecking: enable/disable hack to cull \"obstructed\" models",(void *)&r_modelocclusionchecking, CVAR_INT, 0, 0, 2 },
{ "r_detailmapping","r_detailmapping: enable/disable detail mapping",(void *)&r_detailmapping, CVAR_BOOL, 0, 0, 1 },
{ "r_downsize","r_downsize: controls downsizing factor for hires textures",(void *)&r_downsizevar, CVAR_INT|CVAR_FUNCPTR, 0, 0, 5 },
{ "r_fullbrights","r_fullbrights: enable/disable fullbright textures",(void *)&r_fullbrights, CVAR_BOOL, 0, 0, 1 },
{ "r_glowmapping","r_glowmapping: enable/disable glow mapping",(void *)&r_glowmapping, CVAR_BOOL, 0, 0, 1 },
{ "r_animsmoothing","r_animsmoothing: enable/disable model animation smoothing",(void *)&r_animsmoothing, CVAR_BOOL, 0, 1 },
{ "r_modelocclusionchecking","r_modelocclusionchecking: enable/disable hack to cull \"obstructed\" models",(void *)&r_modelocclusionchecking, CVAR_INT, 0, 2 },
{ "r_detailmapping","r_detailmapping: enable/disable detail mapping",(void *)&r_detailmapping, CVAR_BOOL, 0, 1 },
{ "r_downsize","r_downsize: controls downsizing factor for hires textures",(void *)&r_downsizevar, CVAR_INT|CVAR_FUNCPTR, 0, 5 },
{ "r_fullbrights","r_fullbrights: enable/disable fullbright textures",(void *)&r_fullbrights, CVAR_BOOL, 0, 1 },
{ "r_glowmapping","r_glowmapping: enable/disable glow mapping",(void *)&r_glowmapping, CVAR_BOOL, 0, 1 },
/*
{ "r_multisample","r_multisample: sets the number of samples used for antialiasing (0 = off)",(void *)&r_glowmapping, CVAR_BOOL, 0, 0, 1 }
{ "r_nvmultisamplehint","r_nvmultisamplehint: enable/disable Nvidia multisampling hinting",(void *)&glnvmultisamplehint, CVAR_BOOL, 0, 0, 1 }
{ "r_multisample","r_multisample: sets the number of samples used for antialiasing (0 = off)",(void *)&r_glowmapping, CVAR_BOOL, 0, 1 }
{ "r_nvmultisamplehint","r_nvmultisamplehint: enable/disable Nvidia multisampling hinting",(void *)&glnvmultisamplehint, CVAR_BOOL, 0, 1 }
*/
{ "r_parallaxskyclamping","r_parallaxskyclamping: enable/disable parallaxed floor/ceiling sky texture clamping",
(void *)&r_parallaxskyclamping, CVAR_BOOL, 0, 0, 1 },
(void *)&r_parallaxskyclamping, CVAR_BOOL, 0, 1 },
{ "r_parallaxskypanning","r_parallaxskypanning: enable/disable parallaxed floor/ceiling panning when drawing a parallaxed sky",
(void *)&r_parallaxskypanning, CVAR_BOOL, 0, 0, 1 },
{ "r_polygonmode","r_polygonmode: debugging feature",(void *)&glpolygonmode, CVAR_INT | CVAR_NOSAVE, 0, 0, 3 },
{ "r_redbluemode","r_redbluemode: enable/disable experimental OpenGL red-blue glasses mode",(void *)&glredbluemode, CVAR_BOOL, 0, 0, 1 },
{ "r_shadescale","r_shadescale: multiplier for lighting",(void *)&shadescale, CVAR_FLOAT, 0, 0, 10 },
{ "r_swapinterval","r_swapinterval: sets the GL swap interval (VSync)",(void *)&vsync, CVAR_BOOL|CVAR_FUNCPTR, 0, 0, 1 },
{ "r_texcache","r_texcache: enable/disable OpenGL compressed texture cache",(void *)&glusetexcache, CVAR_INT, 0, 0, 2 },
{ "r_texcompr","r_texcompr: enable/disable OpenGL texture compression",(void *)&glusetexcompr, CVAR_BOOL, 0, 0, 1 },
{ "r_textureanisotropy", "r_textureanisotropy: changes the OpenGL texture anisotropy setting", (void *)&glanisotropy, CVAR_INT|CVAR_FUNCPTR, 0, 0, 16 },
{ "r_texturemaxsize","r_texturemaxsize: changes the maximum OpenGL texture size limit",(void *)&gltexmaxsize, CVAR_INT | CVAR_NOSAVE, 0, 0, 4096 },
{ "r_texturemiplevel","r_texturemiplevel: changes the highest OpenGL mipmap level used",(void *)&gltexmiplevel, CVAR_INT, 0, 0, 6 },
{ "r_texturemode", "r_texturemode: changes the texture filtering settings", (void *)&gltexfiltermode, CVAR_INT|CVAR_FUNCPTR, 0, 0, 5 },
{ "r_vbocount","r_vbocount: sets the number of Vertex Buffer Objects to use when drawing models",(void *)&r_vbocount, CVAR_INT, 0, 1, 256 },
{ "r_vbos","r_vbos: enable/disable using Vertex Buffer Objects when drawing models",(void *)&r_vbos, CVAR_BOOL, 0, 0, 1 },
{ "r_vertexarrays","r_vertexarrays: enable/disable using vertex arrays when drawing models",(void *)&r_vertexarrays, CVAR_BOOL, 0, 0, 1 },
{ "r_anamorphic", "r_anamorphic: enable/disable widescreen mode", (void*)&glwidescreen, CVAR_BOOL, 0, 0, 1 },
{ "r_projectionhack", "r_projectionhack: enable/disable projection hack", (void*)&glprojectionhacks, CVAR_INT, 0, 0, 2 },
(void *)&r_parallaxskypanning, CVAR_BOOL, 0, 1 },
{ "r_polygonmode","r_polygonmode: debugging feature",(void *)&glpolygonmode, CVAR_INT | CVAR_NOSAVE, 0, 3 },
{ "r_redbluemode","r_redbluemode: enable/disable experimental OpenGL red-blue glasses mode",(void *)&glredbluemode, CVAR_BOOL, 0, 1 },
{ "r_shadescale","r_shadescale: multiplier for lighting",(void *)&shadescale, CVAR_FLOAT, 0, 10 },
{ "r_swapinterval","r_swapinterval: sets the GL swap interval (VSync)",(void *)&vsync, CVAR_BOOL|CVAR_FUNCPTR, 0, 1 },
{ "r_texcache","r_texcache: enable/disable OpenGL compressed texture cache",(void *)&glusetexcache, CVAR_INT, 0, 2 },
{ "r_texcompr","r_texcompr: enable/disable OpenGL texture compression",(void *)&glusetexcompr, CVAR_BOOL, 0, 1 },
{ "r_textureanisotropy", "r_textureanisotropy: changes the OpenGL texture anisotropy setting", (void *)&glanisotropy, CVAR_INT|CVAR_FUNCPTR, 0, 16 },
{ "r_texturemaxsize","r_texturemaxsize: changes the maximum OpenGL texture size limit",(void *)&gltexmaxsize, CVAR_INT | CVAR_NOSAVE, 0, 4096 },
{ "r_texturemiplevel","r_texturemiplevel: changes the highest OpenGL mipmap level used",(void *)&gltexmiplevel, CVAR_INT, 0, 6 },
{ "r_texturemode", "r_texturemode: changes the texture filtering settings", (void *)&gltexfiltermode, CVAR_INT|CVAR_FUNCPTR, 0, 5 },
{ "r_vbocount","r_vbocount: sets the number of Vertex Buffer Objects to use when drawing models",(void *)&r_vbocount, CVAR_INT, 1, 256 },
{ "r_vbos","r_vbos: enable/disable using Vertex Buffer Objects when drawing models",(void *)&r_vbos, CVAR_BOOL, 0, 1 },
{ "r_vertexarrays","r_vertexarrays: enable/disable using vertex arrays when drawing models",(void *)&r_vertexarrays, CVAR_BOOL, 0, 1 },
{ "r_anamorphic", "r_anamorphic: enable/disable widescreen mode", (void*)&glwidescreen, CVAR_BOOL, 0, 1 },
{ "r_projectionhack", "r_projectionhack: enable/disable projection hack", (void*)&glprojectionhacks, CVAR_INT, 0, 2 },
#ifdef POLYMER
// polymer cvars
{ "r_pr_lighting", "r_pr_lighting: enable/disable dynamic lights", (void*)&pr_lighting, CVAR_BOOL, 0, 0, 1 },
{ "r_pr_normalmapping", "r_pr_normalmapping: enable/disable virtual displacement mapping", (void*)&pr_normalmapping, CVAR_BOOL, 0, 0, 1 },
{ "r_pr_specularmapping", "r_pr_specularmapping: enable/disable specular mapping", (void*)&pr_specularmapping, CVAR_BOOL, 0, 0, 1 },
{ "r_pr_shadows", "r_pr_shadows: enable/disable dynamic shadows", (void*)&pr_shadows, CVAR_BOOL, 0, 0, 1 },
{ "r_pr_shadowcount", "r_pr_shadowcount: maximal amount of shadow emitting lights on screen - you need to restart the renderer for it to take effect", (void*)&pr_shadowcount, CVAR_INT, 0, 0, 64 },
{ "r_pr_shadowdetail", "r_pr_shadowdetail: sets the shadow map resolution - you need to restart the renderer for it to take effect", (void*)&pr_shadowdetail, CVAR_INT, 0, 0, 5 },
{ "r_pr_shadowfiltering", "r_pr_shadowfiltering: enable/disable shadow edges filtering - you need to restart the renderer for it to take effect", (void*)&pr_shadowfiltering, CVAR_BOOL, 0, 0, 1 },
{ "r_pr_maxlightpasses", "r_pr_maxlightpasses: the maximal amount of lights a single object can by affected by", (void*)&r_pr_maxlightpasses, CVAR_INT|CVAR_FUNCPTR, 0, 0, PR_MAXLIGHTS },
{ "r_pr_maxlightpriority", "r_pr_maxlightpriority: lowering that value removes less meaningful lights from the scene", (void*)&pr_maxlightpriority, CVAR_INT, 0, 0, PR_MAXLIGHTPRIORITY },
{ "r_pr_fov", "r_pr_fov: sets the field of vision in build angle", (void*)&pr_fov, CVAR_INT, 0, 0, 1023},
{ "r_pr_customaspect", "r_pr_customaspect: if non-zero, forces the 3D view aspect ratio", (void*)&pr_customaspect, CVAR_FLOAT, 0, 0, 3 },
{ "r_pr_billboardingmode", "r_pr_billboardingmode: face sprite display method. 0: classic mode; 1: polymost mode", (void*)&pr_billboardingmode, CVAR_INT, 0, 0, 1 },
{ "r_pr_verbosity", "r_pr_verbosity: verbosity level of the polymer renderer", (void*)&pr_verbosity, CVAR_INT, 0, 0, 3 },
{ "r_pr_wireframe", "r_pr_wireframe: toggles wireframe mode", (void*)&pr_wireframe, CVAR_INT | CVAR_NOSAVE, 0, 0, 1 },
{ "r_pr_vbos", "r_pr_vbos: contols Vertex Buffer Object usage. 0: no VBOs. 1: VBOs for map data. 2: VBOs for model data.", (void*)&pr_vbos, CVAR_INT, 0, 0, 2 },
{ "r_pr_gpusmoothing", "r_pr_gpusmoothing: toggles model animation interpolation", (void*)&pr_gpusmoothing, CVAR_INT, 0, 0, 1 },
{ "r_pr_overrideparallax", "r_pr_overrideparallax: overrides parallax mapping scale and bias values with values from the pr_parallaxscale and pr_parallaxbias cvars; use it to fine-tune DEF tokens", (void*)&pr_overrideparallax, CVAR_BOOL | CVAR_NOSAVE, 0, 0, 1 },
{ "r_pr_parallaxscale", "r_pr_parallaxscale: overriden parallax mapping offset scale", (void*)&pr_parallaxscale, CVAR_FLOAT | CVAR_NOSAVE, 0, -10, 10 },
{ "r_pr_parallaxbias", "r_pr_parallaxbias: overriden parallax mapping offset bias", (void*)&pr_parallaxbias, CVAR_FLOAT | CVAR_NOSAVE, 0, -10, 10 },
{ "r_pr_overridespecular", "r_pr_overridespecular: overrides specular material power and factor values with values from the pr_specularpower and pr_specularfactor cvars; use it to fine-tune DEF tokens", (void*)&pr_overridespecular, CVAR_BOOL | CVAR_NOSAVE, 0, 0, 1 },
{ "r_pr_specularpower", "r_pr_specularpower: overriden specular material power", (void*)&pr_specularpower, CVAR_FLOAT | CVAR_NOSAVE, 0, -10, 1000 },
{ "r_pr_specularfactor", "r_pr_specularfactor: overriden specular material factor", (void*)&pr_specularfactor, CVAR_FLOAT | CVAR_NOSAVE, 0, -10, 1000 },
{ "r_pr_ati_fboworkaround", "r_pr_ati_fboworkaround: enable this to workaround an ATI driver bug that causes sprite shadows to be square - you need to restart the renderer for it to take effect", (void*)&pr_ati_fboworkaround, CVAR_BOOL | CVAR_NOSAVE, 0, 0, 1 },
{ "r_pr_ati_nodepthoffset", "r_pr_ati_nodepthoffset: enable this to workaround an ATI driver bug that causes sprite drawing to freeze the game on Radeon X1x00 hardware - you need to restart the renderer for it to take effect", (void*)&pr_ati_nodepthoffset, CVAR_BOOL | CVAR_NOSAVE, 0, 0, 1 },
{ "r_pr_lighting", "r_pr_lighting: enable/disable dynamic lights", (void*)&pr_lighting, CVAR_BOOL, 0, 1 },
{ "r_pr_normalmapping", "r_pr_normalmapping: enable/disable virtual displacement mapping", (void*)&pr_normalmapping, CVAR_BOOL, 0, 1 },
{ "r_pr_specularmapping", "r_pr_specularmapping: enable/disable specular mapping", (void*)&pr_specularmapping, CVAR_BOOL, 0, 1 },
{ "r_pr_shadows", "r_pr_shadows: enable/disable dynamic shadows", (void*)&pr_shadows, CVAR_BOOL, 0, 1 },
{ "r_pr_shadowcount", "r_pr_shadowcount: maximal amount of shadow emitting lights on screen - you need to restart the renderer for it to take effect", (void*)&pr_shadowcount, CVAR_INT, 0, 64 },
{ "r_pr_shadowdetail", "r_pr_shadowdetail: sets the shadow map resolution - you need to restart the renderer for it to take effect", (void*)&pr_shadowdetail, CVAR_INT, 0, 5 },
{ "r_pr_shadowfiltering", "r_pr_shadowfiltering: enable/disable shadow edges filtering - you need to restart the renderer for it to take effect", (void*)&pr_shadowfiltering, CVAR_BOOL, 0, 1 },
{ "r_pr_maxlightpasses", "r_pr_maxlightpasses: the maximal amount of lights a single object can by affected by", (void*)&r_pr_maxlightpasses, CVAR_INT|CVAR_FUNCPTR, 0, PR_MAXLIGHTS },
{ "r_pr_maxlightpriority", "r_pr_maxlightpriority: lowering that value removes less meaningful lights from the scene", (void*)&pr_maxlightpriority, CVAR_INT, 0, PR_MAXLIGHTPRIORITY },
{ "r_pr_fov", "r_pr_fov: sets the field of vision in build angle", (void*)&pr_fov, CVAR_INT, 0, 1023},
{ "r_pr_customaspect", "r_pr_customaspect: if non-zero, forces the 3D view aspect ratio", (void*)&pr_customaspect, CVAR_FLOAT, 0, 3 },
{ "r_pr_billboardingmode", "r_pr_billboardingmode: face sprite display method. 0: classic mode; 1: polymost mode", (void*)&pr_billboardingmode, CVAR_INT, 0, 1 },
{ "r_pr_verbosity", "r_pr_verbosity: verbosity level of the polymer renderer", (void*)&pr_verbosity, CVAR_INT, 0, 3 },
{ "r_pr_wireframe", "r_pr_wireframe: toggles wireframe mode", (void*)&pr_wireframe, CVAR_INT | CVAR_NOSAVE, 0, 1 },
{ "r_pr_vbos", "r_pr_vbos: contols Vertex Buffer Object usage. 0: no VBOs. 1: VBOs for map data. 2: VBOs for model data.", (void*)&pr_vbos, CVAR_INT, 0, 2 },
{ "r_pr_gpusmoothing", "r_pr_gpusmoothing: toggles model animation interpolation", (void*)&pr_gpusmoothing, CVAR_INT, 0, 1 },
{ "r_pr_overrideparallax", "r_pr_overrideparallax: overrides parallax mapping scale and bias values with values from the pr_parallaxscale and pr_parallaxbias cvars; use it to fine-tune DEF tokens", (void*)&pr_overrideparallax, CVAR_BOOL | CVAR_NOSAVE, 0, 1 },
{ "r_pr_parallaxscale", "r_pr_parallaxscale: overriden parallax mapping offset scale", (void*)&pr_parallaxscale, CVAR_FLOAT | CVAR_NOSAVE, -10, 10 },
{ "r_pr_parallaxbias", "r_pr_parallaxbias: overriden parallax mapping offset bias", (void*)&pr_parallaxbias, CVAR_FLOAT | CVAR_NOSAVE, -10, 10 },
{ "r_pr_overridespecular", "r_pr_overridespecular: overrides specular material power and factor values with values from the pr_specularpower and pr_specularfactor cvars; use it to fine-tune DEF tokens", (void*)&pr_overridespecular, CVAR_BOOL | CVAR_NOSAVE, 0, 1 },
{ "r_pr_specularpower", "r_pr_specularpower: overriden specular material power", (void*)&pr_specularpower, CVAR_FLOAT | CVAR_NOSAVE, -10, 1000 },
{ "r_pr_specularfactor", "r_pr_specularfactor: overriden specular material factor", (void*)&pr_specularfactor, CVAR_FLOAT | CVAR_NOSAVE, -10, 1000 },
{ "r_pr_ati_fboworkaround", "r_pr_ati_fboworkaround: enable this to workaround an ATI driver bug that causes sprite shadows to be square - you need to restart the renderer for it to take effect", (void*)&pr_ati_fboworkaround, CVAR_BOOL | CVAR_NOSAVE, 0, 1 },
{ "r_pr_ati_nodepthoffset", "r_pr_ati_nodepthoffset: enable this to workaround an ATI driver bug that causes sprite drawing to freeze the game on Radeon X1x00 hardware - you need to restart the renderer for it to take effect", (void*)&pr_ati_nodepthoffset, CVAR_BOOL | CVAR_NOSAVE, 0, 1 },
#endif
{ "r_models","r_models: enable/disable model rendering",(void *)&usemodels, CVAR_BOOL, 0, 0, 1 },
{ "r_hightile","r_hightile: enable/disable hightile texture rendering",(void *)&usehightile, CVAR_BOOL, 0, 0, 1 },
{ "r_models","r_models: enable/disable model rendering",(void *)&usemodels, CVAR_BOOL, 0, 1 },
{ "r_hightile","r_hightile: enable/disable hightile texture rendering",(void *)&usehightile, CVAR_BOOL, 0, 1 },
#endif
};
for (i=0; i<sizeof(cvars_polymost)/sizeof(cvars_polymost[0]); i++)
{
OSD_RegisterCvar(&cvars_polymost[i]);
// this is a little different than elsewhere
if (cvars_polymost[i].type & CVAR_FUNCPTR) OSD_RegisterFunction(cvars_polymost[i].name, cvars_polymost[i].helpstr, osdcmd_cvar_set_polymost);
else OSD_RegisterFunction(cvars_polymost[i].name, cvars_polymost[i].helpstr, osdcmd_cvar_set);
}
if (OSD_RegisterCvar(&cvars_polymost[i]))
continue;
OSD_RegisterFunction(cvars_polymost[i].name, cvars_polymost[i].helpstr,
cvars_polymost[i].type & CVAR_FUNCPTR ? osdcmd_cvar_set_polymost : osdcmd_cvar_set);
}
}
void polymost_precache(int32_t dapicnum, int32_t dapalnum, int32_t datype)

View file

@ -0,0 +1,265 @@
#define WIN32_LEAN_AND_MEAN
#include <windows.h>
#include "rawinput.h"
#include "winlayer.h"
#include "scancodes.h"
#include "build.h"
static BOOL init_done = 0;
static uint8_t KeyboardState[256] = {0};
static uint8_t MouseState0[5] = {0};
static uint8_t MouseState1[5] = {0};
static int8_t MWheel = 0;
extern volatile uint8_t moustat, mousegrab;
extern uint32_t mousewheel[2];
#define MASK_DOWN (1<<(i<<1))
#define MASK_UP (MASK_DOWN<<1)
#define MouseWheelFakePressTime 50
void RI_ProcessMouse(const RAWMOUSE* rmouse)
{
int32_t i, mask;
if (!mousegrab)
return;
mousex += rmouse->lLastX;
mousey += rmouse->lLastY;
if (rmouse->usFlags & MOUSE_MOVE_ABSOLUTE)
{
// untested... maybe devices like wacom tablets set this flag?
POINT pos = { xdim>>1, ydim>>1 };
ClientToScreen((HWND)win_gethwnd(), &pos);
mousex -= pos.x;
mousey -= pos.y;
}
for (i = 0, mask = 1; i < 4; i++)
{
MouseState1[i] = MouseState0[i];
if (rmouse->usButtonFlags & mask) // button down
{
MouseState1[i] = 1;
if (mousepresscallback)
mousepresscallback(i, MouseState1[i]);
mouseb |= 1<<i;
}
else if (rmouse->usButtonFlags & (mask<<1)) // button up
{
MouseState1[i] = 0;
if (mousepresscallback)
mousepresscallback(i, MouseState1[i]);
mouseb &= ~(1<<i);
}
mask <<= 2;
}
MWheel = (rmouse->usButtonFlags & RI_MOUSE_WHEEL) ? rmouse->usButtonData : 0;
if (MWheel > 0) // wheel up
{
if (mousewheel[0] > 0 && mousepresscallback) mousepresscallback(5,0);
mousewheel[0] = getticks();
mouseb |= 16;
if (mousepresscallback) mousepresscallback(5, 1);
}
else if (MWheel < 0) // wheel down
{
if (mousewheel[1] > 0 && mousepresscallback) mousepresscallback(6,0);
mousewheel[1] = getticks();
mouseb |= 32;
if (mousepresscallback) mousepresscallback(6, 1);
}
}
void RI_ProcessKeyboard(const RAWKEYBOARD* rkbd)
{
uint8_t key = rkbd->MakeCode;
uint8_t VKey = rkbd->VKey;
// for some reason rkbd->MakeCode is wrong for these
// even though rkbd->VKey is right...
switch (VKey)
{
case VK_SHIFT:
if (rkbd->Flags & RI_KEY_E0) VKey = VK_RSHIFT, key = sc_RightShift; break;
case VK_CONTROL:
if (rkbd->Flags & RI_KEY_E0) VKey = VK_RCONTROL, key = sc_RightControl; break;
case VK_MENU:
if (rkbd->Flags & RI_KEY_E0) VKey = VK_RMENU, key = sc_RightAlt; break;
case VK_UP:
key = sc_UpArrow; break;
case VK_DOWN:
key = sc_DownArrow; break;
case VK_LEFT:
key = sc_LeftArrow; break;
case VK_RIGHT:
key = sc_RightArrow; break;
case VK_INSERT:
key = sc_Insert; break;
case VK_HOME:
key = sc_Home; break;
case VK_DELETE:
key = sc_Delete; break;
case VK_END:
key = sc_End; break;
case VK_PRIOR:
key = sc_PgUp; break;
case VK_NEXT:
key = sc_PgDn; break;
}
KeyboardState[VKey] &= 0xfe;
KeyboardState[VKey] |= 1 - (rkbd->Flags & RI_KEY_BREAK);
if (OSD_HandleScanCode(key, (rkbd->Flags & RI_KEY_BREAK) == 0))
{
SetKey(key, (rkbd->Flags & RI_KEY_BREAK) == 0);
if (keypresscallback)
keypresscallback(key, (rkbd->Flags & RI_KEY_BREAK) == 0);
}
}
// keyboard is always captured regardless of what we tell this function
int32_t RI_CaptureInput(int32_t grab, HWND target)
{
RAWINPUTDEVICE raw[2];
raw[0].usUsagePage = 0x01;
raw[0].usUsage = 0x02;
raw[0].dwFlags = grab ? (RIDEV_NOLEGACY | RIDEV_CAPTUREMOUSE) : 0;
raw[0].hwndTarget = grab ? target : NULL;
raw[1].usUsagePage = 0x01;
raw[1].usUsage = 0x06;
raw[1].dwFlags = 0;
raw[1].hwndTarget = NULL;
mousegrab = grab;
return (RegisterRawInputDevices(raw, 2, sizeof(raw[0])) == FALSE);
}
uint8_t RI_MouseState(uint8_t Button)
{
return ((MouseState0[Button-1] << 1) | MouseState1[Button-1]) & 0x03;
}
void RI_PollDevices()
{
int32_t i;
MSG msg;
if (!init_done)
{
if (RI_CaptureInput(1, (HWND)win_gethwnd()))
return;
init_done = 1;
}
for (i = 0; i < 256; i++)
KeyboardState[i] = (KeyboardState[i] << 1) | (1 & KeyboardState[i]);
Bmemcpy(MouseState0, MouseState1, sizeof(MouseState0));
MWheel = 0;
while (PeekMessage(&msg, 0, WM_INPUT, WM_INPUT, PM_REMOVE | PM_QS_INPUT))
{
if (GET_RAWINPUT_CODE_WPARAM(msg.wParam) == RIM_INPUT)
{
UINT dwSize = sizeof(RAWINPUT);
RAWINPUT raw;
GetRawInputData((HRAWINPUT)msg.lParam, RID_INPUT, &raw, &dwSize, sizeof(RAWINPUTHEADER));
if (raw.header.dwType == RIM_TYPEKEYBOARD)
RI_ProcessKeyboard(&raw.data.keyboard);
else if (raw.header.dwType == RIM_TYPEMOUSE)
RI_ProcessMouse(&raw.data.mouse);
}
DefWindowProc(msg.hwnd, msg.message, msg.wParam, msg.lParam);
}
if (mousegrab)
{
// center the cursor in the window
POINT pt = { xdim>>1, ydim>>1 };
ClientToScreen((HWND)win_gethwnd(), &pt);
SetCursorPos(pt.x, pt.y);
// do this here because we only want the wheel to signal once, but hold the state for a moment
if (mousewheel[0] > 0 && getticks() - mousewheel[0] > MouseWheelFakePressTime)
{
if (mousepresscallback) mousepresscallback(5,0);
mousewheel[0] = 0; mouseb &= ~16;
}
if (mousewheel[1] > 0 && getticks() - mousewheel[1] > MouseWheelFakePressTime)
{
if (mousepresscallback) mousepresscallback(6,0);
mousewheel[1] = 0; mouseb &= ~32;
}
}
}
int32_t initmouse(void)
{
if (moustat) return 0;
grabmouse(moustat = 1);
return 0;
}
void uninitmouse(void)
{
if (!moustat) return;
grabmouse(moustat = 0);
}
void grabmouse(char a)
{
static POINT pos;
static int32_t d = 0;
if (!moustat) return;
if (!mousegrab || !d)
{
GetCursorPos(&pos);
d = 1;
}
ShowCursor(a == 0);
RI_CaptureInput(a, (HWND)win_gethwnd());
SetCursorPos(pos.x, pos.y);
mousex = mousey = mouseb = 0;
}
void readmousexy(int32_t *x, int32_t *y)
{
if (!moustat || !mousegrab) { *x = *y = 0; return; }
*x = mousex;
mousex = 0;
*y = mousey;
mousey = 0;
}
void readmousebstatus(int32_t *b)
{
if (!moustat || !mousegrab) { *b = 0; return; }
*b = mouseb;
}

View file

@ -522,7 +522,7 @@ const char *getjoyname(int32_t what, int32_t num)
}
//
// bgetchar, bkbhit, bflushchars -- character-based input functions
// bgetchar, bflushchars -- character-based input functions
//
char bgetchar(void)
{
@ -536,11 +536,6 @@ char bgetchar(void)
}
}
int32_t bkbhit(void)
{
return (keyasciififoplc != keyasciififoend);
}
void bflushchars(void)
{
keyasciififoplc = keyasciififoend = 0;

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@

Microsoft Visual Studio Solution File, Format Version 10.00
# Visual C++ Express 2008
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eduke32", "eduke32.vcproj", "{8E7A6179-0B72-4073-8A4C-E8682D481DAE}"
Microsoft Visual Studio Solution File, Format Version 11.00
# Visual Studio 2010
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "eduke32", "eduke32.vcxproj", "{8E7A6179-0B72-4073-8A4C-E8682D481DAE}"
EndProject
Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution

View file

@ -0,0 +1,263 @@
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|Win32">
<Configuration>Debug</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
<ProjectConfiguration Include="Release|Win32">
<Configuration>Release</Configuration>
<Platform>Win32</Platform>
</ProjectConfiguration>
</ItemGroup>
<PropertyGroup Label="Globals">
<ProjectGuid>{8E7A6179-0B72-4073-8A4C-E8682D481DAE}</ProjectGuid>
<RootNamespace>eduke32</RootNamespace>
<Keyword>MakeFileProj</Keyword>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
<ConfigurationType>Makefile</ConfigurationType>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
<ImportGroup Label="ExtensionSettings">
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(Configuration)\</IntDir>
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /f Makefile.msvc DEBUG=1</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /f Makefile.msvc veryclean all DEBUG=1</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">nmake /f Makefile.msvc veryclean</NMakeCleanCommandLine>
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">eduke32.exe</NMakeOutput>
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">WIN32;_DEBUG;SUPERBUILD;POLYMOST;POLYMER;USE_OPENGL;NOCOPYPROTECT;RENDERTYPEWIN;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeIncludeSearchPath);build\include;source\jmact;source\jaudiolib\include;source\enet\include;</NMakeIncludeSearchPath>
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</OutDir>
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(Configuration)\</IntDir>
<NMakeBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">nmake /f Makefile.msvc</NMakeBuildCommandLine>
<NMakeReBuildCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">nmake /f Makefile.msvc veryclean all</NMakeReBuildCommandLine>
<NMakeCleanCommandLine Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">nmake /f Makefile.msvc veryclean</NMakeCleanCommandLine>
<NMakeOutput Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">eduke32.exe</NMakeOutput>
<NMakePreprocessorDefinitions Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">WIN32;_DEBUG;SUPERBUILD;POLYMOST;POLYMER;USE_OPENGL;NOCOPYPROTECT;RENDERTYPEWIN;$(NMakePreprocessorDefinitions)</NMakePreprocessorDefinitions>
<NMakeIncludeSearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeIncludeSearchPath);build\include;source\jmact;source\jaudiolib\include;source\enet\include;</NMakeIncludeSearchPath>
<NMakeForcedIncludes Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedIncludes)</NMakeForcedIncludes>
<NMakeAssemblySearchPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeAssemblySearchPath)</NMakeAssemblySearchPath>
<NMakeForcedUsingAssemblies Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(NMakeForcedUsingAssemblies)</NMakeForcedUsingAssemblies>
<IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">u:\SDKs\oggvorbis-win32sdk-1.0.1\include;$(IncludePath)</IncludePath>
<SourcePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SourcePath)</SourcePath>
</PropertyGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
<BuildLog>
<Path>
</Path>
</BuildLog>
</ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<BuildLog>
<Path>
</Path>
</BuildLog>
</ItemDefinitionGroup>
<ItemGroup>
<ClInclude Include="build\include\a.h" />
<ClInclude Include="build\include\baselayer.h" />
<ClInclude Include="build\include\build.h" />
<ClInclude Include="build\include\cache1d.h" />
<ClInclude Include="build\include\compat.h" />
<ClInclude Include="build\include\crc32.h" />
<ClInclude Include="build\include\dxdidf.h" />
<ClInclude Include="build\include\dynamicgtk.h" />
<ClInclude Include="build\include\editor.h" />
<ClInclude Include="build\include\enet_mmulti.h" />
<ClInclude Include="build\include\glbuild.h" />
<ClInclude Include="build\include\glext.h" />
<ClInclude Include="build\include\gtkbits.h" />
<ClInclude Include="build\include\kplib.h" />
<ClInclude Include="build\include\lzwnew.h" />
<ClInclude Include="build\include\malloc.c.h" />
<ClInclude Include="build\include\md4.h" />
<ClInclude Include="build\include\mdsprite.h" />
<ClInclude Include="build\include\mmulti.h" />
<ClInclude Include="build\include\mutex.h" />
<ClInclude Include="build\include\nedmalloc.h" />
<ClInclude Include="build\include\osd.h" />
<ClInclude Include="build\include\osxbits.h" />
<ClInclude Include="build\include\osxmain.h" />
<ClInclude Include="build\include\polymer.h" />
<ClInclude Include="build\include\polymost.h" />
<ClInclude Include="build\include\pragmas.h" />
<ClInclude Include="build\include\quicklz.h" />
<ClInclude Include="build\include\rawinput.h" />
<ClInclude Include="build\include\scriptfile.h" />
<ClInclude Include="build\include\sdlayer.h" />
<ClInclude Include="build\include\startwin.editor.h" />
<ClInclude Include="build\include\winlayer.h" />
<ClInclude Include="build\include\msvc\inttypes.h" />
<ClInclude Include="build\include\msvc\stdint.h" />
<ClInclude Include="build\src\engine_priv.h" />
<ClInclude Include="source\_functio.h" />
<ClInclude Include="source\_rts.h" />
<ClInclude Include="source\config.h" />
<ClInclude Include="source\duke3d.h" />
<ClInclude Include="source\funct.h" />
<ClInclude Include="source\function.h" />
<ClInclude Include="source\gamedef.h" />
<ClInclude Include="source\gamedefs.h" />
<ClInclude Include="source\grpscan.h" />
<ClInclude Include="source\keys.h" />
<ClInclude Include="source\macros.h" />
<ClInclude Include="source\mapster32.h" />
<ClInclude Include="source\mdump.h" />
<ClInclude Include="source\names.h" />
<ClInclude Include="source\namesdyn.h" />
<ClInclude Include="source\osdcmds.h" />
<ClInclude Include="source\osdfuncs.h" />
<ClInclude Include="source\rts.h" />
<ClInclude Include="source\soundefs.h" />
<ClInclude Include="source\sounds.h" />
<ClInclude Include="source\sounds_mapster32.h" />
<ClInclude Include="source\startwin.game.h" />
<ClInclude Include="source\jaudiolib\src\_multivc.h" />
<ClInclude Include="source\jaudiolib\src\driver_directsound.h" />
<ClInclude Include="source\jaudiolib\src\driver_nosound.h" />
<ClInclude Include="source\jaudiolib\src\driver_sdl.h" />
<ClInclude Include="source\jaudiolib\src\drivers.h" />
<ClInclude Include="source\jaudiolib\include\fx_man.h" />
<ClInclude Include="source\jaudiolib\src\linklist.h" />
<ClInclude Include="source\jaudiolib\src\ll_man.h" />
<ClInclude Include="source\jaudiolib\src\multivoc.h" />
<ClInclude Include="source\jaudiolib\include\music.h" />
<ClInclude Include="source\jaudiolib\src\pitch.h" />
<ClInclude Include="source\jaudiolib\include\sndcards.h" />
<ClInclude Include="source\jmact\_control.h" />
<ClInclude Include="source\jmact\_scrplib.h" />
<ClInclude Include="source\jmact\animlib.h" />
<ClInclude Include="source\jmact\control.h" />
<ClInclude Include="source\jmact\file_lib.h" />
<ClInclude Include="source\jmact\keyboard.h" />
<ClInclude Include="source\jmact\mathutil.h" />
<ClInclude Include="source\jmact\mouse.h" />
<ClInclude Include="source\jmact\scriplib.h" />
<ClInclude Include="source\jmact\util_lib.h" />
<ClInclude Include="source\enet\include\enet\callbacks.h" />
<ClInclude Include="source\enet\include\enet\enet.h" />
<ClInclude Include="source\enet\include\enet\list.h" />
<ClInclude Include="source\enet\include\enet\protocol.h" />
<ClInclude Include="source\enet\include\enet\time.h" />
<ClInclude Include="source\enet\include\enet\types.h" />
<ClInclude Include="source\enet\include\enet\unix.h" />
<ClInclude Include="source\enet\include\enet\utility.h" />
<ClInclude Include="source\enet\include\enet\win32.h" />
</ItemGroup>
<ItemGroup>
<ClCompile Include="build\src\a-c.c" />
<ClCompile Include="build\src\baselayer.c" />
<ClCompile Include="build\src\build.c" />
<ClCompile Include="build\src\cache1d.c" />
<ClCompile Include="build\src\compat.c" />
<ClCompile Include="build\src\config.c" />
<ClCompile Include="build\src\crc32.c" />
<ClCompile Include="build\src\defs.c" />
<ClCompile Include="build\src\dynamicgtk.c" />
<ClCompile Include="build\src\engine.c" />
<ClCompile Include="build\src\glbuild.c" />
<ClCompile Include="build\src\gtkbits.c" />
<ClCompile Include="build\src\hightile.c" />
<ClCompile Include="build\src\kplib.c" />
<ClCompile Include="build\src\lzwnew.c" />
<ClCompile Include="build\src\md4.c" />
<ClCompile Include="build\src\mdsprite.c" />
<ClCompile Include="build\src\mutex.c" />
<ClCompile Include="build\src\nedmalloc.c" />
<ClCompile Include="build\src\osd.c" />
<ClCompile Include="build\src\polymer.c" />
<ClCompile Include="build\src\polymost.c" />
<ClCompile Include="build\src\pragmas.c" />
<ClCompile Include="build\src\quicklz.c" />
<ClCompile Include="build\src\rawinput.c" />
<ClCompile Include="build\src\scriptfile.c" />
<ClCompile Include="build\src\sdlayer.c" />
<ClCompile Include="build\src\smalltextfont.c" />
<ClCompile Include="build\src\startgtk.editor.c" />
<ClCompile Include="build\src\startwin.editor.c" />
<ClCompile Include="build\src\textfont.c" />
<ClCompile Include="build\src\winlayer.c" />
<ClCompile Include="source\actors.c" />
<ClCompile Include="source\anim.c" />
<ClCompile Include="source\astub.c" />
<ClCompile Include="source\config.c" />
<ClCompile Include="source\game.c" />
<ClCompile Include="source\gamedef.c" />
<ClCompile Include="source\gameexec.c" />
<ClCompile Include="source\gamestructures.c" />
<ClCompile Include="source\gamevars.c" />
<ClCompile Include="source\global.c" />
<ClCompile Include="source\grpscan.c" />
<ClCompile Include="source\m32def.c" />
<ClCompile Include="source\m32exec.c" />
<ClCompile Include="source\m32structures.c" />
<ClCompile Include="source\m32vars.c" />
<ClCompile Include="source\mdump.cpp" />
<ClCompile Include="source\menus.c" />
<ClCompile Include="source\midi.c" />
<ClCompile Include="source\mpu401.c" />
<ClCompile Include="source\music.c" />
<ClCompile Include="source\namesdyn.c" />
<ClCompile Include="source\osdcmds.c" />
<ClCompile Include="source\osdfuncs.c" />
<ClCompile Include="source\player.c" />
<ClCompile Include="source\premap.c" />
<ClCompile Include="source\rts.c" />
<ClCompile Include="source\savegame.c" />
<ClCompile Include="source\sdlmusic.c" />
<ClCompile Include="source\sector.c" />
<ClCompile Include="source\sounds.c" />
<ClCompile Include="source\sounds_mapster32.c" />
<ClCompile Include="source\startgtk.game.c" />
<ClCompile Include="source\startwin.game.c" />
<ClCompile Include="source\winbits.c" />
<ClCompile Include="source\wrapper.c" />
<ClCompile Include="source\jaudiolib\src\driver_directsound.c" />
<ClCompile Include="source\jaudiolib\src\driver_nosound.c" />
<ClCompile Include="source\jaudiolib\src\driver_sdl.c" />
<ClCompile Include="source\jaudiolib\src\drivers.c" />
<ClCompile Include="source\jaudiolib\src\fx_man.c" />
<ClCompile Include="source\jaudiolib\src\mix.c" />
<ClCompile Include="source\jaudiolib\src\mixst.c" />
<ClCompile Include="source\jaudiolib\src\multivoc.c" />
<ClCompile Include="source\jaudiolib\src\pitch.c" />
<ClCompile Include="source\jaudiolib\src\vorbis.c" />
<ClCompile Include="source\jmact\animlib.c" />
<ClCompile Include="source\jmact\control.c" />
<ClCompile Include="source\jmact\file_lib.c" />
<ClCompile Include="source\jmact\keyboard.c" />
<ClCompile Include="source\jmact\mathutil.c" />
<ClCompile Include="source\jmact\mouse.c" />
<ClCompile Include="source\jmact\scriplib.c" />
<ClCompile Include="source\jmact\util_lib.c" />
<ClCompile Include="source\enet\src\callbacks.c" />
<ClCompile Include="source\enet\src\host.c" />
<ClCompile Include="source\enet\src\list.c" />
<ClCompile Include="source\enet\src\packet.c" />
<ClCompile Include="source\enet\src\peer.c" />
<ClCompile Include="source\enet\src\protocol.c" />
<ClCompile Include="source\enet\src\unix.c" />
<ClCompile Include="source\enet\src\win32.c" />
</ItemGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
<ImportGroup Label="ExtensionTargets">
</ImportGroup>
</Project>

View file

@ -0,0 +1,603 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<Filter Include="enet">
<UniqueIdentifier>{be808922-2ddf-4835-a57d-42e2f8d6e6d1}</UniqueIdentifier>
</Filter>
<Filter Include="enet\source">
<UniqueIdentifier>{6b639a6d-6609-479e-bf61-3e2d3e4323e6}</UniqueIdentifier>
</Filter>
<Filter Include="enet\headers">
<UniqueIdentifier>{84e51a60-037b-40c6-933a-7001d46906ab}</UniqueIdentifier>
</Filter>
<Filter Include="jaudiolib">
<UniqueIdentifier>{eb6a8145-04f6-4b81-b8eb-508836cfdc91}</UniqueIdentifier>
</Filter>
<Filter Include="jaudiolib\headers">
<UniqueIdentifier>{7f1918c8-1b71-43db-b2af-aefaf13d21ac}</UniqueIdentifier>
</Filter>
<Filter Include="jaudiolib\source">
<UniqueIdentifier>{447f3e7e-c01b-4ec3-8427-36441da24049}</UniqueIdentifier>
</Filter>
<Filter Include="build">
<UniqueIdentifier>{da5afe7a-2de4-4594-b07f-69cd3d29cc1b}</UniqueIdentifier>
</Filter>
<Filter Include="build\headers">
<UniqueIdentifier>{4386b181-dad1-4aaa-9395-b5b57e49bca1}</UniqueIdentifier>
</Filter>
<Filter Include="build\headers\MSVC">
<UniqueIdentifier>{647e88f0-5d39-46cc-9822-460f2db9dfe6}</UniqueIdentifier>
</Filter>
<Filter Include="build\source">
<UniqueIdentifier>{766da152-470f-4b3b-8c8c-8289206d0d4e}</UniqueIdentifier>
</Filter>
<Filter Include="eduke32">
<UniqueIdentifier>{df162924-c116-4c59-a0f3-589ebfb0ca27}</UniqueIdentifier>
</Filter>
<Filter Include="eduke32\source">
<UniqueIdentifier>{dd93df66-1ed9-4b54-bd54-18abf46d2773}</UniqueIdentifier>
</Filter>
<Filter Include="eduke32\headers">
<UniqueIdentifier>{82d4000f-cd8c-4737-88dc-4ada5775a68e}</UniqueIdentifier>
</Filter>
<Filter Include="jmact">
<UniqueIdentifier>{65030203-c837-4739-a552-281c7535372f}</UniqueIdentifier>
</Filter>
<Filter Include="jmact\headers">
<UniqueIdentifier>{607ab16a-c3a5-4dad-b6ba-3393e6309d23}</UniqueIdentifier>
</Filter>
<Filter Include="jmact\source">
<UniqueIdentifier>{8a6aad55-a3bc-4e4f-a61d-4652c29d8b92}</UniqueIdentifier>
</Filter>
</ItemGroup>
<ItemGroup>
<ClInclude Include="build\include\a.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\baselayer.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\build.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\cache1d.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\compat.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\crc32.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\dxdidf.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\dynamicgtk.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\editor.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\enet_mmulti.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\glbuild.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\glext.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\gtkbits.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\kplib.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\lzwnew.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\malloc.c.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\md4.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\mdsprite.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\mmulti.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\nedmalloc.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\osd.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\osxbits.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\osxmain.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\polymer.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\polymost.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\pragmas.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\quicklz.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\scriptfile.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\sdlayer.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\startwin.editor.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\winlayer.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\msvc\inttypes.h">
<Filter>build\headers\MSVC</Filter>
</ClInclude>
<ClInclude Include="build\include\msvc\stdint.h">
<Filter>build\headers\MSVC</Filter>
</ClInclude>
<ClInclude Include="build\src\engine_priv.h">
<Filter>build\source</Filter>
</ClInclude>
<ClInclude Include="source\_functio.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\_rts.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\config.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\duke3d.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\funct.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\function.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\gamedef.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\gamedefs.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\grpscan.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\keys.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\macros.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\mapster32.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\mdump.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\names.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\namesdyn.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\osdcmds.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\osdfuncs.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\rts.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\soundefs.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\sounds.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\sounds_mapster32.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\startwin.game.h">
<Filter>eduke32\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\src\_multivc.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\src\driver_directsound.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\src\driver_nosound.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\src\driver_sdl.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\src\drivers.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\include\fx_man.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\src\linklist.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\src\ll_man.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\src\multivoc.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\include\music.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\src\pitch.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jaudiolib\include\sndcards.h">
<Filter>jaudiolib\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\_control.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\_scrplib.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\animlib.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\control.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\file_lib.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\keyboard.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\mathutil.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\mouse.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\scriplib.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\jmact\util_lib.h">
<Filter>jmact\headers</Filter>
</ClInclude>
<ClInclude Include="source\enet\include\enet\callbacks.h">
<Filter>enet\headers</Filter>
</ClInclude>
<ClInclude Include="source\enet\include\enet\enet.h">
<Filter>enet\headers</Filter>
</ClInclude>
<ClInclude Include="source\enet\include\enet\list.h">
<Filter>enet\headers</Filter>
</ClInclude>
<ClInclude Include="source\enet\include\enet\protocol.h">
<Filter>enet\headers</Filter>
</ClInclude>
<ClInclude Include="source\enet\include\enet\time.h">
<Filter>enet\headers</Filter>
</ClInclude>
<ClInclude Include="source\enet\include\enet\types.h">
<Filter>enet\headers</Filter>
</ClInclude>
<ClInclude Include="source\enet\include\enet\unix.h">
<Filter>enet\headers</Filter>
</ClInclude>
<ClInclude Include="source\enet\include\enet\utility.h">
<Filter>enet\headers</Filter>
</ClInclude>
<ClInclude Include="source\enet\include\enet\win32.h">
<Filter>enet\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\mutex.h">
<Filter>build\headers</Filter>
</ClInclude>
<ClInclude Include="build\include\rawinput.h">
<Filter>build\headers</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="build\src\a-c.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\baselayer.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\build.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\cache1d.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\compat.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\config.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\crc32.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\defs.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\dynamicgtk.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\engine.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\glbuild.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\gtkbits.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\hightile.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\kplib.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\lzwnew.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\md4.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\mdsprite.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\nedmalloc.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\osd.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\polymer.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\polymost.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\pragmas.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\quicklz.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\scriptfile.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\sdlayer.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\smalltextfont.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\startgtk.editor.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\startwin.editor.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\textfont.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\winlayer.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="source\actors.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\anim.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\astub.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\config.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\game.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\gamedef.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\gameexec.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\gamestructures.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\gamevars.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\global.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\grpscan.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\m32def.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\m32exec.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\m32structures.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\m32vars.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\mdump.cpp">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\menus.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\midi.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\mpu401.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\music.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\namesdyn.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\osdcmds.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\osdfuncs.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\player.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\premap.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\rts.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\savegame.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\sdlmusic.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\sector.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\sounds.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\sounds_mapster32.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\startgtk.game.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\startwin.game.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\winbits.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\wrapper.c">
<Filter>eduke32\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\driver_directsound.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\driver_nosound.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\driver_sdl.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\drivers.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\fx_man.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\mix.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\mixst.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\multivoc.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\pitch.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jaudiolib\src\vorbis.c">
<Filter>jaudiolib\source</Filter>
</ClCompile>
<ClCompile Include="source\jmact\animlib.c">
<Filter>jmact\source</Filter>
</ClCompile>
<ClCompile Include="source\jmact\control.c">
<Filter>jmact\source</Filter>
</ClCompile>
<ClCompile Include="source\jmact\file_lib.c">
<Filter>jmact\source</Filter>
</ClCompile>
<ClCompile Include="source\jmact\keyboard.c">
<Filter>jmact\source</Filter>
</ClCompile>
<ClCompile Include="source\jmact\mathutil.c">
<Filter>jmact\source</Filter>
</ClCompile>
<ClCompile Include="source\jmact\mouse.c">
<Filter>jmact\source</Filter>
</ClCompile>
<ClCompile Include="source\jmact\scriplib.c">
<Filter>jmact\source</Filter>
</ClCompile>
<ClCompile Include="source\jmact\util_lib.c">
<Filter>jmact\source</Filter>
</ClCompile>
<ClCompile Include="source\enet\src\callbacks.c">
<Filter>enet\source</Filter>
</ClCompile>
<ClCompile Include="source\enet\src\host.c">
<Filter>enet\source</Filter>
</ClCompile>
<ClCompile Include="source\enet\src\list.c">
<Filter>enet\source</Filter>
</ClCompile>
<ClCompile Include="source\enet\src\packet.c">
<Filter>enet\source</Filter>
</ClCompile>
<ClCompile Include="source\enet\src\peer.c">
<Filter>enet\source</Filter>
</ClCompile>
<ClCompile Include="source\enet\src\protocol.c">
<Filter>enet\source</Filter>
</ClCompile>
<ClCompile Include="source\enet\src\unix.c">
<Filter>enet\source</Filter>
</ClCompile>
<ClCompile Include="source\enet\src\win32.c">
<Filter>enet\source</Filter>
</ClCompile>
<ClCompile Include="build\src\mutex.c">
<Filter>build\source</Filter>
</ClCompile>
<ClCompile Include="build\src\rawinput.c">
<Filter>build\source</Filter>
</ClCompile>
</ItemGroup>
</Project>

View file

@ -0,0 +1,3 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

View file

@ -1 +0,0 @@
nmake /f Makefile.msvc %1 %2 %3 %4 %5

View file

@ -1 +0,0 @@
wmake -f Makefile.watcom %1 %2 %3 %4 %5

File diff suppressed because it is too large Load diff

View file

@ -4326,7 +4326,7 @@ static void Keys3d(void)
if (g_numsounds > 0 && AmbienceToggle)
{
M32_MoveFX();
S_Pan3D();
S_Update();
}
if (usedcount && !helpon)
@ -4476,7 +4476,7 @@ static void Keys3d(void)
enddrawing();
}
X_OnEvent(EVENT_PREKEYS3D, -1);
VM_OnEvent(EVENT_PREKEYS3D, -1);
if (keystatus[KEYSC_QUOTE] && keystatus[KEYSC_V]) // ' V
{
@ -7084,7 +7084,7 @@ static void Keys3d(void)
}
}
X_OnEvent(EVENT_KEYS3D, -1);
VM_OnEvent(EVENT_KEYS3D, -1);
}// end 3d
static void DoSpriteSearch(int32_t dir) // <0: backwards, >=0: forwards
@ -7237,7 +7237,7 @@ static void Keys2d(void)
if (keystatus[KEYSC_TAB]) //TAB
{
if (cursectornum >= 0)
showsectordata((int16_t)i+16384);
showsectordata((int16_t)i);
}
else if (!(keystatus[KEYSC_F5]|keystatus[KEYSC_F6]|keystatus[KEYSC_F7]|keystatus[KEYSC_F8]))
{
@ -7252,7 +7252,7 @@ static void Keys2d(void)
olinehighlight = linehighlight;
ocursectornum = cursectornum;
if (counter >= 40)
if (counter >= 40 && totalclock >= 120*6)
{
if (pointhighlight >= 16384)
{
@ -7329,7 +7329,7 @@ static void Keys2d(void)
keystatus[0x14] = 0;
if (keystatus[0x1d]|keystatus[0x9d]) //Ctrl-T
{
extern int16_t showtags;
extern int32_t showtags;
showtags ^= 1;
if (showtags == 0)
@ -8276,7 +8276,7 @@ static void G_CheckCommandLine(int32_t argc, const char **argv)
int32_t ExtPreInit(int32_t argc,const char **argv)
{
wm_setapptitle("Mapster32"VERSION BUILDDATE);
wm_setapptitle("Mapster32");
#ifdef _WIN32
tempbuf[GetModuleFileName(NULL,tempbuf,BMAX_PATH)] = 0;
@ -8285,7 +8285,7 @@ int32_t ExtPreInit(int32_t argc,const char **argv)
#endif
OSD_SetLogFile("mapster32.log");
OSD_SetVersionString("Mapster32"VERSION,0,2);
OSD_SetVersion("Mapster32"VERSION,0,2);
initprintf("Mapster32"VERSION BUILDDATE"\n");
// initprintf("Copyright (c) 2008 EDuke32 team\n");
@ -8657,7 +8657,7 @@ static int32_t osdcmd_do(const osdfuncparm_t *parm)
insptr = script + tscrofs;
Bmemcpy(&vm, &vm_default, sizeof(vmstate_t));
X_DoExecute(0);
VM_Execute(0);
// asksave = 1; // handled in Access(Sprite|Sector|Wall)
}
@ -8697,11 +8697,11 @@ static int32_t osdcmd_endisableevent(const osdfuncparm_t *parm)
if (isdigit(parm->parms[i][0]))
j = atoi(parm->parms[i]);
else if (!Bstrncmp(parm->parms[i], "EVENT_", 6))
j = hash_find(&labelH, parm->parms[i]);
j = hash_find(&h_labels, parm->parms[i]);
else
{
Bstrncat(buf, parm->parms[i], sizeof(buf)-6-1);
j = hash_find(&labelH, buf);
j = hash_find(&h_labels, buf);
}
if (j>=0 && j<MAXEVENTS)
@ -10340,7 +10340,7 @@ void ExtAnalyzeSprites(void)
}
}
X_OnEvent(EVENT_ANALYZESPRITES, -1);
VM_OnEvent(EVENT_ANALYZESPRITES, -1);
}
#define MESSAGEX 3 // (xdimgame>>1)

View file

@ -51,18 +51,18 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
===================
*/
hashtable_t gamefuncH = { NUMGAMEFUNCTIONS<<1, NULL };
hashtable_t h_gamefuncs = { NUMGAMEFUNCTIONS<<1, NULL };
int32_t CONFIG_FunctionNameToNum(char * func)
{
int32_t i;
i = hash_find(&gamefuncH,func);
i = hash_find(&h_gamefuncs,func);
if (i < 0)
{
char *str = strtolower(Bstrdup(func),Bstrlen(func));
i = hash_find(&gamefuncH,str);
i = hash_find(&h_gamefuncs,str);
Bfree(str);
return i;
@ -656,7 +656,7 @@ int32_t CONFIG_ReadSetup(void)
SCRIPT_GetString(ud.config.scripthandle, "Comm Setup","PlayerName",&tempbuf[0]);
while (Bstrlen(stripcolorcodes(dummybuf,tempbuf)) > 10)
while (Bstrlen(OSD_StripColors(dummybuf,tempbuf)) > 10)
tempbuf[Bstrlen(tempbuf)-1] = '\0';
Bstrncpy(szPlayerName,tempbuf,sizeof(szPlayerName)-1);
@ -691,6 +691,7 @@ int32_t CONFIG_ReadSetup(void)
SCRIPT_GetString(ud.config.scripthandle, "Setup","SelectedGRP",&g_grpNamePtr[0]);
}
/*
{
tempbuf[0] = 0;
SCRIPT_GetString(ud.config.scripthandle, "Screen Setup", "AmbientLight",&tempbuf[0]);
@ -713,8 +714,11 @@ int32_t CONFIG_ReadSetup(void)
g_frameDelay = (1000/r_maxfps);
else g_frameDelay = 0;
}
*/
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "Messages",&ud.fta_on);
*/
if (!NAM)
{
@ -722,11 +726,16 @@ int32_t CONFIG_ReadSetup(void)
SCRIPT_GetString(ud.config.scripthandle, "Screen Setup","Password",&ud.pwlockout[0]);
}
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenGamma",&ud.brightness);
*/
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenHeight",&ud.config.ScreenHeight);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenMode",&ud.config.ScreenMode);
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenSize",&ud.screen_size);
*/
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenWidth",&ud.config.ScreenWidth);
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "Shadows",&ud.shadows);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "Tilt",&ud.screen_tilting);
@ -747,6 +756,7 @@ int32_t CONFIG_ReadSetup(void)
SCRIPT_GetString(ud.config.scripthandle, "Screen Setup", "VidContrast",&tempbuf[0]);
if (tempbuf[0]) vid_contrast = atof(tempbuf);
}
*/
#ifdef RENDERTYPEWIN
{
@ -758,6 +768,7 @@ int32_t CONFIG_ReadSetup(void)
}
#endif
/*
{
#ifdef _WIN32
dummy = 0;
@ -775,18 +786,20 @@ int32_t CONFIG_ReadSetup(void)
#if defined(POLYMOST) && defined(USE_OPENGL)
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLAnimationSmoothing", &r_animsmoothing);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLAnisotropy", &glanisotropy);
/*SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLDepthPeeling", &r_depthpeeling);*/
/ *SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLDepthPeeling", &r_depthpeeling);* /
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLDetailMapping", &r_detailmapping);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLFullbrights", &r_fullbrights);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLGlowMapping", &r_glowmapping);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLOcclusionChecking", &r_modelocclusionchecking);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLParallaxSkyClamping", &r_parallaxskyclamping);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLParallaxSkyPanning", &r_parallaxskypanning);
/*SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLPeelsCount", &r_peelscount);*/
/ *SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLPeelsCount", &r_peelscount);* /
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLProjectionFix", &glprojectionhacks);
*/
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "Polymer", &dummy);
if (dummy > 0) glrendmode = 4;
else glrendmode = 3;
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLTextureMode", &gltexfiltermode);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLTextureQuality", &r_downsize);
r_downsizevar = r_downsize;
@ -798,12 +811,14 @@ int32_t CONFIG_ReadSetup(void)
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLVSync", &vsync);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "GLWidescreen", &glwidescreen);
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "OSDHightile",&osdhightile);
*/
{
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "ScreenBPP", &ud.config.ScreenBPP);
if (ud.config.ScreenBPP < 8) ud.config.ScreenBPP = 32;
}
/*
{
dummy = usehightile;
SCRIPT_GetNumber(ud.config.scripthandle, "Screen Setup", "UseHightile",&dummy);
@ -850,12 +865,16 @@ int32_t CONFIG_ReadSetup(void)
}
}
}
*/
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "CrosshairScale",&ud.crosshairscale);
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "Crosshairs",&ud.crosshair);
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "DeathMessages",&ud.obituaries);
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "DemoCams",&ud.democams);
*/
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "Executions",&ud.executions);
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "IDPlayers",&ud.idplayers);
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "MPMessageDisplayTime",&ud.msgdisptime);
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "RunMode",&ud.config.RunMode);
@ -865,14 +884,18 @@ int32_t CONFIG_ReadSetup(void)
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "ShowViewWeapon",&ud.drawweapon);
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "StatusBarMode",&ud.statusbarmode);
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "StatusBarScale",&ud.statusbarscale);
*/
/*
{
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "Team",&dummy);
ud.team = 0;
if (dummy < 4 && dummy > -1) ud.team = dummy;
g_player[0].pteam = ud.team;
}
*/
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "TextScale",&ud.textscale);
dummy = ud.config.useprecache;
SCRIPT_GetNumber(ud.config.scripthandle, "Misc", "UsePrecache",&dummy);
@ -893,6 +916,7 @@ int32_t CONFIG_ReadSetup(void)
demorec_synccompress_cvar = min(max(0, demorec_synccompress_cvar), 1);
demoplay_diffs = !!demoplay_diffs;
}
*/
// weapon choices are defaulted in G_CheckCommandLine, which may override them
if (!g_forceWeaponChoice)
@ -904,6 +928,7 @@ int32_t CONFIG_ReadSetup(void)
if (dummy >= 0) g_player[0].wchoice[i] = dummy;
}
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "AmbienceToggle",&ud.config.AmbienceToggle);
SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "FXDevice",&ud.config.FXDevice);
SCRIPT_GetNumber(ud.config.scripthandle, "Sound Setup", "FXVolume",&ud.config.FXVolume);
@ -922,7 +947,9 @@ int32_t CONFIG_ReadSetup(void)
// hack to switch old VoiceToggle value over to new bitfield format
if (ud.config.VoiceToggle == 2) ud.config.VoiceToggle = 5;
}
*/
/*
SCRIPT_GetNumber(ud.config.scripthandle, "Controls","AimingFlag",(int32_t *)&g_myAimMode); // (if toggle mode) gives state
{
@ -953,6 +980,7 @@ int32_t CONFIG_ReadSetup(void)
SCRIPT_GetNumber(ud.config.scripthandle, "Controls","WeaponSwitchMode",&ud.weaponswitch);
g_player[0].ps->weaponswitch = ud.weaponswitch;
}
*/
#ifdef _WIN32
SCRIPT_GetNumber(ud.config.scripthandle, "Updates", "CheckForUpdates", &ud.config.CheckForUpdates);
@ -961,7 +989,7 @@ int32_t CONFIG_ReadSetup(void)
}
CONFIG_ReadKeys();
// CONFIG_ReadKeys();
//CONFIG_SetupMouse(ud.config.scripthandle);
//CONFIG_SetupJoystick(ud.config.scripthandle);
@ -977,14 +1005,17 @@ int32_t CONFIG_ReadSetup(void)
===================
*/
void CONFIG_WriteBinds(void) // save binds and aliases to <cfgname>_binds.cfg
void CONFIG_WriteBinds(void) // save binds and aliases to <cfgname>_settings.cfg
{
int32_t i;
FILE *fp;
char *ptr = Bstrdup(setupfilename);
char tempbuf[128];
Bsprintf(tempbuf, "%s_binds.cfg", strtok(ptr, "."));
if (!Bstrcmp(setupfilename, SETUPFILENAME))
Bsprintf(tempbuf, "settings.cfg");
else Bsprintf(tempbuf, "%s_settings.cfg", strtok(ptr, "."));
fp = fopen(tempbuf, "wt");
if (fp)
@ -1013,12 +1044,18 @@ void CONFIG_WriteBinds(void) // save binds and aliases to <cfgname>_binds.cfg
*/
OSD_WriteCvars(fp);
fclose(fp);
Bsprintf(tempbuf,"Wrote %s_binds.cfg\n",ptr);
if (!Bstrcmp(setupfilename, SETUPFILENAME))
Bsprintf(tempbuf, "Wrote settings.cfg\n");
else Bsprintf(tempbuf,"Wrote %s_settings.cfg\n",ptr);
OSD_Printf(tempbuf);
Bfree(ptr);
return;
}
Bsprintf(tempbuf,"Error writing %s_binds.cfg: %s\n",ptr,strerror(errno));
if (!Bstrcmp(setupfilename, SETUPFILENAME))
Bsprintf(tempbuf, "Error writing settings.cfg: %s\n", strerror(errno));
else Bsprintf(tempbuf,"Error writing %s_settings.cfg: %s\n",ptr,strerror(errno));
OSD_Printf(tempbuf);
Bfree(ptr);
}
@ -1033,6 +1070,7 @@ void CONFIG_WriteSetup(void)
if (ud.config.scripthandle < 0)
ud.config.scripthandle = SCRIPT_Init(setupfilename);
/*
SCRIPT_PutNumber(ud.config.scripthandle, "Controls","AimingFlag",(int32_t) g_myAimMode,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Controls","AutoAim",ud.config.AutoAim,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Controls","MouseAimingFlipped",ud.mouseflip,FALSE,FALSE);
@ -1062,7 +1100,9 @@ void CONFIG_WriteSetup(void)
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "Crosshairs",ud.crosshair,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "DeathMessages",ud.obituaries,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "DemoCams",ud.democams,FALSE,FALSE);
*/
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "Executions",++ud.executions,FALSE,FALSE);
/*
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "IDPlayers",ud.idplayers,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "MPMessageDisplayTime",ud.msgdisptime,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "RunMode",ud.config.RunMode,FALSE,FALSE);
@ -1072,10 +1112,14 @@ void CONFIG_WriteSetup(void)
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "ShowViewWeapon",ud.drawweapon,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "StatusBarMode",ud.statusbarmode,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "StatusBarScale",ud.statusbarscale,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "Team",ud.team,FALSE,FALSE);
*/
/*SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "Team",ud.team,FALSE,FALSE);*/
/*
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "TextScale",ud.textscale,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "UsePrecache",ud.config.useprecache,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "ViewBobbing",ud.viewbob,FALSE,FALSE);
*/
for (dummy=0; dummy<10; dummy++)
{
@ -1083,6 +1127,7 @@ void CONFIG_WriteSetup(void)
SCRIPT_PutNumber(ud.config.scripthandle, "Misc",buf,g_player[myconnectindex].wchoice[dummy],FALSE,FALSE);
}
/*
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "WeaponScale",ud.weaponscale,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "WeaponSway",ud.weaponsway,FALSE,FALSE);
@ -1091,11 +1136,13 @@ void CONFIG_WriteSetup(void)
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "DemoRecDiffCompress",demorec_diffcompress_cvar,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "DemoRecSyncCompress",demorec_synccompress_cvar,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Misc", "DemoPlayDiffs",demoplay_diffs,FALSE,FALSE);
*/
SCRIPT_PutNumber(ud.config.scripthandle, "Setup","ConfigVersion",BYTEVERSION_JF,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Setup", "ForceSetup",ud.config.ForceSetup,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Setup", "NoAutoLoad",ud.config.NoAutoLoad,FALSE,FALSE);
/*
{
Bsprintf(tempbuf,"%.2f",r_ambientlight);
SCRIPT_PutString(ud.config.scripthandle, "Screen Setup", "AmbientLight",tempbuf);
@ -1105,16 +1152,18 @@ void CONFIG_WriteSetup(void)
#if defined(POLYMOST) && defined(USE_OPENGL)
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLAnimationSmoothing",r_animsmoothing,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLAnisotropy",glanisotropy,FALSE,FALSE);
/*SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLDepthPeeling",r_depthpeeling,false,false);*/
/ *SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLDepthPeeling",r_depthpeeling,false,false);* /
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLDetailMapping", r_detailmapping,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLFullbrights", r_fullbrights,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLGlowMapping", r_glowmapping,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLOcclusionChecking", r_modelocclusionchecking,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLParallaxSkyClamping",r_parallaxskyclamping,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLParallaxSkyPanning",r_parallaxskypanning,FALSE,FALSE);
/*SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLPeelsCount",r_peelscount,false,false);*/
/ *SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLPeelsCount",r_peelscount,false,false);* /
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLProjectionFix",glprojectionhacks,FALSE,FALSE);
*/
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "Polymer",glrendmode == 4,FALSE,FALSE);
/*
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLTextureMode",gltexfiltermode,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLTextureQuality", r_downsize,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "GLUseCompressedTextureCache", glusetexcache,FALSE,FALSE);
@ -1133,6 +1182,7 @@ void CONFIG_WriteSetup(void)
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "OSDHightile",osdhightile,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "OSDTextMode",OSD_GetTextMode(),FALSE,FALSE);
*/
if (!NAM)
{
@ -1141,11 +1191,14 @@ void CONFIG_WriteSetup(void)
}
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenBPP",ud.config.ScreenBPP,FALSE,FALSE); // JBF 20040523
/*
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenGamma",ud.brightness,FALSE,FALSE);
*/
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenHeight",ud.config.ScreenHeight,FALSE,FALSE); // JBF 20031206
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenMode",ud.config.ScreenMode,FALSE,FALSE); // JBF 20031206
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenSize",ud.screen_size,FALSE,FALSE);
/* SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenSize",ud.screen_size,FALSE,FALSE);*/
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "ScreenWidth",ud.config.ScreenWidth,FALSE,FALSE); // JBF 20031206
/*
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "Shadows",ud.shadows,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "Tilt",ud.screen_tilting,FALSE,FALSE);
@ -1162,6 +1215,7 @@ void CONFIG_WriteSetup(void)
Bsprintf(tempbuf,"%.2f",vid_gamma);
SCRIPT_PutString(ud.config.scripthandle, "Screen Setup", "VidGamma",tempbuf);
}
*/
#ifdef RENDERTYPEWIN
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "WindowPositioning", windowpos, FALSE, FALSE);
@ -1169,6 +1223,7 @@ void CONFIG_WriteSetup(void)
SCRIPT_PutNumber(ud.config.scripthandle, "Screen Setup", "WindowPosY", windowy, FALSE, FALSE);
#endif
/*
SCRIPT_PutNumber(ud.config.scripthandle, "Sound Setup", "AmbienceToggle",ud.config.AmbienceToggle,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Sound Setup", "FXVolume",ud.config.FXVolume,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Sound Setup", "MusicToggle",ud.config.MusicToggle,FALSE,FALSE);
@ -1180,6 +1235,7 @@ void CONFIG_WriteSetup(void)
SCRIPT_PutNumber(ud.config.scripthandle, "Sound Setup", "ReverseStereo",ud.config.ReverseStereo,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Sound Setup", "SoundToggle",ud.config.SoundToggle,FALSE,FALSE);
SCRIPT_PutNumber(ud.config.scripthandle, "Sound Setup", "VoiceToggle",ud.config.VoiceToggle,FALSE,FALSE);
*/
#ifdef _WIN32
SCRIPT_PutNumber(ud.config.scripthandle, "Updates", "CheckForUpdates", ud.config.CheckForUpdates, FALSE, FALSE);
@ -1187,69 +1243,113 @@ void CONFIG_WriteSetup(void)
#endif
// JBF 20031211
/*
for (dummy=0; dummy<NUMGAMEFUNCTIONS; dummy++)
{
SCRIPT_PutDoubleString(ud.config.scripthandle, "KeyDefinitions", CONFIG_FunctionNumToName(dummy),
KB_ScanCodeToString(ud.config.KeyboardKeys[dummy][0]), KB_ScanCodeToString(ud.config.KeyboardKeys[dummy][1]));
}
*/
for (dummy=0; dummy<MAXMOUSEBUTTONS; dummy++)
{
if (CONFIG_FunctionNumToName(ud.config.MouseFunctions[dummy][0]))
{
Bsprintf(buf,"MouseButton%d",dummy);
SCRIPT_PutString(ud.config.scripthandle,"Controls", buf, CONFIG_FunctionNumToName(ud.config.MouseFunctions[dummy][0]));
}
if (dummy >= (MAXMOUSEBUTTONS-2)) continue;
if (CONFIG_FunctionNumToName(ud.config.MouseFunctions[dummy][1]))
{
Bsprintf(buf,"MouseButtonClicked%d",dummy);
SCRIPT_PutString(ud.config.scripthandle,"Controls", buf, CONFIG_FunctionNumToName(ud.config.MouseFunctions[dummy][1]));
}
}
for (dummy=0; dummy<MAXMOUSEAXES; dummy++)
{
if (CONFIG_AnalogNumToName(ud.config.MouseAnalogueAxes[dummy]))
{
Bsprintf(buf,"MouseAnalogAxes%d",dummy);
SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_AnalogNumToName(ud.config.MouseAnalogueAxes[dummy]));
}
if (CONFIG_FunctionNumToName(ud.config.MouseDigitalFunctions[dummy][0]))
{
Bsprintf(buf,"MouseDigitalAxes%d_0",dummy);
SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.MouseDigitalFunctions[dummy][0]));
}
if (CONFIG_FunctionNumToName(ud.config.MouseDigitalFunctions[dummy][1]))
{
Bsprintf(buf,"MouseDigitalAxes%d_1",dummy);
SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.MouseDigitalFunctions[dummy][1]));
}
if (ud.config.MouseAnalogueScale[dummy] != 65536)
{
Bsprintf(buf,"MouseAnalogScale%d",dummy);
SCRIPT_PutNumber(ud.config.scripthandle, "Controls", buf, ud.config.MouseAnalogueScale[dummy], FALSE, FALSE);
}
}
Bsprintf(tempbuf,"%.2f",CONTROL_MouseSensitivity);
SCRIPT_PutString(ud.config.scripthandle, "Controls","Mouse_Sensitivity",tempbuf);
for (dummy=0; dummy<MAXJOYBUTTONS; dummy++)
{
if (CONFIG_FunctionNumToName(ud.config.JoystickFunctions[dummy][0]))
{
Bsprintf(buf,"JoystickButton%d",dummy);
SCRIPT_PutString(ud.config.scripthandle,"Controls", buf, CONFIG_FunctionNumToName(ud.config.JoystickFunctions[dummy][0]));
}
if (CONFIG_FunctionNumToName(ud.config.JoystickFunctions[dummy][1]))
{
Bsprintf(buf,"JoystickButtonClicked%d",dummy);
SCRIPT_PutString(ud.config.scripthandle,"Controls", buf, CONFIG_FunctionNumToName(ud.config.JoystickFunctions[dummy][1]));
}
}
for (dummy=0; dummy<MAXJOYAXES; dummy++)
{
if (CONFIG_AnalogNumToName(ud.config.JoystickAnalogueAxes[dummy]))
{
Bsprintf(buf,"JoystickAnalogAxes%d",dummy);
SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_AnalogNumToName(ud.config.JoystickAnalogueAxes[dummy]));
}
if (CONFIG_FunctionNumToName(ud.config.JoystickDigitalFunctions[dummy][0]))
{
Bsprintf(buf,"JoystickDigitalAxes%d_0",dummy);
SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.JoystickDigitalFunctions[dummy][0]));
}
if (CONFIG_FunctionNumToName(ud.config.JoystickDigitalFunctions[dummy][1]))
{
Bsprintf(buf,"JoystickDigitalAxes%d_1",dummy);
SCRIPT_PutString(ud.config.scripthandle, "Controls", buf, CONFIG_FunctionNumToName(ud.config.JoystickDigitalFunctions[dummy][1]));
}
if (ud.config.JoystickAnalogueScale[dummy] != 65536)
{
Bsprintf(buf,"JoystickAnalogScale%d",dummy);
SCRIPT_PutNumber(ud.config.scripthandle, "Controls", buf, ud.config.JoystickAnalogueScale[dummy], FALSE, FALSE);
}
if (ud.config.JoystickAnalogueDead[dummy] != 1000)
{
Bsprintf(buf,"JoystickAnalogDead%d",dummy);
SCRIPT_PutNumber(ud.config.scripthandle, "Controls", buf, ud.config.JoystickAnalogueDead[dummy], FALSE, FALSE);
}
if (ud.config.JoystickAnalogueSaturate[dummy] != 9500)
{
Bsprintf(buf,"JoystickAnalogSaturate%d",dummy);
SCRIPT_PutNumber(ud.config.scripthandle, "Controls", buf, ud.config.JoystickAnalogueSaturate[dummy], FALSE, FALSE);
}
}
SCRIPT_PutString(ud.config.scripthandle, "Comm Setup","PlayerName",&szPlayerName[0]);
SCRIPT_PutString(ud.config.scripthandle, "Comm Setup","RTSName",&ud.rtsname[0]);

View file

@ -125,21 +125,11 @@ extern int32_t g_scriptVersion, g_Shareware, g_gameType;
#define TICRATE (120)
#define GAMETICSPERSEC 26
#define TICSPERFRAME (TICRATE/GAMETICSPERSEC)
// #define GC (TICSPERFRAME*44)
#define TICSPERFRAME 4 // this used to be TICRATE/GAMETICSPERSEC which was 4.615~ truncated to 4 by integer division
#define REALGAMETICSPERSEC 30
#define MAXSOUNDS 2560
/*
#pragma aux sgn =\
"add ebx, ebx",\
"sbb eax, eax",\
"cmp eax, ebx",\
"adc eax, 0",\
parm [ebx]\
*/
#define STAT_DEFAULT 0
#define STAT_ACTOR 1
#define STAT_ZOMBIEACTOR 2
@ -162,14 +152,13 @@ extern int32_t g_scriptVersion, g_Shareware, g_gameType;
#define PHEIGHT (38<<8)
enum GameMode_t {
MODE_MENU = 1,
MODE_DEMO = 2,
MODE_GAME = 4,
MODE_EOL = 8,
MODE_TYPE = 16,
MODE_RESTART = 32,
MODE_SENDTOWHOM = 64,
MODE_END = 128
MODE_MENU = 0x00000001,
MODE_DEMO = 0x00000002,
MODE_GAME = 0x00000004,
MODE_EOL = 0x00000008,
MODE_TYPE = 0x00000010,
MODE_RESTART = 0x00000020,
MODE_SENDTOWHOM = 0x00000040,
};
#define MAXANIMWALLS 512
@ -302,7 +291,7 @@ extern volatile char g_soundlocks[MAXSOUNDS];
extern sound_t g_sounds[MAXSOUNDS];
typedef struct {
int32_t wallnum, tag;
int16_t wallnum, tag;
} animwalltype;
extern animwalltype animwall[MAXANIMWALLS];
@ -437,65 +426,63 @@ extern int32_t fricxv,fricyv;
// mywhatever type globals
typedef struct {
int32_t posx, posy, posz, oposx, oposy, oposz, posxv, posyv, poszv;
int32_t bobposx, bobposy, pyoff, opyoff, invdisptime;
int32_t last_pissed_time, truefz, truecz;
int32_t player_par, visibility;
int32_t bobcounter, weapon_sway;
int32_t pals_time, randomflamex, crack_time;
int32_t zoom, exitx, exity;
vec3_t pos, opos, posvel;
int32_t bobposx, bobposy;
int32_t truefz, truecz, player_par;
int32_t randomflamex, exitx, exity;
int32_t runspeed, max_player_health, max_shield_amount;
uint32_t interface_toggle_flag;
int32_t max_secret_rooms, secret_rooms, max_actors_killed, actors_killed;
int32_t runspeed, movement_lock, team;
int32_t max_player_health, max_shield_amount, max_ammo_amount[MAX_WEAPONS];
int32_t scream_voice;
int32_t loogiex[64], loogiey[64], numloogs, loogcnt;
uint8_t *palette;
int16_t sbs, sound_pitch;
uint16_t max_actors_killed, actors_killed;
uint16_t gotweapon, zoom;
int16_t loogiex[64], loogiey[64], sbs, sound_pitch;
int16_t ang, oang, angvel, cursectnum, look_ang, last_extra, subweapon;
int16_t ammo_amount[MAX_WEAPONS], inv_amount[GET_MAX], wackedbyactor, frag, fraggedself;
int16_t max_ammo_amount[MAX_WEAPONS], ammo_amount[MAX_WEAPONS], inv_amount[GET_MAX];
int16_t wackedbyactor, pyoff, opyoff;
int16_t curr_weapon, last_weapon, tipincs, horiz, horizoff, ohoriz, ohorizoff, wantweaponfire;
int16_t newowner, hurt_delay, hbomb_hold_delay;
int16_t jumping_counter, airleft, knee_incs, access_incs;
int16_t horiz, horizoff, ohoriz, ohorizoff;
int16_t newowner, jumping_counter, airleft;
int16_t fta, ftq, access_wallnum, access_spritenum;
int16_t kickback_pic, got_access, weapon_ang;
int16_t got_access, weapon_ang, visibility;
int16_t somethingonplayer, on_crane, i, one_parallax_sectnum;
int16_t over_shoulder_on, random_club_frame, fist_incs;
int16_t one_eighty_count, cheat_phase;
int16_t dummyplayersprite, extra_extra8, quick_kick, last_quick_kick;
int16_t actorsqu, timebeforeexit, customexitsound;
int16_t random_club_frame, one_eighty_count;
int16_t dummyplayersprite, extra_extra8;
int16_t actorsqu, timebeforeexit, customexitsound, last_pissed_time;
int16_t weaprecs[16], weapreccnt;
int16_t weaprecs[MAX_WEAPONS], weapon_sway, crack_time, bobcounter;
int16_t orotscrnang, rotscrnang, dead_flag; // JBF 20031220: added orotscrnang
int16_t holoduke_on, pycount;
int16_t orotscrnang, rotscrnang, dead_flag, show_empty_weapon; // JBF 20031220: added orotscrnang
int16_t holoduke_on, pycount, weapon_pos, frag_ps;
int16_t transporter_hold, last_full_weapon, footprintshade;
uint8_t max_secret_rooms, secret_rooms;
uint8_t frag, fraggedself, quick_kick, last_quick_kick;
uint8_t return_to_center, reloading, weapreccnt;
uint8_t aim_mode, auto_aim, weaponswitch, movement_lock, team;
uint8_t tipincs, hbomb_hold_delay, frag_ps, kickback_pic;
char aim_mode, auto_aim, weaponswitch;
uint8_t gm, on_warping_sector, footprintcount, hurt_delay;
uint8_t hbomb_on, jumping_toggle, rapid_fire_hold, on_ground;
uint8_t inven_icon, buttonpalette, over_shoulder_on, show_empty_weapon;
char gm, on_warping_sector, footprintcount;
char hbomb_on, jumping_toggle, rapid_fire_hold, on_ground;
char inven_icon, buttonpalette;
uint8_t jetpack_on, spritebridge, lastrandomspot;
uint8_t scuba_on, footprintpal, heat_on, invdisptime;
char jetpack_on, spritebridge, lastrandomspot;
char scuba_on, footprintpal, heat_on;
uint8_t holster_weapon, falling_counter, footprintshade;
uint8_t refresh_inventory, last_full_weapon;
char holster_weapon, falling_counter;
char gotweapon[MAX_WEAPONS], refresh_inventory;
uint8_t toggle_key_flag, knuckle_incs, knee_incs, access_incs;
uint8_t walking_snd_toggle, palookup, hard_landing, fist_incs;
int8_t numloogs, loogcnt, scream_voice, transporter_hold;
int8_t last_weapon, cheat_phase, weapon_pos, wantweaponfire, curr_weapon;
palette_t pals;
char toggle_key_flag, knuckle_incs; // , select_dir;
char walking_snd_toggle, palookup, hard_landing;
char /*fire_flag, */pals[3];
char return_to_center, reloading;
char name[32];
} DukePlayer_t;
@ -518,7 +505,7 @@ extern char buf[1024]; //My own generic input buffer
extern char *ScriptQuotes[MAXQUOTES],*ScriptQuoteRedefinitions[MAXQUOTES];
extern char ready2send;
void X_ScriptInfo(void);
void VM_ScriptInfo(void);
extern intptr_t *script,*insptr,*labelcode,*labeltype;
extern int32_t g_numLabels,g_numDefaultLabels;
extern int32_t g_scriptSize;
@ -532,19 +519,22 @@ extern char EnvMusicFilename[MAXVOLUMES+1][BMAX_PATH];
extern int16_t camsprite;
typedef struct {
int32_t workslike, extra, cstat, extra_rand; // 16b
int32_t workslike, cstat; // 8b
int32_t hitradius, range, flashcolor; // 12b
int16_t spawns, sound, isound, vel; // 8b
int16_t decal, trail, tnum, drop; // 8b
int16_t clipdist, offset, bounces, bsound; // 8b
int16_t offset, bounces, bsound; // 6b
int16_t toffset; // 2b
int16_t extra, extra_rand; // 4b
int8_t sxrepeat, syrepeat, txrepeat, tyrepeat; // 4b
int8_t shade, xrepeat, yrepeat, pal; // 4b
int8_t velmult, filler; // 2b
int8_t velmult; // 1b
uint8_t clipdist; // 1b
int8_t filler[6]; // 6b
} projectile_t;
typedef struct {
intptr_t temp_data[10]; // 40b/80b sometimes used to hold pointers to con code
intptr_t t_data[10]; // 40b/80b sometimes used to hold pointers to con code
int16_t picnum,ang,extra,owner; //8b
int16_t movflag,tempang,timetosleep; //6b
@ -569,7 +559,7 @@ typedef struct {
// this struct needs to match the beginning of ActorData_t above
typedef struct {
intptr_t temp_data[10]; // 40b/80b sometimes used to hold pointers to con code
intptr_t t_data[10]; // 40b/80b sometimes used to hold pointers to con code
int16_t picnum,ang,extra,owner; //8b
int16_t movflag,tempang,timetosleep; // 6b
@ -577,11 +567,11 @@ typedef struct {
int32_t flags; // 4b
} NetActorData_t;
extern ActorData_t ActorExtra[MAXSPRITES];
extern ActorData_t actor[MAXSPRITES];
extern input_t loc;
extern input_t recsync[RECSYNCBUFSIZ];
extern int32_t avgfvel, avgsvel, avgavel, avghorz, avgbits, avgextbits;
extern input_t avg;
extern int32_t numplayers, myconnectindex;
extern int32_t connecthead, connectpoint2[MAXPLAYERS]; //Player linked list variables (indeces, not connection numbers)
@ -599,7 +589,6 @@ extern int32_t ototalclock;
extern int32_t *animateptr[MAXANIMATES];
extern int32_t animategoal[MAXANIMATES];
extern int32_t animatevel[MAXANIMATES];
// extern int32_t oanimateval[MAXANIMATES];
extern int16_t neartagsector, neartagwall, neartagsprite;
extern int32_t neartaghitdist;
extern int16_t animatesect[MAXANIMATES];
@ -673,7 +662,8 @@ typedef struct {
int16_t got_access, last_extra, inv_amount[GET_MAX], curr_weapon, holoduke_on;
int16_t last_weapon, weapon_pos, kickback_pic;
int16_t ammo_amount[MAX_WEAPONS], frag[MAXPLAYERS];
char inven_icon, jetpack_on, heat_on, gotweapon[MAX_WEAPONS];
uint16_t gotweapon;
char inven_icon, jetpack_on, heat_on;
} DukeStatus_t;
#pragma pack(push,1)
@ -723,6 +713,7 @@ extern uint32_t g_moveThingsCount;
#define TILE_ANIM (MAXTILES-4)
#define TILE_VIEWSCR (MAXTILES-5)
// the order of these can't be changed or else compatibility with EDuke 2.0 mods will break
enum GameEvent_t {
EVENT_INIT,
EVENT_ENTERLEVEL,
@ -872,17 +863,17 @@ extern int32_t g_gameArrayCount;
extern int32_t SpriteFlags[MAXTILES];
enum SpriteFlags_t {
SPRITE_SHADOW = 1,
SPRITE_NVG = 2,
SPRITE_NOSHADE = 4,
SPRITE_PROJECTILE = 8,
SPRITE_DECAL = 16,
SPRITE_BADGUY = 32,
SPRITE_NOPAL = 64,
SPRITE_NOEVENTCODE = 128,
SPRITE_NOLIGHT = 256,
SPRITE_USEACTIVATOR = 512,
SPRITE_NULL = 1024, // null sprite in multiplayer
SPRITE_SHADOW = 0x00000001,
SPRITE_NVG = 0x00000002,
SPRITE_NOSHADE = 0x00000004,
SPRITE_PROJECTILE = 0x00000008,
SPRITE_DECAL = 0x00000010,
SPRITE_BADGUY = 0x00000020,
SPRITE_NOPAL = 0x00000040,
SPRITE_NOEVENTCODE = 0x00000080,
SPRITE_NOLIGHT = 0x00000100,
SPRITE_USEACTIVATOR = 0x00000200,
SPRITE_NULL = 0x00000400, // null sprite in multiplayer
};
extern int16_t SpriteCacheList[MAXTILES][3];
@ -894,8 +885,8 @@ extern int32_t g_iZRangeVarID;
extern int32_t g_iAngRangeVarID;
extern int32_t g_iAimAngleVarID;
extern int32_t g_iLoTagID; // var ID of "LOTAG"
extern int32_t g_iHiTagID; // ver ID of "HITAG"
extern int32_t g_iTextureID; // ver ID of "TEXTURE"
extern int32_t g_iHiTagID; // var ID of "HITAG"
extern int32_t g_iTextureID; // var ID of "TEXTURE"
extern char g_bEnhanced; // are we 'enhanced' (more minerals, etc)
@ -927,56 +918,56 @@ extern intptr_t *aplWeaponFlashColor[MAX_WEAPONS]; // Color for polymer muz
extern int32_t g_timerTicsPerSecond;
enum WeaponFlags_t {
WEAPON_HOLSTER_CLEARS_CLIP = 1, // 'holstering' clears the current clip
WEAPON_GLOWS = 2, // weapon 'glows' (shrinker and grower)
WEAPON_AUTOMATIC = 4, // automatic fire (continues while 'fire' is held down
WEAPON_FIREEVERYOTHER = 8, // during 'hold time' fire every frame
WEAPON_FIREEVERYTHIRD = 16, // during 'hold time' fire every third frame
WEAPON_RANDOMRESTART = 32, // restart for automatic is 'randomized' by RND 3
WEAPON_AMMOPERSHOT = 64, // uses ammo for each shot (for automatic)
WEAPON_BOMB_TRIGGER = 128, // weapon is the 'bomb' trigger
WEAPON_NOVISIBLE = 256, // weapon use does not cause user to become 'visible'
WEAPON_THROWIT = 512, // weapon 'throws' the 'shoots' item...
WEAPON_CHECKATRELOAD = 1024, // check weapon availability at 'reload' time
WEAPON_STANDSTILL = 2048, // player stops jumping before actual fire (like tripbomb in duke)
WEAPON_SPAWNTYPE1 = 0, // just spawn
WEAPON_SPAWNTYPE2 = 4096, // spawn like shotgun shells
WEAPON_SPAWNTYPE3 = 8192, // spawn like chaingun shells
WEAPON_SEMIAUTO = 16384, // cancel button press after each shot
WEAPON_RELOAD_TIMING = 32768, // special casing for pistol reload sounds
WEAPON_RESET = 65536 // cycle weapon back to frame 1 if fire is held, 0 if not
WEAPON_SPAWNTYPE1 = 0x00000000, // just spawn
WEAPON_HOLSTER_CLEARS_CLIP = 0x00000001, // 'holstering' clears the current clip
WEAPON_GLOWS = 0x00000002, // weapon 'glows' (shrinker and grower)
WEAPON_AUTOMATIC = 0x00000004, // automatic fire (continues while 'fire' is held down
WEAPON_FIREEVERYOTHER = 0x00000008, // during 'hold time' fire every frame
WEAPON_FIREEVERYTHIRD = 0x00000010, // during 'hold time' fire every third frame
WEAPON_RANDOMRESTART = 0x00000020, // restart for automatic is 'randomized' by RND 3
WEAPON_AMMOPERSHOT = 0x00000040, // uses ammo for each shot (for automatic)
WEAPON_BOMB_TRIGGER = 0x00000080, // weapon is the 'bomb' trigger
WEAPON_NOVISIBLE = 0x00000100, // weapon use does not cause user to become 'visible'
WEAPON_THROWIT = 0x00000200, // weapon 'throws' the 'shoots' item...
WEAPON_CHECKATRELOAD = 0x00000400, // check weapon availability at 'reload' time
WEAPON_STANDSTILL = 0x00000800, // player stops jumping before actual fire (like tripbomb in duke)
WEAPON_SPAWNTYPE2 = 0x00001000, // spawn like shotgun shells
WEAPON_SPAWNTYPE3 = 0x00002000, // spawn like chaingun shells
WEAPON_SEMIAUTO = 0x00004000, // cancel button press after each shot
WEAPON_RELOAD_TIMING = 0x00008000, // special casing for pistol reload sounds
WEAPON_RESET = 0x00010000 // cycle weapon back to frame 1 if fire is held, 0 if not
};
#define TRIPBOMB_TRIPWIRE 1
#define TRIPBOMB_TIMER 2
#define TRIPBOMB_TRIPWIRE 0x00000001
#define TRIPBOMB_TIMER 0x00000002
#define PIPEBOMB_REMOTE 1
#define PIPEBOMB_TIMER 2
#define PIPEBOMB_REMOTE 0x00000001
#define PIPEBOMB_TIMER 0x00000002
// custom projectiles
enum ProjectileFlags_t {
PROJECTILE_HITSCAN = 1,
PROJECTILE_RPG = 2,
PROJECTILE_BOUNCESOFFWALLS = 4,
PROJECTILE_BOUNCESOFFMIRRORS = 8,
PROJECTILE_KNEE = 16,
PROJECTILE_WATERBUBBLES = 32,
PROJECTILE_TIMED = 64,
PROJECTILE_BOUNCESOFFSPRITES = 128,
PROJECTILE_SPIT = 256,
PROJECTILE_COOLEXPLOSION1 = 512,
PROJECTILE_BLOOD = 1024,
PROJECTILE_LOSESVELOCITY = 2048,
PROJECTILE_NOAIM = 4096,
PROJECTILE_RANDDECALSIZE = 8192,
PROJECTILE_EXPLODEONTIMER = 16384,
PROJECTILE_RPG_IMPACT = 32768,
PROJECTILE_RADIUS_PICNUM = 65536,
PROJECTILE_ACCURATE_AUTOAIM = 131072,
PROJECTILE_FORCEIMPACT = 262144,
PROJECTILE_REALCLIPDIST = 524288,
PROJECTILE_ACCURATE = 1048576,
PROJECTILE_HITSCAN = 0x00000001,
PROJECTILE_RPG = 0x00000002,
PROJECTILE_BOUNCESOFFWALLS = 0x00000004,
PROJECTILE_BOUNCESOFFMIRRORS = 0x00000008,
PROJECTILE_KNEE = 0x00000010,
PROJECTILE_WATERBUBBLES = 0x00000020,
PROJECTILE_TIMED = 0x00000040,
PROJECTILE_BOUNCESOFFSPRITES = 0x00000080,
PROJECTILE_SPIT = 0x00000100,
PROJECTILE_COOLEXPLOSION1 = 0x00000200,
PROJECTILE_BLOOD = 0x00000400,
PROJECTILE_LOSESVELOCITY = 0x00000800,
PROJECTILE_NOAIM = 0x00001000,
PROJECTILE_RANDDECALSIZE = 0x00002000,
PROJECTILE_EXPLODEONTIMER = 0x00004000,
PROJECTILE_RPG_IMPACT = 0x00008000,
PROJECTILE_RADIUS_PICNUM = 0x00010000,
PROJECTILE_ACCURATE_AUTOAIM = 0x00020000,
PROJECTILE_FORCEIMPACT = 0x00040000,
PROJECTILE_REALCLIPDIST = 0x00080000,
PROJECTILE_ACCURATE = 0x00100000,
};
extern projectile_t ProjectileData[MAXTILES], DefaultProjectileData[MAXTILES], SpriteProjectile[MAXSPRITES];
@ -984,16 +975,16 @@ extern projectile_t ProjectileData[MAXTILES], DefaultProjectileData[MAXTILES], S
// logo control
enum LogoFlags_t {
LOGO_ENABLED = 1,
LOGO_PLAYANIM = 2,
LOGO_PLAYMUSIC = 4,
LOGO_3DRSCREEN = 8,
LOGO_TITLESCREEN = 16,
LOGO_DUKENUKEM = 32,
LOGO_THREEDEE = 64,
LOGO_PLUTOPAKSPRITE = 128,
LOGO_SHAREWARESCREENS = 256,
LOGO_TENSCREEN = 512
LOGO_ENABLED = 0x00000001,
LOGO_PLAYANIM = 0x00000002,
LOGO_PLAYMUSIC = 0x00000004,
LOGO_3DRSCREEN = 0x00000008,
LOGO_TITLESCREEN = 0x00000010,
LOGO_DUKENUKEM = 0x00000020,
LOGO_THREEDEE = 0x00000040,
LOGO_PLUTOPAKSPRITE = 0x00000080,
LOGO_SHAREWARESCREENS = 0x00000100,
LOGO_TENSCREEN = 0x00000200
};
extern int32_t g_numRealPalettes;
@ -1043,7 +1034,7 @@ typedef struct {
uint8_t scriptptrs[MAXSPRITES];
uint8_t show2dsector[(MAXSECTORS+7)>>3];
ActorData_t ActorExtra[MAXSPRITES];
ActorData_t actor[MAXSPRITES];
PlayerSpawn_t g_playerSpawnPoints[MAXPLAYERS];
animwalltype animwall[MAXANIMWALLS];
sectortype sector[MAXSECTORS];
@ -1069,7 +1060,8 @@ typedef struct {
int32_t movefifoend, syncvalhead;
int16_t ping, filler;
int32_t pcolor, pteam, frags[MAXPLAYERS], wchoice[MAX_WEAPONS];
int32_t pcolor, pteam;
uint8_t frags[MAXPLAYERS], wchoice[MAX_WEAPONS];
char vote, gotvote, playerreadyflag, playerquitflag;
char user_name[32];
@ -1093,10 +1085,10 @@ extern char *ConsoleButtons[];
extern char *g_grpNamePtr, *g_gameNamePtr;
extern char g_modDir[BMAX_PATH];
extern hashtable_t gamevarH;
extern hashtable_t arrayH;
extern hashtable_t keywH;
extern hashtable_t gamefuncH;
extern hashtable_t h_gamevars;
extern hashtable_t h_arrays;
extern hashtable_t h_keywords;
extern hashtable_t h_gamefuncs;
enum DukePacket_t
{
@ -1115,8 +1107,10 @@ enum DukePacket_t
PACKET_PLAYER_READY,
// any packet with an ID higher than PACKET_BROADCAST is rebroadcast by server
// this is so hacked clients can't create fake server packets and get the server
// to send them to everyone
// so hacked clients can't create fake server packets and get the server to
// send them to everyone
// newer versions of the netcode also make this determination based on which
// channel the packet was broadcast on
PACKET_BROADCAST,
PACKET_NEW_GAME,

View file

@ -7,7 +7,7 @@
#include <stdlib.h>
typedef struct
typedef struct _ENetCallbacks
{
void * (ENET_CALLBACK * malloc) (size_t size);
void (ENET_CALLBACK * free) (void * memory);

View file

@ -23,25 +23,25 @@ extern "C"
#include "enet/list.h"
#include "enet/callbacks.h"
typedef enum
typedef enum _ENetVersion
{
ENET_VERSION = 1
} ENetVersion;
typedef enum
typedef enum _ENetSocketType
{
ENET_SOCKET_TYPE_STREAM = 1,
ENET_SOCKET_TYPE_DATAGRAM = 2
} ENetSocketType;
typedef enum
typedef enum _ENetSocketWait
{
ENET_SOCKET_WAIT_NONE = 0,
ENET_SOCKET_WAIT_SEND = (1 << 0),
ENET_SOCKET_WAIT_RECEIVE = (1 << 1)
} ENetSocketWait;
typedef enum
typedef enum _ENetSocketOption
{
ENET_SOCKOPT_NONBLOCK = 1,
ENET_SOCKOPT_BROADCAST = 2,
@ -83,7 +83,7 @@ typedef struct _ENetAddress
@sa ENetPacket
*/
typedef enum
typedef enum _ENetPacketFlag
{
/** packet must be received by the target peer and resend attempts should be
* made until the packet is delivered */
@ -161,7 +161,7 @@ typedef struct _ENetIncomingCommand
ENetPacket * packet;
} ENetIncomingCommand;
typedef enum
typedef enum _ENetPeerState
{
ENET_PEER_STATE_DISCONNECTED = 0,
ENET_PEER_STATE_CONNECTING = 1,
@ -319,7 +319,7 @@ typedef struct _ENetHost
/**
* An ENet event type, as specified in @ref ENetEvent.
*/
typedef enum
typedef enum _ENetEventType
{
/** no event occurred within the specified time limit */
ENET_EVENT_TYPE_NONE = 0,

View file

@ -41,7 +41,7 @@ extern int32_t S_PlaySound(int32_t num);
extern int32_t A_PlaySound(uint32_t num,int32_t i);
extern void S_StopSound(int32_t num);
extern void S_StopEnvSound(int32_t num,int32_t i);
extern void S_Pan3D(void);
extern void S_Update(void);
extern void S_Callback(uint32_t num);
extern void S_ClearSoundLocks(void);
extern int32_t A_CallSound(int32_t sn,int32_t whatsprite);
@ -110,7 +110,7 @@ extern void ChangeToMenu(int32_t cm);
extern int32_t G_LoadPlayer(int32_t spot);
extern int32_t G_SavePlayer(int32_t spot);
extern int32_t menutext_(int32_t x,int32_t y,int32_t s,int32_t p,char *t,int32_t bits);
#define menutext(x,y,s,p,t) menutext_(x,y,s,p,(char *)stripcolorcodes(menutextbuf,t),10+16)
#define menutext(x,y,s,p,t) menutext_(x,y,s,p,(char *)OSD_StripColors(menutextbuf,t),10+16)
extern void M_DisplayMenus(void);
extern void G_FadePalette(int32_t r,int32_t g,int32_t b,int32_t e);
extern void G_PlayAnim(const char *fn,char);
@ -238,7 +238,7 @@ extern void C_ReportError(int32_t iError);
extern void onvideomodechange(int32_t newmode);
extern void X_OnEvent(register int32_t iEventID, register int32_t sActor, register int32_t sPlayer, register int32_t lDist);
extern void VM_OnEvent(register int32_t iEventID, register int32_t sActor, register int32_t sPlayer, register int32_t lDist);
extern int32_t A_CheckSoundPlaying(int32_t i, int32_t num);
extern int32_t S_CheckSoundPlaying(int32_t i, int32_t num);
@ -254,7 +254,7 @@ extern void Net_Connect(const char * srvaddr);
extern int32_t SpriteFlags[MAXTILES];
#define A_CheckSpriteFlags(iActor, iType) (((SpriteFlags[sprite[iActor].picnum]^ActorExtra[iActor].flags) & iType) != 0)
#define A_CheckSpriteFlags(iActor, iType) (((SpriteFlags[sprite[iActor].picnum]^actor[iActor].flags) & iType) != 0)
#define A_CheckSpriteTileFlags(iPicnum, iType) ((SpriteFlags[iPicnum] & iType) != 0)
static inline int32_t G_GetTeamPalette(int32_t team)

File diff suppressed because it is too large Load diff

View file

@ -165,7 +165,7 @@ const char *keyw[] =
"strength", // 11 sets health
"break", // 12 stops processing
"shoot", // 13 shoots a projectile
"palfrom", // 14 used for player screen shading effect, sets p->pals_time and p->pals[0-2]
"palfrom", // 14 used for player screen shading effect, sets p->pals
"sound", // 15 plays a sound that was defined with definesound
"fall", // 16 causes actor to fall to sector floor height
"state", // 17 begins defining a state if used outside a state or actor, otherwise calls a state
@ -741,7 +741,7 @@ const memberlabel_t PlayerLabels[]=
{ "actorsqu", PLAYER_ACTORSQU, 0, 0 },
{ "timebeforeexit", PLAYER_TIMEBEFOREEXIT, 0, 0 },
{ "customexitsound", PLAYER_CUSTOMEXITSOUND, 0, 0 },
{ "weaprecs[16]", PLAYER_WEAPRECS, 0, 0 },
{ "weaprecs", PLAYER_WEAPRECS, LABEL_HASPARM2, MAX_WEAPONS },
{ "weapreccnt", PLAYER_WEAPRECCNT, 0, 0 },
{ "interface_toggle_flag", PLAYER_INTERFACE_TOGGLE_FLAG, 0, 0 },
{ "rotscrnang", PLAYER_ROTSCRNANG, 0, 0 },
@ -959,10 +959,10 @@ const memberlabel_t InputLabels[]=
char *bitptr; // pointer to bitmap of which bytecode positions contain pointers
#define BITPTR_POINTER 1
hashtable_t gamevarH = { MAXGAMEVARS>>1, NULL };
hashtable_t arrayH = { MAXGAMEARRAYS>>1, NULL };
hashtable_t labelH = { 11264>>1, NULL };
hashtable_t keywH = { CON_END>>1, NULL };
hashtable_t h_gamevars = { MAXGAMEVARS>>1, NULL };
hashtable_t h_arrays = { MAXGAMEARRAYS>>1, NULL };
hashtable_t h_labels = { 11264>>1, NULL };
hashtable_t h_keywords = { CON_END>>1, NULL };
hashtable_t sectorH = { SECTOR_END>>1, NULL };
hashtable_t wallH = { WALL_END>>1, NULL };
@ -981,12 +981,12 @@ void C_InitHashes()
{
int32_t i;
hash_init(&gamevarH);
hash_init(&arrayH);
hash_init(&labelH);
hash_init(&h_gamevars);
hash_init(&h_arrays);
hash_init(&h_labels);
inithashnames();
hash_init(&keywH);
hash_init(&h_keywords);
hash_init(&sectorH);
hash_init(&wallH);
hash_init(&userdefH);
@ -996,7 +996,7 @@ void C_InitHashes()
hash_init(&actorH);
hash_init(&tspriteH);
for (i=NUMKEYWORDS-1; i>=0; i--) hash_add(&keywH,keyw[i],i);
for (i=NUMKEYWORDS-1; i>=0; i--) hash_add(&h_keywords,keyw[i],i);
for (i=0; SectorLabels[i].lId >= 0; i++) hash_add(&sectorH,SectorLabels[i].name,i);
for (i=0; WallLabels[i].lId >= 0; i++) hash_add(&wallH,WallLabels[i].name,i);
for (i=0; UserdefsLabels[i].lId >= 0; i++) hash_add(&userdefH,UserdefsLabels[i].name,i);
@ -1009,9 +1009,9 @@ void C_InitHashes()
void C_FreeHashes(void)
{
hash_free(&gamevarH);
hash_free(&arrayH);
hash_free(&labelH);
hash_free(&h_gamevars);
hash_free(&h_arrays);
hash_free(&h_labels);
}
// "magic" number for { and }, overrides line number in compiled code for later detection
@ -1418,8 +1418,8 @@ static int32_t C_CheckEventSync(int32_t iEventID)
return 1;
}
#define GetDefID(szGameLabel) hash_find(&gamevarH,szGameLabel)
#define GetADefID(szGameLabel) hash_find(&arrayH,szGameLabel)
#define GetDefID(szGameLabel) hash_find(&h_gamevars,szGameLabel)
#define GetADefID(szGameLabel) hash_find(&h_arrays,szGameLabel)
static inline int32_t isaltok(const char c)
{
@ -1483,7 +1483,7 @@ static int32_t C_GetKeyword(void)
while (isaltok(*temptextptr))
tempbuf[i++] = *(temptextptr++);
tempbuf[i] = 0;
return hash_find(&keywH,tempbuf);
return hash_find(&h_keywords,tempbuf);
}
static int32_t C_GetNextKeyword(void) //Returns its code #
@ -1508,7 +1508,7 @@ static int32_t C_GetNextKeyword(void) //Returns its code #
}
tempbuf[l] = 0;
i = hash_find(&keywH,tempbuf);
i = hash_find(&h_keywords,tempbuf);
if (i>=0)
{
if (i == CON_LEFTBRACE || i == CON_RIGHTBRACE || i == CON_NULLOP)
@ -1586,7 +1586,7 @@ static void C_GetNextVarType(int32_t type)
}
C_GetNextLabelName();
if (!g_skipKeywordCheck && hash_find(&keywH,label+(g_numLabels<<6))>=0)
if (!g_skipKeywordCheck && hash_find(&h_keywords,label+(g_numLabels<<6))>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
@ -1726,7 +1726,7 @@ static void C_GetNextVarType(int32_t type)
{
//try looking for a define instead
Bstrcpy(tempbuf,label+(g_numLabels<<6));
i = hash_find(&labelH,tempbuf);
i = hash_find(&h_labels,tempbuf);
if (i>=0)
{
if (labeltype[i] & LABEL_DEFINE)
@ -1805,14 +1805,14 @@ static int32_t C_GetNextValue(int32_t type)
}
tempbuf[l] = 0;
if (!g_skipKeywordCheck && hash_find(&keywH,tempbuf /*label+(g_numLabels<<6)*/)>=0)
if (!g_skipKeywordCheck && hash_find(&h_keywords,tempbuf /*label+(g_numLabels<<6)*/)>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
textptr+=l;
}
i = hash_find(&labelH,tempbuf);
i = hash_find(&h_labels,tempbuf);
if (i>=0)
{
char *el,*gl;
@ -2040,28 +2040,28 @@ static int32_t C_ParseCommand(void)
g_processingState = 1;
Bsprintf(g_szCurrentBlockName,"%s",label+(g_numLabels<<6));
hash_add(&labelH,label+(g_numLabels<<6),g_numLabels);
hash_add(&h_labels,label+(g_numLabels<<6),g_numLabels);
g_numLabels++;
return 0;
}
C_GetNextLabelName();
if (hash_find(&keywH,label+(g_numLabels<<6))>=0)
if (hash_find(&h_keywords,label+(g_numLabels<<6))>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
return 0;
}
i = hash_find(&gamevarH,label+(g_numLabels<<6));
i = hash_find(&h_gamevars,label+(g_numLabels<<6));
if (i>=0)
{
g_numCompilerWarnings++;
C_ReportError(WARNING_NAMEMATCHESVAR);
}
j = hash_find(&labelH,label+(g_numLabels<<6));
j = hash_find(&h_labels,label+(g_numLabels<<6));
if (j>=0)
{
if (labeltype[j] & LABEL_STATE)
@ -2226,7 +2226,7 @@ static int32_t C_ParseCommand(void)
//printf("Got Label '%.20s'\n",textptr);
// Check to see it's already defined
if (hash_find(&keywH,label+(g_numLabels<<6))>=0)
if (hash_find(&h_keywords,label+(g_numLabels<<6))>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
@ -2271,14 +2271,14 @@ static int32_t C_ParseCommand(void)
//printf("Got Label '%.20s'\n",textptr);
// Check to see it's already defined
if (hash_find(&keywH,label+(g_numLabels<<6))>=0)
if (hash_find(&h_keywords,label+(g_numLabels<<6))>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
return 0;
}
i = hash_find(&gamevarH,label+(g_numLabels<<6));
i = hash_find(&h_gamevars,label+(g_numLabels<<6));
if (i>=0)
{
g_numCompilerWarnings++;
@ -2299,21 +2299,21 @@ static int32_t C_ParseCommand(void)
//printf("Got label. '%.20s'\n",textptr);
// Check to see it's already defined
if (hash_find(&keywH,label+(g_numLabels<<6))>=0)
if (hash_find(&h_keywords,label+(g_numLabels<<6))>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
return 0;
}
i = hash_find(&gamevarH,label+(g_numLabels<<6));
i = hash_find(&h_gamevars,label+(g_numLabels<<6));
if (i>=0)
{
g_numCompilerWarnings++;
C_ReportError(WARNING_NAMEMATCHESVAR);
}
i = hash_find(&labelH,label+(g_numLabels<<6));
i = hash_find(&h_labels,label+(g_numLabels<<6));
if (i>=0)
{
/* if (i >= g_numDefaultLabels)
@ -2329,7 +2329,7 @@ static int32_t C_ParseCommand(void)
if (i == -1)
{
// printf("Defining Definition '%s' to be '%d'\n",label+(g_numLabels<<6),*(g_scriptPtr-1));
hash_add(&labelH,label+(g_numLabels<<6),g_numLabels);
hash_add(&h_labels,label+(g_numLabels<<6),g_numLabels);
labeltype[g_numLabels] = LABEL_DEFINE;
labelcode[g_numLabels++] = *(g_scriptPtr-1);
if (*(g_scriptPtr-1) >= 0 && *(g_scriptPtr-1) < MAXTILES && g_dynamicTileMapping)
@ -2392,20 +2392,20 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
// Check to see it's already defined
if (hash_find(&keywH,label+(g_numLabels<<6))>=0)
if (hash_find(&h_keywords,label+(g_numLabels<<6))>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
return 0;
}
if (hash_find(&gamevarH,label+(g_numLabels<<6))>=0)
if (hash_find(&h_gamevars,label+(g_numLabels<<6))>=0)
{
g_numCompilerWarnings++;
C_ReportError(WARNING_NAMEMATCHESVAR);
}
if ((i = hash_find(&labelH,label+(g_numLabels<<6))) >= 0)
if ((i = hash_find(&h_labels,label+(g_numLabels<<6))) >= 0)
{
g_numCompilerWarnings++;
initprintf("%s:%d: warning: duplicate move `%s' ignored.\n",g_szScriptFileName,g_lineNumber,label+(g_numLabels<<6));
@ -2413,7 +2413,7 @@ static int32_t C_ParseCommand(void)
if (i == -1)
{
hash_add(&labelH,label+(g_numLabels<<6),g_numLabels);
hash_add(&h_labels,label+(g_numLabels<<6),g_numLabels);
labeltype[g_numLabels] = LABEL_MOVE;
labelcode[g_numLabels++] = (intptr_t) g_scriptPtr;
}
@ -2585,21 +2585,21 @@ static int32_t C_ParseCommand(void)
g_scriptPtr--;
C_GetNextLabelName();
if (hash_find(&keywH,label+(g_numLabels<<6))>=0)
if (hash_find(&h_keywords,label+(g_numLabels<<6))>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
return 0;
}
i = hash_find(&gamevarH,label+(g_numLabels<<6));
i = hash_find(&h_gamevars,label+(g_numLabels<<6));
if (i>=0)
{
g_numCompilerWarnings++;
C_ReportError(WARNING_NAMEMATCHESVAR);
}
i = hash_find(&labelH,label+(g_numLabels<<6));
i = hash_find(&h_labels,label+(g_numLabels<<6));
if (i>=0)
{
g_numCompilerWarnings++;
@ -2609,7 +2609,7 @@ static int32_t C_ParseCommand(void)
if (i == -1)
{
labeltype[g_numLabels] = LABEL_AI;
hash_add(&labelH,label+(g_numLabels<<6),g_numLabels);
hash_add(&h_labels,label+(g_numLabels<<6),g_numLabels);
labelcode[g_numLabels++] = (intptr_t) g_scriptPtr;
}
@ -2666,21 +2666,21 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
// Check to see it's already defined
if (hash_find(&keywH,label+(g_numLabels<<6))>=0)
if (hash_find(&h_keywords,label+(g_numLabels<<6))>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
return 0;
}
i = hash_find(&gamevarH,label+(g_numLabels<<6));
i = hash_find(&h_gamevars,label+(g_numLabels<<6));
if (i>=0)
{
g_numCompilerWarnings++;
C_ReportError(WARNING_NAMEMATCHESVAR);
}
i = hash_find(&labelH,label+(g_numLabels<<6));
i = hash_find(&h_labels,label+(g_numLabels<<6));
if (i>=0)
{
g_numCompilerWarnings++;
@ -2691,7 +2691,7 @@ static int32_t C_ParseCommand(void)
{
labeltype[g_numLabels] = LABEL_ACTION;
labelcode[g_numLabels] = (intptr_t) g_scriptPtr;
hash_add(&labelH,label+(g_numLabels<<6),g_numLabels);
hash_add(&h_labels,label+(g_numLabels<<6),g_numLabels);
g_numLabels++;
}
@ -3578,7 +3578,7 @@ static int32_t C_ParseCommand(void)
//printf("found label of '%s'\n", label+(g_numLabels<<6));
// Check to see if it's a keyword
if (hash_find(&keywH,label+(g_numLabels<<6))>=0)
if (hash_find(&h_keywords,label+(g_numLabels<<6))>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
@ -3658,9 +3658,8 @@ static int32_t C_ParseCommand(void)
// now get name of .xxx
while ((*textptr != '['))
{
textptr++;
}
if (*textptr == '[')
textptr++;
@ -3669,6 +3668,7 @@ static int32_t C_ParseCommand(void)
C_GetNextVar();
g_labelsOnly = 0;
// now get name of .xxx
while (*textptr != '.')
{
if (*textptr == 0xa)
@ -3678,7 +3678,8 @@ static int32_t C_ParseCommand(void)
textptr++;
}
if (*textptr!='.')
if (*textptr != '.')
{
g_numCompilerErrors++;
C_ReportError(ERROR_SYNTAXERROR);
@ -3686,6 +3687,7 @@ static int32_t C_ParseCommand(void)
}
textptr++;
/// now pointing at 'xxx'
C_GetNextLabelName();
//printf("found xxx label of '%s'\n", label+(g_numLabels<<6));
@ -3709,10 +3711,6 @@ static int32_t C_ParseCommand(void)
// get the ID of the DEF
C_GetNextVar();
}
else
{
//printf("Member does not have Parm2\n");
}
// now at target VAR...
@ -4033,17 +4031,16 @@ static int32_t C_ParseCommand(void)
case CON_RESIZEARRAY:
C_GetNextLabelName();
i=GetADefID(label+(g_numLabels<<6));
if (i > (-1))
{
bitptr[(g_scriptPtr-script)>>3] &= ~(BITPTR_POINTER<<((g_scriptPtr-script)&7));
*g_scriptPtr++=i;
}
else
if (i < 0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_NOTAGAMEARRAY);
return 1;
}
bitptr[(g_scriptPtr-script)>>3] &= ~(BITPTR_POINTER<<((g_scriptPtr-script)&7));
*g_scriptPtr++=i;
C_SkipComments();
C_GetNextVar();
return 0;
@ -5119,10 +5116,10 @@ repeatcase:
}
gamefunctions[j][i] = '\0';
keydefaults[j*3][i] = '\0';
hash_add(&gamefuncH,gamefunctions[j],j);
hash_add(&h_gamefuncs,gamefunctions[j],j);
{
char *str = strtolower(Bstrdup(gamefunctions[j]),Bstrlen(gamefunctions[j]));
hash_add(&gamefuncH,str,j);
hash_add(&h_gamefuncs,str,j);
Bfree(str);
}
@ -5374,15 +5371,15 @@ repeatcase:
C_SkipComments();
MapInfo[j*MAXLEVELS+k].partime =
(((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*GAMETICSPERSEC*60)+
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*GAMETICSPERSEC);
(((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*REALGAMETICSPERSEC*60)+
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC);
textptr += 5;
while (*textptr == ' ' || *textptr == '\t') textptr++;
MapInfo[j*MAXLEVELS+k].designertime =
(((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*GAMETICSPERSEC*60)+
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*GAMETICSPERSEC);
(((*(textptr+0)-'0')*10+(*(textptr+1)-'0'))*REALGAMETICSPERSEC*60)+
(((*(textptr+3)-'0')*10+(*(textptr+4)-'0'))*REALGAMETICSPERSEC);
textptr += 5;
while (*textptr == ' ' || *textptr == '\t') textptr++;
@ -5826,7 +5823,7 @@ static void C_AddDefinition(const char *lLabel,int32_t lValue,int32_t lType)
{
Bstrcpy(label+(g_numLabels<<6),lLabel);
labeltype[g_numLabels] = lType;
hash_add(&labelH,label+(g_numLabels<<6),g_numLabels);
hash_add(&h_labels,label+(g_numLabels<<6),g_numLabels);
labelcode[g_numLabels++] = lValue;
g_numDefaultLabels++;
}
@ -6157,7 +6154,7 @@ void C_Compile(const char *filenam)
{
int32_t j=0, k=0;
hash_free(&keywH);
hash_free(&h_keywords);
freehashnames();
hash_free(&sectorH);

View file

@ -84,25 +84,30 @@ extern const memberlabel_t InputLabels[];
extern const memberlabel_t TsprLabels[];
/*
extern void X_AccessUserdef(int32_t iSet, int32_t lLabelID, int32_t lVar2);
extern void X_AccessActiveProjectile(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void X_AccessPlayer(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2);
extern void X_AccessPlayerInput(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void X_AccessWall(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void X_AccessSector(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void X_AccessSprite(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2);
extern void X_AccessTsprite(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void X_AccessProjectile(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void VM_AccessUserdef(int32_t iSet, int32_t lLabelID, int32_t lVar2);
extern void VM_AccessActiveProjectile(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void VM_AccessPlayer(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2);
extern void VM_AccessPlayerInput(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void VM_AccessWall(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void VM_AccessSector(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void VM_AccessSprite(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2);
extern void VM_AccessTsprite(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
extern void VM_AccessProjectile(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2);
*/
#define CON_ERROR OSD_ERROR "Line %d, %s: "
enum vmflags_t {
VM_RETURN = 0x00000001,
VM_KILL = 0x00000002,
VM_NOEXECUTE = 0x00000004,
};
typedef struct {
int32_t g_i, g_p, g_x;
intptr_t *g_t;
spritetype *g_sp;
int32_t g_killitFlag, g_returnFlag;
int32_t filler;
int32_t g_flags;
} vmstate_t;
extern vmstate_t vm;

File diff suppressed because it is too large Load diff

View file

@ -30,7 +30,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
// I got a 3-4 fps gain by inlining these...
#ifndef _gamevars_c_
static void __fastcall X_AccessUserdef(int32_t iSet, int32_t lLabelID, int32_t lVar2)
static void __fastcall VM_AccessUserdef(int32_t iSet, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue=0;
@ -911,7 +911,7 @@ static void __fastcall X_AccessUserdef(int32_t iSet, int32_t lLabelID, int32_t l
}
}
static void __fastcall X_AccessActiveProjectile(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static void __fastcall VM_AccessActiveProjectile(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue=0,proj=vm.g_i;
@ -920,7 +920,7 @@ static void __fastcall X_AccessActiveProjectile(int32_t iSet, int32_t lVar1, int
if ((proj < 0 || proj >= MAXSPRITES) /* && g_scriptSanityChecks */)
{
// OSD_Printf("X_AccessActiveProjectile(): invalid projectile (%d)\n",proj);
// OSD_Printf("VM_AccessActiveProjectile(): invalid projectile (%d)\n",proj);
OSD_Printf(CON_ERROR "tried to %s %s on invalid target projectile (%d) %d %d from %s\n",g_errorLineNum,keyw[g_tw],
iSet?"set":"get",ProjectileLabels[lLabelID].name,proj,vm.g_i,vm.g_sp->picnum,
(lVar1<MAXGAMEVARS)?aGameVars[lVar1].szLabel:"extended");
@ -1199,7 +1199,7 @@ static void __fastcall X_AccessActiveProjectile(int32_t iSet, int32_t lVar1, int
}
}
static void __fastcall X_GetPlayer(register int32_t lVar1, register int32_t lLabelID, register int32_t lVar2, int32_t lParm2)
static void __fastcall VM_GetPlayer(register int32_t lVar1, register int32_t lLabelID, register int32_t lVar2, int32_t lParm2)
{
register int32_t iPlayer=vm.g_p;
@ -1229,11 +1229,11 @@ static void __fastcall X_GetPlayer(register int32_t lVar1, register int32_t lLab
case PLAYER_LOOGCNT:
Gv_SetVar(lVar2, g_player[iPlayer].ps->loogcnt, vm.g_i, vm.g_p); return;
case PLAYER_POSX:
Gv_SetVar(lVar2, g_player[iPlayer].ps->posx, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->pos.x, vm.g_i, vm.g_p); return;
case PLAYER_POSY:
Gv_SetVar(lVar2, g_player[iPlayer].ps->posy, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->pos.y, vm.g_i, vm.g_p); return;
case PLAYER_POSZ:
Gv_SetVar(lVar2, g_player[iPlayer].ps->posz, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->pos.z, vm.g_i, vm.g_p); return;
case PLAYER_HORIZ:
Gv_SetVar(lVar2, g_player[iPlayer].ps->horiz, vm.g_i, vm.g_p); return;
case PLAYER_OHORIZ:
@ -1247,21 +1247,21 @@ static void __fastcall X_GetPlayer(register int32_t lVar1, register int32_t lLab
case PLAYER_BOBPOSY:
Gv_SetVar(lVar2, g_player[iPlayer].ps->bobposy, vm.g_i, vm.g_p); return;
case PLAYER_OPOSX:
Gv_SetVar(lVar2, g_player[iPlayer].ps->oposx, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->opos.x, vm.g_i, vm.g_p); return;
case PLAYER_OPOSY:
Gv_SetVar(lVar2, g_player[iPlayer].ps->oposy, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->opos.y, vm.g_i, vm.g_p); return;
case PLAYER_OPOSZ:
Gv_SetVar(lVar2, g_player[iPlayer].ps->oposz, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->opos.z, vm.g_i, vm.g_p); return;
case PLAYER_PYOFF:
Gv_SetVar(lVar2, g_player[iPlayer].ps->pyoff, vm.g_i, vm.g_p); return;
case PLAYER_OPYOFF:
Gv_SetVar(lVar2, g_player[iPlayer].ps->opyoff, vm.g_i, vm.g_p); return;
case PLAYER_POSXV:
Gv_SetVar(lVar2, g_player[iPlayer].ps->posxv, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->posvel.x, vm.g_i, vm.g_p); return;
case PLAYER_POSYV:
Gv_SetVar(lVar2, g_player[iPlayer].ps->posyv, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->posvel.y, vm.g_i, vm.g_p); return;
case PLAYER_POSZV:
Gv_SetVar(lVar2, g_player[iPlayer].ps->poszv, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->posvel.z, vm.g_i, vm.g_p); return;
case PLAYER_LAST_PISSED_TIME:
Gv_SetVar(lVar2, g_player[iPlayer].ps->last_pissed_time, vm.g_i, vm.g_p); return;
case PLAYER_TRUEFZ:
@ -1277,7 +1277,7 @@ static void __fastcall X_GetPlayer(register int32_t lVar1, register int32_t lLab
case PLAYER_WEAPON_SWAY:
Gv_SetVar(lVar2, g_player[iPlayer].ps->weapon_sway, vm.g_i, vm.g_p); return;
case PLAYER_PALS_TIME:
Gv_SetVar(lVar2, g_player[iPlayer].ps->pals_time, vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->pals.f, vm.g_i, vm.g_p); return;
case PLAYER_RANDOMFLAMEX:
Gv_SetVar(lVar2, g_player[iPlayer].ps->randomflamex, vm.g_i, vm.g_p); return;
case PLAYER_CRACK_TIME:
@ -1381,7 +1381,7 @@ static void __fastcall X_GetPlayer(register int32_t lVar1, register int32_t lLab
case PLAYER_CUSTOMEXITSOUND:
Gv_SetVar(lVar2, g_player[iPlayer].ps->customexitsound, vm.g_i, vm.g_p); return;
case PLAYER_WEAPRECS:
Gv_SetVar(lVar2, g_player[iPlayer].ps->weaprecs[15], vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->weaprecs[lParm2], vm.g_i, vm.g_p); return;
case PLAYER_WEAPRECCNT:
Gv_SetVar(lVar2, g_player[iPlayer].ps->weapreccnt, vm.g_i, vm.g_p); return;
case PLAYER_INTERFACE_TOGGLE_FLAG:
@ -1453,7 +1453,7 @@ static void __fastcall X_GetPlayer(register int32_t lVar1, register int32_t lLab
case PLAYER_FALLING_COUNTER:
Gv_SetVar(lVar2, g_player[iPlayer].ps->falling_counter, vm.g_i, vm.g_p); return;
case PLAYER_GOTWEAPON:
Gv_SetVar(lVar2, g_player[iPlayer].ps->gotweapon[lParm2], vm.g_i, vm.g_p); return;
Gv_SetVar(lVar2, g_player[iPlayer].ps->gotweapon & (1<<lParm2), vm.g_i, vm.g_p); return;
case PLAYER_REFRESH_INVENTORY:
Gv_SetVar(lVar2, g_player[iPlayer].ps->refresh_inventory, vm.g_i, vm.g_p); return;
case PLAYER_TOGGLE_KEY_FLAG:
@ -1471,7 +1471,16 @@ static void __fastcall X_GetPlayer(register int32_t lVar1, register int32_t lLab
case PLAYER_SECRET_ROOMS:
Gv_SetVar(lVar2, g_player[iPlayer].ps->secret_rooms, vm.g_i, vm.g_p); return;
case PLAYER_PALS:
Gv_SetVar(lVar2, g_player[iPlayer].ps->pals[lParm2], vm.g_i, vm.g_p); return;
switch (lParm2)
{
case 0:
Gv_SetVar(lVar2, g_player[iPlayer].ps->pals.r, vm.g_i, vm.g_p); return;
case 1:
Gv_SetVar(lVar2, g_player[iPlayer].ps->pals.g, vm.g_i, vm.g_p); return;
case 2:
Gv_SetVar(lVar2, g_player[iPlayer].ps->pals.b, vm.g_i, vm.g_p); return;
}
return;
case PLAYER_MAX_ACTORS_KILLED:
Gv_SetVar(lVar2, g_player[iPlayer].ps->max_actors_killed, vm.g_i, vm.g_p); return;
case PLAYER_ACTORS_KILLED:
@ -1509,7 +1518,7 @@ static void __fastcall X_GetPlayer(register int32_t lVar1, register int32_t lLab
}
badplayer:
// OSD_Printf("X_AccessPlayer(): invalid target player (%d) %d\n",iPlayer,vm.g_i);
// OSD_Printf("VM_AccessPlayer(): invalid target player (%d) %d\n",iPlayer,vm.g_i);
OSD_Printf(CON_ERROR "tried to get %s on invalid target player (%d) from spr %d gv %s\n",g_errorLineNum,keyw[g_tw],
PlayerLabels[lLabelID].name,iPlayer,vm.g_i,
(lVar1<MAXGAMEVARS)?aGameVars[lVar1].szLabel:"extended");
@ -1521,7 +1530,7 @@ badpos:
return;
}
static void __fastcall X_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2)
static void __fastcall VM_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2)
{
register int32_t iPlayer=vm.g_p;
@ -1553,11 +1562,11 @@ static void __fastcall X_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVar
case PLAYER_LOOGCNT:
g_player[iPlayer].ps->loogcnt=lVar1; return;
case PLAYER_POSX:
g_player[iPlayer].ps->posx=lVar1; return;
g_player[iPlayer].ps->pos.x=lVar1; return;
case PLAYER_POSY:
g_player[iPlayer].ps->posy=lVar1; return;
g_player[iPlayer].ps->pos.y=lVar1; return;
case PLAYER_POSZ:
g_player[iPlayer].ps->posz=lVar1; return;
g_player[iPlayer].ps->pos.z=lVar1; return;
case PLAYER_HORIZ:
g_player[iPlayer].ps->horiz=lVar1; return;
case PLAYER_OHORIZ:
@ -1571,21 +1580,21 @@ static void __fastcall X_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVar
case PLAYER_BOBPOSY:
g_player[iPlayer].ps->bobposy=lVar1; return;
case PLAYER_OPOSX:
g_player[iPlayer].ps->oposx=lVar1; return;
g_player[iPlayer].ps->opos.x=lVar1; return;
case PLAYER_OPOSY:
g_player[iPlayer].ps->oposy=lVar1; return;
g_player[iPlayer].ps->opos.y=lVar1; return;
case PLAYER_OPOSZ:
g_player[iPlayer].ps->oposz=lVar1; return;
g_player[iPlayer].ps->opos.z=lVar1; return;
case PLAYER_PYOFF:
g_player[iPlayer].ps->pyoff=lVar1; return;
case PLAYER_OPYOFF:
g_player[iPlayer].ps->opyoff=lVar1; return;
case PLAYER_POSXV:
g_player[iPlayer].ps->posxv=lVar1; return;
g_player[iPlayer].ps->posvel.x=lVar1; return;
case PLAYER_POSYV:
g_player[iPlayer].ps->posyv=lVar1; return;
g_player[iPlayer].ps->posvel.y=lVar1; return;
case PLAYER_POSZV:
g_player[iPlayer].ps->poszv=lVar1; return;
g_player[iPlayer].ps->posvel.z=lVar1; return;
case PLAYER_LAST_PISSED_TIME:
g_player[iPlayer].ps->last_pissed_time=lVar1; return;
case PLAYER_TRUEFZ:
@ -1601,7 +1610,7 @@ static void __fastcall X_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVar
case PLAYER_WEAPON_SWAY:
g_player[iPlayer].ps->weapon_sway=lVar1; return;
case PLAYER_PALS_TIME:
g_player[iPlayer].ps->pals_time=lVar1; return;
g_player[iPlayer].ps->pals.f=lVar1; return;
case PLAYER_RANDOMFLAMEX:
g_player[iPlayer].ps->randomflamex=lVar1; return;
case PLAYER_CRACK_TIME:
@ -1705,7 +1714,7 @@ static void __fastcall X_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVar
case PLAYER_CUSTOMEXITSOUND:
g_player[iPlayer].ps->customexitsound=lVar1; return;
case PLAYER_WEAPRECS:
g_player[iPlayer].ps->weaprecs[15]=lVar1; return;
g_player[iPlayer].ps->weaprecs[lParm2]=lVar1; return;
case PLAYER_WEAPRECCNT:
g_player[iPlayer].ps->weapreccnt=lVar1; return;
case PLAYER_INTERFACE_TOGGLE_FLAG:
@ -1781,7 +1790,14 @@ static void __fastcall X_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVar
case PLAYER_FALLING_COUNTER:
g_player[iPlayer].ps->falling_counter=lVar1; return;
case PLAYER_GOTWEAPON:
g_player[iPlayer].ps->gotweapon[lParm2]=lVar1; return;
if (lVar1)
{
g_player[iPlayer].ps->gotweapon |= (1<<lParm2);
return;
}
g_player[iPlayer].ps->gotweapon &= ~(1<<lParm2);
return;
case PLAYER_REFRESH_INVENTORY:
g_player[iPlayer].ps->refresh_inventory=lVar1; return;
case PLAYER_TOGGLE_KEY_FLAG:
@ -1799,7 +1815,16 @@ static void __fastcall X_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVar
case PLAYER_SECRET_ROOMS:
g_player[iPlayer].ps->secret_rooms=lVar1; return;
case PLAYER_PALS:
g_player[iPlayer].ps->pals[lParm2]=lVar1; return;
switch (lParm2)
{
case 0:
g_player[iPlayer].ps->pals.r = lVar1; return;
case 1:
g_player[iPlayer].ps->pals.g = lVar1; return;
case 2:
g_player[iPlayer].ps->pals.b = lVar1; return;
}
return;
case PLAYER_MAX_ACTORS_KILLED:
g_player[iPlayer].ps->max_actors_killed=lVar1; return;
case PLAYER_ACTORS_KILLED:
@ -1837,7 +1862,7 @@ static void __fastcall X_SetPlayer(int32_t lVar1, int32_t lLabelID, int32_t lVar
}
badplayer:
// OSD_Printf("X_AccessPlayer(): invalid target player (%d) %d\n",iPlayer,vm.g_i);
// OSD_Printf("VM_AccessPlayer(): invalid target player (%d) %d\n",iPlayer,vm.g_i);
OSD_Printf(CON_ERROR "tried to set %s on invalid target player (%d) from spr %d gv %s\n",g_errorLineNum,keyw[g_tw],
PlayerLabels[lLabelID].name,iPlayer,vm.g_i,
(lVar1<MAXGAMEVARS)?aGameVars[lVar1].szLabel:"extended");
@ -1851,7 +1876,7 @@ badpos:
return;
}
static void __fastcall X_AccessPlayerInput(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static void __fastcall VM_AccessPlayerInput(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue=0;
int32_t iPlayer=vm.g_p;
@ -1930,7 +1955,7 @@ badplayer:
return;
}
static void __fastcall X_AccessWall(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static void __fastcall VM_AccessWall(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue=0;
int32_t iWall = Gv_GetVar(lVar1, vm.g_i, vm.g_p);
@ -2105,7 +2130,7 @@ badwall:
return;
}
static void __fastcall X_AccessSector(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static void __fastcall VM_AccessSector(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue=0;
int32_t iSector=sprite[vm.g_i].sectnum;
@ -2338,7 +2363,7 @@ badsector:
return;
}
static void __fastcall X_SetSprite(int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2)
static void __fastcall VM_SetSprite(int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2)
{
register int32_t iActor=vm.g_i;
@ -2448,75 +2473,75 @@ static void __fastcall X_SetSprite(int32_t lVar1, int32_t lLabelID, int32_t lVar
return;
case ACTOR_HTCGG:
ActorExtra[iActor].cgg=lVar1;
actor[iActor].cgg=lVar1;
return;
case ACTOR_HTPICNUM :
ActorExtra[iActor].picnum=lVar1;
actor[iActor].picnum=lVar1;
return;
case ACTOR_HTANG:
ActorExtra[iActor].ang=lVar1;
actor[iActor].ang=lVar1;
return;
case ACTOR_HTEXTRA:
ActorExtra[iActor].extra=lVar1;
actor[iActor].extra=lVar1;
return;
case ACTOR_HTOWNER:
ActorExtra[iActor].owner=lVar1;
actor[iActor].owner=lVar1;
return;
case ACTOR_HTMOVFLAG:
ActorExtra[iActor].movflag=lVar1;
actor[iActor].movflag=lVar1;
return;
case ACTOR_HTTEMPANG:
ActorExtra[iActor].tempang=lVar1;
actor[iActor].tempang=lVar1;
return;
case ACTOR_HTACTORSTAYPUT:
ActorExtra[iActor].actorstayput=lVar1;
actor[iActor].actorstayput=lVar1;
return;
case ACTOR_HTDISPICNUM:
ActorExtra[iActor].dispicnum=lVar1;
actor[iActor].dispicnum=lVar1;
return;
case ACTOR_HTTIMETOSLEEP:
ActorExtra[iActor].timetosleep=lVar1;
actor[iActor].timetosleep=lVar1;
return;
case ACTOR_HTFLOORZ:
ActorExtra[iActor].floorz=lVar1;
actor[iActor].floorz=lVar1;
return;
case ACTOR_HTCEILINGZ:
ActorExtra[iActor].ceilingz=lVar1;
actor[iActor].ceilingz=lVar1;
return;
case ACTOR_HTLASTVX:
ActorExtra[iActor].lastvx=lVar1;
actor[iActor].lastvx=lVar1;
return;
case ACTOR_HTLASTVY:
ActorExtra[iActor].lastvy=lVar1;
actor[iActor].lastvy=lVar1;
return;
case ACTOR_HTBPOSX:
ActorExtra[iActor].bposx=lVar1;
actor[iActor].bposx=lVar1;
return;
case ACTOR_HTBPOSY:
ActorExtra[iActor].bposy=lVar1;
actor[iActor].bposy=lVar1;
return;
case ACTOR_HTBPOSZ:
ActorExtra[iActor].bposz=lVar1;
actor[iActor].bposz=lVar1;
return;
case ACTOR_HTG_T:
ActorExtra[iActor].temp_data[lParm2]=lVar1;
actor[iActor].t_data[lParm2]=lVar1;
return;
case ACTOR_ANGOFF:
@ -2556,7 +2581,7 @@ static void __fastcall X_SetSprite(int32_t lVar1, int32_t lLabelID, int32_t lVar
return;
case ACTOR_HTFLAGS:
ActorExtra[iActor].flags=lVar1;
actor[iActor].flags=lVar1;
return;
case ACTOR_ALPHA:
@ -2582,7 +2607,7 @@ badpos:
}
static void __fastcall X_GetSprite(int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2)
static void __fastcall VM_GetSprite(int32_t lVar1, int32_t lLabelID, int32_t lVar2, int32_t lParm2)
{
register int32_t iActor=vm.g_i;
@ -2690,75 +2715,75 @@ static void __fastcall X_GetSprite(int32_t lVar1, int32_t lLabelID, int32_t lVar
return;
case ACTOR_HTCGG:
Gv_SetVar(lVar2, ActorExtra[iActor].cgg, vm.g_i, vm.g_p);
Gv_SetVar(lVar2, actor[iActor].cgg, vm.g_i, vm.g_p);
return;
case ACTOR_HTPICNUM :
Gv_SetVar(lVar2, ActorExtra[iActor].picnum, vm.g_i, vm.g_p);
Gv_SetVar(lVar2, actor[iActor].picnum, vm.g_i, vm.g_p);
return;
case ACTOR_HTANG:
Gv_SetVar(lVar2, ActorExtra[iActor].ang, vm.g_i, vm.g_p);
Gv_SetVar(lVar2, actor[iActor].ang, vm.g_i, vm.g_p);
return;
case ACTOR_HTEXTRA:
Gv_SetVar(lVar2,ActorExtra[iActor].extra, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].extra, vm.g_i, vm.g_p);
return;
case ACTOR_HTOWNER:
Gv_SetVar(lVar2,ActorExtra[iActor].owner, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].owner, vm.g_i, vm.g_p);
return;
case ACTOR_HTMOVFLAG:
Gv_SetVar(lVar2,ActorExtra[iActor].movflag, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].movflag, vm.g_i, vm.g_p);
return;
case ACTOR_HTTEMPANG:
Gv_SetVar(lVar2,ActorExtra[iActor].tempang, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].tempang, vm.g_i, vm.g_p);
return;
case ACTOR_HTACTORSTAYPUT:
Gv_SetVar(lVar2,ActorExtra[iActor].actorstayput, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].actorstayput, vm.g_i, vm.g_p);
return;
case ACTOR_HTDISPICNUM:
Gv_SetVar(lVar2,ActorExtra[iActor].dispicnum, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].dispicnum, vm.g_i, vm.g_p);
return;
case ACTOR_HTTIMETOSLEEP:
Gv_SetVar(lVar2,ActorExtra[iActor].timetosleep, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].timetosleep, vm.g_i, vm.g_p);
return;
case ACTOR_HTFLOORZ:
Gv_SetVar(lVar2,ActorExtra[iActor].floorz, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].floorz, vm.g_i, vm.g_p);
return;
case ACTOR_HTCEILINGZ:
Gv_SetVar(lVar2,ActorExtra[iActor].ceilingz, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].ceilingz, vm.g_i, vm.g_p);
return;
case ACTOR_HTLASTVX:
Gv_SetVar(lVar2,ActorExtra[iActor].lastvx, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].lastvx, vm.g_i, vm.g_p);
return;
case ACTOR_HTLASTVY:
Gv_SetVar(lVar2,ActorExtra[iActor].lastvy, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].lastvy, vm.g_i, vm.g_p);
return;
case ACTOR_HTBPOSX:
Gv_SetVar(lVar2,ActorExtra[iActor].bposx, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].bposx, vm.g_i, vm.g_p);
return;
case ACTOR_HTBPOSY:
Gv_SetVar(lVar2,ActorExtra[iActor].bposy, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].bposy, vm.g_i, vm.g_p);
return;
case ACTOR_HTBPOSZ:
Gv_SetVar(lVar2,ActorExtra[iActor].bposz, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].bposz, vm.g_i, vm.g_p);
return;
case ACTOR_HTG_T:
Gv_SetVar(lVar2, ActorExtra[iActor].temp_data[lParm2], vm.g_i, vm.g_p);
Gv_SetVar(lVar2, actor[iActor].t_data[lParm2], vm.g_i, vm.g_p);
return;
case ACTOR_ANGOFF:
@ -2798,7 +2823,7 @@ static void __fastcall X_GetSprite(int32_t lVar1, int32_t lLabelID, int32_t lVar
return;
case ACTOR_HTFLAGS:
Gv_SetVar(lVar2,ActorExtra[iActor].flags, vm.g_i, vm.g_p);
Gv_SetVar(lVar2,actor[iActor].flags, vm.g_i, vm.g_p);
return;
case ACTOR_ALPHA:
@ -2824,7 +2849,7 @@ badpos:
}
static void __fastcall X_AccessTsprite(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static void __fastcall VM_AccessTsprite(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue=0;
int32_t iActor=vm.g_i;
@ -3066,7 +3091,7 @@ badtspr:
return;
}
static void __fastcall X_AccessProjectile(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static void __fastcall VM_AccessProjectile(int32_t iSet, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue=0;
@ -3340,7 +3365,7 @@ badtile:
return;
}
#else
static int32_t __fastcall X_AccessSpriteX(int32_t iActor, int32_t lLabelID, int32_t lParm2)
static int32_t __fastcall VM_AccessSpriteX(int32_t iActor, int32_t lLabelID, int32_t lParm2)
{
if ((ActorLabels[lLabelID].flags & LABEL_HASPARM2 && (lParm2 < 0 || lParm2 >= ActorLabels[lLabelID].maxParm2)) /* && g_scriptSanityChecks */)
goto badpos;
@ -3370,24 +3395,24 @@ static int32_t __fastcall X_AccessSpriteX(int32_t iActor, int32_t lLabelID, int3
case ACTOR_LOTAG: return sprite[iActor].lotag;
case ACTOR_HITAG: return sprite[iActor].hitag;
case ACTOR_EXTRA: return sprite[iActor].extra;
case ACTOR_HTCGG: return ActorExtra[iActor].cgg;
case ACTOR_HTPICNUM : return ActorExtra[iActor].picnum;
case ACTOR_HTANG: return ActorExtra[iActor].ang;
case ACTOR_HTEXTRA: return ActorExtra[iActor].extra;
case ACTOR_HTOWNER: return ActorExtra[iActor].owner;
case ACTOR_HTMOVFLAG: return ActorExtra[iActor].movflag;
case ACTOR_HTTEMPANG: return ActorExtra[iActor].tempang;
case ACTOR_HTACTORSTAYPUT: return ActorExtra[iActor].actorstayput;
case ACTOR_HTDISPICNUM: return ActorExtra[iActor].dispicnum;
case ACTOR_HTTIMETOSLEEP: return ActorExtra[iActor].timetosleep;
case ACTOR_HTFLOORZ: return ActorExtra[iActor].floorz;
case ACTOR_HTCEILINGZ: return ActorExtra[iActor].ceilingz;
case ACTOR_HTLASTVX: return ActorExtra[iActor].lastvx;
case ACTOR_HTLASTVY: return ActorExtra[iActor].lastvy;
case ACTOR_HTBPOSX: return ActorExtra[iActor].bposx;
case ACTOR_HTBPOSY: return ActorExtra[iActor].bposy;
case ACTOR_HTBPOSZ: return ActorExtra[iActor].bposz;
case ACTOR_HTG_T: return ActorExtra[iActor].temp_data[lParm2];
case ACTOR_HTCGG: return actor[iActor].cgg;
case ACTOR_HTPICNUM : return actor[iActor].picnum;
case ACTOR_HTANG: return actor[iActor].ang;
case ACTOR_HTEXTRA: return actor[iActor].extra;
case ACTOR_HTOWNER: return actor[iActor].owner;
case ACTOR_HTMOVFLAG: return actor[iActor].movflag;
case ACTOR_HTTEMPANG: return actor[iActor].tempang;
case ACTOR_HTACTORSTAYPUT: return actor[iActor].actorstayput;
case ACTOR_HTDISPICNUM: return actor[iActor].dispicnum;
case ACTOR_HTTIMETOSLEEP: return actor[iActor].timetosleep;
case ACTOR_HTFLOORZ: return actor[iActor].floorz;
case ACTOR_HTCEILINGZ: return actor[iActor].ceilingz;
case ACTOR_HTLASTVX: return actor[iActor].lastvx;
case ACTOR_HTLASTVY: return actor[iActor].lastvy;
case ACTOR_HTBPOSX: return actor[iActor].bposx;
case ACTOR_HTBPOSY: return actor[iActor].bposy;
case ACTOR_HTBPOSZ: return actor[iActor].bposz;
case ACTOR_HTG_T: return actor[iActor].t_data[lParm2];
case ACTOR_ANGOFF: return spriteext[iActor].angoff;
case ACTOR_PITCH: return spriteext[iActor].pitch;
case ACTOR_ROLL: return spriteext[iActor].roll;
@ -3397,7 +3422,7 @@ static int32_t __fastcall X_AccessSpriteX(int32_t iActor, int32_t lLabelID, int3
case ACTOR_MDFLAGS: return spriteext[iActor].flags;
case ACTOR_XPANNING: return spriteext[iActor].xpanning;
case ACTOR_YPANNING: return spriteext[iActor].ypanning;
case ACTOR_HTFLAGS: return ActorExtra[iActor].flags;
case ACTOR_HTFLAGS: return actor[iActor].flags;
case ACTOR_ALPHA: return (uint8_t)(spriteext[iActor].alpha*255.0f);
default: return -1;
}
@ -3408,7 +3433,7 @@ badpos:
return -1;
}
static int32_t __fastcall X_AccessSectorX(int32_t iSector, int32_t lLabelID)
static int32_t __fastcall VM_AccessSectorX(int32_t iSector, int32_t lLabelID)
{
switch (lLabelID)
{
@ -3439,7 +3464,7 @@ static int32_t __fastcall X_AccessSectorX(int32_t iSector, int32_t lLabelID)
}
}
static int32_t __fastcall X_AccessPlayerX(int32_t iPlayer, int32_t lLabelID, int32_t lParm2)
static int32_t __fastcall VM_AccessPlayerX(int32_t iPlayer, int32_t lLabelID, int32_t lParm2)
{
if ((PlayerLabels[lLabelID].flags & LABEL_HASPARM2 && (lParm2 < 0 || lParm2 >= PlayerLabels[lLabelID].maxParm2)) /* && g_scriptSanityChecks */)
goto badpos;
@ -3461,11 +3486,11 @@ static int32_t __fastcall X_AccessPlayerX(int32_t iPlayer, int32_t lLabelID, int
case PLAYER_LOOGCNT:
return g_player[iPlayer].ps->loogcnt;
case PLAYER_POSX:
return g_player[iPlayer].ps->posx;
return g_player[iPlayer].ps->pos.x;
case PLAYER_POSY:
return g_player[iPlayer].ps->posy;
return g_player[iPlayer].ps->pos.y;
case PLAYER_POSZ:
return g_player[iPlayer].ps->posz;
return g_player[iPlayer].ps->pos.z;
case PLAYER_HORIZ:
return g_player[iPlayer].ps->horiz;
case PLAYER_OHORIZ:
@ -3479,21 +3504,21 @@ static int32_t __fastcall X_AccessPlayerX(int32_t iPlayer, int32_t lLabelID, int
case PLAYER_BOBPOSY:
return g_player[iPlayer].ps->bobposy;
case PLAYER_OPOSX:
return g_player[iPlayer].ps->oposx;
return g_player[iPlayer].ps->opos.x;
case PLAYER_OPOSY:
return g_player[iPlayer].ps->oposy;
return g_player[iPlayer].ps->opos.y;
case PLAYER_OPOSZ:
return g_player[iPlayer].ps->oposz;
return g_player[iPlayer].ps->opos.z;
case PLAYER_PYOFF:
return g_player[iPlayer].ps->pyoff;
case PLAYER_OPYOFF:
return g_player[iPlayer].ps->opyoff;
case PLAYER_POSXV:
return g_player[iPlayer].ps->posxv;
return g_player[iPlayer].ps->posvel.x;
case PLAYER_POSYV:
return g_player[iPlayer].ps->posyv;
return g_player[iPlayer].ps->posvel.y;
case PLAYER_POSZV:
return g_player[iPlayer].ps->poszv;
return g_player[iPlayer].ps->posvel.z;
case PLAYER_LAST_PISSED_TIME:
return g_player[iPlayer].ps->last_pissed_time;
case PLAYER_TRUEFZ:
@ -3509,7 +3534,7 @@ static int32_t __fastcall X_AccessPlayerX(int32_t iPlayer, int32_t lLabelID, int
case PLAYER_WEAPON_SWAY:
return g_player[iPlayer].ps->weapon_sway;
case PLAYER_PALS_TIME:
return g_player[iPlayer].ps->pals_time;
return g_player[iPlayer].ps->pals.f;
case PLAYER_RANDOMFLAMEX:
return g_player[iPlayer].ps->randomflamex;
case PLAYER_CRACK_TIME:
@ -3613,7 +3638,7 @@ static int32_t __fastcall X_AccessPlayerX(int32_t iPlayer, int32_t lLabelID, int
case PLAYER_CUSTOMEXITSOUND:
return g_player[iPlayer].ps->customexitsound;
case PLAYER_WEAPRECS:
return g_player[iPlayer].ps->weaprecs[15];
return g_player[iPlayer].ps->weaprecs[lParm2];
case PLAYER_WEAPRECCNT:
return g_player[iPlayer].ps->weapreccnt;
case PLAYER_INTERFACE_TOGGLE_FLAG:
@ -3685,7 +3710,7 @@ static int32_t __fastcall X_AccessPlayerX(int32_t iPlayer, int32_t lLabelID, int
case PLAYER_FALLING_COUNTER:
return g_player[iPlayer].ps->falling_counter;
case PLAYER_GOTWEAPON:
return g_player[iPlayer].ps->gotweapon[lParm2];
return g_player[iPlayer].ps->gotweapon & (1<<lParm2);
case PLAYER_REFRESH_INVENTORY:
return g_player[iPlayer].ps->refresh_inventory;
case PLAYER_TOGGLE_KEY_FLAG:
@ -3703,7 +3728,16 @@ static int32_t __fastcall X_AccessPlayerX(int32_t iPlayer, int32_t lLabelID, int
case PLAYER_SECRET_ROOMS:
return g_player[iPlayer].ps->secret_rooms;
case PLAYER_PALS:
return g_player[iPlayer].ps->pals[lParm2];
switch (lParm2)
{
case 0:
return g_player[iPlayer].ps->pals.r;
case 1:
return g_player[iPlayer].ps->pals.g;
case 2:
return g_player[iPlayer].ps->pals.b;
}
return -1;
case PLAYER_MAX_ACTORS_KILLED:
return g_player[iPlayer].ps->max_actors_killed;
case PLAYER_ACTORS_KILLED:
@ -3744,7 +3778,7 @@ badpos:
return -1;
}
static int32_t __fastcall X_AccessWallX(int32_t iWall, int32_t lLabelID)
static int32_t __fastcall VM_AccessWallX(int32_t iWall, int32_t lLabelID)
{
switch (lLabelID)
{

View file

@ -54,8 +54,8 @@ static void Gv_Free(void) /* called from Gv_ReadSave() and Gv_ResetVars() */
aGameArrays[i].bReset=1;
}
g_gameVarCount=g_gameArrayCount=0;
hash_init(&gamevarH);
hash_init(&arrayH);
hash_init(&h_gamevars);
hash_init(&h_arrays);
return;
}
@ -92,8 +92,8 @@ static void Gv_Clear(void)
aGameArrays[i].bReset=1;
}
g_gameVarCount=g_gameArrayCount=0;
hash_init(&gamevarH);
hash_init(&arrayH);
hash_init(&h_gamevars);
hash_init(&h_arrays);
return;
}
@ -125,7 +125,7 @@ int32_t Gv_ReadSave(int32_t fil, int32_t newbehav)
if (kdfread(&(aGameVars[i]),sizeof(gamevar_t),1,fil) != 1) goto corrupt;
aGameVars[i].szLabel=Bcalloc(MAXVARLABEL,sizeof(uint8_t));
if (kdfread(aGameVars[i].szLabel,sizeof(uint8_t) * MAXVARLABEL, 1, fil) != 1) goto corrupt;
hash_replace(&gamevarH,aGameVars[i].szLabel,i);
hash_replace(&h_gamevars,aGameVars[i].szLabel,i);
if (aGameVars[i].dwFlags & GAMEVAR_PERPLAYER)
{
@ -153,7 +153,7 @@ int32_t Gv_ReadSave(int32_t fil, int32_t newbehav)
if (kdfread(&(aGameArrays[i]),sizeof(gamearray_t),1,fil) != 1) goto corrupt;
aGameArrays[i].szLabel=Bcalloc(MAXARRAYLABEL,sizeof(uint8_t));
if (kdfread(aGameArrays[i].szLabel,sizeof(uint8_t) * MAXARRAYLABEL, 1, fil) != 1) goto corrupt;
hash_replace(&arrayH,aGameArrays[i].szLabel,i);
hash_replace(&h_arrays,aGameArrays[i].szLabel,i);
aGameArrays[i].plValues=Bcalloc(aGameArrays[i].size,sizeof(intptr_t));
if (kdfread(aGameArrays[i].plValues,sizeof(intptr_t) * aGameArrays[i].size, 1, fil) < 1) goto corrupt;
@ -408,7 +408,7 @@ int32_t Gv_NewArray(const char *pszLabel, int32_t asize)
initprintf("%s:%d: error: array name `%s' exceeds limit of %d characters.\n",g_szScriptFileName,g_lineNumber,pszLabel, MAXARRAYLABEL);
return 0;
}
i = hash_find(&arrayH,pszLabel);
i = hash_find(&h_arrays,pszLabel);
if (i >=0 && !aGameArrays[i].bReset)
{
// found it it's a duplicate in error
@ -427,7 +427,7 @@ int32_t Gv_NewArray(const char *pszLabel, int32_t asize)
aGameArrays[i].size=asize;
aGameArrays[i].bReset=0;
g_gameArrayCount++;
hash_replace(&arrayH,aGameArrays[i].szLabel,i);
hash_replace(&h_arrays,aGameArrays[i].szLabel,i);
return 1;
}
@ -454,7 +454,7 @@ int32_t Gv_NewVar(const char *pszLabel, int32_t lValue, uint32_t dwFlags)
return 0;
}
i = hash_find(&gamevarH,pszLabel);
i = hash_find(&h_gamevars,pszLabel);
if (i >= 0 && !(aGameVars[i].dwFlags & GAMEVAR_RESET))
{
@ -504,7 +504,7 @@ int32_t Gv_NewVar(const char *pszLabel, int32_t lValue, uint32_t dwFlags)
if (i == g_gameVarCount)
{
// we're adding a new one.
hash_add(&gamevarH, aGameVars[i].szLabel, g_gameVarCount++);
hash_add(&h_gamevars, aGameVars[i].szLabel, g_gameVarCount++);
}
if (aGameVars[i].dwFlags & GAMEVAR_PERPLAYER)
@ -539,7 +539,7 @@ void __fastcall A_ResetVars(register int32_t iActor)
static int32_t Gv_GetVarIndex(const char *szGameLabel)
{
int32_t i = hash_find(&gamevarH,szGameLabel);
int32_t i = hash_find(&h_gamevars,szGameLabel);
if (i == -1)
{
OSD_Printf(OSD_ERROR "Gv_GetVarDataPtr(): INTERNAL ERROR: couldn't find gamevar %s!\n",szGameLabel);
@ -590,7 +590,7 @@ int32_t __fastcall Gv_GetVar(register int32_t id, register int32_t iActor, regis
if (ActorLabels[label].flags & LABEL_HASPARM2)
parm2 = Gv_GetVar(*insptr++, iActor, iPlayer);
return ((X_AccessSpriteX(index, label, parm2) ^ -negateResult) + negateResult);
return ((VM_AccessSpriteX(index, label, parm2) ^ -negateResult) + negateResult);
}
case 3: //else if (id == g_iPlayerVarID)
{
@ -600,15 +600,15 @@ int32_t __fastcall Gv_GetVar(register int32_t id, register int32_t iActor, regis
parm2 = Gv_GetVar(*insptr++, iActor, iPlayer);
if (index == vm.g_i) index = vm.g_p;
return ((X_AccessPlayerX(index, label, parm2) ^ -negateResult) + negateResult);
return ((VM_AccessPlayerX(index, label, parm2) ^ -negateResult) + negateResult);
}
case 4: //else if (id == g_iActorVarID)
return ((Gv_GetVar(*insptr++, index, iPlayer) ^ -negateResult) + negateResult);
case 1: //else if (id == g_iSectorVarID)
if (index == vm.g_i) index = sprite[vm.g_i].sectnum;
return ((X_AccessSectorX(index, *insptr++) ^ -negateResult) + negateResult);
return ((VM_AccessSectorX(index, *insptr++) ^ -negateResult) + negateResult);
case 2: //else if (id == g_iWallVarID)
return ((X_AccessWallX(index, *insptr++) ^ -negateResult) + negateResult);
return ((VM_AccessWallX(index, *insptr++) ^ -negateResult) + negateResult);
default:
OSD_Printf(CON_ERROR "Gv_GetVar(): WTF?\n",g_errorLineNum,keyw[g_tw]);
return -1;
@ -735,7 +735,7 @@ int32_t __fastcall Gv_GetVarX(register int32_t id)
if (ActorLabels[label].flags & LABEL_HASPARM2)
parm2 = Gv_GetVarX(*insptr++);
return ((X_AccessSpriteX(index, label, parm2) ^ -negateResult) + negateResult);
return ((VM_AccessSpriteX(index, label, parm2) ^ -negateResult) + negateResult);
}
case 3: //else if (id == g_iPlayerVarID)
{
@ -745,15 +745,15 @@ int32_t __fastcall Gv_GetVarX(register int32_t id)
parm2 = Gv_GetVarX(*insptr++);
if (index == vm.g_i) index = vm.g_p;
return ((X_AccessPlayerX(index, label, parm2) ^ -negateResult) + negateResult);
return ((VM_AccessPlayerX(index, label, parm2) ^ -negateResult) + negateResult);
}
case 4: //else if (id == g_iActorVarID)
return ((Gv_GetVar(*insptr++, index, vm.g_p) ^ -negateResult) + negateResult);
case 1: //else if (id == g_iSectorVarID)
if (index == vm.g_i) index = sprite[vm.g_i].sectnum;
return ((X_AccessSectorX(index, *insptr++) ^ -negateResult) + negateResult);
return ((VM_AccessSectorX(index, *insptr++) ^ -negateResult) + negateResult);
case 2: //else if (id == g_iWallVarID)
return ((X_AccessWallX(index, *insptr++) ^ -negateResult) + negateResult);
return ((VM_AccessWallX(index, *insptr++) ^ -negateResult) + negateResult);
default:
OSD_Printf(CON_ERROR "Gv_GetVar(): WTF?\n",g_errorLineNum,keyw[g_tw]);
return -1;
@ -816,7 +816,7 @@ void __fastcall Gv_SetVarX(register int32_t id, register int32_t lValue)
int32_t Gv_GetVarByLabel(const char *szGameLabel, int32_t lDefault, int32_t iActor, int32_t iPlayer)
{
int32_t i = hash_find(&gamevarH,szGameLabel);
int32_t i = hash_find(&h_gamevars,szGameLabel);
if (i < 0)
return lDefault;
@ -826,7 +826,7 @@ int32_t Gv_GetVarByLabel(const char *szGameLabel, int32_t lDefault, int32_t iAct
static intptr_t *Gv_GetVarDataPtr(const char *szGameLabel)
{
int32_t i = hash_find(&gamevarH,szGameLabel);
int32_t i = hash_find(&h_gamevars,szGameLabel);
if (i < 0)
return NULL;

View file

@ -23,7 +23,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
//-------------------------------------------------------------------------
#include "duke3d.h"
const char *s_buildDate = "20100311";
const char *s_buildDate = "20100427";
char *MusicPtr = NULL;
int32_t g_musicSize;
@ -35,7 +35,7 @@ int32_t neartaghitdist,lockclock,g_startArmorAmount;
int32_t g_spriteGravity=176;
// int32_t temp_data[MAXSPRITES][6];
ActorData_t ActorExtra[MAXSPRITES];
ActorData_t actor[MAXSPRITES];
int16_t SpriteDeletionQueue[1024],g_spriteDeleteQueuePos,g_spriteDeleteQueueSize=64;
animwalltype animwall[MAXANIMWALLS];
@ -98,7 +98,7 @@ int32_t syncvaltail, syncvaltottail;
input_t loc;
input_t recsync[RECSYNCBUFSIZ];
int32_t avgfvel, avgsvel, avgavel, avghorz, avgbits, avgextbits;
input_t avg;
int32_t movefifosendplc;

View file

@ -32,6 +32,7 @@ extern "C" {
#endif
#include "baselayer.h" // for the keyboard stuff
#include "scancodes.h"
/*
=============================================================================
@ -43,128 +44,6 @@ extern "C" {
typedef uint8_t kb_scancode;
#define sc_None 0
#define sc_Bad 0xff
#define sc_Comma 0x33
#define sc_Period 0x34
#define sc_Return 0x1c
#define sc_Enter sc_Return
#define sc_Escape 0x01
#define sc_Space 0x39
#define sc_BackSpace 0x0e
#define sc_Tab 0x0f
#define sc_LeftAlt 0x38
#define sc_LeftControl 0x1d
#define sc_CapsLock 0x3a
#define sc_LeftShift 0x2a
#define sc_RightShift 0x36
#define sc_F1 0x3b
#define sc_F2 0x3c
#define sc_F3 0x3d
#define sc_F4 0x3e
#define sc_F5 0x3f
#define sc_F6 0x40
#define sc_F7 0x41
#define sc_F8 0x42
#define sc_F9 0x43
#define sc_F10 0x44
#define sc_F11 0x57
#define sc_F12 0x58
#define sc_Kpad_Star 0x37
#define sc_Pause 0x59
#define sc_ScrollLock 0x46
#define sc_NumLock 0x45
#define sc_Slash 0x35
#define sc_SemiColon 0x27
#define sc_Quote 0x28
#define sc_Tilde 0x29
#define sc_BackSlash 0x2b
#define sc_OpenBracket 0x1a
#define sc_CloseBracket 0x1b
#define sc_1 0x02
#define sc_2 0x03
#define sc_3 0x04
#define sc_4 0x05
#define sc_5 0x06
#define sc_6 0x07
#define sc_7 0x08
#define sc_8 0x09
#define sc_9 0x0a
#define sc_0 0x0b
#define sc_Minus 0x0c
#define sc_Equals 0x0d
#define sc_Plus 0x0d
#define sc_kpad_1 0x4f
#define sc_kpad_2 0x50
#define sc_kpad_3 0x51
#define sc_kpad_4 0x4b
#define sc_kpad_5 0x4c
#define sc_kpad_6 0x4d
#define sc_kpad_7 0x47
#define sc_kpad_8 0x48
#define sc_kpad_9 0x49
#define sc_kpad_0 0x52
#define sc_kpad_Minus 0x4a
#define sc_kpad_Plus 0x4e
#define sc_kpad_Period 0x53
#define sc_A 0x1e
#define sc_B 0x30
#define sc_C 0x2e
#define sc_D 0x20
#define sc_E 0x12
#define sc_F 0x21
#define sc_G 0x22
#define sc_H 0x23
#define sc_I 0x17
#define sc_J 0x24
#define sc_K 0x25
#define sc_L 0x26
#define sc_M 0x32
#define sc_N 0x31
#define sc_O 0x18
#define sc_P 0x19
#define sc_Q 0x10
#define sc_R 0x13
#define sc_S 0x1f
#define sc_T 0x14
#define sc_U 0x16
#define sc_V 0x2f
#define sc_W 0x11
#define sc_X 0x2d
#define sc_Y 0x15
#define sc_Z 0x2c
// Extended scan codes
#define sc_UpArrow 0xc8 //0x5a
#define sc_DownArrow 0xd0 //0x6a
#define sc_LeftArrow 0xcb //0x6b
#define sc_RightArrow 0xcd //0x6c
#define sc_Insert 0xd2 //0x5e
#define sc_Delete 0xd3 //0x5f
#define sc_Home 0xc7 //0x61
#define sc_End 0xcf //0x62
#define sc_PgUp 0xc9 //0x63
#define sc_PgDn 0xd1 //0x64
#define sc_RightAlt 0xb8 //0x65
#define sc_RightControl 0x9d //0x66
#define sc_kpad_Slash 0xb5 //0x67
#define sc_kpad_Enter 0x9c //0x68
#define sc_PrintScreen 0xb7 //0x69
#define sc_LastScanCode 0x6e
// Ascii scan codes
#define asc_Enter 13
#define asc_Escape 27
#define asc_BackSpace 8
#define asc_Tab 9
#define asc_Space 32
#define MAXKEYBOARDSCAN 128

View file

@ -511,11 +511,11 @@ const tokenmap_t iter_tokens[] =
};
hashtable_t gamevarH = { MAXGAMEVARS>>1, NULL };
hashtable_t arrayH = { MAXGAMEARRAYS>>1, NULL };
hashtable_t labelH = { 11262>>1, NULL };
hashtable_t stateH = { 1264>>1, NULL };
hashtable_t keywH = { CON_END>>1, NULL };
hashtable_t h_gamevars = { MAXGAMEVARS>>1, NULL };
hashtable_t h_arrays = { MAXGAMEARRAYS>>1, NULL };
hashtable_t h_labels = { 11262>>1, NULL };
hashtable_t h_states = { 1264>>1, NULL };
hashtable_t h_keywords = { CON_END>>1, NULL };
hashtable_t iterH = { ITER_END, NULL };
hashtable_t sectorH = { SECTOR_END>>1, NULL };
@ -527,16 +527,16 @@ static void C_InitHashes()
{
int32_t i;
hash_init(&gamevarH);
hash_init(&arrayH);
hash_init(&labelH);
hash_init(&stateH);
hash_init(&h_gamevars);
hash_init(&h_arrays);
hash_init(&h_labels);
hash_init(&h_states);
hash_init(&keywH);
hash_init(&h_keywords);
for (i=NUMKEYWORDS-1; i>=0; i--)
hash_add(&keywH, keyw[i], i);
hash_add(&h_keywords, keyw[i], i);
for (i=0; i<NUMALTKEYWORDS; i++)
hash_add(&keywH, altkeyw[i].token, altkeyw[i].val);
hash_add(&h_keywords, altkeyw[i].token, altkeyw[i].val);
hash_init(&sectorH);
for (i=0; SectorLabels[i].lId >=0; i++)
@ -759,7 +759,7 @@ static int32_t C_GetKeyword(void)
while (isaltok(*temptextptr))
tempbuf[i++] = *(temptextptr++);
tempbuf[i] = 0;
return hash_find(&keywH, tempbuf);
return hash_find(&h_keywords, tempbuf);
}
static int32_t C_GetNextKeyword(void) //Returns its code #
@ -789,7 +789,7 @@ static int32_t C_GetNextKeyword(void) //Returns its code #
}
tempbuf[l] = 0;
i = hash_find(&keywH, tempbuf);
i = hash_find(&h_keywords, tempbuf);
if (i>=0)
{
if (i == CON_LEFTBRACE || i == CON_RIGHTBRACE || i == CON_NULLOP)
@ -821,8 +821,8 @@ static int32_t C_GetNextKeyword(void) //Returns its code #
return -1;
}
#define GetGamevarID(szGameLabel) hash_find(&gamevarH, szGameLabel)
#define GetGamearrayID(szGameLabel) hash_find(&arrayH, szGameLabel)
#define GetGamevarID(szGameLabel) hash_find(&h_gamevars, szGameLabel)
#define GetGamearrayID(szGameLabel) hash_find(&h_arrays, szGameLabel)
static void C_GetNextVarType(int32_t type)
{
@ -932,7 +932,7 @@ static void C_GetNextVarType(int32_t type)
}
C_GetNextLabelName();
if (hash_find(&keywH, tlabel)>=0)
if (hash_find(&h_keywords, tlabel)>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
@ -1053,7 +1053,7 @@ static void C_GetNextVarType(int32_t type)
if (!type && !cs.labelsOnly)
{
//try looking for a define instead
id = hash_find(&labelH, tlabel);
id = hash_find(&h_labels, tlabel);
if (id>=0 && labeltype[id]==LABEL_DEFINE)
{
// if (!(g_numCompilerErrors || g_numCompilerWarnings) && g_scriptDebug)
@ -1135,14 +1135,14 @@ static int32_t C_GetNextValue(int32_t type)
}
tempbuf[l] = 0;
if (hash_find(&keywH, tempbuf)>=0)
if (hash_find(&h_keywords, tempbuf)>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
textptr+=l;
}
i = hash_find(&labelH, tempbuf);
i = hash_find(&h_labels, tempbuf);
if (i >= 0)
{
char *el,*gl;
@ -1365,7 +1365,7 @@ static int32_t C_ParseCommand(void)
{
C_GetNextLabelName();
if (hash_find(&keywH, tlabel) >= 0)
if (hash_find(&h_keywords, tlabel) >= 0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
@ -1373,14 +1373,14 @@ static int32_t C_ParseCommand(void)
}
// Check to see it's already defined
i = hash_find(&gamevarH, tlabel);
i = hash_find(&h_gamevars, tlabel);
if (i>=0)
{
g_numCompilerWarnings++;
C_ReportError(WARNING_NAMEMATCHESVAR);
}
if (hash_find(&stateH, tlabel) >= 0)
if (hash_find(&h_states, tlabel) >= 0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_LABELINUSE);
@ -1389,13 +1389,13 @@ static int32_t C_ParseCommand(void)
C_GetNextValue(LABEL_DEFINE);
i = hash_find(&labelH, tlabel);
i = hash_find(&h_labels, tlabel);
if (i == -1)
{
// printf("Defining Definition '%s' to be '%d'\n",label+(g_numLabels*MAXLABELLEN),*(g_scriptPtr-1));
// Bmemcpy(label+(g_numLabels*MAXLABELLEN), tlabel, MAXLABELLEN);
C_CopyLabel();
hash_add(&labelH, label+(g_numLabels*MAXLABELLEN), g_numLabels);
hash_add(&h_labels, label+(g_numLabels*MAXLABELLEN), g_numLabels);
labeltype[g_numLabels] = LABEL_DEFINE;
labelval[g_numLabels++] = *(g_scriptPtr-1);
}
@ -1491,20 +1491,20 @@ static int32_t C_ParseCommand(void)
{
C_GetNextLabelName();
if (hash_find(&keywH, tlabel)>=0)
if (hash_find(&h_keywords, tlabel)>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
return 1;
}
if (hash_find(&gamevarH, tlabel)>=0)
if (hash_find(&h_gamevars, tlabel)>=0)
{
g_numCompilerWarnings++;
C_ReportError(WARNING_NAMEMATCHESVAR);
}
j = hash_find(&labelH, tlabel);
j = hash_find(&h_labels, tlabel);
if (j>=0)
{
g_numCompilerErrors++;
@ -1512,7 +1512,7 @@ static int32_t C_ParseCommand(void)
return 1;
}
j = hash_find(&stateH, tlabel);
j = hash_find(&h_states, tlabel);
if (j>=0) // only redefining
{
cs.currentStateIdx = j;
@ -1539,7 +1539,7 @@ static int32_t C_ParseCommand(void)
Bmemcpy(statesinfo[j].name, tlabel, MAXLABELLEN);
Bsprintf(g_szCurrentBlockName, "%s", tlabel);
hash_add(&stateH, tlabel, j);
hash_add(&h_states, tlabel, j);
}
return 0;
@ -1698,19 +1698,19 @@ static int32_t C_ParseCommand(void)
case CON_STATE:
C_GetNextLabelName();
if (hash_find(&keywH, tlabel)>=0)
if (hash_find(&h_keywords, tlabel)>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
return 1;
}
if (hash_find(&gamevarH, tlabel)>=0)
if (hash_find(&h_gamevars, tlabel)>=0)
{
g_numCompilerWarnings++;
C_ReportError(WARNING_NAMEMATCHESVAR);
}
j = hash_find(&stateH, tlabel);
j = hash_find(&h_states, tlabel);
if (j>=0)
{
// if (!(g_numCompilerErrors || g_numCompilerWarnings) && g_scriptDebug > 1)
@ -2279,7 +2279,7 @@ repeatcase:
//printf("Got Label '%.20s'\n",textptr);
// Check to see it's already defined
if (hash_find(&keywH, tlabel)>=0)
if (hash_find(&h_keywords, tlabel)>=0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
@ -2320,14 +2320,14 @@ repeatcase:
C_GetNextLabelName();
//printf("Got Label '%.20s'\n",textptr);
// Check to see it's already defined
if (hash_find(&keywH, tlabel) >= 0)
if (hash_find(&h_keywords, tlabel) >= 0)
{
g_numCompilerErrors++;
C_ReportError(ERROR_ISAKEYWORD);
return 0;
}
if (hash_find(&gamevarH, tlabel) >= 0)
if (hash_find(&h_gamevars, tlabel) >= 0)
{
g_numCompilerWarnings++;
C_ReportError(WARNING_NAMEMATCHESVAR);
@ -3124,7 +3124,7 @@ repeatcase:
static void C_AddDefinition(const char *lLabel,int32_t lValue, uint8_t lType)
{
Bstrcpy(label+(g_numLabels*MAXLABELLEN), lLabel);
hash_add(&labelH, label+(g_numLabels*MAXLABELLEN), g_numLabels);
hash_add(&h_labels, label+(g_numLabels*MAXLABELLEN), g_numLabels);
labeltype[g_numLabels] = lType;
labelval[g_numLabels++] = lValue;
g_numDefaultLabels++;

View file

@ -52,7 +52,7 @@ uint8_t aEventEnabled[MAXEVENTS];
uint32_t m32_drawlinepat=0xffffffff;
instype *insptr;
int32_t X_DoExecute(int32_t once);
int32_t VM_Execute(int32_t once);
static instype *x_sortingstateptr;
#include "m32structures.c"
@ -107,7 +107,7 @@ void X_Disasm(ofstype beg, int32_t size)
initprintf("\n");
}
void X_ScriptInfo(void)
void VM_ScriptInfo(void)
{
if (script)
{
@ -133,7 +133,7 @@ void X_ScriptInfo(void)
}
}
void X_OnEvent(register int32_t iEventID, register int32_t iActor)
void VM_OnEvent(register int32_t iEventID, register int32_t iActor)
{
if (iEventID < 0 || iEventID >= MAXEVENTS)
{
@ -163,7 +163,7 @@ void X_OnEvent(register int32_t iEventID, register int32_t iActor)
vm.flags = 0;
insptr = script + aEventOffsets[iEventID];
X_DoExecute(0);
VM_Execute(0);
if (vm.flags&VMFLAG_ERROR)
{
@ -197,13 +197,13 @@ static int32_t G_GetAngleDelta(int32_t a,int32_t na)
return (na-a);
}
static inline void __fastcall X_DoConditional(register int32_t condition)
static inline void __fastcall VM_DoConditional(register int32_t condition)
{
if (condition)
{
// skip 'else' pointer.. and...
insptr+=2;
X_DoExecute(1);
VM_Execute(1);
return;
}
@ -214,7 +214,7 @@ static inline void __fastcall X_DoConditional(register int32_t condition)
// else...
// skip 'else' and...
insptr+=2;
X_DoExecute(1);
VM_Execute(1);
}
}
@ -228,7 +228,7 @@ static int32_t X_DoSort(const int32_t *lv, const int32_t *rv)
m32_sortvar1 = *lv;
m32_sortvar2 = *rv;
insptr = x_sortingstateptr;
X_DoExecute(0);
VM_Execute(0);
return g_iReturnVar;
}
@ -279,7 +279,7 @@ static int32_t X_DoSort(const int32_t *lv, const int32_t *rv)
continue; \
} \
int32_t X_DoExecute(int32_t once)
int32_t VM_Execute(int32_t once)
{
register int32_t tw = *insptr;
@ -314,7 +314,7 @@ skip_check:
insptr = script + statesinfo[stateidx].ofs;
vm.g_st = 1+MAXEVENTS+stateidx;
X_DoExecute(0);
VM_Execute(0);
vm.g_st = o_g_st;
vm.flags &= ~VMFLAG_RETURN;
vm.flags |= oret;
@ -378,7 +378,7 @@ skip_check:
// fake a 2-d Array
insptr = lCodeInsPtr + lpCases[lCheckCase*2+1];
//Bsprintf(g_szBuf,"insptr=%d. ", (int32_t)insptr); AddLog(g_szBuf);
X_DoExecute(0);
VM_Execute(0);
//AddLog("Done Executing Case");
bMatched=1;
}
@ -391,7 +391,7 @@ skip_check:
{
//AddLog("No Matching Case: Using Default");
insptr = lCodeInsPtr + *lpDefault;
X_DoExecute(0);
VM_Execute(0);
}
// else
// {
@ -431,7 +431,7 @@ skip_check:
return 1;
case CON_LEFTBRACE:
insptr++;
X_DoExecute(0);
VM_Execute(0);
continue;
// *** more basic commands
@ -443,7 +443,7 @@ skip_check:
// <varid> <xxxid> <varid>
int32_t lVar1=*insptr++, lLabelID=*insptr++, lVar2=*insptr++;
X_AccessSector((tw==CON_SETSECTOR)|2, lVar1, lLabelID, lVar2);
VM_AccessSector((tw==CON_SETSECTOR)|2, lVar1, lLabelID, lVar2);
continue;
}
case CON_SETWALL:
@ -453,7 +453,7 @@ skip_check:
// syntax [gs]etwall[<var>].x <VAR>
// <varid> <xxxid> <varid>
int32_t lVar1=*insptr++, lLabelID=*insptr++, lVar2=*insptr++;
X_AccessWall((tw==CON_SETWALL)|2, lVar1, lLabelID, lVar2);
VM_AccessWall((tw==CON_SETWALL)|2, lVar1, lLabelID, lVar2);
continue;
}
case CON_SETSPRITE:
@ -463,7 +463,7 @@ skip_check:
// syntax [gs]etsprite[<var>].x <VAR>
// <varid> <xxxid> <varid>
int32_t lVar1=*insptr++, lLabelID=*insptr++, lVar2=*insptr++;
X_AccessSprite((tw==CON_SETSPRITE)|2, lVar1, lLabelID, lVar2);
VM_AccessSprite((tw==CON_SETSPRITE)|2, lVar1, lLabelID, lVar2);
continue;
}
@ -474,7 +474,7 @@ skip_check:
// syntax [gs]ettspr[<var>].x <VAR>
// <varid> <xxxid> <varid>
int32_t lVar1=*insptr++, lLabelID=*insptr++, lVar2=*insptr++;
X_AccessTsprite((tw==CON_SETTSPR)|2|4, lVar1, lLabelID, lVar2);
VM_AccessTsprite((tw==CON_SETTSPR)|2|4, lVar1, lLabelID, lVar2);
continue;
}
#if 0
@ -484,7 +484,7 @@ skip_check:
// syntax [gs]etsprite[<var>].x <VAR>
// <varid> <xxxid> <varid>
int32_t lVar1=*insptr++, lLabelID=*insptr++, lVar2=*insptr++;
X_SetSprite(lVar1, lLabelID, lVar2);
VM_SetSprite(lVar1, lLabelID, lVar2);
continue;
}
@ -494,7 +494,7 @@ skip_check:
// syntax [gs]etsprite[<var>].x <VAR>
// <varid> <xxxid> <varid>
int32_t lVar1=*insptr++, lLabelID=*insptr++, lVar2=*insptr++;
X_GetSprite(lVar1, lLabelID, lVar2);
VM_GetSprite(lVar1, lLabelID, lVar2);
continue;
}
#endif
@ -918,7 +918,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
j &= Gv_GetVarX(*insptr++);
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -928,7 +928,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
j |= Gv_GetVarX(*insptr++);
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -938,7 +938,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
j ^= Gv_GetVarX(*insptr++);
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -948,7 +948,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
int32_t l = Gv_GetVarX(*insptr++);
insptr--;
X_DoConditional(j || l);
VM_DoConditional(j || l);
}
continue;
@ -958,7 +958,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
int32_t l = Gv_GetVarX(*insptr++);
insptr--;
X_DoConditional(j && l);
VM_DoConditional(j && l);
}
continue;
@ -968,7 +968,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
j = (j != Gv_GetVarX(*insptr++));
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -978,7 +978,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
j = (j == Gv_GetVarX(*insptr++));
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -988,7 +988,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
j = (j > Gv_GetVarX(*insptr++));
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -998,7 +998,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
j = (j >= Gv_GetVarX(*insptr++));
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -1008,7 +1008,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
j = (j < Gv_GetVarX(*insptr++));
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -1018,7 +1018,7 @@ skip_check:
int32_t j = Gv_GetVarX(*insptr++);
j = (j <= Gv_GetVarX(*insptr++));
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -1026,7 +1026,7 @@ skip_check:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j == *insptr);
VM_DoConditional(j == *insptr);
}
continue;
@ -1034,7 +1034,7 @@ skip_check:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j != *insptr);
VM_DoConditional(j != *insptr);
}
continue;
@ -1046,7 +1046,7 @@ skip_check:
{
insptr=savedinsptr;
j = (Gv_GetVarX(*(insptr-1)) != *insptr);
X_DoConditional(j);
VM_DoConditional(j);
}
while (j && !vm.flags);
vm.flags &= ~VMFLAG_BREAK;
@ -1061,7 +1061,7 @@ skip_check:
{
insptr=savedinsptr;
j = (Gv_GetVarX(*(insptr-1)) < *insptr);
X_DoConditional(j);
VM_DoConditional(j);
}
while (j && !vm.flags);
vm.flags &= ~VMFLAG_BREAK;
@ -1078,7 +1078,7 @@ skip_check:
j = Gv_GetVarX(*(insptr-1));
j = (j != Gv_GetVarX(*insptr++));
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
while (j && !vm.flags);
vm.flags &= ~VMFLAG_BREAK;
@ -1095,7 +1095,7 @@ skip_check:
j = Gv_GetVarX(*(insptr-1));
j = (j < Gv_GetVarX(*insptr++));
insptr--;
X_DoConditional(j);
VM_DoConditional(j);
}
while (j && !vm.flags);
vm.flags &= ~VMFLAG_BREAK;
@ -1155,7 +1155,7 @@ skip_check:
vm.g_i = jj;
vm.g_sp = &sprite[jj];
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
break;
case ITER_ALLSECTORS:
@ -1163,7 +1163,7 @@ skip_check:
{
Gv_SetVarX(var, jj);
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
break;
case ITER_ALLWALLS:
@ -1171,7 +1171,7 @@ skip_check:
{
Gv_SetVarX(var, jj);
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
break;
case ITER_SELSPRITES:
@ -1185,7 +1185,7 @@ skip_check:
vm.g_i = jj;
vm.g_sp = &sprite[jj];
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
}
break;
@ -1195,7 +1195,7 @@ skip_check:
jj=highlightsector[ii];
Gv_SetVarX(var, jj);
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
break;
case ITER_SELWALLS:
@ -1206,7 +1206,7 @@ skip_check:
continue;
Gv_SetVarX(var, jj);
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
break;
case ITER_DRAWNSPRITES:
@ -1215,7 +1215,7 @@ skip_check:
vm.g_sp = &tsprite[ii];
Gv_SetVarX(var, ii);
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
break;
case ITER_SPRITESOFSECTOR:
@ -1227,7 +1227,7 @@ skip_check:
vm.g_i = jj;
vm.g_sp = &sprite[jj];
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
break;
case ITER_WALLSOFSECTOR:
@ -1238,7 +1238,7 @@ skip_check:
{
Gv_SetVarX(var, jj);
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
break;
case ITER_LOOPOFWALL:
@ -1249,7 +1249,7 @@ skip_check:
{
Gv_SetVarX(var, jj);
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
jj = wall[jj].point2;
}
while (jj != parm2 && !vm.flags);
@ -1259,7 +1259,7 @@ skip_check:
{
Gv_SetVarX(var, jj);
insptr = beg;
X_DoExecute(1);
VM_Execute(1);
}
break;
default:
@ -1283,7 +1283,7 @@ badindex:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j & *insptr);
VM_DoConditional(j & *insptr);
}
continue;
@ -1291,7 +1291,7 @@ badindex:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j | *insptr);
VM_DoConditional(j | *insptr);
}
continue;
@ -1299,7 +1299,7 @@ badindex:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j ^ *insptr);
VM_DoConditional(j ^ *insptr);
}
continue;
@ -1307,7 +1307,7 @@ badindex:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j || *insptr);
VM_DoConditional(j || *insptr);
}
continue;
@ -1315,7 +1315,7 @@ badindex:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j && *insptr);
VM_DoConditional(j && *insptr);
}
continue;
@ -1323,7 +1323,7 @@ badindex:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j > *insptr);
VM_DoConditional(j > *insptr);
}
continue;
@ -1331,7 +1331,7 @@ badindex:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j >= *insptr);
VM_DoConditional(j >= *insptr);
}
continue;
@ -1339,7 +1339,7 @@ badindex:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j < *insptr);
VM_DoConditional(j < *insptr);
}
continue;
@ -1347,12 +1347,12 @@ badindex:
insptr++;
{
int32_t j=Gv_GetVarX(*insptr++);
X_DoConditional(j <= *insptr);
VM_DoConditional(j <= *insptr);
}
continue;
case CON_IFRND:
X_DoConditional(rnd(Gv_GetVarX(*(++insptr))));
VM_DoConditional(rnd(Gv_GetVarX(*(++insptr))));
continue;
case CON_IFHITKEY:
@ -1369,7 +1369,7 @@ badindex:
}
if (tw != CON_RESETKEY)
X_DoConditional(keystatus[key]);
VM_DoConditional(keystatus[key]);
else
insptr++;
@ -1384,22 +1384,22 @@ badindex:
continue;
case CON_IFEITHERALT:
X_DoConditional(keystatus[KEYSC_LALT]||keystatus[KEYSC_RALT]);
VM_DoConditional(keystatus[KEYSC_LALT]||keystatus[KEYSC_RALT]);
continue;
case CON_IFEITHERCTRL:
X_DoConditional(keystatus[KEYSC_LCTRL]||keystatus[KEYSC_RCTRL]);
VM_DoConditional(keystatus[KEYSC_LCTRL]||keystatus[KEYSC_RCTRL]);
continue;
case CON_IFEITHERSHIFT:
X_DoConditional(keystatus[KEYSC_LSHIFT]||keystatus[KEYSC_RSHIFT]);
VM_DoConditional(keystatus[KEYSC_LSHIFT]||keystatus[KEYSC_RSHIFT]);
continue;
// vvv CURSPR
case CON_IFSPRITEPAL:
insptr++;
X_ERROR_INVALIDSP();
X_DoConditional(vm.g_sp->pal == Gv_GetVarX(*insptr));
VM_DoConditional(vm.g_sp->pal == Gv_GetVarX(*insptr));
continue;
case CON_IFANGDIFFL:
@ -1408,7 +1408,7 @@ badindex:
int32_t j;
X_ERROR_INVALIDSP();
j = klabs(G_GetAngleDelta(ang, vm.g_sp->ang));
X_DoConditional(j <= Gv_GetVarX(*insptr));
VM_DoConditional(j <= Gv_GetVarX(*insptr));
}
continue;
@ -1434,7 +1434,7 @@ badindex:
}
}
}
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
@ -1445,24 +1445,24 @@ badindex:
X_ERROR_INVALIDSP();
j = cansee(vm.g_sp->x,vm.g_sp->y,vm.g_sp->z/*-((krand()&41)<<8)*/,vm.g_sp->sectnum,
pos.x, pos.y, pos.z /*-((krand()&41)<<8)*/, cursectnum);
X_DoConditional(j);
VM_DoConditional(j);
}
continue;
case CON_IFONWATER:
X_ERROR_INVALIDSP();
X_DoConditional(sector[vm.g_sp->sectnum].lotag == 1 && klabs(vm.g_sp->z-sector[vm.g_sp->sectnum].floorz) < (32<<8));
VM_DoConditional(sector[vm.g_sp->sectnum].lotag == 1 && klabs(vm.g_sp->z-sector[vm.g_sp->sectnum].floorz) < (32<<8));
continue;
case CON_IFINWATER:
X_ERROR_INVALIDSP();
X_DoConditional(sector[vm.g_sp->sectnum].lotag == 2);
VM_DoConditional(sector[vm.g_sp->sectnum].lotag == 2);
continue;
case CON_IFACTOR:
insptr++;
X_ERROR_INVALIDSP();
X_DoConditional(vm.g_sp->picnum == Gv_GetVarX(*insptr));
VM_DoConditional(vm.g_sp->picnum == Gv_GetVarX(*insptr));
continue;
case CON_IFINSIDE:
@ -1479,20 +1479,20 @@ badindex:
continue;
}
insptr--;
X_DoConditional(res);
VM_DoConditional(res);
}
continue;
case CON_IFOUTSIDE:
X_ERROR_INVALIDSP();
X_DoConditional(sector[vm.g_sp->sectnum].ceilingstat&1);
VM_DoConditional(sector[vm.g_sp->sectnum].ceilingstat&1);
continue;
case CON_IFPDISTL:
insptr++;
{
X_ERROR_INVALIDSP();
X_DoConditional(dist((spritetype *)&pos, vm.g_sp) < Gv_GetVarX(*insptr));
VM_DoConditional(dist((spritetype *)&pos, vm.g_sp) < Gv_GetVarX(*insptr));
}
continue;
@ -1500,7 +1500,7 @@ badindex:
insptr++;
{
X_ERROR_INVALIDSP();
X_DoConditional(dist((spritetype *)&pos, vm.g_sp) > Gv_GetVarX(*insptr));
VM_DoConditional(dist((spritetype *)&pos, vm.g_sp) > Gv_GetVarX(*insptr));
}
continue;
// ^^^
@ -2582,7 +2582,7 @@ dodefault:
insptr++;
continue;
}
X_DoConditional(S_CheckSoundPlaying(vm.g_i,j));
VM_DoConditional(S_CheckSoundPlaying(vm.g_i,j));
}
continue;
@ -2593,7 +2593,7 @@ dodefault:
if (g_sounds[j].SoundOwner[0].i == vm.g_i)
break;
X_DoConditional(j < 0);
VM_DoConditional(j < 0);
}
continue;
@ -2654,7 +2654,7 @@ dodefault:
continue;
default:
X_ScriptInfo();
VM_ScriptInfo();
OSD_Printf("\nAn error has occurred in the Mapster32 virtual machine.\n\n"
"Please e-mail the file mapster32.log along with every M32 file\n"

View file

@ -36,7 +36,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#define ACCESS_SPRITEEXT 4
static int32_t __fastcall X_AccessWall(int32_t how, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static int32_t __fastcall VM_AccessWall(int32_t how, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue;
int32_t i = (how&ACCESS_USEVARS) ? Gv_GetVarX(lVar1) : lVar1;
@ -128,7 +128,7 @@ readonly:
}
// how: bitfield: 1=set? 2=vars?
static int32_t __fastcall X_AccessSector(int32_t how, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static int32_t __fastcall VM_AccessSector(int32_t how, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue;
int32_t i = (how&ACCESS_USEVARS) ? sprite[vm.g_i].sectnum : lVar1;
@ -245,7 +245,7 @@ readonly:
}
// how: bitfield: 1=set? 2=vars?
static int32_t __fastcall X_AccessSprite(int32_t how, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static int32_t __fastcall VM_AccessSprite(int32_t how, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue;
register int32_t i = (how&ACCESS_USEVARS) ? vm.g_i : lVar1;
@ -357,7 +357,7 @@ readonly:
}
// how: bitfield: 1=set? 2=vars? 4=use spriteext[].tspr? (otherwise use tsprite[])
static int32_t __fastcall X_AccessTsprite(int32_t how, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
static int32_t __fastcall VM_AccessTsprite(int32_t how, int32_t lVar1, int32_t lLabelID, int32_t lVar2)
{
int32_t lValue;
int32_t i = (how&ACCESS_USEVARS) ? vm.g_i : lVar1;

View file

@ -63,8 +63,8 @@ static void Gv_Clear(void)
aGameArrays[i].dwFlags |= GAMEARRAY_RESET;
}
g_gameVarCount = g_gameArrayCount = 0;
hash_init(&gamevarH);
hash_init(&arrayH);
hash_init(&h_gamevars);
hash_init(&h_arrays);
return;
}
@ -88,7 +88,7 @@ int32_t Gv_NewArray(const char *pszLabel, void *arrayptr, intptr_t asize, uint32
return 0;
}
i = hash_find(&arrayH, pszLabel);
i = hash_find(&h_arrays, pszLabel);
if (i>=0 && !(aGameArrays[i].dwFlags & GAMEARRAY_RESET))
{
// found it it's a duplicate in error
@ -127,7 +127,7 @@ int32_t Gv_NewArray(const char *pszLabel, void *arrayptr, intptr_t asize, uint32
aGameArrays[i].dwFlags = dwFlags & ~GAMEARRAY_RESET;
g_gameArrayCount++;
hash_replace(&arrayH, aGameArrays[i].szLabel, i);
hash_replace(&h_arrays, aGameArrays[i].szLabel, i);
return 1;
}
@ -154,7 +154,7 @@ int32_t Gv_NewVar(const char *pszLabel, intptr_t lValue, uint32_t dwFlags)
return 0;
}
i = hash_find(&gamevarH,pszLabel);
i = hash_find(&h_gamevars,pszLabel);
if (i >= 0 && !(aGameVars[i].dwFlags & GAMEVAR_RESET))
{
@ -202,7 +202,7 @@ int32_t Gv_NewVar(const char *pszLabel, intptr_t lValue, uint32_t dwFlags)
if (i == g_gameVarCount)
{
// we're adding a new one.
hash_add(&gamevarH, aGameVars[i].szLabel, g_gameVarCount++);
hash_add(&h_gamevars, aGameVars[i].szLabel, g_gameVarCount++);
}
if (aGameVars[i].dwFlags & GAMEVAR_PERBLOCK)
@ -329,14 +329,14 @@ int32_t __fastcall Gv_GetVarX(register int32_t id)
switch (id&3)
{
case 0: //if (id == g_iSpriteVarID)
return ((X_AccessSprite(0, index, memberid, 0) ^ -negateResult) + negateResult);
return ((VM_AccessSprite(0, index, memberid, 0) ^ -negateResult) + negateResult);
case 1: //else if (id == g_iSectorVarID)
// if (index == vm.g_i) index = sprite[vm.g_i].sectnum;
return ((X_AccessSector(0, index, memberid, 0) ^ -negateResult) + negateResult);
return ((VM_AccessSector(0, index, memberid, 0) ^ -negateResult) + negateResult);
case 2: //else if (id == g_iWallVarID)
return ((X_AccessWall(0, index, memberid, 0) ^ -negateResult) + negateResult);
return ((VM_AccessWall(0, index, memberid, 0) ^ -negateResult) + negateResult);
case 3:
return ((X_AccessTsprite(0, index, memberid, 0) ^ -negateResult) + negateResult);
return ((VM_AccessTsprite(0, index, memberid, 0) ^ -negateResult) + negateResult);
// default:
// OSD_Printf(CON_ERROR "Gv_GetVarX() (special): WTF??\n",g_errorLineNum,keyw[g_tw]);
// return -1;
@ -433,17 +433,17 @@ void __fastcall Gv_SetVarX(register int32_t id, register int32_t lValue)
switch (id&3)
{
case 0: //if (id == g_iSpriteVarID)
X_AccessSprite(1, index, memberid, lValue);
VM_AccessSprite(1, index, memberid, lValue);
return;
case 1: //else if (id == g_iSectorVarID)
// if (index == vm.g_i) index = sprite[vm.g_i].sectnum;
X_AccessSector(1, index, memberid, lValue);
VM_AccessSector(1, index, memberid, lValue);
return;
case 2: //else if (id == g_iWallVarID)
X_AccessWall(1, index, memberid, lValue);
VM_AccessWall(1, index, memberid, lValue);
return;
case 3:
X_AccessTsprite(1, index, memberid, lValue);
VM_AccessTsprite(1, index, memberid, lValue);
return;
// default:
// OSD_Printf(CON_ERROR "Gv_SetVarX(): WTF??\n",g_errorLineNum,keyw[g_tw]);

View file

@ -171,13 +171,13 @@
#define SHT sprite[i].hitag
#define SECT sprite[i].sectnum
#define T1 ActorExtra[i].temp_data[0]
#define T2 ActorExtra[i].temp_data[1]
#define T3 ActorExtra[i].temp_data[2]
#define T4 ActorExtra[i].temp_data[3]
#define T5 ActorExtra[i].temp_data[4]
#define T6 ActorExtra[i].temp_data[5]
#define T7 ActorExtra[i].temp_data[6]
#define T8 ActorExtra[i].temp_data[7]
#define T9 ActorExtra[i].temp_data[8]
#define T1 actor[i].t_data[0]
#define T2 actor[i].t_data[1]
#define T3 actor[i].t_data[2]
#define T4 actor[i].t_data[3]
#define T5 actor[i].t_data[4]
#define T6 actor[i].t_data[5]
#define T7 actor[i].t_data[6]
#define T8 actor[i].t_data[7]
#define T9 actor[i].t_data[8]

View file

@ -562,7 +562,7 @@ void M_DisplayMenus(void)
return;
}
if (apScriptGameEvent[EVENT_DISPLAYMENU])
X_OnEvent(EVENT_DISPLAYMENU, g_player[screenpeek].ps->i, screenpeek, -1);
VM_OnEvent(EVENT_DISPLAYMENU, g_player[screenpeek].ps->i, screenpeek, -1);
g_player[myconnectindex].ps->gm &= (0xff-MODE_TYPE);
g_player[myconnectindex].ps->fta = 0;
@ -837,11 +837,11 @@ void M_DisplayMenus(void)
}
else
{
// because stripcolorcodes needs a valid target and tempbuf is used in G_EnterText()
// because OSD_StripColors needs a valid target and tempbuf is used in G_EnterText()
char dummybuf[64];
x = G_EnterText(d-50,37,buf,30,0);
while (Bstrlen(stripcolorcodes(dummybuf,buf)) > 10)
while (Bstrlen(OSD_StripColors(dummybuf,buf)) > 10)
{
buf[Bstrlen(buf)-1] = '\0';
inputloc--;
@ -2962,7 +2962,7 @@ cheat_for_port_credits:
int32_t osdmode = OSD_GetTextMode();
if (x==io) osdmode = !osdmode;
modval(0,1,(int32_t *)&osdmode,1,probey==io);
mgametextpal(d,yy, osdmode? "Plain" : "Sprites", MENUHIGHLIGHT(io), 0);
mgametextpal(d,yy, osdmode? "Monochrome" : "Sprites", MENUHIGHLIGHT(io), 0);
if (OSD_GetTextMode() != osdmode)
OSD_SetTextMode(osdmode);
break;
@ -5370,7 +5370,7 @@ VOLUME_ALL_40x:
break;
}
if (apScriptGameEvent[EVENT_DISPLAYMENUREST])
X_OnEvent(EVENT_DISPLAYMENUREST, g_player[myconnectindex].ps->i, myconnectindex, -1);
VM_OnEvent(EVENT_DISPLAYMENUREST, g_player[myconnectindex].ps->i, myconnectindex, -1);
if ((g_player[myconnectindex].ps->gm&MODE_MENU) != MODE_MENU)
{

View file

@ -35,7 +35,7 @@ struct dynitem
const int16_t vstat;
int16_t val;
};
hashtable_t dynnamesH = {512, NULL};
hashtable_t h_names = {512, NULL};
struct dynitem list[]=
{
@ -1525,21 +1525,21 @@ void G_ProcessDynamicTileMapping(const char *szLabel, int32_t lValue)
if (lValue >= MAXTILES || !szLabel)
return;
i = hash_find(&dynnamesH,szLabel);
i = hash_find(&h_names,szLabel);
if (i>=0) *(list[i].v)=lValue;
}
void inithashnames()
{
int32_t i;
hash_init(&dynnamesH);
hash_init(&h_names);
for (i=0; list[i].val; i++)
hash_add(&dynnamesH,list[i].s,i);
hash_add(&h_names,list[i].s,i);
}
void freehashnames()
{
hash_free(&dynnamesH);
hash_free(&h_names);
}
void G_InitDynamicTiles(void)
@ -1549,6 +1549,7 @@ void G_InitDynamicTiles(void)
while (list[i].val)
{
DynamicTileMap[list[i].val]=list[i].vstat;
*(list[i].v) = list[i].vstat;
i++;
}

View file

@ -556,12 +556,12 @@ static int32_t osdcmd_setvar(const osdfuncparm_t *parm)
strcpy(varname,parm->parms[1]);
varval = Batol(varname);
i = hash_find(&gamevarH,varname);
i = hash_find(&h_gamevars,varname);
if (i >= 0)
varval=Gv_GetVar(i, g_player[myconnectindex].ps->i, myconnectindex);
strcpy(varname,parm->parms[0]);
i = hash_find(&gamevarH,varname);
i = hash_find(&h_gamevars,varname);
if (i >= 0)
Gv_SetVar(i, varval, g_player[myconnectindex].ps->i, myconnectindex);
return OSDCMD_OK;
@ -581,7 +581,7 @@ static int32_t osdcmd_addlogvar(const osdfuncparm_t *parm)
}
strcpy(varname,parm->parms[0]);
i = hash_find(&gamevarH,varname);
i = hash_find(&h_gamevars,varname);
if (i >= 0)
OSD_Printf("%s = %d\n", varname, Gv_GetVar(i, g_player[myconnectindex].ps->i, myconnectindex));
return OSDCMD_OK;
@ -610,12 +610,12 @@ static int32_t osdcmd_setactorvar(const osdfuncparm_t *parm)
varval = Batol(parm->parms[2]);
strcpy(varname,parm->parms[2]);
varval = Batol(varname);
i = hash_find(&gamevarH,varname);
i = hash_find(&h_gamevars,varname);
if (i >= 0)
varval=Gv_GetVar(i, g_player[myconnectindex].ps->i, myconnectindex);
strcpy(varname,parm->parms[1]);
i = hash_find(&gamevarH,varname);
i = hash_find(&h_gamevars,varname);
if (i >= 0)
Gv_SetVar(i, varval, ID, -1);
return OSDCMD_OK;
@ -776,11 +776,11 @@ void onvideomodechange(int32_t newmode)
while (i < MAXSPRITES)
{
if (ActorExtra[i].lightptr)
if (actor[i].lightptr)
{
polymer_deletelight(ActorExtra[i].lightId);
ActorExtra[i].lightptr = NULL;
ActorExtra[i].lightId = -1;
polymer_deletelight(actor[i].lightId);
actor[i].lightptr = NULL;
actor[i].lightId = -1;
}
i++;
}
@ -804,7 +804,7 @@ static int32_t osdcmd_name(const osdfuncparm_t *parm)
Bstrcpy(tempbuf,parm->parms[0]);
while (Bstrlen(stripcolorcodes(namebuf,tempbuf)) > 10)
while (Bstrlen(OSD_StripColors(namebuf,tempbuf)) > 10)
tempbuf[Bstrlen(tempbuf)-1] = '\0';
Bstrncpy(szPlayerName,tempbuf,sizeof(szPlayerName)-1);
@ -1037,8 +1037,12 @@ static int32_t osdcmd_bind(const osdfuncparm_t *parm)
Bstrncpy(KeyBindings[ConsoleKeys[i].id].cmd,tempbuf, MAXBINDSTRINGLENGTH-1);
KeyBindings[ConsoleKeys[i].id].key=ConsoleKeys[i].name;
CONTROL_MapKey(CONFIG_FunctionNameToNum(tempbuf), ConsoleKeys[i].id, 0);
if (!OSD_ParsingScript())
OSD_Printf("%s\n",parm->raw);
return OSDCMD_OK;
}
@ -1374,91 +1378,110 @@ int32_t registerosdcommands(void)
cvar_t cvars_game[] =
{
{ "crosshair", "crosshair: enable/disable crosshair", (void*)&ud.crosshair, CVAR_BOOL, 0, 0, 1 },
{ "crosshair", "crosshair: enable/disable crosshair", (void*)&ud.crosshair, CVAR_BOOL, 0, 1 },
{ "hud_althud", "hud_althud: enable/disable alternate mini-hud", (void*)&ud.althud, CVAR_BOOL, 0, 0, 1 },
{ "hud_messagetime", "hud_messagetime: length of time to display multiplayer chat messages", (void*)&ud.msgdisptime, CVAR_INT, 0, 0, 3600 },
{ "hud_numbertile", "hud_numbertile: first tile in alt hud number set", (void*)&althud_numbertile, CVAR_INT, 0, 0, MAXTILES-10 },
{ "hud_numberpal", "hud_numberpal: pal for alt hud numbers", (void*)&althud_numberpal, CVAR_INT, 0, 0, MAXPALOOKUPS },
{ "hud_shadows", "hud_shadows: enable/disable althud shadows", (void*)&althud_shadows, CVAR_BOOL, 0, 0, 1 },
{ "hud_flashing", "hud_flashing: enable/disable althud flashing", (void*)&althud_flashing, CVAR_BOOL, 0, 0, 1 },
{ "hud_glowingquotes", "hud_glowingquotes: enable/disable \"glowing\" quote text", (void*)&hud_glowingquotes, CVAR_BOOL, 0, 0, 1 },
{ "hud_scale","hud_scale: changes the hud scale", (void*)&ud.statusbarscale, CVAR_INT|CVAR_FUNCPTR, 0, 10, 100 },
{ "hud_showmapname", "hud_showmapname: enable/disable map name display on load", (void*)&hud_showmapname, CVAR_BOOL, 0, 0, 1 },
{ "hud_stats", "hud_stats: enable/disable level statistics display", (void*)&ud.levelstats, CVAR_BOOL, 0, 0, 1 },
{ "hud_textscale", "hud_textscale: sets multiplayer chat message size", (void*)&ud.textscale, CVAR_INT, 0, 100, 400 },
{ "hud_weaponscale","hud_weaponscale: changes the weapon scale", (void*)&ud.weaponscale, CVAR_INT, 0, 10, 100 },
{ "cl_autoaim", "cl_autoaim: enable/disable weapon autoaim", (void*)&ud.config.AutoAim, CVAR_INT|CVAR_MULTI, 0, 2 },
{ "cl_automsg", "cl_automsg: enable/disable automatically sending messages to all players", (void*)&ud.automsg, CVAR_BOOL, 0, 1 },
{ "cl_autovote", "cl_autovote: enable/disable automatic voting", (void*)&ud.autovote, CVAR_INT, 0, 2 },
{ "cl_autoaim", "cl_autoaim: enable/disable weapon autoaim", (void*)&ud.config.AutoAim, CVAR_INT|CVAR_MULTI, 0, 0, 2 },
{ "cl_automsg", "cl_automsg: enable/disable automatically sending messages to all players", (void*)&ud.automsg, CVAR_BOOL, 0, 0, 1 },
{ "cl_autovote", "cl_autovote: enable/disable automatic voting", (void*)&ud.autovote, CVAR_INT, 0, 0, 2 },
{ "cl_obituaries", "cl_obituaries: enable/disable multiplayer death messages", (void*)&ud.obituaries, CVAR_BOOL, 0, 1 },
{ "cl_democams", "cl_democams: enable/disable demo playback cameras", (void*)&ud.democams, CVAR_BOOL, 0, 1 },
{ "cl_obituaries", "cl_obituaries: enable/disable multiplayer death messages", (void*)&ud.obituaries, CVAR_BOOL, 0, 0, 1 },
{ "cl_democams", "cl_democams: enable/disable demo playback cameras", (void*)&ud.democams, CVAR_BOOL, 0, 0, 1 },
{ "cl_idplayers", "cl_idplayers: enable/disable name display when aiming at opponents", (void*)&ud.idplayers, CVAR_BOOL, 0, 1 },
{ "cl_idplayers", "cl_idplayers: enable/disable name display when aiming at opponents", (void*)&ud.idplayers, CVAR_BOOL, 0, 0, 1 },
{ "cl_showcoords", "cl_showcoords: show your position in the game world", (void*)&ud.coords, CVAR_BOOL, 0, 1 },
{ "cl_showcoords", "cl_showcoords: show your position in the game world", (void*)&ud.coords, CVAR_BOOL, 0, 0, 1 },
{ "cl_viewbob", "cl_viewbob: enable/disable player head bobbing", (void*)&ud.viewbob, CVAR_BOOL, 0, 1 },
{ "cl_viewbob", "cl_viewbob: enable/disable player head bobbing", (void*)&ud.viewbob, CVAR_BOOL, 0, 0, 1 },
{ "cl_weaponsway", "cl_weaponsway: enable/disable player weapon swaying", (void*)&ud.weaponsway, CVAR_BOOL, 0, 1 },
{ "cl_weaponswitch", "cl_weaponswitch: enable/disable auto weapon switching", (void*)&ud.weaponswitch, CVAR_INT|CVAR_MULTI, 0, 3 },
{ "cl_angleinterpolation", "cl_angleinterpolation: enable/disable angle interpolation", (void*)&ud.angleinterpolation, CVAR_INT, 0, 256 },
{ "cl_weaponsway", "cl_weaponsway: enable/disable player weapon swaying", (void*)&ud.weaponsway, CVAR_BOOL, 0, 0, 1 },
{ "cl_weaponswitch", "cl_weaponswitch: enable/disable auto weapon switching", (void*)&ud.weaponswitch, CVAR_INT|CVAR_MULTI, 0, 0, 3 },
{ "cl_angleinterpolation", "cl_angleinterpolation: enable/disable angle interpolation", (void*)&ud.angleinterpolation, CVAR_INT, 0, 0, 256 },
{ "crosshairscale","crosshairscale: changes the crosshair scale", (void*)&ud.crosshairscale, CVAR_INT, 10, 100 },
{ "crosshairscale","crosshairscale: changes the crosshair scale", (void*)&ud.crosshairscale, CVAR_INT, 0, 10, 100 },
{ "demorec_diffs","demorec_diffs: enable/disable diff recording in demos",(void*)&demorec_diffs_cvar, CVAR_BOOL, 0, 1 },
{ "demorec_force","demorec_force: enable/disable forced demo recording",(void*)&demorec_force_cvar, CVAR_BOOL|CVAR_NOSAVE, 0, 1 },
{ "demorec_difftics","demorec_difftics <number>: sets game tic interval after which a diff is recorded",
(void*)&demorec_difftics_cvar, CVAR_INT, 2, 60*(TICRATE/TICSPERFRAME) },
{ "demorec_diffcompress","demorec_diffcompress <number>: Compression method for diffs. (0: none, 1: KSLZW)",(void*)&demorec_diffcompress_cvar, CVAR_INT, 0, 1 },
{ "demorec_synccompress","demorec_synccompress <number>: Compression method for input. (0: none, 1: KSLZW)",(void*)&demorec_synccompress_cvar, CVAR_INT, 0, 1 },
{ "demorec_seeds","demorec_seeds: enable/disable recording of random seed for later sync checking",(void*)&demorec_seeds_cvar, CVAR_BOOL, 0, 1 },
{ "demoplay_diffs","demoplay_diffs: enable/disable application of diffs in demo playback",(void*)&demoplay_diffs, CVAR_BOOL, 0, 1 },
{ "demoplay_showsync","demoplay_showsync: enable/disable display of sync status",(void*)&demoplay_showsync, CVAR_BOOL, 0, 1 },
{ "in_joystick","in_joystick: enables input from the joystick if it is present",(void*)&ud.config.UseJoystick, CVAR_BOOL|CVAR_FUNCPTR, 0, 0, 1 },
{ "in_mouse","in_mouse: enables input from the mouse if it is present",(void*)&ud.config.UseMouse, CVAR_BOOL|CVAR_FUNCPTR, 0, 0, 1 },
{ "hud_althud", "hud_althud: enable/disable alternate mini-hud", (void*)&ud.althud, CVAR_BOOL, 0, 1 },
{ "hud_messagetime", "hud_messagetime: length of time to display multiplayer chat messages", (void*)&ud.msgdisptime, CVAR_INT, 0, 3600 },
{ "hud_numbertile", "hud_numbertile: first tile in alt hud number set", (void*)&althud_numbertile, CVAR_INT, 0, MAXTILES-10 },
{ "hud_numberpal", "hud_numberpal: pal for alt hud numbers", (void*)&althud_numberpal, CVAR_INT, 0, MAXPALOOKUPS },
{ "hud_shadows", "hud_shadows: enable/disable althud shadows", (void*)&althud_shadows, CVAR_BOOL, 0, 1 },
{ "hud_flashing", "hud_flashing: enable/disable althud flashing", (void*)&althud_flashing, CVAR_BOOL, 0, 1 },
{ "hud_glowingquotes", "hud_glowingquotes: enable/disable \"glowing\" quote text", (void*)&hud_glowingquotes, CVAR_BOOL, 0, 1 },
{ "hud_scale","hud_scale: changes the hud scale", (void*)&ud.statusbarscale, CVAR_INT|CVAR_FUNCPTR, 10, 100 },
{ "hud_showmapname", "hud_showmapname: enable/disable map name display on load", (void*)&hud_showmapname, CVAR_BOOL, 0, 1 },
{ "hud_stats", "hud_stats: enable/disable level statistics display", (void*)&ud.levelstats, CVAR_BOOL, 0, 1 },
{ "hud_textscale", "hud_textscale: sets multiplayer chat message size", (void*)&ud.textscale, CVAR_INT, 100, 400 },
{ "hud_weaponscale","hud_weaponscale: changes the weapon scale", (void*)&ud.weaponscale, CVAR_INT, 10, 100 },
{ "in_mousebias", "in_mousebias: emulates the original mouse code's weighting of input towards whichever axis is moving the most at any given time", (void*)&ud.config.MouseBias, CVAR_INT, 0, 0, 32 },
{ "in_mousedeadzone", "in_mousedeadzone: amount of mouse movement to filter out", (void*)&ud.config.MouseDeadZone, CVAR_INT, 0, 0, 512 },
{ "in_mousesmoothing", "in_mousesmoothing: enable/disable mouse input smoothing", (void*)&ud.config.SmoothInput, CVAR_BOOL, 0, 0, 1 },
{ "in_joystick","in_joystick: enables input from the joystick if it is present",(void*)&ud.config.UseJoystick, CVAR_BOOL|CVAR_FUNCPTR, 0, 1 },
{ "in_mouse","in_mouse: enables input from the mouse if it is present",(void*)&ud.config.UseMouse, CVAR_BOOL|CVAR_FUNCPTR, 0, 1 },
{ "r_drawweapon", "r_drawweapon: enable/disable weapon drawing", (void*)&ud.drawweapon, CVAR_INT, 0, 0, 2 },
{ "osdhightile", "osdhightile: enable/disable hires art replacements for console text", (void*)&osdhightile, CVAR_BOOL, 0, 0, 1 },
{ "r_showfps", "r_showfps: show the frame rate counter", (void*)&ud.tickrate, CVAR_INT, 0, 0, 2 },
{ "r_shadows", "r_shadows: enable/disable sprite and model shadows", (void*)&ud.shadows, CVAR_BOOL, 0, 0, 1 },
{ "r_precache", "r_precache: enable/disable the pre-level caching routine", (void*)&ud.config.useprecache, CVAR_BOOL, 0, 0, 1 },
{ "in_mousebias", "in_mousebias: emulates the original mouse code's weighting of input towards whichever axis is moving the most at any given time",
(void*)&ud.config.MouseBias, CVAR_INT, 0, 32 },
{ "in_mousedeadzone", "in_mousedeadzone: amount of mouse movement to filter out", (void*)&ud.config.MouseDeadZone, CVAR_INT, 0, 512 },
{ "in_mousesmoothing", "in_mousesmoothing: enable/disable mouse input smoothing", (void*)&ud.config.SmoothInput, CVAR_BOOL, 0, 1 },
{ "r_ambientlight", "r_ambientlight: sets the global map light level",(void*)&r_ambientlight, CVAR_FLOAT|CVAR_FUNCPTR, 0, 0, 10 },
{ "r_maxfps", "r_maxfps: sets a framerate cap",(void *)&r_maxfps, CVAR_INT|CVAR_FUNCPTR, 0, 0, 1000 },
{ "mus_enabled", "mus_enabled: enables/disables music", (void*)&ud.config.MusicToggle, CVAR_BOOL, 0, 1 },
{ "mus_volume", "mus_musvolume: controls volume of midi music", (void*)&ud.config.MusicVolume, CVAR_INT, 0, 255 },
{ "sensitivity","sensitivity <value>: changes the mouse sensitivity", (void*)&CONTROL_MouseSensitivity, CVAR_FLOAT|CVAR_FUNCPTR, 0, 0, 25 },
{ "r_drawweapon", "r_drawweapon: enable/disable weapon drawing", (void*)&ud.drawweapon, CVAR_INT, 0, 2 },
{ "osdhightile", "osdhightile: enable/disable hires art replacements for console text", (void*)&osdhightile, CVAR_BOOL, 0, 1 },
{ "r_showfps", "r_showfps: show the frame rate counter", (void*)&ud.tickrate, CVAR_INT, 0, 2 },
{ "r_shadows", "r_shadows: enable/disable sprite and model shadows", (void*)&ud.shadows, CVAR_BOOL, 0, 1 },
{ "r_precache", "r_precache: enable/disable the pre-level caching routine", (void*)&ud.config.useprecache, CVAR_BOOL, 0, 1 },
{ "skill","skill <value>: changes the game skill setting", (void*)&ud.player_skill, CVAR_INT|CVAR_FUNCPTR|CVAR_NOMULTI, 0, 0, 5 },
{ "r_ambientlight", "r_ambientlight: sets the global map light level",(void*)&r_ambientlight, CVAR_FLOAT|CVAR_FUNCPTR, 0, 10 },
{ "r_maxfps", "r_maxfps: sets a framerate cap",(void *)&r_maxfps, CVAR_INT|CVAR_FUNCPTR, 0, 1000 },
{ "snd_ambience", "snd_ambience: enables/disables ambient sounds", (void*)&ud.config.AmbienceToggle, CVAR_BOOL, 0, 0, 1 },
{ "snd_duketalk", "snd_duketalk: enables/disables Duke's speech", (void*)&ud.config.VoiceToggle, CVAR_INT, 0, 0, 5 },
{ "snd_fxvolume", "snd_fxvolume: volume of sound effects", (void*)&ud.config.FXVolume, CVAR_INT, 0, 0, 255 },
{ "snd_mixrate", "snd_mixrate: sound mixing rate", (void*)&ud.config.MixRate, CVAR_INT, 0, 0, 48000 },
{ "snd_musvolume", "snd_musvolume: volume of midi music", (void*)&ud.config.MusicVolume, CVAR_INT, 0, 0, 255 },
{ "snd_numbits", "snd_numbits: sound bits", (void*)&ud.config.NumBits, CVAR_INT, 0, 8, 16 },
{ "snd_numchannels", "snd_numchannels: the number of sound channels", (void*)&ud.config.NumChannels, CVAR_INT, 0, 0, 2 },
{ "snd_numvoices", "snd_numvoices: the number of concurrent sounds", (void*)&ud.config.NumVoices, CVAR_INT, 0, 0, 96 },
{ "snd_reversestereo", "snd_reversestereo: reverses the stereo channels", (void*)&ud.config.ReverseStereo, CVAR_BOOL, 0, 0, 16 },
{ "vid_gamma","vid_gamma <gamma>: adjusts gamma ramp",(void*)&vid_gamma, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 0, 10 },
{ "vid_contrast","vid_contrast <gamma>: adjusts gamma ramp",(void*)&vid_contrast, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 0, 10 },
{ "vid_brightness","vid_brightness <gamma>: adjusts gamma ramp",(void*)&vid_brightness, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 0, 10 },
{ "sensitivity","sensitivity <value>: changes the mouse sensitivity", (void*)&CONTROL_MouseSensitivity, CVAR_FLOAT|CVAR_FUNCPTR, 0, 25 },
{ "demorec_diffs","demorec_diffs: enable/disable diff recording in demos",(void*)&demorec_diffs_cvar, CVAR_BOOL, 0, 0, 1 },
{ "demorec_force","demorec_force: enable/disable forced demo recording",(void*)&demorec_force_cvar, CVAR_BOOL|CVAR_NOSAVE, 0, 0, 1 },
{ "demorec_difftics","demorec_difftics <number>: sets game tic interval after which a diff is recorded",(void*)&demorec_difftics_cvar, CVAR_INT, 0, 2, 60*(TICRATE/TICSPERFRAME) },
{ "demorec_diffcompress","demorec_diffcompress <number>: Compression method for diffs. (0: none, 1: KSLZW)",(void*)&demorec_diffcompress_cvar, CVAR_INT, 0, 0, 1 },
{ "demorec_synccompress","demorec_synccompress <number>: Compression method for input. (0: none, 1: KSLZW)",(void*)&demorec_synccompress_cvar, CVAR_INT, 0, 0, 1 },
{ "demorec_seeds","demorec_seeds: enable/disable recording of random seed for later sync checking",(void*)&demorec_seeds_cvar, CVAR_BOOL, 0, 0, 1 },
{ "demoplay_diffs","demoplay_diffs: enable/disable application of diffs in demo playback",(void*)&demoplay_diffs, CVAR_BOOL, 0, 0, 1 },
{ "demoplay_showsync","demoplay_showsync: enable/disable display of sync status",(void*)&demoplay_showsync, CVAR_BOOL, 0, 0, 1 },
{ "skill","skill <value>: changes the game skill setting", (void*)&ud.player_skill, CVAR_INT|CVAR_FUNCPTR|CVAR_NOMULTI, 0, 5 },
{ "snd_ambience", "snd_ambience: enables/disables ambient sounds", (void*)&ud.config.AmbienceToggle, CVAR_BOOL, 0, 1 },
{ "snd_duketalk", "snd_duketalk: enables/disables Duke's speech", (void*)&ud.config.VoiceToggle, CVAR_INT, 0, 5 },
{ "snd_enabled", "snd_enabled: enables/disables sound effects", (void*)&ud.config.SoundToggle, CVAR_BOOL, 0, 1 },
{ "snd_fxvolume", "snd_fxvolume: volume of sound effects", (void*)&ud.config.FXVolume, CVAR_INT, 0, 255 },
{ "snd_mixrate", "snd_mixrate: sound mixing rate", (void*)&ud.config.MixRate, CVAR_INT, 0, 48000 },
{ "snd_numbits", "snd_numbits: sound bits", (void*)&ud.config.NumBits, CVAR_INT, 8, 16 },
{ "snd_numchannels", "snd_numchannels: the number of sound channels", (void*)&ud.config.NumChannels, CVAR_INT, 0, 2 },
{ "snd_numvoices", "snd_numvoices: the number of concurrent sounds", (void*)&ud.config.NumVoices, CVAR_INT, 0, 96 },
{ "snd_reversestereo", "snd_reversestereo: reverses the stereo channels", (void*)&ud.config.ReverseStereo, CVAR_BOOL, 0, 16 },
{ "team","team <value>: change team in multiplayer", (void*)&ud.team, CVAR_INT|CVAR_FUNCPTR|CVAR_MULTI, 0, 3 },
{ "vid_gamma","vid_gamma <gamma>: adjusts gamma ramp",(void*)&vid_gamma, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 10 },
{ "vid_contrast","vid_contrast <gamma>: adjusts gamma ramp",(void*)&vid_contrast, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 10 },
{ "vid_brightness","vid_brightness <gamma>: adjusts gamma ramp",(void*)&vid_brightness, CVAR_DOUBLE|CVAR_FUNCPTR, 0, 10 },
};
osdcmd_cheatsinfo_stat.cheatnum = -1;
for (i=0; i<sizeof(cvars_game)/sizeof(cvars_game[0]); i++)
{
OSD_RegisterCvar(&cvars_game[i]);
if (cvars_game[i].type & CVAR_FUNCPTR) OSD_RegisterFunction(cvars_game[i].name, cvars_game[i].helpstr, osdcmd_cvar_set_game);
else if (cvars_game[i].type & CVAR_MULTI) OSD_RegisterFunction(cvars_game[i].name, cvars_game[i].helpstr, osdcmd_cvar_set_multi);
else OSD_RegisterFunction(cvars_game[i].name, cvars_game[i].helpstr, osdcmd_cvar_set);
if (OSD_RegisterCvar(&cvars_game[i]))
continue;
switch (cvars_game[i].type & (CVAR_FUNCPTR|CVAR_MULTI))
{
case CVAR_FUNCPTR:
OSD_RegisterFunction(cvars_game[i].name, cvars_game[i].helpstr, osdcmd_cvar_set_game);
break;
case CVAR_MULTI:
OSD_RegisterFunction(cvars_game[i].name, cvars_game[i].helpstr, osdcmd_cvar_set_multi);
break;
default:
OSD_RegisterFunction(cvars_game[i].name, cvars_game[i].helpstr, osdcmd_cvar_set);
break;
}
}
if (VOLUMEONE)

File diff suppressed because it is too large Load diff

View file

@ -337,22 +337,23 @@ static void G_DoLoadScreen(char *statustext, int32_t percent)
if (ud.recstat != 2)
{
/*Gv_SetVar(g_iReturnVarID,LOADSCREEN, -1, -1);*/
aGameVars[g_iReturnVarID].val.lValue = LOADSCREEN;
VM_OnEvent(EVENT_GETLOADTILE, -1, myconnectindex, -1);
j = aGameVars[g_iReturnVarID].val.lValue;
if (!statustext)
{
//g_player[myconnectindex].ps->palette = palette;
P_SetGamePalette(g_player[myconnectindex].ps, palette, 1); // JBF 20040308
fadepal(0,0,0, 0,64,7);
i = ud.screen_size;
ud.screen_size = 0;
G_UpdateScreenArea();
clearview(0L);
}
/*Gv_SetVar(g_iReturnVarID,LOADSCREEN, -1, -1);*/
aGameVars[g_iReturnVarID].val.lValue = LOADSCREEN;
X_OnEvent(EVENT_GETLOADTILE, -1, myconnectindex, -1);
j = aGameVars[g_iReturnVarID].val.lValue;
rotatesprite(320<<15,200<<15,65536L,0,j > MAXTILES-1?j-MAXTILES:j,0,0,2+8+64,0,0,xdim-1,ydim-1);
if (j > MAXTILES-1)
{
nextpage();
@ -371,6 +372,8 @@ static void G_DoLoadScreen(char *statustext, int32_t percent)
}
if (statustext) gametext(160,180,statustext,0,2+8+16);
if (percent != -1)
{
int32_t ii = scale(scale(xdim-1,288,320),percent,100);
rotatesprite(31<<16,145<<16,65536,0,929,15,0,2+8+16,0,0,ii,ydim-1);
@ -378,13 +381,12 @@ static void G_DoLoadScreen(char *statustext, int32_t percent)
rotatesprite(30<<16,144<<16,65536,0,929,0,0,2+8+16,0,0,ii,ydim-1);
rotatesprite(158<<16,144<<16,65536,0,929,0,0,2+8+16,0,0,ii,ydim-1);
}
X_OnEvent(EVENT_DISPLAYLOADINGSCREEN, g_player[screenpeek].ps->i, screenpeek, -1);
VM_OnEvent(EVENT_DISPLAYLOADINGSCREEN, g_player[screenpeek].ps->i, screenpeek, -1);
nextpage();
if (!statustext)
{
fadepal(0,0,0, 63,0,-7);
KB_FlushKeyboardQueue();
ud.screen_size = i;
}
@ -400,7 +402,7 @@ static void G_DoLoadScreen(char *statustext, int32_t percent)
}
/*Gv_SetVar(g_iReturnVarID,LOADSCREEN, -1, -1);*/
aGameVars[g_iReturnVarID].val.lValue = LOADSCREEN;
X_OnEvent(EVENT_GETLOADTILE, -1, myconnectindex, -1);
VM_OnEvent(EVENT_GETLOADTILE, -1, myconnectindex, -1);
j = aGameVars[g_iReturnVarID].val.lValue;
rotatesprite(320<<15,200<<15,65536L,0,j > MAXTILES-1?j-MAXTILES:j,0,0,2+8+64,0,0,xdim-1,ydim-1);
if (j > MAXTILES-1)
@ -410,7 +412,7 @@ static void G_DoLoadScreen(char *statustext, int32_t percent)
}
menutext(160,105,0,0,"LOADING...");
if (statustext) gametext(160,180,statustext,0,2+8+16);
X_OnEvent(EVENT_DISPLAYLOADINGSCREEN, g_player[screenpeek].ps->i, screenpeek, -1);
VM_OnEvent(EVENT_DISPLAYLOADINGSCREEN, g_player[screenpeek].ps->i, screenpeek, -1);
nextpage();
}
}
@ -588,9 +590,7 @@ void G_UpdateScreenArea(void)
y1 = scale(y1,ydim,200);
y2 = scale(y2,ydim,200);
if (getrendermode() >= 3)
setview(x1,y1,x2-1,y2);
else setview(x1,y1,x2-1,y2-1);
setview(x1,y1,x2-1,y2-(getrendermode() >= 3));
G_GetCrosshairColor();
G_SetCrosshairColor(CrosshairColors.r, CrosshairColors.g, CrosshairColors.b);
@ -616,7 +616,7 @@ void P_RandomSpawnPoint(int32_t snum)
{
for (k=0; k<g_numPlayerSprites; k++)
{
dist = FindDistance2D(g_player[j].ps->posx-g_playerSpawnPoints[k].ox,g_player[j].ps->posy-g_playerSpawnPoints[k].oy);
dist = FindDistance2D(g_player[j].ps->pos.x-g_playerSpawnPoints[k].ox,g_player[j].ps->pos.y-g_playerSpawnPoints[k].oy);
if (dist < pdist)
i = k, pdist = dist;
}
@ -626,9 +626,9 @@ void P_RandomSpawnPoint(int32_t snum)
}
}
p->bobposx = p->oposx = p->posx = g_playerSpawnPoints[i].ox;
p->bobposy = p->oposy = p->posy = g_playerSpawnPoints[i].oy;
p->oposz = p->posz = g_playerSpawnPoints[i].oz;
p->bobposx = p->opos.x = p->pos.x = g_playerSpawnPoints[i].ox;
p->bobposy = p->opos.y = p->pos.y = g_playerSpawnPoints[i].oy;
p->opos.z = p->pos.z = g_playerSpawnPoints[i].oz;
p->ang = g_playerSpawnPoints[i].oa;
p->cursectnum = g_playerSpawnPoints[i].os;
sprite[p->i].cstat = 1+256;
@ -639,14 +639,14 @@ void P_ResetPlayer(int32_t snum)
vec3_t tmpvect;
spritetype *sp = &sprite[g_player[snum].ps->i];
tmpvect.x = g_player[snum].ps->posx;
tmpvect.y = g_player[snum].ps->posy;
tmpvect.z = g_player[snum].ps->posz+PHEIGHT;
tmpvect.x = g_player[snum].ps->pos.x;
tmpvect.y = g_player[snum].ps->pos.y;
tmpvect.z = g_player[snum].ps->pos.z+PHEIGHT;
P_RandomSpawnPoint(snum);
sp->x = ActorExtra[g_player[snum].ps->i].bposx = g_player[snum].ps->bobposx = g_player[snum].ps->oposx = g_player[snum].ps->posx;
sp->y = ActorExtra[g_player[snum].ps->i].bposy = g_player[snum].ps->bobposy = g_player[snum].ps->oposy =g_player[snum].ps->posy;
sp->z = ActorExtra[g_player[snum].ps->i].bposy = g_player[snum].ps->oposz =g_player[snum].ps->posz;
updatesector(g_player[snum].ps->posx,g_player[snum].ps->posy,&g_player[snum].ps->cursectnum);
sp->x = actor[g_player[snum].ps->i].bposx = g_player[snum].ps->bobposx = g_player[snum].ps->opos.x = g_player[snum].ps->pos.x;
sp->y = actor[g_player[snum].ps->i].bposy = g_player[snum].ps->bobposy = g_player[snum].ps->opos.y =g_player[snum].ps->pos.y;
sp->z = actor[g_player[snum].ps->i].bposy = g_player[snum].ps->opos.z =g_player[snum].ps->pos.z;
updatesector(g_player[snum].ps->pos.x,g_player[snum].ps->pos.y,&g_player[snum].ps->cursectnum);
setsprite(g_player[snum].ps->i,&tmpvect);
sp->cstat = 257;
@ -668,27 +668,27 @@ void P_ResetPlayer(int32_t snum)
g_player[snum].ps->wackedbyactor = -1;
g_player[snum].ps->inv_amount[GET_SHIELD] = g_startArmorAmount;
g_player[snum].ps->dead_flag = 0;
g_player[snum].ps->pals_time = 0;
g_player[snum].ps->pals.f = 0;
g_player[snum].ps->footprintcount = 0;
g_player[snum].ps->weapreccnt = 0;
g_player[snum].ps->fta = 0;
g_player[snum].ps->ftq = 0;
g_player[snum].ps->posxv = g_player[snum].ps->posyv = 0;
g_player[snum].ps->posvel.x = g_player[snum].ps->posvel.y = 0;
g_player[snum].ps->rotscrnang = 0;
g_player[snum].ps->runspeed = g_playerFriction;
g_player[snum].ps->falling_counter = 0;
ActorExtra[g_player[snum].ps->i].extra = -1;
ActorExtra[g_player[snum].ps->i].owner = g_player[snum].ps->i;
actor[g_player[snum].ps->i].extra = -1;
actor[g_player[snum].ps->i].owner = g_player[snum].ps->i;
ActorExtra[g_player[snum].ps->i].cgg = 0;
ActorExtra[g_player[snum].ps->i].movflag = 0;
ActorExtra[g_player[snum].ps->i].tempang = 0;
ActorExtra[g_player[snum].ps->i].actorstayput = -1;
ActorExtra[g_player[snum].ps->i].dispicnum = 0;
ActorExtra[g_player[snum].ps->i].owner = g_player[snum].ps->i;
actor[g_player[snum].ps->i].cgg = 0;
actor[g_player[snum].ps->i].movflag = 0;
actor[g_player[snum].ps->i].tempang = 0;
actor[g_player[snum].ps->i].actorstayput = -1;
actor[g_player[snum].ps->i].dispicnum = 0;
actor[g_player[snum].ps->i].owner = g_player[snum].ps->i;
ActorExtra[g_player[snum].ps->i].temp_data[4] = 0;
actor[g_player[snum].ps->i].t_data[4] = 0;
P_ResetInventory(snum);
P_ResetWeapons(snum);
@ -698,7 +698,7 @@ void P_ResetPlayer(int32_t snum)
g_player[snum].ps->movement_lock = 0;
if (apScriptGameEvent[EVENT_RESETPLAYER])
X_OnEvent(EVENT_RESETPLAYER, g_player[snum].ps->i, snum, -1);
VM_OnEvent(EVENT_RESETPLAYER, g_player[snum].ps->i, snum, -1);
}
void P_ResetStatus(int32_t snum)
@ -777,9 +777,9 @@ void P_ResetStatus(int32_t snum)
p->newowner =-1;
p->jumping_counter = 0;
p->hard_landing = 0;
p->posxv = 0;
p->posyv = 0;
p->poszv = 0;
p->posvel.x = 0;
p->posvel.y = 0;
p->posvel.z = 0;
fricxv = 0;
fricyv = 0;
p->somethingonplayer =-1;
@ -808,7 +808,7 @@ void P_ResetStatus(int32_t snum)
p->frag_ps = snum;
P_UpdateScreenPal(p);
X_OnEvent(EVENT_RESETPLAYER, p->i, snum, -1);
VM_OnEvent(EVENT_RESETPLAYER, p->i, snum, -1);
}
void P_ResetWeapons(int32_t snum)
@ -816,24 +816,20 @@ void P_ResetWeapons(int32_t snum)
int32_t weapon;
DukePlayer_t *p = g_player[snum].ps;
for (weapon = PISTOL_WEAPON; weapon < MAX_WEAPONS; weapon++)
p->gotweapon[weapon] = 0;
for (weapon = PISTOL_WEAPON; weapon < MAX_WEAPONS; weapon++)
p->ammo_amount[weapon] = 0;
p->weapon_pos = 6;
p->kickback_pic = 5;
p->curr_weapon = PISTOL_WEAPON;
p->gotweapon[PISTOL_WEAPON] = 1;
p->gotweapon[KNEE_WEAPON] = 1;
p->gotweapon = ((1<<PISTOL_WEAPON) | (1<<KNEE_WEAPON) | (1<<HANDREMOTE_WEAPON));
p->ammo_amount[PISTOL_WEAPON] = min(p->max_ammo_amount[PISTOL_WEAPON], 48);
p->gotweapon[HANDREMOTE_WEAPON] = 1;
p->last_weapon = -1;
p->show_empty_weapon= 0;
p->last_pissed_time = 0;
p->holster_weapon = 0;
X_OnEvent(EVENT_RESETWEAPONS, p->i, snum, -1);
VM_OnEvent(EVENT_RESETWEAPONS, p->i, snum, -1);
}
void P_ResetInventory(int32_t snum)
@ -850,7 +846,7 @@ void P_ResetInventory(int32_t snum)
p->inv_amount[GET_SHIELD] = g_startArmorAmount;
p->inven_icon = 0;
X_OnEvent(EVENT_RESETINVENTORY, p->i, snum, -1);
VM_OnEvent(EVENT_RESETINVENTORY, p->i, snum, -1);
}
static void resetprestat(int32_t snum,int32_t g)
@ -863,7 +859,7 @@ static void resetprestat(int32_t snum,int32_t g)
p->hbomb_on = 0;
p->cheat_phase = 0;
p->pals_time = 0;
p->pals.f = 0;
p->toggle_key_flag = 0;
p->secret_rooms = 0;
p->max_secret_rooms = 0;
@ -898,7 +894,8 @@ static void resetprestat(int32_t snum,int32_t g)
g_numInterpolations = 0;
startofdynamicinterpolations = 0;
if (((g&MODE_EOL) != MODE_EOL && numplayers < 2 && !g_netServer) || (!(GametypeFlags[ud.coop]&GAMETYPE_PRESERVEINVENTORYDEATH) && numplayers > 1))
if (((g&MODE_EOL) != MODE_EOL && numplayers < 2 && !g_netServer) ||
(!(GametypeFlags[ud.coop]&GAMETYPE_PRESERVEINVENTORYDEATH) && numplayers > 1))
{
P_ResetWeapons(snum);
P_ResetInventory(snum);
@ -916,9 +913,7 @@ static void resetprestat(int32_t snum,int32_t g)
static inline void G_SetupBackdrop(int16_t sky)
{
int16_t i;
for (i=0; i<MAXPSKYTILES; i++) pskyoff[i]=0;
Bmemset(pskyoff, 0, sizeof(pskyoff[0]) * MAXPSKYTILES);
if (parallaxyscale != 65536L)
parallaxyscale = 32768;
@ -1022,7 +1017,7 @@ static inline void prelevel(char g)
nexti = nextspritestat[i];
A_ResetVars(i);
A_LoadActor(i);
X_OnEvent(EVENT_LOADACTOR, i, -1, -1);
VM_OnEvent(EVENT_LOADACTOR, i, -1, -1);
if (sprite[i].lotag == -1 && (sprite[i].cstat&16))
{
g_player[0].ps->exitx = SX;
@ -1117,7 +1112,7 @@ static inline void prelevel(char g)
while (j >= 0)
{
if (sprite[j].lotag == 12 && sprite[j].hitag == SLT)
ActorExtra[j].temp_data[0] = 1;
actor[j].t_data[0] = 1;
j = nextspritestat[j];
}
}
@ -1363,20 +1358,20 @@ void G_NewGame(int32_t vn,int32_t ln,int32_t sk)
if (aplWeaponWorksLike[i][0]==PISTOL_WEAPON)
{
p->curr_weapon = i;
p->gotweapon[i] = 1;
p->gotweapon |= (1<<i);
p->ammo_amount[i] = min(p->max_ammo_amount[i], 48);
}
else if (aplWeaponWorksLike[i][0]==KNEE_WEAPON)
p->gotweapon[i] = 1;
p->gotweapon |= (1<<i);
else if (aplWeaponWorksLike[i][0]==HANDREMOTE_WEAPON)
p->gotweapon[i] = 1;
p->gotweapon |= (1<<i);
}
p->last_weapon = -1;
}
display_mirror = 0;
X_OnEvent(EVENT_NEWGAME, g_player[screenpeek].ps->i, screenpeek, -1);
VM_OnEvent(EVENT_NEWGAME, g_player[screenpeek].ps->i, screenpeek, -1);
}
static void resetpspritevars(char g)
@ -1387,7 +1382,7 @@ static void resetpspritevars(char g)
uint8_t aimmode[MAXPLAYERS],autoaim[MAXPLAYERS],weaponswitch[MAXPLAYERS];
DukeStatus_t tsbar[MAXPLAYERS];
A_InsertSprite(g_player[0].ps->cursectnum,g_player[0].ps->posx,g_player[0].ps->posy,g_player[0].ps->posz,
A_InsertSprite(g_player[0].ps->cursectnum,g_player[0].ps->pos.x,g_player[0].ps->pos.y,g_player[0].ps->pos.z,
APLAYER,0,0,0,g_player[0].ps->ang,0,0,0,10);
if (ud.recstat != 2)
@ -1399,11 +1394,9 @@ static void resetpspritevars(char g)
if ((g_netServer || ud.multimode > 1) && (GametypeFlags[ud.coop]&GAMETYPE_PRESERVEINVENTORYDEATH) && ud.last_level >= 0)
{
for (j=0; j<MAX_WEAPONS; j++)
{
tsbar[i].ammo_amount[j] = g_player[i].ps->ammo_amount[j];
tsbar[i].gotweapon[j] = g_player[i].ps->gotweapon[j];
}
tsbar[i].gotweapon = g_player[i].ps->gotweapon;
Bmemcpy(tsbar[i].inv_amount, g_player[i].ps->inv_amount, sizeof(tsbar[i].inv_amount));
tsbar[i].curr_weapon = g_player[i].ps->curr_weapon;
tsbar[i].inven_icon = g_player[i].ps->inven_icon;
@ -1424,10 +1417,9 @@ static void resetpspritevars(char g)
if ((g_netServer || ud.multimode > 1) && (GametypeFlags[ud.coop]&GAMETYPE_PRESERVEINVENTORYDEATH) && ud.last_level >= 0)
{
for (j=0; j<MAX_WEAPONS; j++)
{
g_player[i].ps->ammo_amount[j] = tsbar[i].ammo_amount[j];
g_player[i].ps->gotweapon[j] = tsbar[i].gotweapon[j];
}
g_player[i].ps->gotweapon = tsbar[i].gotweapon;
g_player[i].ps->curr_weapon = tsbar[i].curr_weapon;
g_player[i].ps->inven_icon = tsbar[i].inven_icon;
Bmemcpy(g_player[i].ps->inv_amount, tsbar[i].inv_amount, sizeof(tsbar[i].inv_amount));
@ -1448,12 +1440,6 @@ static void resetpspritevars(char g)
if (g_numPlayerSprites == MAXPLAYERS)
G_GameExit("\nToo many player sprites (max 16.)");
/* if (g_numPlayerSprites == 0)
{
firstx = g_player[0].ps->posx;
firsty = g_player[0].ps->posy;
}*/
g_playerSpawnPoints[(uint8_t)g_numPlayerSprites].ox = s->x;
g_playerSpawnPoints[(uint8_t)g_numPlayerSprites].oy = s->y;
g_playerSpawnPoints[(uint8_t)g_numPlayerSprites].oz = s->z;
@ -1520,11 +1506,11 @@ static void resetpspritevars(char g)
g_player[j].ps->i = i;
g_player[j].ps->frag_ps = j;
ActorExtra[i].owner = i;
actor[i].owner = i;
ActorExtra[i].bposx = g_player[j].ps->bobposx = g_player[j].ps->oposx = g_player[j].ps->posx = s->x;
ActorExtra[i].bposy = g_player[j].ps->bobposy = g_player[j].ps->oposy = g_player[j].ps->posy = s->y;
ActorExtra[i].bposz = g_player[j].ps->oposz = g_player[j].ps->posz = s->z;
actor[i].bposx = g_player[j].ps->bobposx = g_player[j].ps->opos.x = g_player[j].ps->pos.x = s->x;
actor[i].bposy = g_player[j].ps->bobposy = g_player[j].ps->opos.y = g_player[j].ps->pos.y = s->y;
actor[i].bposz = g_player[j].ps->opos.z = g_player[j].ps->pos.z = s->z;
g_player[j].ps->oang = g_player[j].ps->ang = s->ang;
updatesector(s->x,s->y,&g_player[j].ps->cursectnum);
@ -1616,7 +1602,7 @@ void clearfifo(void)
jump_input = 0;
movefifoplc = movefifosendplc = predictfifoplc = 0;
avgfvel = avgsvel = avgavel = avghorz = avgbits = avgextbits = 0;
avg.fvel = avg.svel = avg.avel = avg.horz = avg.bits = avg.extbits = 0;
otherminlag = mymaxlag = 0;
clearbufbyte(&loc,sizeof(input_t),0L);
@ -1670,6 +1656,36 @@ int32_t G_FindLevelForFilename(const char *fn)
return MAXLEVELS*MAXVOLUMES;
}
void G_FadeLoad(int32_t r, int32_t g, int32_t b, int32_t start, int32_t end, int32_t step)
{
if (step > 0)
{
for (; start < end; start += step)
{
if (KB_KeyPressed(sc_Space))
{
KB_ClearKeyDown(sc_Space);
return;
}
G_FadePalette(r,g,b,start);
flushperms();
G_DoLoadScreen(" ", -1);
}
}
else for (; start >= end; start += step)
{
if (KB_KeyPressed(sc_Space))
{
KB_ClearKeyDown(sc_Space);
return;
}
G_FadePalette(r,g,b,start);
flushperms();
G_DoLoadScreen(" ", -1);
}
}
int32_t G_EnterLevel(int32_t g)
{
int32_t i;
@ -1755,7 +1771,8 @@ int32_t G_EnterLevel(int32_t g)
{
if (boardfilename[0] != 0 && ud.m_level_number == 7 && ud.m_volume_number == 0)
{
if (loadboard(boardfilename,0,&g_player[0].ps->posx, &g_player[0].ps->posy, &g_player[0].ps->posz, &g_player[0].ps->ang,&g_player[0].ps->cursectnum) == -1)
if (loadboard(boardfilename,0,&g_player[0].ps->pos.x, &g_player[0].ps->pos.y,
&g_player[0].ps->pos.z, &g_player[0].ps->ang,&g_player[0].ps->cursectnum) == -1)
{
OSD_Printf(OSD_ERROR "Map '%s' not found!\n",boardfilename);
//G_GameExit(tempbuf);
@ -1825,7 +1842,8 @@ int32_t G_EnterLevel(int32_t g)
}
}
}
else if (loadboard(MapInfo[(ud.volume_number*MAXLEVELS)+ud.level_number].filename,0,&g_player[0].ps->posx, &g_player[0].ps->posy, &g_player[0].ps->posz, &g_player[0].ps->ang,&g_player[0].ps->cursectnum) == -1)
else if (loadboard(MapInfo[(ud.volume_number*MAXLEVELS)+ud.level_number].filename,0,&g_player[0].ps->pos.x,
&g_player[0].ps->pos.y, &g_player[0].ps->pos.z, &g_player[0].ps->ang,&g_player[0].ps->cursectnum) == -1)
{
OSD_Printf(OSD_ERROR "Map %s not found!\n",MapInfo[(ud.volume_number*MAXLEVELS)+ud.level_number].filename);
//G_GameExit(tempbuf);
@ -1856,7 +1874,8 @@ int32_t G_EnterLevel(int32_t g)
levname[i] = 255;
levname[i+1] = 0;
if (loadboard(levname,1,&g_player[0].ps->posx, &g_player[0].ps->posy, &g_player[0].ps->posz, &g_player[0].ps->ang,&g_player[0].ps->cursectnum) == -1)
if (loadboard(levname,1,&g_player[0].ps->pos.x, &g_player[0].ps->pos.y,
&g_player[0].ps->pos.z, &g_player[0].ps->ang,&g_player[0].ps->cursectnum) == -1)
{
OSD_Printf(OSD_ERROR "Map '%s' not found!\n",MapInfo[(ud.volume_number*MAXLEVELS)+ud.level_number].filename);
//G_GameExit(tempbuf);
@ -1882,7 +1901,7 @@ int32_t G_EnterLevel(int32_t g)
clearbufbyte(gotpic,sizeof(gotpic),0L);
clearbufbyte(precachehightile, sizeof(precachehightile), 0l);
//clearbufbyte(ActorExtra,sizeof(ActorExtra),0l); // JBF 20040531: yes? no?
//clearbufbyte(Actor,sizeof(Actor),0l); // JBF 20040531: yes? no?
prelevel(g);
@ -1892,7 +1911,9 @@ int32_t G_EnterLevel(int32_t g)
cachedebug = 0;
automapping = 0;
G_FadeLoad(0,0,0, 63, 0, -7);
G_CacheMapData();
G_FadeLoad(0,0,0, 0 ,64, 7);
if (ud.recstat != 2)
{
@ -1929,7 +1950,7 @@ int32_t G_EnterLevel(int32_t g)
case FLOORPLASMA__STATIC:
P_ResetWeapons(i);
P_ResetInventory(i);
g_player[i].ps->gotweapon[PISTOL_WEAPON] = 0;
g_player[i].ps->gotweapon &= ~(1<<PISTOL_WEAPON);
g_player[i].ps->ammo_amount[PISTOL_WEAPON] = 0;
g_player[i].ps->curr_weapon = KNEE_WEAPON;
g_player[i].ps->kickback_pic = 0;
@ -1978,8 +1999,9 @@ int32_t G_EnterLevel(int32_t g)
// variables are set by pointer...
Bmemcpy(&currentboardfilename[0],&boardfilename[0],BMAX_PATH);
X_OnEvent(EVENT_ENTERLEVEL, -1, -1, -1);
OSD_Printf(OSDTEXT_YELLOW "E%dL%d: %s\n",ud.volume_number+1,ud.level_number+1,MapInfo[(ud.volume_number*MAXLEVELS)+ud.level_number].name);
VM_OnEvent(EVENT_ENTERLEVEL, -1, -1, -1);
OSD_Printf(OSDTEXT_YELLOW "E%dL%d: %s\n",ud.volume_number+1,ud.level_number+1,
MapInfo[(ud.volume_number*MAXLEVELS)+ud.level_number].name);
return 0;
}

View file

@ -317,7 +317,7 @@ int32_t G_LoadPlayer(int32_t spot)
scriptptrs = Brealloc(scriptptrs, MAXSPRITES * sizeof(scriptptrs));
if (kdfread(&scriptptrs[0],sizeof(scriptptrs),MAXSPRITES,fil) != MAXSPRITES) goto corrupt;
if (kdfread(&ActorExtra[0],sizeof(ActorData_t),MAXSPRITES,fil) != MAXSPRITES) goto corrupt;
if (kdfread(&actor[0],sizeof(ActorData_t),MAXSPRITES,fil) != MAXSPRITES) goto corrupt;
for (i=0; i<MAXSPRITES; i++)
{
@ -325,7 +325,7 @@ int32_t G_LoadPlayer(int32_t spot)
if (scriptptrs[i]&1) T2 += j;
if (scriptptrs[i]&2) T5 += j;
if (scriptptrs[i]&4) T6 += j;
ActorExtra[i].projectile = &SpriteProjectile[i];
actor[i].projectile = &SpriteProjectile[i];
}
if (kdfread(&lockclock,sizeof(lockclock),1,fil) != 1) goto corrupt;
@ -595,11 +595,11 @@ int32_t G_LoadPlayer(int32_t spot)
polymer_loadboard();
while (i < MAXSPRITES)
{
if (ActorExtra[i].lightptr)
if (actor[i].lightptr)
{
polymer_deletelight(ActorExtra[i].lightId);
ActorExtra[i].lightptr = NULL;
ActorExtra[i].lightId = -1;
polymer_deletelight(actor[i].lightId);
actor[i].lightptr = NULL;
actor[i].lightId = -1;
}
i++;
}
@ -823,7 +823,7 @@ int32_t G_SavePlayer(int32_t spot)
}
dfwrite(&scriptptrs[0],sizeof(scriptptrs),MAXSPRITES,fil);
dfwrite(&ActorExtra[0],sizeof(ActorData_t),MAXSPRITES,fil);
dfwrite(&actor[0],sizeof(ActorData_t),MAXSPRITES,fil);
for (i=0; i<MAXSPRITES; i++)
{
@ -1482,7 +1482,7 @@ static const dataspec_t svgm_script[] =
{ DS_SAVEFN, (void *)&sv_preactordatasave, 0, 1 },
{ 0, &savegame_bitmap, sizeof(savegame_bitmap), 1 },
{ 0, &ActorExtra[0], sizeof(ActorData_t), MAXSPRITES },
{ 0, &actor[0], sizeof(ActorData_t), MAXSPRITES },
{ DS_SAVEFN|DS_LOADFN, (void *)&sv_postactordata, 0, 1 },
{ DS_END, 0, 0, 0 }
@ -1898,8 +1898,8 @@ static void sv_preactordatasave()
Bmemset(savegame_bitmap, 0, sizeof(savegame_bitmap));
for (i=0; i<MAXSPRITES; i++)
{
// ActorExtra[i].lightptr = NULL;
// ActorExtra[i].lightId = -1;
// Actor[i].lightptr = NULL;
// Actor[i].lightId = -1;
if (sprite[i].statnum==MAXSTATUS || actorscrptr[PN]==NULL) continue;
if (T2 >= j && T2 < k) savegame_bitmap[i>>3][0] |= 1<<(i&7), T2 -= j;
@ -1919,9 +1919,9 @@ static void sv_postactordata()
for (i=0; i<MAXSPRITES; i++)
{
// ActorExtra[i].lightptr = NULL;
// ActorExtra[i].lightId = -1;
ActorExtra[i].projectile = &SpriteProjectile[i];
// Actor[i].lightptr = NULL;
// Actor[i].lightId = -1;
actor[i].projectile = &SpriteProjectile[i];
if (sprite[i].statnum==MAXSTATUS || actorscrptr[PN]==NULL) continue;
if (savegame_bitmap[i>>3][0]&(1<<(i&7))) T2 += j;
@ -2294,11 +2294,11 @@ static void postloadplayer2()
polymer_loadboard();
while (i < MAXSPRITES)
{
if (ActorExtra[i].lightptr)
if (actor[i].lightptr)
{
polymer_deletelight(ActorExtra[i].lightId);
ActorExtra[i].lightptr = NULL;
ActorExtra[i].lightId = -1;
polymer_deletelight(actor[i].lightId);
actor[i].lightptr = NULL;
actor[i].lightId = -1;
}
i++;
}

View file

@ -99,14 +99,14 @@ int32_t G_CheckActivatorMotion(int32_t lotag)
{
case 11:
case 30:
if (ActorExtra[j].temp_data[4])
if (actor[j].t_data[4])
return(1);
break;
case 20:
case 31:
case 32:
case 18:
if (ActorExtra[j].temp_data[0])
if (actor[j].t_data[0])
return(1);
break;
}
@ -228,7 +228,7 @@ int32_t __fastcall A_FindPlayer(spritetype *s, int32_t *d)
{
if ((!g_netServer && ud.multimode < 2))
{
*d = klabs(g_player[myconnectindex].ps->oposx-s->x) + klabs(g_player[myconnectindex].ps->oposy-s->y) + ((klabs(g_player[myconnectindex].ps->oposz-s->z+(28<<8)))>>4);
*d = klabs(g_player[myconnectindex].ps->opos.x-s->x) + klabs(g_player[myconnectindex].ps->opos.y-s->y) + ((klabs(g_player[myconnectindex].ps->opos.z-s->z+(28<<8)))>>4);
return myconnectindex;
}
@ -238,7 +238,7 @@ int32_t __fastcall A_FindPlayer(spritetype *s, int32_t *d)
TRAVERSE_CONNECT(j)
{
x = klabs(g_player[j].ps->oposx-s->x) + klabs(g_player[j].ps->oposy-s->y) + ((klabs(g_player[j].ps->oposz-s->z+(28<<8)))>>4);
x = klabs(g_player[j].ps->opos.x-s->x) + klabs(g_player[j].ps->opos.y-s->y) + ((klabs(g_player[j].ps->opos.z-s->z+(28<<8)))>>4);
if (x < closest && sprite[g_player[j].ps->i].extra > 0)
{
closest_player = j;
@ -271,7 +271,7 @@ void G_DoSectorAnimations(void)
if (animateptr[i] == &sector[animatesect[i]].floorz)
for (j=headspritesect[dasect]; j>=0; j=nextspritesect[j])
if (sprite[j].statnum != 3)
ActorExtra[j].bposz = sprite[j].z;
actor[j].bposz = sprite[j].z;
g_animateCount--;
animateptr[i] = animateptr[g_animateCount];
@ -301,25 +301,25 @@ void G_DoSectorAnimations(void)
{
TRAVERSE_CONNECT(p)
if (g_player[p].ps->cursectnum == dasect)
if ((sector[dasect].floorz-g_player[p].ps->posz) < (64<<8))
if ((sector[dasect].floorz-g_player[p].ps->pos.z) < (64<<8))
if (sprite[g_player[p].ps->i].owner >= 0)
{
g_player[p].ps->posz += v;
g_player[p].ps->poszv = 0;
g_player[p].ps->pos.z += v;
g_player[p].ps->posvel.z = 0;
if (p == myconnectindex)
{
my.z += v;
myvel.z = 0;
myzbak[0] = g_player[p].ps->posz;
myzbak[0] = g_player[p].ps->pos.z;
}
}
for (j=headspritesect[dasect]; j>=0; j=nextspritesect[j])
if (sprite[j].statnum != 3)
{
ActorExtra[j].bposz = sprite[j].z;
actor[j].bposz = sprite[j].z;
sprite[j].z += v;
ActorExtra[j].floorz = sector[dasect].floorz+v;
actor[j].floorz = sector[dasect].floorz+v;
}
}
@ -488,7 +488,7 @@ int32_t G_ActivateWarpElevators(int32_t s,int32_t d) //Parm = sectoreffectornum
{
if (SLT == 17)
if (SHT == sprite[s].hitag)
if ((klabs(sector[sn].floorz-ActorExtra[s].temp_data[2]) > SP) ||
if ((klabs(sector[sn].floorz-actor[s].t_data[2]) > SP) ||
(sector[SECT].hitag == (sector[sn].hitag-d)))
break;
i = nextspritestat[i];
@ -532,8 +532,8 @@ void G_OperateSectors(int32_t sn,int32_t ii)
case 30:
j = sector[sn].hitag;
if (ActorExtra[j].tempang == 0 ||
ActorExtra[j].tempang == 256)
if (actor[j].tempang == 0 ||
actor[j].tempang == 256)
A_CallSound(sn,ii);
if (sprite[j].extra == 1)
sprite[j].extra = 3;
@ -543,8 +543,8 @@ void G_OperateSectors(int32_t sn,int32_t ii)
case 31:
j = sector[sn].hitag;
if (ActorExtra[j].temp_data[4] == 0)
ActorExtra[j].temp_data[4] = 1;
if (actor[j].t_data[4] == 0)
actor[j].t_data[4] = 1;
A_CallSound(sn,ii);
break;
@ -925,8 +925,8 @@ REDODOOR:
sector[sn].lotag ^= 0x8000;
if (sector[sn].lotag&0x8000) //OPENING
ActorExtra[j].temp_data[0] = 1;
else ActorExtra[j].temp_data[0] = 2;
actor[j].t_data[0] = 1;
else actor[j].t_data[0] = 2;
A_CallSound(sn,ii);
break;
}
@ -951,9 +951,9 @@ REDODOOR:
l = headspritestat[STAT_EFFECTOR];
while (l >= 0)
{
if ((sprite[l].lotag&0xff)==21 && !ActorExtra[l].temp_data[0] &&
if ((sprite[l].lotag&0xff)==21 && !actor[l].t_data[0] &&
(sprite[l].hitag) == j)
ActorExtra[l].temp_data[0] = 1;
actor[l].t_data[0] = 1;
l = nextspritestat[l];
}
A_CallSound(sn,ii);
@ -1057,7 +1057,7 @@ void G_OperateActivators(int32_t low,int32_t snum)
case 31:
case 32:
case 18:
ActorExtra[j].temp_data[0] = 1-ActorExtra[j].temp_data[0];
actor[j].t_data[0] = 1-actor[j].t_data[0];
A_CallSound(SECT,j);
break;
}
@ -1127,8 +1127,8 @@ int32_t P_ActivateSwitch(int32_t snum,int32_t w,int32_t switchtype)
if (switchtype == 1) // A wall sprite
{
if (ActorExtra[w].lasttransport == totalclock) return 0;
ActorExtra[w].lasttransport = totalclock;
if (actor[w].lasttransport == totalclock) return 0;
actor[w].lasttransport = totalclock;
lotag = sprite[w].lotag;
if (lotag == 0) return 0;
hitag = sprite[w].hitag;
@ -1147,7 +1147,7 @@ int32_t P_ActivateSwitch(int32_t snum,int32_t w,int32_t switchtype)
// sx = wall[w].x;
// sy = wall[w].y;
Bmemcpy(&davector, &wall[w], sizeof(int32_t) * 2);
davector.z = g_player[snum].ps->posz;
davector.z = g_player[snum].ps->pos.z;
picnum = wall[w].picnum;
switchpal = wall[w].pal;
}
@ -1529,16 +1529,16 @@ int32_t P_ActivateSwitch(int32_t snum,int32_t w,int32_t switchtype)
{
case 12:
sector[sprite[x].sectnum].floorpal = 0;
ActorExtra[x].temp_data[0]++;
if (ActorExtra[x].temp_data[0] == 2)
ActorExtra[x].temp_data[0]++;
actor[x].t_data[0]++;
if (actor[x].t_data[0] == 2)
actor[x].t_data[0]++;
break;
case 24:
case 34:
case 25:
ActorExtra[x].temp_data[4] = !ActorExtra[x].temp_data[4];
if (ActorExtra[x].temp_data[4])
actor[x].t_data[4] = !actor[x].t_data[4];
if (actor[x].t_data[4])
P_DoQuote(15,g_player[snum].ps);
else P_DoQuote(2,g_player[snum].ps);
break;
@ -1912,7 +1912,7 @@ int32_t Sect_DamageCeiling(int32_t sn)
while (j >= 0)
{
if (sprite[j].hitag == SHT)
ActorExtra[j].temp_data[3] = 1;
actor[j].t_data[3] = 1;
j = nextspritestat[j];
}
break;
@ -2160,9 +2160,9 @@ void A_DamageObject(int32_t i,int32_t sn)
case FORCESPHERE__STATIC:
sprite[i].xrepeat = 0;
ActorExtra[OW].temp_data[0] = 32;
ActorExtra[OW].temp_data[1] = !ActorExtra[OW].temp_data[1];
ActorExtra[OW].temp_data[2] ++;
actor[OW].t_data[0] = 32;
actor[OW].t_data[1] = !actor[OW].t_data[1];
actor[OW].t_data[2] ++;
A_Spawn(i,EXPLOSION2);
break;
@ -2365,7 +2365,7 @@ void A_DamageObject(int32_t i,int32_t sn)
if (sprite[i].statnum == STAT_ZOMBIEACTOR)
{
changespritestat(i, STAT_ACTOR);
ActorExtra[i].timetosleep = SLEEPTIME;
actor[i].timetosleep = SLEEPTIME;
}
if ((RX < 24 || PN == SHARK) && sprite[sn].picnum == SHRINKSPARK) return;
}
@ -2375,10 +2375,10 @@ void A_DamageObject(int32_t i,int32_t sn)
if (sprite[sn].picnum == FREEZEBLAST && ((PN == APLAYER && sprite[i].pal == 1) || (g_freezerSelfDamage == 0 && sprite[sn].owner == i)))
return;
ActorExtra[i].picnum = sprite[sn].picnum;
ActorExtra[i].extra += sprite[sn].extra;
ActorExtra[i].ang = sprite[sn].ang;
ActorExtra[i].owner = sprite[sn].owner;
actor[i].picnum = sprite[sn].picnum;
actor[i].extra += sprite[sn].extra;
actor[i].ang = sprite[sn].ang;
actor[i].owner = sprite[sn].owner;
}
if (sprite[i].statnum == STAT_PLAYER)
@ -2387,12 +2387,12 @@ void A_DamageObject(int32_t i,int32_t sn)
if (g_player[p].ps->newowner >= 0)
{
g_player[p].ps->newowner = -1;
g_player[p].ps->posx = g_player[p].ps->oposx;
g_player[p].ps->posy = g_player[p].ps->oposy;
g_player[p].ps->posz = g_player[p].ps->oposz;
g_player[p].ps->pos.x = g_player[p].ps->opos.x;
g_player[p].ps->pos.y = g_player[p].ps->opos.y;
g_player[p].ps->pos.z = g_player[p].ps->opos.z;
g_player[p].ps->ang = g_player[p].ps->oang;
updatesector(g_player[p].ps->posx,g_player[p].ps->posy,&g_player[p].ps->cursectnum);
updatesector(g_player[p].ps->pos.x,g_player[p].ps->pos.y,&g_player[p].ps->cursectnum);
P_UpdateScreenPal(g_player[p].ps);
j = headspritestat[STAT_ACTOR];
@ -2406,7 +2406,7 @@ void A_DamageObject(int32_t i,int32_t sn)
if (RX < 24 && sprite[sn].picnum == SHRINKSPARK)
return;
if (sprite[ActorExtra[i].owner].picnum != APLAYER)
if (sprite[actor[i].owner].picnum != APLAYER)
if (ud.player_skill >= 3)
sprite[sn].extra += (sprite[sn].extra>>1);
}
@ -2490,7 +2490,7 @@ void G_HandleSharedKeys(int32_t snum)
if (p->curr_weapon != KNEE_WEAPON || p->kickback_pic == 0)
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_QUICKKICK,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_QUICKKICK,g_player[snum].ps->i,snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue == 0)
{
p->quick_kick = 14;
@ -2536,7 +2536,7 @@ void G_HandleSharedKeys(int32_t snum)
if (TEST_SYNC_KEY(sb_snum, SK_INVENTORY) && p->newowner == -1) // inventory button generates event for selected item
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_INVENTORY,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_INVENTORY,g_player[snum].ps->i,snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue == 0)
{
switch (p->inven_icon)
@ -2563,7 +2563,7 @@ void G_HandleSharedKeys(int32_t snum)
if (TEST_SYNC_KEY(sb_snum, SK_NIGHTVISION))
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_USENIGHTVISION,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_USENIGHTVISION,g_player[snum].ps->i,snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue == 0
&& p->inv_amount[GET_HEATS] > 0)
{
@ -2578,7 +2578,7 @@ void G_HandleSharedKeys(int32_t snum)
if (TEST_SYNC_KEY(sb_snum, SK_STEROIDS))
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_USESTEROIDS,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_USESTEROIDS,g_player[snum].ps->i,snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue == 0)
{
if (p->inv_amount[GET_STEROIDS] == 400)
@ -2667,14 +2667,14 @@ CHECKINV1:
{
/*Gv_SetVar(g_iReturnVarID,dainv,g_player[snum].ps->i,snum);*/
aGameVars[g_iReturnVarID].val.lValue = dainv;
X_OnEvent(EVENT_INVENTORYLEFT,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_INVENTORYLEFT,g_player[snum].ps->i,snum, -1);
dainv=aGameVars[g_iReturnVarID].val.lValue;
}
else if (TEST_SYNC_KEY(sb_snum, SK_INV_RIGHT)) // Inventory_Right
{
/*Gv_SetVar(g_iReturnVarID,dainv,g_player[snum].ps->i,snum);*/
aGameVars[g_iReturnVarID].val.lValue = dainv;
X_OnEvent(EVENT_INVENTORYRIGHT,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_INVENTORYRIGHT,g_player[snum].ps->i,snum, -1);
dainv=aGameVars[g_iReturnVarID].val.lValue;
}
@ -2696,23 +2696,14 @@ CHECKINV1:
switch (j)
{
case 0:
case 1:
case 2:
case 3:
case 4:
case 5:
case 6:
case 7:
case 8:
case 9:
X_OnEvent(EVENT_WEAPKEY1+j,p->i,snum, -1);
default:
VM_OnEvent(EVENT_WEAPKEY1+j,p->i,snum, -1);
break;
case 10:
X_OnEvent(EVENT_PREVIOUSWEAPON,p->i,snum, -1);
VM_OnEvent(EVENT_PREVIOUSWEAPON,p->i,snum, -1);
break;
case 11:
X_OnEvent(EVENT_NEXTWEAPON,p->i,snum, -1);
VM_OnEvent(EVENT_NEXTWEAPON,p->i,snum, -1);
break;
}
@ -2754,7 +2745,7 @@ CHECKINV1:
if (k == -1) k = 9;
else if (k == 10) k = 0;
if (p->gotweapon[k] && p->ammo_amount[k] > 0)
if ((p->gotweapon && (1<<k)) && p->ammo_amount[k] > 0)
{
if (PLUTOPAK) // JBF 20040116: so we don't select grower with v1.3d
if (k == SHRINKER_WEAPON && (p->subweapon&(1<<GROW_WEAPON)))
@ -2763,14 +2754,16 @@ CHECKINV1:
break;
}
else // JBF: grower with no ammo, but shrinker with ammo, switch to shrink
if (PLUTOPAK && k == GROW_WEAPON && p->ammo_amount[GROW_WEAPON] == 0 && p->gotweapon[SHRINKER_WEAPON] && p->ammo_amount[SHRINKER_WEAPON] > 0) // JBF 20040116: added PLUTOPAK so we don't select grower with v1.3d
if (PLUTOPAK && k == GROW_WEAPON && p->ammo_amount[GROW_WEAPON] == 0 &&
(p->gotweapon & (1<<SHRINKER_WEAPON)) && p->ammo_amount[SHRINKER_WEAPON] > 0) // JBF 20040116: added PLUTOPAK so we don't select grower with v1.3d
{
j = SHRINKER_WEAPON;
p->subweapon &= ~(1<<GROW_WEAPON);
break;
}
else // JBF: shrinker with no ammo, but grower with ammo, switch to grow
if (PLUTOPAK && k == SHRINKER_WEAPON && p->ammo_amount[SHRINKER_WEAPON] == 0 && p->gotweapon[SHRINKER_WEAPON] && p->ammo_amount[GROW_WEAPON] > 0) // JBF 20040116: added PLUTOPAK so we don't select grower with v1.3d
if (PLUTOPAK && k == SHRINKER_WEAPON && p->ammo_amount[SHRINKER_WEAPON] == 0 &&
(p->gotweapon & (1<<SHRINKER_WEAPON)) && p->ammo_amount[GROW_WEAPON] > 0) // JBF 20040116: added PLUTOPAK so we don't select grower with v1.3d
{
j = GROW_WEAPON;
p->subweapon |= (1<<GROW_WEAPON);
@ -2789,7 +2782,7 @@ CHECKINV1:
Gv_SetVar(g_iWorksLikeVarID,aplWeaponWorksLike[p->curr_weapon][snum],p->i,snum);
Gv_SetVar(g_iWeaponVarID,j, p->i, snum);
aGameVars[g_iReturnVarID].val.lValue = j;
X_OnEvent(EVENT_SELECTWEAPON,p->i,snum, -1);
VM_OnEvent(EVENT_SELECTWEAPON,p->i,snum, -1);
j = aGameVars[g_iReturnVarID].val.lValue;
if ((int32_t)j != -1 && j <= MAX_WEAPONS)
{
@ -2800,7 +2793,7 @@ CHECKINV1:
{
if (sprite[k].picnum == HEAVYHBOMB && sprite[k].owner == p->i)
{
p->gotweapon[HANDBOMB_WEAPON] = 1;
p->gotweapon |= (1<<HANDBOMB_WEAPON);
j = HANDREMOTE_WEAPON;
break;
}
@ -2841,7 +2834,7 @@ CHECKINV1:
sb_snum |= BIT(SK_HOLSTER);
p->weapon_pos = -9;
}
else if ((int32_t)j >= 0 && p->gotweapon[j] && (uint32_t)p->curr_weapon != j)
else if ((int32_t)j >= 0 && (p->gotweapon & (1<<j)) && (uint32_t)p->curr_weapon != j)
switch (j)
{
case PISTOL_WEAPON:
@ -2870,7 +2863,7 @@ CHECKINV1:
break;
case HANDBOMB_WEAPON:
case TRIPBOMB_WEAPON:
if (p->ammo_amount[j] > 0 && p->gotweapon[j])
if (p->ammo_amount[j] > 0 && (p->gotweapon & (1<<j)))
P_AddWeapon(p, j);
break;
}
@ -2883,7 +2876,7 @@ CHECKINV1:
if (p->holoduke_on == -1)
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_HOLODUKEON,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_HOLODUKEON,g_player[snum].ps->i,snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue == 0)
{
if (p->inv_amount[GET_HOLODUKE] > 0)
@ -2892,8 +2885,8 @@ CHECKINV1:
if (p->cursectnum > -1)
{
p->holoduke_on = i = A_InsertSprite(p->cursectnum,p->posx,p->posy,
p->posz+(30<<8),APLAYER,-64,0,0,p->ang,0,0,-1,10);
p->holoduke_on = i = A_InsertSprite(p->cursectnum,p->pos.x,p->pos.y,
p->pos.z+(30<<8),APLAYER,-64,0,0,p->ang,0,0,-1,10);
T4 = T5 = 0;
SP = snum;
sprite[i].extra = 0;
@ -2907,7 +2900,7 @@ CHECKINV1:
else
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_HOLODUKEOFF,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_HOLODUKEOFF,g_player[snum].ps->i,snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue == 0)
{
A_PlaySound(TELEPORTER,p->holoduke_on);
@ -2920,7 +2913,7 @@ CHECKINV1:
if (TEST_SYNC_KEY(sb_snum, SK_MEDKIT))
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_USEMEDKIT,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_USEMEDKIT,g_player[snum].ps->i,snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue == 0)
{
if (p->inv_amount[GET_FIRSTAID] > 0 && sprite[p->i].extra < p->max_player_health)
@ -2947,7 +2940,7 @@ CHECKINV1:
if (TEST_SYNC_KEY(sb_snum, SK_JETPACK) && p->newowner == -1)
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_USEJETPACK,g_player[snum].ps->i,snum, -1);
VM_OnEvent(EVENT_USEJETPACK,g_player[snum].ps->i,snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue == 0)
{
if (p->inv_amount[GET_JETPACK] > 0)
@ -2970,7 +2963,7 @@ CHECKINV1:
else
{
p->hard_landing = 0;
p->poszv = 0;
p->posvel.z = 0;
A_PlaySound(DUKE_JETPACK_OFF,p->i);
S_StopEnvSound(DUKE_JETPACK_IDLE,p->i);
S_StopEnvSound(DUKE_JETPACK_ON,p->i);
@ -2984,7 +2977,7 @@ CHECKINV1:
if (TEST_SYNC_KEY(sb_snum, SK_TURNAROUND) && p->one_eighty_count == 0)
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_TURNAROUND,p->i,snum, -1);
VM_OnEvent(EVENT_TURNAROUND,p->i,snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue == 0)
{
p->one_eighty_count = -1024;
@ -3027,7 +3020,7 @@ static int32_t hitawall(DukePlayer_t *p,int16_t *hitw)
*hitw = hitinfo.hitwall;
return (FindDistance2D(hitinfo.pos.x-p->posx,hitinfo.pos.y-p->posy));
return (FindDistance2D(hitinfo.pos.x-p->pos.x,hitinfo.pos.y-p->pos.y));
}
@ -3087,7 +3080,7 @@ void P_CheckSectors(int32_t snum)
if (TEST_SYNC_KEY(g_player[snum].sync->bits, SK_OPEN))
{
aGameVars[g_iReturnVarID].val.lValue = 0;
X_OnEvent(EVENT_USE, p->i, snum, -1);
VM_OnEvent(EVENT_USE, p->i, snum, -1);
if (aGameVars[g_iReturnVarID].val.lValue != 0)
g_player[snum].sync->bits &= ~BIT(SK_OPEN);
}
@ -3141,17 +3134,17 @@ void P_CheckSectors(int32_t snum)
}
if (p->newowner >= 0)
neartag(p->oposx,p->oposy,p->oposz,sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,1);
neartag(p->opos.x,p->opos.y,p->opos.z,sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,1);
else
{
neartag(p->posx,p->posy,p->posz,sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,1);
neartag(p->pos.x,p->pos.y,p->pos.z,sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,1);
if (neartagsprite == -1 && neartagwall == -1 && neartagsector == -1)
neartag(p->posx,p->posy,p->posz+(8<<8),sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,1);
neartag(p->pos.x,p->pos.y,p->pos.z+(8<<8),sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,1);
if (neartagsprite == -1 && neartagwall == -1 && neartagsector == -1)
neartag(p->posx,p->posy,p->posz+(16<<8),sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,1);
neartag(p->pos.x,p->pos.y,p->pos.z+(16<<8),sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,1);
if (neartagsprite == -1 && neartagwall == -1 && neartagsector == -1)
{
neartag(p->posx,p->posy,p->posz+(16<<8),sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,3);
neartag(p->pos.x,p->pos.y,p->pos.z+(16<<8),sprite[p->i].sectnum,p->oang,&neartagsector,&neartagwall,&neartagsprite,&neartaghitdist,1280L,3);
if (neartagsprite >= 0)
{
switch (DynamicTileMap[sprite[neartagsprite].picnum])
@ -3228,30 +3221,28 @@ void P_CheckSectors(int32_t snum)
case NUKEBUTTON__STATIC:
hitawall(p,&j);
if (j >= 0 && wall[j].overpicnum == 0)
if (ActorExtra[neartagsprite].temp_data[0] == 0)
if (actor[neartagsprite].t_data[0] == 0)
{
if (ud.noexits && (g_netServer || ud.multimode > 1))
{
// NUKEBUTTON frags the player
ActorExtra[p->i].picnum = NUKEBUTTON;
ActorExtra[p->i].extra = 250;
actor[p->i].picnum = NUKEBUTTON;
actor[p->i].extra = 250;
}
else
{
ActorExtra[neartagsprite].temp_data[0] = 1;
actor[neartagsprite].t_data[0] = 1;
sprite[neartagsprite].owner = p->i;
p->buttonpalette = sprite[neartagsprite].pal;
if (p->buttonpalette)
ud.secretlevel = sprite[neartagsprite].lotag;
else ud.secretlevel = 0;
ud.secretlevel =
(p->buttonpalette = sprite[neartagsprite].pal) ? sprite[neartagsprite].lotag : 0;
}
}
return;
case WATERFOUNTAIN__STATIC:
if (ActorExtra[neartagsprite].temp_data[0] != 1)
if (actor[neartagsprite].t_data[0] != 1)
{
ActorExtra[neartagsprite].temp_data[0] = 1;
actor[neartagsprite].t_data[0] = 1;
sprite[neartagsprite].owner = p->i;
if (sprite[p->i].extra < p->max_player_health)
@ -3265,10 +3256,10 @@ void P_CheckSectors(int32_t snum)
case PLUG__STATIC:
A_PlaySound(SHORT_CIRCUIT,p->i);
sprite[p->i].extra -= 2+(krand()&3);
p->pals[0] = 48;
p->pals[1] = 48;
p->pals[2] = 64;
p->pals_time = 32;
p->pals.r = 48;
p->pals.g = 48;
p->pals.b = 64;
p->pals.f = 32;
break;
case VIEWSCREEN__STATIC:
@ -3304,11 +3295,11 @@ CLEARCAMERAS:
if (i < 0)
{
Bmemcpy(p, &p->oposx, sizeof(vec3_t));
Bmemcpy(p, &p->opos.x, sizeof(vec3_t));
p->ang = p->oang;
p->newowner = -1;
updatesector(p->posx,p->posy,&p->cursectnum);
updatesector(p->pos.x,p->pos.y,&p->cursectnum);
P_UpdateScreenPal(p);

View file

@ -318,9 +318,12 @@ int32_t S_LoadSound(uint32_t num)
}
g_sounds[num].soundsiz = l = kfilelength(fp);
while(mutex_lock(&cachemutex));
g_soundlocks[num] = 200;
allocache((intptr_t *)&g_sounds[num].ptr, l, (char *)&g_soundlocks[num]);
mutex_unlock(&cachemutex);
l = kread(fp, g_sounds[num].ptr , l);
kclose(fp);
@ -347,8 +350,10 @@ int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos)
{
if (g_sounds[num].num < MAXSOUNDINSTANCES && i >= 0 && i < MAXSPRITES)
{
while(mutex_lock(&cachemutex));
while (j < MAXSOUNDINSTANCES && g_sounds[num].SoundOwner[j].voice > 0)
j++;
mutex_unlock(&cachemutex);
if (j >= MAXSOUNDINSTANCES)
{
@ -358,9 +363,12 @@ int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos)
if ((voice = S_PlaySound(num)) >= FX_Ok)
{
while(mutex_lock(&cachemutex));
g_sounds[num].SoundOwner[j].i = i;
g_sounds[num].num++;
return (g_sounds[num].SoundOwner[j].voice = voice);
g_sounds[num].SoundOwner[j].voice = voice;
mutex_unlock(&cachemutex);
return voice;
}
return -1;
@ -439,9 +447,14 @@ int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos)
if (S_LoadSound(num) == 0)
return -1;
}
else if (g_soundlocks[num] < 200)
else
{
while(mutex_lock(&cachemutex));
if (g_soundlocks[num] < 200)
g_soundlocks[num] = 200;
else g_soundlocks[num]++;
mutex_unlock(&cachemutex);
}
if (g_sounds[num].m&16) sndist = 0;
@ -450,15 +463,19 @@ int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos)
j = 0;
while(mutex_lock(&cachemutex));
while (j < MAXSOUNDINSTANCES && g_sounds[num].SoundOwner[j].voice > 0)
j++;
if (j >= MAXSOUNDINSTANCES)
{
g_soundlocks[num]--;
mutex_unlock(&cachemutex);
return -1;
}
mutex_unlock(&cachemutex);
if (g_sounds[num].m&1)
{
if (g_sounds[num].num > 0) return -1;
@ -472,14 +489,19 @@ int32_t S_PlaySound3D(int32_t num, int32_t i, const vec3_t *pos)
(num * MAXSOUNDINSTANCES) + j);
}
while(mutex_lock(&cachemutex));
if (voice >= FX_Ok)
{
g_sounds[num].SoundOwner[j].i = i;
g_sounds[num].num++;
return (g_sounds[num].SoundOwner[j].voice = voice);
g_sounds[num].SoundOwner[j].voice = voice;
mutex_unlock(&cachemutex);
return voice;
}
g_soundlocks[num]--;
mutex_unlock(&cachemutex);
return -1;
}
@ -508,9 +530,14 @@ int32_t S_PlaySound(int32_t num)
if (S_LoadSound(num) == 0)
return -1;
}
else if (g_soundlocks[num] < 200)
else
{
while(mutex_lock(&cachemutex));
if (g_soundlocks[num] < 200)
g_soundlocks[num] = 200;
else g_soundlocks[num]++;
mutex_unlock(&cachemutex);
}
voice = (g_sounds[num].m&1) ?
FX_PlayLoopedAuto(g_sounds[num].ptr, g_sounds[num].soundsiz, 0, -1,
@ -519,7 +546,9 @@ int32_t S_PlaySound(int32_t num)
if (voice < FX_Ok)
{
while(mutex_lock(&cachemutex));
g_soundlocks[num]--;
mutex_unlock(&cachemutex);
return -1;
}
@ -537,12 +566,21 @@ void S_StopSound(int32_t num)
if (num < 0 || num > g_maxSoundPos || g_sounds[num].num <= 0)
return;
retry:
{
int32_t j=MAXSOUNDINSTANCES-1;
while(mutex_lock(&cachemutex));
for (; j>=0; j--)
{
if (g_sounds[num].SoundOwner[j].voice)
{
mutex_unlock(&cachemutex);
FX_StopSound(g_sounds[num].SoundOwner[j].voice);
goto retry;
}
}
mutex_unlock(&cachemutex);
}
}
@ -551,16 +589,25 @@ void S_StopEnvSound(int32_t num,int32_t i)
if (num < 0 || num > g_maxSoundPos || g_sounds[num].num <= 0)
return;
retry:
{
int32_t j=MAXSOUNDINSTANCES-1;
while(mutex_lock(&cachemutex));
for (; j>=0; j--)
{
if (g_sounds[num].SoundOwner[j].i == i && g_sounds[num].SoundOwner[j].voice)
{
mutex_unlock(&cachemutex);
FX_StopSound(g_sounds[num].SoundOwner[j].voice);
goto retry;
}
}
mutex_unlock(&cachemutex);
}
}
void S_Pan3D(void)
void S_Update(void)
{
vec3_t *s, *c;
int32_t sndist,sndang,ca,j,k,i,cs;
@ -582,6 +629,7 @@ void S_Pan3D(void)
j = g_maxSoundPos;
while(mutex_lock(&cachemutex));
do
{
for (k=MAXSOUNDINSTANCES-1; k>=0; k--)
@ -628,10 +676,13 @@ void S_Pan3D(void)
if (sndist < ((255-LOUDESTVOLUME)<<6))
sndist = ((255-LOUDESTVOLUME)<<6);
mutex_unlock(&cachemutex);
FX_Pan3D(g_sounds[j].SoundOwner[k].voice, sndang>>4, sndist>>6);
mutex_lock(&cachemutex);
}
}
while (j--);
mutex_unlock(&cachemutex);
}
void S_Callback(uint32_t num)
@ -639,11 +690,15 @@ void S_Callback(uint32_t num)
if ((int32_t)num == MUSIC_ID)
return;
while(mutex_lock(&cachemutex));
// negative index is RTS playback
if ((int32_t)num < 0)
{
if (lumplockbyte[-(int32_t)num] >= 200)
lumplockbyte[-(int32_t)num]--;
mutex_unlock(&cachemutex);
return;
}
@ -655,9 +710,9 @@ void S_Callback(uint32_t num)
{
int32_t i = g_sounds[num].SoundOwner[j].i;
// MUSICANDSFX uses temp_data[0] to control restarting the sound
// MUSICANDSFX uses t_data[0] to control restarting the sound
if (sprite[i].picnum == MUSICANDSFX && sector[sprite[i].sectnum].lotag < 3 && sprite[i].lotag < 999)
ActorExtra[i].temp_data[0] = 0;
actor[i].t_data[0] = 0;
g_sounds[num].SoundOwner[j].i = -1;
g_sounds[num].SoundOwner[j].voice = 0;
@ -666,12 +721,14 @@ void S_Callback(uint32_t num)
}
}
g_soundlocks[num]--;
mutex_unlock(&cachemutex);
}
void S_ClearSoundLocks(void)
{
int32_t i;
while(mutex_lock(&cachemutex));
for (i=g_maxSoundPos; i >= 0 ; i--)
if (g_soundlocks[i] >= 200)
g_soundlocks[i] = 199;
@ -679,6 +736,7 @@ void S_ClearSoundLocks(void)
for (i=0; i<11; i++)
if (lumplockbyte[i] >= 200)
lumplockbyte[i] = 199;
mutex_unlock(&cachemutex);
}
int32_t A_CheckSoundPlaying(int32_t i, int32_t num)

View file

@ -381,7 +381,7 @@ void S_StopEnvSound(int32_t num,int32_t i)
}
}
void S_Pan3D(void)
void S_Update(void)
{
int32_t sndist, sx, sy, sz, cx, cy, cz;
int32_t sndang,ca,j,k,i,cs;

View file

@ -31,7 +31,7 @@ void S_PlaySound(int32_t);
int32_t A_PlaySound(uint32_t num, int32_t i);
void S_StopSound(int32_t num);
void S_StopEnvSound(int32_t num,int32_t i);
void S_Pan3D(void);
void S_Update(void);
int32_t A_CheckSoundPlaying(int32_t i, int32_t num);
int32_t S_CheckSoundPlaying(int32_t i, int32_t num);
void S_ClearSoundLocks(void);