MCPcopy Create free account
hub / github.com/assaultcube/AC / movemap

Function movemap

source/src/editing.cpp:1231–1270  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1229COMMAND(newent, "sfffffff");
1230
1231void movemap(int *xop, int *yop, int *zop) // move whole map
1232{
1233 EDITMP("movemap");
1234 int xo = *xop, yo = *yop, zo = *zop;
1235 if(!worldbordercheck(MINBORD + max(-xo, 0), MINBORD + max(xo, 0), MINBORD + max(-yo, 0), MINBORD + max(yo, 0), max(zo, 0), max(-zo, 0)))
1236 {
1237 conoutf("not enough space to move the map");
1238 return;
1239 }
1240 if(xo || yo)
1241 {
1242 block b = { max(-xo, 0), max(-yo, 0), ssize - iabs(xo), ssize - iabs(yo) }, *cp = blockcopy(b);
1243 cp->x = max(xo, 0);
1244 cp->y = max(yo, 0);
1245 blockpaste(*cp);
1246 freeblock(cp);
1247 }
1248 if(zo)
1249 {
1250 loop(x, ssize) loop(y, ssize)
1251 {
1252 S(x,y)->floor = max(-128, S(x,y)->floor + zo);
1253 S(x,y)->ceil = min(127, S(x,y)->ceil + zo);
1254 }
1255 setfvar("waterlevel", waterlevel + zo, true);
1256 }
1257 loopv(ents)
1258 {
1259 ents[i].x += xo;
1260 ents[i].y += yo;
1261 ents[i].z += zo;
1262 if(OUTBORD(ents[i].x, ents[i].y)) ents[i].type = NOTUSED;
1263 }
1264 player1->o.x += xo;
1265 player1->o.y += yo;
1266 entinmap(player1);
1267 calclight();
1268 resetmap(false);
1269 unsavededits++;
1270}
1271COMMAND(movemap, "iii");
1272
1273void selfliprotate(block &sel, int dir)

Callers

nothing calls this directly

Calls 12

worldbordercheckFunction · 0.85
maxFunction · 0.85
iabsFunction · 0.85
blockcopyFunction · 0.85
blockpasteFunction · 0.85
freeblockFunction · 0.85
setfvarFunction · 0.85
entinmapFunction · 0.85
calclightFunction · 0.85
resetmapFunction · 0.85
conoutfFunction · 0.70
loopFunction · 0.70

Tested by

no test coverage detected