2025-07-06 20:43:53 +03:00
|
|
|
#pragma once
|
2025-12-10 13:06:45 +03:00
|
|
|
#include "Helpers/NetworkingObjects/NetObjPtr.decl.hpp"
|
2025-09-06 19:06:30 +03:00
|
|
|
#include "WorldGrid.hpp"
|
2025-12-10 13:06:45 +03:00
|
|
|
#include <Helpers/NetworkingObjects/NetObjOrderedList.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);
|
2025-12-10 17:23:05 +03:00
|
|
|
void init();
|
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);
|
|
|
|
|
|
2025-12-10 13:06:45 +03:00
|
|
|
NetworkingObjects::NetObjPtr<NetworkingObjects::NetObjOrderedList<WorldGrid>> grids;
|
2025-09-06 19:06:30 +03:00
|
|
|
World& world;
|
2025-07-06 20:43:53 +03:00
|
|
|
};
|