Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Loading...
Searching...
No Matches
GridStates.cpp
Go to the documentation of this file.
1/*
2* This file is part of Project SkyFire https://www.projectskyfire.org.
3* See LICENSE.md file for Copyright information
4*/
5
6#include "GridNotifiers.h"
7#include "GridStates.h"
8#include "Log.h"
9
10#ifdef SKYFIRE_DEBUG
11bool GridState::checkMagic()
12{
13 if (i_Magic != MAGIC_TESTVAL)
14 {
15 SF_LOG_ERROR("misc", "!!! GridState: Magic value gone !!!");
16 return false;
17 }
18 return true;
19}
20#endif
21
24
25void ActiveState::Update(Map& map, NGridType& grid, GridInfo& info, uint32 diff) const
26{
27 // Only check grid activity every (grid_expiry/10) ms, because it's really useless to do it every cycle
28 info.UpdateTimeTracker(diff);
29 if (info.getTimeTracker().Passed())
30 {
32 {
33 ObjectGridStoper worker;
35 grid.VisitAllGrids(visitor);
37 SF_LOG_DEBUG("maps", "Grid[%u, %u] on map %u moved to IDLE state", grid.getX(), grid.getY(), map.GetId());
38 }
39 else
40 map.ResetGridExpiry(grid, 0.1f);
41 }
42}
43
44void IdleState::Update(Map& map, NGridType& grid, GridInfo&, uint32) const
45{
46 map.ResetGridExpiry(grid);
48 SF_LOG_DEBUG("maps", "Grid[%u, %u] on map %u moved to REMOVAL state", grid.getX(), grid.getY(), map.GetId());
49}
50
51void RemovalState::Update(Map& map, NGridType& grid, GridInfo& info, uint32 diff) const
52{
53 if (!info.getUnloadLock())
54 {
55 info.UpdateTimeTracker(diff);
56 if (info.getTimeTracker().Passed() && !map.UnloadGrid(grid, false))
57 {
58 SF_LOG_DEBUG("maps", "Grid[%u, %u] for map %u differed unloading due to players or active objects nearby", grid.getX(), grid.getY(), map.GetId());
59 map.ResetGridExpiry(grid);
60 }
61 }
62}
std::uint32_t uint32
Definition Define.h:77
NGrid< MAX_NUMBER_OF_CELLS, Player, AllWorldObjectTypes, AllGridObjectTypes > NGridType
Definition GridDefines.h:69
#define SF_LOG_DEBUG(filterType__,...)
Definition Log.h:134
#define SF_LOG_ERROR(filterType__,...)
Definition Log.h:143
@ GRID_STATE_REMOVAL
Definition NGrid.h:53
@ GRID_STATE_IDLE
Definition NGrid.h:52
void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const
const TimeTracker & getTimeTracker() const
Definition NGrid.h:28
bool getUnloadLock() const
Definition NGrid.h:29
void UpdateTimeTracker(time_t diff)
Definition NGrid.h:37
void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const
void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const
Definition Map.h:238
bool UnloadGrid(NGridType &ngrid, bool pForce)
Definition Map.cpp:1285
bool ActiveObjectsNearGrid(NGridType const &ngrid) const
Definition Map.cpp:2531
void ResetGridExpiry(NGridType &grid, float factor=1) const
Definition Map.h:294
uint32 GetId(void) const
Definition Map.h:300
int32 getX() const
Definition NGrid.h:89
uint32 GetWorldObjectCountInNGrid() const
Definition NGrid.h:161
void SetGridState(grid_state_t s)
Definition NGrid.h:88
int32 getY() const
Definition NGrid.h:90
void VisitAllGrids(TypeContainerVisitor< T, TypeMapContainer< TT > > &visitor)
Definition NGrid.h:133
void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const
bool Passed() const
Definition Timer.h:85