Beispiel #1
0
    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);
        }
    }
Beispiel #2
0
    public void DoRemoveObjectStat(CCompoStat pStat)
    {
        int iObjectID = pStat.gameObject.GetInstanceID();

        if (_mapObjectStat.ContainsKey(iObjectID))
        {
            _mapObjectStat.Remove(iObjectID);
        }
    }
Beispiel #3
0
    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();
    }
Beispiel #4
0
    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();
        }
    }