public void Display(GameEventData eventData)
    {
        //Debug.Log("Received");
        UnitStatsChangeData data = eventData.CastDataType <UnitStatsChangeData>();

        if (data == null)
        {
            return;
        }

        Unit   unit     = data.m_Unit;
        int    delta    = data.m_Delta;
        string property = data.m_ChangedStats.ToString();

        string op   = delta > 0 ? " +" : " ";
        string text = property + op + delta;

        Color color = m_NeutralColor;

        if (delta < 0)
        {
            color = m_NegativeColor;
        }
        else if (delta > 0)
        {
            color = m_PositiveColor;
        }

        GameObject go = m_Pool.Get(true);

        go.transform.SetParent(this.transform);
        go.GetComponent <EffectText>().Display(unit.transform.position, text, color);

        StartCoroutine(Hide(go));
    }
Exemplo n.º 2
0
    /// <summary>
    /// Change unit's stats.
    /// </summary>
    /// <param name="stat">The field to change</param>
    /// <param name="amount">The value of change</param>
    /// <param name="set">True if replace original value with amount. False if original value += amount</param>
    /// <param name="force">True if add new field when needed</param>
    public void ChangeStats(UnitStatsProperty stat, int amount, bool set = false, bool force = false)
    {
        if (m_Owner == null)
        {
            return;
        }

        //Debug.Log(m_Owner + " " + stat + " : " + GetStat(stat));
        UnitStatsChangeData eventData = new UnitStatsChangeData();

        eventData.m_Unit         = m_Owner;
        eventData.m_ChangedStats = stat;

        eventData.m_BeforeChange = GetStat(stat);

        PrivateChangeStats(stat, amount, set, force);

        eventData.m_AfterChange = GetStat(stat);

        m_StatsChangedEventForDisplay.Trigger(eventData);
        m_StatsChangedEventForUnits.Trigger(m_Owner, eventData);
        //Debug.Log(m_Owner + " " + stat + " Change to: " + GetStat(stat));
    }
Exemplo n.º 3
0
    private void CheckDUR(GameEventData eventData)
    {
        //Debug.Log("Check DUR");
        UnitStatsChangeData data = eventData.CastDataType <UnitStatsChangeData>();

        if (data == null)
        {
            return;
        }

        if (data.m_ChangedStats == UnitStatsProperty.DUR)
        {
            bool negative = m_Owner.m_Data.GetStat(UnitStatsProperty.Negative) > 0;

            if (negative && data.m_AfterChange >= 0)
            {
                Destroy();
            }
            else if (!negative && data.m_AfterChange <= 0)
            {
                Destroy();
            }
        }
    }