1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-29 01:35:06 +01:00

Rename RCT1G1Element and its fields

This commit is contained in:
Gymnasiast
2025-12-27 16:44:42 +01:00
parent 16a0e7727e
commit 8add10115e
5 changed files with 35 additions and 35 deletions

View File

@@ -32,7 +32,7 @@ namespace OpenRCT2::CommandLine::Sprite
auto fileHeaderSize = fileHeader.GetLength();
auto fileDataSize = fileData.GetLength();
uint32_t numEntries = fileHeaderSize / sizeof(RCTG1Element);
uint32_t numEntries = fileHeaderSize / sizeof(StoredG1Element);
G1Header header = {};
header.numEntries = numEntries;
@@ -40,17 +40,17 @@ namespace OpenRCT2::CommandLine::Sprite
FileStream outputStream(outputPath, FileMode::write);
outputStream.Write(&header, sizeof(G1Header));
auto g1Elements32 = std::make_unique<RCTG1Element[]>(numEntries);
fileHeader.Read(g1Elements32.get(), numEntries * sizeof(RCTG1Element));
auto g1Elements32 = std::make_unique<StoredG1Element[]>(numEntries);
fileHeader.Read(g1Elements32.get(), numEntries * sizeof(StoredG1Element));
for (uint32_t i = 0; i < numEntries; i++)
{
// RCT1 used zoomed offsets that counted from the beginning of the file, rather than from the current sprite.
if (g1Elements32[i].flags.has(G1Flag::hasZoomSprite))
{
g1Elements32[i].zoomed_offset = i - g1Elements32[i].zoomed_offset;
g1Elements32[i].zoomedOffset = i - g1Elements32[i].zoomedOffset;
}
outputStream.Write(&g1Elements32[i], sizeof(RCTG1Element));
outputStream.Write(&g1Elements32[i], sizeof(StoredG1Element));
}
std::vector<uint8_t> data;

View File

@@ -28,17 +28,17 @@ namespace OpenRCT2::CommandLine::Sprite
for (uint32_t i = 0; i < spriteFile.Header.numEntries; ++i)
{
RCTG1Element entry32bit{};
StoredG1Element entry32bit{};
stream.Read(&entry32bit, sizeof(entry32bit));
G1Element entry{};
entry.offset = reinterpret_cast<uint8_t*>(static_cast<uintptr_t>(entry32bit.offset));
entry.width = entry32bit.width;
entry.height = entry32bit.height;
entry.xOffset = entry32bit.x_offset;
entry.yOffset = entry32bit.y_offset;
entry.xOffset = entry32bit.xOffset;
entry.yOffset = entry32bit.yOffset;
entry.flags = entry32bit.flags;
entry.zoomedOffset = entry32bit.zoomed_offset;
entry.zoomedOffset = entry32bit.zoomedOffset;
spriteFile.Entries.push_back(std::move(entry));
}
spriteFile.Data.resize(spriteFile.Header.totalSize);
@@ -104,15 +104,15 @@ namespace OpenRCT2::CommandLine::Sprite
for (const auto& entry : Entries)
{
RCTG1Element entry32bit{};
StoredG1Element entry32bit{};
entry32bit.offset = static_cast<uint32_t>(reinterpret_cast<uintptr_t>(const_cast<uint8_t*>(entry.offset)));
entry32bit.width = entry.width;
entry32bit.height = entry.height;
entry32bit.x_offset = entry.xOffset;
entry32bit.y_offset = entry.yOffset;
entry32bit.xOffset = entry.xOffset;
entry32bit.yOffset = entry.yOffset;
entry32bit.flags = entry.flags;
entry32bit.zoomed_offset = entry.zoomedOffset;
entry32bit.zoomedOffset = entry.zoomedOffset;
stream.Write(&entry32bit, sizeof(entry32bit));
}

View File

@@ -304,8 +304,8 @@ static void OverrideElementOffsets(size_t index, G1Element& element)
static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1Element* elements)
{
auto g1Elements32 = std::make_unique<RCTG1Element[]>(count);
stream->Read(g1Elements32.get(), count * sizeof(RCTG1Element));
auto g1Elements32 = std::make_unique<StoredG1Element[]>(count);
stream->Read(g1Elements32.get(), count * sizeof(StoredG1Element));
if (is_rctc)
{
// Process RCTC's g1.dat file
@@ -334,24 +334,24 @@ static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1E
break;
}
const RCTG1Element& src = g1Elements32[rctc];
const StoredG1Element& src = g1Elements32[rctc];
// Double cast to silence compiler warning about casting to
// pointer from integer of mismatched length.
elements[i].offset = reinterpret_cast<uint8_t*>(static_cast<uintptr_t>(src.offset));
elements[i].width = src.width;
elements[i].height = src.height;
elements[i].xOffset = src.x_offset;
elements[i].yOffset = src.y_offset;
elements[i].xOffset = src.xOffset;
elements[i].yOffset = src.yOffset;
elements[i].flags = src.flags;
if (src.flags.has(G1Flag::hasZoomSprite))
{
elements[i].zoomedOffset = static_cast<int32_t>(i - rctc_to_rct2_index(rctc - src.zoomed_offset));
elements[i].zoomedOffset = static_cast<int32_t>(i - rctc_to_rct2_index(rctc - src.zoomedOffset));
}
else
{
elements[i].zoomedOffset = src.zoomed_offset;
elements[i].zoomedOffset = src.zoomedOffset;
}
++rctc;
@@ -373,17 +373,17 @@ static void ReadAndConvertGxDat(IStream* stream, size_t count, bool is_rctc, G1E
{
for (size_t i = 0; i < count; i++)
{
const RCTG1Element& src = g1Elements32[i];
const StoredG1Element& src = g1Elements32[i];
// Double cast to silence compiler warning about casting to
// pointer from integer of mismatched length.
elements[i].offset = reinterpret_cast<uint8_t*>(static_cast<uintptr_t>(src.offset));
elements[i].width = src.width;
elements[i].height = src.height;
elements[i].xOffset = src.x_offset;
elements[i].yOffset = src.y_offset;
elements[i].xOffset = src.xOffset;
elements[i].yOffset = src.yOffset;
elements[i].flags = src.flags;
elements[i].zoomedOffset = src.zoomed_offset;
elements[i].zoomedOffset = src.zoomedOffset;
}
}
}
@@ -622,7 +622,7 @@ bool GfxLoadCsg()
size_t fileHeaderSize = fileHeader.GetLength();
size_t fileDataSize = fileData.GetLength();
_csg.header.numEntries = static_cast<uint32_t>(fileHeaderSize / sizeof(RCTG1Element));
_csg.header.numEntries = static_cast<uint32_t>(fileHeaderSize / sizeof(StoredG1Element));
_csg.header.totalSize = static_cast<uint32_t>(fileDataSize);
if (!CsgIsUsable(_csg))

View File

@@ -92,17 +92,17 @@ struct Gx
std::unique_ptr<uint8_t[]> data;
};
struct RCTG1Element
struct StoredG1Element
{
uint32_t offset; // 0x00 note: uint32_t always!
int16_t width; // 0x04
int16_t height; // 0x06
int16_t x_offset; // 0x08
int16_t y_offset; // 0x0A
G1Flags flags; // 0x0C
uint16_t zoomed_offset; // 0x0E
uint32_t offset; // 0x00 note: uint32_t always!
int16_t width; // 0x04
int16_t height; // 0x06
int16_t xOffset; // 0x08
int16_t yOffset; // 0x0A
G1Flags flags; // 0x0C
uint16_t zoomedOffset; // 0x0E
};
static_assert(sizeof(RCTG1Element) == 0x10);
static_assert(sizeof(StoredG1Element) == 0x10);
using DrawBlendOp = uint8_t;

View File

@@ -85,7 +85,7 @@ bool CsgAtLocationIsUsable(u8string_view path)
size_t fileDataSize = fileData.GetLength();
Gx csg = {};
csg.header.numEntries = static_cast<uint32_t>(fileHeaderSize / sizeof(RCTG1Element));
csg.header.numEntries = static_cast<uint32_t>(fileHeaderSize / sizeof(StoredG1Element));
csg.header.totalSize = static_cast<uint32_t>(fileDataSize);
return CsgIsUsable(csg);
}