| 9 | FireServerObject::FireServerObject() {} |
| 10 | |
| 11 | void 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 | |
| 46 | static Result<FireServerPayload, qn::ByteReaderError> decodePayload(qn::ByteReader& reader) { |
| 47 | FireServerPayload out{}; |
nothing calls this directly
no test coverage detected