| 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 | |
| 8 | namespace al { |
| 9 | class ByamlIter; |
| 10 | class ByamlWriter; |
| 11 | } // namespace al |
| 12 | |
| 13 | SearchAmiiboData::SearchAmiiboData() { |
| 14 | init(); |
| 15 | } |
| 16 | |
| 17 | void SearchAmiiboData::init() { |
| 18 | id = -1; |
| 19 | numberingId = -1; |
| 20 | searchStartTime = 0; |
| 21 | } |
| 22 | |
| 23 | bool SearchAmiiboData::isInvalidId() const { |
| 24 | return id == -1; |
| 25 | } |
| 26 | |
| 27 | SearchAmiiboDataTable::SearchAmiiboDataTable() { |
| 28 | mEntries = new SearchAmiiboData[3](); |
| 29 | } |
| 30 | |
| 31 | void SearchAmiiboDataTable::init() { |
| 32 | for (s32 i = 0; i < 3; i++) |
| 33 | mEntries[i].init(); |
| 34 | } |
| 35 | |
| 36 | void 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 | |
| 60 | void 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 | |
| 76 | s32 SearchAmiiboDataTable::getDataNumMax() const { |
| 77 | return 3; |
| 78 | } |
| 79 | |
| 80 | bool SearchAmiiboDataTable::isInvalidId(s32 index) const { |
| 81 | return mEntries[index].id == -1; |
| 82 | } |
| 83 | |
| 84 | const SearchAmiiboData& SearchAmiiboDataTable::getData(s32 index) const { |
| 85 | return mEntries[index]; |
| 86 | } |
| 87 | |
| 88 | s32 SearchAmiiboDataTable::getId(s32 index) const { |
| 89 | return mEntries[index].id; |
| 90 | } |
| 91 | |
| 92 | s32 SearchAmiiboDataTable::getNumberingId(s32 index) const { |
| 93 | return mEntries[index].numberingId; |
| 94 | } |
| 95 | |
| 96 | void SearchAmiiboDataTable::setId(s32 id, s32 numberingId, s32 index) { |
| 97 | mEntries[index].id = id; |
| 98 | mEntries[index].numberingId = numberingId; |
| 99 | } |
| 100 | |
| 101 | u64 SearchAmiiboDataTable::getSearchStartTime(s32 index) const { |
| 102 | return mEntries[index].searchStartTime; |
| 103 | } |
| 104 | |
| 105 | void SearchAmiiboDataTable::setSearchStartTime(u64 searchStartTime, s32 index) { |
| 106 | mEntries[index].searchStartTime = searchStartTime; |
| 107 | } |
| 108 | |
| 109 | void SearchAmiiboDataTable::copy(s32 index, s32 other) { |
| 110 | mEntries[index] = mEntries[other]; |
| 111 | } |
| 112 | |
| 113 | void SearchAmiiboDataTable::initByIndex(s32 index) { |
| 114 | mEntries[index].init(); |
| 115 | } |
| 116 | |