本文整理汇总了C++中PlayerManager::getPlayer方法的典型用法代码示例。如果您正苦于以下问题:C++ PlayerManager::getPlayer方法的具体用法?C++ PlayerManager::getPlayer怎么用?C++ PlayerManager::getPlayer使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类PlayerManager
的用法示例。
在下文中一共展示了PlayerManager::getPlayer方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: sendHome
//Sends a fleet back to it's home planet
void TaeTurn::sendHome(uint32_t fleet) {
Game* game = Game::getGame();
ObjectManager* obm = game->getObjectManager();
ObjectTypeManager* obtm = game->getObjectTypeManager();
PlayerManager* pm = game->getPlayerManager();
IGObject* fleetobj = obm->getObject(fleet);
//Check to make sure it is really a fleet
if(fleetobj->getType() != obtm->getObjectTypeByName("Fleet")) {
return;
}
//Get all the required objects
Fleet* f = (Fleet*) fleetobj->getObjectBehaviour();
Player* p = pm->getPlayer(f->getOwner());
IGObject* sys = obm->getObject(fleetobj->getParent());
StarSystem* sysData = (StarSystem*) sys->getObjectBehaviour();
//Remove fleet from system
sysData->setRegion(0);
fleetobj->removeFromParent();
//Find it's home planet
std::set<uint32_t> objects = obm->getAllIds();
std::set<uint32_t>::iterator itcurr;
for(itcurr = objects.begin(); itcurr != objects.end(); ++itcurr) {
IGObject * ob = obm->getObject(*itcurr);
if(ob->getName().compare(string(p->getName() + "'s Home Planet")) == 0) {
Planet* p = (Planet*) ob->getObjectBehaviour();
f->setPosition(p->getPosition());
fleetobj->addToParent(ob->getID());
}
}
}
示例2: broadcastMessageCheckIgnore
void ChatRoomImplementation::broadcastMessageCheckIgnore(BaseMessage* msg, String& senderName) {
Locker locker(_this.get());
String lowerName = senderName.toLowerCase();
PlayerManager* playerManager = server->getPlayerManager();
ManagedReference<CreatureObject*> sender = NULL;
bool privileged = false;
ManagedReference<PlayerObject*> senderPlayer = NULL;
if (playerManager == NULL)
return;
sender = playerManager->getPlayer(lowerName);
if (sender == NULL)
return;
senderPlayer = sender->getPlayerObject();
if (senderPlayer == NULL)
return;
if (senderPlayer->isPrivileged())
privileged = true;
for (int i = 0; i < playerList.size(); ++i) {
ManagedReference<CreatureObject*> player = playerList.get(i);
if (player){
PlayerObject* ghost = player->getPlayerObject();
if (ghost == NULL)
continue;
if (!ghost->isIgnoring(lowerName) || privileged) {
player->sendMessage(msg->clone());
}
}
}
delete msg;
}
示例3: createCharacter
bool PlayerCreationManager::createCharacter(MessageCallback* data) {
TemplateManager* templateManager = TemplateManager::instance();
ClientCreateCharacterCallback* callback = cast<
ClientCreateCharacterCallback*>(data);
ZoneClientSession* client = data->getClient();
if (client->getCharacterCount(zoneServer.get()->getGalaxyID()) >= 10) {
ErrorMessage* errMsg = new ErrorMessage("Create Error", "You are limited to 10 characters per galaxy.", 0x0);
client->sendMessage(errMsg);
return false;
}
PlayerManager* playerManager = zoneServer.get()->getPlayerManager();
SkillManager* skillManager = SkillManager::instance();
//Get all the data and validate it.
UnicodeString characterName;
callback->getCharacterName(characterName);
//TODO: Replace this at some point?
if (!playerManager->checkPlayerName(callback))
return false;
String raceFile;
callback->getRaceFile(raceFile);
uint32 serverObjectCRC = raceFile.hashCode();
PlayerCreatureTemplate* playerTemplate =
dynamic_cast<PlayerCreatureTemplate*>(templateManager->getTemplate(
serverObjectCRC));
if (playerTemplate == NULL) {
error("Unknown player template selected: " + raceFile);
return false;
}
int raceID = playerTemplate->getRace();
String fileName = playerTemplate->getTemplateFileName();
String clientTemplate = templateManager->getTemplateFile(
playerTemplate->getClientObjectCRC());
RacialCreationData* raceData = racialCreationData.get(fileName);
if (raceData == NULL)
raceData = racialCreationData.get(0); //Just get the first race, since they tried to create a race that doesn't exist.
String profession, customization, hairTemplate, hairCustomization;
callback->getSkill(profession);
if (profession.contains("jedi"))
profession = "crafting_artisan";
callback->getCustomizationString(customization);
callback->getHairObject(hairTemplate);
callback->getHairCustomization(hairCustomization);
float height = callback->getHeight();
height = MAX(MIN(height, playerTemplate->getMaxScale()),
playerTemplate->getMinScale());
//validate biography
UnicodeString bio;
callback->getBiography(bio);
bool doTutorial = callback->getTutorialFlag();
//bool doTutorial = false;
ManagedReference<CreatureObject*> playerCreature =
zoneServer.get()->createObject(
serverObjectCRC, 2).castTo<CreatureObject*>();
if (playerCreature == NULL) {
error("Could not create player with template: " + raceFile);
return false;
}
Locker playerLocker(playerCreature);
playerCreature->createChildObjects();
playerCreature->setHeight(height);
playerCreature->setCustomObjectName(characterName, false); //TODO: Validate with Name Manager.
client->setPlayer(playerCreature);
playerCreature->setClient(client);
// Set starting cash and starting bank
playerCreature->setCashCredits(startingCash, false);
playerCreature->setBankCredits(startingBank, false);
ManagedReference<PlayerObject*> ghost = playerCreature->getPlayerObject();
if (ghost != NULL) {
//Set skillpoints before adding any skills.
ghost->setSkillPoints(skillPoints);
//.........这里部分代码省略.........
示例4: handlePost
void PermissionsServlet::handlePost(HttpRequest* request, HttpResponse* response) {
PlayerManager* playerManager = server->getPlayerManager();
bool applyToAll = false;
String accountName = request->getParameter("accountName");
String levelName = request->getParameter("level");
int level = PermissionLevelList::instance()->getLevelNumber(levelName);
if(request->getParameter("applyToAll") == "true")
applyToAll = true;
ManagedReference<Account*> account = AccountManager::getAccount(accountName);
if(account == NULL) {
response->println("HTTP/1.1 200 OK\r\n");
response->println("Content-Type: text/html\r\n\r\n");
response->println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
response->println("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
response->println(" <head>");
response->println(" <title>SWGEmu Web Server Login</title>");
response->println(" <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />");
response->println(" <link rel=\"stylesheet\" type=\"text/css\" href=\"css/style.css\" />");
response->println(" </head>");
response->println(" <body>");
response->println(" <div class=\"login_box\">");
response->println(" <h1>Account doesn't exist.</h1>");
response->println(" <a href=\"permissions\"> Click here to return </a>");
response->println(" </div>");
response->println(" </body>");
response->println("</html>");
}
Locker locker(account);
account->setAdminLevel(level);
locker.release();
if(applyToAll == true) {
Reference<CharacterList*> characterList = account->getCharacterList();
for(int i = 0; i < characterList->size(); ++i) {
ManagedReference<CreatureObject* > targetCreature = NULL;
CharacterListEntry* entry = &characterList->get(i);
targetCreature = playerManager->getPlayer(entry->getFirstName());
playerManager->updatePermissionLevel(targetCreature, level);
}
}
response->println("HTTP/1.1 200 OK\r\n");
response->println("Content-Type: text/html\r\n\r\n");
response->println("<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN " "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">");
response->println("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
response->println(" <head>");
response->println(" <title>SWGEmu Web Server Login</title>");
response->println(" <meta http-equiv=\"content-type\" content=\"text/html;charset=utf-8\" />");
response->println(" <link rel=\"stylesheet\" type=\"text/css\" href=\"css/style.css\" />");
response->println(" </head>");
response->println(" <body>");
response->println(" <div class=\"login_box\">");
response->println(" <h1>Account updated.</h1>");
response->println(" <a href=\"permissions\"> Click here to return </a>");
response->println(" </div>");
response->println(" </body>");
response->println("</html>");
}
示例5: gameOver
//End the game
void gameOver() {
Game* game = Game::getGame();
PlayerManager* pm = game->getPlayerManager();
map<uint32_t, uint32_t> finalScore;
set<uint32_t>::iterator itcurr;
set<uint32_t> players = pm->getAllIds();
//Find each player's final score
for(itcurr = players.begin(); itcurr != players.end(); itcurr++) {
Player* p = pm->getPlayer(*itcurr);
uint32_t artifacts = p->getScore(5);
//change artifact points to improve the types with the lowest
//points
while(artifacts > 0) {
int lowest = 1;
for(int i = 2; i < 5; i++) {
if(p->getScore(i) < p->getScore(lowest)) {
lowest = i;
}
}
p->setScore(lowest, p->getScore(lowest) + 1);
artifacts--;
}
//Find the final score
int low = 1;
for(int i = 2; i < 5; i++) {
if(p->getScore(i) < p->getScore(low)) {
low = i;
}
}
finalScore[*itcurr] = p->getScore(low);
}
//Find the winner
uint32_t winner = 0;
for(map<uint32_t, uint32_t>::iterator i = finalScore.begin(); i != finalScore.end(); i++) {
if(winner == 0 || i->second > finalScore[winner]) {
winner = i->first;
}
}
for(itcurr = players.begin(); itcurr != players.end(); itcurr++) {
Player* p = pm->getPlayer(*itcurr);
//Send message to each player
Message * msg = new Message();
msg->setSubject("GAME OVER!");
stringstream out;
Player* win = pm->getPlayer(winner);
out << win->getName() << " has won the game with a score of ";
out << finalScore[winner] << "! ";
out << "Your final score after distributing your alien artifacts was: ";
out << finalScore[*itcurr];
msg->setBody(out.str());
p->postToBoard(msg);
p->setIsAlive(false);
}
}
示例6: awardArtifacts
//Award artifacts to any players who have a merchant leader
//in a region with two artifacts
void TaeTurn::awardArtifacts() {
Game* game = Game::getGame();
ObjectTypeManager* obtm = game->getObjectTypeManager();
ObjectManager* objectmanager = game->getObjectManager();
std::set<uint32_t> artifacts;
std::set<uint32_t> regions;
std::set<uint32_t> objects = objectmanager->getAllIds();
std::set<uint32_t>::iterator itcurr;
//Find any regions with 2 or more alien artifacts
for(itcurr = objects.begin(); itcurr != objects.end(); ++itcurr) {
IGObject * ob = objectmanager->getObject(*itcurr);
if(ob->getType() == obtm->getObjectTypeByName("Planet")) {
Planet* p = (Planet*) ob->getObjectBehaviour();
if(p->getResource(3) > 0) {
StarSystem* sys = (StarSystem*)(objectmanager->getObject(ob->getParent())->getObjectBehaviour());
if(sys->getRegion() != 0) {
if(regions.count(sys->getRegion()) > 0) {
artifacts.insert(*itcurr);
} else {
regions.insert(sys->getRegion());
}
}
}
}
}
if(!artifacts.empty()) {
uint32_t type;
DesignStore* ds = game->getDesignStore();
PlayerManager* pm = game->getPlayerManager();
std::set<unsigned int> designs = ds->getDesignIds();
//get leader ID
for(itcurr = designs.begin(); itcurr != designs.end(); ++itcurr) {
if(ds->getDesign(*itcurr)->getName().compare("MerchantLeaderShip")) {
type = *itcurr;
}
}
//Search the objects for a merchant leader
for(itcurr = objects.begin(); itcurr != objects.end(); ++itcurr) {
IGObject * ob = objectmanager->getObject(*itcurr);
if(ob->getType() == obtm->getObjectTypeByName("Fleet")) {
Fleet* f = (Fleet*) (ob->getObjectBehaviour());
if(f->getShips().count(type) > 0) {
IGObject* parent = objectmanager->getObject(ob->getParent());
if(parent->getType() == obtm->getObjectTypeByName("Star System")) {
StarSystem* parentData = (StarSystem*) (parent->getObjectBehaviour());
//See if this leader is in a region with
//2 or more alien artifacts
for(std::set<uint32_t>::iterator i = artifacts.begin(); i != artifacts.end(); ++i) {
IGObject* obj = objectmanager->getObject(*i);
Planet* p = (Planet*) obj->getObjectBehaviour();
StarSystem* sys = (StarSystem*)(objectmanager->getObject(obj->getParent())->getObjectBehaviour());
if(sys->getRegion() == parentData->getRegion()) {
//+1 to leader's owner's artifact score
Player* owner = pm->getPlayer(f->getOwner());
owner->setScore(5, owner->getScore(5) + 1);
p->removeResource(3, 1);
artifacts.erase(*i);
}
}
}
}
}
}
}
}
示例7: doTurn
void TaeTurn::doTurn(){
//check to make sure the game is still ging and this is not a combat turn
if(isGameOver) {
gameOver();
return;
} else if(combat) {
doCombatTurn();
return;
}
std::set<uint32_t>::iterator itcurr;
Game* game = Game::getGame();
OrderManager* ordermanager = game->getOrderManager();
ObjectManager* objectmanager = game->getObjectManager();
ObjectTypeManager* obtm = game->getObjectTypeManager();
PlayerManager* playermanager = game->getPlayerManager();
//build map for storing orders
std::map<uint32_t, std::list<IGObject*> > playerOrders;
containerids.clear();
//separate orders by player
std::set<uint32_t> objects = objectmanager->getAllIds();
for(itcurr = objects.begin(); itcurr != objects.end(); ++itcurr) {
IGObject * ob = objectmanager->getObject(*itcurr);
if(ob->getType() == planettype || ob->getType() == fleettype){
OrderQueueObjectParam* oqop = dynamic_cast<OrderQueueObjectParam*>(ob->getParameterByType(obpT_Order_Queue));
if(oqop != NULL){
OrderQueue* orderqueue = ordermanager->getOrderQueue(oqop->getQueueId());
if(orderqueue != NULL){
Order * currOrder = orderqueue->getFirstOrder();
if(currOrder != NULL){
uint32_t owner = ((OwnedObject*)(ob->getObjectBehaviour()))->getOwner();
std::list<IGObject*>::iterator i = playerOrders[owner].end();
playerOrders[owner].insert(i, ob);
}
}
}
}
}
//Do orders for players in the correct order
//The order in which orders are processed is rotated each turn
std::set<uint32_t> players = playermanager->getAllIds();
itcurr = players.begin();
for(int i = 0; i < playerTurn; i++) {
itcurr++;
}
for(int it = 0; it < players.size(); it++) {
if(itcurr == players.end()) {
itcurr = players.begin();
}
if(playerOrders[*itcurr].size() > 0) {
for(std::list<IGObject*>::iterator i = playerOrders[*itcurr].begin(); i != playerOrders[*itcurr].end(); i++) {
OrderQueue* orderqueue = ordermanager->getOrderQueue(((OrderQueueObjectParam*)((*i)->getParameterByType(obpT_Order_Queue)))->getQueueId());
Order* currOrder = orderqueue->getFirstOrder();
if(currOrder!= NULL) {
if(currOrder->doOrder(*i)) {
orderqueue->removeFirstOrder();
} else {
orderqueue->updateFirstOrder();
}
}
if((*i)->getContainerType() >= 1){
containerids.insert((*i)->getID());
}
objectmanager->doneWithObject((*i)->getID());
}
}
itcurr++;
}
awardArtifacts();
//Check for end game condition of less than 3 artifacts remaining
objects = objectmanager->getAllIds();
int numArtifacts = 0;
for(itcurr = objects.begin(); itcurr != objects.end(); itcurr++) {
IGObject * ob = objectmanager->getObject(*itcurr);
if(ob->getType() == obtm->getObjectTypeByName("Planet")) {
Planet* p = (Planet*) ob->getObjectBehaviour();
if(p->getResource(3) > 0) {
numArtifacts++;
}
}
}
if(numArtifacts < 3) {
isGameOver = true;
gameOver();
return;
}
//Update which player's turn it is
playerTurn = (playerTurn + 1) % playermanager->getNumPlayers();
objectmanager->clearRemovedObjects();
// to once a turn
for(itcurr = objects.begin(); itcurr != objects.end(); ++itcurr) {
//.........这里部分代码省略.........
示例8: doCombatTurn
void TaeTurn::doCombatTurn() {
std::set<uint32_t>::iterator itcurr;
Game* game = Game::getGame();
OrderManager* ordermanager = game->getOrderManager();
ObjectManager* objectmanager = game->getObjectManager();
ObjectTypeManager* obtm = game->getObjectTypeManager();
PlayerManager* playermanager = game->getPlayerManager();
containerids.clear();
// Do orders
std::set<uint32_t> objects = objectmanager->getAllIds();
for(itcurr = objects.begin(); itcurr != objects.end(); ++itcurr) {
IGObject * ob = objectmanager->getObject(*itcurr);
if(ob->getType() == planettype || ob->getType() == fleettype){
OrderQueueObjectParam* oqop = dynamic_cast<OrderQueueObjectParam*>(ob->getParameterByType(obpT_Order_Queue));
if(oqop != NULL){
OrderQueue* orderqueue = ordermanager->getOrderQueue(oqop->getQueueId());
if(orderqueue != NULL){
Order * currOrder = orderqueue->getFirstOrder();
if(currOrder != NULL){
if(currOrder->doOrder(ob)) {
orderqueue->removeFirstOrder();
} else {
orderqueue->updateFirstOrder();
}
}
if(ob->getContainerType() >= 1){
containerids.insert(ob->getID());
}
objectmanager->doneWithObject((ob)->getID());
}
}
}
}
//Determine winner
uint32_t winner = 0;
uint32_t loser = 0;
for(map<uint32_t, int>::iterator i = strength.begin(); i != strength.end(); ++i) {
if(winner == 0) {
winner = i->first;
} else {
if(strength[winner] < i->second) {
winner = i->first;
} else {
loser = i->first;
}
}
}
//Remove losing combatants
uint32_t losingRegion;
uint32_t winningRegion;
set<uint32_t> removedSystems;
if(isInternal) {
//Internal combat removes losing leader and awards one point to the winner
for(map<uint32_t, uint32_t>::iterator i = combatants.begin(); i != combatants.end(); ++i) {
IGObject* ob = objectmanager->getObject(i->first);
Fleet* f = (Fleet*) ob->getObjectBehaviour();
if(f->getOwner() != winner) {
sendHome(i->first);
Player* p = playermanager->getPlayer(winner);
p->setScore(2, p->getScore(2) + 1);
losingRegion = i->second;
winningRegion = losingRegion;
}
}
objects = objectmanager->getAllIds();
for(itcurr = objects.begin(); itcurr!= objects.end(); ++itcurr) {
IGObject* ob = objectmanager->getObject(*itcurr);
if(ob->getType() == obtm->getObjectTypeByName("Star System")) {
StarSystem* sysData = (StarSystem*) ob->getObjectBehaviour();
if(sysData->getRegion() == losingRegion) {
sysData->setRegion(0);
removedSystems.insert(*itcurr);
}
}
}
} else {
//External combat removes the losing leader and losing colonies.
//1 point is awarded for the leader and each colony removed
string shipType;
//set shiptype, losing/winning regions, and send home the losing leader
for(map<uint32_t, uint32_t>::iterator i = combatants.begin(); i != combatants.end(); ++i) {
IGObject* ob = objectmanager->getObject(i->first);
Fleet* f = (Fleet*) ob->getObjectBehaviour();
if(f->getOwner() != winner) {
losingRegion = i->second;
shipType = ob->getName();
sendHome(i->first);
} else {
winningRegion = i->second;
}
}
//set the correct resource type
int resourceType;
//.........这里部分代码省略.........
示例9: initCombat
//Setup the next turn to be ready for combat
void TaeTurn::initCombat() {
std::set<uint32_t>::iterator itcurr;
Game* game = Game::getGame();
ObjectManager* objectmanager = game->getObjectManager();
PlayerManager* playermanager = game->getPlayerManager();
ObjectTypeManager* obtm = game->getObjectTypeManager();
DesignStore* ds = game->getDesignStore();
//Pop the combat queue and set the combatants
pair<bool, map<uint32_t, uint32_t> > temp;
temp = combatQueue.front();
combatQueue.pop();
isInternal = temp.first;
combatants = temp.second;
strength.clear();
for(map<uint32_t, uint32_t>::iterator i = combatants.begin(); i != combatants.end(); ++i) {
IGObject* ob = Game::getGame()->getObjectManager()->getObject(i->first);
Fleet* f = (Fleet*) ob->getObjectBehaviour();
strength[f->getOwner()] = 0;
}
set<uint32_t> owners;
set<uint32_t> regions;
string shipType;
for(map<uint32_t, uint32_t>::iterator i = combatants.begin(); i != combatants.end(); ++i) {
IGObject* ob = objectmanager->getObject(i->first);
Fleet* leader = (Fleet*) (ob)->getObjectBehaviour();
//look for the shiptype which this combat is associated with
if(shipType.empty()) {
if(isInternal) {
shipType = "ScientistShip";
} else {
//Set shiptype to the type corresponding to the leader
uint32_t ship = leader->getShips().begin()->first;
shipType = ds->getDesign(ship)->getName();
size_t pos = shipType.find("Leader");
if(pos != shipType.npos) {
shipType.erase(pos, 6);
}
}
}
owners.insert(leader->getOwner());
//Set which regions are involved in combat
if(regions.count(i->second) <= 0) {
regions.insert(i->second);
}
//Set initial internal combat strength
if(isInternal) {
IGObject *starSys = objectmanager->getObject(ob->getParent());
StarSystem* starSysData = (StarSystem*)(starSys->getObjectBehaviour());
Vector3d pos = starSysData->getPosition();
//Search for bordering science colonies
//east-west neighbors
for(int i = -1; i < 2; i+=2) {
set<uint32_t> ids = objectmanager->getObjectsByPos(pos+Vector3d(80000*i,0,0), 1);
for(set<uint32_t>::iterator j=ids.begin(); j != ids.end(); j++) {
IGObject *tempObj = objectmanager->getObject(*j);
if(tempObj->getType() == obtm->getObjectTypeByName("Planet")) {
Planet* p = (Planet*)(tempObj->getObjectBehaviour());
if(p->getResource(5) > 0) {
addReinforcement(leader->getOwner());
}
}
}
}
//north-south neighbors
for(int i = -1; i < 2; i+=2) {
set<uint32_t> ids = objectmanager->getObjectsByPos(pos+Vector3d(0,80000*i,0), 1);
for(set<uint32_t>::iterator j=ids.begin(); j != ids.end(); j++) {
IGObject *tempObj = objectmanager->getObject(*j);
if(tempObj->getType() == obtm->getObjectTypeByName("Planet")) {
Planet* p = (Planet*)(tempObj->getObjectBehaviour());
if(p->getResource(5) > 0) {
addReinforcement(leader->getOwner());
}
}
}
}
}
}
//Set which resource will be awarded
int resourceType;
if(shipType.compare("MerchantShip") == 0) {
resourceType = 4;
} else if(shipType.compare("ScientistShip") == 0) {
resourceType = 5;
} else if(shipType.compare("SettlerShip") == 0) {
resourceType = 6;
} else {
resourceType = 7;
}
//Set all fleets to combat mode. Flag the fleets whose owners are
//directly involved in combat.
std::set<ObjectView*> views;
//.........这里部分代码省略.........