Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

System: Implement SphinxQuizData #324

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
55 changes: 55 additions & 0 deletions src/System/SphinxQuizData.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
#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() {
for (s32 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 (s32 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 (s32 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;
};