diff --git a/config/menus_edit.cfg b/config/menus_edit.cfg index 3cd3f4b4..ad68802f 100644 --- a/config/menus_edit.cfg +++ b/config/menus_edit.cfg @@ -100,6 +100,7 @@ newmenu Arches menuinit [ chmenutexture (curmenu) map_editor/axes.png " " ] menuitemslider "Arch sideways curve delta: " 0 5 "$__archside" 1 [] [ __archside = $arg1 ] menuitem "\t[ Place arch ]" [ __setundoarch ; heightfield 2; arch $__archside ] +menuitem "Edit arches..." [ showmenu "Edit arches" ] menuitem "" -1 menuitemslider "Slope axis: " 0 1 "$__slopeaxis" 1 ["West to East (X)" "North to South (Y)"] [ __slopeaxis = $arg1 ] menuitemslider "Slope increment: " 0 5 "$__slopeinc" 1 ["downwards 3" "downwards 2" "downwards 1" "upwards 1" "upwards 2" "upwards 3"] [ __slopeinc = $arg1 ] @@ -112,6 +113,39 @@ menuitemslider "Stairs axis: " 0 1 "$__stairaxis" 1 ["West to East (X)" "North menuitemslider "Step width: " 0 5 "$__stairwidth" 1 ["downwards 3" "downwards 2" "downwards 1" "upwards 1" "upwards 2" "upwards 3"] [ __stairwidth = $arg1 ] menuitem "\t[ Place stairs ]" [ push i (at "-3 -2 -1 1 2 3" $__stairwidth) ; stairs (if $__stairaxis 0 $i) (if $__stairaxis $i 0) ; pop i ; 0] +tempalias __pickarch 2 +tempalias __listarch [ push ii "" ; loop i $arg1 [ if $i [ ii = (concat $ii (archvertex $arg1 $i)) ] ] ; result (pop ii) ] +newmenu "Edit arches" +menuinit [ + resetcurmenu + loop i 50 [ + if (> $i 1) [ + menuitem (concatword "arch width " $i ": " (__listarch $i)) (concat __pickarch = $i "; showmenu [Edit arch]") + ] + ] +] + +newmenu "Edit arch" +menuinit [ + resetcurmenu + menuheader "" (concat "edit arch width" $__pickarch) + push ii "" + loop i (div $__pickarch 2) [ + ii = (+ $i 1) + menuitemslider (concat vertex $ii "\t") 0 31 (archvertex $__pickarch $ii) 1 [] (concat archvertex $__pickarch $ii "$arg1 ; archvertex" $__pickarch (- $__pickarch $ii) "$arg1") + ] + pop ii + menuitem "" -1 + tempalias __archname custom + looplist (enumalias (concatword _arch_ $__pickarch _)) [fn sn] [ + if (= (+ (listlen $$fn) 1) $__pickarch) [ + __archname = $sn + menuitem (concat restore $sn " " $$fn) (concat av (- $__pickarch 1) (escape $$fn)) + ] + ] + menuitemtextinput "save arch as " "result $__archname" (concat __archname "= $arg1 ; (concatword _arch_"$__pickarch "_ $arg1) = (__listarch" $__pickarch ")" ) "" 250 +] + newmenu skymaps menuinit [ resetcurmenu diff --git a/source/src/command.cpp b/source/src/command.cpp index 5a53f6ba..dcb6d5e7 100644 --- a/source/src/command.cpp +++ b/source/src/command.cpp @@ -1573,6 +1573,20 @@ COMMANDF(escape, "s", (const char *s) { result(escapestring(s));}); int sortident(ident **a, ident **b) { return strcasecmp((*a)->name, (*b)->name); } +void enumalias(char *prefix) +{ + vector res; + vector sids; + size_t np = strlen(prefix); + enumerate(*idents, ident, id, if(id.type == ID_ALIAS && id.persist && !id.isconst && !id.istemp && !strncmp(id.name, prefix, np)) sids.add(&id); ); + sids.sort(sortident); + loopv(sids) cvecprintf(res, "%s %s\n", sids[i]->name, sids[i]->name + np); + if(res.length()) res.last() = '\0'; + else res.add('\0'); + result(res.getbuf()); +} +COMMAND(enumalias, "s"); + VARP(omitunchangeddefaults, 0, 0, 1); VAR(groupvariables, 0, 4, 10); diff --git a/source/src/editing.cpp b/source/src/editing.cpp index 439b17b1..da75b542 100644 --- a/source/src/editing.cpp +++ b/source/src/editing.cpp @@ -891,7 +891,7 @@ const int MAXARCHVERT = 50; int archverts[MAXARCHVERT][MAXARCHVERT]; bool archvinit = false; -void archvertex(int *span, int *vert, int *delta) +void archvertex(int *span, int *vert, char *delta) { if(!archvinit) { @@ -899,9 +899,10 @@ void archvertex(int *span, int *vert, int *delta) loop(s,MAXARCHVERT) loop(v,MAXARCHVERT) archverts[s][v] = 0; } if(*span>=MAXARCHVERT || *vert>=MAXARCHVERT || *span<0 || *vert<0) return; - archverts[*span][*vert] = *delta; + intret(archverts[*span][*vert]); + if(*delta) archverts[*span][*vert] = ATOI(delta); } -COMMAND(archvertex, "iii"); +COMMAND(archvertex, "iis"); void archxy(int sidedelta, int *averts, block &sel) { diff --git a/source/src/worldio.cpp b/source/src/worldio.cpp index 572d5b48..250442ac 100644 --- a/source/src/worldio.cpp +++ b/source/src/worldio.cpp @@ -1048,7 +1048,7 @@ int load_world(char *mname) // still supports all map formats that have e alias("gametimestart", startmillis, true); startmap(mname); res |= mapconfigerror; - if(res) conoutf("\f3unresolved problems occured during load_world(), warning: 0x%x", res); + if(res) conoutf("\f3unresolved problems occurred during load_world(), warning: 0x%x", res); return res; // negative: error (no map loaded), zero: no problem, positive: some problems (bitmask value) }