#pragma once #include "WorldGrid.hpp" #include "cereal/archives/portable_binary.hpp" #include #include class World; class GridManager { public: GridManager(World& w); void server_init_no_file(); void read_create_message(cereal::PortableBinaryInputArchive& a); void set_grid_list_callbacks(); void add_default_grid(const std::string& newName); template void save(Archive& a) const { a(grids->size()); for(uint32_t i = 0; i < grids->size(); i++) a(*grids->at(i)); } template void load(Archive& a) { uint32_t newSize = grids->size(); for(uint32_t i = 0; i < newSize; i++) { WorldGrid b; a(b); grids->emplace_back_direct(grids, b); } } void remove_grid(uint32_t indexToRemove); 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); void save_file(cereal::PortableBinaryOutputArchive& a) const; void load_file(cereal::PortableBinaryInputArchive& a, VersionNumber version); void finalize_grid_modify(const NetworkingObjects::NetObjTemporaryPtr& wGrid, const WorldGrid& oldGridData); NetworkingObjects::NetObjOwnerPtr> grids; World& world; };