working on fluids revamp

This commit is contained in:
2025-01-17 13:07:20 -05:00
parent 823889cc09
commit 5a48438e11

View File

@@ -254,8 +254,14 @@ namespace CaveGame::Core {
// Supremely schizophrenic water solving which still doesn't 100% work.
// Please fix this...
TileID below = world->GetTile(x, y+1);
TileID above = world->GetTile(x, y-1);
TileID left = world->GetTile(x-1, y);
TileID right = world->GetTile(x+1, y);
TileID lookaheadLeft = world->GetTile(x-2, y);
TileID lookaheadRight = world->GetTile(x+2, y);
bool rng_roll = rand() % 2 == 0;
@@ -272,7 +278,9 @@ namespace CaveGame::Core {
return;
}
//if (below == TileID::WATER) {
/*
if (world->GetTile(rng_roll ? (x + 1) : (x - 1), y) == TileID::AIR)
{
if (world->GetTile(rng_roll ? (x + 2) : (x - 2), y) == TileID::AIR)
@@ -284,40 +292,50 @@ namespace CaveGame::Core {
}
world->SwapTile(x, y, rng_roll ? (x + 2) : (x - 2), y);
return;
}
}*/
//if (world->GetTile(rng_roll ? (x + 1) : (x - 1), y) == TileID::AIR) {
TileID rollright = rng_roll ? right : left;
TileID rollleft = !rng_roll ? right : left;
if (rollright == TileID::AIR) {
world->SwapTile(x, y, rng_roll ? (x + 1) : (x - 1), y);
return;
} else if (world->GetTile(!rng_roll ? (x + 1) : (x - 1), y) == TileID::AIR)
//} else if (world->GetTile(!rng_roll ? (x + 1) : (x - 1), y) == TileID::AIR)
} else if (rollleft == TileID::AIR)
{
if (world->GetTile(!rng_roll ? (x + 2) : (x - 2), y) == TileID::AIR)
{
if (world->GetTile(!rng_roll ? (x + 3) : (x - 3), y) == TileID::AIR)
{
world->SwapTile(x, y, !rng_roll ? (x + 3) : (x - 3), y);
return;
}
world->SwapTile(x, y, !rng_roll ? (x + 2) : (x - 2), y);
return;
}
world->SwapTile(x, y, !rng_roll ? (x + 1) : (x - 1), y);
return;
}
if ((lookaheadRight == right) && (right == TileID::AIR)) {
world->SetTile(x +1 , y, TileID::WATER);
world->SetTile(x +2 , y, TileID::WATER);
return;
}
if ((lookaheadLeft == left) && (left == TileID::AIR)){
world->SetTile(x -1 , y, TileID::WATER);
world->SetTile(x -2 , y, TileID::WATER);
return;
}
if (below == TileID::WATER && above == TileID::AIR) {
if (world->GetTile(x + 1, y) == TileID::AIR && world->GetTile(x + 2, y) == TileID::WATER) {
//if (world->GetTile(x + 1, y) == TileID::AIR && world->GetTile(x + 2, y) == TileID::WATER) {
if (right == TileID::AIR && lookaheadRight == TileID::WATER) {
world->SetTile(x + 1, y, rng_roll ? TileID::WATER : TileID::AIR);
return;
}
if (world->GetTile(x - 1, y) == TileID::AIR && world->GetTile(x - 2, y) == TileID::WATER) {
//if (world->GetTile(x - 1, y) == TileID::AIR && world->GetTile(x - 2, y) == TileID::WATER) {
if (left == TileID::AIR && lookaheadLeft == TileID::WATER) {
world->SetTile(x - 1, y, rng_roll ? TileID::WATER : TileID::AIR);
return;
}
}
// }
/*if (world->GetTile(x-1, y) == TileID::AIR) {
@@ -361,7 +379,7 @@ namespace CaveGame::Core {
//return;
//}
/*if (world->GetTile(x-1, y) == TileID::AIR) {
if (world->GetTile(x-1, y) == TileID::AIR) {
world->SetTile(x-1, y, numeric_id);
world->SetTile(x, y, TileID::AIR);
return;
@@ -371,7 +389,7 @@ namespace CaveGame::Core {
world->SetTile(x+1, y, numeric_id);
world->SetTile(x, y, TileID::AIR);
return;
}*/
}
}
};