コード例 #1
0
void MissionManager::checkSurveyMission(PlayerObject* player,CurrentResource* resource,ResourceLocation highestDist)
{
	Datapad* datapad = dynamic_cast<Datapad*>(player->getEquipManager()->getEquippedObject(CreatureEquipSlot_Datapad));
	if(datapad->hasMission()) //player has a mission
	{
		MissionList::iterator it = datapad->getMissions()->begin();
		while(it != datapad->getMissions()->end())
		{
			MissionObject* mission = dynamic_cast<MissionObject*>(*it);
			if(mission->getMissionType() == survey)
			{
				if(mission->getTargetResource() == resource->getType())
				{
					if(mission->getDifficulty() <= (highestDist.ratio*100))
					{
                        if(glm::distance(mission->getIssuingTerminal()->mPosition, highestDist.position) > 1024)
						{
							gLogger->logMsg("PE > 500: ready to apply new BF/wound dmg");
							missionComplete(player,mission);
							it = datapad->removeMission(it);
							delete mission;
							return;
						}
						else
						{


							int8 sm[500];
							sprintf(sm,"That resource pocket is too close (%"PRIu32" meters) to the mission giver to be useful to them. Go find one at least %"PRIu32" meters away to complete your survey mission. ",
                                static_cast<uint32>(glm::distance(mission->getIssuingTerminal()->mPosition, highestDist.position)),
                                    (1024 - (int)glm::distance(mission->getIssuingTerminal()->mPosition, highestDist.position)));

							string s = BString(sm);
							s.convert(BSTRType_Unicode16);
							gMessageLib->sendSystemMessage(player,s);
						}
					}
				}
			}
			++it;
		}

	}

}