Skip to content

Commit

Permalink
Add simple multitile placement
Browse files Browse the repository at this point in the history
  • Loading branch information
zpervan committed Mar 9, 2023
1 parent 2dcebe0 commit cd7ec11
Show file tree
Hide file tree
Showing 5 changed files with 47 additions and 21 deletions.
1 change: 1 addition & 0 deletions MapEditor/Core/src/map_editor_events.h
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ enum class MapEditorEvent
{
None = 0,
Add,
Set,
Edit,
Delete,
Saving,
Expand Down
5 changes: 5 additions & 0 deletions MapEditor/Core/src/map_editor_window.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ void MapEditorWindow::Update()
}

if ((map_editor_event_system_.Poll() == MapEditorEvent::Add) && (event_.type == sf::Event::MouseButtonPressed))
{
map_editor_event_system_.Set(MapEditorEvent::Set);
}

if ((map_editor_event_system_.Poll() == MapEditorEvent::Add) && (event_.key.code == sf::Keyboard::Escape))
{
map_editor_event_system_.Set(MapEditorEvent::None);
}
Expand Down
10 changes: 10 additions & 0 deletions MapEditor/Map/src/tiles_service.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -46,3 +46,13 @@ Tile* TilesService::GetTemporaryTile()
{
return temporary_tile_;
}

void TilesService::DeleteTemporaryTile()
{
if(temporary_tile_)
{
spdlog::debug("Deleting temporary tile");
delete temporary_tile_;
temporary_tile_ = nullptr;
}
}
1 change: 1 addition & 0 deletions MapEditor/Map/src/tiles_service.h
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ class TilesService
const std::vector<std::shared_ptr<Tile>>& GetTiles() const;
std::vector<std::shared_ptr<Tile>> CloneTiles() const;
Tile* GetTemporaryTile();
void DeleteTemporaryTile();

private:
MapEditorEventSystem& map_editor_event_system_;
Expand Down
51 changes: 30 additions & 21 deletions MapEditor/main.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,24 +45,41 @@ int main()

window.BeginDraw();

if(map_editor_event_system.Poll() == MapEditorEvent::Add)
if (tiles_service.GetTemporaryTile())
{
for (auto & e : grid.GetGridShapes())
switch (map_editor_event_system.Poll())
{
if(e->getGlobalBounds().contains(window.GetMousePosition().x, window.GetMousePosition().y))
{
tiles_service.GetTemporaryTile()->first.setPosition(e->getPosition());
}
case MapEditorEvent::None:
tiles_service.DeleteTemporaryTile();
break;

case MapEditorEvent::Add:
for (auto& e : grid.GetGridShapes())
{
if (e->getGlobalBounds().contains(window.GetMousePosition().x, window.GetMousePosition().y))
{
tiles_service.GetTemporaryTile()->first.setPosition(e->getPosition());
}
}
window.Draw(tiles_service.GetTemporaryTile()->first);
break;

// Multitile placement
case MapEditorEvent::Set:
auto asset_type = tiles_service.GetTemporaryTile()->second;
tiles_service.FinishPlacement();
map_editor_event_system.Set(MapEditorEvent::Add);
tiles_service.BeginPlacement(asset_type);
break;
}
window.Draw(tiles_service.GetTemporaryTile()->first);
}

if(map_editor_event_system.Poll() == MapEditorEvent::Saving)
if (map_editor_event_system.Poll() == MapEditorEvent::Saving)
{
save_dialog.Show("Save", "Please select a path to save your map.");
}

if(map_editor_event_system.Poll() == MapEditorEvent::SavingConfirmed)
if (map_editor_event_system.Poll() == MapEditorEvent::SavingConfirmed)
{
if (!serialization_result.valid())
{
Expand All @@ -77,26 +94,18 @@ int main()
}
}

if(map_editor_event_system.Poll() == MapEditorEvent::Loading)
if (map_editor_event_system.Poll() == MapEditorEvent::Loading)
{
load_dialog.Show("Load map", "Please select a map to load.");
}

if(map_editor_event_system.Poll() == MapEditorEvent::LoadingConfirmed)
if (map_editor_event_system.Poll() == MapEditorEvent::LoadingConfirmed)
{
spdlog::debug("TODO: Implement loading functionality");
}

if(map_editor_event_system.Poll() == MapEditorEvent::None)
{
if(tiles_service.GetTemporaryTile())
{
tiles_service.FinishPlacement();
}
}

// Draw all placed tiles
for (const auto & tile : tiles_service.GetTiles())
for (const auto& tile : tiles_service.GetTiles())
{
if (!tile)
{
Expand All @@ -106,7 +115,7 @@ int main()
window.Draw(tile->first);
}

for (const auto & grid_line : grid.GetGridShapes())
for (const auto& grid_line : grid.GetGridShapes())
{
window.Draw(*grid_line);
}
Expand Down

0 comments on commit cd7ec11

Please sign in to comment.