win32 stuck input fix among other minor changes

git-svn-id: https://svn.eduke32.com/eduke32@1642 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
terminx 2010-05-16 22:53:08 +00:00
parent 9d27282ccd
commit 65b29ab092
19 changed files with 198 additions and 103 deletions

View file

@ -110,7 +110,7 @@ void setmousepresscallback(void (*callback)(int32_t,int32_t));
void setjoypresscallback(void (*callback)(int32_t,int32_t));
const char *getkeyname(int32_t num);
const char *getjoyname(int32_t what, int32_t num); // what: 0=axis, 1=button, 2=hat
char *strtolower(char *str, int32_t len);
char *Bstrtolower(char *str);
char bgetchar(void);
#define bkbhit() (keyasciififoplc != keyasciififoend)

View file

@ -73,20 +73,20 @@ extern "C" {
// so we give up on __intX for them.
#if (_MSC_VER < 1300)
typedef signed char int8_t;
typedef short int16_t;
typedef int int32_t;
typedef signed short int16_t;
typedef signed int int32_t;
typedef unsigned char uint8_t;
typedef unsigned short uint16_t;
typedef unsigned int uint32_t;
#else
typedef signed __int8 int8_t;
typedef __int16 int16_t;
typedef __int32 int32_t;
typedef signed __int16 int16_t;
typedef signed __int32 int32_t;
typedef unsigned __int8 uint8_t;
typedef unsigned __int16 uint16_t;
typedef unsigned __int32 uint32_t;
#endif
typedef __int64 int64_t;
typedef signed __int64 int64_t;
typedef unsigned __int64 uint64_t;
@ -112,10 +112,10 @@ typedef uint64_t uint_fast64_t;
// 7.18.1.4 Integer types capable of holding object pointers
#ifdef _WIN64 // [
typedef __int64 intptr_t;
typedef signed __int64 intptr_t;
typedef unsigned __int64 uintptr_t;
#else // _WIN64 ][
typedef _W64 int intptr_t;
typedef _W64 signed int intptr_t;
typedef _W64 unsigned int uintptr_t;
#endif // _WIN64 ]

View file

@ -3,8 +3,9 @@
#include "compat.h"
void RI_PollDevices();
int32_t RI_CaptureInput(int32_t grab, HWND target);
void RI_PollDevices(BOOL loop);
void RI_ProcessMessage(MSG *msg);
BOOL RI_CaptureInput(BOOL grab, HWND target);
#ifndef VK_LBUTTON
#define VK_LBUTTON 0x01

View file

@ -52,16 +52,23 @@ struct glinfo_t glinfo =
};
#endif
char *strtolower(char *str, int32_t len)
char *Bstrtolower(char *str)
{
int32_t i = 0;
if (!str) return NULL;
{
int32_t i = 0, len = Bstrlen(str);
if (len <= 0) return str;
do
{
*(str+i) = Btolower(*(str+i));
i++;
}
while (--len);
}
return str;
}

View file

@ -323,6 +323,26 @@ int32_t findfrompath(const char *fn, char **where)
*where = Bstrdup(fn);
return 0;
}
else
{
char *tfn = Bstrtolower(Bstrdup(fn));
if (access(tfn, F_OK) >= 0)
{
*where = tfn;
return 0;
}
Bstrupr(tfn);
if (access(tfn, F_OK) >= 0)
{
*where = tfn;
return 0;
}
Bfree(tfn);
}
}
for (pfn = (char*)fn; toupperlookup[*pfn] == '/'; pfn++);
@ -348,6 +368,8 @@ int32_t findfrompath(const char *fn, char **where)
for (sp = searchpathhead; sp; sp = sp->next)
{
char *tfn = Bstrdup(ffn);
strcpy(pfn, sp->path);
strcat(pfn, ffn);
//initprintf("Trying %s\n", pfn);
@ -355,8 +377,35 @@ int32_t findfrompath(const char *fn, char **where)
{
*where = pfn;
Bfree(ffn);
Bfree(tfn);
return 0;
}
//Check with all lowercase
strcpy(pfn, sp->path);
Bstrtolower(tfn);
strcat(pfn, tfn);
if (access(pfn, F_OK) >= 0)
{
*where = pfn;
Bfree(ffn);
Bfree(tfn);
return 0;
}
//Check again with uppercase
strcpy(pfn, sp->path);
Bstrupr(tfn);
strcat(pfn, tfn);
if (access(pfn, F_OK) >= 0)
{
*where = pfn;
Bfree(ffn);
Bfree(tfn);
return 0;
}
Bfree(tfn);
}
Bfree(pfn); Bfree(ffn);
return -1;

View file

@ -334,13 +334,11 @@ int32_t loadgldriver(const char *driver)
#endif
}
initprintf("Loading %s\n",driver);
#if defined RENDERTYPESDL
if (SDL_GL_LoadLibrary(driver)) return -1;
if (SDL_GL_LoadLibrary(driver)) goto fail;
#elif defined _WIN32
hGLDLL = LoadLibrary(driver);
if (!hGLDLL) return -1;
if (!hGLDLL) goto fail;
#endif
gldriver = Bstrdup(driver);
@ -471,6 +469,10 @@ int32_t loadgldriver(const char *driver)
if (err) unloadgldriver();
return err;
fail:
initprintf("Failed loading \"%s\"\n",driver);
return -1;
}
int32_t loadglextensions(void)
@ -921,14 +923,12 @@ int32_t loadglulibrary(const char *driver)
#endif
}
initprintf("Loading %s\n",driver);
#if defined _WIN32
hGLUDLL = LoadLibrary(driver);
if (!hGLUDLL) return -1;
if (!hGLUDLL) goto fail;
#else
gluhandle = dlopen(driver, RTLD_NOW|RTLD_GLOBAL);
if (!gluhandle) return -1;
if (!gluhandle) goto fail;
#endif
glulibrary = Bstrdup(driver);
@ -951,6 +951,10 @@ int32_t loadglulibrary(const char *driver)
if (err) unloadglulibrary();
return err;
fail:
initprintf("Failed loading \"%s\"\n",driver);
return -1;
}
int32_t unloadglulibrary(void)

View file

@ -1816,7 +1816,7 @@ static symbol_t *addnewsymbol(const char *name)
}
}
hash_add(&h_osd, name, osdnumsymbols);
name = strtolower(Bstrdup(name), Bstrlen(name));
name = Bstrtolower(Bstrdup(name));
hash_add(&h_osd, name, osdnumsymbols);
Bfree((void *)name);
osdsymbptrs[osdnumsymbols++] = newsymb;
@ -1857,7 +1857,7 @@ static symbol_t *findexactsymbol(const char *name)
}
// try it again
lname = strtolower(lname, Bstrlen(name));
Bstrtolower(lname);
i = hash_find(&h_osd,lname);
Bfree(lname);

View file

@ -80,7 +80,6 @@ static inline void RI_ProcessMouse(const RAWMOUSE* rmouse)
static inline void RI_ProcessKeyboard(const RAWKEYBOARD* rkbd)
{
uint8_t key = rkbd->MakeCode, VKey = rkbd->VKey;
uint8_t buf[2];
// for some reason rkbd->MakeCode is wrong for these
// even though rkbd->VKey is right...
@ -147,6 +146,10 @@ static inline void RI_ProcessKeyboard(const RAWKEYBOARD* rkbd)
if (rkbd->Flags & RI_KEY_BREAK) return;
if (((keyasciififoend+1)&(KEYFIFOSIZ-1)) == keyasciififoplc) return;
if ((keyasciififoend - keyasciififoplc) > 0) return;
{
uint8_t buf[2];
if (ToAscii(VKey, key, &KeyboardState[0], (LPWORD)&buf[0], 0) != 1) return;
if ((OSD_OSDKey() < 128) && (Btolower(scantoasc[OSD_OSDKey()]) == Btolower(buf[0]))) return;
if (OSD_HandleChar(buf[0]) == 0) return;
@ -154,9 +157,10 @@ static inline void RI_ProcessKeyboard(const RAWKEYBOARD* rkbd)
keyasciififo[keyasciififoend] = buf[0];
keyasciififoend = ((keyasciififoend+1)&(KEYFIFOSIZ-1));
}
}
// keyboard is always captured regardless of what we tell this function
int32_t RI_CaptureInput(int32_t grab, HWND target)
BOOL RI_CaptureInput(BOOL grab, HWND target)
{
RAWINPUTDEVICE raw[2];
@ -175,7 +179,25 @@ int32_t RI_CaptureInput(int32_t grab, HWND target)
return (RegisterRawInputDevices(raw, 2, sizeof(raw[0])) == FALSE);
}
void RI_PollDevices()
void RI_ProcessMessage(MSG *msg)
{
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);
}
void RI_PollDevices(BOOL loop)
{
int32_t i;
MSG msg;
@ -193,23 +215,8 @@ void RI_PollDevices()
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);
}
while (loop && PeekMessage(&msg, 0, WM_INPUT, WM_INPUT, PM_REMOVE | PM_QS_INPUT))
RI_ProcessMessage(&msg);
if (mousegrab && appactive)
{

View file

@ -491,7 +491,7 @@ static int32_t set_windowpos(const osdfuncparm_t *parm)
// initsystem() -- init systems
//
static void print_os_version(void)
static void printsysversion(void)
{
const char *ver = "";
@ -528,7 +528,7 @@ static void print_os_version(void)
break;
}
initprintf("OS: Windows %s (%lu.%lu.%lu) %s\n", ver, osv.dwMajorVersion, osv.dwMinorVersion,
initprintf("Running under Windows %s (build %lu.%lu.%lu) %s\n", ver, osv.dwMajorVersion, osv.dwMinorVersion,
osv.dwPlatformId == VER_PLATFORM_WIN32_NT ? osv.dwBuildNumber : osv.dwBuildNumber&0xffff,
osv.szCSDVersion);
@ -559,7 +559,7 @@ int32_t initsystem(void)
frameplace=0;
lockcount=0;
print_os_version();
printsysversion();
#if defined(USE_OPENGL) && defined(POLYMOST)
if (loadgldriver(getenv("BUILD_GLDRV")))
@ -664,7 +664,7 @@ int32_t handleevents(void)
//if (frameplace && fullscreen) printf("Offscreen buffer is locked!\n");
RI_PollDevices();
RI_PollDevices(TRUE);
if (bDInputInited)
DI_PollJoysticks();
@ -676,6 +676,13 @@ int32_t handleevents(void)
if (startwin_idle((void*)&msg) > 0) continue;
if (msg.message == WM_INPUT)
{
RI_PollDevices(FALSE);
RI_ProcessMessage(&msg);
continue;
}
TranslateMessage(&msg);
DispatchMessage(&msg);
}
@ -829,9 +836,10 @@ inline void idle_waitevent(void)
if (PeekMessage(&msg, 0, WM_INPUT, WM_INPUT, PM_QS_INPUT))
{
RI_PollDevices();
RI_PollDevices(TRUE);
return;
}
Sleep(10);
}
while (--i);

View file

@ -9589,7 +9589,9 @@ int32_t ExtInit(void)
#if defined(POLYMOST) && defined(USE_OPENGL)
glusetexcache = -1;
if (Bstrcmp(setupfilename, "mapster32.cfg"))
initprintf("Using config file '%s'.\n",setupfilename);
if (loadsetup(setupfilename) < 0) initprintf("Configuration file not found, using defaults.\n"), rv = 1;
if (glusetexcache == -1)

View file

@ -61,7 +61,7 @@ int32_t CONFIG_FunctionNameToNum(char * func)
if (i < 0)
{
char *str = strtolower(Bstrdup(func),Bstrlen(func));
char *str = Bstrtolower(Bstrdup(func));
i = hash_find(&h_gamefuncs,str);
Bfree(str);

View file

@ -124,7 +124,7 @@ extern int32_t g_scriptVersion, g_Shareware, g_gameType;
#include "namesdyn.h"
#define TICRATE (120)
#define GAMETICSPERSEC 26
#define GAMETICSPERSEC 26 // used as a constant to satisfy all of the calculations written with ticrate = 26 in mind
#define TICSPERFRAME 4 // this used to be TICRATE/GAMETICSPERSEC which was 4.615~ truncated to 4 by integer division
#define REALGAMETICSPERSEC 30

View file

@ -4884,7 +4884,7 @@ int32_t drawing_ror = 0;
void G_SE40(int32_t smoothratio)
{
if (getrendermode() != 4 && ror_sprite != -1)
if (ror_sprite != -1)
{
int32_t x, y, z;
int16_t sect;
@ -4956,6 +4956,11 @@ void G_SE40(int32_t smoothratio)
}
}
#ifdef POLYMER
if (getrendermode() == 4)
polymer_setanimatesprites(G_DoSpriteAnimations, ud.camera.x, ud.camera.y, ud.cameraang, smoothratio);
#endif
drawrooms(sprite[sprite2].x + x, sprite[sprite2].y + y,
z + renderz, ud.cameraang, ud.camerahoriz, sect);
drawing_ror = 1 + level;
@ -5040,7 +5045,6 @@ void G_DrawRooms(int32_t snum, int32_t smoothratio)
ud.camerasect = p->cursectnum;
G_DoInterpolations(smoothratio);
G_AnimateCamSprite();
if (ud.camerasprite >= 0)
@ -5053,15 +5057,17 @@ void G_DrawRooms(int32_t snum, int32_t smoothratio)
ud.cameraang = actor[ud.camerasprite].tempang+
mulscale16((int32_t)(((s->ang+1024-actor[ud.camerasprite].tempang)&2047)-1024),smoothratio);
G_SE40(smoothratio);
#ifdef POLYMER
if (getrendermode() == 4)
polymer_setanimatesprites(G_DoSpriteAnimations, s->x, s->y, ud.cameraang, smoothratio);
#endif
G_SE40(smoothratio);
drawrooms(s->x,s->y,s->z-(4<<8),ud.cameraang,s->yvel,s->sectnum);
G_DoSpriteAnimations(s->x,s->y,ud.cameraang,smoothratio);
drawmasks();
}
else
@ -5231,13 +5237,12 @@ void G_DrawRooms(int32_t snum, int32_t smoothratio)
gotpic[MIRROR>>3] &= ~(1<<(MIRROR&7));
}
G_SE40(smoothratio);
#ifdef POLYMER
if (getrendermode() == 4)
{
polymer_setanimatesprites(G_DoSpriteAnimations, ud.camera.x,ud.camera.y,ud.cameraang,smoothratio);
}
#endif
G_SE40(smoothratio);
drawrooms(ud.camera.x,ud.camera.y,ud.camera.z,ud.cameraang,ud.camerahoriz,ud.camerasect);
@ -5273,6 +5278,7 @@ void G_DrawRooms(int32_t snum, int32_t smoothratio)
}
G_DoSpriteAnimations(ud.camera.x,ud.camera.y,ud.cameraang,smoothratio);
drawing_ror = 0;
drawmasks();
@ -11083,7 +11089,7 @@ void app_main(int32_t argc,const char **argv)
int32_t i = 0, j;
char cwd[BMAX_PATH];
// extern char datetimestring[];
ENetCallbacks callbacks = { Bmalloc, Bfree, NULL };
ENetCallbacks callbacks = { Bmalloc, Bfree, NULL, NULL };
#ifdef RENDERTYPEWIN
if (argc > 1)
@ -11222,7 +11228,7 @@ void app_main(int32_t argc,const char **argv)
hash_init(&h_gamefuncs);
for (i=NUMGAMEFUNCTIONS-1; i>=0; i--)
{
char *str = strtolower(Bstrdup(gamefunctions[i]),Bstrlen(gamefunctions[i]));
char *str = Bstrtolower(Bstrdup(gamefunctions[i]));
hash_add(&h_gamefuncs,gamefunctions[i],i);
hash_add(&h_gamefuncs,str,i);
Bfree(str);
@ -11291,6 +11297,7 @@ void app_main(int32_t argc,const char **argv)
exit(1);
}
if (Bstrcmp(setupfilename, SETUPFILENAME))
initprintf("Using config file '%s'.\n",setupfilename);
ScanGroups();
@ -11465,7 +11472,7 @@ CLEAN_DIRECTORY:
if (i == -1)
initprintf("Warning: could not find main group file '%s'!\n",g_grpNamePtr);
else
initprintf("Using group file '%s' as main group file.\n", g_grpNamePtr);
initprintf("Using '%s' as main group file.\n", g_grpNamePtr);
if (!g_noAutoLoad && !ud.config.NoAutoLoad)
{

View file

@ -1663,13 +1663,13 @@ static void C_GetNextVarType(int32_t type)
/*initprintf("found xxx label of '%s'\n", label+(g_numLabels<<6));*/
if (i == g_iSpriteVarID)
lLabelID=C_GetLabelNameOffset(&actorH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameOffset(&actorH,Bstrtolower(label+(g_numLabels<<6)));
else if (i == g_iSectorVarID)
lLabelID=C_GetLabelNameOffset(&sectorH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameOffset(&sectorH,Bstrtolower(label+(g_numLabels<<6)));
else if (i == g_iWallVarID)
lLabelID=C_GetLabelNameOffset(&wallH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameOffset(&wallH,Bstrtolower(label+(g_numLabels<<6)));
else if (i == g_iPlayerVarID)
lLabelID=C_GetLabelNameOffset(&playerH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameOffset(&playerH,Bstrtolower(label+(g_numLabels<<6)));
else if (i == g_iActorVarID)
lLabelID=GetDefID(label+(g_numLabels<<6));
@ -2174,7 +2174,7 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
//printf("found xxx label of '%s'\n", label+(g_numLabels<<6));
lLabelID=C_GetLabelNameOffset(&projectileH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameOffset(&projectileH,Bstrtolower(label+(g_numLabels<<6)));
//printf("LabelID is %d\n",lLabelID);
if (lLabelID == -1)
{
@ -3153,7 +3153,7 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
//printf("found xxx label of '%s'\n", label+(g_numLabels<<6));
lLabelID=C_GetLabelNameID(SectorLabels,&sectorH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameID(SectorLabels,&sectorH,Bstrtolower(label+(g_numLabels<<6)));
if (lLabelID == -1)
{
@ -3288,7 +3288,7 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
//printf("found xxx label of '%s'\n", label+(g_numLabels<<6));
lLabelID=C_GetLabelNameID(WallLabels,&wallH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameID(WallLabels,&wallH,Bstrtolower(label+(g_numLabels<<6)));
if (lLabelID == -1)
{
@ -3355,7 +3355,7 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
//printf("found xxx label of '%s'\n", label+(g_numLabels<<6));
lLabelID=C_GetLabelNameOffset(&playerH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameOffset(&playerH,Bstrtolower(label+(g_numLabels<<6)));
//printf("LabelID is %d\n",lLabelID);
if (lLabelID == -1)
{
@ -3436,7 +3436,7 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
//printf("found xxx label of '%s'\n", label+(g_numLabels<<6));
lLabelID=C_GetLabelNameOffset(&inputH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameOffset(&inputH,Bstrtolower(label+(g_numLabels<<6)));
//printf("LabelID is %d\n",lLabelID);
if (lLabelID == -1)
{
@ -3487,7 +3487,7 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
//printf("found xxx label of '%s'\n", label+(g_numLabels<<6));
lLabelID=C_GetLabelNameID(UserdefsLabels,&userdefH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameID(UserdefsLabels,&userdefH,Bstrtolower(label+(g_numLabels<<6)));
if (lLabelID == -1)
{
@ -3691,7 +3691,7 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
//printf("found xxx label of '%s'\n", label+(g_numLabels<<6));
lLabelID=C_GetLabelNameOffset(&actorH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameOffset(&actorH,Bstrtolower(label+(g_numLabels<<6)));
//printf("LabelID is %d\n",lLabelID);
if (lLabelID == -1)
{
@ -3770,7 +3770,7 @@ static int32_t C_ParseCommand(void)
C_GetNextLabelName();
//printf("found xxx label of '%s'\n", label+(g_numLabels<<6));
lLabelID=C_GetLabelNameOffset(&tspriteH,strtolower(label+(g_numLabels<<6),Bstrlen(label+(g_numLabels<<6))));
lLabelID=C_GetLabelNameOffset(&tspriteH,Bstrtolower(label+(g_numLabels<<6)));
//printf("LabelID is %d\n",lLabelID);
if (lLabelID == -1)
{
@ -5118,7 +5118,7 @@ repeatcase:
keydefaults[j*3][i] = '\0';
hash_add(&h_gamefuncs,gamefunctions[j],j);
{
char *str = strtolower(Bstrdup(gamefunctions[j]),Bstrlen(gamefunctions[j]));
char *str = Bstrtolower(Bstrdup(gamefunctions[j]));
hash_add(&h_gamefuncs,str,j);
Bfree(str);
}
@ -5976,7 +5976,6 @@ static void C_InitProjectiles(void)
int8_t shade, xrepeat, yrepeat, pal; // 4b
int8_t velmult; // 1b
uint8_t clipdist; // 1b
int8_t filler[6]; // 6b
} defaultprojectile_t;
defaultprojectile_t DefaultProjectile =
@ -5986,7 +5985,7 @@ static void C_InitProjectiles(void)
};
// this will only happen if I forget to update this function...
if (sizeof(projectile_t) != sizeof(DefaultProjectile) || offsetof(projectile_t, filler) != offsetof(defaultprojectile_t, filler))
if (offsetof(projectile_t, filler) != sizeof(DefaultProjectile))
G_GameExit("ERROR: C_InitProjectiles(): projectile_t mismatch!");
for (i=MAXTILES-1; i>=0; i--)

View file

@ -682,15 +682,18 @@ void __fastcall Gv_SetVar(register int32_t id, register int32_t lValue, register
}
badvarid:
OSD_Printf(CON_ERROR "Gv_SetVar(): tried to set invalid gamevar ID (%d) from sprite %d (%d), player %d\n",g_errorLineNum,keyw[g_tw],id,vm.g_i,sprite[vm.g_i].picnum,vm.g_p);
OSD_Printf(CON_ERROR "Gv_SetVar(): tried to set invalid gamevar ID (%d) from sprite %d (%d), player %d\n",
g_errorLineNum,keyw[g_tw],id,vm.g_i,sprite[vm.g_i].picnum,vm.g_p);
return;
badplayer:
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid player (%d) for per-player gamevar %s from sprite %d, player %d\n",g_errorLineNum,keyw[g_tw],iPlayer,aGameVars[id].szLabel,vm.g_i,vm.g_p);
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid player (%d) for per-player gamevar %s from sprite %d, player %d\n",
g_errorLineNum,keyw[g_tw],iPlayer,aGameVars[id].szLabel,vm.g_i,vm.g_p);
return;
badactor:
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid sprite (%d) for per-actor gamevar %s from sprite %d (%d), player %d\n",g_errorLineNum,keyw[g_tw],iActor,aGameVars[id].szLabel,vm.g_i,sprite[vm.g_i].picnum,vm.g_p);
OSD_Printf(CON_ERROR "Gv_SetVar(): invalid sprite (%d) for per-actor gamevar %s from sprite %d (%d), player %d\n",
g_errorLineNum,keyw[g_tw],iActor,aGameVars[id].szLabel,vm.g_i,sprite[vm.g_i].picnum,vm.g_p);
return;
}

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 = "20100427";
const char *s_buildDate = "20100514";
char *MusicPtr = NULL;
int32_t g_musicSize;

View file

@ -93,7 +93,7 @@ int32_t ScanGroups(void)
return 0;
}
initprintf("Scanning for GRP files...\n");
initprintf("Scanning for game data...\n");
LoadGroupsCache();
@ -196,9 +196,12 @@ int32_t ScanGroups(void)
Bfree(buf);
return 0;
}
initprintf("Found no recognized GRP files!\n");
initprintf("Found no recognized game data!\n");
if (buf)
Bfree(buf);
return 0;
}

View file

@ -917,7 +917,7 @@ static void C_GetNextVarType(int32_t type)
textptr++;
/// now pointing at 'xxx'
C_GetNextLabelName();
lLabelID = C_GetLabelNameID(SpriteLabels, &spriteH, strtolower(tlabel,Bstrlen(tlabel)));
lLabelID = C_GetLabelNameID(SpriteLabels, &spriteH, Bstrtolower(tlabel));
if (lLabelID == -1)
{
@ -1018,11 +1018,11 @@ static void C_GetNextVarType(int32_t type)
C_GetNextLabelName();
/*initprintf("found xxx label of '%s'\n", label+(g_numLabels*MAXLABELLEN));*/
if (id == g_iSpriteVarID || id==3)
lLabelID = C_GetLabelNameID(SpriteLabels, &spriteH, strtolower(tlabel,Bstrlen(tlabel)));
lLabelID = C_GetLabelNameID(SpriteLabels, &spriteH, Bstrtolower(tlabel));
else if (id == g_iSectorVarID)
lLabelID = C_GetLabelNameID(SectorLabels, &sectorH, strtolower(tlabel,Bstrlen(tlabel)));
lLabelID = C_GetLabelNameID(SectorLabels, &sectorH, Bstrtolower(tlabel));
else if (id == g_iWallVarID)
lLabelID = C_GetLabelNameID(WallLabels, &wallH, strtolower(tlabel,Bstrlen(tlabel)));
lLabelID = C_GetLabelNameID(WallLabels, &wallH, Bstrtolower(tlabel));
//printf("LabelID is %d\n",lLabelID);
if (lLabelID == -1)
{
@ -2233,11 +2233,11 @@ repeatcase:
//printf("found xxx label of '%s'\n", label+(g_numLabels*MAXLABELLEN));
if (tw==CON_GETSECTOR || tw==CON_SETSECTOR)
lLabelID = C_GetLabelNameID(SectorLabels, &sectorH, strtolower(tlabel,Bstrlen(tlabel)));
lLabelID = C_GetLabelNameID(SectorLabels, &sectorH, Bstrtolower(tlabel));
else if (tw==CON_GETWALL || tw==CON_SETWALL)
lLabelID = C_GetLabelNameID(WallLabels, &wallH, strtolower(tlabel,Bstrlen(tlabel)));
lLabelID = C_GetLabelNameID(WallLabels, &wallH, Bstrtolower(tlabel));
else // if (tw==CON_GETSPRITE || tw==CON_SETSPRITE || tw==CON_GETTSPR || tw==CON_SETTSPR)
lLabelID = C_GetLabelNameID(SpriteLabels, &spriteH, strtolower(tlabel,Bstrlen(tlabel)));
lLabelID = C_GetLabelNameID(SpriteLabels, &spriteH, Bstrtolower(tlabel));
if (lLabelID == -1)
{

View file

@ -790,7 +790,7 @@ void P_ResetStatus(int32_t snum)
if ((aplWeaponWorksLike[p->curr_weapon][snum] == PISTOL_WEAPON) &&
(aplWeaponReload[p->curr_weapon][snum] > aplWeaponTotalTime[p->curr_weapon][snum]))
p->kickback_pic = aplWeaponTotalTime[p->curr_weapon][snum]+1;
p->kickback_pic = aplWeaponTotalTime[p->curr_weapon][snum];
else p->kickback_pic = 0;
p->weapon_pos = 6;
@ -820,8 +820,8 @@ void P_ResetWeapons(int32_t snum)
p->ammo_amount[weapon] = 0;
p->weapon_pos = 6;
p->kickback_pic = 5;
p->curr_weapon = PISTOL_WEAPON;
p->kickback_pic = aplWeaponTotalTime[p->curr_weapon][snum];
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->last_weapon = -1;
@ -867,7 +867,12 @@ static void resetprestat(int32_t snum,int32_t g)
p->max_actors_killed = 0;
p->lastrandomspot = 0;
p->weapon_pos = 6;
p->kickback_pic = 5;
if ((aplWeaponWorksLike[p->curr_weapon][snum] == PISTOL_WEAPON) &&
(aplWeaponReload[p->curr_weapon][snum] > aplWeaponTotalTime[p->curr_weapon][snum]))
p->kickback_pic = aplWeaponTotalTime[p->curr_weapon][snum];
else p->kickback_pic = 0;
p->last_weapon = -1;
p->weapreccnt = 0;
p->interface_toggle_flag = 0;