55 lines
1.6 KiB
C++
55 lines
1.6 KiB
C++
#ifdef ENABLE_REMOTE_CONTROL
|
|
|
|
#include "soh/Network/Anchor/Anchor.h"
|
|
#include <nlohmann/json.hpp>
|
|
#include <libultraship/libultraship.h>
|
|
#include "soh/Enhancements/game-interactor/GameInteractor.h"
|
|
#include "soh/OTRGlobals.h"
|
|
|
|
/**
|
|
* SET_FLAG
|
|
*
|
|
* Fired when a flag is set in the save context
|
|
*/
|
|
|
|
void Anchor::SendPacket_SetFlag(s16 sceneNum, s16 flagType, s16 flag) {
|
|
if (!IsSaveLoaded()) {
|
|
return;
|
|
}
|
|
|
|
nlohmann::json payload;
|
|
payload["type"] = SET_FLAG;
|
|
payload["targetTeamId"] = CVarGetString(CVAR_REMOTE_ANCHOR("TeamId"), "default");
|
|
payload["addToQueue"] = true;
|
|
payload["sceneNum"] = sceneNum;
|
|
payload["flagType"] = flagType;
|
|
payload["flag"] = flag;
|
|
|
|
SendJsonToRemote(payload);
|
|
}
|
|
|
|
void Anchor::HandlePacket_SetFlag(nlohmann::json payload) {
|
|
if (!IsSaveLoaded()) {
|
|
return;
|
|
}
|
|
|
|
s16 sceneNum = payload["sceneNum"].get<s16>();
|
|
s16 flagType = payload["flagType"].get<s16>();
|
|
s16 flag = payload["flag"].get<s16>();
|
|
|
|
if (sceneNum == SCENE_ID_MAX) {
|
|
auto effect = new GameInteractionEffect::SetFlag();
|
|
effect->parameters[0] = payload["flagType"].get<int16_t>();
|
|
effect->parameters[1] = payload["flag"].get<int16_t>();
|
|
effect->Apply();
|
|
} else {
|
|
auto effect = new GameInteractionEffect::SetSceneFlag();
|
|
effect->parameters[0] = payload["sceneNum"].get<int16_t>();
|
|
effect->parameters[1] = payload["flagType"].get<int16_t>();
|
|
effect->parameters[2] = payload["flag"].get<int16_t>();
|
|
effect->Apply();
|
|
}
|
|
}
|
|
|
|
#endif // ENABLE_REMOTE_CONTROL
|