#pragma warning disable CS0626 #pragma warning disable CS0649 #pragma warning disable IDE0051 #pragma warning disable IDE1006 using MU3.Data; using MU3.DataStudio; using MU3.Util; using System.Collections.Generic; using System.Linq; namespace MU3.User; public class patch_UserRating: UserRating { private int _rating100; private UserManager usMgr => Singleton.instance; // Adaptation of calcBest() without bullshit // The original lists stay intact because the game expects them to be filled private RatingList calcSane() { RatingList ratingList = new(); var musicDict = usMgr.userMusic; foreach (KeyValuePair item in musicDict) { MU3.Data.MusicData musicData = SingletonStateMachine.instance.getMusicData(item.Key); if (musicData == null || item.Key == 1 || musicData.isBonusTrack) { continue; } for (int i = 0; i < 5; i++) { FumenDifficulty fumenDifficulty = (FumenDifficulty)i; UserFumen userFumen = usMgr.getUserFumen(item.Key, fumenDifficulty, create: false); if (userFumen == null) { continue; } Rating rating = new Rating(musicData.id, fumenDifficulty, userFumen.TechScoreMax); if (rating.level100 == 0) { continue; } ratingList.Add(rating); } } ratingList.Sort(); return ratingList; } private void calcRate() { _rating100 = 0; foreach (Rating best in calcSane().Take(45)) { _rating100 += best.rate100; } _rating100 /= 45; } }