private void CheckPlayerData(OsuPlayerData player) { if (Setting.DebugMode) { Logger.LogInfomation($"分數更新: {player.totalScore}"); Logger.LogInfomation($"rank: {player.ppRank}"); } ReflectorModel.OPD.Data.Add(player); ReflectorModel.mmf.UpdateMmf(); SavePlayerData(); }
public void UpdateMmf() { Clear(); StreamWriter[] streamWriters = new StreamWriter[_mmfs.Length]; foreach (var a in _mmfName) { var b = _mmfName.IndexOf(a); streamWriters[b] = new StreamWriter(_mmfs[b].CreateViewStream()); } if (ReflectorModel.OPD.Data.Count > 0) { OsuPlayerData player = ReflectorModel.OPD.Data.Last(); //get last player data streamWriters[1].Write(player.ppRank.ToString()); streamWriters[2].Write(player.totalScore); streamWriters[3].Write(player.Accuracy); streamWriters[4].Write(player.count50); streamWriters[5].Write(player.count100); streamWriters[6].Write(player.count300); streamWriters[7].Write(player.countRankA); streamWriters[8].Write(player.countRankS); streamWriters[9].Write(player.countRankSS); streamWriters[10].Write(player.playCount); streamWriters[11].Write(player.ppCountryRank); streamWriters[12].Write(player.ppRaw); streamWriters[13].Write(player.rankedScore); streamWriters[14].Write(player.countRankSH); streamWriters[15].Write(player.countRankSSH); if (player.Events.Count > 0) { //var d = ""; var er = Regex.Match(player.Events[0].displayHtml, @"\<img src='\\/images\\/*(?<Rank>.*?)_small.png'\\/\>", RegexOptions.IgnoreCase).Groups["Rank"].Value; var eu = Regex.Match(player.Events[0].displayHtml, @"\<a href='\/u\/[^']*'\>(?<Rank>.*?)\<\/a\>", RegexOptions.IgnoreCase).Groups["Rank"].Value; var erk = Regex.Match(player.Events[0].displayHtml, @"achieved rank *(?<Rank>.*?) on ", RegexOptions.IgnoreCase).Groups["Rank"].Value; var est = Regex.Match(player.Events[0].displayHtml, @"\<a href='\/b\/[^']*'\>(?<Rank>.*?)\<\/a\>", RegexOptions.IgnoreCase).Groups["Rank"].Value; streamWriters[16].Write($"{eu} achieved rank {erk} on {est}"); streamWriters[17].Write($"{eu} achieved rank {erk}"); // A streamWriters[18].Write($"{est}"); // B } if (ReflectorModel.OPD.Data.Count > 1) { var f = ReflectorModel.OPD.Data[ReflectorModel.OPD.Data.Count - 2]; //get prev of last player data(? var gap = (f.ppRank - player.ppRank).ToString(); var gap2 = (f.ppCountryRank - player.ppCountryRank).ToString(); if (f.ppRank - player.ppRank > 0) { gap = $"+{gap}"; } if (f.ppCountryRank - player.ppCountryRank > 0) { gap2 = $"+{gap2}"; } if (f.ppRank - player.ppRank != 0) { ReflectorModel.OPD.LastPPRankChange = $"{gap}"; } if (f.ppCountryRank - player.ppCountryRank != 0) { ReflectorModel.OPD.LastPPCountryRankChange = $"{gap2}"; } } if (ReflectorModel.OPD.LastBestPPRank.Rank <= 0 || player.ppRank < ReflectorModel.OPD.LastBestPPRank.Rank) { ReflectorModel.OPD.LastBestPPRank = new BestRank() { Rank = player.ppRank } } ; if (ReflectorModel.OPD.LastBestPPCountryRank.Rank <= 0 || player.ppCountryRank < ReflectorModel.OPD.LastBestPPCountryRank.Rank) { ReflectorModel.OPD.LastBestPPCountryRank = new BestRank() { Rank = player.ppCountryRank } } ; streamWriters[19].Write($"({ReflectorModel.OPD.LastPPRankChange})"); streamWriters[20].Write($"({ReflectorModel.OPD.LastPPCountryRankChange})"); if (ReflectorModel.OPD.LastBestPPRank.Rank > 0) { streamWriters[21].Write($"#{ReflectorModel.OPD.LastBestPPRank.Rank}({ReflectorModel.OPD.LastBestPPRank.CreatedTime.ToString("MM/dd/yyyy")})"); } if (ReflectorModel.OPD.LastBestPPCountryRank.Rank > 0) { streamWriters[22].Write($"#{ReflectorModel.OPD.LastBestPPCountryRank.Rank}({ReflectorModel.OPD.LastBestPPCountryRank.CreatedTime.ToString("MM/dd/yyyy")})"); } if (ReflectorModel.CustomData.currentMapTotalScore > ReflectorModel.CustomData.currentMapBestScore) { var _scoreDiff = ReflectorModel.CustomData.currentMapTotalScore - ReflectorModel.CustomData.currentMapBestScore; streamWriters[23].Write($"【新紀錄】{ReflectorModel.CustomData.currentMapTotalScore} (+{_scoreDiff})"); } else { streamWriters[23].Write($"歷史高分: {ReflectorModel.CustomData.currentMapBestScore}"); } } else { Logger.Error($"資料數為0..."); foreach (var sw in streamWriters) { sw.Write(" ?"); } } foreach (var c in streamWriters) { c.Write('\0'); c.Dispose(); } }