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); } }