Can now undo/redo grid operations

This commit is contained in:
Yousef Khadadeh 2025-11-16 12:40:56 +03:00
parent 36253d8f23
commit 6b3ce01e94
5 changed files with 64 additions and 5 deletions

View file

@ -14,6 +14,7 @@ void GridModifyTool::set_grid_id(ServerClientID newGridID) {
auto gridFoundIt = drawP.world.gridMan.grids.find(gridID);
if(gridFoundIt != drawP.world.gridMan.grids.end()) {
WorldGrid& g = gridFoundIt->second;
oldGrid = g;
CoordSpaceHelper newCam;
newCam.inverseScale = g.size / WorldScalar(WorldGrid::GRID_UNIT_PIXEL_SIZE);
newCam.pos = g.offset - drawP.world.main.window.size.cast<WorldScalar>() * newCam.inverseScale * WorldScalar(0.5);
@ -173,5 +174,5 @@ void GridModifyTool::draw(SkCanvas* canvas, const DrawData& drawData) {
}
void GridModifyTool::switch_tool(DrawingProgramToolType newTool) {
drawP.world.gridMan.send_grid_info(gridID);
drawP.world.gridMan.send_grid_info(oldGrid, gridID);
}

View file

@ -1,5 +1,6 @@
#pragma once
#include "DrawingProgramToolBase.hpp"
#include "../WorldGrid.hpp"
class DrawingProgram;
@ -14,6 +15,7 @@ class GridModifyTool : public DrawingProgramToolBase {
virtual bool prevent_undo_or_redo() override;
virtual void switch_tool(DrawingProgramToolType newTool) override;
private:
WorldGrid oldGrid;
ServerClientID gridID;
unsigned selectionMode = 0;
};