Skip to content

Commit

Permalink
System: Implement SphinxQuizData
Browse files Browse the repository at this point in the history
  • Loading branch information
Naii-the-Baf committed Jan 30, 2025
1 parent 078ccd6 commit beddd26
Show file tree
Hide file tree
Showing 3 changed files with 92 additions and 8 deletions.
16 changes: 8 additions & 8 deletions data/odyssey_functions.csv
Original file line number Diff line number Diff line change
Expand Up @@ -34051,14 +34051,14 @@ Address,Quality,Size,Name
0x000000710053c9e0,U,000160,_ZNK12ShopTalkData17checkExistNewItemERK22GameDataHolderAccessoriib
0x000000710053ca80,U,000296,_ZN12ShopTalkData5writeEPN2al11ByamlWriterE
0x000000710053cba8,U,000472,_ZN12ShopTalkData4readERKN2al9ByamlIterE
0x000000710053cd80,U,000160,_ZN14SphinxQuizDataC2Ei
0x000000710053ce20,U,000052,_ZN14SphinxQuizData4initEv
0x000000710053ce54,U,000016,_ZN14SphinxQuizData23answerCorrectSphinxQuizEi
0x000000710053ce64,U,000016,_ZN14SphinxQuizData26answerCorrectSphinxQuizAllEi
0x000000710053ce74,U,000012,_ZNK14SphinxQuizData25isAnswerCorrectSphinxQuizEi
0x000000710053ce80,U,000012,_ZNK14SphinxQuizData28isAnswerCorrectSphinxQuizAllEi
0x000000710053ce8c,U,000152,_ZN14SphinxQuizData5writeEPN2al11ByamlWriterE
0x000000710053cf24,U,000212,_ZN14SphinxQuizData4readERKN2al9ByamlIterE
0x000000710053cd80,O,000160,_ZN14SphinxQuizDataC2Ei
0x000000710053ce20,O,000052,_ZN14SphinxQuizData4initEv
0x000000710053ce54,O,000016,_ZN14SphinxQuizData23answerCorrectSphinxQuizEi
0x000000710053ce64,O,000016,_ZN14SphinxQuizData26answerCorrectSphinxQuizAllEi
0x000000710053ce74,O,000012,_ZNK14SphinxQuizData25isAnswerCorrectSphinxQuizEi
0x000000710053ce80,O,000012,_ZNK14SphinxQuizData28isAnswerCorrectSphinxQuizAllEi
0x000000710053ce8c,O,000152,_ZN14SphinxQuizData5writeEPN2al11ByamlWriterE
0x000000710053cf24,O,000212,_ZN14SphinxQuizData4readERKN2al9ByamlIterE
0x000000710053cff8,U,000696,_ZN12TempSaveDataC2Ev
0x000000710053d2b0,U,000168,_ZN12TempSaveData4initEv
0x000000710053d358,U,000068,_ZN12TempSaveData15initForScenarioEv
Expand Down
57 changes: 57 additions & 0 deletions src/System/SphinxQuizData.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
#include "System/SphinxQuizData.h"

#include "Library/Yaml/ByamlIter.h"
#include "Library/Yaml/Writer/ByamlWriter.h"

SphinxQuizData::SphinxQuizData(s32 arraySize) : mArraySize(arraySize) {
mIsAnswerCorrectSphinxQuiz = new bool[mArraySize];
mIsAnswerCorrectSphinxQuizAll = new bool[mArraySize];

init();
}

void SphinxQuizData::init() {
if (0 < mArraySize) {
for (s64 i = 0; i < mArraySize; i++) {
mIsAnswerCorrectSphinxQuiz[i] = false;
mIsAnswerCorrectSphinxQuizAll[i] = false;
}
}
}

void SphinxQuizData::answerCorrectSphinxQuiz(s32 index) {
mIsAnswerCorrectSphinxQuiz[index] = true;
}

void SphinxQuizData::answerCorrectSphinxQuizAll(s32 index) {
mIsAnswerCorrectSphinxQuizAll[index] = true;
}

bool SphinxQuizData::isAnswerCorrectSphinxQuiz(s32 index) const {
return mIsAnswerCorrectSphinxQuiz[index];
}

bool SphinxQuizData::isAnswerCorrectSphinxQuizAll(s32 index) const {
return mIsAnswerCorrectSphinxQuizAll[index];
}

void SphinxQuizData::write(al::ByamlWriter* writer) {
for (s64 i = 0; i < mArraySize; i++) {
writer->pushHash();
writer->addBool("IsAnswerCorrectSphinxQuiz", mIsAnswerCorrectSphinxQuiz[i]);
writer->addBool("IsAnswerCorrectSphinxQuizAll", mIsAnswerCorrectSphinxQuizAll[i]);
writer->pop();
}
}

void SphinxQuizData::read(const al::ByamlIter& reader) {
init();

for (s64 i = 0; i < mArraySize; i++) {
al::ByamlIter sphinxData{};
reader.tryGetIterByIndex(&sphinxData, i);
sphinxData.tryGetBoolByKey(&mIsAnswerCorrectSphinxQuiz[i], "IsAnswerCorrectSphinxQuiz");
sphinxData.tryGetBoolByKey(&mIsAnswerCorrectSphinxQuizAll[i],
"IsAnswerCorrectSphinxQuizAll");
}
}
27 changes: 27 additions & 0 deletions src/System/SphinxQuizData.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
#pragma once

#include <basis/seadTypes.h>

#include "System/ByamlSave.h"

namespace al {
class ByamlIter;
class ByamlWriter;
} // namespace al

class SphinxQuizData : public ByamlSave {
public:
SphinxQuizData(s32 arraySize);
void init();
void answerCorrectSphinxQuiz(s32 index);
void answerCorrectSphinxQuizAll(s32 index);
bool isAnswerCorrectSphinxQuiz(s32 index) const;
bool isAnswerCorrectSphinxQuizAll(s32 index) const;
void write(al::ByamlWriter* writer) override;
void read(const al::ByamlIter& reader) override;

private:
bool* mIsAnswerCorrectSphinxQuiz;
bool* mIsAnswerCorrectSphinxQuizAll;
s32 mArraySize;
};

0 comments on commit beddd26

Please sign in to comment.