public void DoDamageObject(GameObject pObjectDamager, GameObject pObjectVictim, out bool bIsDead) { bIsDead = false; int iID_Damager = pObjectDamager.GetInstanceID(); int iID_Victim = pObjectVictim.GetInstanceID(); if (_mapObjectStat.ContainsKey(iID_Damager) == false || _mapObjectStat.ContainsKey(iID_Victim) == false) { Debug.Log("[Error] ManagerStat - Not Contain Stat"); return; } CCompoStat pStat_Victim = _mapObjectStat[iID_Victim]; if (pStat_Victim.p_bIsAlive == false || _setUnTouchable.Contains(pObjectVictim)) { pStat_Victim.DoDamage(0, false, pObjectDamager); return; } CCompoStat pStat_Damager = _mapObjectStat[iID_Damager]; bool bIsCriticalAttack = pStat_Damager.p_pStat.p_bIsCritical; float iDamage = CalculateDamage(pStat_Damager.p_pStat, pStat_Victim.p_pStat, bIsCriticalAttack); pStat_Victim.DoDamage(iDamage, bIsCriticalAttack, pStat_Damager.gameObject, out bIsDead); if (bIsDead && p_Event_OnDead != null) { p_Event_OnDead(pObjectVictim, iID_Victim); } }
public void DoRemoveObjectStat(CCompoStat pStat) { int iObjectID = pStat.gameObject.GetInstanceID(); if (_mapObjectStat.ContainsKey(iObjectID)) { _mapObjectStat.Remove(iObjectID); } }
public void DoKillObject(GameObject pObjectVictim) { int iID_Victim = pObjectVictim.GetInstanceID(); if (_mapObjectStat.ContainsKey(iID_Victim) == false) { Debug.Log("[Error] ManagerStat - Not Contain Stat" + pObjectVictim.name, pObjectVictim); return; } CCompoStat pStat_Victim = _mapObjectStat[iID_Victim]; pStat_Victim.DoKill(); }
public void DoRegistObjectStat(CCompoStat pStat, bool bIsReset = true) { int iObjectID = pStat.gameObject.GetInstanceID(); if (_mapObjectStat.ContainsKey(iObjectID) == false) { _mapObjectStat.Add(iObjectID, pStat); } if (bIsReset) { _mapObjectStat[iObjectID].DoResetStat(); } }