working on fluids revamp
This commit is contained in:
@@ -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;
|
||||
}*/
|
||||
}
|
||||
}
|
||||
|
||||
};
|
||||
|
Reference in New Issue
Block a user