using CommonAI.Zone.Instance;
using CommonLang.Protocol;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CommonAIServer.Node.Interface
{
    public interface IPlayer
    {
        /// <summary>
        /// 单位全局唯一标识符
        /// </summary>
        string PlayerUUID { get; }
        /// <summary>
        /// 用于显示的名字
        /// </summary>
        string DisplayName { get; }
        /// <summary>
        /// 绑定数据
        /// </summary>
        ZoneNode.PlayerClient BindingPlayer { get; set; }

        /// <summary>
        /// 向此玩家发送战斗服事件
        /// </summary>
        /// <param name="msg"></param>
        void Send(IMessage msg);

        /// <summary>
        /// 监听接收消息
        /// </summary>
        /// <param name="handler"></param>
        void Listen(Action<object> handler);

        /// <summary>
        /// 连接时回调
        /// </summary>
        /// <param name="binding"></param>
        void OnConnected(ZoneNode.PlayerClient binding);
        /// <summary>
        /// 断线时回调
        /// </summary>
        void OnDisconnect(ZoneNode.PlayerClient binding);

        bool IsAttribute(string key);
        void SetAttribute(string key, object value);
        object GetAttribute(string key);

    }
}