mirror of
https://github.com/celisej567/mcpe.git
synced 2026-01-04 14:09:47 +03:00
* Do the same large cave feature changes in the master post change thing.
This commit is contained in:
@@ -2,88 +2,88 @@
|
||||
|
||||
void LargeCaveFeature::addFeature(Level* level, int ax, int az, int x, int z, TileID* tiles, int unk)
|
||||
{
|
||||
int x1 = m_random.nextInt(m_random.nextInt(m_random.nextInt(40) + 1) + 1);
|
||||
int x1 = m_random.nextInt(m_random.nextInt(m_random.nextInt(40) + 1) + 1);
|
||||
|
||||
if (m_random.nextInt(15) != 0)
|
||||
x1 = 0;
|
||||
if (m_random.nextInt(15) != 0)
|
||||
x1 = 0;
|
||||
|
||||
for (int i = 0; i < x1; i++)
|
||||
{
|
||||
float rx = float(16 * ax + m_random.nextInt(16));
|
||||
float ry = float(m_random.nextInt(m_random.nextInt(120) + 8));
|
||||
float rz = float(16 * ax + m_random.nextInt(16));
|
||||
for (int i = 0; i < x1; i++)
|
||||
{
|
||||
float rx = float(16 * ax + m_random.nextInt(16));
|
||||
float ry = float(m_random.nextInt(m_random.nextInt(120) + 8));
|
||||
float rz = float(16 * ax + m_random.nextInt(16));
|
||||
|
||||
int nTunnels = 1;
|
||||
if (m_random.nextInt(4) == 0)
|
||||
{
|
||||
addRoom(x, z, tiles, rx, ry, rz);
|
||||
nTunnels = 1 + m_random.nextInt(4);
|
||||
}
|
||||
int nTunnels = 1;
|
||||
if (m_random.nextInt(4) == 0)
|
||||
{
|
||||
addRoom(x, z, tiles, rx, ry, rz);
|
||||
nTunnels = 1 + m_random.nextInt(4);
|
||||
}
|
||||
|
||||
for (int j = 0; j < nTunnels; j++)
|
||||
{
|
||||
float ang1 = 2.0f * float(M_PI) * m_random.nextFloat();
|
||||
float x2 = (2.0f * (m_random.nextFloat() - 0.5f)) / 8.0f;
|
||||
float x3 = (2.0f * m_random.nextFloat()) + m_random.nextFloat();
|
||||
addTunnel(x, z, tiles, rx, ry, rz, x3, ang1, x2, 0, 0, 1.0f);
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < nTunnels; j++)
|
||||
{
|
||||
float ang1 = 2.0f * float(M_PI) * m_random.nextFloat();
|
||||
float x2 = (2.0f * (m_random.nextFloat() - 0.5f)) / 8.0f;
|
||||
float step = (2.0f * m_random.nextFloat()) + m_random.nextFloat();
|
||||
addTunnel(x, z, tiles, rx, ry, rz, step, ang1, x2, 0, 0, 1.0f);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void LargeCaveFeature::addRoom(int x, int z, TileID* tiles, float rx, float ry, float rz)
|
||||
{
|
||||
addTunnel(x, z, tiles, rx, ry, rz, 1.0f + 6.0f * m_random.nextFloat(), 0.0f, 0.0f, -1, -1, 0.5f);
|
||||
addTunnel(x, z, tiles, rx, ry, rz, 1.0f + 6.0f * m_random.nextFloat(), 0.0f, 0.0f, -1, -1, 0.5f);
|
||||
}
|
||||
|
||||
void LargeCaveFeature::addTunnel(int x, int z, TileID* tiles, float rx, float ry, float rz, float x1, float ang, float x2, int x3, int x4, float x5)
|
||||
void LargeCaveFeature::addTunnel(int x, int z, TileID* tiles, float rx, float ry, float rz, float x1, float ang, float x2, int step, int dist, float x5)
|
||||
{
|
||||
float v65 = float(8 * (2 * x + 1));
|
||||
float v64 = float(8 * (2 * z + 1));
|
||||
float v63 = 0.0;
|
||||
float v62 = 0.0;
|
||||
int v13 = m_random.nextLong();
|
||||
Random v33(v13);
|
||||
float xMid = float(8 * (2 * x + 1));
|
||||
float zMid = float(8 * (2 * z + 1));
|
||||
|
||||
if (x4 <= 0)
|
||||
float yRota = 0.0;
|
||||
float xRota = 0.0;
|
||||
Random random(m_random.nextLong());
|
||||
|
||||
if (dist <= 0)
|
||||
{
|
||||
int v61 = (16 * (m_radius - 1));
|
||||
x4 = v61 - v33.nextInt(v61 / 4);
|
||||
}
|
||||
|
||||
bool v69 = false;
|
||||
if (x3 == -1)
|
||||
{
|
||||
x3 = x4 / 2;
|
||||
v69 = true;
|
||||
int max = m_radius * 16 - 16;
|
||||
dist = max - random.nextInt(max / 4);
|
||||
}
|
||||
|
||||
int v60 = x4 / 4 + v33.nextInt(x4 / 2);
|
||||
bool v68 = v33.nextInt(6) == 0;
|
||||
while (x3 < x4)
|
||||
bool singleStep = false;
|
||||
if (step == -1)
|
||||
{
|
||||
float v59 = sin((x3 * float(M_PI)) / (float)x4) * x1 + 1.5f;
|
||||
float v58 = v59 * x5;
|
||||
step = dist / 2;
|
||||
singleStep = true;
|
||||
}
|
||||
|
||||
int splitPoint = random.nextInt(dist / 2) + dist / 4;
|
||||
bool steep = random.nextInt(6) == 0;
|
||||
for (; step < dist; step++)
|
||||
{
|
||||
float rad = sin((step * float(M_PI)) / (float)dist) * x1 + 1.5f;
|
||||
float yRad = rad * x5;
|
||||
float cos_pitch = cos(x2);
|
||||
rx += (float)(cos(ang) * cos_pitch);
|
||||
ry += sin(x2);
|
||||
rz = rz + (float)(sin(ang) * cos_pitch);
|
||||
float a10a;
|
||||
if (v68)
|
||||
if (steep)
|
||||
a10a = x2 * 0.92f;
|
||||
else
|
||||
a10a = x2 * 0.7f;
|
||||
|
||||
x2 = a10a + (float)(v62 * 0.1f);
|
||||
ang = ang + (float)(v63 * 0.1f);
|
||||
v62 = v62 * 0.9f;
|
||||
v63 = v63 * 0.75f;
|
||||
float v18 = v33.nextFloat() - v33.nextFloat();
|
||||
float v19 = v33.nextFloat();
|
||||
v62 += 2 * v18 * v19;
|
||||
float v21 = v33.nextFloat() - v33.nextFloat();
|
||||
float v22 = v33.nextFloat();
|
||||
v63 += (v21 * v22) * 4.0f;
|
||||
if (v69 != 1 && x3 == v60 && x1 > 1.0f)
|
||||
x2 = a10a + (float)(xRota * 0.1f);
|
||||
ang = ang + (float)(yRota * 0.1f);
|
||||
xRota = xRota * 0.9f;
|
||||
yRota = yRota * 0.75f;
|
||||
float v18 = random.nextFloat() - random.nextFloat();
|
||||
float v19 = random.nextFloat();
|
||||
xRota += 2 * v18 * v19;
|
||||
float v21 = random.nextFloat() - random.nextFloat();
|
||||
float v22 = random.nextFloat();
|
||||
yRota += (v21 * v22) * 4.0f;
|
||||
if (singleStep != 1 && step == splitPoint && x1 > 1.0f)
|
||||
{
|
||||
addTunnel(
|
||||
x,
|
||||
@@ -92,11 +92,11 @@ void LargeCaveFeature::addTunnel(int x, int z, TileID* tiles, float rx, float ry
|
||||
rx,
|
||||
ry,
|
||||
rz,
|
||||
(v33.nextFloat() * 0.5f) + 0.5f,
|
||||
(random.nextFloat() * 0.5f) + 0.5f,
|
||||
(float(M_PI) / -2.0f) + ang,
|
||||
x2 / 3.0f,
|
||||
x3,
|
||||
x4,
|
||||
step,
|
||||
dist,
|
||||
1.0f);
|
||||
addTunnel(
|
||||
x,
|
||||
@@ -105,35 +105,35 @@ void LargeCaveFeature::addTunnel(int x, int z, TileID* tiles, float rx, float ry
|
||||
rx,
|
||||
ry,
|
||||
rz,
|
||||
(v33.nextFloat() * 0.5f) + 0.5f,
|
||||
(random.nextFloat() * 0.5f) + 0.5f,
|
||||
(float(M_PI) / 2.0f) + ang,
|
||||
x2 / 3.0f,
|
||||
x3,
|
||||
x4,
|
||||
step,
|
||||
dist,
|
||||
1.0f);
|
||||
return;
|
||||
}
|
||||
if (v69 == 1 || v33.nextInt(4) != 0)
|
||||
if (singleStep == 1 || random.nextInt(4) != 0)
|
||||
{
|
||||
float v55 = rx - v65;
|
||||
float v54 = rz - v64;
|
||||
float v53 = float(x4 - x3);
|
||||
float v55 = rx - xMid;
|
||||
float v54 = rz - zMid;
|
||||
float v53 = (dist - step);
|
||||
float v52 = (x1 + 2.0f) + 16.0f;
|
||||
if (((((rx - v65) * (rx - v65))
|
||||
+ ((rz - v64) * (rz - v64)))
|
||||
if (((((rx - xMid) * (rx - xMid))
|
||||
+ ((rz - zMid) * (rz - zMid)))
|
||||
- (v53 * v53)) > (v52 * v52))
|
||||
return;
|
||||
if (((v65 - 16.0f) + (v59 * -2.0f)) <= rx &&
|
||||
((v64 - 16.0f) + (v59 * -2.0f)) <= rz &&
|
||||
((v65 + 16.0f) + (v59 * +2.0f)) >= rx &&
|
||||
((v64 + 16.0f) + (v59 * +2.0f)) >= rz)
|
||||
if (((xMid - 16.0f) + (rad * -2.0f)) <= rx &&
|
||||
((zMid - 16.0f) + (rad * -2.0f)) <= rz &&
|
||||
((xMid + 16.0f) + (rad * +2.0f)) >= rx &&
|
||||
((zMid + 16.0f) + (rad * +2.0f)) >= rz)
|
||||
{
|
||||
int v51 = -16 * x + (int)floor(rx - v59) - 1;
|
||||
int v50 = -16 * x + (int)floor(rx + v59) + 1;
|
||||
int v49 = (int)floor(ry - v58) - 1;
|
||||
int v48 = (int)floor(ry + v58) + 1;
|
||||
int v47 = -16 * z + (int)floor(rz - v59) - 1;
|
||||
int v46 = -16 * z + (int)floor(rz + v59) + 1;
|
||||
int v51 = -16 * x + (int)floor(rx - rad) - 1;
|
||||
int v50 = -16 * x + (int)floor(rx + rad) + 1;
|
||||
int v49 = (int)floor(ry - yRad) - 1;
|
||||
int v48 = (int)floor(ry + yRad) + 1;
|
||||
int v47 = -16 * z + (int)floor(rz - rad) - 1;
|
||||
int v46 = -16 * z + (int)floor(rz + rad) + 1;
|
||||
if (v51 < 0) v51 = 0;
|
||||
if (v50 > 16) v50 = 16;
|
||||
if (v49 <= 0) v49 = 1;
|
||||
@@ -162,17 +162,17 @@ void LargeCaveFeature::addTunnel(int x, int z, TileID* tiles, float rx, float ry
|
||||
{
|
||||
for (int l = v51; l < v50; ++l)
|
||||
{
|
||||
float v40 = ((float(l + 16 * x) + 0.5f) - rx) / v59;
|
||||
float v40 = ((float(l + 16 * x) + 0.5f) - rx) / rad;
|
||||
for (int m = v47; m < v46; ++m)
|
||||
{
|
||||
float v38 = ((float(m + 16 * z) + 0.5f) - rz) / v59;
|
||||
float v38 = ((float(m + 16 * z) + 0.5f) - rz) / rad;
|
||||
int v37 = v48 + ((m + 16 * l) << 7);
|
||||
bool v66 = 0;
|
||||
if ((float)((float)(v40 * v40) + (float)(v38 * v38)) < 1.0f)
|
||||
{
|
||||
for (int n = v48 - 1; n >= v49; --n)
|
||||
{
|
||||
float v35 = ((float(n) + 0.5f) - ry) / v58;
|
||||
float v35 = ((float(n) + 0.5) - ry) / yRad;
|
||||
if (v35 > -0.7f
|
||||
&& v40 * v40 + v35 * v35 + v38 * v38 < 1.0f)
|
||||
{
|
||||
@@ -203,11 +203,10 @@ void LargeCaveFeature::addTunnel(int x, int z, TileID* tiles, float rx, float ry
|
||||
}
|
||||
}
|
||||
}
|
||||
if (v69)
|
||||
if (singleStep)
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
++x3;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user