diff --git a/source/src/main.cpp b/source/src/main.cpp index d63bbee8..46e41601 100644 --- a/source/src/main.cpp +++ b/source/src/main.cpp @@ -846,9 +846,10 @@ int main(int argc, char **argv) initlog("cfg"); extern void *scoremenu, *teammenu, *ctfmenu, *servmenu, *searchmenu, *serverinfomenu, *kickmenu, *banmenu, *forceteammenu, *giveadminmenu, *docmenu, *applymenu; - scoremenu = addmenu("score", "cn\tname\tfrags\tdeath\tratio\tscore\tpj\tping", false, renderscores, NULL, false, true); - teammenu = addmenu("team score", "cn\tname\tfrags\tdeath\tratio\tscore\tpj\tping", false, renderscores, NULL, false, true); - ctfmenu = addmenu("ctf score", "cn\tname\tflags\tfrags\tdeath\tratio\tscore\tpj\tping", false, renderscores, NULL, false, true); + scoremenu = addmenu("score", "columns", false, renderscores, NULL, false, true); + teammenu = addmenu("team score", "columns", false, renderscores, NULL, false, true); + ctfmenu = addmenu("ctf score", "columns", false, renderscores, NULL, false, true); + reorderscorecolumns(); servmenu = addmenu("server", NULL, true, refreshservers, serverskey); searchmenu = addmenu("search", NULL, true, refreshservers, serverskey); serverinfomenu = addmenu("serverinfo", NULL, true, refreshservers, serverinfokey); diff --git a/source/src/menus.cpp b/source/src/menus.cpp index 79c04d01..35bbba00 100644 --- a/source/src/menus.cpp +++ b/source/src/menus.cpp @@ -1268,3 +1268,30 @@ void refreshapplymenu(void *menu, bool init) if(init) m->menusel = m->items.length()-2; // select OK } +void reorderscorecolumns(); +VARFP(orderscorecolumns, 0, 0, 1, reorderscorecolumns()); +void reorderscorecolumns() +{ + extern void *scoremenu, *teammenu, *ctfmenu; + switch(orderscorecolumns) + { + case 1: + { + menutitle(scoremenu, "cn\tname\tfrags\tdeath\tratio\tscore\tpj\tping"); + menutitle(teammenu, "cn\tname\tfrags\tdeath\tratio\tscore\tpj\tping"); + menutitle(ctfmenu, "cn\tname\tflags\tfrags\tdeath\tratio\tscore\tpj\tping"); + break; + } + case 0: + default: + { + menutitle(scoremenu, "frags\tdeath\tratio\tpj\tping\tcn\tname"); + menutitle(teammenu, "frags\tdeath\tratio\tpj\tping\tcn\tname"); + menutitle(ctfmenu, "flags\tfrags\tdeath\tratio\tpj\tping\tcn\tname"); + break; + } + } +} + + + diff --git a/source/src/protos.h b/source/src/protos.h index f8366248..64485974 100644 --- a/source/src/protos.h +++ b/source/src/protos.h @@ -65,6 +65,8 @@ extern void menureset(void *menu); extern void menumanual(void *menu, char *text, char *action = NULL, color *bgcolor = NULL, const char *desc = NULL); extern void menuimagemanual(void *menu, const char *filename1, const char *filename2, char *text, char *action = NULL, color *bgcolor = NULL, const char *desc = NULL); extern void menutitle(void *menu, const char *title = NULL); +extern void reorderscorecolumns(); +extern int orderscorecolumns; extern void menuheader(void *menu, char *header = NULL, char *footer = NULL); extern bool menukey(int code, bool isdown, int unicode, SDLMod mod = KMOD_NONE); extern void *addmenu(const char *name, const char *title = NULL, bool allowinput = true, void (__cdecl *refreshfunc)(void *, bool) = NULL, bool (__cdecl *keyfunc)(void *, int, bool, int) = NULL, bool hotkeys = false, bool forwardkeys = false); diff --git a/source/src/scoreboard.cpp b/source/src/scoreboard.cpp index 64f541eb..90876a74 100644 --- a/source/src/scoreboard.cpp +++ b/source/src/scoreboard.cpp @@ -116,18 +116,22 @@ void renderdiscscores(int team) const char *spect = team_isspect(d.team) ? "\f4" : ""; float ratio = SCORERATIO(d.frags, d.deaths); const char *clag = team_isspect(d.team) ? "SPECT" : ""; - if(m_flags) formatstring(line.s)("%s%s\t%d\t%d\t%d\t%.1f\t%d\t%s\tDISC", - spect, d.name, - d.flags, d.frags, d.deaths, - ratio, - d.points, - clag); - else formatstring(line.s)("%s%s\t%d\t%d\t%.1f\t%d\t%s\tDISC", - spect, d.name, - d.frags, d.deaths, - ratio, - d.points, - clag); + switch(orderscorecolumns) + { + case 1: + { + if(m_flags) formatstring(line.s)("%s%s\t%d\t%d\t%d\t%.1f\t%d\t%s\tDISC", spect, d.name, d.flags, d.frags, d.deaths, ratio, d.points, clag); + else formatstring(line.s)("%s%s\t%d\t%d\t%.1f\t%d\t%s\tDISC", spect, d.name, d.frags, d.deaths, ratio, d.points, clag); + break; + } + case 0: + default: + { + if(m_flags) formatstring(line.s)("%s%d\t%d\t%d\t%.1f\t%d\t%s\tDISC\t\t%s", spect, d.flags, d.frags, d.deaths, ratio, d.points, clag, d.name); + else formatstring(line.s)("%s%d\t%d\t%.1f\t%d\t%s\tDISC\t\t%s", spect, d.frags, d.deaths, ratio, d.points, clag, d.name); + break; + } + } } } @@ -145,20 +149,22 @@ void renderscore(playerent *d) sline &line = scorelines.add(); line.bgcolor = d==player1 ? &localplayerc : NULL; string &s = line.s; - if(m_flags) formatstring(s)("%s%d\t%s%s\t%d\t%d\t%d\t%.1f\t%d\t%s\t%s\t%s", - spect, d->clientnum, - status, colorname(d), - d->flagscore, d->frags, d->deaths, - ratio, - d->points, - clag, cping, ign); - else formatstring(s)("%s%d\t%s%s\t%d\t%d\t%.1f\t%d\t%s\t%s\t%s", - spect, d->clientnum, - status, colorname(d), - d->frags, d->deaths, - ratio, - d->points, - clag, cping, ign); + switch(orderscorecolumns) + { + case 1: + { + if(m_flags) formatstring(s)("%s%d\t%s%s\t%d\t%d\t%d\t%.1f\t%d\t%s\t%s\t%s", spect, d->clientnum, status, colorname(d), d->flagscore, d->frags, d->deaths, ratio, d->points, clag, cping, ign); + else formatstring(s)("%s%d\t%s%s\t%d\t%d\t%.1f\t%d\t%s\t%s\t%s", spect, d->clientnum, status, colorname(d), d->frags, d->deaths, ratio, d->points, clag, cping, ign); + break; + } + case 0: + default: + { + if(m_flags) formatstring(s)("%s%d\t%d\t%d\t%.1f\t%d\t%s\t%s\t%d\t%s%s%s", spect, d->flagscore, d->frags, d->deaths, ratio, d->points, clag, cping, d->clientnum, status, colorname(d), ign); + else formatstring(s)("%s%d\t%d\t%.1f\t%d\t%s\t%s\t%d\t%s%s%s", spect, d->frags, d->deaths, ratio, d->points, clag, cping, d->clientnum, status, colorname(d), ign); + break; + } + } } void renderteamscore(teamscore *t) @@ -171,9 +177,22 @@ void renderteamscore(teamscore *t) sline &line = scorelines.add(); defformatstring(plrs)("(%d %s)", t->teammembers.length(), t->teammembers.length() == 1 ? "player" : "players"); float ratio = SCORERATIO(t->frags, t->deaths); - if(m_flags) formatstring(line.s)("\t\t%d\t%d\t%d\t%.1f\t%d\t\t%s\t%s", t->flagscore, t->frags, t->deaths, ratio, t->points, team_string(t->team), plrs); - else formatstring(line.s)("\t\t%d\t%d\t%.1f\t%d\t\t%s\t%s", t->frags, t->deaths, ratio, t->points, team_string(t->team), plrs); - + switch(orderscorecolumns) + { + case 1: + { + if(m_flags) formatstring(line.s)("\t\t%d\t%d\t%d\t%.1f\t%d\t\t%s\t%s", t->flagscore, t->frags, t->deaths, ratio, t->points, team_string(t->team), plrs); + else formatstring(line.s)("\t\t%d\t%d\t%.1f\t%d\t\t%s\t%s", t->frags, t->deaths, ratio, t->points, team_string(t->team), plrs); + break; + } + case 0: + default: + { + if(m_flags) formatstring(line.s)("%d\t%d\t%d\t%.1f\t%d\t\t\t\t%s\t\t%s", t->flagscore, t->frags, t->deaths, ratio, t->points, team_string(t->team), plrs); + else formatstring(line.s)("%d\t%d\t%.1f\t%d\t\t\t\t%s\t\t%s", t->frags, t->deaths, ratio, t->points, team_string(t->team), plrs); + break; + } + } static color teamcolors[2] = { color(1.0f, 0, 0, 0.2f), color(0, 0, 1.0f, 0.2f) }; line.bgcolor = &teamcolors[team_base(t->team)]; loopv(t->teammembers) renderscore(t->teammembers[i]);