From e0f78a52559bb2ae445cd721262efd88f6814815 Mon Sep 17 00:00:00 2001 From: driAn Date: Sat, 17 Nov 2007 10:13:19 +0000 Subject: [PATCH] scoreboard fixes git-svn-id: svn://svn.code.sf.net/p/actiongame/code/trunk/ac@1429 e016b1c5-ed68-44aa-a2f7-31cac88cffde --- source/src/menus.cpp | 6 +++--- source/src/scoreboard.cpp | 9 +++++---- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/source/src/menus.cpp b/source/src/menus.cpp index c53ac614..808d254c 100644 --- a/source/src/menus.cpp +++ b/source/src/menus.cpp @@ -80,7 +80,7 @@ void rendermenu() } char *title = m.title; if(!title) { static string buf; s_sprintf(buf)("[ %s menu ]", m.name); title = buf; } - int hitems = (m.header ? 1 : 0) + (m.footer ? 1 : 0), + int hitems = (m.header ? 2 : 0) + (m.footer ? 2 : 0), pagesize = MAXMENU - hitems, offset = m.menusel - (m.menusel%pagesize), mdisp = min(m.items.length(), pagesize), @@ -109,7 +109,7 @@ void rendermenu() if(m.header) { draw_text(m.header, x, y); - y += step; + y += step*2; } draw_text(title, x, y); y += step*2; @@ -128,7 +128,7 @@ void rendermenu() if(m.title) text_endcolumns(); if(m.footer) { - y += (mdisp-cdisp)*step; + y += ((mdisp-cdisp)+1)*step; draw_text(m.footer, x, y); } } diff --git a/source/src/scoreboard.cpp b/source/src/scoreboard.cpp index ceab549c..90881ce0 100644 --- a/source/src/scoreboard.cpp +++ b/source/src/scoreboard.cpp @@ -75,8 +75,10 @@ void renderscore(void *menu, playerent *d) void renderteamscore(void *menu, teamscore *t) { + if(!scorelines.empty()) scorelines.add(); // space between teams sline &line = scorelines.add(); - if(m_teammode) s_sprintf(line.s)("%d\t%d\t\t\t\t%s\t\t(%d players)", t->frags, t->deaths, team_string(t->team), t->teammembers.length()); + s_sprintfd(plrs)("(%d %s)", t->teammembers.length(), t->teammembers.length() == 1 ? "player" : "players"); + if(m_teammode) s_sprintf(line.s)("%d\t%d\t\t\t\t%s\t\t%s", t->frags, t->deaths, team_string(t->team), plrs); static color teamcolors[2] = { color(1, 0, 0, 0.2f), color(0, 0, 1, 0.2f) }; line.bgcolor = &teamcolors[t->team]; loopv(t->teammembers) renderscore(menu, t->teammembers[i]); @@ -101,11 +103,10 @@ void renderscores(void *menu, bool init) if(sel>=0) menuselect(menu, sel); } - s_strcat(modeline, modestr(gamemode)); if(getclientmap()[0]) { - s_strcat(modeline, ": "); - s_strcat(modeline, getclientmap()); + bool fldrprefix = !strncmp(getclientmap(), "maps/", strlen("maps/")); + s_sprintf(modeline)("\"%s\" on map %s", modestr(gamemode), fldrprefix ? getclientmap()+strlen("maps/") : getclientmap()); } extern int minutesremaining;