using CommonAI.Zone.Instance; using CommonLang; using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace CommonAI.Zone.Helper { public enum QuestState : byte { Uncharted = 0, Accepted = 1, Commited = 2, } public class QuestData { public readonly string QuestID; public QuestState State = QuestState.Uncharted; public HashMap<string, string> Attributes = new HashMap<string, string>(); public QuestData(string id) { this.QuestID = id; } } public abstract class IQuestAdapter : IDisposable { private InstanceZone mZone; public IQuestAdapter(InstanceZone zone) { mZone = zone; } public InstanceZone Zone { get { return mZone; } } /// <summary> /// 【第三方系统通知】任务已接受 /// </summary> /// <param name="playerUUID"></param> /// <param name="quest"></param> public virtual void OnQuestAcceptedHandler(string playerUUID, string quest) { mZone.gs_OnQuestAccepted(playerUUID, quest); } /// <summary> /// 【第三方系统通知】任务已完成 /// </summary> /// <param name="playerUUID"></param> /// <param name="quest"></param> public virtual void OnQuestCommittedHandler(string playerUUID, string quest) { mZone.gs_OnQuestCommitted(playerUUID, quest); } /// <summary> /// 【第三方系统通知】任务已放弃 /// </summary> /// <param name="playerUUID"></param> /// <param name="quest"></param> public virtual void OnQuestDroppedHandler(string playerUUID, string quest) { mZone.gs_OnQuestDropped(playerUUID, quest); } /// <summary> /// 【第三方系统通知】任务状态已改变 /// </summary> /// <param name="playerUUID"></param> /// <param name="quest"></param> /// <param name="key"></param> /// <param name="value"></param> public virtual void OnQuestStatusChangedHandler(string playerUUID, string quest, string key, string value) { mZone.gs_OnQuestStatusChanged(playerUUID, quest, key, value); } /// <summary> /// 【战斗模块请求】接受任务 /// </summary> /// <param name="playerUUID"></param> /// <param name="quest"></param> /// <param name="args"></param> public abstract void DoAcceptQuest(string playerUUID, string quest, string args); //向玩家发送消息 public abstract void DoSendMsgToPlayer(string playerUUID, CommonLang.Protocol.IMessage msg); /// <summary> /// 【战斗模块请求】 /// </summary> /// <param name="playerUUID"></param> /// <param name="quest"></param> /// <param name="args"></param> public abstract void DoCommitQuest(string playerUUID, string quest, string args); /// <summary> /// 【战斗模块请求】 /// </summary> /// <param name="playerUUID"></param> /// <param name="quest"></param> /// <param name="args"></param> public abstract void DoDropQuest(string playerUUID, string quest, string args); /// <summary> /// 【战斗模块请求】 /// </summary> /// <param name="playerUUID"></param> /// <param name="quest"></param> /// <param name="key"></param> /// <param name="value"></param> public abstract void DoUpdateQuestStatus(string playerUUID, string quest, string key, string value); public virtual void Dispose() { } } }