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>
|
2025-12-11 16:05:41 +03:00
|
|
|
#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-09-24 13:32:50 +03:00
|
|
|
|
2025-12-10 13:06:45 +03:00
|
|
|
void add_default_grid(const std::string& newName);
|
2025-09-24 13:32:50 +03:00
|
|
|
|
2025-09-24 16:18:20 +03:00
|
|
|
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));
|
2025-09-24 16:18:20 +03:00
|
|
|
}
|
|
|
|
|
|
|
|
|
|
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-09-24 16:18:20 +03:00
|
|
|
}
|
|
|
|
|
|
2025-12-10 13:06:45 +03:00
|
|
|
void remove_grid(uint32_t indexToRemove);
|
2025-10-01 21:31:16 +03:00
|
|
|
void draw_back(SkCanvas* canvas, const DrawData& drawData);
|
|
|
|
|
void draw_front(SkCanvas* canvas, const DrawData& drawData);
|
2025-09-25 10:21:47 +03:00
|
|
|
void draw_coordinates(SkCanvas* canvas, const DrawData& drawData);
|
2025-09-30 11:45:03 +03:00
|
|
|
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);
|
2025-09-30 11:45:03 +03:00
|
|
|
|
2025-12-11 16:05:41 +03:00
|
|
|
NetworkingObjects::NetObjOwnerPtr<NetworkingObjects::NetObjOrderedList<WorldGrid>> grids;
|
2025-09-06 19:06:30 +03:00
|
|
|
World& world;
|
2025-07-06 20:43:53 +03:00
|
|
|
};
|