menu code cleanup

* fix some memory leaks
* rename stuff
* fix crash

Removed commands and variables:

  chmenumdl (replaced by menumdl)

  scorefont (replaced by "menufont score mono")

  menuitemvar (better handled with fully dynamic menus)

Changed commands:

  menufont menu font

    Sets the font for a specific menu. If menu is "", the currently
    initialised menu is used. Example: menufont score mono

  menumdl menu mdl anim rotspeed scale

    Assumes the function of the previous chmenumdl. If menu is "", the
    currently initialised menu is used. Specifies, which model to render
    and how. If only menu is specified, no model is rendered.

DOCREF chmenumdl scorefont menufont menumdl menuitemvar
This commit is contained in:
ac-stef
2017-06-06 13:17:20 +02:00
parent 7948212234
commit dbcb040eeb
12 changed files with 185 additions and 230 deletions
+3 -3
View File
@@ -51,8 +51,8 @@ tempalias __mapmodelcategories [
looplist $__mapmodelcategories [key menu] [tempalias (concatword __mm_key_ $key) $menu]
tempalias __mm_showmodel [concat alias __lastwatchedmapmodel $arg2 ";" chmenumdl (escape $arg1) (concatword mapmodels/ $arg2) all 40 3]
tempalias __mm_showmodel2 [concat chmenumdl (escape $arg1) (concatword mapmodels/ $arg2) all 40 3]
tempalias __mm_showmodel [concat alias __lastwatchedmapmodel $arg2 ";" menumdl (escape $arg1) (concatword mapmodels/ $arg2) all 40 3]
tempalias __mm_showmodel2 [concat menumdl (escape $arg1) (concatword mapmodels/ $arg2) all 40 3]
tempalias __mm_tempmenus ""
tempalias __rebuildmapmodelmenus [
@@ -168,7 +168,7 @@ tempalias __rebuildmapmodelmenus [
menuitem (concatword "edit slot #" $i ": " (editmapmodelslot $i) $origin) (concat alias __mmslot $i ";" showmenu (escape "Edit mapmodel slot")) (__mm_showmodel2 [Edit mapmodel slots] $mpath)
] [
if (strlen (mapmodelslotusage $i)) [
menuitem (concatword "unassigned slot #" $i) (concat alias __mmslot $i ";" showmenu (escape "Edit mapmodel slot")) [chmenumdl [Edit mapmodel slots] ""]
menuitem (concatword "unassigned slot #" $i) (concat alias __mmslot $i ";" showmenu (escape "Edit mapmodel slot")) [menumdl [Edit mapmodel slots] ""]
]
]
]
+95 -73
View File
@@ -35,9 +35,9 @@ tempalias __ingamemenu_2 [
const __ingamemenu_showmodel [
if (&& (< (player1 team) 4) $arg1) [
chmenumdl (curmenu) (concatword "playermodels/" (at [CLA RVSF CLA RVSF] (player1 team)) "/0" (+ 1 (player1 skin))) idle 15 3
menumdl (curmenu) (concatword "playermodels/" (at [CLA RVSF CLA RVSF] (player1 team)) "/0" (+ 1 (player1 skin))) idle 15 3
] [
chmenumdl (curmenu)
menumdl (curmenu)
]
]
@@ -180,62 +180,38 @@ menuitem "\f2\t\t [ Admin connect ]\t\t" [ connectadmin $acc1 $acc2 $acc3 ]
//// Main > Multiplayer > server > serverbrowser help ////
const __getfavattr [ push n (concatword sbfavourite_ $arg1 _ $arg2) ; n = $$n ; result (pop n) ]
newmenu [serverbrowser help]
menuitem "F1: Display this help menu" -1
menuitem "F3: Search for players by nickname\i\3" [ showmenu [search player] ]
menuitem "Search for servers\i\3" [ showmenu [search server] ]
menuitem "F4: Edit favourites\i\3" [ showmenu [edit favourites] ]
menuitem "F5: Update the serverlist from the masterserver" [ updatefrommaster 1; closecurmenu ]
menuitem "F9: Get additional server information\i\3" [ showmenu serverinfo ]
menuitem "Edit alternative views in serverbrowser\i\3" [ showmenu [serverbrowser alternative views] ]
menuitem "" -1
menuitem "Options:" -1
menuitemcheckbox "F6: Reverse the sort order:" "$serversortdir" [ serversortdir $arg1 ]
menuitemcheckbox "F7: Only show good servers:" "$showonlygoodservers" [ showonlygoodservers $arg1 ]
menuitemcheckbox "F8: Show minutes remaining:" "$showminremain" [ showminremain $arg1 ]
menuitemcheckbox "Sort official maps ontop:" "$serversortpreferofficial" [ serversortpreferofficial $arg1 ]
menuitemcheckbox "Use gamemode acronyms:" "$modeacronyms" [ modeacronyms $arg1 ]
menuitemcheckbox "Show number of all players on the servers:" "$showallplayersnumber" [ showallplayersnumber $arg1 ]
menuitemslider "Favourites tag column:\t" 0 2 "$serverbrowserhidefavtag" ["Show always" "Show when used" "Hide always"] [ serverbrowserhidefavtag $arg1 ] 1
menuitemslider "Server IP & port:\t\t" 0 2 "$serverbrowserhideip" [Show "Show in grey" Hide] [ serverbrowserhideip $arg1 ] 1
menuitemslider "Sort servers by:\t\t" 0 7 "$serversort" [Ping "Number of players" "Max players" "Minutes remaining" "Map name" Gamemode "IP address" "Server description"] [ serversort $arg1 ] 1
menuinitselection 1
tempalias addallfavcatmenus [
newmenu [serverbrowser help]
menuitem "" -1
menuitem "Keys to add/remove servers from categories:" -1
loop ii (listlen (listfavcats)) [ addfavcatmenu (at (listfavcats) $ii) ]
addallfavcatmenus = []
]
const addfavcatmenu [
tempalias i (+ 1 (findlist (listfavcats) $arg1))
newmenu [edit favourites]
if (< $i 11) [
menuitemvar (concatword "concat " (mod $i 10) ": $" sbfavourite_ $arg1 _desc " (concatword <\fs $" sbfavourite_ $arg1 _tag " \fr>)") (concatword "showmenu [favourites " $i "]")
newmenu [serverbrowser help]
menuitemvar (concatword "concat " (mod $i 10) ": Toggle category $" sbfavourite_ $arg1 _desc " (concatword <\fs $" sbfavourite_ $arg1 _tag " \fr>)") -1
] [
menuitemvar (concatword "result $" sbfavourite_ $arg1 _desc " (concatword <\fs $" sbfavourite_ $arg1 _tag " \fr>)") (concatword "showmenu [favourites " $i "]")
]
newmenu (concat favourites $i)
menuitemvar ( concatword "concat " "Category name: \f2" (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
menuitemslider "Background red:\t" 0 100 (concatword "$" sbfavourite_ $arg1 _red) 10 (concatword sbfavourite_ $arg1 _red " = $arg1") 1
menuitemslider "Background green:\t" 0 100 (concatword "$" sbfavourite_ $arg1 _green) 10 (concatword sbfavourite_ $arg1 _green " = $arg1") 1
menuitemslider "Background blue:\t" 0 100 (concatword "$" sbfavourite_ $arg1 _blue) 10 (concatword sbfavourite_ $arg1 _blue " = $arg1") 1
menuitemslider "Background alpha:\t" 0 100 (concatword "$" sbfavourite_ $arg1 _alpha) 10 (concatword sbfavourite_ $arg1 _alpha " = $arg1") 1
menuitem "" -1
menuitemtextinput "Keyword list: " (concatword "result $" sbfavourite_ $arg1 _keys) (concatword sbfavourite_ $arg1 _keys " = $arg1") [] 255
menuitem "" -1
menuitemtextinput "Weight: " (concatword "result $" sbfavourite_ $arg1 _weight) (concatword sbfavourite_ $arg1 _weight " = $arg1") [] 10
menuitem "" -1
menuitemslider "" 0 1 (concatword "result $" sbfavourite_ $arg1 _ignore) ["Enable this category" "Ignore this category"] (concatword sbfavourite_ $arg1 _ignore " = $arg1") 1
menuitem "" -1
menuitem "Show servers of this category\i\3" (concat showonlyfavourites $i ";showmenu server") [ showonlyfavourites 0 ]
menuinit [
resetcurmenu
menuitem "F1: Display this help menu" -1
menuitem "F3: Search for players by nickname\i\3" [ showmenu [search player] ]
menuitem "Search for servers\i\3" [ showmenu [search server] ]
menuitem "F4: Edit favourites\i\3" [ showmenu [edit favourites] ]
menuitem "F5: Update the serverlist from the masterserver" [ updatefrommaster 1; closecurmenu ]
menuitem "F9: Get additional server information\i\3" [ showmenu serverinfo ]
menuitem "Edit alternative views in serverbrowser\i\3" [ showmenu [serverbrowser alternative views] ]
menuitem "" -1
menuitem "Options:" -1
menuitemcheckbox "F6: Reverse the sort order:" "$serversortdir" [ serversortdir $arg1 ]
menuitemcheckbox "F7: Only show good servers:" "$showonlygoodservers" [ showonlygoodservers $arg1 ]
menuitemcheckbox "F8: Show minutes remaining:" "$showminremain" [ showminremain $arg1 ]
menuitemcheckbox "Sort official maps ontop:" "$serversortpreferofficial" [ serversortpreferofficial $arg1 ]
menuitemcheckbox "Use gamemode acronyms:" "$modeacronyms" [ modeacronyms $arg1 ]
menuitemcheckbox "Show number of all players on the servers:" "$showallplayersnumber" [ showallplayersnumber $arg1 ]
menuitemslider "Favourites tag column:\t" 0 2 "$serverbrowserhidefavtag" ["Show always" "Show when used" "Hide always"] [ serverbrowserhidefavtag $arg1 ] 1
menuitemslider "Server IP & port:\t\t" 0 2 "$serverbrowserhideip" [Show "Show in grey" Hide] [ serverbrowserhideip $arg1 ] 1
menuitemslider "Sort servers by:\t\t" 0 7 "$serversort" [Ping "Number of players" "Max players" "Minutes remaining" "Map name" Gamemode "IP address" "Server description"] [ serversort $arg1 ] 1
if (strlen (listfavcats)) [
menuitem "" -1
menuitem "Keys to add/remove servers from categories:" -1
looplisti (listfavcats) fav [
if (< $i 10) [
menuitem (concatword (+ $i 1) ": Toggle category " (__getfavattr $fav desc) " <\fs" (__getfavattr $fav tag) "\fr>") -1
]
]
]
]
//// Main > Multiplayer > server > serverbrowser help > search player ////
@@ -254,6 +230,47 @@ menuitem "\f2\t\t[ Search ]" [ showonlyfavourites (addfavcategory SEARCH); showm
menuinitselection 1
//// Main > Multiplayer > server > serverbrowser help > edit favourites ////
tempalias __curfav 1
newmenu [edit favourites]
menuinit [
resetcurmenu
looplisti (listfavcats) fav [
if (< $i 10) [
menuitem (concatword (+ 1 (mod $i 10)) ": " (__getfavattr $fav desc) " <\fs" (__getfavattr $fav tag) "\fr>") (concatword "__curfav = " $i " ; showmenu [edit favourites category]")
] [
menuitem (concatword (__getfavattr $fav desc) " <\fs" (__getfavattr $fav tag) "\fr>") (concatword "__curfav = " $i " ; showmenu [edit favourites category]")
]
]
]
//// Main > Multiplayer > server > serverbrowser help > edit favourites > edit favourites category ////
newmenu [edit favourites category]
menuinit [
resetcurmenu
push fav (at (listfavcats) $__curfav)
push n (+ 1 $__curfav)
menuitem (concatword "Category #" $n ", name: \f2" $fav) -1
menuitem "" -1
menuitemtextinput "Tag: " (concatword "escapenoquotes $" sbfavourite_ $fav _tag) (concatword sbfavourite_ $fav _tag " = (at (addpunct $arg1) 0)") [] 15
menuitemtextinput "Description: " (concatword "escapenoquotes $" sbfavourite_ $fav _desc) (concatword sbfavourite_ $fav _desc " = (at (addpunct $arg1) 0)") [] 45
menuitem "" -1
menuitemslider "Background red: \t" 0 100 (__getfavattr $fav red) 10 (concatword sbfavourite_ $fav _red " = $arg1") 1
menuitemslider "Background green:\t" 0 100 (__getfavattr $fav green) 10 (concatword sbfavourite_ $fav _green " = $arg1") 1
menuitemslider "Background blue: \t" 0 100 (__getfavattr $fav blue) 10 (concatword sbfavourite_ $fav _blue " = $arg1") 1
menuitemslider "Background alpha:\t" 0 100 (__getfavattr $fav alpha) 10 (concatword sbfavourite_ $fav _alpha " = $arg1") 1
menuitem "" -1
menuitemtextinput "Keyword list:" (concatword "result $" sbfavourite_ $fav _keys) (concatword sbfavourite_ $fav _keys " = $arg1") [] 255
menuitem "" -1
menuitemtextinput "Weight:" (concatword "result $" sbfavourite_ $fav _weight) (concatword sbfavourite_ $fav _weight " = $arg1") [] 10
menuitem "" -1
menuitemradio "" 0 1 (__getfavattr $fav ignore) ["Enable this category " "Ignore this category"] (concatword sbfavourite_ $fav _ignore " = $arg1")
menuitem "" -1
menuitem "Show servers of this category\i\3" (concat showonlyfavourites $n ";showmenu server") [ showonlyfavourites 0 ]
pop fav n
]
//// Main > Multiplayer > server > serverbrowser help > serverinfo ////
// hardcoded
@@ -271,22 +288,27 @@ menuinitselection 2
// called by sbconnect
newmenu [password required]
menuinit [ sbpwd = [] ] // Resets the aliases
menuitemvar [result $sbmsg]
menuitem [You need a password to join it.] -1
menuitem [] -1
menuitemtextinput "Password: \t" [] [ sbpwd = $arg1 ] [] 128 1
menuitem [] -1
menuitem "\f2\t\t [ Connect ]\t\t" [ echo connecting to $sbdesc ; connect $sbdns $sbport $sbpwd ]
menuitem "\f2\t\t [ Connect without password ]\t\t" [ echo connecting to $sbdesc ; connect $sbdns $sbport ]
menuinitselection 3
menuinit [
resetcurmenu
sbpwd = ""
menuitem $sbmsg
menuitem "You need a password to join it." -1
menuitem "" -1
menuitemtextinput "Password: \t" [] [ sbpwd = $arg1 ] [] 128 1
menuitem "" -1
menuitem "\f2\t\t [ Connect ]\t\t" [ echo connecting to $sbdesc ; connect $sbdns $sbport $sbpwd ]
menuitem "\f2\t\t [ Connect without password ]\t\t" [ echo connecting to $sbdesc ; connect $sbdns $sbport ]
menuinitselection 3
]
newmenu getmap
menuitem [ This server is using a different version of this map...] -1
menuitem [] -1
menuitemvar "result $__getmaprevisions"
menuitem [] -1
menuitem "\f2 [ Download the servers map version and join the game ]" [ getmap ]
menuitem "\f3 [ Keep the local map version and disconnect from the server ]" [ showmenu ""; disconnect ]
menuinitselection 4
menuinit [
resetcurmenu
menuitem " This server is using a different version of this map..." -1
menuitem "" -1
menuitem $__getmaprevisions"
menuitem " -1
menuitem "\f2 [ Download the servers map version and join the game ]" [ getmap ]
menuitem "\f3 [ Keep the local map version and disconnect from the server ]" [ showmenu ""; disconnect ]
menuinitselection 4
]
+24 -24
View File
@@ -199,36 +199,33 @@ menuitemcheckbox "Use high-res player skins" "(>= (findlist (zipmodlist active)
newmenu Weapons
menuinit [ menuselection (curmenu) (findlist "assault subgun sniper shotgun carbine" $nextprimary) ]
menumdl weapons/assault/menu mapmodel 75 12
looplist [
assault "MTP-57 Assault Rifle"
subgun "A-ARD/10 Submachine Gun"
sniper "Precision Tech AD-81 Sniper Rifle"
shotgun "V-19 Combat Shotgun"
carbine "TMP-M&A Carbine"
] [ w desc ] [execute (format [menuitem [%2] [nextprimary %1 ; echo %2 selected] [chmenumdl Weapons weapons/%1/menu mapmodel 75 12] ] $w $desc) ]
] [ w desc ] [execute (format [menuitem [%2] [nextprimary %1 ; echo %2 selected] [menumdl Weapons weapons/%1/menu mapmodel 75 12] ] $w $desc) ]
//// Main > Settings > Gameplay > CLA ////
newmenu CLA
menuinit [ menuselection CLA (player1 skin_cla) ]
menumdl playermodels/CLA/01 all 50 4
menuitem [Comandante] [ skin_cla 0 ] [ chmenumdl CLA playermodels/CLA/01 all 50 4 ]
menuitem [Psycho] [ skin_cla 1 ] [ chmenumdl CLA playermodels/CLA/02 all 50 4 ]
menuitem [Bomber] [ skin_cla 2 ] [ chmenumdl CLA playermodels/CLA/03 all 50 4 ]
menuitem [Ripper] [ skin_cla 3 ] [ chmenumdl CLA playermodels/CLA/04 all 50 4 ]
menuitem [Comandante] [ skin_cla 0 ] [ menumdl CLA playermodels/CLA/01 all 50 4 ]
menuitem [Psycho] [ skin_cla 1 ] [ menumdl CLA playermodels/CLA/02 all 50 4 ]
menuitem [Bomber] [ skin_cla 2 ] [ menumdl CLA playermodels/CLA/03 all 50 4 ]
menuitem [Ripper] [ skin_cla 3 ] [ menumdl CLA playermodels/CLA/04 all 50 4 ]
//// Main > Settings > Gameplay > RVSF ////
newmenu RVSF
menuinit [menuselection RVSF (player1 skin_rvsf)]
menumdl playermodels/RVSF/01 all 50 4
menuitem [Alpha] [ skin_rvsf 0 ] [ chmenumdl RVSF playermodels/RVSF/01 all 50 4 ]
menuitem [Tango] [ skin_rvsf 1 ] [ chmenumdl RVSF playermodels/RVSF/02 all 50 4 ]
menuitem [Cobra] [ skin_rvsf 2 ] [ chmenumdl RVSF playermodels/RVSF/03 all 50 4 ]
menuitem [Viper] [ skin_rvsf 3 ] [ chmenumdl RVSF playermodels/RVSF/04 all 50 4 ]
menuitem [Swat] [ skin_rvsf 4 ] [ chmenumdl RVSF playermodels/RVSF/05 all 50 4 ]
menuitem [Police] [ skin_rvsf 5 ] [ chmenumdl RVSF playermodels/RVSF/06 all 50 4 ]
menuitem [Alpha] [ skin_rvsf 0 ] [ menumdl RVSF playermodels/RVSF/01 all 50 4 ]
menuitem [Tango] [ skin_rvsf 1 ] [ menumdl RVSF playermodels/RVSF/02 all 50 4 ]
menuitem [Cobra] [ skin_rvsf 2 ] [ menumdl RVSF playermodels/RVSF/03 all 50 4 ]
menuitem [Viper] [ skin_rvsf 3 ] [ menumdl RVSF playermodels/RVSF/04 all 50 4 ]
menuitem [Swat] [ skin_rvsf 4 ] [ menumdl RVSF playermodels/RVSF/05 all 50 4 ]
menuitem [Police] [ skin_rvsf 5 ] [ menumdl RVSF playermodels/RVSF/06 all 50 4 ]
//// Main > Settings > Gameplay > Weapon Settings ////
@@ -419,16 +416,19 @@ menuitem "Customize crosshairs\i\3" [ showmenu [Customize c
newmenu [Customize crosshairs]
tempalias __crosshairset teammate
menuitemslider "Crosshair size: " 0 50 "$crosshairsize" 5 [ crosshairsize $arg1 ]
menuitem "Change default crosshair\i\3" [ tempalias __crosshairset default ; showmenu Crosshairs ]
menuitem "Change scope crosshair\i\3" [ tempalias __crosshairset scope ; showmenu Crosshairs ]
menuitem "" -1
menuitemslider "Choose crosshair: " 0 -1 [findlist (listoptions crosshairnames) $__crosshairset] (listoptions crosshairnames) [ tempalias __crosshairset (at (listoptions crosshairnames) $arg1) ; refreshcurmenu ]
menuitemvar [ concat "Change" $__crosshairset "crosshair\i\3" ] [ showmenu Crosshairs ]
menuitem "" -1
menuitemcheckbox "Crosshair effect: change color for low health" [ (at "0 1 1 0" $crosshairfx) ] [ crosshairfx (at (if $arg1 ["2 1 2 1"] ["0 3 0 3"]) $crosshairfx) ]
menuitemcheckbox "Crosshair effect: show assault rifle spread increase" [ (at "0 1 0 1" $crosshairfx) ] [ crosshairfx (at (if $arg1 ["3 1 1 3"] ["0 2 2 0"]) $crosshairfx) ]
menuitemcheckbox "Crosshair effect: show team-sign when aiming at teammates " "$crosshairteamsign" [ crosshairteamsign $arg1 ]
menuinit [
resetcurmenu
menuitemslider "Crosshair size: " 0 50 "$crosshairsize" 5 [ crosshairsize $arg1 ]
menuitem "Change default crosshair\i\3" [ tempalias __crosshairset default ; showmenu Crosshairs ]
menuitem "Change scope crosshair\i\3" [ tempalias __crosshairset scope ; showmenu Crosshairs ]
menuitem "" -1
menuitemslider "Choose crosshair: " 0 -1 [findlist (listoptions crosshairnames) $__crosshairset] (listoptions crosshairnames) [ tempalias __crosshairset (at (listoptions crosshairnames) $arg1) ; refreshcurmenu ]
menuitem (concat "Change" $__crosshairset "crosshair\i\3") [ showmenu Crosshairs ]
menuitem "" -1
menuitemcheckbox "Crosshair effect: change color for low health" [ (at "0 1 1 0" $crosshairfx) ] [ crosshairfx (at (if $arg1 ["2 1 2 1"] ["0 3 0 3"]) $crosshairfx) ]
menuitemcheckbox "Crosshair effect: show assault rifle spread increase" [ (at "0 1 0 1" $crosshairfx) ] [ crosshairfx (at (if $arg1 ["3 1 1 3"] ["0 2 2 0"]) $crosshairfx) ]
menuitemcheckbox "Crosshair effect: show team-sign when aiming at teammates " "$crosshairteamsign" [ crosshairteamsign $arg1 ]
]
//// Main > Settings > Mouse > Customize crosshairs > Crosshairs ////
+1
View File
@@ -60,6 +60,7 @@ const fullscreentoggle [ fullscreen (! $fullscreen) ]
const editsvar [ inputcommand $$arg1 (concatword "push q (addpunct $cmdbuf) ; " $arg1 " (at $q 0) ; pop q") (concatword "edit " $arg1 :) ]
const editmapmsg [ editsvar mapmsg ]
const editalias [ if (checkalias $arg1) 0 [ alias $arg1 "" ] ; inputcommand $$arg1 (concatword "push q (addpunct $cmdbuf) ; " $arg1 " = (at $q 0) ; pop q") (concatword "edit " $arg1 :) ]
const escapenoquotes [ substr (escape $arg1) 1 (- (strlen (escape $arg1)) 2) ]
const run [ push n (concatword "exec config/" $arg1 ".cfg ") ; loop i (- $numargs 1) [ n = (concat $n (getalias (concatword "arg" (+ $i 2)))) ] ; n ; pop n]
const closecurmenu [ closemenu (curmenu) ]
const resetcurmenu [ delmenu (curmenu) ; newmenu (curmenu) ]
+1 -1
View File
@@ -1628,7 +1628,7 @@ void refreshsopmenu(void *menu, bool init)
string kbr;
if(getalias("_kickbanreason")!=NULL) formatstring(kbr)(" [ %s ]", getalias("_kickbanreason")); // leading space!
formatstring(m.cmd)("%s %d%s", menu==kickmenu ? "kick" : (menu==banmenu ? "ban" : (menu==forceteammenu ? "forceteam" : "giveadmin")), i, (menu==kickmenu||menu==banmenu)?(strlen(kbr)>8?kbr:" NONE"):""); // 8==3 + "format-extra-chars"
menumanual(menu, m.name, m.cmd);
menuitemmanual(menu, m.name, m.cmd);
}
}
+2 -2
View File
@@ -1363,7 +1363,7 @@ void parsemessages(int cn, playerent *d, ucharbuf &p, bool demo = false)
conoutf("no demos available");
mline &m = demo_mlines.add();
copystring(m.name, "no demos available");
menumanual(downloaddemomenu,m.name);
menuitemmanual(downloaddemomenu,m.name);
}
else
{
@@ -1375,7 +1375,7 @@ void parsemessages(int cn, playerent *d, ucharbuf &p, bool demo = false)
mline &m = demo_mlines.add();
formatstring(m.name)("%d. %s", i+1, text);
formatstring(m.cmd)("getdemo %d", i+1);
menumanual(downloaddemomenu, m.name, m.cmd);
menuitemmanual(downloaddemomenu, m.name, m.cmd);
}
}
break;
+2 -2
View File
@@ -682,7 +682,7 @@ void renderdocsection(void *menu, bool init)
}
msections.sort(msectionsort);
menureset(menu);
loopv(msections) { menumanual(menu, msections[i].name, msections[i].cmd, NULL, msections[i].desc); }
loopv(msections) { menuitemmanual(menu, msections[i].name, msections[i].cmd, NULL, msections[i].desc); }
return;
}
}
@@ -698,6 +698,6 @@ void renderdocmenu(void *menu, bool init)
{
maction &a = actions.add();
formatstring(a.cmd)("showmenu [%s]", sections[i].name);
menumanual(menu, sections[i].name, a.cmd);
menuitemmanual(menu, sections[i].name, a.cmd);
}
}
+1 -2
View File
@@ -1174,7 +1174,7 @@ int main(int argc, char **argv)
scoremenu = addmenu("score", "columns", false, renderscores, NULL, false, true);
servmenu = addmenu("server", NULL, true, refreshservers, serverskey);
searchmenu = addmenu("search", NULL, true, refreshservers, serverskey);
serverinfomenu = addmenu("serverinfo", NULL, true, refreshservers, serverinfokey);
serverinfomenu = addmenu("serverinfo", "extended server information (F5: refresh)", true, refreshservers, serverinfokey);
kickmenu = addmenu("kick player", NULL, true, refreshsopmenu);
banmenu = addmenu("ban player", NULL, true, refreshsopmenu);
forceteammenu = addmenu("force team", NULL, true, refreshsopmenu);
@@ -1231,7 +1231,6 @@ int main(int argc, char **argv)
autostartscripts(""); // all remaining scripts
execfile("config/autoexec.cfg");
exechook(HOOK_SP_MP, "autoexec", "");
execute("addallfavcatmenus"); // exec here, to add all categories (including those defined in autoexec.cfg)
initing = NOT_INITING;
uniformtexres = !hirestextures;
+40 -108
View File
@@ -298,29 +298,6 @@ struct mitemtext : mitemmanual
}
};
struct mitemtextvar : mitemmanual
{
string dtext;
const char *textexp;
mitemtextvar(gmenu *parent, const char *evalp, char *action, char *hoveraction) : mitemmanual(parent, dtext, action, hoveraction, NULL, NULL)
{
dtext[0] = '\0';
textexp = evalp;
}
virtual ~mitemtextvar()
{
DELETEA(textexp);
DELETEA(action);
DELETEA(hoveraction);
}
virtual void init()
{
char *r = executeret(textexp);
copystring(dtext, r ? r : "");
if(r) delete[] r;
}
};
VARP(hidebigmenuimages, 0, 0, 1);
struct mitemimagemanual : mitemmanual
@@ -912,7 +889,7 @@ void delmenu(const char *name)
}
COMMAND(delmenu, "s");
void menumanual(void *menu, char *text, char *action, color *bgcolor, const char *desc)
void menuitemmanual(void *menu, char *text, char *action, color *bgcolor, const char *desc)
{
gmenu &m = *(gmenu *)menu;
m.items.add(new mitemmanual(&m, text, action, NULL, bgcolor, desc));
@@ -924,45 +901,33 @@ void menuimagemanual(void *menu, const char *filename, const char *altfontname,
m.items.add(new mitemimagemanual(&m, filename, altfontname, text, action, NULL, bgcolor, desc));
}
void menutitle(void *menu, const char *title)
void menutitlemanual(void *menu, const char *title)
{
gmenu &m = *(gmenu *)menu;
m.title = title;
}
void menuheader(void *menu, char *header, char *footer)
void menuheader(void *menu, char *header, char *footer, bool heap)
{
gmenu &m = *(gmenu *)menu;
m.header = header && header[0] ? header : NULL;
m.footer = footer && footer[0] ? footer : NULL;
if(m.headfootheap) { DELSTRING(m.header); DELSTRING(m.footer); }
m.header = header;
m.footer = footer;
m.headfootheap = heap; // false: "manual"
}
void lastmenu_header(char *header, char *footer)
COMMANDF(menuheader, "ss", (char *header, char *footer) { if(lastmenu) menuheader(lastmenu, *header ? newstring(header) : NULL, *footer ? newstring(footer) : NULL, true); });
void menufont(char *menu, const char *usefont)
{
if(lastmenu)
gmenu *m = *menu ? menus.access(menu) : lastmenu;
if(m)
{
menuheader(lastmenu, newstring(header), newstring(footer));
DELSTRING(m->usefont);
m->usefont = usefont && *usefont ? newstring(usefont) : NULL;
}
else conoutf("no last menu to apply to");
}
COMMANDN(menuheader, lastmenu_header, "ss");
void menufont(void *menu, const char *usefont)
{
gmenu &m = *(gmenu *)menu;
if(usefont==NULL)
{
DELETEA(m.usefont);
m.usefont = NULL;
} else m.usefont = newstring(usefont);
}
void setmenufont(char *usefont)
{
if(!lastmenu) return;
menufont(lastmenu, usefont);
}
COMMANDN(menufont, setmenufont, "s");
COMMAND(menufont, "ss");
void setmenublink(int *truth)
{
@@ -975,6 +940,7 @@ COMMANDN(menucanblink, setmenublink, "i");
void menuinit(char *initaction)
{
if(!lastmenu) return;
DELSTRING(lastmenu->initaction);
lastmenu->initaction = newstring(initaction);
}
COMMAND(menuinit, "s");
@@ -1021,19 +987,10 @@ COMMAND(menuselection, "si");
void menuitem(char *text, char *action, char *hoveraction, char *desc)
{
if(!lastmenu) return;
char *t = newstring(text);
lastmenu->items.add(new mitemtext(lastmenu, t, newstring(action[0] ? action : text), hoveraction[0] ? newstring(hoveraction) : NULL, NULL, *desc ? newstring(desc) : NULL));
lastmenu->items.add(new mitemtext(lastmenu, newstring(text), newstring(action[0] ? action : text), hoveraction[0] ? newstring(hoveraction) : NULL, NULL, *desc ? newstring(desc) : NULL));
}
COMMAND(menuitem, "ssss");
void menuitemvar(char *eval, char *action, char *hoveraction)
{
if(!lastmenu) return;
char *t = newstring(eval);
lastmenu->items.add(new mitemtextvar(lastmenu, t, action[0] ? newstring(action) : NULL, hoveraction[0] ? newstring(hoveraction) : NULL));
}
COMMAND(menuitemvar, "sss");
void menuitemimage(char *name, char *text, char *action, char *hoveraction)
{
if(!lastmenu) return;
@@ -1082,6 +1039,13 @@ void menuitemradio(char *text, int *min_, int *max_, char *value, char *display,
}
COMMAND(menuitemradio, "siisss");
void menuitemcheckbox(char *text, char *value, char *action, int *pos)
{
if(!lastmenu) return;
lastmenu->items.add(new mitemcheckbox(lastmenu, newstring(text), newstring(value), action[0] ? newstring(action) : NULL, clamp(*pos, 0, 100), NULL));
}
COMMAND(menuitemcheckbox, "sssi");
void menuitemkeyinput(char *text, char *bindcmd)
{
if(!lastmenu) return;
@@ -1103,23 +1067,18 @@ void menuitemspectkeyinput(char *text, char *bindcmd)
}
COMMAND(menuitemspectkeyinput, "ss");
void menuitemcheckbox(char *text, char *value, char *action, int *pos)
void menumdl(char *menu, char *mdl, char *anim, int *rotspeed, int *scale)
{
if(!lastmenu) return;
lastmenu->items.add(new mitemcheckbox(lastmenu, newstring(text), newstring(value), action[0] ? newstring(action) : NULL, clamp(*pos, 0, 100), NULL));
gmenu *m = *menu ? menus.access(menu) : lastmenu;
if(!m) return;
DELETEA(m->mdl);
if(!*mdl) return;
m->mdl = newstring(mdl);
m->anim = findanim(anim)|ANIM_LOOP;
m->rotspeed = clamp(*rotspeed, 0, 100);
m->scale = clamp(*scale, 0, 100);
}
COMMAND(menuitemcheckbox, "sssi");
void menumdl(char *mdl, char *anim, int *rotspeed, int *scale)
{
if(!lastmenu || !mdl || !anim) return;
gmenu &menu = *lastmenu;
menu.mdl = newstring(mdl);
menu.anim = findanim(anim)|ANIM_LOOP;
menu.rotspeed = clamp(*rotspeed, 0, 100);
menu.scale = clamp(*scale, 0, 100);
}
COMMAND(menumdl, "ssii");
COMMAND(menumdl, "sssii");
void menudirlist(char *dir, char *ext, char *action, int *image, char *searchfile)
{
@@ -1136,28 +1095,14 @@ void menudirlist(char *dir, char *ext, char *action, int *image, char *searchfil
}
COMMAND(menudirlist, "sssis");
void chmenumdl(char *menu, char *mdl, char *anim, int *rotspeed, int *scale)
{
if(!menu || !menus.access(menu)) return;
gmenu &m = menus[menu];
DELETEA(m.mdl);
if(!mdl ||!*mdl) return;
m.mdl = newstring(mdl);
m.anim = findanim(anim)|ANIM_LOOP;
m.rotspeed = clamp(*rotspeed, 0, 100);
m.scale = clamp(*scale, 0, 100);
}
COMMAND(chmenumdl, "sssii");
void chmenutexture(char *menu, char *texname, char *title)
{
if(!*menu || !menus.access(menu)) return;
gmenu &m = menus[menu];
char *newtex = *texname ? newstring(texname) : NULL;
DELETEA(m.previewtexture);
m.previewtexture = newtex;
DELETEA(m.previewtexturetitle);
m.previewtexturetitle = *title ? newstring(title) : NULL;
gmenu *m = *menu ? menus.access(menu) : NULL;
if(!m) return;
DELETEA(m->previewtexture);
if(*texname) m->previewtexture = newstring(texname);
DELETEA(m->previewtexturetitle);
if(*title) m->previewtexturetitle = newstring(title);
}
COMMAND(chmenutexture, "sss");
@@ -1634,16 +1579,3 @@ void refreshapplymenu(void *menu, bool init)
m->items.add(new mitemtext(m, newstring("No"), newstring("echo [..restart AssaultCube to apply the new settings]"), NULL, NULL));
if(init) m->menusel = m->items.length()-2; // select OK
}
void setscorefont();
VARFP(scorefont, 0, 0, 1, setscorefont());
void setscorefont()
{
switch(scorefont)
{
case 1: menufont(scoremenu, "mono"); break;
case 0:
default: menufont(scoremenu, NULL); break;
}
}
+7 -5
View File
@@ -165,11 +165,11 @@ extern keym *findbindc(int code);
extern void rendermenu();
extern bool menuvisible();
extern void menureset(void *menu);
extern void menumanual(void *menu, char *text, char *action = NULL, color *bgcolor = NULL, const char *desc = NULL);
extern void menuitemmanual(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 menutitlemanual(void *menu, const char *title);
extern bool needscoresreorder;
extern void menuheader(void *menu, char *header = NULL, char *footer = NULL);
extern void menuheader(void *menu, char *header, char *footer, bool heap = false);
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);
extern bool rendermenumdl();
@@ -224,7 +224,6 @@ struct gmenu
{
const char *name, *title, *header, *footer;
vector<mitem *> items;
int mwidth;
int menusel, menuselinit;
bool allowinput, inited, hotkeys, forwardkeys;
void (__cdecl *refreshfunc)(void *, bool);
@@ -235,6 +234,7 @@ struct gmenu
bool persistentselection;
bool synctabstops;
bool hasdesc;
bool headfootheap;
const char *mdl;
int anim, rotspeed, scale;
int footlen;
@@ -242,7 +242,9 @@ struct gmenu
char *previewtexture, *previewtexturetitle;
mdirlist *dirlist;
gmenu() : name(0), title(0), header(0), footer(0), menuselinit(-1), initaction(0), usefont(0), allowblink(false), persistentselection(false), synctabstops(false), hasdesc(false), mdl(0), footlen(0), xoffs(0), yoffs(0), previewtexture(NULL), previewtexturetitle(NULL), dirlist(0) {}
gmenu() : name(NULL), title(NULL), header(NULL), footer(NULL), menuselinit(-1), initaction(NULL), usefont(NULL),
allowblink(false), persistentselection(false), synctabstops(false), hasdesc(false), headfootheap(false),
mdl(NULL), footlen(0), xoffs(0), yoffs(0), previewtexture(NULL), previewtexturetitle(NULL), dirlist(NULL) {}
virtual ~gmenu()
{
DELETEA(name);
+1 -1
View File
@@ -294,7 +294,7 @@ void reorderscorecolumns()
sscore.addcol(sc_clientnum, "cn");
sscore.addcol(sc_name, "name");
copystring(scoreboardtitle, sscore.getcols());
menutitle(scoremenu, scoreboardtitle);
menutitlemanual(scoremenu, scoreboardtitle);
}
void renderscores(void *menu, bool init)
+8 -9
View File
@@ -803,7 +803,7 @@ void addfavcategory(const char *refdes)
void listfavcats()
{
const char *str = conc((const char **)&favcats[0], favcats.length(), true);
const char *str = conc((const char **)favcats.getbuf(), favcats.length(), true);
result(str);
delete [] str;
}
@@ -986,7 +986,6 @@ void refreshservers(void *menu, bool init)
loopv(servers) if(lastselectedserver == servers[i]) { found = true; break; }
if(!found) lastselectedserver = NULL;
}
menutitle(menu, "extended server information (F5: refresh)");
menureset(menu);
static string infotext;
static char dummy = '\0';
@@ -994,8 +993,8 @@ void refreshservers(void *menu, bool init)
{
serverinfo &si = *lastselectedserver;
formatstring(si.full)("%s:%d %s", si.name, si.port, si.sdesc);
menumanual(menu, si.full);
menumanual(menu, &dummy);
menuitemmanual(menu, si.full);
menuitemmanual(menu, &dummy);
if(si.infotexts.length() && !pinglastselected)
{
infotext[0] = '\0';
@@ -1011,7 +1010,7 @@ void refreshservers(void *menu, bool init)
}
else
copystring(infotext, " -- no server selected --");
if(*infotext) menumanual(menu, infotext);
if(*infotext) menuitemmanual(menu, infotext);
return;
}
if((init && issearch) || totalmillis - lastinfo >= (servpingrate * (issearch ? 2 : 1))/(maxservpings ? max(1, (servers.length() + maxservpings - 1) / maxservpings) : 1))
@@ -1126,11 +1125,11 @@ void refreshservers(void *menu, bool init)
cur++;
if(cur == 4)
{
menumanual(menu, t, NULL, NULL, NULL);
menuitemmanual(menu, t, NULL, NULL, NULL);
cur = 0;
}
}
if(cur) menumanual(menu, t, NULL, NULL, NULL);
if(cur) menuitemmanual(menu, t, NULL, NULL, NULL);
}
}
si.menuline_to = ((gmenu *)menu)->items.length();
@@ -1150,7 +1149,7 @@ void refreshservers(void *menu, bool init)
};
defformatstring(allplrs)("%d", allplayers);
formatstring(title)(titles[serversort], showfavtag ? "fav\t" : "", !issearch && showallplayersnumber ? allplrs : "", issearch ? " search results for \f3" : " (F1: Help/Settings)", issearch ? cursearch : "");
menutitle(menu, title);
menutitlemanual(menu, title);
static string notfoundmsg, headermsg;
notfoundmsg[0] = '\0';
@@ -1165,7 +1164,7 @@ void refreshservers(void *menu, bool init)
menuheader(menu, headermsg, NULL);
if(!((gmenu *)menu)->items.length() && !issearch) formatstring(notfoundmsg)("\t(no servers in this category)");
}
if(*notfoundmsg) menumanual(menu, notfoundmsg, NULL, NULL, NULL);
if(*notfoundmsg) menuitemmanual(menu, notfoundmsg, NULL, NULL, NULL);
}
}