// ========================================================================== // /* public - [Do] Function * 외부 객체가 호출 */ public void DoAddListner(string strListenEvent, IDialogueListner pListner) { if (_mapDialogueListner.ContainsKey(strListenEvent) == false) { _mapDialogueListner.Add(strListenEvent, new List <IDialogueListner>()); } else { _mapDialogueListner[strListenEvent].Clear(); // 한번 더 들어올때는 이미 파괴된 리스너라서 클리어 해줘야함 } _mapDialogueListner[strListenEvent].Add(pListner); }
private void EventSet_DialogueScene(int iDialogueScene) { if (_bEndOfDialogue) { List <IDialogueListner> listListner = _mapDialogueListner[_strCurrentEvent]; for (int i = 0; i < listListner.Count; i++) { listListner[i].IDialogueListner_OnFinishDialogue(); } return; } _iCurDialogueIndex = Mathf.Clamp(iDialogueScene, 0, _listDialogueCurrent.Count - 1); _bEndOfDialogue = iDialogueScene == _listDialogueCurrent.Count - 1; if (_mapDialogueListner.ContainsKey_PrintOnError(_strCurrentEvent) && _listDialogueCurrent.Count != 0) { List <IDialogueListner> listListner = _mapDialogueListner[_strCurrentEvent]; for (int i = 0; i < listListner.Count; i++) { SDataTable_Dialogue pDataDialogue = _listDialogueCurrent[_iCurDialogueIndex]; if (_iCurDialogueIndex == 0) { IDialogueListner pListener = listListner[i]; if (pListener != null) { pListener.IDialogueListner_OnStartDialogue(pDataDialogue); } else { Debug.LogError("왜 리스너가 없니..."); } } listListner[i].IDialogueListner_OnPlayDialogue(_listDialogueCurrent[_iCurDialogueIndex], _bEndOfDialogue); } } }