From cda9dce7dd6e5436155100cd82011d7a295203d5 Mon Sep 17 00:00:00 2001 From: trixie Date: Mon, 22 Apr 2024 17:38:58 -0400 Subject: [PATCH] add reportGetItem --- data/uking_functions.csv | 2 +- src/Game/gamePlayReport.cpp | 28 ++++++++++++++++++++++++++++ src/Game/gamePlayReport.h | 1 + 3 files changed, 30 insertions(+), 1 deletion(-) diff --git a/data/uking_functions.csv b/data/uking_functions.csv index f6f905fa..372c2b7e 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -61188,7 +61188,7 @@ Address,Quality,Size,Name 0x0000007100a8885c,U,000528,uking::reportGanonQuestFinished 0x0000007100a88a6c,U,001740,uking::reportGameOver 0x0000007100a89138,U,001384,uking::reportBloodMoon -0x0000007100a896a0,U,000852,uking::reportGetItem +0x0000007100a896a0,O,000852,_ZN5uking13reportGetItemERKN4sead7Vector3IfEEPKNS0_14SafeStringBaseIcEE 0x0000007100a899f4,U,008496,uking::reportOptionsFromTitleStage 0x0000007100a8bb24,U,000176,PosTrackerUploader::dtor 0x0000007100a8bbd4,U,000184,PosTrackerUploader::dtorDelete diff --git a/src/Game/gamePlayReport.cpp b/src/Game/gamePlayReport.cpp index 165010c5..60c84df3 100644 --- a/src/Game/gamePlayReport.cpp +++ b/src/Game/gamePlayReport.cpp @@ -8,7 +8,10 @@ #include "KingSystem/System/StageInfo.h" namespace uking { + unsigned int getQuestId(const sead::SafeString& quest_name); +int positionFunc(const sead::Vector2i& pos); + void reportKorok(const sead::Vector3f& position) { ksys::ProductReporter::getSomeBool(); s32 id = ksys::gdt::getFlag_HiddenKorok_Number(); @@ -52,6 +55,30 @@ void reportDungeon(const sead::SafeString& name, const sead::SafeString& event) } } +void reportGetItem(const sead::Vector3f& pos, const sead::SafeString* targetActorName) { + ksys::ProductReporter::getSomeBool(); + PlayReport report(sead::SafeString("getitem"), 7, + ksys::PlayReportMgr::instance()->getReporter()->getHeap()); + report.addMapType(); + + int name = sead::HashCRC32::calcStringHash(*targetActorName); + + ksys::ProductReporter::getSomeBool(); + + report.add(sead::SafeString("name"), name); + + int position = positionFunc({int(pos.x), int(pos.y)}); + + report.add(sead::SafeString("Position"), position); + report.addPlayTimes(); + + if (ksys::PlayReportMgr::instance()) { + auto* reporter = ksys::PlayReportMgr::instance()->getReporter(); + if (reporter && reporter->isEnabled()) + reporter->saveReport(&report); + } +} + void reportQuestStep(const ksys::qst::Quest* quest, int step_index) { if (quest && step_index >= 0 && step_index < quest->mSteps.size()) { const sead::SafeString& name = quest->mName; @@ -78,6 +105,7 @@ void reportQuestStep(const ksys::qst::Quest* quest, int step_index) { } } } + PlayReport::PlayReport(const sead::FixedSafeString<32>& event_id, s32 num_entries, sead::Heap* heap) : ksys::PlayReport(event_id, num_entries, heap) {} diff --git a/src/Game/gamePlayReport.h b/src/Game/gamePlayReport.h index c6a188fd..c2e5462f 100644 --- a/src/Game/gamePlayReport.h +++ b/src/Game/gamePlayReport.h @@ -11,6 +11,7 @@ namespace uking { void reportKorok(const sead::Vector3f& position); void reportDungeon(const sead::SafeString& name, const sead::SafeString& event); void reportQuestStep(const ksys::qst::Quest* quest, int step_index); +void reportGetItem(const sead::Vector3f& pos, const sead::SafeString* targetActorName); // TODO: More functions class PlayReport : public ksys::PlayReport {