/// <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); }
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; }
/// <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; } }
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 = "?"; }
/// <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); }
/// <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 = "?"; * }*/ }