diff --git a/config/menus_edit.cfg b/config/menus_edit.cfg index d8b42c0c..58787d79 100644 --- a/config/menus_edit.cfg +++ b/config/menus_edit.cfg @@ -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] ""] ] ] ] diff --git a/config/menus_multiplayer.cfg b/config/menus_multiplayer.cfg index d6a78ffb..8832d191 100644 --- a/config/menus_multiplayer.cfg +++ b/config/menus_multiplayer.cfg @@ -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 +] diff --git a/config/menus_settings.cfg b/config/menus_settings.cfg index 57ce1c91..d45ec5a4 100644 --- a/config/menus_settings.cfg +++ b/config/menus_settings.cfg @@ -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 //// diff --git a/config/scripts.cfg b/config/scripts.cfg index c3665977..087f8e47 100644 --- a/config/scripts.cfg +++ b/config/scripts.cfg @@ -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) ] diff --git a/source/src/clientgame.cpp b/source/src/clientgame.cpp index 0daa289a..3ee90222 100644 --- a/source/src/clientgame.cpp +++ b/source/src/clientgame.cpp @@ -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); } } diff --git a/source/src/clients2c.cpp b/source/src/clients2c.cpp index e375a8f0..e671e1a4 100644 --- a/source/src/clients2c.cpp +++ b/source/src/clients2c.cpp @@ -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; diff --git a/source/src/docs.cpp b/source/src/docs.cpp index 805a44a8..e7f91103 100644 --- a/source/src/docs.cpp +++ b/source/src/docs.cpp @@ -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); } } diff --git a/source/src/main.cpp b/source/src/main.cpp index 65c38805..b870919b 100644 --- a/source/src/main.cpp +++ b/source/src/main.cpp @@ -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; diff --git a/source/src/menus.cpp b/source/src/menus.cpp index 95f8a280..b57cb1a0 100644 --- a/source/src/menus.cpp +++ b/source/src/menus.cpp @@ -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; - } -} diff --git a/source/src/protos.h b/source/src/protos.h index 593605af..4af0e4ee 100644 --- a/source/src/protos.h +++ b/source/src/protos.h @@ -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 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); diff --git a/source/src/scoreboard.cpp b/source/src/scoreboard.cpp index 013f4800..7a571f4d 100644 --- a/source/src/scoreboard.cpp +++ b/source/src/scoreboard.cpp @@ -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) diff --git a/source/src/serverbrowser.cpp b/source/src/serverbrowser.cpp index 432a2ea6..798cd3b4 100644 --- a/source/src/serverbrowser.cpp +++ b/source/src/serverbrowser.cpp @@ -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); } }