コード例 #1
0
void MissionManager::checkDancerMission(PlayerObject* player)
{
	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() == dancer)
			{
				if(mission->getInProgress()) { ++it; continue; }
                if(glm::distance(player->mPosition, mission->getDestination().Coordinates) < 20)
				{
					BuffAttribute* performance_timer = new BuffAttribute(Mission_Timer, 0,0,0);
					Buff* timer = Buff::SimpleBuff(player, player, 600000, 0, gWorldManager->GetCurrentGlobalTick());
					timer->AddAttribute(performance_timer);
					player->AddBuff(timer);
					mission->setInProgress(true);
				}
			}
			++it;
		}
	}

return;
}
コード例 #2
0
void MissionManager::missionFailedEntertainer(PlayerObject* player)
{
	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() == dancer || mission->getMissionType() == musician)
			{
				if(!mission->getInProgress()) { ++it; continue; }
                if(glm::distance(player->mPosition, mission->getDestination().Coordinates) < 20)
				{
						missionFailed(player,mission);
						it = datapad->removeMission(it);
						delete mission;
						return;
				}
			}
			++it;
		}
	}
}