TrinityCore
Loading...
Searching...
No Matches
RestMgr.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 RestMgr_h__
19#define RestMgr_h__
20
21#include "Define.h"
22#include "Optional.h"
23#include <ctime>
24
25class Player;
26
33
43
44// Exhaustion.db2 ids
51
53{
56 REST_FLAG_IN_FACTION_AREA = 0x4 // used with AREA_FLAG_REST_ZONE_*
57};
58
60{
61 bool IsDBC = true;
63};
64
66{
67 friend class Player;
68public:
69 explicit RestMgr(Player* player);
71
72 float GetRestBonus(RestTypes restType) const { return _restBonus[restType]; }
73
74 void SetRestBonus(RestTypes restType, float restBonus);
75 void AddRestBonus(RestTypes restType, float restBonus);
76
77 bool HasRestFlag(RestFlag restFlag) const { return (_restFlagMask & restFlag) != 0; }
78 void SetRestFlag(RestFlag restFlag);
79 void RemoveRestFlag(RestFlag restFlag);
80
81 uint32 GetRestBonusFor(RestTypes restType, uint32 xp);
82 Optional<InnAreaTrigger> GetInnTrigger() const { return _innAreaTrigger; }
83 void SetInnTrigger(Optional<InnAreaTrigger> trigger) { _innAreaTrigger = trigger; }
84
85 void Update(time_t now);
86
87 float CalcExtraPerSec(RestTypes restType, float bubble) const;
88
89protected:
90 void LoadRestBonus(RestTypes restType, PlayerRestState state, float restBonus);
91
92private:
94 time_t _restTime;
96 float _restBonus[REST_TYPE_MAX];
98};
99
100#endif // RestMgr_h__
#define TC_GAME_API
Definition Define.h:129
uint8_t uint8
Definition Define.h:156
uint32_t uint32
Definition Define.h:154
std::optional< T > Optional
Optional helper class to wrap optional values within.
Definition Optional.h:25
PlayerRestState
Definition RestMgr.h:46
@ REST_STATE_NORMAL
Definition RestMgr.h:48
@ REST_STATE_RESTED
Definition RestMgr.h:47
@ REST_STATE_RAF_LINKED
Definition RestMgr.h:49
PlayerRestInfoOffsets
Definition RestMgr.h:35
@ REST_STATE_HONOR
Definition RestMgr.h:38
@ REST_RESTED_HONOR
Definition RestMgr.h:39
@ MAX_REST_INFO
Definition RestMgr.h:41
@ REST_STATE_XP
Definition RestMgr.h:36
@ REST_RESTED_XP
Definition RestMgr.h:37
RestFlag
Definition RestMgr.h:53
@ REST_FLAG_IN_TAVERN
Definition RestMgr.h:54
@ REST_FLAG_IN_FACTION_AREA
Definition RestMgr.h:56
@ REST_FLAG_IN_CITY
Definition RestMgr.h:55
RestTypes
Definition RestMgr.h:28
@ REST_TYPE_MAX
Definition RestMgr.h:31
@ REST_TYPE_XP
Definition RestMgr.h:29
@ REST_TYPE_HONOR
Definition RestMgr.h:30
time_t _restTime
Definition RestMgr.h:94
Optional< InnAreaTrigger > GetInnTrigger() const
Definition RestMgr.h:82
Player * _player
Definition RestMgr.h:93
bool HasRestFlag(RestFlag restFlag) const
Definition RestMgr.h:77
~RestMgr()
Definition RestMgr.h:70
uint32 _restFlagMask
Definition RestMgr.h:97
Optional< InnAreaTrigger > _innAreaTrigger
Definition RestMgr.h:95
float GetRestBonus(RestTypes restType) const
Definition RestMgr.h:72
void SetInnTrigger(Optional< InnAreaTrigger > trigger)
Definition RestMgr.h:83
uint32 AreaTriggerEntryId
Definition RestMgr.h:62