Ejemplo n.º 1
0
    public override void OnOpen()
    {
        base.OnOpen();
        //重设分数
        leftGrade  = 0;
        rightGrade = 0;
        SetGrade(0, 0);
        //注册对手分数变更事件
        UserEventManager.RegisterEvent("rep_message_updata_opponent_grade", (param) =>
        {
            rep_message_updata_opponent_grade repMsg = Client.Deserialize(rep_message_updata_opponent_grade.Parser, (byte[])param) as rep_message_updata_opponent_grade;
            SetGrade(0, repMsg.Grade - rightGrade);
        });

        //注册局结束事件
        UserEventManager.RegisterEvent("rep_message_innings_end", (param) =>
        {
            rep_message_innings_end repMsg = Client.Deserialize(rep_message_innings_end.Parser, (byte[])param) as rep_message_innings_end;
            if (repMsg.HasInnings)
            {
                CommonRequest.ReqSatrtReady();
            }
        });
        //注册游戏结束事件
        UserEventManager.RegisterEvent("rep_message_game_end", (param) =>
        {
            rep_message_game_end repMsg = Client.Deserialize(rep_message_game_end.Parser, (byte[])param) as rep_message_game_end;
            UIManager.OpenUI("Prefabs/GameEndUI", UIManager.Instance.GameUIRoot, (uiObj) =>
            {
                UIGameEnd uiGameEnd = uiObj.transform.GetComponent <UIGameEnd>();
                uiGameEnd.RefreshUI(repMsg);
                //关闭UIPlay
                this.Close();
            });
        });
    }
Ejemplo n.º 2
0
    //刷新界面
    public void RefreshUI(rep_message_game_end _endInfo)
    {
        this.endInfo = _endInfo;
        //我的头像
        if (!string.IsNullOrEmpty(PlayerData.userIcon))
        {
            var headIcon = transform.Find("PlayerInfo/LeftHeadImage/Mask/Image").GetComponent <Image>();
            StartCoroutine(Function.DownloadImage(headIcon, PlayerData.userIcon));
        }
        //对手头像
        struct_player_info opponentInfo = this.endInfo.PlayerInfo;

        if (!string.IsNullOrEmpty(opponentInfo.UserIcon))
        {
            var headIcon = transform.Find("PlayerInfo/RightHeadImage/Mask/Image").GetComponent <Image>();
            StartCoroutine(Function.DownloadImage(headIcon, opponentInfo.UserIcon));
        }
        //名字
        transform.Find("PlayerInfo/LeftHeadImage/Name").GetComponent <Text>().text  = PlayerData.userName;
        transform.Find("PlayerInfo/RightHeadImage/Name").GetComponent <Text>().text = endInfo.PlayerInfo.UserName;

        //定时器依次展示各局分数
        float leftSum  = 0;
        float rightSum = 0;

        for (int i = 0; i < endInfo.LeftGrade.Count; i++)
        {
            //玩法名
            play_data playData = PlayDataConfig.Instance.GetDataByID(endInfo.PlayList[i]);
            transform.Find(string.Format("GradeList/{0}/Name", i)).GetComponent <Text>().text = playData.Name;

            leftSum  += endInfo.LeftGrade[i];
            rightSum += endInfo.RightGrade[i];
            transform.Find(string.Format("GradeList/{0}/LeftText", i)).GetComponent <Text>().text  = endInfo.LeftGrade[i].ToString();
            transform.Find(string.Format("GradeList/{0}/RightText", i)).GetComponent <Text>().text = endInfo.RightGrade[i].ToString();
            Scheduler.Instance.CreateScheduler("UIGameEnd.RefreshUI.ShowGrade." + i, i * 0.5f, 1, 0, (param) =>
            {
                int index        = (int)param;
                float inningsSum = endInfo.LeftGrade[index] + endInfo.RightGrade[index];
                //Image
                Image leftIamge       = transform.Find(string.Format("GradeList/{0}/Mask/LeftImage", index)).GetComponent <Image>();
                Image rightIamge      = transform.Find(string.Format("GradeList/{0}/Mask/RightImage", index)).GetComponent <Image>();
                leftIamge.fillAmount  = 0;
                rightIamge.fillAmount = 0;
                DOTween.To(() => leftIamge.fillAmount, (value) => leftIamge.fillAmount   = value, (0 == inningsSum) ? 0.5f : endInfo.LeftGrade[index] / inningsSum, 1f);
                DOTween.To(() => rightIamge.fillAmount, (value) => rightIamge.fillAmount = value, (0 == inningsSum) ? 0.5f : endInfo.RightGrade[index] / inningsSum, 1f);
            }, i);
        }
        //总分
        transform.Find(string.Format("GradeList/Sum/LeftText")).GetComponent <Text>().text  = leftSum.ToString();
        transform.Find(string.Format("GradeList/Sum/RightText")).GetComponent <Text>().text = rightSum.ToString();
        Image sumLeftIamge  = transform.Find(string.Format("GradeList/Sum/Mask/LeftImage")).GetComponent <Image>();
        Image sumRightIamge = transform.Find(string.Format("GradeList/Sum/Mask/RightImage")).GetComponent <Image>();

        sumLeftIamge.fillAmount  = 0;
        sumRightIamge.fillAmount = 0;
        float allSum = leftSum + rightSum;

        Scheduler.Instance.CreateScheduler("UIGameEnd.RefreshUI.ShowGrade.Sum", endInfo.LeftGrade.Count * 0.5f, 1, 0, (param) =>
        {
            DOTween.To(() => sumLeftIamge.fillAmount, (value) => sumLeftIamge.fillAmount   = value, (0 == allSum) ? 0.5f : leftSum / allSum, 1f);
            DOTween.To(() => sumRightIamge.fillAmount, (value) => sumRightIamge.fillAmount = value, (0 == allSum) ? 0.5f : rightSum / allSum, 1f);
        });
        //结果
        string resultStr   = "";
        Color  resultColor = Color.white;

        if (rightSum < leftSum)
        {
            resultColor = GameConst.Yellow;
            resultStr   = Language.GetTextByKey(10501);
        }
        else if (leftSum < rightSum)
        {
            resultColor = GameConst.Bule;
            resultStr   = Language.GetTextByKey(10502);
        }
        else
        {
            resultColor = GameConst.Gray;
            resultStr   = Language.GetTextByKey(10503);
        }
        Text resultText = transform.Find("PlayerInfo/Text").GetComponent <Text>();

        resultText.text  = resultStr;
        resultText.color = resultColor;
        //属性变化
        for (int i = 0; i < endInfo.AttributeOffset.Count; i++)
        {
            float     offset  = endInfo.AttributeOffset[i];
            Transform attrObj = transform.Find("Attribute/Layout/" + i);
            attrObj.Find("Down").gameObject.SetActive(offset < 0);
            attrObj.Find("Up").gameObject.SetActive(0 < offset);
            attrObj.Find("Keep").gameObject.SetActive(0 == offset);
        }
    }