123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110 |
- using System;
- using System.Collections.Generic;
- using Common.Utility.CombatEvent;
- using Core.Event.Event;
- using Excel2Json;
- using Fort23.Core;
- using Fort23.Mono;
- using Fort23.UTool;
- using UnityEngine;
- using Utility;
- public class DialogueManager : Singleton<DialogueManager>
- {
- private int currentDialogueID;
- private Action onDialogueComplete;
- DialogueMono dialogue;
- public void CustomInit(DialogueMono dialogueMono)
- {
- dialogue = dialogueMono;
- }
- private void DispatchEvent(IEventData e)
- {
- DispatchEvent dispatchEvent = e as DispatchEvent;
- StartDialogue(dispatchEvent.eventId, dispatchEvent.completed);
- }
- /// <summary>
- /// 开始对话
- /// </summary>
- public void StartDialogue(int dialogueID, Action onComplete = null)
- {
- currentDialogueID = dialogueID;
- PlayDialogue(dialogueID);
- }
- private void PlayDialogue(int dialogueID)
- {
- currentDialogueID = dialogueID;
- // 找到当前对话组
- var dialogueConfig = ConfigComponent.Instance.Get<EventConditionConfig>(dialogueID);
- if (dialogueConfig.ID == 0)
- {
- EndDialogue();
- return;
- }
- dialogue.OpenDialoguePanel(dialogueConfig.ID, null, ShowDialogueEventData.MessageShowType.Verbatim,
- (selectedOptionID) =>
- {
- if (selectedOptionID.HasValue)
- {
- // 玩家选择了选项,处理结果
- SelectOption(selectedOptionID.Value);
- }
- else
- {
- // 无选
- EndDialogue1();
- }
- });
- }
- /// <summary>
- /// 处理选项选择
- /// </summary>
- public void SelectOption(int optionID)
- {
- PlayDialogue(optionID);
- }
- /// <summary>
- /// 结束对话
- /// </summary>
- private void EndDialogue1()
- {
- EventConditionConfig dialogueConfig = ConfigComponent.Instance.Get<EventConditionConfig>(currentDialogueID);
- switch (dialogueConfig.optionType)
- {
- //选项在这里不处理 在ui层处理
- case 1:
- EndDialogue();
- break;
- //进入战斗
- case 2:
- LogTool.Log("对话结束,进入战斗");
- break;
- //获得奖励
- case 3:
- LogTool.Log("对话结束,获得奖励");
- break;
- }
- }
- /// <summary>
- /// 结束对话
- /// </summary>
- private void EndDialogue()
- {
- onDialogueComplete?.Invoke();
- }
- }
|