From 2b7259300dfd6cae18d8c1d6a2cdb3a40e221305 Mon Sep 17 00:00:00 2001 From: ac_stef Date: Mon, 15 Sep 2008 19:57:30 +0000 Subject: [PATCH] serverbrowser description line added; div. warnings fixed git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@2637 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/localserverms.cpp | 10 +-- source/src/menus.cpp | 117 ++++++++++++++++++----------------- source/src/protos.h | 4 +- source/src/serverbrowser.cpp | 5 +- source/src/serverms.cpp | 8 +-- 5 files changed, 73 insertions(+), 71 deletions(-) diff --git a/source/src/localserverms.cpp b/source/src/localserverms.cpp index ed8c31b9..1f20ba39 100644 --- a/source/src/localserverms.cpp +++ b/source/src/localserverms.cpp @@ -37,7 +37,7 @@ char *masterserver::getserverlist() { // construct cube-script serverlist char *buf = newstring("// local servers\n", _MAXDEFSTR); - + loopv(servers) { server &s = servers[i]; @@ -73,11 +73,11 @@ void masterserver::processrequests() continue; }*/ - char *request = ((char *)requestbuf.data); + char *request = ((char *)requestbuf.data); // split request string hashtable args; - char *argseparators = "?&"; + const char *argseparators = "?&"; char *t = strpbrk(request, argseparators); while(t) { @@ -85,7 +85,7 @@ void masterserver::processrequests() char *nameend = strchr(namebegin, '='); char *valuebegin = nameend+1; char *valueend = strpbrk(valuebegin, "& "); - + if(namebegin < nameend && nameend < valuebegin && valuebegin < valueend) { char *name = newstring(namebegin, nameend-namebegin); @@ -110,7 +110,7 @@ void masterserver::processrequests() if(action) { if(!strcmp(action, "add") && port) // add requests - { + { ENetAddress srvaddr = { remoteaddr.host, atoi(port) }; if(addserver(srvaddr)) { diff --git a/source/src/menus.cpp b/source/src/menus.cpp index 78c316cc..1cb46067 100644 --- a/source/src/menus.cpp +++ b/source/src/menus.cpp @@ -71,7 +71,7 @@ void menuselect(void *menu, int sel) { m.items[oldsel]->focus(false); m.items[sel]->focus(true); - playsound(S_MENUSELECT, SP_HIGH); + playsound(S_MENUSELECT, SP_HIGH); } } } @@ -82,27 +82,27 @@ void drawarrow(int dir, int x, int y, int size, float r = 1.0f, float g = 1.0f, glDisable(GL_BLEND); glDisable(GL_TEXTURE_2D); glColor3f(r, g, b); - + glBegin(GL_POLYGON); glVertex2f(x, dir ? y+size : y); glVertex2f(x+size/2, dir ? y : y+size); glVertex2f(x+size, dir ? y+size : y); glEnd(); xtraverts += 3; - + glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); } #define MAXMENU 34 -bool menuvisible() -{ - if(!curmenu) - { - menustack.setsize(0); +bool menuvisible() +{ + if(!curmenu) + { + menustack.setsize(0); return false; - } + } return true; } @@ -120,10 +120,10 @@ void mitem::render(int x, int y, int w) else if(bgcolor) renderbg(x, y, w, bgcolor); } -void mitem::renderbg(int x, int y, int w, color *c) -{ - if(isselection()) blendbox(x-FONTH, y-FONTH/6, x+w+FONTH, y+FONTH+FONTH/6, false, -1, c); - else blendbox(x, y, x+w, y+FONTH, false, -1, c); +void mitem::renderbg(int x, int y, int w, color *c) +{ + if(isselection()) blendbox(x-FONTH, y-FONTH/6, x+w+FONTH, y+FONTH+FONTH/6, false, -1, c); + else blendbox(x, y, x+w, y+FONTH, false, -1, c); }; bool mitem::isselection() { return parent->allowinput && parent->items.inrange(parent->menusel) && parent->items[parent->menusel]==this; } @@ -135,13 +135,13 @@ color mitem::whitepulse(1.0f, 1.0f, 1.0f); struct mitemmanual : mitem { - char *text, *action, *hoveraction; + const char *text, *action, *hoveraction, *desc; - mitemmanual(gmenu *parent, char *text, char *action, char *hoveraction, color *bgcolor) : mitem(parent, bgcolor), text(text), action(action), hoveraction(hoveraction) {} + mitemmanual(gmenu *parent, char *text, char *action, char *hoveraction, color *bgcolor, const char *desc) : mitem(parent, bgcolor), text(text), action(action), hoveraction(hoveraction), desc(desc) {} virtual int width() { return text_width(text); } - - virtual void render(int x, int y, int w) + + virtual void render(int x, int y, int w) { mitem::render(x, y, w); draw_text(text, x, y); @@ -149,27 +149,28 @@ struct mitemmanual : mitem virtual void focus(bool on) { + if(on && desc && curmenu) curmenu->footer = desc; if(on && hoveraction) execute(hoveraction); } - virtual void select() - { - if(action && action[0]) - { + virtual void select() + { + if(action && action[0]) + { menustack.add(curmenu); - menuset(NULL); + menuset(NULL); push("arg1", text); execute(action); pop("arg1"); - } + } } }; struct mitemtext : mitemmanual { - mitemtext(gmenu *parent, char *text, char *action, char *hoveraction, color *bgcolor) : mitemmanual(parent, text, action, hoveraction, bgcolor) {} + mitemtext(gmenu *parent, char *text, char *action, char *hoveraction, color *bgcolor) : mitemmanual(parent, text, action, hoveraction, bgcolor, NULL) {} virtual ~mitemtext() - { + { DELETEA(text); DELETEA(action); DELETEA(hoveraction); @@ -203,7 +204,7 @@ struct mitemtextinput : mitemtext } virtual void focus(bool on) - { + { SDL_EnableUNICODE(on); if(!strlen(input.buf)) setdefaultvalue(); if(!on && modified) @@ -225,7 +226,7 @@ struct mitemtextinput : mitemtext setdefaultvalue(); modified = false; } - + virtual void select() { } void setdefaultvalue() @@ -287,7 +288,7 @@ struct mitemslider : mitem { const char *p = valueexp; char *v = executeret(p); - if(v) + if(v) { value = min(max_, max(min_, atoi(v))); delete[] v; @@ -303,14 +304,14 @@ struct mitemslider : mitem displaycurvalue(); if(action) { - string v; - itoa(v, value); + string v; + itoa(v, value); push("arg1", v); execute(action); pop("arg1"); } } - + void displaycurvalue() { if(display) // extract display name from list @@ -349,7 +350,7 @@ struct mitemkeyinput : mitem bool capture; mitemkeyinput(gmenu *parent, char *text, char *bindcmd, color *bgcolor) : mitem(parent, bgcolor), text(text), bindcmd(bindcmd), keyname(NULL), capture(false){}; - + ~mitemkeyinput() { DELETEA(text); @@ -367,14 +368,14 @@ struct mitemkeyinput : mitem draw_text(keyname, x+w-tk, y); } - virtual void init() - { - displaycurrentbind(); - capture = false; + virtual void init() + { + displaycurrentbind(); + capture = false; } - virtual void select() - { + virtual void select() + { capture = true; keyname = empty; } @@ -415,10 +416,10 @@ struct mitemcheckbox : mitem } virtual int width() { return text_width(text); } - - virtual void select() - { - checked = !checked; + + virtual void select() + { + checked = !checked; push("arg1", checked ? "1" : "0"); execute(action); pop("arg1"); @@ -476,11 +477,11 @@ void newmenu(char *name, char *hotkeys, char *forwardkeys) addmenu(name, NULL, true, NULL, atoi(hotkeys) > 0, atoi(forwardkeys) > 0); } -void menumanual(void *menu, int n, char *text, char *action, color *bgcolor) +void menumanual(void *menu, int n, char *text, char *action, color *bgcolor, const char *desc) { gmenu &m = *(gmenu *)menu; if(!n) m.items.deletecontentsp(); - m.items.add(new mitemmanual(&m, text, action, NULL, bgcolor)); + m.items.add(new mitemmanual(&m, text, action, NULL, bgcolor, desc)); } void menuheader(void *menu, char *header, char *footer) @@ -574,7 +575,7 @@ COMMAND(menuitemcheckbox, ARG_3STR); bool menukey(int code, bool isdown, int unicode) -{ +{ if(!curmenu) return false; int n = curmenu->items.length(), menusel = curmenu->menusel; if(isdown) @@ -594,11 +595,11 @@ bool menukey(int code, bool isdown, int unicode) return true; break; case SDLK_UP: - case -4: + case -4: menusel--; break; case SDLK_DOWN: - case -5: + case -5: menusel++; break; @@ -641,7 +642,7 @@ bool menukey(int code, bool isdown, int unicode) if(code==SDLK_RETURN || code==SDLK_SPACE || code==-1 || code==-2) { m.select(); - playsound(S_MENUENTER, SP_HIGH); + playsound(S_MENUENTER, SP_HIGH); return true; } return false; @@ -665,7 +666,7 @@ void rendermenumdl() vec pos; if(isplayermodel) pos = vec(2.0f, 1.2f, -0.4f); else pos = vec(2.0f, 0, 1.7f); - + float yaw = 1.0f; if(m.rotspeed) yaw += lastmillis/5.0f/100.0f*m.rotspeed; @@ -682,7 +683,7 @@ void rendermenumdl() a[0].tag = "tag_weapon"; } rendermodel(isplayermodel ? "playermodels" : m.mdl, m.anim|ANIM_DYNALLOC, tex, -1, pos, yaw, 0, 0, 0, NULL, a, m.scale ? m.scale/25.0f : 1.0f); - + glPopMatrix(); } @@ -709,21 +710,21 @@ void gmenu::close() if(items.inrange(menusel)) items[menusel]->focus(false); } -void gmenu::init() -{ +void gmenu::init() +{ if(dirlist) { items.deletecontentsp(); cvector files; listfiles(dirlist->dir, dirlist->ext, files); - loopv(files) + loopv(files) { char *f = files[i]; if(!f || !f[0]) continue; items.add(new mitemtext(this, f, newstring(dirlist->action), NULL, NULL)); } } - loopv(items) items[i]->init(); + loopv(items) items[i]->init(); } void gmenu::render() @@ -732,8 +733,8 @@ void gmenu::render() if(!t) { static string buf; s_sprintf(buf)("[ %s menu ]", name); t = buf; } int hitems = (header ? 2 : 0) + (footer ? 2 : 0), pagesize = MAXMENU - hitems, - offset = menusel - (menusel%pagesize), - mdisp = min(items.length(), pagesize), + offset = menusel - (menusel%pagesize), + mdisp = min(items.length(), pagesize), cdisp = min(items.length()-offset, pagesize); mitem::whitepulse.alpha = (sinf(lastmillis/200.0f)+1.0f)/2.0f; if(title) text_startcolumns(); @@ -758,7 +759,7 @@ void gmenu::render() renderbg(x-FONTH*3/2, y-FONTH, x+w+FONTH*3/2, y+h+FONTH, true); if(offset>0) drawarrow(1, x+w+FONTH*3/2-FONTH*5/6, y-FONTH*5/6, FONTH*2/3); if(offset+pagesize &ents); -extern uchar *retrieveservers(uchar *buf, int buflen, ENetAddress &masterserver, char *masterpath); +extern uchar *retrieveservers(uchar *buf, int buflen, ENetAddress &masterserver, const char *lmasterpath); extern char msgsizelookup(int msg); extern void serverms(int mode, int numplayers, int minremain, char *smapname, int millis, ENetAddress &localaddr); extern void servermsdesc(const char *sdesc); diff --git a/source/src/serverbrowser.cpp b/source/src/serverbrowser.cpp index b0708ba4..1bdb43ab 100644 --- a/source/src/serverbrowser.cpp +++ b/source/src/serverbrowser.cpp @@ -477,8 +477,9 @@ void refreshservers(void *menu, bool init) s_sprintf(si.full)(si.address.host != ENET_HOST_ANY ? "%s:%d [waiting for server response]" : "%s:%d [unknown host]", si.name, si.port); } si.full[75] = 0; // cut off too long server descriptions + si.sdesc[75] = 0; s_sprintf(si.cmd)("connect %s %d", si.name, si.port); - menumanual(menu, i, si.full, si.cmd); + menumanual(menu, i, si.full, si.cmd, NULL, si.sdesc); } } } @@ -489,7 +490,7 @@ void clearservers() servers.deletecontentsp(); } -void getserversfrommaster(ENetAddress &masterserver, char *masterpath) +void getserversfrommaster(ENetAddress &masterserver, const char *masterpath) { uchar buf[32000]; uchar *reply = retrieveservers(buf, sizeof(buf), masterserver, masterpath); diff --git a/source/src/serverms.cpp b/source/src/serverms.cpp index e8d6cd93..bede0663 100644 --- a/source/src/serverms.cpp +++ b/source/src/serverms.cpp @@ -104,7 +104,7 @@ void updatemasterserver(int millis, ENetAddress &localaddr) masterrep[0] = 0; masterb.data = masterrep; masterb.dataLength = MAXTRANS-1; - + // register on local machine masterserver localmasterserver.create(machinemasterserver); // try creating an instance, maybe we are the first or the only local server string localhost; @@ -136,12 +136,12 @@ void checkmasterreply() #define RETRIEVELIMIT 20000 #define BROADCASTLIMIT 5000 -uchar *retrieveservers(uchar *buf, int buflen, ENetAddress &masterserver, char *masterpath) +uchar *retrieveservers(uchar *buf, int buflen, ENetAddress &masterserver, const char *lmasterpath) { bool lansearch = (masterserver.host==ENET_HOST_BROADCAST); buf[0] = '\0'; - s_sprintfd(path)("%sretrieve.do?item=list", masterpath); + s_sprintfd(path)("%sretrieve.do?item=list", lmasterpath); s_sprintfd(agent)("AssaultCube Client %d", AC_VERSION); ENetAddress address = masterserver; ENetSocket sock = ENET_SOCKET_NULL; @@ -194,7 +194,7 @@ uchar *retrieveservers(uchar *buf, int buflen, ENetAddress &masterserver, char * if(len<=0) continue; uchar *bodybegin = stripheader(lanbuf); size_t headersize = bodybegin-lanbuf; - + // collect responses into a single buffer memcpy(eb.data, lanbuf+headersize, len-headersize); eb.data = ((char *)eb.data)+len-headersize;