CommonLibSSE (powerof3)
Calendar.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include "RE/B/BSTSingleton.h"
4 
5 namespace RE
6 {
7  class TESGlobal;
8 
9  class Calendar : public BSTSingletonSDM<Calendar>
10  {
11  public:
12  static constexpr std::uint8_t DAYS_IN_MONTH[] = {
13  31, // Morning Star
14  28, // Sun's Dawn
15  31, // First Seed
16  30, // Rain's Hand
17  31, // Second Seed
18  30, // Midyear
19  31, // Sun's Height
20  31, // Last Seed
21  30, // Hearthfire
22  31, // Frostfall
23  30, // Sun's Dusk
24  31 // Evening Star
25  };
26 
27  struct Days
28  {
29  enum Day
30  {
38  kTotal
39  };
40  };
41  using Day = Days::Day;
42 
43  struct Months
44  {
45  enum Month
46  {
59  kTotal
60  };
61  };
63 
65 
66  [[nodiscard]] float GetCurrentGameTime() const;
67  [[nodiscard]] float GetDay() const;
68  [[nodiscard]] std::string GetDayName() const;
69  [[nodiscard]] std::uint32_t GetDayOfWeek() const;
70  [[nodiscard]] float GetDaysPassed() const;
71  void GetTimeDateString(char* a_dest, std::uint32_t a_max, bool a_showYear) const;
72  [[nodiscard]] float GetHour() const;
73  [[nodiscard]] float GetHoursPassed() const;
74  [[nodiscard]] std::uint32_t GetMonth() const;
75  [[nodiscard]] std::string GetMonthName() const;
76  [[nodiscard]] std::tm GetTime() const;
77  [[nodiscard]] float GetTimescale() const;
78  [[nodiscard]] std::uint32_t GetYear() const;
79 
80  // members
81  std::uint8_t pad01; // 01
82  std::uint16_t pad02; // 02
83  std::uint32_t pad04; // 04
90  std::uint32_t midnightsPassed; // 38
91  float rawDaysPassed; // 3C
92  };
93  static_assert(sizeof(Calendar) == 0x40);
94 }
Definition: Calendar.h:10
std::uint32_t GetYear() const
std::string GetDayName() const
std::uint32_t GetMonth() const
float GetHour() const
TESGlobal * gameYear
Definition: Calendar.h:84
TESGlobal * gameDay
Definition: Calendar.h:86
void GetTimeDateString(char *a_dest, std::uint32_t a_max, bool a_showYear) const
float GetHoursPassed() const
float rawDaysPassed
Definition: Calendar.h:91
static constexpr std::uint8_t DAYS_IN_MONTH[]
Definition: Calendar.h:12
TESGlobal * timeScale
Definition: Calendar.h:89
float GetDaysPassed() const
std::tm GetTime() const
TESGlobal * gameDaysPassed
Definition: Calendar.h:88
float GetDay() const
TESGlobal * gameMonth
Definition: Calendar.h:85
std::uint32_t GetDayOfWeek() const
float GetCurrentGameTime() const
float GetTimescale() const
std::uint32_t pad04
Definition: Calendar.h:83
std::uint16_t pad02
Definition: Calendar.h:82
std::uint32_t midnightsPassed
Definition: Calendar.h:90
std::uint8_t pad01
Definition: Calendar.h:81
static Calendar * GetSingleton()
TESGlobal * gameHour
Definition: Calendar.h:87
std::string GetMonthName() const
Definition: TESGlobal.h:10
Definition: AbsorbEffect.h:6
string(const CharT(&)[N]) -> string< CharT, N - 1 >
Definition: BSTSingleton.h:50
Definition: Calendar.h:28
Day
Definition: Calendar.h:30
@ kMiddas
Definition: Calendar.h:34
@ kLoredas
Definition: Calendar.h:37
@ kMorndas
Definition: Calendar.h:32
@ kSundas
Definition: Calendar.h:31
@ kFredas
Definition: Calendar.h:36
@ kTurdas
Definition: Calendar.h:35
@ kTirdas
Definition: Calendar.h:33
@ kTotal
Definition: Calendar.h:38
Definition: Calendar.h:44
Month
Definition: Calendar.h:46
@ kTotal
Definition: Calendar.h:59
@ kMidyear
Definition: Calendar.h:52
@ kMorningStar
Definition: Calendar.h:47
@ kRainsHand
Definition: Calendar.h:50
@ kLastSeed
Definition: Calendar.h:54
@ kSecondSeed
Definition: Calendar.h:51
@ kFirstSeed
Definition: Calendar.h:49
@ kSunsDawn
Definition: Calendar.h:48
@ kSunsHeight
Definition: Calendar.h:53
@ kHearthfire
Definition: Calendar.h:55
@ kEveningStar
Definition: Calendar.h:58
@ kSunsDusk
Definition: Calendar.h:57
@ kFrostfall
Definition: Calendar.h:56