infinipaint/src/GridManager.hpp

39 lines
1.1 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"
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);
void init_client_callbacks();
ServerClientID add_default_grid(const std::string& newName);
template <typename Archive> void save(Archive& a) const {
a(grids);
}
template <typename Archive> void load(Archive& a) {
a(grids);
changed = true;
}
2025-11-16 12:40:56 +03:00
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<ServerClientID>& sorted_grid_ids();
2025-07-06 20:43:53 +03:00
std::unordered_map<ServerClientID, WorldGrid> grids;
2025-09-06 19:06:30 +03:00
World& world;
2025-07-06 20:43:53 +03:00
private:
2025-09-06 19:06:30 +03:00
bool changed = true;
std::vector<ServerClientID> sortedGridIDs;
2025-07-06 20:43:53 +03:00
};