mirror of
https://github.com/Laupetin/OpenAssetTools.git
synced 2025-04-23 17:45:46 +00:00
Merge pull request #416 from Laupetin/fix/t6-stringtable-cell-indices
fix: ignoring last element in t6 stringtable cell index sorting
This commit is contained in:
commit
82d38ab710
@ -1942,7 +1942,7 @@ namespace T6
|
|||||||
int columnCount;
|
int columnCount;
|
||||||
int rowCount;
|
int rowCount;
|
||||||
StringTableCell* values;
|
StringTableCell* values;
|
||||||
int16_t* cellIndex;
|
uint16_t* cellIndex;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum LbUpdateType
|
enum LbUpdateType
|
||||||
|
@ -112,7 +112,8 @@ namespace string_table
|
|||||||
template<typename StringTableType, int (*HashFunc)(const char*)>
|
template<typename StringTableType, int (*HashFunc)(const char*)>
|
||||||
class StringTableLoaderV3 final : public AbstractStringTableLoader<StringTableType, std::remove_pointer_t<decltype(StringTableType::values)>>
|
class StringTableLoaderV3 final : public AbstractStringTableLoader<StringTableType, std::remove_pointer_t<decltype(StringTableType::values)>>
|
||||||
{
|
{
|
||||||
using CellType_t = decltype(*StringTableType::values);
|
using CellType_t = std::remove_pointer_t<decltype(StringTableType::values)>;
|
||||||
|
using CellIndexType_t = std::remove_pointer_t<decltype(StringTableType::cellIndex)>;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void SetCellContent(CellType_t& cell, const char* content) override
|
void SetCellContent(CellType_t& cell, const char* content) override
|
||||||
@ -129,13 +130,13 @@ namespace string_table
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
stringTable->cellIndex = memory.Alloc<int16_t>(cellCount);
|
stringTable->cellIndex = memory.Alloc<CellIndexType_t>(cellCount);
|
||||||
for (auto i = 0u; i < cellCount; i++)
|
for (auto i = 0u; i < cellCount; i++)
|
||||||
stringTable->cellIndex[i] = i;
|
stringTable->cellIndex[i] = static_cast<CellIndexType_t>(i);
|
||||||
|
|
||||||
std::sort(&stringTable->cellIndex[0],
|
std::sort(&stringTable->cellIndex[0],
|
||||||
&stringTable->cellIndex[cellCount - 1],
|
&stringTable->cellIndex[cellCount],
|
||||||
[stringTable](const int16_t a, const int16_t b)
|
[stringTable](const CellIndexType_t a, const CellIndexType_t b)
|
||||||
{
|
{
|
||||||
auto compareResult = stringTable->values[a].hash - stringTable->values[b].hash;
|
auto compareResult = stringTable->values[a].hash - stringTable->values[b].hash;
|
||||||
if (compareResult == 0)
|
if (compareResult == 0)
|
||||||
|
@ -51,10 +51,11 @@ namespace
|
|||||||
CHECK(stringTable->values[5].hash == 0x1505);
|
CHECK(stringTable->values[5].hash == 0x1505);
|
||||||
|
|
||||||
REQUIRE(stringTable->cellIndex != nullptr);
|
REQUIRE(stringTable->cellIndex != nullptr);
|
||||||
CHECK(stringTable->cellIndex[0] == 2);
|
CHECK(stringTable->cellIndex[0] == 5);
|
||||||
CHECK(stringTable->cellIndex[1] == 4);
|
CHECK(stringTable->cellIndex[1] == 2);
|
||||||
CHECK(stringTable->cellIndex[2] == 3);
|
CHECK(stringTable->cellIndex[2] == 4);
|
||||||
CHECK(stringTable->cellIndex[3] == 1);
|
CHECK(stringTable->cellIndex[3] == 3);
|
||||||
CHECK(stringTable->cellIndex[4] == 0);
|
CHECK(stringTable->cellIndex[4] == 1);
|
||||||
|
CHECK(stringTable->cellIndex[5] == 0);
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
@ -51,10 +51,11 @@ namespace
|
|||||||
CHECK(stringTable->values[5].hash == 0x1505);
|
CHECK(stringTable->values[5].hash == 0x1505);
|
||||||
|
|
||||||
REQUIRE(stringTable->cellIndex != nullptr);
|
REQUIRE(stringTable->cellIndex != nullptr);
|
||||||
CHECK(stringTable->cellIndex[0] == 2);
|
CHECK(stringTable->cellIndex[0] == 5);
|
||||||
CHECK(stringTable->cellIndex[1] == 4);
|
CHECK(stringTable->cellIndex[1] == 2);
|
||||||
CHECK(stringTable->cellIndex[2] == 3);
|
CHECK(stringTable->cellIndex[2] == 4);
|
||||||
CHECK(stringTable->cellIndex[3] == 1);
|
CHECK(stringTable->cellIndex[3] == 3);
|
||||||
CHECK(stringTable->cellIndex[4] == 0);
|
CHECK(stringTable->cellIndex[4] == 1);
|
||||||
|
CHECK(stringTable->cellIndex[5] == 0);
|
||||||
}
|
}
|
||||||
} // namespace
|
} // namespace
|
||||||
|
Loading…
x
Reference in New Issue
Block a user