added mapmodel menus sorted by author and distribution

all generated automatically from mapmodel attributes

also:
* fixed typo in model config
* concatuniq now works fine with spaces
This commit is contained in:
ac-stef
2016-02-13 18:52:18 +01:00
parent 535b9df746
commit d107aa3cd6
3 changed files with 51 additions and 4 deletions
+49 -2
View File
@@ -551,8 +551,8 @@ tempalias __mapmodelcategories [
looplist $__mapmodelcategories [key menu] [tempalias (concatword __mm_key_ $key) $menu]
tempalias __mm_unassigned [echo (yellow) sry: mapmodel (addpunct $arg1) has no slot assigned. Please edit your map config file.]
tempalias __mm_showmodel [concat alias __lastwatchedmapmodel $arg2 ";" chmenumdl (escape $arg1) (concatword mapmodels/ $arg2) all 40 3]
tempalias __mm_tempmenus ""
tempalias __rebuildmapmodelmenus [
if $mapmodelchanged [
@@ -588,11 +588,58 @@ tempalias __rebuildmapmodelmenus [
menuitem (concatword "\f4" $desc) (concat newent mapmodel "(mapmodel" $dflts $path ")") (__mm_showmodel $$keyword $path) $usage // mapmodel has no slot assigned: assign one
]
]
// add menus sorted by author and distribution
push amenu ""
push distmenus ""
looplist $__mm_tempmenus menu [delmenu $menu]
__mm_tempmenus = ""
looplist (listallmapmodelattributes sortby: author desc usage defaults distribution) [path author desc usage dflts dist] [
mpath = (concatword "mapmodels/" $path)
dflts = (concat $dflts "0 0 0 0")
dflts = (concat (at $dflts 0) (at $dflts 1) (at $dflts 2) (at $dflts 3)) // fix missing/incomplete default slot parameters
if (strlen $author) [] [author = "*unknown*"]
idxs = (mapmodelslotbyname $mpath)
amenu = (concat "Map models by" $author)
newmenu $amenu // menu sorted by author
concatuniq __mm_tempmenus $amenu
menurenderoffset -40 0
if (listlen $idxs) [
if (> (listlen $idxs) 1) [
looplist $idxs i [menuitem (concat $path (concatword "#" $i)) (concat newent mapmodel $i) (__mm_showmodel $amenu $path) $desc] // several slots for the same mapmodel
][
menuitem $path (concat newent mapmodel $idxs) (__mm_showmodel $amenu $path) $desc // usual case: one slot per model
]
][
menuitem (concatword "\f4" $path) (concat newent mapmodel "(mapmodel" $dflts $path ")") (__mm_showmodel $amenu $path) $desc // mapmodel has no slot assigned: assign one
]
if (strlen $dist) [] [dist = "*unknown*"]
amenu = (concat "Map models of origin:" $dist)
newmenu $amenu // menu sorted by distribution
concatuniq distmenus $amenu
menurenderoffset -40 0
if (listlen $idxs) [
if (> (listlen $idxs) 1) [
looplist $idxs i [menuitem (concat $path (concatword "#" $i)) (concat newent mapmodel $i) (__mm_showmodel $amenu $path) $desc] // several slots for the same mapmodel
][
menuitem $path (concat newent mapmodel $idxs) (__mm_showmodel $amenu $path) $desc // usual case: one slot per model
]
][
menuitem (concatword "\f4" $path) (concat newent mapmodel "(mapmodel" $dflts $path ")") (__mm_showmodel $amenu $path) $desc // mapmodel has no slot assigned: assign one
]
]
amenu = "Browse all map models"
delmenu $amenu
newmenu $amenu
looplist $__mm_tempmenus m [menuitem $m (concat showmenu (escape $m))]
menuitem "" -1
looplist $distmenus m [menuitem $m (concat showmenu (escape $m))]
__mm_tempmenus = (concat $__mm_tempmenus $distmenus)
delmenu Mapmodels
newmenu Mapmodels
push __mm_sorted ""
looplist $__mapmodelcategories [key menu] [if (>= (findlist $__mm_menus $menu) 0) [concatuniq __mm_sorted $menu]] // create list of non-empty menus in order of list above
looplist $__mm_sorted m [menuitem $m (concat showmenu $m)] // only create non-empty menus
if (strlen $__mm_tempmenus) [menuitem "" -1 ; menuitem $amenu (concat showmenu (escape $amenu))]
delmenu [Delete unused mapmodel slot]
delmenu [Edit mapmodel slots]
if $editing [
@@ -619,7 +666,7 @@ tempalias __rebuildmapmodelmenus [
newmenu [Edit mapmodel slots]
menuitem "menu only available in edit mode" -1
]
pop menu __mm_menus __mm_sorted __mm_done __mm_unsorted idxs mpath
pop menu __mm_menus __mm_sorted __mm_done __mm_unsorted idxs mpath amenu distmenus
]
]
+1 -1
View File
@@ -161,7 +161,7 @@ const aliasinit [ loop ail (listlen $arg1) [ checkinit (at $arg1 $ail) $ar
const add2list [ if (strcmp [] (getalias $arg1)) [ $arg1 = $arg2 ] [ $arg1 = (concat (getalias $arg1) $arg2) ] ] // works exactly like concat, use as a shortcut to: alias = (concat $alias "some string")
const add2bind [ if (! (strstr (keybind $arg1) $arg2)) [ bind $arg1 (format [%1; %2] (keybind $arg1) $arg2) ] ] // works exactly like add2alias except for used with keybinds
const concatuniq [ if (< (findlist $$arg1 $arg2) 0) [$arg1 = (concat $$arg1 $arg2) ; result 1] [result 0] ] // add item to list, if it's not already been in the list
const concatuniq [ if (< (findlist $$arg1 $arg2) 0) [$arg1 = (concat $$arg1 (escape $arg2)) ; result 1] [result 0] ] // add item to list, if it's not already been in the list
// Weapon switching/action utilities.
const hasprimary [ result (= (curweapon) (currentprimary)) ]
@@ -1,5 +1,5 @@
mdlattribute keywords "ladders"
mdlattribute desc "Hangable Ladder (Bottom)"
mdlattribute author misterfloppyw
mdlattribute author misterfloppy
mdlattribute distribution official