diff --git a/src/saland/Game.cpp b/src/saland/Game.cpp index 6bbe06d..1ca803a 100644 --- a/src/saland/Game.cpp +++ b/src/saland/Game.cpp @@ -257,8 +257,13 @@ Game::Game() { Spell& slot3 = data->slot_spell.at(3); slot3.icon = ""; slot3.name = "spell_create_block"; - slot3.tile = 188; + slot3.tile = 28; slot3.type = SpellCursorType::tile; + Spell& slot4 = data->slot_spell.at(4); + slot4.icon = ""; + slot4.name = "spell_create_block"; + slot4.tile = 16; + slot4.type = SpellCursorType::tile; Spell& slot9 = data->slot_spell.at(9); slot9.icon = "icon_trash_can"; slot9.name = "spell_clear_block"; @@ -431,7 +436,8 @@ void Game::ProcessInput(const SDL_Event& event, bool& processed) { int layer_number = 2; // Do not hardcode uint32_t tile = data->drawTile; sago::tiled::setTileOnLayerNumber(data->gameRegion.world.tm, layer_number, tile_x, tile_y, tile); - data->gameRegion.wh.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); + data->gameRegion.waterHandler.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); + data->gameRegion.lavaHandler.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); data->gameRegion.world.init_physics(data->gameRegion.physicsBox); } if (event.key.keysym.sym == globalData.playerControls.block_delete @@ -440,7 +446,8 @@ void Game::ProcessInput(const SDL_Event& event, bool& processed) { int layer_number = 2; // Do not hardcode uint32_t tile = 0; sago::tiled::setTileOnLayerNumber(data->gameRegion.world.tm, layer_number, tile_x, tile_y, tile); - data->gameRegion.wh.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); + data->gameRegion.waterHandler.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); + data->gameRegion.lavaHandler.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); data->gameRegion.world.init_physics(data->gameRegion.physicsBox); } if (event.key.keysym.sym == SDLK_1 || event.key.keysym.sym == SDLK_KP_1) { @@ -658,7 +665,8 @@ void Game::Update() { && !(data->gameRegion.world.tile_protected(tile_x, tile_y)) ) { int layer_number = 2; // Do not hardcode sago::tiled::setTileOnLayerNumber(data->gameRegion.world.tm, layer_number, tile_x, tile_y, tile); - data->gameRegion.wh.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); + data->gameRegion.waterHandler.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); + data->gameRegion.lavaHandler.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); data->gameRegion.world.init_physics(data->gameRegion.physicsBox); } } @@ -673,7 +681,8 @@ void Game::Update() { int layer_number = 2; // Do not hardcode uint32_t tile = 0; sago::tiled::setTileOnLayerNumber(data->gameRegion.world.tm, layer_number, tile_x, tile_y, tile); - data->gameRegion.wh.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); + data->gameRegion.waterHandler.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); + data->gameRegion.lavaHandler.updateFirstTile(data->gameRegion.world.tm, tile_x, tile_y); data->gameRegion.world.init_physics(data->gameRegion.physicsBox); } } diff --git a/src/saland/GameRegion.cpp b/src/saland/GameRegion.cpp index 7dab503..6ed7676 100644 --- a/src/saland/GameRegion.cpp +++ b/src/saland/GameRegion.cpp @@ -156,8 +156,11 @@ void GameRegion::Init(int x, int y, const std::string& worldName, bool forceRese physicsBox.reset(new b2World(gravity)); world.managed_bodies.clear(); world.init(physicsBox, loadMap); - wh.blockingLayer = world.blockingLayer; - wh.blockingLayer_overlay_1 = world.blockingLayer_overlay_1; + waterHandler.blockingLayer = world.blockingLayer; + waterHandler.blockingLayer_overlay_1 = world.blockingLayer_overlay_1; + lavaHandler.blockingLayer = world.blockingLayer; + lavaHandler.blockingLayer_overlay_1 = world.blockingLayer_overlay_1; + lavaHandler.setupTiles(16); diff --git a/src/saland/GameRegion.hpp b/src/saland/GameRegion.hpp index c757fc6..6909f3d 100644 --- a/src/saland/GameRegion.hpp +++ b/src/saland/GameRegion.hpp @@ -46,7 +46,8 @@ public: std::shared_ptr physicsBox; void SaveRegion(); World world; - WaterHandler wh; + WaterHandler waterHandler; + WaterHandler lavaHandler; uint32_t outerTile = 485; int GetRegionX() const { return region_x; diff --git a/src/terrain/WaterHandler.cpp b/src/terrain/WaterHandler.cpp index 8ccc0d0..a7ca5fb 100644 --- a/src/terrain/WaterHandler.cpp +++ b/src/terrain/WaterHandler.cpp @@ -29,6 +29,7 @@ WaterHandler::WaterHandler() { } void WaterHandler::setupTiles(uint32_t start_tile) { + default_tile = start_tile; int tile_count_width = 32; tile_map["11111110"] = start_tile+1; tile_map["11111011"] = start_tile+2;