Ejemplo n.º 1
0
 public void Set(int score, int combo, float seido, RankModel.Rank rank)
 {
     this.Score = score;
     this.Combo = combo;
     this.Seido = seido;
     this.Rank  = RankModel.GetRankName(rank);
 }
Ejemplo n.º 2
0
        public static string SetPlayerRank(string str)
        {
            string[] strArray = str.Substring(str.IndexOf(" ") + 1).Split(' ');
            long     int64    = Convert.ToInt64(strArray[0]);
            int      int32    = Convert.ToInt32(strArray[1]);

            if (int32 > 60 || int32 == 56 || (int32 < 0 || int64 <= 0L))
            {
                return(Translation.GetLabel("ChangePlyRankWrongValue"));
            }
            Account account = AccountManager.getAccount(int64, 0);

            if (account == null)
            {
                return(Translation.GetLabel("ChangePlyRankFailPlayer"));
            }
            if (!ComDiv.updateDB("accounts", "rank", (object)int32, "player_id", (object)account.player_id))
            {
                return(Translation.GetLabel("ChangePlyRankFailUnk"));
            }
            RankModel rank = RankXML.getRank(int32);

            account._rank = int32;
            SEND_ITEM_INFO.LoadGoldCash(account);
            account.SendPacket((SendPacket) new BASE_RANK_UP_PAK(account._rank, rank != null ? rank._onNextLevel : 0), false);
            if (account._room != null)
            {
                account._room.updateSlotsInfo();
            }
            return(Translation.GetLabel("ChangePlyRankSuccess", (object)int32));
        }
        public bool DoesMeetRankRequirement(UserDataModel userData)
        {
            if (userData.IsCurrencyRankExempt)
            {
                return(true);
            }

            CurrencyModel currency = this.GetCurrency();

            if (currency == null)
            {
                return(false);
            }

            RankModel rank = this.RequiredRank;

            if (rank == null)
            {
                return(false);
            }

            if (!currency.HasAmount(userData, rank.Amount))
            {
                return(false);
            }

            if (this.MustEqual && currency.GetRank(userData) != rank)
            {
                return(false);
            }

            return(true);
        }
Ejemplo n.º 4
0
 // Use this for initialization
 void Awake()
 {
     //Instance=this;
     RankModel = JsonUtility.FromJson <RankModel>(PlayerPrefs.GetString(Key, JsonUtility.ToJson(new RankModel())));     //获取排行榜数据
     print("排行榜长度" + RankModel.Ranks.Count);
     //DontDestroyOnLoad(this);
 }
        private void DeleteRankButton_Click(object sender, RoutedEventArgs e)
        {
            Button    button = (Button)sender;
            RankModel rank   = (RankModel)button.DataContext;

            this.viewModel.Ranks.Remove(rank);
        }
Ejemplo n.º 6
0
        public ActionResult <string> SetRank(RankModel data)
        {
            bool isUpdate = false;

            lock (DataBase.LockDataBase())
            {
                isUpdate = DataBase.Query().Exists(s => s.Id == data.Id);
            }

            if (isUpdate)
            {
                Rank myData = DataBase.Select(s => s.Id == data.Id).First();
                if (myData.Score < data.Score)
                {
                    DataBase.Update(new Rank()
                    {
                        Id    = data.Id,
                        Name  = data.Name,
                        Score = data.Score
                    });
                }
            }
            else
            {
                DataBase.Insert(new Rank()
                {
                    Id    = data.Id,
                    Name  = data.Name,
                    Score = data.Score
                });
            }

            return(Ok());
        }
        public bool DoesMeetCurrencyRequirement(UserDataModel userData)
        {
            if (userData.IsCurrencyRankExempt)
            {
                return(true);
            }

            CurrencyModel currency = this.GetCurrency();

            if (currency == null)
            {
                return(false);
            }

            if (currency.IsRank && !string.IsNullOrEmpty(this.RankName))
            {
                RankModel rank = this.RequiredRank;
                if (rank == CurrencyModel.NoRank)
                {
                    return(false);
                }
            }

            return(this.DoesMeetCurrencyRequirement(currency.GetAmount(userData)));
        }
        public static string SetPlayerRank(string str)
        {
            string text = str.Substring(str.IndexOf(" ") + 1);

            string[] split     = text.Split(' ');
            long     player_id = Convert.ToInt64(split[0]);
            int      rank      = Convert.ToInt32(split[1]);

            if (rank > 60 || rank == 56 || rank < 0 || player_id <= 0)
            {
                return(Translation.GetLabel("ChangePlyRankWrongValue"));
            }
            else
            {
                Account pE = AccountManager.getAccount(player_id, 0);
                if (pE != null)
                {
                    if (ComDiv.updateDB("contas", "rank", rank, "player_id", pE.player_id))
                    {
                        RankModel model = RankXML.getRank(rank);
                        pE._rank = rank;
                        SEND_ITEM_INFO.LoadGoldCash(pE);
                        pE.SendPacket(new BASE_RANK_UP_PAK(pE._rank, model != null ? model._onNextLevel : 0), false);
                        if (pE._room != null)
                        {
                            pE._room.updateSlotsInfo();
                        }
                        return(Translation.GetLabel("ChangePlyRankSuccess", rank));
                    }
                    return(Translation.GetLabel("ChangePlyRankFailUnk"));
                }
                return(Translation.GetLabel("ChangePlyRankFailPlayer"));
            }
        }
Ejemplo n.º 9
0
        static bool Prefix(ref ImmediateRankUIPanel __instance, ref RelativeScoreAndImmediateRankCounter ____relativeScoreAndImmediateRankCounter,
                           ref RankModel.Rank ____prevImmediateRank, ref float ____prevRelativeScore, ref TextMeshProUGUI ____rankText,
                           ref TextMeshProUGUI ____relativeScoreText)
        {
            if (!CountersController.settings.Enabled)
            {
                return(true);                                      //Dont use Score Counters decimal precision if the plugin is disabled
            }
            if (model == null)
            {
                model = CountersController.settings.scoreConfig;
            }
            RankModel.Rank rank = ____relativeScoreAndImmediateRankCounter.immediateRank;
            if (rank != ____prevImmediateRank)
            {
                ____rankText.text     = model.Mode != ICounterMode.BaseGame ? $"\n{RankModel.GetRankName(rank)}" : RankModel.GetRankName(rank);
                ____prevImmediateRank = rank;
            }
            float score = ____relativeScoreAndImmediateRankCounter.relativeScore;

            if (Mathf.Abs(____prevRelativeScore - score) >= 0.001f)
            {
                float roundedScore = (float)Math.Round((decimal)score * 100, model.DecimalPrecision);
                ____relativeScoreText.text = $"{roundedScore.ToString($"F{model.DecimalPrecision}")}%";
            }
            return(false);
        }
        /// <summary>
        /// Returns the highest rank achieved for a level and a given list of difficulties.
        /// NOTE: this method obtains the rank by performing a calculation on the set score and assumes that no modifiers were used.
        /// </summary>
        /// <param name="level">The level to search through.</param>
        /// <param name="difficulties">A list of BeatmapDifficulties to search through. Use null to search through all difficulties.</param>
        /// <param name="characteristics">A list of characteristics to search through. Each characteristic is represented by its serialized string.
        /// Use null to search through all characteristics.</param>
        /// <param name="playerName">The name of the player on the local leaderboards (optional).</param>
        /// <returns>The highest RankModel.Rank enum found for the selected difficulties, or null if the level has not yet been completed.</returns>
        public RankModel.Rank?GetHighestRankForLevel(BeatmapDetails level, IEnumerable <BeatmapDifficulty> difficulties = null, IEnumerable <string> characteristics = null, string playerName = null)
        {
            if (difficulties == null)
            {
                difficulties = AllDifficulties;
            }
            if (characteristics == null)
            {
                characteristics = AllCharacteristicStrings;
            }

            // get any level duplicates
            List <string> duplicateLevelIDs = GetActualLevelIDs(level.LevelID);

            StringBuilder sb = new StringBuilder();

            RankModel.Rank?highestRank = null;
            foreach (var levID in duplicateLevelIDs)
            {
                foreach (var characteristic in AllCharacteristicStrings)
                {
                    var simplifiedChar = level.DifficultyBeatmapSets.FirstOrDefault(x => x.CharacteristicName == characteristic || (characteristic == "" && x.CharacteristicName == "Standard"));
                    if (simplifiedChar == null)
                    {
                        continue;
                    }

                    foreach (var difficulty in difficulties)
                    {
                        var simplifiedDiff = simplifiedChar.DifficultyBeatmaps.FirstOrDefault(x => x.Difficulty == difficulty);
                        if (simplifiedDiff == null)
                        {
                            continue;
                        }

                        sb.Clear();
                        sb.Append(levID);
                        sb.Append(characteristic);
                        sb.Append(difficulty.ToString());
                        string leaderboardID = sb.ToString();
                        var    scores        = _localLeaderboardsModel.GetScores(leaderboardID, LocalLeaderboardsModel.LeaderboardType.AllTime);

                        int maxRawScore = ScoreModel.MaxRawScoreForNumberOfNotes(simplifiedDiff.NotesCount);
                        if (scores != null)
                        {
                            var validEntries = scores.Where(x => x._score != 0 && (x._playerName == playerName || playerName == null));

                            if (validEntries.Count() > 0)
                            {
                                var validRanks = validEntries.Select(x => RankModel.GetRankForScore(x._score, x._score, maxRawScore, maxRawScore));
                                highestRank = (RankModel.Rank)Math.Max((int)(highestRank ?? RankModel.Rank.E), (int)validRanks.Max());
                            }
                        }
                    }
                }
            }

            return(highestRank);
        }
Ejemplo n.º 11
0
        public void UpdateCurrentMaxScore()
        {
            GameStatus gameStatus = statusManager.gameStatus;

            int currentMaxScoreBeforeMultiplier = ScoreModel.MaxRawScoreForNumberOfNotes(gameStatus.passedNotes);

            gameStatus.currentMaxScore = gameplayModifiersSO.MaxModifiedScoreForMaxRawScore(currentMaxScoreBeforeMultiplier, gameplayModifiers, gameplayModifiersSO, gameEnergyCounter.energy);

            RankModel.Rank rank = RankModel.GetRankForScore(gameStatus.rawScore, gameStatus.score, currentMaxScoreBeforeMultiplier, gameStatus.currentMaxScore);
            gameStatus.rank = RankModel.GetRankName(rank);
        }
Ejemplo n.º 12
0
        private void OnScoreDidChange(int scoreBeforeMultiplier)
        {
            Data.score = ScoreController.GetScoreForGameplayModifiersScoreMultiplier(scoreBeforeMultiplier, Data.modifierMultiplier);

            int currentMaxScoreBeforeMultiplier = ScoreController.MaxScoreForNumberOfNotes(Data.passedNotes);

            Data.currentMaxScore = ScoreController.GetScoreForGameplayModifiersScoreMultiplier(currentMaxScoreBeforeMultiplier, Data.modifierMultiplier);

            RankModel.Rank rank = RankModel.GetRankForScore(scoreBeforeMultiplier, Data.score, currentMaxScoreBeforeMultiplier, Data.currentMaxScore);
            Data.rank = RankModel.GetRankName(rank);

            Data.StatusChange(ChangedProperties.Performance, "scoreChanged");
        }
Ejemplo n.º 13
0
        static bool Prefix(ref ImmediateRankUIPanel __instance, ref RelativeScoreAndImmediateRankCounter ____relativeScoreAndImmediateRankCounter,
                           ref RankModel.Rank ____prevImmediateRank, ref float ____prevRelativeScore, ref TextMeshProUGUI ____rankText,
                           ref TextMeshProUGUI ____relativeScoreText)
        {
            if (!CountersController.settings.Enabled)
            {
                return(true);                                      //Dont use Score Counters decimal precision if the plugin is disabled
            }
            if (model == null)
            {
                model = CountersController.settings.scoreConfig;
            }
            RankModel.Rank rank = ____relativeScoreAndImmediateRankCounter.immediateRank;
            if (rank != ____prevImmediateRank)
            {
                ____rankText.text     = model.Mode != ICounterMode.BaseGame ? $"\n{RankModel.GetRankName(rank)}" : RankModel.GetRankName(rank);
                ____prevImmediateRank = rank;
                //I am moving this code down here so that it only runs if the rank changes instead of every time the game refreshes the UI.
                //Because of how cosmic brain Beat Games is, this code should run on game startup, because SSS != SS, so should work fine.
                if (model.CustomRankColors)
                {
                    string color = "#FFFFFF";                //Blank white shall be used for the default color in case like some SSS shit happens
                    switch (RankModel.GetRankName(rank))     //Using PogU switch case instead of Pepega If chain
                    {
                    case "SS": color = model.SSColor; break; //Even compressing this shit down to one liners, look at me!

                    case "S": color = model.SColor; break;

                    case "A": color = model.AColor; break;

                    case "B": color = model.BColor; break;

                    case "C": color = model.CColor; break;

                    case "D": color = model.DColor; break;

                    case "E": color = model.EColor; break;
                    }
                    ColorUtility.TryParseHtmlString(color, out Color RankColor); //converts config hex color to unity RGBA value
                    ____rankText.color = RankColor;                              //sets color of ranktext
                }
            }
            float score = ____relativeScoreAndImmediateRankCounter.relativeScore;

            if (Mathf.Abs(____prevRelativeScore - score) >= 0.001f)
            {
                float roundedScore = (float)Math.Round((decimal)score * 100, model.DecimalPrecision);
                ____relativeScoreText.text = $"{roundedScore.ToString($"F{model.DecimalPrecision}")}%";
            }
            return(false);
        }
        public void SetSongInfo(IDifficultyBeatmap songInfo, LevelCompletionResults results)
        {
            if (lastSong != songInfo)
            {
                lastSong = songInfo;

                _songNameText.text   = $"{songInfo.level.songName} <size=80%>{songInfo.level.songSubName}</size>";
                _scoreText.text      = ScoreFormatter.Format(results.score);
                _difficultyText.text = songInfo.difficulty.Name();
                _rankText.text       = RankModel.GetRankName(results.rank);
                _goodCutsText.text   = $"{results.goodCutsCount}<size=50%> / {songInfo.beatmapData.notesCount}";
                _fullComboText.gameObject.SetActive(results.fullCombo);
            }
        }
        public override async Task <bool> Validate(UserViewModel user)
        {
            CurrencyModel rankSystem = this.RankSystem;

            if (rankSystem == null)
            {
                return(false);
            }

            RankModel rank = this.RequiredRank;

            if (rank == null)
            {
                return(false);
            }

            if (!user.Data.IsCurrencyRankExempt)
            {
                if (this.MatchType == RankRequirementMatchTypeEnum.GreaterThanOrEqualTo)
                {
                    if (!rankSystem.HasAmount(user.Data, rank.Amount))
                    {
                        await this.SendChatMessage(string.Format("You do not have the required rank of {0} ({1} {2}) to do this", rank.Name, rank.Amount, rankSystem.Name));

                        return(false);
                    }
                }
                else if (this.MatchType == RankRequirementMatchTypeEnum.EqualTo)
                {
                    if (rankSystem.GetRank(user.Data) != rank)
                    {
                        await this.SendChatMessage(string.Format("You do not have the required rank of {0} to do this", rank.Name, rank.Amount, rankSystem.Name));

                        return(false);
                    }
                }
                else if (this.MatchType == RankRequirementMatchTypeEnum.LessThanOrEqualTo)
                {
                    RankModel nextRank = rankSystem.GetNextRank(user.Data);
                    if (nextRank != CurrencyModel.NoRank && rankSystem.HasAmount(user.Data, nextRank.Amount))
                    {
                        await this.SendChatMessage(string.Format("You are over the required rank of {0} ({1} {2}) to do this", rank.Name, rank.Amount, rankSystem.Name));

                        return(false);
                    }
                }
            }

            return(true);
        }
Ejemplo n.º 16
0
    /// <summary>
    /// 定时器委托任务 调用的方法
    /// </summary>
    /// <param name="source"></param>
    /// <param name="e"></param>
    public static void SetContent(object source, ElapsedEventArgs e)
    {
        ILog  log = LogManager.GetLogger("TaskAction");
        Cache ca  = HttpRuntime.Cache;

        try
        {
            List <RankModel> rankAll = new List <RankModel>();

            var onlineUseralle = ServiceStackManage.Redis.GetDatabase().HashGetAll("UserInfo", CommandFlags.None);   //如果可以访问,就加入到缓存

            for (int i = 0; i < onlineUseralle.Count(); i++)
            {
                RankModel model = new RankModel();
                model.Name  = onlineUseralle[i].Name;
                model.Value = onlineUseralle[i].Value;
                string[] s = model.Value.Split('_');
                model.VipGrade = Convert.ToInt32(s[4]);
                rankAll.Add(model);
            }
            if (onlineUseralle != null)
            {
                if (onlineUseralle.Length != 0)
                {
                    ca.Insert("onlineList", rankAll);       //这里给数据加缓存
                    string json = JsonConvert.SerializeObject(rankAll.Skip(0).Take(200));

                    OnLineInfoBLL.InsertNewJson(new GL.Data.Model.OnLineInfo {
                        CreateTime = DateTime.Now, OnLineInfoJson = json
                    });
                }
            }
        }
        catch (Exception ex)
        {//如果连不上redis
            log.Error("TaskAction(定时读取在线人数到缓存):" + ex.Message + "\n");
            List <RankModel> rankAll = ca["onlineList"] as List <RankModel>;
            if (rankAll == null)
            {
                string rJson = OnLineInfoBLL.GetNewJson();
                rankAll = (List <RankModel>)JsonConvert.DeserializeObject <List <RankModel> >(rJson);
            }
            if (rankAll.Count == 0)
            {
                string rJson = OnLineInfoBLL.GetNewJson();
                rankAll = (List <RankModel>)JsonConvert.DeserializeObject <List <RankModel> >(rJson);
            }
            ca.Insert("onlineList", rankAll);  //这里给数据加缓存
        }
    }
Ejemplo n.º 17
0
        private void UpdateText()
        {
            RankModel.Rank immediateRank = relativeScoreAndImmediateRank.immediateRank;
            if (immediateRank != prevImmediateRank)
            {
                rankText.text     = RankModel.GetRankName(immediateRank);
                prevImmediateRank = immediateRank;

                rankText.color = Settings.CustomRankColors ? Settings.GetRankColorFromRank(immediateRank) : Color.white;
            }
            float relativeScore = relativeScoreAndImmediateRank.relativeScore * 100;

            relativeScoreText.text = $"{relativeScore.ToString($"F{Settings.DecimalPrecision}")}%";
        }
Ejemplo n.º 18
0
        public void OnScoreDidChange(int scoreBeforeMultiplier, int scoreAfterMultiplier)
        {
            GameStatus gameStatus = statusManager.gameStatus;

            gameStatus.score = scoreAfterMultiplier;

            int currentMaxScoreBeforeMultiplier = ScoreController.MaxRawScoreForNumberOfNotes(gameStatus.passedNotes);

            gameStatus.currentMaxScore = ScoreController.MaxModifiedScoreForMaxRawScore(currentMaxScoreBeforeMultiplier, gameplayModifiers, gameplayModifiersSO);

            RankModel.Rank rank = RankModel.GetRankForScore(scoreBeforeMultiplier, gameStatus.score, currentMaxScoreBeforeMultiplier, gameStatus.currentMaxScore);
            gameStatus.rank = RankModel.GetRankName(rank);

            statusManager.EmitStatusUpdate(ChangedProperties.Performance, "scoreChanged");
        }
Ejemplo n.º 19
0
        public void EndOfSong(LevelCompletionResults results, SongData data)
        {
            won     = results.levelEndStateType == LevelCompletionResults.LevelEndStateType.Cleared;
            endTime = results.endSongTime;
            rank    = RankModel.GetRankName(results.rank);

            if (!SettingsMenu.instance.HideNbOfPauses)
            {
                nbOfPause = data.GetDataCollector().nbOfPause;
            }
            else
            {
                nbOfPause = 999;
            }
        }
Ejemplo n.º 20
0
 public static RankModel getRank(int rankId)
 {
     lock (_ranks)
     {
         for (int i = 0; i < _ranks.Count; i++)
         {
             RankModel rank = _ranks[i];
             if (rank._id == rankId)
             {
                 return(rank);
             }
         }
         return(null);
     }
 }
Ejemplo n.º 21
0
        private void DrawMultiRanking(Graphics g, DataModel Data, Pen linePen, Brush lineBrush, Brush TextBrush, Brush DataBrush, System.Drawing.Font font_Text, System.Drawing.Font font_Data)
        {
            if (Data is RankModel)
            {
                RankModel rankmodel = Data as RankModel;
                EStartX = rankmodel.Area.left + 10;
                EStartY = rankmodel.Area.top;
                //宽高
                EViewWidth  = (this.Width - 20);
                EViewHeight = rankmodel.Area.bottom - rankmodel.Area.top;
                int rankWidth = EViewWidth / 8;
                //绘制其它色的个数
                if (IsDrawColorfulRectAngle)
                {
                    lineBrush.Dispose();
                    lineBrush = new SolidBrush(rankmodel.ModelColor);
                }
                //绘制排名
                Rectangle    rect = new Rectangle(EStartX, EStartY, rankWidth, EViewHeight);
                GraphicsPath path = ReportViewUtils.CreateRoundedRectanglePath(rect, EViewHeight / 4);
                g.FillPath(lineBrush, path);
                ReportViewUtils.drawString(g, rankmodel.Index + "", font_Text, TextBrush, EStartX, EStartY, rankWidth, EViewHeight);
                path.Dispose();

                //绘制名称
                int    startText     = EStartX + rankWidth + 20;
                int    rankTextWidth = EViewWidth / 3;
                string text          = rankmodel.mainText;
                text = ReportViewUtils.LimiteText(g, font_Text, text, rankTextWidth);
                ReportViewUtils.drawString(g, text, font_Text, TextBrush, startText, EStartY, rankTextWidth, EViewHeight);

                //绘制数据
                startText += rankTextWidth;
                text       = rankmodel.mainData + "";
                text       = ReportViewUtils.LimiteText(g, font_Text, text, rankTextWidth);
                ReportViewUtils.drawString(g, text, font_Text, TextBrush, startText, EStartY, rankTextWidth, EViewHeight);

                ///建议把绘制的直接写在这里
                if (rankmodel.Area.IsMouseIn)
                {
                    Color color   = rankmodel.ModelColor;
                    Brush myBrush = new SolidBrush(Color.FromArgb(BackGroundAlpha, color.R, color.G, color.B));
                    g.FillRectangle(myBrush, new Rectangle(rankmodel.Area.left, rankmodel.Area.top - padding / 2,
                                                           this.Width, rankmodel.Area.bottom - rankmodel.Area.top + padding));
                    myBrush.Dispose();
                }
            }
        }
        public void OnScoreDidChange(int scoreBeforeMultiplier)
        {
            try
            {
                gameStatus.score = ScoreController.GetScoreForGameplayModifiersScoreMultiplier(scoreBeforeMultiplier, gameStatus.modifierMultiplier);

                int currentMaxScoreBeforeMultiplier = ScoreController.MaxScoreForNumberOfNotes(gameStatus.passedNotes);
                gameStatus.currentMaxScore = ScoreController.GetScoreForGameplayModifiersScoreMultiplier(currentMaxScoreBeforeMultiplier, gameStatus.modifierMultiplier);

                RankModel.Rank rank = RankModel.GetRankForScore(scoreBeforeMultiplier, gameStatus.score, currentMaxScoreBeforeMultiplier, gameStatus.currentMaxScore);
                gameStatus.rank = RankModel.GetRankName(rank);
            }catch (Exception ex)
            {
                Plugin.Log("EXception in score change: " + ex);
            }
        }
Ejemplo n.º 23
0
        public void SetSongInfo(IDifficultyBeatmap songInfo, LevelCompletionResults results)
        {
            if (lastSong != songInfo)
            {
                Misc.Logger.Info("Updating song info on results screen!");
                lastSong = songInfo;

                _songNameText.text   = $"{songInfo.level.songName} <size=80%>{songInfo.level.songSubName}</size>";
                _scoreText.text      = ScoreFormatter.Format(results.score);
                _difficultyText.text = songInfo.difficulty.Name();
                _rankText.text       = RankModel.GetRankName(results.rank);
                _goodCutsText.text   = $"{results.goodCutsCount}<size=50%> / {songInfo.beatmapData.notesCount}";
                _fullComboText.gameObject.SetActive(results.fullCombo);

                if (IllusionInjector.PluginManager.Plugins.Any(x => x.Name == "BeatSaver Downloader"))
                {
                    _firstVote = true;

                    _favButton.onClick.RemoveAllListeners();
                    _favButton.onClick.AddListener(() => ToggleFavorite(songInfo.level.levelID));

                    BeatSaverDownloaderHelper.LoadDownloaderConfig();
                    _favButton.interactable = true;
                    _favButton.SetButtonIcon(BeatSaverDownloaderHelper.favoriteSongs.Any(x => x == songInfo.level.levelID) ? Sprites.removeFromFavorites : Sprites.addToFavorites);

                    VoteType vote = BeatSaverDownloaderHelper.GetVoteForSong(songInfo.level.levelID);

                    _upvoteButton.interactable   = false;
                    _downvoteButton.interactable = false;
                    _ratingText.text             = "LOADING...";

                    SongDownloader.Instance.RequestSongByLevelID(songInfo.level.levelID.Substring(0, 32), (song) =>
                    {
                        _ratingText.text = (int.Parse(song.upvotes) - int.Parse(song.downvotes)).ToString();

                        _upvoteButton.interactable   = (vote != VoteType.Upvote && BeatSaverDownloaderHelper.apiAccessToken != BeatSaverDownloaderHelper.apiTokenPlaceholder);
                        _downvoteButton.interactable = (vote != VoteType.Downvote && BeatSaverDownloaderHelper.apiAccessToken != BeatSaverDownloaderHelper.apiTokenPlaceholder);

                        _upvoteButton.onClick.RemoveAllListeners();
                        _downvoteButton.onClick.RemoveAllListeners();
                        _upvoteButton.onClick.AddListener(() => StartCoroutine(VoteForSong(song.id, songInfo.level.levelID, true)));
                        _downvoteButton.onClick.AddListener(() => StartCoroutine(VoteForSong(song.id, songInfo.level.levelID, false)));
                    });
                }
            }
        }
Ejemplo n.º 24
0
        public override Task <Result> Validate(CommandParametersModel parameters)
        {
            CurrencyModel rankSystem = this.RankSystem;

            if (rankSystem == null)
            {
                return(Task.FromResult(new Result(MixItUp.Base.Resources.RankSystemDoesNotExist)));
            }

            RankModel rank = this.RequiredRank;

            if (rank == null)
            {
                return(Task.FromResult(new Result(MixItUp.Base.Resources.RankDoesNotExist)));
            }

            if (!parameters.User.Data.IsCurrencyRankExempt)
            {
                RankModel currentRank = rankSystem.GetRank(parameters.User.Data);
                if (this.MatchType == RankRequirementMatchTypeEnum.GreaterThanOrEqualTo)
                {
                    if (!rankSystem.HasAmount(parameters.User.Data, rank.Amount))
                    {
                        return(Task.FromResult(new Result(string.Format(MixItUp.Base.Resources.RankRequirementNotGreaterThanOrEqual, rank.Name, rank.Amount, rankSystem.Name) + " " + string.Format(MixItUp.Base.Resources.RequirementCurrentAmount, currentRank))));
                    }
                }
                else if (this.MatchType == RankRequirementMatchTypeEnum.EqualTo)
                {
                    if (rankSystem.GetRank(parameters.User.Data) != rank)
                    {
                        return(Task.FromResult(new Result(string.Format(MixItUp.Base.Resources.RankRequirementNotGreaterThanOrEqual, rank.Name, rank.Amount, rankSystem.Name) + " " + string.Format(MixItUp.Base.Resources.RequirementCurrentAmount, currentRank))));
                    }
                }
                else if (this.MatchType == RankRequirementMatchTypeEnum.LessThanOrEqualTo)
                {
                    RankModel nextRank = rankSystem.GetNextRank(parameters.User.Data);
                    if (nextRank != CurrencyModel.NoRank && rankSystem.HasAmount(parameters.User.Data, nextRank.Amount))
                    {
                        return(Task.FromResult(new Result(string.Format(MixItUp.Base.Resources.RankRequirementNotLessThan, rank.Name, rank.Amount, rankSystem.Name) + " " + string.Format(MixItUp.Base.Resources.RequirementCurrentAmount, currentRank))));
                    }
                }
            }

            return(Task.FromResult(new Result()));
        }
Ejemplo n.º 25
0
 /// <summary>
 /// 从远程更新本地的数据库
 /// </summary>
 void SyncRankDataFromRemote()
 {
     RankDAL.Clear();
     for (int i = 0; i < rkModel.allPages; i++)
     {
         rkModel = getMyRank.GetRankInfo((i + 1).ToString(), "50");
         Dispatcher.BeginInvoke(new Action(delegate
         {
             pgbSync.Value = (i + 1) * 100 / rkModel.allPages;
         }));
     }
     Dispatcher.BeginInvoke(new Action(delegate
     {
         pgbSync.Value          = 0;
         lstRankAll             = GetFundEquityInfo.Instance.GetAllRankList();
         DetailGrid.ItemsSource = lstRankAll;
     }));
 }
        private void UpdateClassicModeText()
        {
            RankModel.Rank immediateRank = relativeScoreAndImmediateRank.immediateRank;
            float          relativeScore = (relativeScoreAndImmediateRank.relativeScore) * 100.0f;

            if (Math.Floor(relativeScore) != Math.Floor(prevRelativeScore))
            {
                Color currentColor = GetColorForRelativeScore(relativeScore);
            }
            prevRelativeScore = relativeScore;
            if (immediateRank != prevImmediateRank)
            {
                rankText.text     = RankModel.GetRankName(immediateRank);
                prevImmediateRank = immediateRank;
            }
            int decimalPrecision = 2;

            relativeScoreText.text = $"{relativeScore.ToString($"F{decimalPrecision}")}%";
        }
Ejemplo n.º 27
0
 /// <summary>
 /// 获取等级信息
 /// </summary>
 /// <param name="type">等级类型</param>
 /// <param name="exp">等级总经验</param>
 /// <param name="currentRankModel">当前等级模型</param>
 /// <param name="nextRankModel">下一等级的模型,顶级时为空</param>
 public void FindRankModel(RankType type, int exp, out RankModel currentRankModel, out RankModel nextRankModel)
 {
     currentRankModel = null;
     nextRankModel    = null;
     foreach (var rankModel in rankModels)
     {
         if (rankModel.type == type && rankModel.exp <= exp)
         {
             currentRankModel = rankModel;
         }
         if (currentRankModel != null && (rankModel.type == type && rankModel.exp > exp || rankModel.type != type))
         {
             if (rankModel.type == type)
             {
                 nextRankModel = rankModel;
             }
             break;
         }
     }
 }
Ejemplo n.º 28
0
        public static void update()
        {
            var db  = App.conn;
            int num = 0;

            allItems.Clear();
            using (var statement = db.Prepare("SELECT * FROM Item ORDER BY Score DESC LIMIT 0,10;"))
            {
                SQLiteResult result = statement.Step();

                while (SQLiteResult.ROW == result)
                {
                    ++num;
                    RankModel rm = new RankModel(num, (String)statement[1], Int32.Parse(statement[2].ToString()), "ms-appx:///Assets/rank_" + num + ".png");
                    allItems.Add(rm);
                    // var i = new Windows.UI.Popups.MessageDialog(statement[1].ToString()).ShowAsync();
                    result = statement.Step();
                }
            }
        }
 public static Rank GetMappedRank(RankModel rankModel)
 {
     return(new Rank
     {
         Name = RankModel.RankNames[rankModel.RankId],
         IconUrl = RankModel.RankIcons[rankModel.RankId],
         MaxMmr = rankModel.MaxMmr,
         Mmr = rankModel.Mmr,
         Wins = rankModel.Wins,
         Losses = rankModel.Losses,
         Abandons = rankModel.Abandons,
         RankId = rankModel.RankId,
         SeasonId = rankModel.SeasonId,
         MaxRank = rankModel.MaxRank,
         NextRankMmr = rankModel.NextRankMmr,
         PreviousRankMmr = rankModel.PreviousRankMmr,
         Region = rankModel.Region,
         SkillMean = rankModel.SkillMean,
         SkillStDev = rankModel.SkillStDev
     });
 }
Ejemplo n.º 30
0
 private static void AddItemsToList(IList <RankModel> list, IList <Student> students)
 {
     foreach (var s in students)
     {
         var model = new RankModel
         {
             StudentId     = s.StudentId,
             Name          = s.Name,
             CourseRecords = new List <CourseRecordModel>()
         };
         foreach (var course in s.CourseRecords)
         {
             model.CourseRecords.Add(new CourseRecordModel
             {
                 CourseId = course.CourseId,
                 Course   = course.Course,
                 Score    = course.Score
             });
         }
         list.Add(model);
     }
 }