using dotNetty_kcp;
namespace DofLibrary
{
    /// 
    /// 游戏消息发送接口
    /// 
    public interface IMessageSender
    {
        /// 
        /// 设置 kcp 客户端,用于发送消息
        /// 
        Ukcp? Client
        {
            set;
        }
        /// 
        /// 当收到服务端发来的 PlayerEntered 事件时,设置房间中的玩家编号 
        /// 
        long Cid
        {
            set;
        }
        /// 
        /// 发送 PlayerEnter 进入房间 消息
        /// 
        /// 房间ID
        /// 玩家ID
        /// 玩家昵称
        /// 玩家国家
        void PlayerEnter(string roomId, string uid, string nickName, string country, string appId, string token);
        /// 
        /// 发送 LevelPrepared 关卡准备完毕 消息
        /// 
        /// 关卡ID
        void LevelPrepared(string levelId);
        /// 
        /// 发送 PointFound 找到点位 消息
        /// 
        /// 当前关卡ID
        /// 点位编号
        void PointFound(string levelId, int pointId, float combo);
        /// 
        /// 发送 LevelEnd 关卡结束 消息
        /// 
        /// 关卡ID
        void LevelEnd(string levelId);
        /// 
        /// 发送 AllLevelEnd 所有关卡结束 消息
        /// 
        void AllLevelEnd(float timeSpent);
        /// 
        /// 发送 玩家中途离开房间 消息
        /// 
        void PlayerLeave();
        
        /// 
        /// 发送心跳包
        /// 
        void Heartbeat(long timestamp);
    }
}