#pragma once #include "WorldGrid.hpp" class World; class GridManager { public: GridManager(World& w); void init_client_callbacks(); ServerClientID add_default_grid(const std::string& newName); template void save(Archive& a) const { a(grids); } template void load(Archive& a) { a(grids); changed = true; } void send_grid_info(WorldGrid oldGrid, ServerClientID gridID); void remove_grid(ServerClientID idToRemove); void draw_back(SkCanvas* canvas, const DrawData& drawData); void draw_front(SkCanvas* canvas, const DrawData& drawData); void draw_coordinates(SkCanvas* canvas, const DrawData& drawData); void scale_up(const WorldScalar& scaleUpAmount); ClientPortionID get_max_id(ServerPortionID serverID) const; const std::vector& sorted_grid_ids(); std::unordered_map grids; World& world; private: bool changed = true; std::vector sortedGridIDs; };