summaryrefslogtreecommitdiff
path: root/ZAPD/ZRoom/Commands/SetRoomBehavior.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ZAPD/ZRoom/Commands/SetRoomBehavior.cpp')
-rw-r--r--ZAPD/ZRoom/Commands/SetRoomBehavior.cpp45
1 files changed, 33 insertions, 12 deletions
diff --git a/ZAPD/ZRoom/Commands/SetRoomBehavior.cpp b/ZAPD/ZRoom/Commands/SetRoomBehavior.cpp
index eb19073..d667328 100644
--- a/ZAPD/ZRoom/Commands/SetRoomBehavior.cpp
+++ b/ZAPD/ZRoom/Commands/SetRoomBehavior.cpp
@@ -1,20 +1,41 @@
#include "SetRoomBehavior.h"
-#include "../../BitConverter.h"
-#include "../../StringHelper.h"
+#include "BitConverter.h"
+#include "Globals.h"
+#include "StringHelper.h"
-SetRoomBehavior::SetRoomBehavior(ZRoom* nZRoom, std::vector<uint8_t> rawData, uint32_t rawDataIndex)
- : ZRoomCommand(nZRoom, rawData, rawDataIndex)
+SetRoomBehavior::SetRoomBehavior(ZFile* nParent) : ZRoomCommand(nParent)
{
- gameplayFlags = rawData[rawDataIndex + 0x01];
- gameplayFlags2 = BitConverter::ToInt32BE(rawData, rawDataIndex + 0x04);
}
-std::string SetRoomBehavior::GenerateSourceCodePass1(std::string roomName, uint32_t baseAddress)
+void SetRoomBehavior::ParseRawData()
{
- return StringHelper::Sprintf(
- "%s 0x%02X, 0x%08X", ZRoomCommand::GenerateSourceCodePass1(roomName, baseAddress).c_str(),
- gameplayFlags, gameplayFlags2);
- ;
+ ZRoomCommand::ParseRawData();
+ gameplayFlags = cmdArg1;
+ gameplayFlags2 = BitConverter::ToInt32BE(parent->GetRawData(), rawDataIndex + 0x04);
+
+ currRoomUnk2 = gameplayFlags2 & 0xFF;
+
+ currRoomUnk5 = showInvisActors = (gameplayFlags2 >> 8) & 1;
+
+ msgCtxUnk = (gameplayFlags2 >> 10) & 1;
+
+ enablePosLights = (gameplayFlags2 >> 11) & 1;
+ kankyoContextUnkE2 = (gameplayFlags2 >> 12) & 1;
+}
+
+std::string SetRoomBehavior::GetBodySourceCode() const
+{
+ if (Globals::Instance->game == ZGame::MM_RETAIL)
+ {
+ std::string enableLights = StringHelper::BoolStr(enablePosLights);
+ return StringHelper::Sprintf("SCENE_CMD_ROOM_BEHAVIOR(0x%02X, 0x%02X, %i, %i, %s, %i)",
+ gameplayFlags, currRoomUnk2, currRoomUnk5, msgCtxUnk,
+ enableLights.c_str(), kankyoContextUnkE2);
+ }
+ std::string showInvisible = StringHelper::BoolStr(showInvisActors);
+ std::string disableWarps = StringHelper::BoolStr(msgCtxUnk);
+ return StringHelper::Sprintf("SCENE_CMD_ROOM_BEHAVIOR(0x%02X, 0x%02X, %s, %s)", gameplayFlags,
+ currRoomUnk2, showInvisible.c_str(), disableWarps.c_str());
}
std::string SetRoomBehavior::GetCommandCName() const
@@ -25,4 +46,4 @@ std::string SetRoomBehavior::GetCommandCName() const
RoomCommand SetRoomBehavior::GetRoomCommand() const
{
return RoomCommand::SetRoomBehavior;
-} \ No newline at end of file
+}