Decompile 14 functions in Source/Contents/NavigationLink.cpp, Source/Contents/NavigationManager.h, ...

Batch #1540 by ragnarok-clanker: 0 byte-identical, 14 confirmed by peer review.

- fn_19436 CNavi_Link::`scalar deleting destructor': logic confirmed by peer review
- fn_19483 CNavi_Link::GetCell: logic confirmed by peer review
- fn_19497 CNavi_Link::GetInfo: logic confirmed by peer review
- fn_19387 CNaviData::SetDestination: logic confirmed by peer review
- fn_19638 CNavigationManager::UpdateGround: logic confirmed by peer review
- fn_19364 CNaviData::CNaviData: logic confirmed by peer review
- fn_19371 CNaviData::~CNaviData: logic confirmed by peer review
- fn_19429 CNaviInfo::~CNaviInfo: logic confirmed by peer review
- fn_19551 CNavigationManager::CNavigationManager: logic confirmed by peer review
- fn_19574 CNavigationManager::ClearRouteNodes: logic confirmed by peer review
- fn_19575 CNavigationManager::ClearNodePaths: logic confirmed by peer review
- fn_19593 CNavigationManager::Reset: logic confirmed by peer review
- fn_45448 CNavigationManager::~CNavigationManager: logic confirmed by peer review
- fn_45452 CNavigationManager::GetLinkedPlayerInfo: logic confirmed by peer review

Reviewed-by: ragnarok-clanker
This commit is contained in:
ragnarok-clanker 2026-10-28 17:40:11 +00:00
commit 4c1960b206
3 changed files with 175 additions and 0 deletions

View file

@ -109,10 +109,66 @@ int CNavigationManager::SaveCurrentTarget() {
}
// OFFSET: 0x00B880D0
// FUNCTION: fn_19364
CNaviData::CNaviData() : info(nullptr), cellX(0), cellY(0), range(50000) {
}
// OFFSET: 0x00B88530
// FUNCTION: fn_19371
CNaviData::~CNaviData() {
this->Clear();
for (CNavi_Object*& object : this->objects) {
if (object != nullptr) {
delete object;
}
object = nullptr;
}
this->objects.clear();
for (CNaviInfo*& info : this->destinations) {
if (info != nullptr) {
delete info;
}
info = nullptr;
}
this->destinations.clear();
}
// OFFSET: 0x00B8CC10
// FUNCTION: fn_19429
CNaviInfo::~CNaviInfo() {
this->index = 0;
this->type = 5001;
this->name.clear();
this->title.clear();
this->cellX = 0;
this->cellY = 0;
for (CNavi_Object*& npc : this->npcs) {
if (npc != nullptr) {
delete npc;
}
npc = nullptr;
}
this->npcs.clear();
for (CNavi_Object*& mob : this->mobs) {
if (mob != nullptr) {
delete mob;
}
mob = nullptr;
}
this->mobs.clear();
for (CNavi_Link*& link : this->links) {
if (link != nullptr) {
delete link;
}
link = nullptr;
}
this->links.clear();
}
// INLINED
NavigationTarget::~NavigationTarget() {
@ -124,13 +180,93 @@ NavigationTarget::~NavigationTarget() {
}
// OFFSET: 0x00B92580
// FUNCTION: fn_19551
CNavigationManager::CNavigationManager() {
this->viewIcon = 1;
this->unknown_127C = false;
this->unknown_127D = false;
this->unknown_127E = false;
this->unknown_1250 = -1;
this->unknown_124C = -1;
this->unknown_1248 = false;
this->unknown_1254 = false;
this->Reset(true);
this->pathFinder.useNodePool = true;
this->unknown_1244 = nullptr;
char buffer[0x104];
for (int i = 0; i < 8; ++i) {
std::memset(buffer, 0, sizeof(buffer));
std::sprintf(buffer, "유저인터페이스\\navigation_interface3\\navi_grid%d_%d.tga", this->viewIcon, i);
this->labels[i].assign(buffer, std::strlen(buffer));
}
this->unknown_12B4 = false;
}
// OFFSET: 0x00B92CA0
// FUNCTION: fn_45448
CNavigationManager::~CNavigationManager() {
this->Reset(true);
this->unknown_1244 = nullptr;
}
// OFFSET: 0x00B959D0
// FUNCTION: fn_19574
void CNavigationManager::ClearRouteNodes() {
for (NaviRouteLine& line : this->routeLines) {
line.text.clear();
}
this->routeLines.clear();
}
// OFFSET: 0x00B95A20
// FUNCTION: fn_19575
void CNavigationManager::ClearNodePaths() {
for (std::size_t i = 0; i < this->nodePaths.size(); ++i) {
this->nodePaths[i].clear();
}
this->nodePaths.clear();
}
// OFFSET: 0x00B961A0
// FUNCTION: fn_45452
CNaviInfo* CNavigationManager::GetLinkedPlayerInfo() {
if (!this->unknown_1244->HasName(g_session.m_navigationPlayerMap)) {
this->unknown_1244 = this->FindObject(g_session.m_navigationPlayerMap);
}
return this->unknown_1244;
}
// OFFSET: 0x00B96BA0
// FUNCTION: fn_19593
void CNavigationManager::Reset(bool clearAll) {
if (clearAll) {
this->ClearNodePaths();
this->unknown_12C4 = -1;
this->unknown_12C8 = -1;
this->states.clear();
}
this->savedTarget = NavigationTarget();
this->currentTarget = NavigationTarget();
this->routeResult = 0;
this->nodes.clear();
this->unknown_115C = false;
this->selectedNode = -1;
this->movementRoute.segment = 0;
this->unknown_117C = false;
this->ground = nullptr;
this->unknown_1258 = 0;
this->unknown_1260 = 0;
this->unknown_1264.clear();
this->unknown_1280 = 0;
this->unknown_1284 = 0;
this->unknown_1288 = nullptr;
this->unknown_128C = -1;
this->unknown_1290 = -1;
this->cells.clear();
this->unknown_12A0 = nullptr;
this->unknown_12A4 = nullptr;
this->ClearRouteNodes();
}