Add alternative views in serverbrowser and improve favourites
Alternative views in the serverbrowser are implemented with use favourites. Categories (names) of favourite servers, which will be displayed on the views, have to be included in "serverbrowseraltviews" alias (accessible in menu). Switching between views is possible with use Alt + Mouse wheel and Alt + Up/Down (or eventually "[" and "]", if they are dedicated keys on your keyboard). The commit also: 1. adds MATCH category to favourites; 2. shows category name in settings of favourites; 3. shows weights in serverbrowser instead of favourites image, when showweights = 1; 4. cleans up some tabs.
This commit is contained in:
@@ -94,6 +94,12 @@ sbfavourite_MODE_alpha = 0
|
||||
sbfavourite_MODE_weight = 1
|
||||
sbfavourite_MODE_keys = "#42" // automatically add servers playing towel mode
|
||||
|
||||
addfavcategory MATCH
|
||||
sbfavourite_MATCH_desc = "Preferred match servers"
|
||||
sbfavourite_MATCH_alpha = 0
|
||||
sbfavourite_MATCH_weight = 1
|
||||
sbfavourite_MATCH_ignore = 1
|
||||
|
||||
addfavcategory SEARCH
|
||||
sbfavourite_SEARCH_desc = "Server search result"
|
||||
sbfavourite_SEARCH_tag = "\f9Result:"
|
||||
|
||||
@@ -160,6 +160,7 @@ menuitem [Search for servers...] [ showmenu [search se
|
||||
menuitem [F4: Edit favourites...] [ showmenu [edit favourites] ]
|
||||
menuitem [F5: Update the serverlist from the masterserver] [ updatefrommaster 1; closemenu [serverbrowser help] ]
|
||||
menuitem [F9: Get additional server information] [ showmenu serverinfo ]
|
||||
menuitem [Edit alternative views in serverbrowser...] [ showmenu [serverbrowser alternative views] ]
|
||||
menuitem [] -1
|
||||
menuitem [Options:] -1
|
||||
menuitemcheckbox [F6: Reverse the sort order:] "$serversortdir" [ serversortdir $arg1 ]
|
||||
@@ -197,6 +198,8 @@ const addfavcatmenu [
|
||||
menuitemvar (concatword "result $" sbfavourite_ $arg1 _desc " (concatword <s $" sbfavourite_ $arg1 _tag " r>)") (concatword "showmenu [favourites " $i "]")
|
||||
]
|
||||
newmenu (concat favourites $i)
|
||||
menuitemvar ( concatword "concat " "Category name: " (c 2) (at (listfavcats) (- $i 1)) )
|
||||
menuitem [] -1
|
||||
menuitemtextinput [Tag: ] (concatword "result $" sbfavourite_ $arg1 _tag) (concatword sbfavourite_ $arg1 _tag " = $arg1") [] 15
|
||||
menuitemtextinput [Description: ] (concatword "result $" sbfavourite_ $arg1 _desc) (concatword sbfavourite_ $arg1 _desc " = $arg1") [] 45
|
||||
menuitem [] -1
|
||||
@@ -215,10 +218,10 @@ const addfavcatmenu [
|
||||
]
|
||||
|
||||
const addallfavcatmenus [
|
||||
newmenu [serverbrowser help]
|
||||
menuitem [] -1
|
||||
menuitem [Keys to add/remove servers from categories:] -1
|
||||
loop ii (listlen (listfavcats)) [ addfavcatmenu (at (listfavcats) $ii) ]
|
||||
newmenu [serverbrowser help]
|
||||
menuitem [] -1
|
||||
menuitem [Keys to add/remove servers from categories:] -1
|
||||
loop ii (listlen (listfavcats)) [ addfavcatmenu (at (listfavcats) $ii) ]
|
||||
]
|
||||
|
||||
lastsearchname = []
|
||||
@@ -229,11 +232,17 @@ menuitem "2 [ Search ]" [ closemenu [search player]; searchnickname $la
|
||||
menuinitselection 1
|
||||
|
||||
newmenu [search server]
|
||||
|
||||
menuitemtextinput [ Search for server: ] "result $sbfavourite_SEARCH_keys" [ sbfavourite_SEARCH_keys = $arg1 ]
|
||||
menuitem "2 [ Search ]" [ showonlyfavourites (addfavcategory SEARCH); showmenu server ] [ showonlyfavourites 0 ]
|
||||
menuinitselection 1
|
||||
|
||||
newmenu [serverbrowser alternative views]
|
||||
menuitem [Alt + Mouse wheel (Alt + Up/Down) toggles views in serverbrowser.] -1
|
||||
menuitem [] -1
|
||||
menuitemtextinput [Categories of favourites in alternative views: ] [getalias serverbrowseraltviews] [alias serverbrowseraltviews $arg1] [] 255
|
||||
menuitem [(type just names of categories, and not tags).] -1
|
||||
menuinitselection 2
|
||||
|
||||
newmenu getmap
|
||||
menuitem [ This server is using a different version of this map...] -1
|
||||
menuitem [] -1
|
||||
|
||||
@@ -1092,12 +1092,14 @@ bool menukey(int code, bool isdown, int unicode, SDLMod mod)
|
||||
case SDLK_UP:
|
||||
case SDL_AC_BUTTON_WHEELUP:
|
||||
if(iskeypressed(SDLK_LCTRL)) return menukey(SDLK_LEFT, isdown, 0);
|
||||
if(iskeypressed(SDLK_LALT)) return menukey(SDLK_RIGHTBRACKET, isdown, 0);
|
||||
if(!curmenu->allowinput) return false;
|
||||
menusel--;
|
||||
break;
|
||||
case SDLK_DOWN:
|
||||
case SDL_AC_BUTTON_WHEELDOWN:
|
||||
if(iskeypressed(SDLK_LCTRL)) return menukey(SDLK_RIGHT, isdown, 0);
|
||||
if(iskeypressed(SDLK_LALT)) return menukey(SDLK_LEFTBRACKET, isdown, 0);
|
||||
if(!curmenu->allowinput) return false;
|
||||
menusel++;
|
||||
break;
|
||||
|
||||
@@ -877,6 +877,30 @@ const char *favcatcheck(serverinfo &si, const char *ckeys, char *autokeys = NULL
|
||||
return res ? nkeys : NULL;
|
||||
}
|
||||
|
||||
void serverbrowseralternativeviews(int shiftdirection)
|
||||
{
|
||||
const char *ckeys = getalias("serverbrowseraltviews");
|
||||
if(!ckeys) return;
|
||||
const char *sep = " \t\n\r";
|
||||
char *keys = newstring(ckeys), *k = strtok(keys, sep);
|
||||
vector<int> cats;
|
||||
cats.add(0);
|
||||
while(k)
|
||||
{
|
||||
loopv(favcats) if(!strcmp(favcats[i], k)) cats.add(i + 1);
|
||||
k = strtok(NULL, sep);
|
||||
}
|
||||
delete[] keys;
|
||||
if(cats.length())
|
||||
{
|
||||
loopv(cats)
|
||||
{
|
||||
if(cats[i] == showonlyfavourites) { showonlyfavourites = cats[(i + shiftdirection + cats.length()) % cats.length()]; return; }
|
||||
}
|
||||
}
|
||||
showonlyfavourites = 0;
|
||||
}
|
||||
|
||||
vector<const char *> favcattags;
|
||||
|
||||
bool assignserverfavourites()
|
||||
@@ -1049,7 +1073,7 @@ void refreshservers(void *menu, bool init)
|
||||
}
|
||||
else
|
||||
{
|
||||
if(!hidefavicons && showfavtag && si.favcat > -1) favimage = getalias(favcatargname(favcats[si.favcat], FC_IMAGE));
|
||||
if(!hidefavicons && !showweights && showfavtag && si.favcat > -1) favimage = getalias(favcatargname(favcats[si.favcat], FC_IMAGE));
|
||||
filterrichtext(text, si.favcat > -1 && !favimage ? favcattags[si.favcat] : "");
|
||||
if(showweights) concatformatstring(text, "(%d)", si.weight);
|
||||
formatstring(si.full)(showfavtag ? (favimage ? "\t" : "\fs%s\fr\t") : "", text);
|
||||
@@ -1189,6 +1213,14 @@ bool serverskey(void *menu, int code, bool isdown, int unicode)
|
||||
serversort = (serversort+1) % NUMSERVSORT;
|
||||
return true;
|
||||
|
||||
case SDLK_LEFTBRACKET:
|
||||
serverbrowseralternativeviews(-1);
|
||||
return true;
|
||||
|
||||
case SDLK_RIGHTBRACKET:
|
||||
serverbrowseralternativeviews(1);
|
||||
return true;
|
||||
|
||||
case SDLK_F5:
|
||||
updatefrommaster(1);
|
||||
return true;
|
||||
|
||||
Reference in New Issue
Block a user