/// <summary>
        ///     使用json字符串和游戏模式初始化一个RecentOnlineResult
        /// </summary>
        /// <param name="json"></param>
        /// <param name="mode"></param>
        public RecentOnlineResult(string json, OsuGameMode mode)
        {
            Mode = mode;
            var jobj = (JObject)JsonConvert.DeserializeObject(json);

            int.TryParse(jobj["countgeki"].ToString(), out _countgeki);
            int.TryParse(jobj["countkatu"].ToString(), out _countkatu);
            int.TryParse(jobj["count300"].ToString(), out _count300);
            int.TryParse(jobj["count100"].ToString(), out _count100);
            int.TryParse(jobj["count50"].ToString(), out _count50);
            int.TryParse(jobj["countmiss"].ToString(), out _countmiss);
            int.TryParse(jobj["maxcombo"].ToString(), out _maxcombo);
            int.TryParse(jobj["score"].ToString(), out _score);
            int.TryParse(jobj["user_id"].ToString(), out _userId);
            int.TryParse(jobj["perfect"].ToString(), out _perfect);
            int.TryParse(jobj["enabled_mods"].ToString(), out _mod);
            Mods = ModList.FromInteger(_mod);
            int.TryParse(jobj["beatmap_id"].ToString(), out _beatmapId);
            _date = jobj["date"].ToString();
            Rank  = jobj["rank"].ToString();
            DateTime.TryParse(_date, out _d);
            var e = TimeZone.CurrentTimeZone.ToLocalTime(_d);

            _d = e;
            if (_perfect == 1)
            {
                Perfect = true;
            }
            else if (_perfect == 0)
            {
                Perfect = false;
            }
            Accuracy = AccCalc(Mode);
        }
Exemple #2
0
        private void ListenerManagerOnModsChanged(ModsInfo mods)
        {
            Mods.ClearMod();
            foreach (var mod in ModList.FromInteger((int)mods.Mod).Mods.Where(m => m.CheckAndSetForMode(CurrentMode)))
            {
                OsuGameMode?mode = null;
                if (CurrentMode is ILegacyMode legacyMode)
                {
                    mode = legacyMode.LegacyMode;
                }
                Mods.Add(mod, mode);
            }

            CanFail = Mods.AllowsFail;
        }
Exemple #3
0
 /// <summary>
 ///     使用Json填充一个OnlineScore,并指定BeamapID
 /// </summary>
 /// <param name="json"></param>
 /// <param name="beatmapid"></param>
 public OnlineScore(string json, int beatmapid)
 {
     //try
     {
         var jobj  = JsonConvert.DeserializeObject(json);
         var cjobj = new JObject();
         if (jobj.GetType() == typeof(JObject))
         {
             cjobj = (JObject)jobj;
         }
         if (jobj.GetType() == typeof(JArray))
         {
             cjobj = (JObject)((JArray)jobj)[0];
         }
         if (beatmapid > 0)
         {
             _beatmapId = beatmapid;
         }
         int.TryParse(cjobj["countgeki"].ToString(), out _countgeki);
         int.TryParse(cjobj["countkatu"].ToString(), out _countkatu);
         int.TryParse(cjobj["count300"].ToString(), out _count300);
         int.TryParse(cjobj["count100"].ToString(), out _count100);
         int.TryParse(cjobj["count50"].ToString(), out _count50);
         int.TryParse(cjobj["countmiss"].ToString(), out _countmiss);
         int.TryParse(cjobj["maxcombo"].ToString(), out _maxcombo);
         int.TryParse(cjobj["score"].ToString(), out _score);
         int.TryParse(cjobj["user_id"].ToString(), out _userId);
         int.TryParse(cjobj["perfect"].ToString(), out _perfect);
         int.TryParse(cjobj["replay_available"].ToString(), out _replayAvailable);
         uint.TryParse(cjobj["score_id"].ToString(), out _scoreId);
         int.TryParse(cjobj["enabled_mods"].ToString(), out _mod);
         double.TryParse(cjobj["pp"].ToString(), out _pp);
         _date = cjobj["date"].ToString();
         Rank  = cjobj["rank"].ToString();
         Mods  = ModList.FromInteger(_mod);
         DateTime.TryParse(_date, out _d);
         if (_perfect == 1)
         {
             Perfect = true;
         }
         else if (_perfect == 0)
         {
             Perfect = false;
         }
         ReplayAvailable = _replayAvailable == 1;
     }
 }
Exemple #4
0
        private void Read()
        {
            var lfbar = "";

            _mode      = _r.ReadByte();
            Mode       = (OsuGameMode)_mode;
            OsuVersion = _r.ReadInt32();
            _r.ReadByte();
            BeatmapMd5 = _r.ReadString();
            _r.ReadByte();
            Player = _r.ReadString();
            _r.ReadByte();
            ReplayMd5  = _r.ReadString();
            _count300  = _r.ReadInt16();
            _count100  = _r.ReadInt16();
            _count50   = _r.ReadInt16();
            _countGeki = _r.ReadInt16();
            _countKatu = _r.ReadInt16();
            _countMiss = _r.ReadInt16();
            Accuracy   = GameMode.FromLegacyMode(Mode).AccuracyCalc(
                new ScoreInfo
            {
                CountGeki = _countGeki,
                Count300  = Count300,
                CountKatu = CountKatu,
                Count100  = Count100,
                Count50   = Count50,
                CountMiss = cMiss
            });
            AccuracyStr = Accuracy.ToString("p");
            Score       = _r.ReadInt32();
            _maxco      = _r.ReadInt16();
            _per        = _r.ReadByte();
            Perfect     = _per == 1;
            Mods        = ModList.FromInteger(_r.ReadInt32(), Mode);
            if (_r.ReadByte() == 0x0b)
            {
                lfbar = _r.ReadString();
            }
            PlayTime = new DateTime(_r.ReadInt64());
            var datalen = _r.ReadInt32();
            var data    = _r.ReadBytes(datalen);

            AdditionalData = new AdditionalRepalyData(data, datalen, lfbar);
            _r.ReadDouble();
        }
 /// <summary>
 ///     创造一个空白的RecentOnlineResult对象
 /// </summary>
 public RecentOnlineResult()
 {
     Perfect    = false;
     _d         = DateTime.MinValue;
     _beatmapId = 0;
     _score     = 0;
     _mod       = 0;
     _maxcombo  = 0;
     Mods       = ModList.FromInteger(_mod);
     _count300  = 0;
     _count100  = 0;
     _count50   = 0;
     _countgeki = 0;
     _countkatu = 0;
     _countmiss = 0;
     _perfect   = 0;
     _userId    = 0;
     _date      = "0-0-0 0:0:0";
     Rank       = "?";
 }
Exemple #6
0
 /// <summary>
 ///     创造一个空的OnlineScore对象
 /// </summary>
 public OnlineScore()
 {
     _replayAvailable = 0;
     Perfect          = false;
     _d = DateTime.MinValue;
     ReplayAvailable = false;
     _scoreId        = 0;
     _score          = 0;
     _pp             = 0.0;
     _maxcombo       = 0;
     _count300       = 0;
     _count100       = 0;
     _count50        = 0;
     _countgeki      = 0;
     _countkatu      = 0;
     _countmiss      = 0;
     _perfect        = 0;
     _userId         = 0;
     _date           = "0-0-0 0:0:0";
     Rank            = "?";
     Mods            = ModList.FromInteger(_mod);
 }
Exemple #7
0
        /// <summary>
        ///     使用Json填充OnlineScore对象并且指定游戏模式和BeatmapID
        /// </summary>
        /// <param name="json"></param>
        /// <param name="mode"></param>
        /// <param name="beatmapId"></param>
        public OnlineScore(string json, OsuGameMode mode, int beatmapId)
        {
            //try
            {
                BeatmapId = beatmapId;
                Mode      = mode;
                var jobj  = JsonConvert.DeserializeObject(json);
                var cjobj = new JObject();
                if (jobj.GetType() == typeof(JObject))
                {
                    cjobj = (JObject)jobj;
                }
                if (jobj.GetType() == typeof(JArray))
                {
                    cjobj = (JObject)((JArray)jobj)[0];
                }

                int.TryParse(cjobj["countgeki"].ToString(), out _countgeki);
                int.TryParse(cjobj["countkatu"].ToString(), out _countkatu);
                int.TryParse(cjobj["count300"].ToString(), out _count300);
                int.TryParse(cjobj["count100"].ToString(), out _count100);
                int.TryParse(cjobj["count50"].ToString(), out _count50);
                int.TryParse(cjobj["countmiss"].ToString(), out _countmiss);
                int.TryParse(cjobj["maxcombo"].ToString(), out _maxcombo);
                int.TryParse(cjobj["score"].ToString(), out _score);
                int.TryParse(cjobj["user_id"].ToString(), out _userId);
                int.TryParse(cjobj["perfect"].ToString(), out _perfect);
                int.TryParse(cjobj["replay_available"].ToString(), out _replayAvailable);
                uint.TryParse(cjobj["score_id"].ToString(), out _scoreId);
                int.TryParse(cjobj["enabled_mods"].ToString(), out _mod);
                double.TryParse(cjobj["pp"].ToString(), out _pp);
                _date    = cjobj["date"].ToString();
                Rank     = cjobj["rank"].ToString();
                Mods     = ModList.FromInteger(_mod);
                Accuracy = AccCalc(Mode);
                DateTime.TryParse(_date, out _d);
                if (_perfect == 1)
                {
                    Perfect = true;
                }
                else if (_perfect == 0)
                {
                    Perfect = false;
                }
                ReplayAvailable = _replayAvailable == 1;
            }

            /* catch
             *   {
             *       replay_available = 0;
             *       per = false;
             *       d = DateTime.MinValue;
             *       rep = false;
             *       score_id = 0;
             *       score = 0;
             *       pp = 0.0;
             *       maxcombo = 0;
             *       count300 = 0;
             *       count100 = 0;
             *       count50 = 0;
             *       countgeki = 0;
             *       countkatu = 0;
             *       countmiss = 0;
             *       perfect = 0;
             *       user_id = 0;
             *       date = "0-0-0 0:0:0";
             *       rank = "?";
             *   }*/
        }