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
9RaceRecord::RaceRecord() {
10 mName.clear();
11}
12
13void RaceRecord::setName(const char* name) {
14 mName.format(formatStr: name);
15}
16
17const char* RaceRecord::getName() const {
18 return mName.cstr();
19}
20
21void 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
30bool RaceRecord::isEqualName(const char* name) {
31 return al::isEqualString(str1: mName.cstr(), str2: name);
32}
33
34void 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
46void 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
55void 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