TrinityCore
WowTime.h
Go to the documentation of this file.
1/*
2 * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information
3 *
4 * This program is free software; you can redistribute it and/or modify it
5 * under the terms of the GNU General Public License as published by the
6 * Free Software Foundation; either version 2 of the License, or (at your
7 * option) any later version.
8 *
9 * This program is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
12 * more details.
13 *
14 * You should have received a copy of the GNU General Public License along
15 * with this program. If not, see <http://www.gnu.org/licenses/>.
16 */
17
18#ifndef TRINITYCORE_WOWTIME_H
19#define TRINITYCORE_WOWTIME_H
20
21#include "Define.h"
22#include "Duration.h"
23#include "advstd.h"
24#include <compare>
25#include <ctime>
26
27class ByteBuffer;
28
30{
31public:
32 uint32 GetPackedTime() const;
33 void SetPackedTime(uint32 packedTime);
34
35 std::time_t GetUnixTimeFromUtcTime() const;
36 void SetUtcTimeFromUnixTime(std::time_t unixTime);
37
38 int32 GetYear() const { return _year; }
39 void SetYear(int32 year);
40
41 int8 GetMonth() const { return _month; }
42 void SetMonth(int8 month);
43
44 int8 GetMonthDay() const { return _monthDay; }
45 void SetMonthDay(int8 monthDay);
46
47 int8 GetWeekDay() const { return _weekDay; }
48 void SetWeekDay(int8 weekDay);
49
50 int8 GetHour() const { return _hour; }
51 void SetHour(int8 hour);
52
53 int8 GetMinute() const { return _minute; }
54 void SetMinute(int8 minute);
55
56 int8 GetFlags() const { return _flags; }
57 void SetFlags(int8 flags);
58
60 void SetHolidayOffset(int8 holidayOffset) { _holidayOffset = holidayOffset; }
61
62 friend TC_GAME_API std::strong_ordering operator<=>(WowTime const& left, WowTime const& right);
63 friend TC_GAME_API bool operator==(WowTime const& left, WowTime const& right)
64 {
65 return advstd::is_eq(left <=> right);
66 }
67
68 bool IsInRange(WowTime const& from, WowTime const& to) const;
69
70 WowTime& operator+=(Seconds seconds);
71 WowTime operator+(Seconds seconds) const;
72
73 WowTime& operator-=(Seconds seconds);
74 WowTime operator-(Seconds seconds) const;
75
76 friend TC_GAME_API ByteBuffer& operator<<(ByteBuffer& data, WowTime const& wowTime);
77 friend TC_GAME_API ByteBuffer& operator>>(ByteBuffer& data, WowTime& wowTime);
78
79private:
84 int8 _hour = -1;
88};
89
90#endif // TRINITYCORE_WOWTIME_H
#define TC_GAME_API
Definition: Define.h:123
int8_t int8
Definition: Define.h:140
int32_t int32
Definition: Define.h:138
uint32_t uint32
Definition: Define.h:142
uint16 flags
Definition: DisableMgr.cpp:49
std::chrono::seconds Seconds
Seconds shorthand typedef.
Definition: Duration.h:32
void SetPackedTime(uint32 packedTime)
Definition: WowTime.cpp:34
std::time_t GetUnixTimeFromUtcTime() const
Definition: WowTime.cpp:65
int8 GetWeekDay() const
Definition: WowTime.h:47
void SetYear(int32 year)
Definition: WowTime.cpp:100
friend TC_GAME_API ByteBuffer & operator<<(ByteBuffer &data, WowTime const &wowTime)
Definition: WowTime.cpp:207
friend TC_GAME_API bool operator==(WowTime const &left, WowTime const &right)
Definition: WowTime.h:63
int8 _flags
Definition: WowTime.h:86
int8 GetMonthDay() const
Definition: WowTime.h:44
int8 GetMinute() const
Definition: WowTime.h:53
int8 GetHolidayOffset() const
Definition: WowTime.h:59
void SetHour(int8 hour)
Definition: WowTime.cpp:124
int8 _hour
Definition: WowTime.h:84
void SetWeekDay(int8 weekDay)
Definition: WowTime.cpp:118
int8 _weekDay
Definition: WowTime.h:83
int32 GetYear() const
Definition: WowTime.h:38
int32 _year
Definition: WowTime.h:80
friend TC_GAME_API ByteBuffer & operator>>(ByteBuffer &data, WowTime &wowTime)
Definition: WowTime.cpp:213
WowTime & operator+=(Seconds seconds)
Definition: WowTime.cpp:181
void SetMonth(int8 month)
Definition: WowTime.cpp:106
WowTime operator-(Seconds seconds) const
Definition: WowTime.cpp:202
void SetMonthDay(int8 monthDay)
Definition: WowTime.cpp:112
void SetHolidayOffset(int8 holidayOffset)
Definition: WowTime.h:60
int8 _monthDay
Definition: WowTime.h:82
WowTime & operator-=(Seconds seconds)
Definition: WowTime.cpp:194
uint32 GetPackedTime() const
Definition: WowTime.cpp:23
int8 _holidayOffset
Definition: WowTime.h:87
int8 GetFlags() const
Definition: WowTime.h:56
int8 GetMonth() const
Definition: WowTime.h:41
void SetFlags(int8 flags)
Definition: WowTime.cpp:136
void SetMinute(int8 minute)
Definition: WowTime.cpp:130
WowTime operator+(Seconds seconds) const
Definition: WowTime.cpp:189
int8 _month
Definition: WowTime.h:81
int8 GetHour() const
Definition: WowTime.h:50
friend TC_GAME_API std::strong_ordering operator<=>(WowTime const &left, WowTime const &right)
Definition: WowTime.cpp:142
void SetUtcTimeFromUnixTime(std::time_t unixTime)
Definition: WowTime.cpp:86
bool IsInRange(WowTime const &from, WowTime const &to) const
Definition: WowTime.cpp:173
int8 _minute
Definition: WowTime.h:85
constexpr bool is_eq(std::partial_ordering cmp) noexcept
Definition: advstd.h:34