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:
@@ -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;
|
||||
|
||||
@@ -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));
|
||||
}
|
||||
|
||||
@@ -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))
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user