summaryrefslogtreecommitdiff
path: root/ZAPD/ZRoom/Commands/SetAnimatedTextureList.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ZAPD/ZRoom/Commands/SetAnimatedTextureList.cpp')
-rw-r--r--ZAPD/ZRoom/Commands/SetAnimatedTextureList.cpp433
1 files changed, 0 insertions, 433 deletions
diff --git a/ZAPD/ZRoom/Commands/SetAnimatedTextureList.cpp b/ZAPD/ZRoom/Commands/SetAnimatedTextureList.cpp
deleted file mode 100644
index 2d3a104..0000000
--- a/ZAPD/ZRoom/Commands/SetAnimatedTextureList.cpp
+++ /dev/null
@@ -1,433 +0,0 @@
-#include "SetAnimatedTextureList.h"
-#include "../../BitConverter.h"
-#include "../../Globals.h"
-#include "../../StringHelper.h"
-#include "../../ZFile.h"
-#include "../ZRoom.h"
-
-SetAnimatedTextureList::SetAnimatedTextureList(ZRoom* nZRoom, std::vector<uint8_t> rawData,
- uint32_t rawDataIndex)
- : ZRoomCommand(nZRoom, rawData, rawDataIndex)
-{
- segmentOffset = GETSEGOFFSET(BitConverter::ToInt32BE(rawData, rawDataIndex + 4));
-
- {
- std::string declaration = "";
-
- int32_t currentPtr = segmentOffset;
-
- AnimatedTexture* lastTexture = nullptr;
-
- do
- {
- if (textures.size() > 0)
- declaration += "\n";
-
- lastTexture = new AnimatedTexture(rawData, currentPtr);
- currentPtr += 8;
- textures.push_back(lastTexture);
-
- std::string textureName =
- (lastTexture->segmentOffset != 0) ?
- StringHelper::Sprintf("&%sAnimatedTextureParams0x%06X",
- zRoom->GetName().c_str(), lastTexture->segmentOffset) :
- "NULL";
-
- declaration += StringHelper::Sprintf(" { %i, %i, (u32)%s },", lastTexture->segment,
- lastTexture->type, textureName.c_str());
- } while ((lastTexture->segment != 0) && (lastTexture->segment > -1));
-
- zRoom->parent->AddDeclarationArray(
- segmentOffset, DeclarationAlignment::None, DeclarationPadding::Pad16,
- textures.size() * 8, "AnimatedTexture",
- StringHelper::Sprintf("%sAnimatedTextureList0x%06X", zRoom->GetName().c_str(),
- segmentOffset),
- textures.size(), declaration);
- }
-
- for (AnimatedTexture* texture : textures)
- {
- std::string declaration = "";
- size_t index = 0;
-
- switch (texture->type)
- {
- case 0:
- case 1:
- for (AnitmatedTextureParams* param : texture->params)
- {
- declaration += param->GenerateSourceCode(zRoom, texture->segmentOffset);
-
- if (index < texture->params.size() - 1)
- declaration += "\n";
-
- index++;
- }
-
- zRoom->parent->AddDeclarationArray(
- texture->segmentOffset, DeclarationAlignment::None, DeclarationPadding::None,
- texture->params.size() * 4, "ScrollingTextureParams",
- StringHelper::Sprintf("%sAnimatedTextureParams0x%06X", zRoom->GetName().c_str(),
- texture->segmentOffset),
- texture->params.size(), declaration);
- break;
- case 2:
- case 3:
- case 4:
- zRoom->parent->AddDeclaration(
- texture->segmentOffset, DeclarationAlignment::Align4, DeclarationPadding::None, 16,
- "FlashingTextureParams",
- StringHelper::Sprintf("%sAnimatedTextureParams0x%06X", zRoom->GetName().c_str(),
- texture->segmentOffset),
- texture->params[0]->GenerateSourceCode(zRoom, texture->segmentOffset));
- break;
- case 5:
- zRoom->parent->AddDeclaration(
- texture->segmentOffset, DeclarationAlignment::Align4, DeclarationPadding::None, 12,
- "CyclingTextureParams",
- StringHelper::Sprintf("%sAnimatedTextureParams0x%06X", zRoom->GetName().c_str(),
- texture->segmentOffset),
- texture->params[0]->GenerateSourceCode(zRoom, texture->segmentOffset));
- break;
- case 6:
- break;
- }
- }
-}
-
-SetAnimatedTextureList::~SetAnimatedTextureList()
-{
- for (AnimatedTexture* texture : textures)
- delete texture;
-}
-
-AnitmatedTextureParams::~AnitmatedTextureParams()
-{
-}
-
-std::string SetAnimatedTextureList::GenerateSourceCodePass1(std::string roomName,
- uint32_t baseAddress)
-{
- return StringHelper::Sprintf(
- "%s 0, (u32)%sAnimatedTextureList0x%06X",
- ZRoomCommand::GenerateSourceCodePass1(roomName, baseAddress).c_str(),
- zRoom->GetName().c_str(), segmentOffset);
-}
-
-size_t SetAnimatedTextureList::GetRawDataSize() const
-{
- size_t paramsSize = 0;
- for (AnimatedTexture* texture : textures)
- {
- for (AnitmatedTextureParams* param : texture->params)
- {
- paramsSize += param->GetParamsSize();
- }
- }
-
- return ZRoomCommand::GetRawDataSize() + paramsSize;
-}
-
-std::string SetAnimatedTextureList::GenerateExterns() const
-{
- return "";
-}
-
-std::string SetAnimatedTextureList::GetCommandCName() const
-{
- return "SCmdTextureAnimations";
-}
-
-RoomCommand SetAnimatedTextureList::GetRoomCommand() const
-{
- return RoomCommand::SetAnimatedTextureList;
-}
-
-std::string SetAnimatedTextureList::GetSourceOutputCode(std::string prefix)
-{
- return "";
-}
-
-AnimatedTexture::AnimatedTexture(std::vector<uint8_t> rawData, uint32_t rawDataIndex)
- : segment(rawData[rawDataIndex]), type(BitConverter::ToInt16BE(rawData, rawDataIndex + 2)),
- segmentOffset(GETSEGOFFSET(BitConverter::ToInt32BE(rawData, rawDataIndex + 4)))
-{
- switch (type)
- {
- case 0:
- params.push_back(new ScrollingTexture(rawData, segmentOffset));
- break;
- case 1:
- params.push_back(new ScrollingTexture(rawData, segmentOffset));
- params.push_back(new ScrollingTexture(rawData, segmentOffset + 4));
- break;
- case 2:
- case 3:
- case 4:
- params.push_back(new FlashingTexture(rawData, segmentOffset, type));
- break;
- case 5:
- params.push_back(new CyclingTextureParams(rawData, segmentOffset));
- break;
- case 6: // Some terminator when there are no animated textures?
- break;
- }
-}
-
-AnimatedTexture::~AnimatedTexture()
-{
- for (AnitmatedTextureParams* param : params)
- delete param;
-}
-
-ScrollingTexture::ScrollingTexture(std::vector<uint8_t> rawData, uint32_t rawDataIndex)
- : xStep(rawData[rawDataIndex + 0]), yStep(rawData[rawDataIndex + 1]),
- width(rawData[rawDataIndex + 2]), height(rawData[rawDataIndex + 3])
-{
-}
-
-std::string ScrollingTexture::GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress)
-{
- return StringHelper::Sprintf(" { %i, %i, 0x%02X, 0x%02X },", xStep, yStep, width, height);
-}
-
-size_t ScrollingTexture::GetParamsSize()
-{
- return 4;
-}
-
-FlashingTexturePrimColor::FlashingTexturePrimColor(std::vector<uint8_t> rawData,
- uint32_t rawDataIndex)
- : r(rawData[rawDataIndex + 0]), g(rawData[rawDataIndex + 1]), b(rawData[rawDataIndex + 2]),
- a(rawData[rawDataIndex + 3]), lodFrac(rawData[rawDataIndex + 4])
-{
-}
-
-FlashingTextureEnvColor::FlashingTextureEnvColor(std::vector<uint8_t> rawData,
- uint32_t rawDataIndex)
- : r(rawData[rawDataIndex + 0]), g(rawData[rawDataIndex + 1]), b(rawData[rawDataIndex + 2]),
- a(rawData[rawDataIndex + 3])
-{
-}
-
-FlashingTexture::FlashingTexture(std::vector<uint8_t> rawData, uint32_t rawDataIndex, int32_t type)
- : cycleLength(BitConverter::ToUInt16BE(rawData, rawDataIndex + 0)),
- numKeyFrames(BitConverter::ToUInt16BE(rawData, rawDataIndex + 2)),
- primColorSegmentOffset(GETSEGOFFSET(BitConverter::ToInt32BE(rawData, rawDataIndex + 4))),
- envColorSegmentOffset(GETSEGOFFSET(BitConverter::ToInt32BE(rawData, rawDataIndex + 8))),
- keyFrameSegmentOffset(GETSEGOFFSET(BitConverter::ToInt32BE(rawData, rawDataIndex + 12)))
-{
- uint16_t length = (type == 2) ? cycleLength : numKeyFrames;
-
- int32_t currentPtr = primColorSegmentOffset;
- for (uint16_t i = 0; i < length; i++)
- {
- primColors.push_back(FlashingTexturePrimColor(rawData, currentPtr));
- currentPtr += 5;
- }
-
- currentPtr = envColorSegmentOffset;
- for (uint16_t i = 0; i < length; i++)
- {
- envColors.push_back(FlashingTextureEnvColor(rawData, currentPtr));
- currentPtr += 4;
- }
-
- currentPtr = keyFrameSegmentOffset;
- for (uint16_t i = 0; i < length; i++)
- {
- keyFrames.push_back(BitConverter::ToUInt16BE(rawData, currentPtr));
- currentPtr += 2;
- }
-}
-
-std::string FlashingTexture::GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress)
-{
- if (primColorSegmentOffset != 0)
- {
- std::string declaration = "";
- size_t index = 0;
-
- for (FlashingTexturePrimColor& color : primColors)
- {
- declaration += StringHelper::Sprintf(" { 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X },",
- color.r, color.g, color.b, color.a, color.lodFrac);
-
- if (index < primColors.size() - 1)
- declaration += "\n";
-
- index++;
- }
-
- zRoom->parent->AddDeclarationArray(
- primColorSegmentOffset, DeclarationAlignment::Align4, DeclarationPadding::None,
- primColors.size() * 5, "FlashingTexturePrimColor",
- StringHelper::Sprintf("%sAnimatedTexturePrimColor0x%06X", zRoom->GetName().c_str(),
- primColorSegmentOffset),
- primColors.size(), declaration);
- }
-
- if (envColorSegmentOffset != 0)
- {
- std::string declaration = "";
- size_t index = 0;
-
- for (FlashingTextureEnvColor& color : envColors)
- {
- declaration += StringHelper::Sprintf(" { 0x%02X, 0x%02X, 0x%02X, 0x%02X },", color.r,
- color.g, color.b, color.a);
-
- if (index < envColors.size() - 1)
- declaration += "\n";
-
- index++;
- }
-
- zRoom->parent->AddDeclarationArray(
- envColorSegmentOffset, DeclarationAlignment::Align4, DeclarationPadding::None,
- envColors.size() * 4, "Color_RGBA8",
- StringHelper::Sprintf("%sAnimatedTextureEnvColors0x%06X", zRoom->GetName().c_str(),
- envColorSegmentOffset),
- envColors.size(), declaration);
- }
-
- if (keyFrameSegmentOffset != 0)
- {
- std::string declaration = "";
- size_t index = 0;
-
- for (uint16_t keyFrame : keyFrames)
- {
- declaration += StringHelper::Sprintf(" 0x%02X,", keyFrame);
-
- if (index < keyFrames.size() - 1)
- declaration += "\n";
-
- index++;
- }
-
- zRoom->parent->AddDeclarationArray(keyFrameSegmentOffset, DeclarationAlignment::Align4,
- DeclarationPadding::None, keyFrames.size() * 2, "u16",
- StringHelper::Sprintf("%sAnimatedTextureKeyFrames0x%06X",
- zRoom->GetName().c_str(),
- keyFrameSegmentOffset),
- keyFrames.size(), declaration);
- }
-
- return StringHelper::Sprintf(
- "%i, %i, (u32)%s, (u32)%s, (u32)%s", cycleLength, numKeyFrames,
- (primColorSegmentOffset != 0) ?
- StringHelper::Sprintf("%sAnimatedTexturePrimColor0x%06X", zRoom->GetName().c_str(),
- primColorSegmentOffset)
- .c_str() :
- "NULL",
- (envColorSegmentOffset != 0) ?
- StringHelper::Sprintf("%sAnimatedTextureEnvColors0x%06X", zRoom->GetName().c_str(),
- envColorSegmentOffset)
- .c_str() :
- "NULL",
- (keyFrameSegmentOffset != 0) ?
- StringHelper::Sprintf("%sAnimatedTextureKeyFrames0x%06X", zRoom->GetName().c_str(),
- keyFrameSegmentOffset)
- .c_str() :
- "NULL");
-}
-
-size_t FlashingTexture::GetParamsSize()
-{
- return 16;
-}
-
-CyclingTextureParams::CyclingTextureParams(std::vector<uint8_t> rawData, uint32_t rawDataIndex)
- : cycleLength(BitConverter::ToUInt16BE(rawData, rawDataIndex + 0)),
- textureSegmentOffsetsSegmentOffset(
- GETSEGOFFSET(BitConverter::ToInt32BE(rawData, rawDataIndex + 4))),
- textureIndicesSegmentOffset(GETSEGOFFSET(BitConverter::ToInt32BE(rawData, rawDataIndex + 8)))
-{
- int32_t currentPtr = textureIndicesSegmentOffset;
- int32_t maxIndex = 0;
-
- for (uint16_t i = 0; i < cycleLength; i++)
- {
- int32_t newIndex = rawData[currentPtr];
- textureIndices.push_back(newIndex);
- currentPtr++;
- if (newIndex > maxIndex)
- maxIndex = newIndex;
- }
-
- currentPtr = textureSegmentOffsetsSegmentOffset;
- for (int32_t i = 0; i < maxIndex + 1; i++)
- {
- textureSegmentOffsets.push_back(GETSEGOFFSET(BitConverter::ToInt32BE(rawData, currentPtr)));
- currentPtr += 4;
- }
-}
-
-std::string CyclingTextureParams::GenerateSourceCode(ZRoom* zRoom, uint32_t baseAddress)
-{
- if (textureSegmentOffsetsSegmentOffset != 0)
- {
- std::string declaration = "";
- size_t index = 0;
-
- for (uint32_t offset : textureSegmentOffsets)
- {
- declaration +=
- StringHelper::Sprintf(" %sTex_%06X,", zRoom->GetName().c_str(), offset);
-
- if (index < textureSegmentOffsets.size() - 1)
- declaration += "\n";
-
- index++;
- }
-
- zRoom->parent->AddDeclarationArray(
- textureSegmentOffsetsSegmentOffset, DeclarationAlignment::Align4,
- DeclarationPadding::None, textureSegmentOffsets.size() * 4, "u64*",
- StringHelper::Sprintf("%sAnimatedTextureTexSegOffsets0x%06X", zRoom->GetName().c_str(),
- textureSegmentOffsetsSegmentOffset),
- textureSegmentOffsets.size(), declaration);
- }
-
- if (textureIndicesSegmentOffset != 0)
- {
- std::string declaration = "";
- size_t index = 0;
-
- for (uint8_t textureIndex : textureIndices)
- {
- declaration += StringHelper::Sprintf(" 0x%02X,", textureIndex);
-
- if (index < textureIndices.size() - 1)
- declaration += "\n";
-
- index++;
- }
-
- zRoom->parent->AddDeclarationArray(
- textureIndicesSegmentOffset, DeclarationAlignment::Align4, DeclarationPadding::None,
- textureIndices.size(), "u8",
- StringHelper::Sprintf("%sAnimatedTextureTexIndices0x%06X", zRoom->GetName().c_str(),
- textureIndicesSegmentOffset),
- textureIndices.size(), declaration);
- }
-
- return StringHelper::Sprintf(
- "%i, (u32)%s, (u32)%s", cycleLength,
- (textureSegmentOffsetsSegmentOffset != 0) ?
- StringHelper::Sprintf("%sAnimatedTextureTexSegOffsets0x%06X", zRoom->GetName().c_str(),
- textureSegmentOffsetsSegmentOffset)
- .c_str() :
- "NULL",
- (textureIndicesSegmentOffset != 0) ?
- StringHelper::Sprintf("%sAnimatedTextureTexIndices0x%06X", zRoom->GetName().c_str(),
- textureIndicesSegmentOffset)
- .c_str() :
- "NULL");
-}
-
-size_t CyclingTextureParams::GetParamsSize()
-{
- return 12;
-}