Ejemplo n.º 1
0
    /// <summary> 소탕 보상 아이템 응답 </summary>
    public void OnPMsgSweepReward(NetData.SweepSlotData slotData)
    {
        SweepSlotList.Insert(0, slotData);

        TempCoroutine.instance.FrameDelay(0.2f, () => {
            SweepPaging.RefreshSlot(SweepSlotList.Count);
            SoundManager.instance.PlaySfxSound(eUISfx.UI_reward_popup, false);
        });
    }
Ejemplo n.º 2
0
    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;
        }
    }