65 lines
1.8 KiB
C++
65 lines
1.8 KiB
C++
#include <td/game/World.h>
|
|
|
|
#include <td/simulation/WorldTicker.h>
|
|
|
|
namespace td {
|
|
namespace game {
|
|
|
|
World::World() : m_CurrentState{.m_Teams{Team{TeamColor::Red}, Team{TeamColor::Blue}}}, m_NextState{.m_Teams{Team{TeamColor::Red}, Team{TeamColor::Blue}}} {}
|
|
|
|
const Color* World::GetTileColor(TilePtr tile) const {
|
|
switch (tile->GetType()) {
|
|
case TileType::Tower: {
|
|
TowerTile* towerTile = dynamic_cast<TowerTile*>(tile.get());
|
|
return &m_TowerPlacePalette[towerTile->color_palette_ref];
|
|
}
|
|
case TileType::Walk: {
|
|
return &m_WalkablePalette;
|
|
}
|
|
case TileType::Decoration: {
|
|
DecorationTile* towerTile = dynamic_cast<DecorationTile*>(tile.get());
|
|
return &m_DecorationPalette[towerTile->color_palette_ref];
|
|
break;
|
|
}
|
|
default: {
|
|
return nullptr;
|
|
}
|
|
}
|
|
return nullptr;
|
|
}
|
|
|
|
bool World::LoadMap(const protocol::pdata::WorldHeader& a_WorldHeader) {
|
|
m_TowerPlacePalette = a_WorldHeader.m_TowerPlacePalette;
|
|
m_WalkablePalette = a_WorldHeader.m_WalkablePalette;
|
|
m_DecorationPalette = a_WorldHeader.m_DecorationPalette;
|
|
m_Background = a_WorldHeader.m_Background;
|
|
|
|
GetRedTeam().GetSpawn() = a_WorldHeader.m_RedSpawn;
|
|
GetBlueTeam().GetSpawn() = a_WorldHeader.m_BlueSpawn;
|
|
|
|
m_SpawnColorPalette = a_WorldHeader.m_SpawnColorPalette;
|
|
|
|
GetRedTeam().GetCastle() = a_WorldHeader.m_RedCastle;
|
|
GetRedTeam().GetCastle().SetTeam(&GetRedTeam());
|
|
|
|
GetBlueTeam().GetCastle() = a_WorldHeader.m_BlueCastle;
|
|
GetBlueTeam().GetCastle().SetTeam(&GetBlueTeam());
|
|
|
|
m_TilePalette = a_WorldHeader.m_TilePalette;
|
|
|
|
return true;
|
|
}
|
|
|
|
bool World::LoadMap(const protocol::pdata::WorldData& a_WorldData) {
|
|
m_Chunks = a_WorldData.m_Chunks;
|
|
return true;
|
|
}
|
|
|
|
void World::Tick(const protocol::LockStep& a_LockStep, FpFloat a_Delta) {
|
|
m_CurrentState = m_NextState;
|
|
m_NextState = m_Ticker.NextStep(*this, m_NextState, a_LockStep, a_Delta);
|
|
}
|
|
|
|
} // namespace game
|
|
} // namespace td
|