Пример #1
0
    public void SetAlarm(MonoBehaviour component, string name, AlarmDelegate func, Object data, float time, bool periodic = false)
    {
        TDataTimeMgr alarm = null;

        if ((alarm = Contains(component, name)) == null)
        {
            TDataTimeMgr dataMgr = new TDataTimeMgr();
            dataMgr.m_component     = component;
            dataMgr.m_alarmName     = name;
            dataMgr.func            = func;
            dataMgr.m_timeToExpired = time;
            dataMgr.m_time          = time;
            dataMgr.periodic        = periodic;
            dataMgr.data            = data;
            m_alarms.Add(dataMgr);
        }
        else
        {
            //Cambio los valores de la alarma
            alarm.m_timeToExpired = time;
            alarm.m_time          = time;
            alarm.func            = func;
            alarm.periodic        = periodic;
        }
    }
Пример #2
0
    public void CancelAlarm(MonoBehaviour component, string name)
    {
        TDataTimeMgr alarm = null;

        if ((alarm = Contains(component, name)) != null)
        {
            m_alarms.Remove(alarm);
        }
    }
Пример #3
0
    public float GetTimeToExpired(MonoBehaviour component, string name)
    {
        float        time  = -1;
        TDataTimeMgr alarm = null;

        if ((alarm = Contains(component, name)) != null)
        {
            time = alarm.m_timeToExpired;
        }
        return(time);
    }
Пример #4
0
    protected TDataTimeMgr Contains(MonoBehaviour component, string name)
    {
        TDataTimeMgr result = null;

        for (int i = 0; result == null && i < m_alarms.Count; ++i)
        {
            TDataTimeMgr data = m_alarms[i];
            if (component.GetInstanceID() == data.m_component.GetInstanceID() && name == data.m_alarmName)
            {
                result = data;
            }
        }
        return(result);
    }
Пример #5
0
 protected void Update()
 {
     for (int i = 0; i < m_alarms.Count; ++i)
     {
         TDataTimeMgr data = m_alarms[i];
         data.m_timeToExpired -= Time.deltaTime;
         if (data.m_timeToExpired <= 0f)
         {
             if (data.m_component != null)
             {
                 data.func(data.m_time - data.m_timeToExpired, data.data);
                 if (data.periodic)
                 {
                     data.m_timeToExpired = data.m_time;
                 }
                 else
                 {
                     m_alarms.Remove(data);
                 }
             }
         }
     }
 }