Project SkyFire Core
SkyFire 5.4.8 server core API documentation
Toggle main menu visibility
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
11
bool
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
22
void
InvalidState::Update
(
Map
&,
NGridType
&,
GridInfo
&,
uint32
)
const
23
{ }
24
25
void
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
{
31
if
(!grid.
GetWorldObjectCountInNGrid
<
Player
>() && !map.
ActiveObjectsNearGrid
(grid))
32
{
33
ObjectGridStoper
worker;
34
TypeContainerVisitor<ObjectGridStoper, GridTypeMapContainer>
visitor(worker);
35
grid.
VisitAllGrids
(visitor);
36
grid.
SetGridState
(
GRID_STATE_IDLE
);
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
44
void
IdleState::Update
(
Map
& map,
NGridType
& grid,
GridInfo
&,
uint32
)
const
45
{
46
map.
ResetGridExpiry
(grid);
47
grid.
SetGridState
(
GRID_STATE_REMOVAL
);
48
SF_LOG_DEBUG
(
"maps"
,
"Grid[%u, %u] on map %u moved to REMOVAL state"
, grid.
getX
(), grid.
getY
(), map.
GetId
());
49
}
50
51
void
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
}
uint32
std::uint32_t uint32
Definition
Define.h:77
NGridType
NGrid< MAX_NUMBER_OF_CELLS, Player, AllWorldObjectTypes, AllGridObjectTypes > NGridType
Definition
GridDefines.h:69
GridNotifiers.h
GridStates.h
Log.h
SF_LOG_DEBUG
#define SF_LOG_DEBUG(filterType__,...)
Definition
Log.h:134
SF_LOG_ERROR
#define SF_LOG_ERROR(filterType__,...)
Definition
Log.h:143
GRID_STATE_REMOVAL
@ GRID_STATE_REMOVAL
Definition
NGrid.h:53
GRID_STATE_IDLE
@ GRID_STATE_IDLE
Definition
NGrid.h:52
ActiveState::Update
void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const
Definition
GridStates.cpp:25
GridInfo
Definition
NGrid.h:20
GridInfo::getTimeTracker
const TimeTracker & getTimeTracker() const
Definition
NGrid.h:28
GridInfo::getUnloadLock
bool getUnloadLock() const
Definition
NGrid.h:29
GridInfo::UpdateTimeTracker
void UpdateTimeTracker(time_t diff)
Definition
NGrid.h:37
IdleState::Update
void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const
Definition
GridStates.cpp:44
InvalidState::Update
void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const
Definition
GridStates.cpp:22
Map
Definition
Map.h:238
Map::UnloadGrid
bool UnloadGrid(NGridType &ngrid, bool pForce)
Definition
Map.cpp:1285
Map::ActiveObjectsNearGrid
bool ActiveObjectsNearGrid(NGridType const &ngrid) const
Definition
Map.cpp:2531
Map::ResetGridExpiry
void ResetGridExpiry(NGridType &grid, float factor=1) const
Definition
Map.h:294
Map::GetId
uint32 GetId(void) const
Definition
Map.h:300
NGrid::getX
int32 getX() const
Definition
NGrid.h:89
NGrid::GetWorldObjectCountInNGrid
uint32 GetWorldObjectCountInNGrid() const
Definition
NGrid.h:161
NGrid::SetGridState
void SetGridState(grid_state_t s)
Definition
NGrid.h:88
NGrid::getY
int32 getY() const
Definition
NGrid.h:90
NGrid::VisitAllGrids
void VisitAllGrids(TypeContainerVisitor< T, TypeMapContainer< TT > > &visitor)
Definition
NGrid.h:133
ObjectGridStoper
Definition
ObjectGridLoader.h:47
Player
Definition
Player.h:1289
RemovalState::Update
void Update(Map &, NGridType &, GridInfo &, uint32 t_diff) const
Definition
GridStates.cpp:51
TypeContainerVisitor
Definition
TypeContainerVisitor.h:80
TimeTracker::Passed
bool Passed() const
Definition
Timer.h:85
src
server
game
Grids
GridStates.cpp
Generated on
for Project SkyFire Core by
1.17.0