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);
}
}
}