rodecomp/Source/Contents/NavigationSource.cpp
ragnarok-clanker 3c5e940a6d Decompile 31 functions in Source/Contents/NavigationManager.h, Source/Contents/NavigationRequest.cpp, ...
Batch #1503 by ragnarok-clanker: 12 byte-identical, 19 confirmed by peer review.

- fn_19461 CNavi_Object::GetFlag: logic confirmed by peer review
- fn_19474 CNavi_Object::GetTitle: byte-identical
- fn_19476 CNaviInfo::GetTitle: byte-identical
- fn_19477 CNavi_Object::GetName: byte-identical
- fn_19484 CNavi_Object::GetCell: logic confirmed by peer review
- fn_19485 CNaviInfo::GetName: byte-identical
- fn_19488 CNavi_Object::GetIndex: byte-identical
- fn_19493 CNavi_Object::GetType: byte-identical
- fn_19495 CNavi_Object::GetId: byte-identical
- fn_19498 CNavi_Object::GetInfo: byte-identical
- fn_19376 CNavigationManager::FindObject: logic confirmed by peer review
- fn_19378 CNaviData::GetCell: logic confirmed by peer review
- fn_19380 CNaviData::GetInfo: byte-identical
- fn_19430 CNavi_Object::~CNavi_Object: logic confirmed by peer review
- fn_19434 CNaviInfo::HasName: logic confirmed by peer review
- fn_19604 CNavigationManager::SelectedNodeText: logic confirmed by peer review
- fn_19605 CNavigationManager::SubDestinationText: logic confirmed by peer review
- fn_19606 CNavigationManager::DestinationText: logic confirmed by peer review
- fn_19607 CNavigationManager::DestinationTitle: logic confirmed by peer review
- fn_19613 CNavigationManager::LoadSettings: logic confirmed by peer review
- fn_19618 CNavigationManager::FitToSquare: logic confirmed by peer review
- fn_45449 CNaviData::Clear: logic confirmed by peer review
- fn_19588 CNavigationManager::GetCurrentTarget: logic confirmed by peer review
- fn_19589 CNavigationManager::GetCurrentTargetName: logic confirmed by peer review
- fn_19590 CNavigationManager::GetSavedTarget: logic confirmed by peer review
- fn_19591 CNavigationManager::GetDestinationInfo: byte-identical
- fn_19592 CNavigationManager::GetDestinationCell: logic confirmed by peer review
- fn_19594 CNavigationManager::ClearData: logic confirmed by peer review
- fn_19596 CNavigationManager::IsCurrentTarget: logic confirmed by peer review
- fn_19597 CNavigationManager::GetCurrentTargetType: byte-identical
- fn_19635 CNavigationManager::SaveCurrentTarget: byte-identical

Reviewed-by: ragnarok-clanker
Adds to the build: Source/Contents/NavigationRequest.cpp
2026-10-28 17:20:17 +00:00

104 lines
2.5 KiB
C++

#include "Contents/NavigationManager.h"
#include "Resource/ResourceMgr.h"
#include <cstring>
// OFFSET: 0x00B96980
// FUNCTION: fn_19588
NavigationTarget CNavigationManager::GetCurrentTarget() const {
return this->currentTarget;
}
// OFFSET: 0x00B96A10
// FUNCTION: fn_19589
std::string CNavigationManager::GetCurrentTargetName() const {
std::string name;
void* object = this->currentTarget.object;
if (object != nullptr) {
const int type = this->currentTarget.type;
if (type == 0 || type == 1 || ((type == 2 || type == 3 || type == 6) && (object = static_cast<CNavi_Object*>(object)->GetInfo()) != nullptr)) {
name.assign(static_cast<CNaviInfo*>(object)->GetName());
}
}
return name;
}
// OFFSET: 0x00B96AE0
// FUNCTION: fn_19590
NavigationTarget CNavigationManager::GetSavedTarget() const {
return this->savedTarget;
}
// OFFSET: 0x00B96B70
// FUNCTION: fn_19591
CNaviInfo* CNavigationManager::GetDestinationInfo() {
return this->data.GetInfo();
}
// OFFSET: 0x00B96B80
// FUNCTION: fn_19592
NaviCell* CNavigationManager::GetDestinationCell(NaviCell* out) {
this->data.GetCell(out);
return out;
}
// OFFSET: 0x00B96F10
// FUNCTION: fn_19594
void CNavigationManager::ClearData() {
this->unknown_12B4 = false;
this->data.Clear();
}
// OFFSET: 0x00B97090
// FUNCTION: fn_19596
bool CNavigationManager::IsCurrentTarget(const char* name) const {
if (name == nullptr) {
return false;
}
void* object = this->currentTarget.object;
if (object == nullptr) {
return false;
}
const int type = this->currentTarget.type;
if (type != 0 && type != 1) {
if (type != 2 && type != 3 && type != 6) {
return false;
}
object = static_cast<CNavi_Object*>(object)->GetInfo();
if (object == nullptr) {
return false;
}
}
const CNaviInfo* info = static_cast<CNaviInfo*>(object);
if (std::strcmp(info->GetName(), name) == 0) {
return true;
}
const std::string resolved = ResourceMgr::Instance().aliases.ResolveMapName(name);
return std::strcmp(info->GetName(), resolved.c_str()) == 0;
}
// OFFSET: 0x00B971D0
// FUNCTION: fn_19597
int CNavigationManager::GetCurrentTargetType() const {
return this->currentTarget.type;
}
// OFFSET: 0x00BA0AE0
// FUNCTION: fn_19635
int CNavigationManager::SaveCurrentTarget() {
const int type = this->currentTarget.type;
if (type == 6) {
return -92;
}
if ((type != 1 && type != 2 && type != 3 && type != 0) || !this->currentTarget.object) {
return -97;
}
this->savedTarget = this->currentTarget;
return 0;
}