MCPcopy Create free account
hub / github.com/GlobedGD/globed2 / triggerObject

Method triggerObject

src/modules/scripting/objects/FireServerObject.cpp:11–44  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

9FireServerObject::FireServerObject() {}
10
11void FireServerObject::triggerObject(GJBaseGameLayer* gjbgl, int p1, gd::vector<int> const* p2) {
12 auto res = this->decodePayload();
13 if (!res) {
14 log::warn("Failed to decode FireServerObject payload! {}", this);
15 return;
16 }
17
18 auto& payload = *res;
19
20 ScriptedEvent ev{};
21 ev.type = payload.eventId;
22
23 // encode the values
24
25 for (size_t i = 0; i < payload.argCount; i++) {
26 auto& arg = payload.args[i];
27
28 if (arg.type == FireServerArgType::Static) {
29 // treat value as a static int value
30 ev.args.push_back(arg.value);
31 } else if (arg.type == FireServerArgType::Item) {
32 // treat value as an item ID
33 auto value = (int) gjbgl->getItemValue(1, arg.value);
34 ev.args.push_back(value);
35 } else if (arg.type == FireServerArgType::Timer) {
36 // treat value as a timer ID
37 float value = gjbgl->getItemValue(2, arg.value);
38 ev.args.push_back(value);
39 }
40 }
41
42 // send off the event
43 NetworkManagerImpl::get().queueGameEvent(std::move(ev));
44}
45
46static Result<FireServerPayload, qn::ByteReaderError> decodePayload(qn::ByteReader& reader) {
47 FireServerPayload out{};

Callers

nothing calls this directly

Calls 4

decodePayloadMethod · 0.95
getItemValueMethod · 0.80
getFunction · 0.50
queueGameEventMethod · 0.45

Tested by

no test coverage detected