infinipaint/src/GridManager.hpp

45 lines
1.7 KiB
C++
Raw Normal View History

2025-07-06 20:43:53 +03:00
#pragma once
2025-09-06 19:06:30 +03:00
#include "WorldGrid.hpp"
2026-04-09 12:00:36 +03:00
#include "cereal/archives/portable_binary.hpp"
2025-12-10 13:06:45 +03:00
#include <Helpers/NetworkingObjects/NetObjOrderedList.hpp>
#include <Helpers/NetworkingObjects/NetObjOwnerPtr.hpp>
2025-07-06 20:43:53 +03:00
2025-09-06 19:06:30 +03:00
class World;
2025-07-06 20:43:53 +03:00
class GridManager {
public:
2025-09-06 19:06:30 +03:00
GridManager(World& w);
2026-01-01 22:46:02 +03:00
void server_init_no_file();
2026-04-09 12:00:36 +03:00
void read_create_message(cereal::PortableBinaryInputArchive& a);
void set_grid_list_callbacks();
2025-12-10 13:06:45 +03:00
void add_default_grid(const std::string& newName);
template <typename Archive> void save(Archive& a) const {
2025-12-10 13:06:45 +03:00
a(grids->size());
for(uint32_t i = 0; i < grids->size(); i++)
a(*grids->at(i));
}
template <typename Archive> void load(Archive& a) {
2025-12-10 13:06:45 +03:00
uint32_t newSize = grids->size();
for(uint32_t i = 0; i < newSize; i++) {
WorldGrid b;
a(b);
grids->emplace_back_direct(grids, b);
}
}
2025-12-10 13:06:45 +03:00
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);
2026-01-01 22:46:02 +03:00
void save_file(cereal::PortableBinaryOutputArchive& a) const;
void load_file(cereal::PortableBinaryInputArchive& a, VersionNumber version);
2026-01-02 19:24:12 +03:00
void finalize_grid_modify(const NetworkingObjects::NetObjTemporaryPtr<WorldGrid>& wGrid, const WorldGrid& oldGridData);
NetworkingObjects::NetObjOwnerPtr<NetworkingObjects::NetObjOrderedList<WorldGrid>> grids;
2025-09-06 19:06:30 +03:00
World& world;
2025-07-06 20:43:53 +03:00
};