1#include "Amiibo/SearchAmiiboDataTable.h"
2
3#include <basis/seadTypes.h>
4
5#include "Library/Yaml/ByamlIter.h"
6#include "Library/Yaml/Writer/ByamlWriter.h"
7
8namespace al {
9class ByamlIter;
10class ByamlWriter;
11} // namespace al
12
13SearchAmiiboData::SearchAmiiboData() {
14 init();
15}
16
17void SearchAmiiboData::init() {
18 id = -1;
19 numberingId = -1;
20 searchStartTime = 0;
21}
22
23bool SearchAmiiboData::isInvalidId() const {
24 return id == -1;
25}
26
27SearchAmiiboDataTable::SearchAmiiboDataTable() {
28 mEntries = new SearchAmiiboData[3]();
29}
30
31void SearchAmiiboDataTable::init() {
32 for (s32 i = 0; i < 3; i++)
33 mEntries[i].init();
34}
35
36void SearchAmiiboDataTable::write(al::ByamlWriter* writer) {
37 writer->pushArray("SearchAmiiboData");
38
39 writer->pushHash();
40 writer->addInt("Id", mEntries[0].id);
41 writer->addInt("NumberingId", mEntries[0].numberingId);
42 writer->addUInt64("SearchStartTime", mEntries[0].searchStartTime);
43 writer->pop();
44
45 writer->pushHash();
46 writer->addInt("Id", mEntries[1].id);
47 writer->addInt("NumberingId", mEntries[1].numberingId);
48 writer->addUInt64("SearchStartTime", mEntries[1].searchStartTime);
49 writer->pop();
50
51 writer->pushHash();
52 writer->addInt("Id", mEntries[2].id);
53 writer->addInt("NumberingId", mEntries[2].numberingId);
54 writer->addUInt64("SearchStartTime", mEntries[2].searchStartTime);
55 writer->pop();
56
57 writer->pop();
58}
59
60void SearchAmiiboDataTable::read(const al::ByamlIter& iter) {
61 init();
62
63 al::ByamlIter dataIter;
64 iter.tryGetIterByKey(iter: &dataIter, key: "SearchAmiiboData");
65
66 for (s32 i = 0; i < dataIter.getSize(); i++) {
67 al::ByamlIter indexIter;
68 dataIter.tryGetIterByIndex(iter: &indexIter, index: i);
69
70 indexIter.tryGetIntByKey(val: &mEntries[i].id, key: "Id");
71 indexIter.tryGetIntByKey(val: &mEntries[i].numberingId, key: "NumberingId");
72 indexIter.tryGetUInt64ByKey(val: &mEntries[i].searchStartTime, key: "SearchStartTime");
73 }
74}
75
76s32 SearchAmiiboDataTable::getDataNumMax() const {
77 return 3;
78}
79
80bool SearchAmiiboDataTable::isInvalidId(s32 index) const {
81 return mEntries[index].id == -1;
82}
83
84const SearchAmiiboData& SearchAmiiboDataTable::getData(s32 index) const {
85 return mEntries[index];
86}
87
88s32 SearchAmiiboDataTable::getId(s32 index) const {
89 return mEntries[index].id;
90}
91
92s32 SearchAmiiboDataTable::getNumberingId(s32 index) const {
93 return mEntries[index].numberingId;
94}
95
96void SearchAmiiboDataTable::setId(s32 id, s32 numberingId, s32 index) {
97 mEntries[index].id = id;
98 mEntries[index].numberingId = numberingId;
99}
100
101u64 SearchAmiiboDataTable::getSearchStartTime(s32 index) const {
102 return mEntries[index].searchStartTime;
103}
104
105void SearchAmiiboDataTable::setSearchStartTime(u64 searchStartTime, s32 index) {
106 mEntries[index].searchStartTime = searchStartTime;
107}
108
109void SearchAmiiboDataTable::copy(s32 index, s32 other) {
110 mEntries[index] = mEntries[other];
111}
112
113void SearchAmiiboDataTable::initByIndex(s32 index) {
114 mEntries[index].init();
115}
116