using AX.NetworkSystem;
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using AX.Network.Protocols;
using System;
using UnityEngine.SceneManagement;
using AX.Serialization;
using UnityEngine.UI;

public class ROOM_ENTER_SYNC : NetworkMessageBehaviour
{
    protected override void Execute(BinaryMessage message)
    {
        var info = message.Body.Deserialize<EnterRoomPair>();
        
        if (info.UserData.UserInfo.Id == CurrentUserInfo.mySelf.Id)
        {
            NetworkManager.Default.SendAsync("LOBBY_LEAVE_SYNC", info);
        }
        else
        {
            if (SceneManager.GetActiveScene().name != "Lobby")
            {
                CurrentUserInfo.room.UserList.Add(info.UserData);

                //添加后来进入房间UI
                if (GetComponent<MainPanel>())
                {
                    List<UserData> newenter = new List<UserData>();
                    newenter.Add(info.UserData);
                    GetComponent<MainPanel>().CreatRoleItem(newenter);
                    GetComponent<MainPanel>().ShowNewRolePanel(info.UserData);
                    //更新房间人数显示
                    var roomUserNum = transform.parent.Find("RoomInfoPanel/Panel/RoonNum/Text");
                    roomUserNum.GetComponent<Text>().text = CurrentUserInfo.room.UserList.Count.ToString() + "/32";
                }
                #region 进入房间时添加进入频道提示消息
                ChatChannel channel = new ChatChannel()
                {
                    ID = 1,
                    RoomID = info.RoomId,
                    Users = new List<UserData>(),
                    EnterUserId = info.UserData.UserInfo.Id
                };
                ChatManager.Instance.JoinPublicChannel(channel);
                #endregion
            }
            else//有人进入房间时 查找大厅中匹配的房间,将该用户加入到房间用户列表中
            {
                Transform RoomParentTrans = transform.Find("RoomParent/RoomList/Body/Viewport/Content");
                foreach (Transform t in RoomParentTrans)
                {
                    RoomManager r = t.GetComponent<RoomManager>();
                    if (r.MyRoom.Id == info.RoomId)
                    {
                        r.MyRoom.UserList.Add(info.UserData);
                    }
                }
            }
        }

    }
    
}