Decompile 4 functions in Source/Contents/NavigationManager.h, Source/Contents/NavigationRoute.cpp, ...

Batch #7233 by eAthena: 0 byte-identical, 4 confirmed by peer review.

- fn_19619 CNavigationManager::WriteStates: logic confirmed by peer review
- fn_16324 RecommendedQuestInfo::CUIScrollWindow::Slot15: logic confirmed by peer review
- fn_16349 CUIRecommendedQuestInfo::Slot16: logic confirmed by peer review
- fn_16350 RecommendedQuestInfo::CUIScrollWindow::Slot16: logic confirmed by peer review

Peer-reviewed-by: alisonrag, Lumen, Landruca
Accepted without human review: peers confirmed the logic ("same" ahead by at least 3, with 70% of the votes).
This commit is contained in:
ragnarok-clanker 2026-10-31 05:10:06 +00:00
commit bfc44fffd9
7 changed files with 142 additions and 0 deletions

View file

@ -598,6 +598,39 @@ float CNavigationManager::FitToSquare(int* offsetX, int* offsetY, int width, int
return scale;
}
// OFFSET: 0x00B9C0D0
// FUNCTION: fn_19619
std::vector<unsigned char> CNavigationManager::WriteStates() {
std::vector<unsigned char> buffer;
if (this->states.empty()) {
return buffer;
}
buffer.resize(4, 0);
std::size_t offset = 4;
*reinterpret_cast<int*>(buffer.data()) = static_cast<int>(this->states.size());
for (auto it = this->states.begin(); it != this->states.end(); ++it) {
CNaviInfo* info = static_cast<CNaviInfo*>(it->object);
if (info == nullptr) {
continue;
}
buffer.resize(it->name.size() + 0x24 + offset, 0);
*reinterpret_cast<int*>(buffer.data() + offset) = it->type;
offset += 4;
std::memcpy(buffer.data() + offset, info->GetName(), info->GetNameLength());
*reinterpret_cast<int*>(buffer.data() + offset + 0x14) = it->x;
*reinterpret_cast<int*>(buffer.data() + offset + 0x18) = it->y;
const int length = static_cast<int>(it->name.size());
*reinterpret_cast<int*>(buffer.data() + offset + 0x1C) = length;
offset += 0x20;
if (length > 0) {
std::memcpy(buffer.data() + offset, it->name.c_str(), length);
offset += length;
}
}
return buffer;
}
// OFFSET: 0x00B888F0
// FUNCTION: fn_19378
NaviCell* CNaviData::GetCell(NaviCell* out) {