Cytopia  0.3
A city building simulation game
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PowerGrid.cxx
Go to the documentation of this file.
1 #include "PowerGrid.hxx"
2 #include <MapFunctions.hxx>
3 #include "LOG.hxx"
4 
5 PowerGrid::PowerGrid(PowerNode powerNode) : MapGrid(powerNode) {}
6 
7 void mergePowerGrids(PowerGrid &mainGrid, PowerGrid &toBeMerged)
8 {
9  mainGrid.m_gridNodes.insert(mainGrid.end(), toBeMerged.begin(), toBeMerged.end());
10 }
11 
13 {
14  // reset the power level of this grid before recalculating
15  m_powerLevel = 0;
16  for (const auto &node : m_gridNodes)
17  {
18  if (MapFunctions::instance().getMapNode(node.coordinate).getTileData(Layer::BUILDINGS) && node.powerProduction == 0)
19  { // each occupied node consumes one power unit
20  m_powerLevel--;
21  }
22 
23  // For multi-tile buildings, each tile has the same tiledata (including power level).
24  // so make sure we only add it once (if it's the origin node)
25  if (MapFunctions::instance().getMapNode(node.coordinate).isOriginNode())
26  {
27  m_powerLevel += node.powerProduction;
28  }
29  }
30 }
PowerGrid::PowerGrid
PowerGrid(PowerNode powerNode)
Definition: PowerGrid.cxx:5
MapGrid::begin
auto begin()
Definition: MapGrid.hxx:46
PowerGrid
Definition: PowerGrid.hxx:17
LOG.hxx
MapFunctions.hxx
MapGrid::end
auto end()
Definition: MapGrid.hxx:47
PowerGrid::updatePowerLevel
void updatePowerLevel()
Recalculate the power level of this power grid.
Definition: PowerGrid.cxx:12
PowerGrid.hxx
BUILDINGS
@ BUILDINGS
8- Buildings, Streets and everything that goes on the terrain
Definition: enums.hxx:19
mergePowerGrids
void mergePowerGrids(PowerGrid &mainGrid, PowerGrid &toBeMerged)
Definition: PowerGrid.cxx:7
PowerNode
Definition: PowerGrid.hxx:8
MapGrid::m_gridNodes
std::vector< T > m_gridNodes
Definition: MapGrid.hxx:50
Singleton< MapFunctions >::instance
static MapFunctions & instance(void)
Get an instance of the singleton.
Definition: Singleton.hxx:15
PowerGrid::m_powerLevel
int m_powerLevel
Definition: PowerGrid.hxx:38
MapGrid
Definition: MapGrid.hxx:7