Browse Source

InitRndLocBigObj bin exact (#764)

pull/78/head
qndel 7 years ago committed by Anders Jenbo
parent
commit
a1256cdf32
  1. 58
      Source/objects.cpp

58
Source/objects.cpp

@ -468,45 +468,27 @@ void __fastcall InitRndLocObj(int min, int max, int objtype)
void __fastcall InitRndLocBigObj(int min, int max, int objtype) void __fastcall InitRndLocBigObj(int min, int max, int objtype)
{ {
int i, numobjs, xp, yp, xpm1, xpp1, ypm2, ypm1, ypp1; int i, xp, yp, numobjs;
numobjs = min + random(140, max - min); numobjs = random(140, max - min) + min;
i = 0; for (i = 0; i < numobjs; i++) {
if (numobjs > 0) { while (1) {
for (;;) { xp = random(140, 80) + 16;
do { yp = random(140, 80) + 16;
xp = random(140, 80) + 16; if (RndLocOk(xp - 1, yp - 2)
yp = random(140, 80) + 16; && RndLocOk(xp, yp - 2)
xpm1 = xp - 1; && RndLocOk(xp + 1, yp - 2)
ypm2 = yp - 2; && RndLocOk(xp - 1, yp - 1)
} while (!RndLocOk(xpm1, ypm2)); && RndLocOk(xp, yp - 1)
if (RndLocOk(xp, ypm2)) { && RndLocOk(xp + 1, yp - 1)
xpp1 = xp + 1; && RndLocOk(xp - 1, yp)
if (RndLocOk(xpp1, ypm2)) { && RndLocOk(xp, yp)
ypm1 = yp - 1; && RndLocOk(xp + 1, yp)
if (RndLocOk(xpm1, ypm1)) { && RndLocOk(xp - 1, yp + 1)
if (RndLocOk(xp, ypm1)) { && RndLocOk(xp, yp + 1)
if (RndLocOk(xpp1, ypm1)) { && RndLocOk(xp + 1, yp + 1)) {
if (RndLocOk(xpm1, yp)) { AddObject(objtype, xp, yp);
if (RndLocOk(xp, yp)) { break;
if (RndLocOk(xpp1, yp)) {
ypp1 = yp + 1;
if (RndLocOk(xpm1, ypp1)) {
if (RndLocOk(xp, ypp1)) {
if (RndLocOk(xpp1, ypp1)) {
AddObject(objtype, xp, yp);
if (++i >= numobjs)
break;
}
}
}
}
}
}
}
}
}
}
} }
} }
} }

Loading…
Cancel
Save