remove engine/client.cc and engine/server.cc
This commit is contained in:
parent
311f09270a
commit
4c0496c07a
|
@ -8,7 +8,6 @@ client_src = [
|
|||
'../engine/aa.cc',
|
||||
'../engine/bih.cc',
|
||||
'../engine/blend.cc',
|
||||
'../engine/client.cc',
|
||||
'../engine/command.cc',
|
||||
'../engine/console.cc',
|
||||
'../engine/dynlight.cc',
|
||||
|
@ -31,7 +30,6 @@ client_src = [
|
|||
'../engine/rendersky.cc',
|
||||
'../engine/rendertext.cc',
|
||||
'../engine/renderva.cc',
|
||||
'../engine/server.cc',
|
||||
'../engine/shader.cc',
|
||||
'../engine/stain.cc',
|
||||
'../engine/texture.cc',
|
||||
|
|
|
@ -1,33 +0,0 @@
|
|||
// client.cpp, mostly network related client game code
|
||||
|
||||
#include "engine.hh"
|
||||
|
||||
bool multiplayer(bool msg)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isconnected(bool attempt, bool local)
|
||||
{
|
||||
return haslocalclients();
|
||||
}
|
||||
|
||||
void trydisconnect()
|
||||
{
|
||||
if(haslocalclients()) localdisconnect();
|
||||
else conoutf("not connected");
|
||||
}
|
||||
|
||||
ICOMMAND(disconnect, "", (), trydisconnect());
|
||||
ICOMMAND(localconnect, "", (), { if(!isconnected()) localconnect(); });
|
||||
ICOMMAND(localdisconnect, "", (), { if(haslocalclients()) localdisconnect(); });
|
||||
|
||||
void clientkeepalive() {}
|
||||
|
||||
void gets2c() {}
|
||||
|
||||
void neterr(const char *s, bool disc)
|
||||
{
|
||||
conoutf(CON_ERROR, "\f3illegal network message (%s)", s);
|
||||
if(disc) localdisconnect();
|
||||
}
|
|
@ -31,7 +31,7 @@ void conoutfv(int type, const char *fmt, va_list args)
|
|||
static char buf[CONSTRLEN];
|
||||
vformatstring(buf, fmt, args, sizeof(buf));
|
||||
conline(type, buf);
|
||||
logoutf("%s", buf);
|
||||
printf("%s\n", buf);
|
||||
}
|
||||
|
||||
void conoutf(const char *fmt, ...)
|
||||
|
|
|
@ -525,12 +525,6 @@ extern void loadcaustics(bool force = false);
|
|||
extern void renderwaterfog(int mat, float blend);
|
||||
extern void preloadwatershaders(bool force = false);
|
||||
|
||||
// server
|
||||
extern void initserver();
|
||||
extern void cleanupserver();
|
||||
extern void updatetime();
|
||||
extern void localconnect();
|
||||
|
||||
// client
|
||||
extern void localdisconnect(bool cleanup = true);
|
||||
extern void clientkeepalive();
|
||||
|
|
|
@ -4,12 +4,37 @@
|
|||
|
||||
#include "engine.hh"
|
||||
|
||||
void clientkeepalive() {}
|
||||
|
||||
bool multiplayer(bool msg)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
bool isconnected(bool attempt, bool local)
|
||||
{
|
||||
return haslocalclients();
|
||||
}
|
||||
|
||||
void localdisconnect(bool cleanup)
|
||||
{
|
||||
game::gamedisconnect(cleanup);
|
||||
mainmenu = 1;
|
||||
}
|
||||
|
||||
void trydisconnect()
|
||||
{
|
||||
if(haslocalclients()) localdisconnect();
|
||||
else conoutf("not connected");
|
||||
}
|
||||
|
||||
ICOMMAND(disconnect, "", (), trydisconnect());
|
||||
|
||||
extern void cleargamma();
|
||||
|
||||
void cleanup()
|
||||
{
|
||||
recorder::stop();
|
||||
cleanupserver();
|
||||
SDL_ShowCursor(SDL_TRUE);
|
||||
SDL_SetRelativeMouseMode(SDL_FALSE);
|
||||
if(screen) SDL_SetWindowGrab(screen, SDL_FALSE);
|
||||
|
@ -20,7 +45,6 @@ void cleanup()
|
|||
extern void clear_console(); clear_console();
|
||||
extern void clear_models(); clear_models();
|
||||
//extern void clear_sound(); clear_sound();
|
||||
closelogfile();
|
||||
#ifdef __APPLE__
|
||||
if(screen) SDL_SetWindowFullscreen(screen, 0);
|
||||
#endif
|
||||
|
@ -46,7 +70,7 @@ void fatal(const char *s, ...) // failure exit
|
|||
if(errors <= 2) // print up to one extra recursive error
|
||||
{
|
||||
defvformatstring(msg,s,s);
|
||||
logoutf("%s", msg);
|
||||
printf("%s\n", msg);
|
||||
|
||||
if(errors <= 1) // avoid recursion
|
||||
{
|
||||
|
@ -1018,21 +1042,11 @@ int main(int argc, char **argv)
|
|||
#endif
|
||||
#endif
|
||||
|
||||
setlogfile(NULL);
|
||||
|
||||
char *load = NULL, *initscript = NULL;
|
||||
char *initscript = NULL;
|
||||
|
||||
initing = INIT_RESET;
|
||||
// set home dir first
|
||||
sethomedir("$HOME/.octacore");
|
||||
// set log after home dir, but before anything else
|
||||
for(int i = 1; i<argc; i++) if(argv[i][0]=='-' && argv[i][1] == 'g')
|
||||
{
|
||||
const char *file = argv[i][2] ? &argv[i][2] : "log.txt";
|
||||
setlogfile(file);
|
||||
logoutf("Setting log file: %s", file);
|
||||
break;
|
||||
}
|
||||
execfile("config/init.cfg", false);
|
||||
for(int i = 1; i<argc; i++)
|
||||
{
|
||||
|
@ -1041,21 +1055,13 @@ int main(int argc, char **argv)
|
|||
case 'k':
|
||||
{
|
||||
const char *dir = addpackagedir(&argv[i][2]);
|
||||
if(dir) logoutf("Adding package directory: %s", dir);
|
||||
if(dir) printf("Adding package directory: %s\n", dir);
|
||||
break;
|
||||
}
|
||||
case 'g': break;
|
||||
case 'w': scr_w = clamp(atoi(&argv[i][2]), SCR_MINW, SCR_MAXW); if(!findarg(argc, argv, "-h")) scr_h = -1; break;
|
||||
case 'h': scr_h = clamp(atoi(&argv[i][2]), SCR_MINH, SCR_MAXH); if(!findarg(argc, argv, "-w")) scr_w = -1; break;
|
||||
case 'f': fullscreen = atoi(&argv[i][2]); break;
|
||||
case 'l':
|
||||
{
|
||||
char pkgdir[] = "media/";
|
||||
load = strstr(path(&argv[i][2]), path(pkgdir));
|
||||
if(load) load += sizeof(pkgdir)-1;
|
||||
else load = &argv[i][2];
|
||||
break;
|
||||
}
|
||||
case 'x': initscript = &argv[i][2]; break;
|
||||
default: break;
|
||||
}
|
||||
|
@ -1063,15 +1069,14 @@ int main(int argc, char **argv)
|
|||
|
||||
numcpus = clamp(SDL_GetCPUCount(), 1, 16);
|
||||
|
||||
logoutf("init: sdl");
|
||||
printf("init: sdl\n");
|
||||
|
||||
if(SDL_Init(SDL_INIT_TIMER|SDL_INIT_VIDEO|SDL_INIT_AUDIO)<0) fatal("Unable to initialize SDL: %s", SDL_GetError());
|
||||
|
||||
logoutf("init: game");
|
||||
initserver();
|
||||
printf("init: game\n");
|
||||
game::initclient();
|
||||
|
||||
logoutf("init: video");
|
||||
printf("init: video\n");
|
||||
SDL_SetHint(SDL_HINT_GRAB_KEYBOARD, "0");
|
||||
#if !defined(WIN32) && !defined(__APPLE__)
|
||||
SDL_SetHint(SDL_HINT_VIDEO_MINIMIZE_ON_FOCUS_LOSS, "0");
|
||||
|
@ -1080,13 +1085,13 @@ int main(int argc, char **argv)
|
|||
SDL_ShowCursor(SDL_FALSE);
|
||||
SDL_StopTextInput(); // workaround for spurious text-input events getting sent on first text input toggle?
|
||||
|
||||
logoutf("init: gl");
|
||||
printf("init: gl\n");
|
||||
gl_checkextensions();
|
||||
gl_init();
|
||||
notexture = textureload("media/texture/game/notexture.png");
|
||||
if(!notexture) fatal("could not find core textures");
|
||||
|
||||
logoutf("init: console");
|
||||
printf("init: console\n");
|
||||
if(!execfile("config/stdlib.cfg", false)) fatal("cannot find data files (you are running from the wrong folder, try .bat file in the main folder)"); // this is the first file we load.
|
||||
if(!execfile("config/font.cfg", false)) fatal("cannot find font definitions");
|
||||
if(!setfont("default")) fatal("no default font specified");
|
||||
|
@ -1096,14 +1101,14 @@ int main(int argc, char **argv)
|
|||
inbetweenframes = true;
|
||||
renderbackground("initializing...");
|
||||
|
||||
logoutf("init: world");
|
||||
printf("init: world\n");
|
||||
camera1 = player = game::iterdynents(0);
|
||||
emptymap(0, true, NULL, false);
|
||||
|
||||
logoutf("init: sound");
|
||||
printf("init: sound\n");
|
||||
//initsound();
|
||||
|
||||
logoutf("init: cfg");
|
||||
printf("init: cfg\n");
|
||||
initing = INIT_LOAD;
|
||||
execfile("config/keymap.cfg");
|
||||
execfile("config/stdedit.cfg");
|
||||
|
@ -1128,7 +1133,7 @@ int main(int argc, char **argv)
|
|||
|
||||
initing = NOT_INITING;
|
||||
|
||||
logoutf("init: render");
|
||||
printf("init: render\n");
|
||||
restoregamma();
|
||||
restorevsync();
|
||||
initgbuffer();
|
||||
|
@ -1138,17 +1143,10 @@ int main(int argc, char **argv)
|
|||
|
||||
identflags |= IDF_PERSIST;
|
||||
|
||||
logoutf("init: mainloop");
|
||||
printf("init: mainloop\n");
|
||||
|
||||
if(execfile("once.cfg", false)) remove(findfile("once.cfg", "rb"));
|
||||
|
||||
if(load)
|
||||
{
|
||||
logoutf("init: localconnect");
|
||||
//localconnect();
|
||||
game::changemap(load);
|
||||
}
|
||||
|
||||
if(initscript) execute(initscript);
|
||||
|
||||
//initmumble();
|
||||
|
@ -1171,7 +1169,6 @@ int main(int argc, char **argv)
|
|||
if(game::ispaused()) curtime = 0;
|
||||
lastmillis += curtime;
|
||||
totalmillis = millis;
|
||||
updatetime();
|
||||
|
||||
checkinput();
|
||||
//UI::update();
|
||||
|
|
|
@ -1,159 +0,0 @@
|
|||
// server.cpp: little more than enhanced multicaster
|
||||
// runs dedicated or as client coroutine
|
||||
|
||||
#include "engine.hh"
|
||||
|
||||
#define LOGSTRLEN 512
|
||||
|
||||
static FILE *logfile = NULL;
|
||||
|
||||
void closelogfile()
|
||||
{
|
||||
if(logfile)
|
||||
{
|
||||
fclose(logfile);
|
||||
logfile = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
FILE *getlogfile()
|
||||
{
|
||||
#ifdef WIN32
|
||||
return logfile;
|
||||
#else
|
||||
return logfile ? logfile : stdout;
|
||||
#endif
|
||||
}
|
||||
|
||||
void setlogfile(const char *fname)
|
||||
{
|
||||
closelogfile();
|
||||
if(fname && fname[0])
|
||||
{
|
||||
fname = findfile(fname, "w");
|
||||
if(fname) logfile = fopen(fname, "w");
|
||||
}
|
||||
FILE *f = getlogfile();
|
||||
if(f) setvbuf(f, NULL, _IOLBF, BUFSIZ);
|
||||
}
|
||||
|
||||
void logoutf(const char *fmt, ...)
|
||||
{
|
||||
va_list args;
|
||||
va_start(args, fmt);
|
||||
logoutfv(fmt, args);
|
||||
va_end(args);
|
||||
}
|
||||
|
||||
|
||||
static void writelog(FILE *file, const char *buf)
|
||||
{
|
||||
static uchar ubuf[512];
|
||||
size_t len = strlen(buf), carry = 0;
|
||||
while(carry < len)
|
||||
{
|
||||
size_t numu = encodeutf8(ubuf, sizeof(ubuf)-1, &((const uchar *)buf)[carry], len - carry, &carry);
|
||||
if(carry >= len) ubuf[numu++] = '\n';
|
||||
fwrite(ubuf, 1, numu, file);
|
||||
}
|
||||
}
|
||||
|
||||
static void writelogv(FILE *file, const char *fmt, va_list args)
|
||||
{
|
||||
static char buf[LOGSTRLEN];
|
||||
vformatstring(buf, fmt, args, sizeof(buf));
|
||||
writelog(file, buf);
|
||||
}
|
||||
|
||||
#define DEFAULTCLIENTS 8
|
||||
|
||||
enum { ST_EMPTY, ST_LOCAL, ST_TCPIP };
|
||||
|
||||
struct client // server side version of "dynent" type
|
||||
{
|
||||
int type;
|
||||
int num;
|
||||
string hostname;
|
||||
void *info;
|
||||
};
|
||||
|
||||
vector<client *> clients;
|
||||
|
||||
int laststatus = 0;
|
||||
|
||||
int localclients = 0;
|
||||
|
||||
bool hasnonlocalclients() { return false; }
|
||||
bool haslocalclients() { return localclients!=0; }
|
||||
|
||||
client &addclient(int type)
|
||||
{
|
||||
client *c = NULL;
|
||||
loopv(clients) if(clients[i]->type==ST_EMPTY)
|
||||
{
|
||||
c = clients[i];
|
||||
break;
|
||||
}
|
||||
if(!c)
|
||||
{
|
||||
c = new client;
|
||||
c->num = clients.length();
|
||||
clients.add(c);
|
||||
}
|
||||
c->type = type;
|
||||
switch(type)
|
||||
{
|
||||
case ST_LOCAL: localclients++; break;
|
||||
}
|
||||
return *c;
|
||||
}
|
||||
|
||||
void delclient(client *c)
|
||||
{
|
||||
if(!c) return;
|
||||
switch(c->type)
|
||||
{
|
||||
case ST_LOCAL: localclients--; break;
|
||||
case ST_EMPTY: return;
|
||||
}
|
||||
c->type = ST_EMPTY;
|
||||
}
|
||||
|
||||
void cleanupserver()
|
||||
{
|
||||
}
|
||||
|
||||
void updatetime()
|
||||
{
|
||||
}
|
||||
|
||||
void localdisconnect(bool cleanup)
|
||||
{
|
||||
bool disconnected = false;
|
||||
loopv(clients) if(clients[i]->type==ST_LOCAL)
|
||||
{
|
||||
delclient(clients[i]);
|
||||
disconnected = true;
|
||||
}
|
||||
if(!disconnected) return;
|
||||
game::gamedisconnect(cleanup);
|
||||
mainmenu = 1;
|
||||
}
|
||||
|
||||
void localconnect()
|
||||
{
|
||||
if(initing) return;
|
||||
client &c = addclient(ST_LOCAL);
|
||||
copystring(c.hostname, "local");
|
||||
game::gameconnect(false);
|
||||
}
|
||||
|
||||
void logoutfv(const char *fmt, va_list args)
|
||||
{
|
||||
FILE *f = getlogfile();
|
||||
if(f) writelogv(f, fmt, args);
|
||||
}
|
||||
|
||||
void initserver()
|
||||
{
|
||||
}
|
|
@ -80,7 +80,7 @@ static void showglslinfo(GLenum type, GLuint obj, const char *name, const char *
|
|||
if(length > 1)
|
||||
{
|
||||
conoutf(CON_ERROR, "GLSL ERROR (%s:%s)", type == GL_VERTEX_SHADER ? "VS" : (type == GL_FRAGMENT_SHADER ? "FS" : "PROG"), name);
|
||||
FILE *l = getlogfile();
|
||||
FILE *l = stdout;
|
||||
if(l)
|
||||
{
|
||||
GLchar *log = new GLchar[length];
|
||||
|
@ -1281,7 +1281,7 @@ bool shouldreuseparams(Slot &s, VSlot &p)
|
|||
ICOMMAND(dumpshader, "sbi", (const char *name, int *col, int *row),
|
||||
{
|
||||
Shader *s = lookupshaderbyname(name);
|
||||
FILE *l = getlogfile();
|
||||
FILE *l = stdout;
|
||||
if(!s || !l) return;
|
||||
if(*col >= 0)
|
||||
{
|
||||
|
|
|
@ -37,7 +37,7 @@ namespace game
|
|||
settexture("media/interface/radar/radar.png", 3);
|
||||
}
|
||||
|
||||
bool connected = false, remote = false;
|
||||
bool connected = false;
|
||||
int sessionid = 0;
|
||||
string servdesc = "", servauth = "";
|
||||
|
||||
|
@ -78,9 +78,8 @@ namespace game
|
|||
void changemap(const char *name, int mode) // request map change, server may ignore
|
||||
{
|
||||
changemapserv(name, 0);
|
||||
localconnect();
|
||||
clearmainmenu(); /* XXX hack */
|
||||
connected = true;
|
||||
clearmainmenu(); /* XXX hack */
|
||||
}
|
||||
void changemap(const char *name)
|
||||
{
|
||||
|
@ -97,7 +96,6 @@ namespace game
|
|||
{
|
||||
if(size>=0) emptymap(size, true, NULL);
|
||||
else enlargemap(true);
|
||||
localconnect();
|
||||
connected = true;
|
||||
}
|
||||
|
||||
|
@ -118,14 +116,16 @@ namespace game
|
|||
{
|
||||
}
|
||||
|
||||
void gameconnect(bool _remote)
|
||||
void gameconnect()
|
||||
{
|
||||
remote = _remote;
|
||||
}
|
||||
|
||||
void gamedisconnect(bool cleanup)
|
||||
{
|
||||
connected = remote = false;
|
||||
if (!connected) {
|
||||
return;
|
||||
}
|
||||
connected = false;
|
||||
player1->clientnum = -1;
|
||||
if(editmode) toggleedit();
|
||||
sessionid = 0;
|
||||
|
@ -140,3 +140,4 @@ namespace game
|
|||
void toserver(char *text) { conoutf(CON_CHAT, "%s", text); }
|
||||
}
|
||||
|
||||
bool haslocalclients() { return game::connected; }
|
||||
|
|
|
@ -195,12 +195,6 @@ extern void conoutf(const char *s, ...) PRINTFARGS(1, 2);
|
|||
extern void conoutf(int type, const char *s, ...) PRINTFARGS(2, 3);
|
||||
extern void conoutfv(int type, const char *fmt, va_list args);
|
||||
|
||||
extern FILE *getlogfile();
|
||||
extern void setlogfile(const char *fname);
|
||||
extern void closelogfile();
|
||||
extern void logoutfv(const char *fmt, va_list args);
|
||||
extern void logoutf(const char *fmt, ...) PRINTFARGS(1, 2);
|
||||
|
||||
// octa
|
||||
extern int lookupmaterial(const vec &o);
|
||||
|
||||
|
@ -449,11 +443,7 @@ extern bool matchanim(const char *name, const char *pattern);
|
|||
extern void moveragdoll(dynent *d);
|
||||
extern void cleanragdoll(dynent *d);
|
||||
|
||||
// server
|
||||
|
||||
extern void localconnect();
|
||||
extern bool haslocalclients();
|
||||
|
||||
// client
|
||||
extern bool haslocalclients();
|
||||
extern bool isconnected(bool attempt = false, bool local = true);
|
||||
extern bool multiplayer(bool msg = true);
|
||||
|
|
Loading…
Reference in a new issue