summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorBraylon Mooney <99223145+trixie909@users.noreply.github.com>2024-04-21 20:59:51 -0400
committerGitHub <noreply@github.com>2024-04-22 01:59:51 +0100
commitb4ac2f91d4c16f9220239b91d19f4e17dbfb4bac (patch)
tree7fa247a0ea5b051d945607cc1522a18875fbf846 /src
parent00568fbbabef0f9b4f227b7e3d513b3a1878a23e (diff)
reportQuestStep (#126)
Diffstat (limited to 'src')
-rw-r--r--src/Game/gamePlayReport.cpp30
-rw-r--r--src/Game/gamePlayReport.h5
2 files changed, 32 insertions, 3 deletions
diff --git a/src/Game/gamePlayReport.cpp b/src/Game/gamePlayReport.cpp
index 86566847..165010c5 100644
--- a/src/Game/gamePlayReport.cpp
+++ b/src/Game/gamePlayReport.cpp
@@ -3,11 +3,12 @@
#include "KingSystem/GameData/gdtCommonFlagsUtils.h"
#include "KingSystem/GameData/gdtManager.h"
#include "KingSystem/GameData/gdtTriggerParam.h"
+#include "KingSystem/Quest/qstQuest.h"
#include "KingSystem/System/ProductReporter.h"
#include "KingSystem/System/StageInfo.h"
namespace uking {
-
+unsigned int getQuestId(const sead::SafeString& quest_name);
void reportKorok(const sead::Vector3f& position) {
ksys::ProductReporter::getSomeBool();
s32 id = ksys::gdt::getFlag_HiddenKorok_Number();
@@ -30,7 +31,6 @@ void reportKorok(const sead::Vector3f& position) {
void reportDungeon(const sead::SafeString& name, const sead::SafeString& event) {
ksys::ProductReporter::getSomeBool();
-
if (name.findIndex("Remains") == -1 && name.findIndex("Dungeon") == -1 &&
name.findIndex("FinalTrial") == -1)
return;
@@ -52,6 +52,32 @@ void reportDungeon(const sead::SafeString& name, const sead::SafeString& event)
}
}
+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;
+ const sead::SafeString step_name = quest->mSteps[step_index]->name;
+
+ ksys::ProductReporter::getSomeBool();
+
+ const unsigned int quest_id = getQuestId(name);
+
+ PlayReport report(sead::SafeString("challenge"), 7,
+ ksys::PlayReportMgr::instance()->getReporter()->getHeap());
+
+ report.addMapType();
+ report.add(sead::SafeString("Id"), quest_id);
+ report.add(sead::SafeString("Name"), name);
+ report.add(sead::SafeString("Step"), step_index);
+ report.add(sead::SafeString("StepName"), step_name);
+ report.addPlayTimes();
+
+ if (ksys::PlayReportMgr::instance()) {
+ auto* reporter = ksys::PlayReportMgr::instance()->getReporter();
+ if (reporter && reporter->isEnabled())
+ reporter->saveReport(&report);
+ }
+ }
+}
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 edce5191..c6a188fd 100644
--- a/src/Game/gamePlayReport.h
+++ b/src/Game/gamePlayReport.h
@@ -3,11 +3,14 @@
#include <math/seadVectorFwd.h>
#include "KingSystem/System/PlayReportMgr.h"
+namespace ksys::qst {
+struct Quest;
+}
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);
// TODO: More functions
class PlayReport : public ksys::PlayReport {