commit e5e9ace8
Use the liqued handler to also draw dirt
Changed files
| M | src/saland/Game.cpp before |
| M | src/saland/GameRegion.cpp before |
| M | src/saland/model/World.cpp before |
| M | src/saland/model/World.hpp before |
diff --git a/src/saland/Game.cpp b/src/saland/Game.cpp
index 832a611..6eecb4c 100644
--- a/src/saland/Game.cpp
+++ b/src/saland/Game.cpp
@@ -453,7 +453,8 @@ void Game::Draw(SDL_Renderer* target) {
SDL_Texture* texture = globalData.spriteHolder->GetDataHolder().getTexturePtr("terrain");
DrawOuterBorder(target, texture, data->gameRegion.world.tm, data->topx, data->topy, data->gameRegion.outerTile, &globalData.logicalResize);
for (size_t i = 0; i < data->gameRegion.world.tm.layers.size(); ++i) {
- if (std::string(data->gameRegion.world.tm.layers.at(i).name).find("overlay",0) == std::string::npos ) {
+ const std::string& layerName = data->gameRegion.world.tm.layers.at(i).name;
+ if (layerName.find("overlay",0) == std::string::npos || layerName.find("ground",0) != std::string::npos) {
DrawLayer(target, globalData.spriteHolder.get(), data->gameRegion.world.tm, i, data->topx, data->topy, &globalData.logicalResize);
}
}
@@ -494,7 +495,8 @@ void Game::Draw(SDL_Renderer* target) {
}
}
for (size_t i = 0; i < data->gameRegion.world.tm.layers.size(); ++i) {
- if (std::string(data->gameRegion.world.tm.layers.at(i).name).find("overlay",0) != std::string::npos ) {
+ const std::string& layerName = data->gameRegion.world.tm.layers.at(i).name;
+ if (layerName.find("overlay",0) != std::string::npos && layerName.find("ground",0) == std::string::npos) {
DrawLayer(target, globalData.spriteHolder.get(), data->gameRegion.world.tm, i, data->topx, data->topy, &globalData.logicalResize);
}
}
@@ -1081,6 +1083,7 @@ void Game::Update() {
if (sago::tiled::tileInBound(data->gameRegion.world.tm, tile_x, tile_y)
&& !(data->gameRegion.world.tile_protected(tile_x, tile_y)) ) {
sago::tiled::setTileOnLayerNumber(data->gameRegion.world.tm, layer_number, tile_x, tile_y, tile);
+ data->gameRegion.liqudHandler["ground"].updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y);
}
}
}
diff --git a/src/saland/GameRegion.cpp b/src/saland/GameRegion.cpp
index 048825e..4544e18 100644
--- a/src/saland/GameRegion.cpp
+++ b/src/saland/GameRegion.cpp
@@ -319,6 +319,9 @@ void GameRegion::InitCommon() {
liqudHandler["lava"].blockingLayer = world.blockingLayer;
liqudHandler["lava"].blockingLayer_overlay_1 = world.blockingLayer_overlay_1;
liqudHandler["lava"].setupTiles(16);
+ liqudHandler["ground"].blockingLayer = world.ground2Layer;
+ liqudHandler["ground"].blockingLayer_overlay_1 = world.ground2OverlayLayer;
+ liqudHandler["ground"].setupTiles(1);
}
diff --git a/src/saland/model/World.cpp b/src/saland/model/World.cpp
index 1cb46cd..94a6ef8 100644
--- a/src/saland/model/World.cpp
+++ b/src/saland/model/World.cpp
@@ -208,8 +208,9 @@ static void bubble_layer_after(sago::tiled::TileMap& tm, const char* layer, cons
}
}
-static void init_tilemap(sago::tiled::TileMap& tm, int& ground2Layer, int& blockingLayer, int& blockingLayer_overlay_1) {
+static void init_tilemap(sago::tiled::TileMap& tm, int& ground2Layer, int& ground2OverlayLayer, int& blockingLayer, int& blockingLayer_overlay_1) {
ground2Layer = -1;
+ ground2OverlayLayer = -1;
blockingLayer = -1;
blockingLayer_overlay_1 = -1;
int prefab_layer_ground = -1;
@@ -219,6 +220,9 @@ static void init_tilemap(sago::tiled::TileMap& tm, int& ground2Layer, int& block
if (tm.layers[i].name == "ground_2") {
ground2Layer = i;
}
+ if (tm.layers[i].name == "ground_2_overlay_1") {
+ ground2OverlayLayer = i;
+ }
if (tm.layers[i].name == "blocking") {
blockingLayer = i;
}
@@ -235,6 +239,9 @@ static void init_tilemap(sago::tiled::TileMap& tm, int& ground2Layer, int& block
prefab_blocking_2 = i;
}
}
+ if (ground2OverlayLayer == -1) {
+ ground2OverlayLayer = append_layer(tm, "ground_2_overlay_1");
+ }
if (prefab_layer_ground == -1) {
append_layer(tm, "prefab_ground_1");
}
@@ -250,6 +257,8 @@ static void init_tilemap(sago::tiled::TileMap& tm, int& ground2Layer, int& block
if (prefab_layer_overlay == -1) {
append_layer(tm, "prefab_overlay_1");
}
+ bubble_layer_after(tm, "ground_2_overlay_1", "ground_2");
+ bubble_layer_after(tm, "prefab_ground_1", "ground_2_overlay_1");
bubble_layer_after(tm, "blocking", "prefab_ground_1");
bubble_layer_after(tm, "prefab_blocking_2", "blocking");
bubble_layer_after(tm, "blocking_overlay_1", "prefab_blocking_2");
@@ -260,6 +269,9 @@ static void init_tilemap(sago::tiled::TileMap& tm, int& ground2Layer, int& block
if (tm.layers[i].name == "ground_2") {
ground2Layer = i;
}
+ if (tm.layers[i].name == "ground_2_overlay_1") {
+ ground2OverlayLayer = i;
+ }
if (tm.layers[i].name == "blocking") {
blockingLayer = i;
}
@@ -281,7 +293,7 @@ void World::init(std::shared_ptr<b2World>& world, const std::string& mapFileName
tm.tileset[i].alternativeSource = &ts.back();
}
}
- init_tilemap(tm, ground2Layer, blockingLayer, blockingLayer_overlay_1);
+ init_tilemap(tm, ground2Layer, ground2OverlayLayer, blockingLayer, blockingLayer_overlay_1);
init_physics(world);
protected_tiles.resize(tm.height*tm.width);
diff --git a/src/saland/model/World.hpp b/src/saland/model/World.hpp
index ed77454..d50d8e7 100644
--- a/src/saland/model/World.hpp
+++ b/src/saland/model/World.hpp
@@ -45,6 +45,7 @@ public:
std::vector<bool> protected_tiles;
std::vector<bool> blocking_tiles;
int ground2Layer = -1;
+ int ground2OverlayLayer = -1;
int blockingLayer = -1;
int blockingLayer_overlay_1 = -1;
};