本文整理汇总了C++中ManagedReference::deploy方法的典型用法代码示例。如果您正苦于以下问题:C++ ManagedReference::deploy方法的具体用法?C++ ManagedReference::deploy怎么用?C++ ManagedReference::deploy使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ManagedReference
的用法示例。
在下文中一共展示了ManagedReference::deploy方法的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: spawnLair
SceneObject* CreatureManagerImplementation::spawnLair(unsigned int lairTemplate, int difficultyLevel, int difficulty, float x, float z, float y, float size) {
LairTemplate* lairTmpl = creatureTemplateManager->getLairTemplate(lairTemplate);
if (lairTmpl == NULL || lairTmpl->getBuildingType() != LairTemplate::LAIR)
return NULL;
String buildingToSpawn;
Vector<String>* mobiles = lairTmpl->getWeightedMobiles();
if (mobiles->size() == 0)
return NULL;
buildingToSpawn = lairTmpl->getBuilding((uint32)difficulty);
if (buildingToSpawn.isEmpty()) {
error("error spawning " + buildingToSpawn);
return NULL;
}
ManagedReference<LairObject*> building = zoneServer->createObject(buildingToSpawn.hashCode(), 0).castTo<LairObject*>();
if (building == NULL) {
error("error spawning " + buildingToSpawn);
return NULL;
}
Locker blocker(building);
building->setFaction(lairTmpl->getFaction());
building->setPvpStatusBitmask(CreatureFlag::ATTACKABLE);
building->setOptionsBitmask(0, false);
building->setMaxCondition(difficultyLevel * (900 + System::random(200)));
building->setConditionDamage(0, false);
building->initializePosition(x, z, y);
building->setDespawnOnNoPlayersInRange(true);
ManagedReference<LairObserver*> lairObserver = new LairObserver();
lairObserver->deploy();
lairObserver->setLairTemplate(lairTmpl);
lairObserver->setDifficulty(difficulty);
lairObserver->setObserverType(ObserverType::LAIR);
lairObserver->setSize(size);
building->registerObserver(ObserverEventType::OBJECTDESTRUCTION, lairObserver);
building->registerObserver(ObserverEventType::DAMAGERECEIVED, lairObserver);
building->registerObserver(ObserverEventType::AIMESSAGE, lairObserver);
building->registerObserver(ObserverEventType::OBJECTREMOVEDFROMZONE, lairObserver);
zone->transferObject(building, -1, false);
lairObserver->checkForNewSpawns(building, NULL, true);
return building;
}
示例2: spawnTheater
SceneObject* CreatureManagerImplementation::spawnTheater(unsigned int lairTemplate, int difficulty, float x, float z, float y, float size) {
LairTemplate* lairTmpl = creatureTemplateManager->getLairTemplate(lairTemplate);
if (lairTmpl == NULL || lairTmpl->getBuildingType() != LairTemplate::THEATER)
return NULL;
Vector<String>* mobiles = lairTmpl->getWeightedMobiles();
if (mobiles->size() == 0)
return NULL;
String buildingToSpawn = lairTmpl->getBuilding((uint32)difficulty);
if (buildingToSpawn.isEmpty()) {
error("error spawning " + buildingToSpawn);
return NULL;
}
ManagedReference<PoiBuilding*> building = zoneServer->createObject(buildingToSpawn.hashCode(), 0).castTo<PoiBuilding*>();
if (building == NULL) {
error("error spawning " + buildingToSpawn);
return NULL;
}
Locker blocker(building);
building->initializePosition(x, z, y);
building->setDespawnOnNoPlayersInRange(true);
ManagedReference<DynamicSpawnObserver*> theaterObserver = new DynamicSpawnObserver();
theaterObserver->deploy();
theaterObserver->setLairTemplate(lairTmpl);
theaterObserver->setDifficulty(difficulty);
theaterObserver->setObserverType(ObserverType::LAIR);
theaterObserver->setSize(size);
building->registerObserver(ObserverEventType::CREATUREDESPAWNED, theaterObserver);
building->registerObserver(ObserverEventType::OBJECTREMOVEDFROMZONE, theaterObserver);
zone->transferObject(building, -1, false);
theaterObserver->spawnInitialMobiles(building);
return building;
}
示例3: spawnDynamicSpawn
SceneObject* CreatureManagerImplementation::spawnDynamicSpawn(unsigned int lairTemplate, int difficulty, float x, float z, float y, float size) {
LairTemplate* lairTmpl = creatureTemplateManager->getLairTemplate(lairTemplate);
if (lairTmpl == NULL || lairTmpl->getBuildingType() != LairTemplate::NONE)
return NULL;
Vector<String>* mobiles = lairTmpl->getWeightedMobiles();
if (mobiles->size() == 0)
return NULL;
ManagedReference<ActiveArea*> area = zoneServer->createObject(String("object/active_area.iff").hashCode(), 0).castTo<ActiveArea*>();
if (area == NULL) {
error("error creating active area");
return NULL;
}
Locker blocker(area);
area->initializePosition(x, z, y);
area->setRadius(64);
area->setNoSpawnArea(true);
area->setNoBuildArea(true);
ManagedReference<DynamicSpawnObserver*> dynamicObserver = new DynamicSpawnObserver();
dynamicObserver->deploy();
dynamicObserver->setLairTemplate(lairTmpl);
dynamicObserver->setDifficulty(difficulty);
dynamicObserver->setObserverType(ObserverType::LAIR);
dynamicObserver->setSize(size);
area->registerObserver(ObserverEventType::CREATUREDESPAWNED, dynamicObserver);
zone->transferObject(area, -1, false);
dynamicObserver->spawnInitialMobiles(area);
return area;
}
示例4: spawnDynamicSpawn
SceneObject* CreatureManagerImplementation::spawnDynamicSpawn(unsigned int lairTemplate, int difficulty, float x, float z, float y, float size) {
LairTemplate* lairTmpl = creatureTemplateManager->getLairTemplate(lairTemplate);
if (lairTmpl == NULL || lairTmpl->getBuildingType() != LairTemplate::NONE)
return NULL;
Vector<String>* mobiles = lairTmpl->getWeightedMobiles();
if (mobiles->size() == 0)
return NULL;
ManagedReference<TheaterObject*> theater = zoneServer->createObject(STRING_HASHCODE("object/intangible/theater/base_theater.iff"), 0).castTo<TheaterObject*>();
if (theater == NULL) {
error("error creating intangible theater");
return NULL;
}
Locker blocker(theater);
theater->initializePosition(x, z, y);
theater->setDespawnOnNoPlayersInRange(true);
ManagedReference<DynamicSpawnObserver*> dynamicObserver = new DynamicSpawnObserver();
dynamicObserver->deploy();
dynamicObserver->setLairTemplate(lairTmpl);
dynamicObserver->setDifficulty(difficulty);
dynamicObserver->setObserverType(ObserverType::LAIR);
dynamicObserver->setSize(size);
theater->registerObserver(ObserverEventType::CREATUREDESPAWNED, dynamicObserver);
theater->registerObserver(ObserverEventType::OBJECTREMOVEDFROMZONE, dynamicObserver);
zone->transferObject(theater, -1, false);
theater->createChildObjects();
dynamicObserver->spawnInitialMobiles(theater);
return theater;
}
示例5: loadClientRegions
void PlanetManagerImplementation::loadClientRegions() {
TemplateManager* templateManager = TemplateManager::instance();
IffStream* iffStream = templateManager->openIffFile("datatables/clientregion/" + zone->getZoneName() + ".iff");
Reference<PlanetMapCategory*> cityCat = TemplateManager::instance()->getPlanetMapCategoryByName("city");
if (iffStream == NULL) {
info("No client regions found.");
return;
}
DataTableIff dtiff;
dtiff.readObject(iffStream);
for (int i = 0; i < dtiff.getTotalRows(); ++i) {
String regionName;
float x, y, radius;
DataTableRow* row = dtiff.getRow(i);
row->getValue(0, regionName);
row->getValue(1, x);
row->getValue(2, y);
row->getValue(3, radius);
ManagedReference<CityRegion*> cityRegion = regionMap.getRegion(regionName);
if (cityRegion == NULL) {
cityRegion = new CityRegion();
Locker locker(cityRegion);
cityRegion->deploy();
cityRegion->setRegionName(regionName);
cityRegion->setZone(zone);
regionMap.addRegion(cityRegion);
}
Locker locker(cityRegion);
ManagedReference<Region*> region = cityRegion->addRegion(x, y, radius, false);
locker.release();
if (region != NULL) {
Locker rlocker(region);
if (cityRegion->getRegionsCount() == 1) {//Register the first region only.
region->setPlanetMapCategory(cityCat);
zone->registerObjectWithPlanetaryMap(region);
}
region->setMunicipalZone(true);
ManagedReference<SceneObject*> scenery = NULL;
if (gcwManager != NULL) {
int strongholdFaction = gcwManager->isStrongholdCity(regionName);
if (strongholdFaction == GCWManager::IMPERIALHASH || regionName.contains("imperial")) {
scenery = zone->getZoneServer()->createObject(STRING_HASHCODE("object/static/particle/particle_distant_ships_imperial.iff"), 0);
} else if (strongholdFaction == GCWManager::REBELHASH || regionName.contains("rebel")) {
scenery = zone->getZoneServer()->createObject(STRING_HASHCODE("object/static/particle/particle_distant_ships_rebel.iff"), 0);
} else {
scenery = zone->getZoneServer()->createObject(STRING_HASHCODE("object/static/particle/particle_distant_ships.iff"), 0);
}
} else {
scenery = zone->getZoneServer()->createObject(STRING_HASHCODE("object/static/particle/particle_distant_ships.iff"), 0);
}
Locker slocker(scenery, region);
scenery->initializePosition(x, zone->getHeight(x, y) + 100, y);
region->attachScenery(scenery);
}
ManagedReference<ActiveArea*> noBuild = zone->getZoneServer()->createObject(STRING_HASHCODE("object/active_area.iff"), 0).castTo<ActiveArea*>();
Locker areaLocker(noBuild);
noBuild->initializePosition(x, 0, y);
ManagedReference<CircularAreaShape*> areaShape = new CircularAreaShape();
Locker shapeLocker(areaShape);
areaShape->setRadius(radius * 2);
areaShape->setAreaCenter(x, y);
noBuild->setAreaShape(areaShape);
noBuild->setRadius(radius * 2);
noBuild->setNoBuildArea(true);
// Cities already have "Municipal" protection so the structure no-build should not apply to camps
noBuild->setCampingPermitted(true);
Locker zoneLocker(zone);
zone->transferObject(noBuild, -1, true);
}
info("Added " + String::valueOf(regionMap.getTotalRegions()) + " client regions.");
//.........这里部分代码省略.........
示例6: loadClientRegions
void PlanetManagerImplementation::loadClientRegions() {
TemplateManager* templateManager = TemplateManager::instance();
IffStream* iffStream = templateManager->openIffFile("datatables/clientregion/" + zone->getZoneName() + ".iff");
Reference<PlanetMapCategory*> cityCat = TemplateManager::instance()->getPlanetMapCategoryByName("city");
if (iffStream == NULL) {
info("No client regions found.");
return;
}
DataTableIff dtiff;
dtiff.readObject(iffStream);
for (int i = 0; i < dtiff.getTotalRows(); ++i) {
String regionName;
float x, y, radius;
DataTableRow* row = dtiff.getRow(i);
row->getValue(0, regionName);
row->getValue(1, x);
row->getValue(2, y);
row->getValue(3, radius);
ManagedReference<CityRegion*> cityRegion = regionMap.getRegion(regionName);
if (cityRegion == NULL) {
cityRegion = new CityRegion();
cityRegion->deploy();
cityRegion->setRegionName(regionName);
cityRegion->setZone(zone);
regionMap.addRegion(cityRegion);
}
ManagedReference<Region*> region = cityRegion->addRegion(x, y, radius, false);
if (region != NULL) {
if (cityRegion->getRegionsCount() == 1) {//Register the first region only.
region->setPlanetMapCategory(cityCat);
zone->registerObjectWithPlanetaryMap(region);
}
region->setMunicipalZone(true);
}
ManagedReference<ActiveArea*> noBuild = zone->getZoneServer()->createObject(String("object/active_area.iff").hashCode(), 0).castTo<ActiveArea*>();
noBuild->initializePosition(x, 0, y);
ManagedReference<CircularAreaShape*> areaShape = new CircularAreaShape();
areaShape->setRadius(radius * 2);
areaShape->setAreaCenter(x, y);
noBuild->setAreaShape(areaShape);
noBuild->setRadius(radius * 2);
noBuild->setNoBuildArea(true);
// Cities already have "Municipal" protection so the structure no-build should not apply to camps
noBuild->setCampingPermitted(true);
zone->transferObject(noBuild, -1, true);
}
info("Added " + String::valueOf(regionMap.getTotalRegions()) + " client regions.");
}
示例7: spawnLair
void DestroyMissionObjectiveImplementation::spawnLair() {
ManagedReference<MissionObject* > mission = this->mission.get();
ManagedReference<MissionSpawnActiveArea* > spawnActiveArea = this->spawnActiveArea;
if (spawnActiveArea == NULL)
return;
if (lairObject != NULL && lairObject->getZone() != NULL)
return;
Zone* zone = spawnActiveArea->getZone();
Locker locker(spawnActiveArea);
spawnActiveArea->destroyObjectFromWorld(true);
Vector3 pos = findValidSpawnPosition(zone);
ManagedReference<WaypointObject*> waypoint = mission->getWaypointToMission();
if (waypoint == NULL) {
waypoint = mission->createWaypoint();
}
waypoint->setPosition(pos.getX(), 0, pos.getY());
mission->updateMissionLocation();
mission->setStartPosition(pos.getX(), pos.getY());
//TODO: find correct string id
ManagedReference<CreatureObject*> player = getPlayerOwner();
if (player != NULL) {
player->sendSystemMessage("Transmission Received: Mission Target has been located. Mission waypoint has been updated to exact location");
}
LairTemplate* lair = CreatureTemplateManager::instance()->getLairTemplate(lairTemplate.hashCode());
if (lair == NULL) {
error("incorrect lair template in destroy mission objective " + lairTemplate);
abort();
return;
}
if (lairObject == NULL) {
String buildingToSpawn = lair->getMissionBuilding(difficulty);
if (buildingToSpawn.isEmpty()) {
error("error spawning " + buildingToSpawn);
abort();
return;
}
lairObject = zone->getZoneServer()->createObject(buildingToSpawn.hashCode(), 0).castTo<LairObject*>();
if (lairObject == NULL) {
error("error spawning " + buildingToSpawn);
abort();
return;
}
Locker locker(lairObject);
lairObject->setFaction(lair->getFaction());
lairObject->setPvpStatusBitmask(CreatureFlag::ATTACKABLE);
lairObject->setOptionsBitmask(0, false);
lairObject->setMaxCondition(difficultyLevel * (900 + System::random(200)));
lairObject->setConditionDamage(0, false);
lairObject->initializePosition(pos.getX(), pos.getZ(), pos.getY());
lairObject->setDespawnOnNoPlayersInRange(false);
ManagedReference<MissionObserver*> observer = new MissionObserver(_this.get());
addObserver(observer, true);
lairObject->registerObserver(ObserverEventType::OBJECTDESTRUCTION, observer);
ManagedReference<DestroyMissionLairObserver*> lairObserver = new DestroyMissionLairObserver();
lairObserver->deploy();
lairObserver->setLairTemplate(lair);
lairObserver->setDifficulty(difficulty);
lairObserver->setObserverType(ObserverType::LAIR);
lairObserver->setSize(mission->getSize());
lairObject->registerObserver(ObserverEventType::OBJECTDESTRUCTION, lairObserver);
lairObject->registerObserver(ObserverEventType::DAMAGERECEIVED, lairObserver);
lairObject->registerObserver(ObserverEventType::AIMESSAGE, lairObserver);
lairObject->registerObserver(ObserverEventType::OBJECTREMOVEDFROMZONE, lairObserver);
zone->transferObject(lairObject, -1, true);
lairObserver->checkForNewSpawns(lairObject, NULL, true);
}
if (lairObject != NULL && lairObject->getZone() == NULL) {
zone->transferObject(lairObject, -1, true);
}
}