std::auto_ptr<Actor> CtfSoldierSpawnSystem::Spawn( ::core::ClientData& clientData, Team::Type team )
{
    map::SpawnPoints_t spawnPoints( map::ctf::CtfSoldierSpawnPointMapElementSystem::Get()->GetActiveSpawnPoints( team ) );
    map::SpawnPoint spawnPoint( spawnPoints[rand() % spawnPoints.size()] );
    std::auto_ptr<Actor> player( mActorFactory( mPlayerAutoId ) );
    Opt<ITeamComponent> teamC( player->Get<ITeamComponent>() );
    if ( teamC.IsValid() )
    {
        teamC->SetTeam( team );
    }
    return SoldierSpawnSystem::Get()->Spawn( clientData, spawnPoint, player );
}
Пример #2
0
void Map::createSpawns(World* world, const Vector& range, const Vector& minimum, int numberOfPoints) {
  for (int i=0; i<numberOfPoints; ++i) {
    Vector spawnPoint(Vector(random(range.x, minimum.x), 
      random(range.y, minimum.y), random(range.z, minimum.z)));
    bool properSpawnPoint = false;
    while (!properSpawnPoint) {
      properSpawnPoint = !world->collidesWithFloors(
        createSpawnArea(spawnPoint, 10));
      if (!properSpawnPoint)
        spawnPoint.y += 10;
    }
    world->spawnPoints.push_back(spawnPoint);
  }
}
Пример #3
0
std::auto_ptr<Actor> SoldierSpawnSystem::Spawn( core::ClientData& clientData )
{
    map::SpawnPoints_t spawnPoints( map::SoldierSpawnPointMapElementSystem::Get()->GetActiveSpawnPoints() );
    map::SpawnPoint spawnPoint( spawnPoints[RandomGenerator::global()() % spawnPoints.size()] );
    return Spawn( clientData, spawnPoint );
}