using CommonAI.Zone.Helper; using CommonAI.Zone.Instance; using System; using System.Collections.Generic; using System.Linq; using System.Text; using XmdsCommon.Plugin; using XmdsCommonServer.Plugin; using XmdsServerNode.Node.Interface; namespace XmdsServerNode.Node { public class ZoneNodeServerFactory : XmdsZoneServerFactory { private IServerProxy mProxy; public ZoneNodeServerFactory(IServerProxy proxy) { mProxy = proxy; } public override CommonAI.Zone.Helper.IQuestAdapter CreateQuestAdapter(CommonAI.Zone.Instance.InstanceZone zone) { XmdsQuestAdapterServerProfile adapter = new XmdsQuestAdapterServerProfile(zone, mProxy); return adapter; } } public class XmdsQuestAdapterServerProfile : IQuestAdapter { private readonly IServerProxy mProxy; private const string EVENT_TYPE = "taskEvent"; public XmdsQuestAdapterServerProfile(InstanceZone zone, IServerProxy proxy) : base(zone) { mProxy = proxy; } public override void Dispose() { base.Dispose(); } private void SendToGameServer(string playerUUID, object msg) { if (mProxy != null) { mProxy.SendToGameServer(playerUUID, EVENT_TYPE, msg); } } private void SendMsgToPlayer(string playerUUID, CommonLang.Protocol.IMessage msg) { if (mProxy != null) { mProxy.SendMsgToPlayer(playerUUID, msg); } } /// /// 向游戏服接受任务 /// /// /// /// public override void DoAcceptQuest(string playerUUID, string quest, string args) { var msg = new { eventName = "AcceptQuest", playerId = playerUUID, id = quest, args = args }; SendToGameServer(playerUUID, msg); } //向玩家发送消息 public override void DoSendMsgToPlayer(string playerUUID, CommonLang.Protocol.IMessage msg) { SendMsgToPlayer(playerUUID, msg); } /// /// 向游戏服提交任务 /// /// /// /// public override void DoCommitQuest(string playerUUID, string quest, string args) { var msg = new { eventName = "CommitQuest", playerId = playerUUID, id = quest, args = args }; SendToGameServer(playerUUID, msg); } /// /// 向游戏服放弃任务 /// /// /// /// public override void DoDropQuest(string playerUUID, string quest, string args) { var msg = new { eventName = "DropQuest", playerId = playerUUID, id = quest, args = args }; SendToGameServer(playerUUID, msg); } /// /// 向游戏服更新任务状态 /// /// /// /// /// public override void DoUpdateQuestStatus(string playerUUID, string quest, string key, string value) { var msg = new { eventName = "UpdateQuestStatus", playerId = playerUUID, id = quest, key = key, value = value }; SendToGameServer(playerUUID, msg); OnQuestStatusChangedHandler(playerUUID, quest, key, value); } } }