Пример #1
0
        public override void OnEnd(List <IDialogueEventData> lstData)
        {
            if (lstData.TryGetData(out DialogueEventData_Delay hDelayData, out var nOutIndex))
            {
                int       nDelayIndex = -1;
                DelayData hDelay      = default;

                for (int i = 0; i < hDelayData.m_lstDelayData.Count; i++)
                {
                    if (hDelayData.m_lstDelayData[i].m_hKey == this)
                    {
                        hDelay      = hDelayData.m_lstDelayData[i];
                        nDelayIndex = i;
                        break;
                    }
                }

                if (nDelayIndex < 0 || hDelay.m_lstWaitRunEvent.Count <= 0)
                {
                    goto End;
                }

                for (int i = 0; i < hDelay.m_lstWaitRunEvent.Count; i++)
                {
                    var hEvent = hDelay.m_lstWaitRunEvent[i].m_hEvent;
                    if (hEvent != null)
                    {
                        hEvent.OnStart(lstData);
                    }
                }

                hDelay.m_lstWaitRunEvent.Clear();

                if (hDelayData.m_lstFinishDelayData == null)
                {
                    hDelayData.m_lstFinishDelayData = new Stack <DelayData>();
                }

                hDelayData.m_lstDelayData.RemoveAt(nDelayIndex);
                hDelayData.m_lstFinishDelayData.Push(hDelay);

                lstData[nOutIndex] = hDelayData;
            }

End:
            for (int i = 0; i < m_arrDelayEvent.Length; i++)
            {
                var hEvent = m_arrDelayEvent[i];
                if (hEvent.m_hEvent != null)
                {
                    hEvent.m_hEvent.OnEnd(lstData);
                }
            }

            ;

            base.OnEnd(lstData);
        }
Пример #2
0
#pragma warning restore 0649
        #endregion

        #endregion

        #region Base - Override

        public override void OnStart(List <IDialogueEventData> lstData)
        {
            base.OnStart(lstData);

            DelayData hData;

            if (lstData.TryGetData(out DialogueEventData_Delay hDelayData, out var nIndex))
            {
                // Reuse old delay data.
                if (hDelayData.m_lstFinishDelayData != null && hDelayData.m_lstFinishDelayData.Count > 0)
                {
                    hData        = hDelayData.m_lstFinishDelayData.Pop();
                    hData.m_hKey = this;
                    hData.m_lstWaitRunEvent.Clear();
                    hData.m_lstWaitRunEvent.AddRange(m_arrDelayEvent);
                }
                else
                {
                    hData = new DelayData
                    {
                        m_hKey            = this,
                        m_lstWaitRunEvent = new List <EventDelayData>(m_arrDelayEvent)
                    };
                }

                hDelayData.m_lstDelayData.Add(hData);
                lstData[nIndex] = hDelayData;
            }
            else
            {
                hData = new DelayData
                {
                    m_hKey            = this,
                    m_lstWaitRunEvent = new List <EventDelayData>(m_arrDelayEvent)
                };

                var lstDelayData = new List <DelayData>();
                lstDelayData.Add(hData);

                lstData.Add(new DialogueEventData_Delay
                {
                    m_lstDelayData = lstDelayData,
                });
            }
        }
    protected virtual void Start()
    {
        GameObject temp;    // temporary storing place for possibly null objects

        if ((acornCtrl = FindObjectOfType <UIAcornController>()) == null)
        {
            Debug.Log(this.GetType().Name + " could not find a UIAcornController in the scene!");
        }

        temp = GameObject.FindGameObjectWithTag("MainCamera");
        if (temp == null)
        {
            Debug.Log(this.GetType().Name + " could not find a MainCamera in the scene!");
        }
        else
        {
            camera = temp.GetComponent <Camera>();
        }

        temp = GameObject.FindGameObjectWithTag("PauseMenu");
        if (temp == null)
        {
            Debug.Log(this.GetType().Name + " could not find a PauseMenu in the scene!");
        }
        else
        {
            pauseMenu = temp.transform;
            pauseMenu.gameObject.SetActive(false);
        }

        temp = GameObject.FindGameObjectWithTag("ReadyText");
        if (temp == null)
        {
            Debug.Log(this.GetType().Name + " could not find a ReadyText found in the scene!");
        }
        else
        {
            getReadyText = temp.GetComponent <Text>();
        }

        delay           = new DelayData();
        delay.startTime = Time.time + delay.delay;
    }
Пример #4
0
 public TArray(UIntPtr address) : base(address)
 {
     Items     = new List <T>();
     DelayInfo = new DelayData();
     ReadInfo  = new ReadData();
 }
Пример #5
0
        public override void OnExecute(List <IDialogueEventData> lstData)
        {
            base.OnExecute(lstData);

            if (!lstData.TryGetData(out DialogueEventData_Time hTimeData) || !lstData.TryGetData(out DialogueEventData_Delay hDelayData, out var nOutIndex))
            {
                return;
            }

            if (m_arrDelayEvent == null || m_arrDelayEvent.Length <= 0)
            {
                return;
            }


            int       nDelayIndex = -1;
            DelayData hDelay      = default;

            for (int i = 0; i < hDelayData.m_lstDelayData.Count; i++)
            {
                if (hDelayData.m_lstDelayData[i].m_hKey == this)
                {
                    hDelay      = hDelayData.m_lstDelayData[i];
                    nDelayIndex = i;
                    break;
                }
            }

            if (nDelayIndex < 0)
            {
                return;
            }

            var lstWaitRun = hDelay.m_lstWaitRunEvent;

            for (int i = 0; i < m_arrDelayEvent.Length; i++)
            {
                var hDelayEvent = m_arrDelayEvent[i];
                if (hDelayEvent.m_hEvent == null)
                {
                    if (lstWaitRun.Contains(hDelayEvent))
                    {
                        lstWaitRun.Remove(hDelayEvent);
                    }

                    continue;
                }

                if (!lstWaitRun.Contains(hDelayEvent))
                {
                    hDelayEvent.m_hEvent.OnExecute(lstData);
                    continue;
                }

                if (Time.time >= hTimeData.m_fCurrentDialogueStartTime + hDelayEvent.m_fDelayTime)
                {
                    hDelayEvent.m_hEvent.OnStart(lstData);

                    lstWaitRun.Remove(hDelayEvent);
                }
            }

            hDelay.m_lstWaitRunEvent = lstWaitRun;
            hDelayData.m_lstDelayData[nDelayIndex] = hDelay;
            lstData[nOutIndex] = hDelayData;
        }