diff --git a/config/scripts.cfg b/config/scripts.cfg index 74b3cf52..d1d63ed9 100644 --- a/config/scripts.cfg +++ b/config/scripts.cfg @@ -86,6 +86,7 @@ looplist [ ] [ cmd options ] [ listcomplete $cmd (listoptions $options) ] listcomplete getvarrange "min max default" +listcomplete mapareacheck "vdelta steepest total pprest pp" looplist [ addzipmod zipmodremove zipmodgetdesc ] cmd [complete $cmd "mods" zip] // set up list of skymaps diff --git a/source/src/world.cpp b/source/src/world.cpp index 52163e24..896047d1 100644 --- a/source/src/world.cpp +++ b/source/src/world.cpp @@ -928,3 +928,36 @@ void mapmrproper(bool manual) } } COMMANDF(mapmrproper, "", () { mapmrproper(true); }); + +void mapareacheck(char *what) // "vdelta" | "steepest" | "total" | "pprest" | "pp"(default) +{ + mapareastats_s ms; + mapdim_s md; + stopwatch ti; + ti.start(); + servsqr *sw = createservworld(world, cubicsize); + calcmapdims(md, sw, ssize); + calcmapareastats(ms, sw, ssize, md); + delete[] sw; + vector res; + if(!strcasecmp(what, "vdelta")) + { + loopi(MAS_VDELTA_TABSIZE) cvecprintf(res, "%d ", ms.vdd[i]); + } + else if(!strcasecmp(what, "steepest")) cvecprintf(res, "%d.5 %d.5 %d ", ms.steepest % ssize, ms.steepest / ssize, world[ms.steepest % cubicsize].floor); + else if(!strcasecmp(what, "total")) cvecprintf(res, "%d ", ms.total); + else if(!strcasecmp(what, "pprest")) cvecprintf(res, "%d ", ms.rest); + else // default + { + loopi(MAS_GRID2) + { + int x = ms.ppp[i] % ssize, y = ms.ppp[i] / ssize, z = OUTBORD(x, y) ? 0 : S(x, y)->floor; + cvecprintf(res, "%d %d %d %d %d %.5g\n", x, y, z, ms.ppa[i], ms.ppv[i], ms.ppa[i] ? float(ms.ppv[i]) / ms.ppa[i] : 0.0f); + } + } + res.last() = '\0'; + result(res.getbuf()); +} + +COMMAND(mapareacheck, "s"); +