1er commit
This commit is contained in:
50
src/game/server/ServerWorld.cpp
Normal file
50
src/game/server/ServerWorld.cpp
Normal file
@@ -0,0 +1,50 @@
|
||||
#include "game/server/ServerWorld.h"
|
||||
#include "game/server/Server.h"
|
||||
#include "misc/Random.h"
|
||||
|
||||
#define MOB_SPAWN_PRECISION 100.0f
|
||||
|
||||
namespace td {
|
||||
namespace server {
|
||||
|
||||
ServerWorld::ServerWorld(Server* server, ServerGame* game) : m_Server(server), game::World(game){
|
||||
|
||||
}
|
||||
|
||||
void ServerWorld::spawnMobs(game::MobType type, std::uint8_t level, game::PlayerID sender, std::uint8_t count){
|
||||
for (int i = 0; i < count; i++){
|
||||
game::TeamColor senderTeam = m_Game->getPlayers().at(sender).getTeamColor();
|
||||
game::Spawn* enemyMobSpawn;
|
||||
|
||||
if(senderTeam == game::TeamColor::Red){
|
||||
enemyMobSpawn = &m_Spawns[(std::size_t) game::TeamColor::Blue];
|
||||
}else{
|
||||
enemyMobSpawn = &m_Spawns[(std::size_t) game::TeamColor::Red];
|
||||
}
|
||||
|
||||
std::int32_t spawnCenterX = enemyMobSpawn->x;
|
||||
std::int32_t spawnCenterY = enemyMobSpawn->y;
|
||||
|
||||
std::int32_t minSpawnY = spawnCenterY - 2;
|
||||
std::int32_t maxSpawnY = spawnCenterY + 2;
|
||||
|
||||
std::int32_t minSpawnX = spawnCenterX - 2;
|
||||
std::int32_t maxSpawnX = spawnCenterX + 2;
|
||||
|
||||
std::uint64_t randomX = utils::getRandomNumber(std::abs(minSpawnX - maxSpawnX) * MOB_SPAWN_PRECISION);
|
||||
float mobX = (float) randomX / MOB_SPAWN_PRECISION + (float) minSpawnX;
|
||||
|
||||
std::uint64_t randomY = utils::getRandomNumber(std::abs(minSpawnY - maxSpawnY) * MOB_SPAWN_PRECISION);
|
||||
float mobY = (float) randomY / MOB_SPAWN_PRECISION + (float) minSpawnY;
|
||||
|
||||
spawnMobAt(m_CurrentMobID, type, level, sender, mobX, mobY, enemyMobSpawn->direction);
|
||||
|
||||
protocol::SpawnMobPacket packet(m_CurrentMobID, type, level, sender, mobX, mobY, enemyMobSpawn->direction);
|
||||
m_Server->broadcastPacket(&packet);
|
||||
|
||||
m_CurrentMobID++;
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace server
|
||||
} // namespace td
|
||||
Reference in New Issue
Block a user