Example #1
0
void FSUnit::Attack(Ptr<FSUnit> pVictim)
{
	if (!pVictim)
	{
		return;
	}

	int attack1 = this->GetAttack();
	int attack2 = pVictim->GetAttack();
	
	this->ChangeLife(-attack2);
	pVictim->ChangeLife(-attack1);

	if (pVictim->GetLife() <= 0)
	{
		Ptr<FSUnitDeadMsg> msg(new FSUnitDeadMsg());
		msg->attackerID = this->GetUniqueID(); 
		msg->victimID = pVictim->GetUniqueID();
		FSMsgManager::Instance().SendSyncMessage(msg);
	}

	if (this->GetLife() <= 0)
	{
		Ptr<FSUnitDeadMsg> msg(new FSUnitDeadMsg());
		msg->attackerID = pVictim->GetUniqueID(); 
		msg->victimID = this->GetUniqueID();
		FSMsgManager::Instance().SendSyncMessage(msg);
	}

}