yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
canvas_automation_service.h
Go to the documentation of this file.
1#ifndef YAZE_APP_CORE_SERVICE_CANVAS_AUTOMATION_SERVICE_H_
2#define YAZE_APP_CORE_SERVICE_CANVAS_AUTOMATION_SERVICE_H_
3
4#include "grpcpp/impl/service_type.h"
5#ifdef YAZE_WITH_GRPC
6
7#include <memory>
8#include <string>
9#include <unordered_map>
10
11#include "absl/status/status.h"
13
14// Forward declarations
15namespace grpc {
16class ServerContext;
17}
18
19namespace yaze {
20namespace editor {
21class OverworldEditor;
22}
23
24namespace proto {
25// Forward declare proto types
26class SetTileRequest;
27class SetTileResponse;
28class GetTileRequest;
29class GetTileResponse;
30class SetTilesRequest;
31class SetTilesResponse;
32class SelectTileRequest;
33class SelectTileResponse;
34class SelectTileRectRequest;
35class SelectTileRectResponse;
36class GetSelectionRequest;
37class GetSelectionResponse;
38class ClearSelectionRequest;
39class ClearSelectionResponse;
40class ScrollToTileRequest;
41class ScrollToTileResponse;
42class CenterOnRequest;
43class CenterOnResponse;
44class SetZoomRequest;
45class SetZoomResponse;
46class GetZoomRequest;
47class GetZoomResponse;
48class GetDimensionsRequest;
49class GetDimensionsResponse;
50class GetVisibleRegionRequest;
51class GetVisibleRegionResponse;
52class IsTileVisibleRequest;
53class IsTileVisibleResponse;
54} // namespace proto
55
65class CanvasAutomationServiceImpl {
66 public:
67 CanvasAutomationServiceImpl() = default;
68
69 // Register a canvas for automation
70 void RegisterCanvas(const std::string& canvas_id, gui::Canvas* canvas);
71
72 // Register an overworld editor (for tile get/set callbacks)
73 void RegisterOverworldEditor(const std::string& canvas_id,
74 editor::OverworldEditor* editor);
75
76 // RPC method implementations
77 absl::Status SetTile(const proto::SetTileRequest* request,
78 proto::SetTileResponse* response);
79
80 absl::Status GetTile(const proto::GetTileRequest* request,
81 proto::GetTileResponse* response);
82
83 absl::Status SetTiles(const proto::SetTilesRequest* request,
84 proto::SetTilesResponse* response);
85
86 absl::Status SelectTile(const proto::SelectTileRequest* request,
87 proto::SelectTileResponse* response);
88
89 absl::Status SelectTileRect(const proto::SelectTileRectRequest* request,
90 proto::SelectTileRectResponse* response);
91
92 absl::Status GetSelection(const proto::GetSelectionRequest* request,
93 proto::GetSelectionResponse* response);
94
95 absl::Status ClearSelection(const proto::ClearSelectionRequest* request,
96 proto::ClearSelectionResponse* response);
97
98 absl::Status ScrollToTile(const proto::ScrollToTileRequest* request,
99 proto::ScrollToTileResponse* response);
100
101 absl::Status CenterOn(const proto::CenterOnRequest* request,
102 proto::CenterOnResponse* response);
103
104 absl::Status SetZoom(const proto::SetZoomRequest* request,
105 proto::SetZoomResponse* response);
106
107 absl::Status GetZoom(const proto::GetZoomRequest* request,
108 proto::GetZoomResponse* response);
109
110 absl::Status GetDimensions(const proto::GetDimensionsRequest* request,
111 proto::GetDimensionsResponse* response);
112
113 absl::Status GetVisibleRegion(const proto::GetVisibleRegionRequest* request,
114 proto::GetVisibleRegionResponse* response);
115
116 absl::Status IsTileVisible(const proto::IsTileVisibleRequest* request,
117 proto::IsTileVisibleResponse* response);
118
119 private:
120 gui::Canvas* GetCanvas(const std::string& canvas_id);
121 editor::OverworldEditor* GetOverworldEditor(const std::string& canvas_id);
122
123 // Canvas registry
124 std::unordered_map<std::string, gui::Canvas*> canvases_;
125
126 // Editor registry (for tile callbacks)
127 std::unordered_map<std::string, editor::OverworldEditor*> overworld_editors_;
128};
129
140std::unique_ptr<grpc::Service> CreateCanvasAutomationServiceGrpc(
141 CanvasAutomationServiceImpl* impl);
142
143} // namespace yaze
144
145#endif // YAZE_WITH_GRPC
146#endif // YAZE_APP_CORE_SERVICE_CANVAS_AUTOMATION_SERVICE_H_
147
void RegisterCanvas(const char *canvas_name, const std::string &description="")
Register a canvas widget after BeginChild or similar.
Main namespace for the application.
Definition controller.cc:20