internal void CheckDialog(Npc p_npc) { m_text = null; m_randomList.Clear(); for (Int32 i = 0; i < m_texts.Length; i++) { m_texts[i].CheckCondition(p_npc); if (m_texts[i].State == EDialogState.NORMAL) { if (!m_randomText) { m_text = m_texts[i]; break; } m_randomList.Add(m_texts[i]); } } if (m_randomText && m_randomList.Count > 0) { m_text = m_randomList[Random.Range(0, m_randomList.Count - 1)]; } if (m_text == null) { throw new InvalidOperationException("condition check failed, no dialog texts found! dialog " + m_id); } for (Int32 j = 0; j < m_entries.Length; j++) { m_entries[j].CheckEntry(p_npc); } }
public Dialog(NpcConversationStaticData.Dialog p_dialogData) { if (p_dialogData.m_texts == null || p_dialogData.m_texts.Length == 0) { throw new InvalidDataException("No DialogTexts defined in dialog " + p_dialogData.m_id); } m_randomList = new List <DialogText>(); m_id = p_dialogData.m_id; m_randomText = p_dialogData.m_randomText; m_feature = p_dialogData.m_feature; m_fakeNpcID = p_dialogData.m_fakeNpcID; m_hideBackButton = p_dialogData.m_hideBackButton; m_hideNpcsAndCloseButton = p_dialogData.m_hideNpcsAndCloseButton; m_hideNpcAndPortrait = p_dialogData.m_hideNpcAndPortrait; m_backToDialogId = p_dialogData.m_backToDialodId; if (p_dialogData.m_entries != null && p_dialogData.m_entries.Length > 0) { m_entries = new DialogEntry[p_dialogData.m_entries.Length]; for (Int32 i = 0; i < p_dialogData.m_entries.Length; i++) { SaveNeededTokens(p_dialogData.m_entries[i]); m_entries[i] = new DialogEntry(p_dialogData.m_entries[i]); } } else { m_entries = new DialogEntry[0]; } m_texts = new DialogText[p_dialogData.m_texts.Length]; for (Int32 j = 0; j < p_dialogData.m_texts.Length; j++) { SaveNeededTokens(p_dialogData.m_texts[j]); m_texts[j] = new DialogText(p_dialogData.m_texts[j]); } }
public DialogEntry(NpcConversationStaticData.DialogEntry p_entyData) { m_staticData = p_entyData; if (p_entyData.m_texts == null) { throw new InvalidDataException("The EntryData must contains at least 1 DialogText"); } m_texts = new DialogText[p_entyData.m_texts.Length]; for (Int32 i = 0; i < p_entyData.m_texts.Length; i++) { m_texts[i] = new DialogText(p_entyData.m_texts[i]); } if (m_staticData.m_functions == null || m_staticData.m_functions.Length == 0) { throw new InvalidDataException("The Entry has no DialogFunction!!! : " + m_staticData.m_texts[0].m_locaKey); } }
internal void CheckEntry(Npc p_npc) { DialogCondition[] conditions = m_staticData.m_conditions; m_state = EDialogState.NORMAL; if (conditions != null) { for (Int32 i = 0; i < conditions.Length; i++) { EDialogState edialogState = conditions[i].CheckCondition(p_npc); if (edialogState > m_state) { m_state = edialogState; if (m_state == EDialogState.HIDDEN) { break; } } } } m_text = null; if (m_state != EDialogState.HIDDEN) { for (Int32 j = 0; j < m_texts.Length; j++) { m_texts[j].CheckCondition(p_npc); if (m_texts[j].State != EDialogState.HIDDEN) { m_text = m_texts[j]; break; } } if (m_text == null) { throw new InvalidDataException("All DialogText Conditions failed!!!!"); } } }