void OnMatchListSlotdelegate()
    {
        for (int i = 0; i < PvpGrid.transform.childCount; i++)
        {
            if (i >= EnemyList.Count)
            {
                PvpGrid.transform.GetChild(i).gameObject.SetActive(false);
                continue;
            }

            GameObject slotGo = PvpGrid.transform.GetChild(i).gameObject;
            Transform  slotTf = slotGo.transform;
            slotGo.SetActive(true);

            slotTf.FindChild("win_reward").gameObject.SetActive(MyTopRank > EnemyList[i].Rank);  //상대승리시 최고래밸을 달성할수있을시 ..
            if (slotTf.FindChild("win_reward").gameObject.activeSelf)
            {
                slotTf.FindChild("win_reward/label").GetComponent <UILabel>().text = string.Format(_LowDataMgr.instance.GetStringCommon(1259), (MyTopRank - EnemyList[i].Rank) * _LowDataMgr.instance.GetEtcTableValue <uint>(EtcID.PvPfirstgetcash));
            }
            slotTf.FindChild("lv").GetComponent <UILabel>().text           = string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(14), EnemyList[i].Level);
            slotTf.FindChild("battle").GetComponent <UILabel>().text       = string.Format("{0} {1:#,#}", _LowDataMgr.instance.GetStringCommon(47), EnemyList[i].Attack);
            slotTf.FindChild("name").GetComponent <UILabel>().text         = string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(155), EnemyList[i].Name);
            slotTf.FindChild("rank").GetComponent <UILabel>().text         = string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(1020), EnemyList[i].Rank);
            slotTf.FindChild("class").GetComponent <UISprite>().spriteName = UIHelper.GetClassIcon((uint)EnemyList[i].Type);

            if ((ulong)EnemyList[i].RoleId == CharInven.GetCharUUID())
            {
                slotTf.FindChild("win_reward").gameObject.SetActive(false);
                slotTf.FindChild("BtnStart").gameObject.SetActive(false);
            }
            else
            {
                slotTf.FindChild("BtnStart").gameObject.SetActive(true);
            }


            int idx = i;
            EventDelegate.Set(slotTf.FindChild("BtnStart").GetComponent <UIButton>().onClick, delegate()
            {
                NetData._PartnerData par_1 = CharInven.GetEquipPartner(1);
                NetData._PartnerData par_2 = CharInven.GetEquipPartner(2);
                EnemyPartners = new int[] {
                    (int)(par_1 != null ? par_1._partnerIndex : 0),
                    (int)(par_2 != null ? par_2._partnerIndex : 0)
                };

                EnemyInfo = EnemyList[idx];

                if (ResetCount >= 1)
                {
                    if (ResetCount - DailyCount == 0)
                    {
                        OnClickBuyBtn();
                        return;
                    }
                }
                else
                {
                    if (MaxDailyCount <= DailyCount)
                    {
                        OnClickBuyBtn();
                        return;
                    }
                }

                NetworkClient.instance.SendPMsgArenaFightStartC(EnemyPartners, EnemyInfo.RoleId, EnemyInfo.Rank);
            });
        }

        PvpGrid.repositionNow = true;


        //if (EnemyList.Count <= arr)
        //{
        //    go.SetActive(false);
        //    return;
        //}
        //go.SetActive(true);

        //Transform tf = go.transform;

        //tf.FindChild("win_reward").gameObject.SetActive(MyTopRank > EnemyList[arr].Rank);  //상대승리시 최고래밸을 달성할수있을시 ..
        //if (tf.FindChild("win_reward").gameObject.activeSelf)
        //{
        //    tf.FindChild("win_reward/label").GetComponent<UILabel>().text = string.Format(_LowDataMgr.instance.GetStringCommon(1259), (MyTopRank - EnemyList[arr].Rank) * _LowDataMgr.instance.GetEtcTableValue<uint>(EtcID.PvPfirstgetcash));
        //}
        //tf.FindChild("lv").GetComponent<UILabel>().text = string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(14), EnemyList[arr].Level);
        //tf.FindChild("battle").GetComponent<UILabel>().text = string.Format("{0} {1:#,#}", _LowDataMgr.instance.GetStringCommon(47), EnemyList[arr].Attack);
        //tf.FindChild("name").GetComponent<UILabel>().text = string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(155), EnemyList[arr].Name);
        //tf.FindChild("rank").GetComponent<UILabel>().text = string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(1020), EnemyList[arr].Rank);
        //tf.FindChild("class").GetComponent<UISprite>().spriteName = UIHelper.GetClassIcon((uint)EnemyList[arr].Type);

        //if ((ulong)EnemyList[arr].RoleId == CharInven.GetCharUUID())
        //{
        //    tf.FindChild("win_reward").gameObject.SetActive(false);
        //    tf.FindChild("BtnStart").gameObject.SetActive(false);
        //}
        //else
        //    tf.FindChild("BtnStart").gameObject.SetActive(true);


        //EventDelegate.Set(tf.FindChild("BtnStart").GetComponent<UIButton>().onClick, delegate () {

        //    NetData._PartnerData par_1 = CharInven.GetEquipPartner(1);
        //    NetData._PartnerData par_2 = CharInven.GetEquipPartner(2);
        //    EnemyPartners = new int[] {
        //                    (int)(par_1 != null ? par_1._partnerIndex : 0),
        //                    (int)(par_2 != null ? par_2._partnerIndex : 0)
        //                };

        //    EnemyInfo = EnemyList[arr];

        //    if (ResetCount >= 1)
        //    {
        //        if(ResetCount - DailyCount == 0)
        //        {
        //            OnClickBuyBtn();
        //            return;
        //        }
        //    }
        //    else
        //    {
        //        if (MaxDailyCount <= DailyCount)
        //        {
        //            OnClickBuyBtn();
        //            return;
        //        }
        //    }

        //    NetworkClient.instance.SendPMsgArenaFightStartC(EnemyPartners, EnemyInfo.RoleId, EnemyInfo.Rank);
        //});

        /*
         *
         *
         *      if (ResetCount >= 1)
         *      {
         *          FightCountLabel.text = string.Format(_LowDataMgr.instance.GetStringCommon(1255), ResetCount - DailyCount, MaxDailyCount);    //이떄 한개만
         *          BuyBtn.gameObject.SetActive(ResetCount - DailyCount == 0);
         *
         *      }
         *      else
         *      {
         *          FightCountLabel.text = string.Format(_LowDataMgr.instance.GetStringCommon(1255), MaxDailyCount - DailyCount, MaxDailyCount);
         *          BuyBtn.ga
         */
    }
    public override void NetworkData(params object[] proto)
    {
        base.NetworkData(proto);

        switch ((Sw.MSG_DEFINE)proto[0])
        {
        case Sw.MSG_DEFINE._MSG_ARENA_INFO_S:    //금일 횟수
            DailyCount    = (int)proto[1];
            MaxDailyCount = (int)proto[2];
            ResetCount    = (int)proto[3];
            MyTopRank     = (int)proto[4];

            ArenaGameState.MyTopRank = MyTopRank;

            if (ResetCount >= 1)
            {
                FightCountLabel.text = string.Format(_LowDataMgr.instance.GetStringCommon(1255), ResetCount - DailyCount, MaxDailyCount);        //이떄 한개만
                BuyBtn.gameObject.SetActive(ResetCount - DailyCount == 0);
            }
            else
            {
                FightCountLabel.text = string.Format(_LowDataMgr.instance.GetStringCommon(1255), MaxDailyCount - DailyCount, MaxDailyCount);
                BuyBtn.gameObject.SetActive(MaxDailyCount - DailyCount == 0);
            }



            //FightCountLabel.text = string.Format(_LowDataMgr.instance.GetStringCommon(1255), MaxDailyCount - DailyCount, MaxDailyCount);

            // BuyBtn.gameObject.SetActive(MaxDailyCount - DailyCount == 0);
            //if (CharInven.ArenaRanking <= 0)//최초 진입일 것이다.
            //{
            //NetworkClient.instance.SendPMsgArenaRankInfoC();
            //}
            //else
            //{
            //    transform.FindChild("PvpPanel/info/rank_label").GetComponent<UILabel>().text =
            //        string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(521), CharInven.ArenaRanking);

            //}

            break;

        case Sw.MSG_DEFINE._MSG_ARENA_RANK_INFO_S:    //나의 랭킹 정보
        {
            transform.FindChild("PvpPanel/info/rank_label").GetComponent <UILabel>().text = string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(521), CharInven.ArenaRanking);

            TodayPoints.text = "0";

            //오늘획득가능한보상...
            List <PVP.PVPAutoRewardInfo> autoList = _LowDataMgr.instance.GetPvpAutoRewardList();
            for (int i = 0; i < autoList.Count; i++)
            {
                if (autoList[i].RankMax < CharInven.ArenaRanking || CharInven.ArenaRanking < autoList[i].RankMin)
                {
                    continue;
                }

                TodayPoints.text = autoList[i].RewardValue.ToString();
                break;
            }


            NetworkClient.instance.SendPMsgArenaMatchListC(0);          //서버에서 알아서보내준다함.
        }
        break;

        case Sw.MSG_DEFINE._MSG_ARENA_MATCH_LIST_S:    //대상 리스트 받음

            // 상위 유저 8명 , 나 , 하위유저 2명 => 11명 보여줌
            EnemyList = (List <NetData.ArenaUserInfo>)proto[1];

            //내껏도 추가해줭
            NetData.ArenaUserInfo myInfo = new NetData.ArenaUserInfo((long)CharInven._charUUID, CharInven._charName, (int)CharInven._userCharIndex, (int)CharInven._Level, (int)CharInven._VipLevel, (int)CharInven._TotalAttack, CharInven.ArenaRanking, CharInven._GuildId);
            EnemyList.Insert(EnemyList.Count, myInfo);

            //정렬타임
            EnemyList.Sort(delegate(NetData.ArenaUserInfo a, NetData.ArenaUserInfo b)
            {
                if (a.Rank > b.Rank)
                {
                    return(1);
                }
                else if (b.Rank > a.Rank)
                {
                    return(-1);
                }
                return(0);
            });

            OnMatchListSlotdelegate();

            break;

        case Sw.MSG_DEFINE._MSG_ARENA_MATCH_INFO_S:    //게임 시작 로딩으로 넘기는 곳
            ArenaGameState.TargetRank   = EnemyInfo.Rank;
            ArenaGameState.MyRank       = CharInven.ArenaRanking;
            ArenaGameState.TargetAttack = EnemyInfo.Attack;

            SceneManager.instance.SetSubLoadingPanelParams((int)NetData.instance.GetUserInfo()._TotalAttack, EnemyInfo.Attack, MyGuildName, EnemyInfo.GuildName);
            SceneManager.instance.ShowLoadingTipPanel(true, GAME_MODE.ARENA, () =>
            {
                SceneManager.instance.ActionEvent(_ACTION.PLAY_ARENA);
            });

            Hide();
            break;

        case Sw.MSG_DEFINE._MSG_ARENA_FIGHT_LIST_S: //유아이에 있을 경우 한번만 실행하도록 한다 이후에는 팝업만 껏다 켜줌
            IsSendFightList = true;                 //막아줄 변수
            List <NetData.ArenaFightInfo> list = (List <NetData.ArenaFightInfo>)proto[1];
            UIHelper.CreateSlotItem(true, list.Count, RecordSlotPrefab.transform, RecordGrid.transform, delegate(Transform tf, int i)
            {
                if (list.Count <= i)
                {
                    tf.gameObject.SetActive(false);
                    return;
                }

                tf.gameObject.SetActive(true);
                tf.FindChild("battle").GetComponent <UILabel>().text = SceneManager.instance.NumberToString(list[i].BattlePoint);    //list[i].BattlePoint.ToString(); // ToString("#,##");
                tf.FindChild("name").GetComponent <UILabel>().text   = list[i].UserName;
                //tf.FindChild("rank").GetComponent<UILabel>().text = string.Format("{0}", list[i].Ranking);
                //tf.FindChild("result").GetComponent<UILabel>().text = _LowDataMgr.instance.GetStringCommon((uint)(list[i].FightResult == (int)Sw.FIGHT_RESULT.FIGHT_RESULT_WIN ? 69 : 70));

                //승리.패배시 슬롯색이달라짐
                bool isWin = list[i].FightResult == (int)Sw.FIGHT_RESULT.FIGHT_RESULT_WIN;
                tf.FindChild("winBg").gameObject.SetActive(isWin);
                tf.FindChild("loseBg").gameObject.SetActive(!isWin);

                tf.FindChild("winResult").gameObject.SetActive(isWin);
                tf.FindChild("loseResult").gameObject.SetActive(!isWin);

                //랭킹변화도 표시해줘야함
                //녹색 :3ddb80
                //빨강: ed353a
                string rank = "";
                if (isWin && list[i].Ranking != list[i].WinRanking)
                {
                    rank = string.Format("{0}[ed353a](-{1})[-]", list[i].WinRanking, list[i].Ranking - list[i].WinRanking);
                }
                else
                {
                    rank = string.Format("{0}", list[i].Ranking);
                }

                //if (CharInven.ArenaRanking == list[i].Ranking)
                //    rank = string.Format("{0}", list[i].Ranking);
                //else if (CharInven.ArenaRanking > list[i].Ranking)
                //    rank = string.Format("{0}[3ddb80](+{1})[-]", list[i].Ranking, CharInven.ArenaRanking - list[i].Ranking);
                //else
                //    rank = string.Format("{0}[ed353a](-{1})[-]", list[i].Ranking, list[i].Ranking - CharInven.ArenaRanking);

                tf.FindChild("rank").GetComponent <UILabel>().text = rank;
            });

            RecordGrid.repositionNow = true;
            BattleRecordPopup.SetActive(true);
            break;

        case Sw.MSG_DEFINE._MSG_ARENA_RANK_LIST_S:    //랭킹 리스트
            List <NetData.ArenaUserInfo> addList = (List <NetData.ArenaUserInfo>)proto[1];
            List <ulong> guildIdList             = new List <ulong>();
            for (int i = 0; i < addList.Count; i++)
            {
                RankList.Add(addList[i]);
                guildIdList.Add(addList[i].GuildId);
            }

            NetworkClient.instance.SendPMsgGuildNameQueryC(guildIdList);
            break;

        case Sw.MSG_DEFINE._MSG_GUILD_NAME_QUERY_S:
            Sw.PMsgGuildNameQueryS protocol = (Sw.PMsgGuildNameQueryS)proto[1];
            for (int i = 0; i < protocol.UnCount; i++)
            {
                ulong  guildId = protocol.CGuildInfo[i].UllGuildId;
                string guild   = string.IsNullOrEmpty(protocol.CGuildInfo[i].SzGuildName) ? "" : string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(8), protocol.CGuildInfo[i].SzGuildName);
                for (int j = 0; j < RankList.Count; j++)
                {
                    if (!string.IsNullOrEmpty(RankList[j].GuildName) || RankList[j].GuildId != guildId)
                    {
                        continue;
                    }

                    if (CharInven.ArenaRanking == RankList[j].Rank)    //유저의 길드 이름이다.
                    {
                        MyGuildName = guild;
                    }

                    RankList[j].SetGuildName(guild);
                    break;
                }
            }

            if (protocol.UnCount != 50 || RankList.Count == 100)
            {
                RankPaging.RefreshSlot(RankList.Count);
                if (!RankPopup.activeSelf)
                {
                    RankPopup.SetActive(true);

                    //유저의 정보
                    transform.FindChild("RankPopup/HeroRank/name").GetComponent <UILabel>().text                = CharInven._charName;
                    transform.FindChild("RankPopup/HeroRank/guild_name").GetComponent <UILabel>().text          = MyGuildName;
                    transform.FindChild("RankPopup/HeroRank/rank").GetComponent <UILabel>().text                = CharInven.ArenaRanking.ToString();//string.Format("{0} {1}", _LowDataMgr.instance.GetStringCommon(521), CharInven.ArenaRanking);
                    transform.FindChild("RankPopup/HeroRank/class").GetComponent <UISprite>().spriteName        = UIHelper.GetClassIcon(CharInven._userCharIndex);
                    transform.FindChild("RankPopup/HeroRank/face").GetComponent <UISprite>().spriteName         = _LowDataMgr.instance.GetCharcterData(CharInven._userCharIndex).PortraitId;
                    transform.FindChild("RankPopup/HeroRank/Bestrank/rank_label").GetComponent <UILabel>().text = MyTopRank.ToString();
                    transform.FindChild("RankPopup/HeroRank/guild_name").GetComponent <UILabel>().text          = string.Format("{0} {1:#,#}", _LowDataMgr.instance.GetStringCommon(47), CharInven._TotalAttack);
                }
            }
            break;

        case Sw.MSG_DEFINE._MSG_ARENA_RESET_TIMES_S:    //차관 금일 횟수 초기화
            DailyCount    = (int)proto[1];
            MaxDailyCount = (int)proto[2];
            ResetCount    = (int)proto[3];

            if (ResetCount >= 1)
            {
                FightCountLabel.text = string.Format(_LowDataMgr.instance.GetStringCommon(1255), ResetCount - DailyCount, MaxDailyCount);        //이떄 한개만
                BuyBtn.gameObject.SetActive(ResetCount - DailyCount == 0);
            }
            else
            {
                FightCountLabel.text = string.Format(_LowDataMgr.instance.GetStringCommon(1255), MaxDailyCount - DailyCount, MaxDailyCount);
                BuyBtn.gameObject.SetActive(MaxDailyCount - DailyCount == 0);
            }


            //NetworkClient.instance.SendPMsgArenaFightStartC(EnemyPartners, EnemyInfo.RoleId, EnemyInfo.Rank);//바로 시작.
            break;
        }
    }