Exemple #1
0
        public void RefreshContent()
        {
            if (_lastRefreshTime >= _user.Timestamp)
            {
                return;
            }

            _lastRefreshTime = _user.Timestamp;

            PlayerFigure.ApplyData(_user.Read());
        }
        /// <summary>
        /// 应用玩家数据。
        /// </summary>
        /// <param name="data"></param>
        public void ApplyData(User data)
        {
            if (data == null)
            {
                Data = null;

                // Close function group when clear data.
                ShowFuncGroup(false);
                ShowKickOutCounter(false);

                if (SelfIndicator && SelfIndicator.gameObject.activeSelf)
                {
                    SelfIndicator.gameObject.SetActive(false);
                }

                if (ReadyIndicator && ReadyIndicator.gameObject.activeSelf)
                {
                    ReadyIndicator.gameObject.SetActive(false);
                }

                if (Level)
                {
                    Level.text = "";
                }
                if (LevelTitle)
                {
                    LevelTitle.text = "";
                }
                if (WinRate)
                {
                    WinRate.text = "";
                }
                if (Money)
                {
                    Money.Clear();
                }
                if (Nickname)
                {
                    Nickname.Clear();
                }
                if (Player)
                {
                    Player.Clear();
                }
            }
            else
            {
                // 之前的数据是空,或者数据发生了变化,则关闭倒计时和功能按钮。
                if (Data == null || !StringUtil.AreEqual(data.username, Data.username))
                {
                    // FIXME bug就出在这里了。
                    ShowFuncGroup(false);
                    ShowKickOutCounter(false);
                }

                Data = data;
                var tableUser = _tableUserData.Read();
                var self      = tableUser.IsMySelf(data);

                if (SelfIndicator && SelfIndicator.gameObject.activeSelf != self)
                {
                    SelfIndicator.gameObject.SetActive(self);
                }

                var ready = data.ready == 1;
                if (ReadyIndicator && ReadyIndicator.gameObject.activeSelf != ready)
                {
                    ReadyIndicator.gameObject.SetActive(ready);
                }

                if (Level)
                {
                    Level.text = "" + data.level;
                }
                if (LevelTitle)
                {
                    LevelTitle.text = "" + data.title;
                }
                if (WinRate)
                {
                    float rate = data.round_count != 0 ? ((float)data.win_count) / data.round_count : 0;
                    WinRate.text = DataUtil.FormatWinRate(rate);
                }
                if (Money)
                {
                    var room         = _room.Read();
                    var currencyType = room == null ? CurrencyType.GOLDEN_EGG : room.currency_type;
                    Money.SetCurrency(DataUtil.GetCurrency(data, currencyType), currencyType);
                }

                if (Nickname)
                {
                    Nickname.SetData(data);
                }
                if (Player)
                {
                    Player.ApplyData(data);
                }
            }
        }