mirror of
https://github.com/ZDoom/Raze.git
synced 2024-11-15 08:51:24 +00:00
Revert some of the aim changes as well as add the start of support for loading Duke3d_w32 network configuration files. The wrapper application reformats a Duke3d_w32 command line sent from Dukester X into something EDuke32 can work with.
Still left to be done: sort IPs (they aren't in the same order on all machines in Rancidmeat config files) and construct a proper string of network parameters for Ken's netcode. git-svn-id: https://svn.eduke32.com/eduke32@130 1a8010ca-5511-0410-912e-c29ae57300e0
This commit is contained in:
parent
7d8048482a
commit
111c923844
3 changed files with 155 additions and 3 deletions
|
@ -38,6 +38,7 @@ Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
#include "osd.h"
|
#include "osd.h"
|
||||||
#include "osdfuncs.h"
|
#include "osdfuncs.h"
|
||||||
#include "osdcmds.h"
|
#include "osdcmds.h"
|
||||||
|
#include "scriptfile.h"
|
||||||
|
|
||||||
//#include "crc32.h"
|
//#include "crc32.h"
|
||||||
|
|
||||||
|
@ -7461,6 +7462,82 @@ void comlinehelp(char **argv)
|
||||||
wm_msgbox(apptitle,s);
|
wm_msgbox(apptitle,s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
enum {
|
||||||
|
T_EOF = -2,
|
||||||
|
T_ERROR = -1,
|
||||||
|
T_INTERFACE = 0,
|
||||||
|
T_MODE,
|
||||||
|
T_ALLOW
|
||||||
|
};
|
||||||
|
|
||||||
|
signed int rancid_players = 0;
|
||||||
|
char rancid_ips[MAXPLAYERS][16];
|
||||||
|
|
||||||
|
typedef struct { char *text; int tokenid; } tokenlist;
|
||||||
|
static tokenlist basetokens[] =
|
||||||
|
{
|
||||||
|
{ "interface", T_INTERFACE },
|
||||||
|
{ "mode", T_MODE },
|
||||||
|
{ "allow", T_ALLOW },
|
||||||
|
};
|
||||||
|
|
||||||
|
static int getatoken(scriptfile *sf, tokenlist *tl, int ntokens)
|
||||||
|
{
|
||||||
|
char *tok;
|
||||||
|
int i;
|
||||||
|
|
||||||
|
if (!sf) return T_ERROR;
|
||||||
|
tok = scriptfile_gettoken(sf);
|
||||||
|
if (!tok) return T_EOF;
|
||||||
|
|
||||||
|
for(i=0;i<ntokens;i++) {
|
||||||
|
if (!Bstrcasecmp(tok, tl[i].text))
|
||||||
|
return tl[i].tokenid;
|
||||||
|
}
|
||||||
|
|
||||||
|
return T_ERROR;
|
||||||
|
}
|
||||||
|
|
||||||
|
static int parserancidnet(scriptfile *script)
|
||||||
|
{
|
||||||
|
int tokn;
|
||||||
|
char *cmdtokptr;
|
||||||
|
while (1) {
|
||||||
|
tokn = getatoken(script,basetokens,sizeof(basetokens)/sizeof(tokenlist));
|
||||||
|
cmdtokptr = script->ltextptr;
|
||||||
|
switch (tokn) {
|
||||||
|
case T_INTERFACE:
|
||||||
|
case T_ALLOW:
|
||||||
|
{
|
||||||
|
char *ip;
|
||||||
|
if (scriptfile_getstring(script,&ip)) break;
|
||||||
|
Bstrcpy(rancid_ips[rancid_players++],ip);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case T_EOF:
|
||||||
|
return(0);
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int loadrancidnet(char *fn)
|
||||||
|
{
|
||||||
|
scriptfile *script;
|
||||||
|
|
||||||
|
script = scriptfile_fromfile(fn);
|
||||||
|
if (!script) return -1;
|
||||||
|
|
||||||
|
parserancidnet(script);
|
||||||
|
|
||||||
|
scriptfile_close(script);
|
||||||
|
scriptfile_clearsymbols();
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
void checkcommandline(int argc,char **argv)
|
void checkcommandline(int argc,char **argv)
|
||||||
{
|
{
|
||||||
short i, j;
|
short i, j;
|
||||||
|
@ -7495,6 +7572,20 @@ void checkcommandline(int argc,char **argv)
|
||||||
c = argv[i];
|
c = argv[i];
|
||||||
if (((*c == '/') || (*c == '-')) && (!firstnet))
|
if (((*c == '/') || (*c == '-')) && (!firstnet))
|
||||||
{
|
{
|
||||||
|
if (!Bstrcasecmp(c+1,"rmnet")) {
|
||||||
|
if (argc > i+1) {
|
||||||
|
CommandName = argv[i+1];
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
if(CommandName) {
|
||||||
|
loadrancidnet(CommandName);
|
||||||
|
for(j=0;j<rancid_players;j++)
|
||||||
|
initprintf("Rancidmeat configuration IP %d: %s\n",j,rancid_ips[j]);
|
||||||
|
CommandName = 0;
|
||||||
|
}
|
||||||
|
i++;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if (!Bstrcasecmp(c+1,"net")) {
|
if (!Bstrcasecmp(c+1,"net")) {
|
||||||
firstnet = i;
|
firstnet = i;
|
||||||
netparamcount = argc - i - 1;
|
netparamcount = argc - i - 1;
|
||||||
|
@ -8346,7 +8437,7 @@ void writestring(long a1,long a2,long a3,short a4,long vx,long vy,long vz)
|
||||||
|
|
||||||
FILE *fp;
|
FILE *fp;
|
||||||
|
|
||||||
fp = (FILE *)fopenfrompath("debug.txt","rt+");
|
fp = (FILE *)fopen("debug.txt","rt+");
|
||||||
|
|
||||||
fprintf(fp,"%ld %ld %ld %d %ld %ld %ld\n",a1,a2,a3,a4,vx,vy,vz);
|
fprintf(fp,"%ld %ld %ld %d %ld %ld %ld\n",a1,a2,a3,a4,vx,vy,vz);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
|
@ -9615,7 +9706,7 @@ FAKEHORIZONLY:
|
||||||
}
|
}
|
||||||
|
|
||||||
if(p->aim_mode)
|
if(p->aim_mode)
|
||||||
myhoriz += syn->horz/2;
|
myhoriz += syn->horz>>1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( myhoriz > 95 && myhoriz < 105) myhoriz = 100;
|
if( myhoriz > 95 && myhoriz < 105) myhoriz = 100;
|
||||||
|
|
|
@ -2833,6 +2833,7 @@ void getinput(short snum)
|
||||||
else horiz = (info.dz+lastinfo.dz)/(314-128);
|
else horiz = (info.dz+lastinfo.dz)/(314-128);
|
||||||
|
|
||||||
lastinfo.dz = (lastinfo.dz+info.dz) % (314-128);
|
lastinfo.dz = (lastinfo.dz+info.dz) % (314-128);
|
||||||
|
if(horiz <= 0) horiz++;
|
||||||
info.dz = 0;
|
info.dz = 0;
|
||||||
} else {
|
} else {
|
||||||
lastinfo.dz = info.dz % (1<<6);
|
lastinfo.dz = info.dz % (1<<6);
|
||||||
|
@ -4388,7 +4389,7 @@ HORIZONLY:
|
||||||
}
|
}
|
||||||
|
|
||||||
if(p->aim_mode)
|
if(p->aim_mode)
|
||||||
p->horiz += sync[snum].horz/2;
|
p->horiz += sync[snum].horz>>1;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( p->horiz > 95 && p->horiz < 105) p->horiz = 100;
|
if( p->horiz > 95 && p->horiz < 105) p->horiz = 100;
|
||||||
|
|
60
polymer/eduke32/source/wrapper.c
Executable file
60
polymer/eduke32/source/wrapper.c
Executable file
|
@ -0,0 +1,60 @@
|
||||||
|
// this is a wrapper to launch EDuke32 properly from Dukester X
|
||||||
|
// gcc -o duke3d_w32.exe wrapper.c
|
||||||
|
|
||||||
|
#include <windows.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#define ISWS(x) ((x == ' ') || (x == '\t') || (x == '\r') || (x == '\n'))
|
||||||
|
|
||||||
|
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInst, LPSTR lpCmdLine, int nCmdShow)
|
||||||
|
{
|
||||||
|
int i,j;
|
||||||
|
LPTSTR szCmdLine;
|
||||||
|
|
||||||
|
char CmdLine[1024];
|
||||||
|
char sCmdLine[1024];
|
||||||
|
char szFileName[255];
|
||||||
|
|
||||||
|
FILE * fp=fopen("wrapper.log","w");
|
||||||
|
STARTUPINFO si;
|
||||||
|
PROCESS_INFORMATION pi;
|
||||||
|
|
||||||
|
for(i=0;i<sizeof(CmdLine);i++)
|
||||||
|
{
|
||||||
|
if(lpCmdLine[i] == ' ' && lpCmdLine[i+1] == '-' && lpCmdLine[i+2] == 'n' && lpCmdLine[i+3] == 'e' && lpCmdLine[i+4] == 't')
|
||||||
|
{
|
||||||
|
i += 6;
|
||||||
|
j = 0;
|
||||||
|
while(!ISWS(lpCmdLine[i]))
|
||||||
|
{
|
||||||
|
szFileName[j] = lpCmdLine[i];
|
||||||
|
j++,i++;
|
||||||
|
fprintf(fp,"%d %d\n",j,i);
|
||||||
|
if(lpCmdLine[i] == ' ' || lpCmdLine[i] == '\n' || lpCmdLine[i] == '\r')
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else CmdLine[i] = lpCmdLine[i];
|
||||||
|
}
|
||||||
|
|
||||||
|
sprintf(sCmdLine,"eduke32.exe %s -rmnet %s",CmdLine,szFileName);
|
||||||
|
szCmdLine = sCmdLine;
|
||||||
|
fprintf(fp,"EDuke32 wrapper for Dukester X v0.01\
|
||||||
|
\nCopyright (c) 2006 EDuke32 team\n\
|
||||||
|
\nArgs passed to wrapper: %s\
|
||||||
|
\nRancidmeat net filename: %s\
|
||||||
|
\nFinal command line: %s\n",lpCmdLine,szFileName,szCmdLine);
|
||||||
|
fclose(fp);
|
||||||
|
|
||||||
|
ZeroMemory(&si,sizeof(si));
|
||||||
|
ZeroMemory(&pi,sizeof(pi));
|
||||||
|
si.cb = sizeof(si);
|
||||||
|
|
||||||
|
if (!CreateProcess(NULL,szCmdLine,NULL,NULL,0,0,NULL,NULL,&si,&pi)) {
|
||||||
|
MessageBox(0,"Failed to start eduke32.exe.", "Failure starting game", MB_OK|MB_ICONSTOP);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
Loading…
Reference in a new issue