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

public class KICK_SOMEONE_SYNC : NetworkMessageBehaviour
{
    protected override void Execute(BinaryMessage message)
    {
        var kickuser = message.Body.Deserialize<KeyValuePair<long, long>>();
        if (CurrentUserInfo.room.Id == kickuser.Key)
        {
            //如果是被踢出的人,返回大厅
            if (CurrentUserInfo.mySelf.Id == kickuser.Value)
            {
                //准备状态下的用户被踢出时需要初始化准备状态,避免再进入房间直接就是准备状态
                UserData user = CurrentUserInfo.room.FindUserById(CurrentUserInfo.mySelf.Id);
                user.IsReady = false;
                EntitiesManager.Instance.Reset();//跳转场景时要清空实体管理器中的对象
                NetworkManager.Default.SendAsync("LOBBY_ENTER_SYNC", user);
            }

            if (GetComponent<MainPanel>())
            {
                RoleItem[] roleitem = GetComponentsInChildren<RoleItem>();
                for (int i = 0; i < roleitem.Length; i++)
                {
                    if (CurrentUserInfo.mySelf.Id != kickuser.Value)
                    {
                        UserData remove = CurrentUserInfo.room.FindUserById(kickuser.Value);
                        CurrentUserInfo.room.UserList.Remove(remove);
                        if (roleitem[i].userData.UserInfo.Id == kickuser.Value)
                        {
                            Destroy(roleitem[i].gameObject);
                        }
                        GetComponent<MainPanel>().hideuselessPanel(CurrentUserInfo.room.UserList);
                        //刷新房间信息
                        //FindObjectOfType<RoomInfoPanel>().SetRoomInfo();
                        transform.parent.Find("RoomInfoPanel").GetComponent<RoomInfoPanel>().SetRoomInfo();
                    }
                }
            }
        }

    }
}