1#pragma once
2
3#include <time/seadTickTime.h>
4#include "KingSystem/Utils/Types.h"
5
6namespace ksys::util {
7
8class InitTimeInfo {
9public:
10 InitTimeInfo() = default;
11 explicit InitTimeInfo(sead::TickTime start_time) : mInitStartTime(start_time) {}
12
13 sead::TickTime getInitStartTime() const { return mInitStartTime; }
14 sead::TickSpan getInitDuration() const { return mInitDuration; }
15
16 void finish() { mInitDuration = sead::TickTime().diff(mInitStartTime); }
17
18private:
19 sead::TickTime mInitStartTime;
20 sead::TickSpan mInitDuration;
21};
22KSYS_CHECK_SIZE_NX150(InitTimeInfo, 0x10);
23
24struct InitConstants {
25 InitConstants() {
26 _0 = 0;
27 _4 = 0x8004EF;
28 }
29
30 u32 _0;
31 u32 _4;
32};
33
34class InitTimeInfoEx {
35public:
36 explicit InitTimeInfoEx(sead::TickTime start_time = {}) : mInfo(start_time) {
37 mConstants._0 = 0;
38 mConstants._4 = 0x8004EF;
39 }
40
41 InitTimeInfo& getInfo() { return mInfo; }
42 const InitTimeInfo& getInfo() const { return mInfo; }
43
44private:
45 InitConstants mConstants;
46 InitTimeInfo mInfo;
47};
48KSYS_CHECK_SIZE_NX150(InitTimeInfoEx, 0x18);
49
50} // namespace ksys::util
51