Luanti 5.16.0-dev
 
Loading...
Searching...
No Matches
sscsm_requests.h
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2024 Luanti authors
2//
3// SPDX-License-Identifier: LGPL-2.1-or-later
4
5#pragma once
6
7#include "sscsm_irequest.h"
8#include "sscsm_ievent.h"
9#include "mapnode.h"
10#include "map.h"
11#include "client/client.h"
12#include "log_internal.h"
13
14// Poll the next event (e.g. on_globalstep)
16{
17 struct Answer final : public ISSCSMAnswer
18 {
19 std::unique_ptr<ISSCSMEvent> next_event;
20 };
21
23 {
24 FATAL_ERROR("SSCSMRequestPollNextEvent needs to be handled by SSCSMControler::runEvent()");
25 }
26};
27
28// Some error occured in the SSCSM env
30{
31 struct Answer final : public ISSCSMAnswer
32 {
33 };
34
35 std::string reason;
36
38 {
39 client->setFatalError("[SSCSM] " + reason);
40
42 }
43};
44
45// print(text)
46// FIXME: override global loggers to use this in sscsm process
47struct SSCSMRequestPrint final : public ISSCSMRequest
48{
49 struct Answer final : public ISSCSMAnswer
50 {
51 };
52
53 std::string text;
54
56 {
57 rawstream << text << std::endl;
58
60 }
61};
62
63// core.log(level, text)
64// FIXME: override global loggers to use this in sscsm process
65struct SSCSMRequestLog final : public ISSCSMRequest
66{
67 struct Answer final : public ISSCSMAnswer
68 {
69 };
70
71 std::string text;
73
75 {
76 if (level >= LL_MAX) {
77 throw MisbehavedSSCSMException("Tried to log at non-existent level.");
78 } else {
80 }
81
83 }
84};
85
86// core.get_node(pos)
88{
89 struct Answer final : public ISSCSMAnswer
90 {
93 };
94
96
98 {
99 bool is_pos_ok = false;
100 MapNode node = client->getEnv().getMap().getNode(pos, &is_pos_ok);
101
102 Answer answer{};
103 answer.node = node;
104 answer.is_pos_ok = is_pos_ok;
105 return serializeSSCSMAnswer(std::move(answer));
106 }
107};
Definition client.h:107
void log(LogLevel lev, std::string_view text)
Definition log.cpp:252
Definition exceptions.h:96
#define FATAL_ERROR(msg)
Definition debug.h:32
core::vector3d< s16 > v3s16
Definition irr_v3d.h:13
Logger g_logger
Definition log.cpp:56
thread_local LogStream rawstream
LogLevel
Definition log_internal.h:18
@ LL_MAX
Definition log_internal.h:26
Definition activeobjectmgr.cpp:11
SerializedSSCSMAnswer serializeSSCSMAnswer(T &&answer)
Definition sscsm_irequest.h:67
std::unique_ptr< ISSCSMAnswer > SerializedSSCSMAnswer
Definition sscsm_irequest.h:25
Definition sscsm_irequest.h:17
Definition sscsm_irequest.h:29
Definition mapnode.h:115
Definition sscsm_requests.h:90
MapNode node
Definition sscsm_requests.h:91
bool is_pos_ok
Definition sscsm_requests.h:92
Definition sscsm_requests.h:88
SerializedSSCSMAnswer exec(Client *client) override
Definition sscsm_requests.h:97
v3s16 pos
Definition sscsm_requests.h:95
Definition sscsm_requests.h:68
Definition sscsm_requests.h:66
std::string text
Definition sscsm_requests.h:71
LogLevel level
Definition sscsm_requests.h:72
SerializedSSCSMAnswer exec(Client *client) override
Definition sscsm_requests.h:74
Definition sscsm_requests.h:18
std::unique_ptr< ISSCSMEvent > next_event
Definition sscsm_requests.h:19
Definition sscsm_requests.h:16
SerializedSSCSMAnswer exec(Client *client) override
Definition sscsm_requests.h:22
Definition sscsm_requests.h:50
Definition sscsm_requests.h:48
std::string text
Definition sscsm_requests.h:53
SerializedSSCSMAnswer exec(Client *client) override
Definition sscsm_requests.h:55
Definition sscsm_requests.h:32
Definition sscsm_requests.h:30
SerializedSSCSMAnswer exec(Client *client) override
Definition sscsm_requests.h:37
std::string reason
Definition sscsm_requests.h:35