| 1 | #include "System/RaceRecord.h" |
| 2 | |
| 3 | #include "Library/Base/StringUtil.h" |
| 4 | #include "Library/Yaml/ByamlIter.h" |
| 5 | #include "Library/Yaml/Writer/ByamlWriter.h" |
| 6 | |
| 7 | #include "Util/SequentialUtil.h" |
| 8 | |
| 9 | RaceRecord::RaceRecord() { |
| 10 | mName.clear(); |
| 11 | } |
| 12 | |
| 13 | void RaceRecord::setName(const char* name) { |
| 14 | mName.format(formatStr: name); |
| 15 | } |
| 16 | |
| 17 | const char* RaceRecord::getName() const { |
| 18 | return mName.cstr(); |
| 19 | } |
| 20 | |
| 21 | void RaceRecord::init() { |
| 22 | mRecord = RaceTimeFunction::getRaceTimeMaxCsec(); |
| 23 | mBestRecord = RaceTimeFunction::getRaceTimeMaxCsec(); |
| 24 | mLapRecord = RaceTimeFunction::getRaceTimeMaxCsec(); |
| 25 | mIsWin = false; |
| 26 | mIsExistRecord = false; |
| 27 | mIsRecordSet = false; |
| 28 | } |
| 29 | |
| 30 | bool RaceRecord::isEqualName(const char* name) { |
| 31 | return al::isEqualString(str1: mName.cstr(), str2: name); |
| 32 | } |
| 33 | |
| 34 | void RaceRecord::setRecord(s32 record, s32 bestRecord, s32 lapRecord, bool isWin) { |
| 35 | mIsExistRecord = true; |
| 36 | mIsRecordSet = true; |
| 37 | if (record < mRecord) |
| 38 | mRecord = record; |
| 39 | if (bestRecord < mBestRecord) |
| 40 | mBestRecord = bestRecord; |
| 41 | if (lapRecord < mLapRecord) |
| 42 | mLapRecord = lapRecord; |
| 43 | mIsWin = isWin; |
| 44 | } |
| 45 | |
| 46 | void RaceRecord::write(al::ByamlWriter* writer) { |
| 47 | writer->pushHash(mName.cstr()); |
| 48 | writer->addInt("Record" , mRecord); |
| 49 | writer->addInt("LapRecord" , mLapRecord); |
| 50 | writer->addBool("IsWin" , mIsWin); |
| 51 | writer->addBool("IsExistRecord" , mIsExistRecord); |
| 52 | writer->pop(); |
| 53 | } |
| 54 | |
| 55 | void RaceRecord::read(const al::ByamlIter& reader) { |
| 56 | mRecord = RaceTimeFunction::getRaceTimeMaxCsec(); |
| 57 | mBestRecord = RaceTimeFunction::getRaceTimeMaxCsec(); |
| 58 | mLapRecord = RaceTimeFunction::getRaceTimeMaxCsec(); |
| 59 | mIsWin = false; |
| 60 | mIsExistRecord = false; |
| 61 | mIsRecordSet = false; |
| 62 | |
| 63 | al::ByamlIter recordData{}; |
| 64 | |
| 65 | reader.tryGetIterByKey(iter: &recordData, key: mName.cstr()); |
| 66 | recordData.tryGetIntByKey(val: &mRecord, key: "Record" ); |
| 67 | recordData.tryGetIntByKey(val: &mLapRecord, key: "LapRecord" ); |
| 68 | recordData.tryGetBoolByKey(val: &mIsWin, key: "IsWin" ); |
| 69 | recordData.tryGetBoolByKey(val: &mIsExistRecord, key: "IsExistRecord" ); |
| 70 | } |
| 71 | |