public ScoreInfo CreateScoreInfo(RulesetStore rulesets, PlaylistItem playlistItem, [NotNull] BeatmapInfo beatmap) { var ruleset = rulesets.GetRuleset(playlistItem.RulesetID); if (ruleset == null) { throw new InvalidOperationException($"Couldn't create score with unknown ruleset: {playlistItem.RulesetID}"); } var rulesetInstance = ruleset.CreateInstance(); var scoreInfo = new ScoreInfo { OnlineID = ID, TotalScore = TotalScore, MaxCombo = MaxCombo, BeatmapInfo = beatmap, Ruleset = rulesets.GetRuleset(playlistItem.RulesetID) ?? throw new InvalidOperationException(), Statistics = Statistics, User = User, Accuracy = Accuracy, Date = EndedAt, Hash = string.Empty, // todo: temporary? Rank = Rank, Mods = Mods?.Select(m => m.ToMod(rulesetInstance)).ToArray() ?? Array.Empty <Mod>(), Position = Position, }; return(scoreInfo); }
private void load(RulesetStore rulesets) { Add(new Info()); AddStep(@"set name", () => Room.Name.Value = @"Room Name?"); AddStep(@"set availability", () => Room.Availability.Value = RoomAvailability.FriendsOnly); AddStep(@"set status", () => Room.Status.Value = new RoomStatusPlaying()); AddStep(@"set beatmap", () => { Room.Playlist.Clear(); Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { StarDifficulty = 2.4, Ruleset = rulesets.GetRuleset(0), Metadata = new BeatmapMetadata { Title = @"My Song", Artist = @"VisualTests", AuthorString = @"osu!lazer", }, } } }); }); AddStep(@"change name", () => Room.Name.Value = @"Room Name!"); AddStep(@"change availability", () => Room.Availability.Value = RoomAvailability.InviteOnly); AddStep(@"change status", () => Room.Status.Value = new RoomStatusOpen()); AddStep(@"null beatmap", () => Room.Playlist.Clear()); AddStep(@"change beatmap", () => { Room.Playlist.Clear(); Room.Playlist.Add(new PlaylistItem { Beatmap = { Value = new BeatmapInfo { StarDifficulty = 4.2, Ruleset = rulesets.GetRuleset(3), Metadata = new BeatmapMetadata { Title = @"Your Song", Artist = @"Tester", AuthorString = @"Someone", }, } } }); }); }
public void TestRetrievedRulesetsAreDetached() { RunTestWithRealm((realm, storage) => { var rulesets = new RulesetStore(realm, storage); Assert.IsFalse(rulesets.AvailableRulesets.First().IsManaged); Assert.IsFalse(rulesets.GetRuleset(0)?.IsManaged); Assert.IsFalse(rulesets.GetRuleset("mania")?.IsManaged); }); }
public virtual BeatmapInfo ToBeatmapInfo(RulesetStore rulesets) { var set = BeatmapSet?.ToBeatmapSet(rulesets); return(new BeatmapInfo { Metadata = set?.Metadata ?? new BeatmapMetadata(), Ruleset = rulesets.GetRuleset(RulesetID), StarDifficulty = StarRating, OnlineBeatmapID = OnlineID, Version = DifficultyName, // this is actually an incorrect mapping (Length is calculated as drain length in lazer's import process, see BeatmapManager.calculateLength). Length = Length, Status = Status, MD5Hash = Checksum, BeatmapSet = set, Metrics = metrics, MaxCombo = maxCombo, BaseDifficulty = new BeatmapDifficulty { DrainRate = drainRate, CircleSize = circleSize, ApproachRate = approachRate, OverallDifficulty = overallDifficulty, }, OnlineInfo = new BeatmapOnlineInfo { PlayCount = playCount, PassCount = passCount, CircleCount = circleCount, SliderCount = sliderCount, }, }); }
protected override void OnRoomUpdated() { base.OnRoomUpdated(); if (Room == null) { return; } const double fade_time = 50; userStateDisplay.Status = User.State; if (Room.Host?.Equals(User) == true) { crown.FadeIn(fade_time); } else { crown.FadeOut(fade_time); } // If the mods are updated at the end of the frame, the flow container will skip a reflow cycle: https://github.com/ppy/osu-framework/issues/4187 // This looks particularly jarring here, so re-schedule the update to that start of our frame as a fix. Schedule(() => { var ruleset = rulesets.GetRuleset(Room.Settings.RulesetID).CreateInstance(); userModsDisplay.Current.Value = User.Mods.Select(m => m.ToMod(ruleset)).ToList(); }); }
/// <summary> /// Create all required <see cref="BeatmapInfo"/>s for the provided archive. /// </summary> private List <BeatmapInfo> createBeatmapDifficulties(ArchiveReader reader) { var beatmapInfos = new List <BeatmapInfo>(); foreach (var name in reader.Filenames.Where(f => f.EndsWith(".osu"))) { using (var raw = reader.GetStream(name)) using (var ms = new MemoryStream()) //we need a memory stream so we can seek and shit using (var sr = new StreamReader(ms)) { raw.CopyTo(ms); ms.Position = 0; var decoder = Decoder.GetDecoder(sr); Beatmap beatmap = decoder.DecodeBeatmap(sr); beatmap.BeatmapInfo.Path = name; beatmap.BeatmapInfo.Hash = ms.ComputeSHA2Hash(); beatmap.BeatmapInfo.MD5Hash = ms.ComputeMD5Hash(); RulesetInfo ruleset = rulesets.GetRuleset(beatmap.BeatmapInfo.RulesetID); // TODO: this should be done in a better place once we actually need to dynamically update it. beatmap.BeatmapInfo.Ruleset = ruleset; beatmap.BeatmapInfo.StarDifficulty = ruleset?.CreateInstance()?.CreateDifficultyCalculator(beatmap).Calculate() ?? 0; beatmapInfos.Add(beatmap.BeatmapInfo); } } return(beatmapInfos); }
private void load(FrameworkConfigManager frameworkConfig) { this.frameworkConfig = frameworkConfig; ScoreStore.ScoreImported += score => Schedule(() => LoadScore(score)); if (!Host.IsPrimaryInstance) { Logger.Log(@"osu! does not support multiple running instances.", LoggingTarget.Runtime, LogLevel.Error); Environment.Exit(0); } if (args?.Length > 0) { var paths = args.Where(a => !a.StartsWith(@"-")); Task.Run(() => Import(paths.ToArray())); } dependencies.CacheAs(this); // bind config int to database RulesetInfo configRuleset = LocalConfig.GetBindable <int>(OsuSetting.Ruleset); Ruleset.Value = RulesetStore.GetRuleset(configRuleset.Value) ?? RulesetStore.AvailableRulesets.First(); Ruleset.ValueChanged += r => configRuleset.Value = r.ID ?? 0; // bind config int to database SkinInfo configSkin = LocalConfig.GetBindable <int>(OsuSetting.Skin); SkinManager.CurrentSkinInfo.ValueChanged += s => configSkin.Value = s.ID; configSkin.ValueChanged += id => SkinManager.CurrentSkinInfo.Value = SkinManager.Query(s => s.ID == id) ?? SkinInfo.Default; configSkin.TriggerChange(); LocalConfig.BindWith(OsuSetting.VolumeInactive, inactiveVolumeAdjust); }
public BeatmapInfo ToBeatmap(RulesetStore rulesets) { var set = BeatmapSet?.ToBeatmapSet(rulesets); return(new BeatmapInfo { Metadata = set?.Metadata ?? this, Ruleset = rulesets.GetRuleset(ruleset), StarDifficulty = starDifficulty, OnlineBeatmapID = OnlineBeatmapID, Version = version, Length = TimeSpan.FromSeconds(length).TotalMilliseconds, Status = Status, BeatmapSet = set, Metrics = metrics, MaxCombo = maxCombo, BaseDifficulty = new BeatmapDifficulty { DrainRate = drainRate, CircleSize = circleSize, ApproachRate = approachRate, OverallDifficulty = overallDifficulty, }, OnlineInfo = new BeatmapOnlineInfo { PlayCount = playCount, PassCount = passCount, CircleCount = circleCount, SliderCount = sliderCount, }, }); }
private void showMore() { var req = new GetUserScoresRequest(user.Id, type, visiblePages++ *5); showMoreLoading.Show(); showMoreButton.Hide(); req.Success += scores => { foreach (var s in scores) { s.ApplyRuleset(rulesets.GetRuleset(s.OnlineRulesetID)); } showMoreButton.FadeTo(scores.Count == 5 ? 1 : 0); showMoreLoading.Hide(); if (scores.Any()) { missing.Hide(); foreach (OnlineScore score in scores) { scoreContainer.Add(new DrawableScore(score, includeWeigth ? Math.Pow(0.95, scoreContainer.Count) : -1) { RelativeSizeAxes = Axes.X, Height = 60, }); } } }; Schedule(() => { api.Queue(req); }); }
private void load() { dependencies.CacheAs(this); dependencies.Cache(SentryLogger); dependencies.Cache(osuLogo = new OsuLogo { Alpha = 0 }); // bind config int to database RulesetInfo configRuleset = LocalConfig.GetBindable <int>(OsuSetting.Ruleset); var preferredRuleset = RulesetStore.GetRuleset(configRuleset.Value); try { Ruleset.Value = preferredRuleset ?? RulesetStore.AvailableRulesets.First(); } catch (Exception e) { // on startup, a ruleset may be selected which has compatibility issues. Logger.Error(e, $@"Failed to switch to preferred ruleset {preferredRuleset}."); Ruleset.Value = RulesetStore.AvailableRulesets.First(); } Ruleset.ValueChanged += r => configRuleset.Value = r.NewValue.ID ?? 0; // bind config int to database SkinInfo configSkin = LocalConfig.GetBindable <int>(OsuSetting.Skin); SkinManager.CurrentSkinInfo.ValueChanged += skin => configSkin.Value = skin.NewValue.ID; configSkin.ValueChanged += skinId => { var skinInfo = SkinManager.Query(s => s.ID == skinId.NewValue); if (skinInfo == null) { switch (skinId.NewValue) { case -1: skinInfo = DefaultLegacySkin.Info; break; default: skinInfo = SkinInfo.Default; break; } } SkinManager.CurrentSkinInfo.Value = skinInfo; }; configSkin.TriggerChange(); IsActive.BindValueChanged(active => updateActiveState(active.NewValue), true); Audio.AddAdjustment(AdjustableProperty.Volume, inactiveVolumeFade); SelectedMods.BindValueChanged(modsChanged); Beatmap.BindValueChanged(beatmapChanged, true); }
public ScoreInfo CreateScoreInfo(RulesetStore rulesets, PlaylistItem playlistItem, [NotNull] BeatmapInfo beatmap) { var rulesetInstance = playlistItem.Ruleset.Value.CreateInstance(); var scoreInfo = new ScoreInfo { OnlineScoreID = ID, TotalScore = TotalScore, MaxCombo = MaxCombo, BeatmapInfo = beatmap, BeatmapInfoID = playlistItem.BeatmapID, Ruleset = rulesets.GetRuleset(playlistItem.RulesetID), RulesetID = playlistItem.RulesetID, Statistics = Statistics, User = User, Accuracy = Accuracy, Date = EndedAt, Hash = string.Empty, // todo: temporary? Rank = Rank, Mods = Mods?.Select(m => m.ToMod(rulesetInstance)).ToArray() ?? Array.Empty <Mod>(), Position = Position, }; return(scoreInfo); }
private void load(RulesetStore rulesets) { var rateAdjustClock = new StopwatchClock(true); framedClock = new FramedClock(rateAdjustClock); AddStep(@"circles", () => loadHitobjects(HitObjectType.Circle)); AddStep(@"slider", () => loadHitobjects(HitObjectType.Slider)); AddStep(@"spinner", () => loadHitobjects(HitObjectType.Spinner)); AddToggleStep("Auto", state => { auto = state; loadHitobjects(mode); }); AddSliderStep("Playback speed", 0.0, 2.0, 0.5, v => rateAdjustClock.Rate = v); framedClock.ProcessFrame(); var clockAdjustContainer = new Container { RelativeSizeAxes = Axes.Both, Clock = framedClock, Children = new[] { playfieldContainer = new OsuInputManager(rulesets.GetRuleset(0)) { RelativeSizeAxes = Axes.Both }, approachContainer = new Container { RelativeSizeAxes = Axes.Both } } }; Add(clockAdjustContainer); }
protected override void OnRoomUpdated() { base.OnRoomUpdated(); if (Room == null) { return; } const double fade_time = 50; var ruleset = rulesets.GetRuleset(Room.Settings.RulesetID).CreateInstance(); var currentModeRank = User.User?.RulesetsStatistics?.GetValueOrDefault(ruleset.ShortName)?.GlobalRank; userRankText.Text = currentModeRank != null ? $"#{currentModeRank.Value:N0}" : string.Empty; userStateDisplay.UpdateStatus(User.State, User.BeatmapAvailability); if (Room.Host?.Equals(User) == true) { crown.FadeIn(fade_time); } else { crown.FadeOut(fade_time); } // If the mods are updated at the end of the frame, the flow container will skip a reflow cycle: https://github.com/ppy/osu-framework/issues/4187 // This looks particularly jarring here, so re-schedule the update to that start of our frame as a fix. Schedule(() => userModsDisplay.Current.Value = User.Mods.Select(m => m.ToMod(ruleset)).ToList()); }
public BeatmapInfo ToBeatmap(RulesetStore rulesets) { return(new BeatmapInfo { Metadata = this, Ruleset = rulesets.GetRuleset(ruleset), StarDifficulty = starDifficulty, OnlineBeatmapID = onlineBeatmapID, Version = version, BaseDifficulty = new BeatmapDifficulty { DrainRate = drainRate, CircleSize = circleSize, ApproachRate = approachRate, OverallDifficulty = overallDifficulty, }, OnlineInfo = new BeatmapOnlineInfo { PlayCount = playCount, PassCount = passCount, Length = length, CircleCount = circleCount, SliderCount = sliderCount, }, }); }
public virtual BeatmapInfo ToBeatmap(RulesetStore rulesets) { var set = BeatmapSet?.ToBeatmapSet(rulesets); return(new BeatmapInfo { Metadata = set?.Metadata ?? this, Ruleset = rulesets.GetRuleset(ruleset), StarDifficulty = starDifficulty, OnlineBeatmapID = OnlineBeatmapID, Version = version, // this is actually an incorrect mapping (Length is calculated as drain length in lazer's import process, see BeatmapManager.calculateLength). Length = TimeSpan.FromSeconds(length).TotalMilliseconds, Status = Status, BeatmapSet = set, Metrics = metrics, MaxCombo = maxCombo, BaseDifficulty = new BeatmapDifficulty { DrainRate = drainRate, CircleSize = circleSize, ApproachRate = approachRate, OverallDifficulty = overallDifficulty, }, OnlineInfo = new BeatmapOnlineInfo { PlayCount = playCount, PassCount = passCount, CircleCount = circleCount, SliderCount = sliderCount, }, }); }
private void load(RulesetStore rulesets) { var rateAdjustClock = new StopwatchClock(true); framedClock = new FramedClock(rateAdjustClock); AddStep(@"KaraokeObject_Demo001", () => loadHitobjects(DemoKaraokeObject.GenerateDemo001())); AddStep(@"ResetPosition", () => { appearPosition = new Vector2(0, -200); }); framedClock.ProcessFrame(); var clockAdjustContainer = new Container { RelativeSizeAxes = Axes.Both, Clock = framedClock, Children = new[] { playfieldContainer = new KaraokeInputManager(rulesets.GetRuleset(0)) { RelativeSizeAxes = Axes.Both }, } }; Add(clockAdjustContainer); }
public ScoreInfo CreateScoreInfo(RulesetStore rulesets) { var ruleset = rulesets.GetRuleset(OnlineRulesetID); var mods = Mods != null?ruleset.CreateInstance().GetAllMods().Where(mod => Mods.Contains(mod.Acronym)).ToArray() : Array.Empty <Mod>(); var scoreInfo = new ScoreInfo { TotalScore = TotalScore, MaxCombo = MaxCombo, User = User, Accuracy = Accuracy, OnlineScoreID = OnlineScoreID, Date = Date, PP = PP, Beatmap = Beatmap, RulesetID = OnlineRulesetID, Hash = Replay ? "online" : string.Empty, // todo: temporary? Rank = Rank, Ruleset = ruleset, Mods = mods, IsLegacyScore = true }; if (Statistics != null) { foreach (var kvp in Statistics) { switch (kvp.Key) { case @"count_geki": scoreInfo.SetCountGeki(kvp.Value); break; case @"count_300": scoreInfo.SetCount300(kvp.Value); break; case @"count_katu": scoreInfo.SetCountKatu(kvp.Value); break; case @"count_100": scoreInfo.SetCount100(kvp.Value); break; case @"count_50": scoreInfo.SetCount50(kvp.Value); break; case @"count_miss": scoreInfo.SetCountMiss(kvp.Value); break; } } } return(scoreInfo); }
private void load() { if (!Host.IsPrimaryInstance && !DebugUtils.IsDebugBuild) { Logger.Log(@"osu! does not support multiple running instances.", LoggingTarget.Runtime, LogLevel.Error); Environment.Exit(0); } if (args?.Length > 0) { var paths = args.Where(a => !a.StartsWith('-')).ToArray(); if (paths.Length > 0) Task.Run(() => Import(paths)); } dependencies.CacheAs(this); dependencies.Cache(SentryLogger); dependencies.Cache(osuLogo = new OsuLogo { Alpha = 0 }); // bind config int to database RulesetInfo configRuleset = LocalConfig.GetBindable<int>(OsuSetting.Ruleset); Ruleset.Value = RulesetStore.GetRuleset(configRuleset.Value) ?? RulesetStore.AvailableRulesets.First(); Ruleset.ValueChanged += r => configRuleset.Value = r.NewValue.ID ?? 0; // bind config int to database SkinInfo configSkin = LocalConfig.GetBindable<int>(OsuSetting.Skin); SkinManager.CurrentSkinInfo.ValueChanged += skin => configSkin.Value = skin.NewValue.ID; configSkin.ValueChanged += skinId => { var skinInfo = SkinManager.Query(s => s.ID == skinId.NewValue); if (skinInfo == null) { switch (skinId.NewValue) { case -1: skinInfo = DefaultLegacySkin.Info; break; default: skinInfo = SkinInfo.Default; break; } } SkinManager.CurrentSkinInfo.Value = skinInfo; }; configSkin.TriggerChange(); IsActive.BindValueChanged(active => updateActiveState(active.NewValue), true); Audio.AddAdjustment(AdjustableProperty.Volume, inactiveVolumeFade); SelectedMods.BindValueChanged(modsChanged); Beatmap.BindValueChanged(beatmapChanged, true); }
private void load(RulesetStore rulesets, SettingsStore settings) { maniaRuleset = rulesets.GetRuleset(0); if (maniaRuleset != null) { dependencies.Cache(new KaraokeConfigManager(settings, maniaRuleset, 0)); } }
private void load(OsuGame game, RulesetStore rulesets, OsuColour colours) { DisplayStyleControl.Dropdown.AccentColour = colours.BlueDark; Ruleset.Value = game?.Ruleset.Value ?? rulesets.GetRuleset(0); foreach (var r in rulesets.AvailableRulesets) { modeButtons.Add(new RulesetToggleButton(Ruleset, r)); } }
private void load(RulesetStore rulesets, OsuColour colours, Bindable <RulesetInfo> ruleset) { DisplayStyleControl.Dropdown.AccentColour = colours.BlueDark; Ruleset.Value = ruleset ?? rulesets.GetRuleset(0); foreach (var r in rulesets.AvailableRulesets) { modeButtons.Add(new RulesetToggleButton(Ruleset, r)); } }
private void load(OsuGame game, RulesetStore rulesets, OsuColour colours) { DisplayStyleControl.Dropdown.AccentColour = colours.BlueDark; Ruleset.BindTo(game?.Ruleset ?? new Bindable <RulesetInfo> { Value = rulesets.GetRuleset(0) }); foreach (var r in rulesets.AllRulesets) { modeButtons.Add(new RulesetToggleButton(Ruleset, r)); } }
private void load(RulesetStore rulesets) { Info info = new Info(); Add(info); AddStep(@"set name", () => info.Name = @"Room Name?"); AddStep(@"set availability", () => info.Availability = RoomAvailability.FriendsOnly); AddStep(@"set status", () => info.Status = new RoomStatusPlaying()); AddStep(@"set beatmap", () => info.Beatmap = new BeatmapInfo { StarDifficulty = 2.4, Ruleset = rulesets.GetRuleset(0), Metadata = new BeatmapMetadata { Title = @"My Song", Artist = @"VisualTests", AuthorString = @"osu!lazer", }, }); AddStep(@"set type", () => info.Type = new GameTypeTagTeam()); AddStep(@"change name", () => info.Name = @"Room Name!"); AddStep(@"change availability", () => info.Availability = RoomAvailability.InviteOnly); AddStep(@"change status", () => info.Status = new RoomStatusOpen()); AddStep(@"null beatmap", () => info.Beatmap = null); AddStep(@"change type", () => info.Type = new GameTypeTeamVersus()); AddStep(@"change beatmap", () => info.Beatmap = new BeatmapInfo { StarDifficulty = 4.2, Ruleset = rulesets.GetRuleset(3), Metadata = new BeatmapMetadata { Title = @"Your Song", Artist = @"Tester", AuthorString = @"Someone", }, }); }
public void TestRulesetChange() { ScoreInfo testScoreInfo; AddStep("Add score for current user", () => { testScoreInfo = TestResources.CreateTestScoreInfo(importedBeatmap); testScoreInfo.User = API.LocalUser.Value; testScoreInfo.Rank = ScoreRank.B; scoreManager.Import(testScoreInfo); }); AddUntilStep("Wait for initial presence", () => topLocalRank.IsPresent); AddStep("Change ruleset", () => Ruleset.Value = rulesets.GetRuleset("fruits")); AddUntilStep("Became not present", () => !topLocalRank.IsPresent); AddStep("Change ruleset back", () => Ruleset.Value = rulesets.GetRuleset("osu")); AddUntilStep("Became present", () => topLocalRank.IsPresent); }
protected override void OnRoomUpdated() { base.OnRoomUpdated(); if (Room == null || Client.LocalUser == null) { return; } const double fade_time = 50; // Todo: Should use the room's selected item to determine ruleset. var ruleset = rulesets.GetRuleset(0).CreateInstance(); int?currentModeRank = User.User?.RulesetsStatistics?.GetValueOrDefault(ruleset.ShortName)?.GlobalRank; userRankText.Text = currentModeRank != null ? $"#{currentModeRank.Value:N0}" : string.Empty; userStateDisplay.UpdateStatus(User.State, User.BeatmapAvailability); if ((User.BeatmapAvailability.State == DownloadState.LocallyAvailable) && (User.State != MultiplayerUserState.Spectating)) { userModsDisplay.FadeIn(fade_time); } else { userModsDisplay.FadeOut(fade_time); } if (Client.IsHost && !User.Equals(Client.LocalUser)) { kickButton.FadeIn(fade_time); } else { kickButton.FadeOut(fade_time); } if (Room.Host?.Equals(User) == true) { crown.FadeIn(fade_time); } else { crown.FadeOut(fade_time); } // If the mods are updated at the end of the frame, the flow container will skip a reflow cycle: https://github.com/ppy/osu-framework/issues/4187 // This looks particularly jarring here, so re-schedule the update to that start of our frame as a fix. Schedule(() => userModsDisplay.Current.Value = User.Mods.Select(m => m.ToMod(ruleset)).ToList()); }
public BeatmapInfo ToBeatmap(RulesetStore rulesets) { return(new BeatmapInfo { Metadata = this, Ruleset = rulesets.GetRuleset(ruleset), StarDifficulty = starDifficulty, OnlineInfo = new BeatmapOnlineInfo { PlayCount = playCount, PassCount = passCount, }, }); }
private void showMore() { var req = new GetUserScoresRequest(user.Value.Id, type, visiblePages++ *5); showMoreLoading.Show(); showMoreButton.Hide(); req.Success += scores => { foreach (var s in scores) { s.ApplyRuleset(rulesets.GetRuleset(s.OnlineRulesetID)); } showMoreButton.FadeTo(scores.Count == 5 ? 1 : 0); showMoreLoading.Hide(); if (!scores.Any()) { return; } missing.Hide(); foreach (OnlineScore score in scores) { DrawableScore drawableScore; switch (type) { default: drawableScore = new DrawablePerformanceScore(score, includeWeight ? Math.Pow(0.95, scoreContainer.Count) : (double?)null); break; case ScoreType.Recent: drawableScore = new DrawableTotalScore(score); break; } drawableScore.RelativeSizeAxes = Axes.X; drawableScore.Height = 60; scoreContainer.Add(drawableScore); } }; api.Queue(req); }
private void load(GameHost host, AudioManager audio) { Dependencies.Cache(rulesets = new RulesetStore(ContextFactory)); Dependencies.Cache(manager = new BeatmapManager(LocalStorage, ContextFactory, rulesets, null, audio, Resources, host, Beatmap.Default)); beatmaps = new List <BeatmapInfo>(); var metadata = new BeatmapMetadata { Artist = "Some Artist", Title = "Some Beatmap", AuthorString = "Some Author" }; var beatmapSetInfo = new BeatmapSetInfo { OnlineID = 10, Hash = Guid.NewGuid().ToString().ComputeMD5Hash(), Metadata = metadata, DateAdded = DateTimeOffset.UtcNow }; for (int i = 0; i < 8; ++i) { int beatmapId = 10 * 10 + i; int length = RNG.Next(30000, 200000); double bpm = RNG.NextSingle(80, 200); var beatmap = new BeatmapInfo { Ruleset = rulesets.GetRuleset(i % 4), OnlineID = beatmapId, Length = length, BPM = bpm, Metadata = metadata, BaseDifficulty = new BeatmapDifficulty() }; beatmaps.Add(beatmap); beatmapSetInfo.Beatmaps.Add(beatmap); } manager.Import(beatmapSetInfo).Wait(); }
private void load(FrameworkConfigManager frameworkConfig) { this.frameworkConfig = frameworkConfig; if (!Host.IsPrimaryInstance) { Logger.Log(@"osu! does not support multiple running instances.", LoggingTarget.Runtime, LogLevel.Error); Environment.Exit(0); } if (args?.Length > 0) { var paths = args.Where(a => !a.StartsWith(@"-")).ToArray(); if (paths.Length > 0) { Task.Run(() => Import(paths)); } } dependencies.CacheAs(this); dependencies.Cache(RavenLogger); dependencies.CacheAs(ruleset); dependencies.CacheAs <IBindable <RulesetInfo> >(ruleset); dependencies.Cache(osuLogo = new OsuLogo { Alpha = 0 }); // bind config int to database RulesetInfo configRuleset = LocalConfig.GetBindable <int>(OsuSetting.Ruleset); ruleset.Value = RulesetStore.GetRuleset(configRuleset.Value) ?? RulesetStore.AvailableRulesets.First(); ruleset.ValueChanged += r => configRuleset.Value = r.NewValue.ID ?? 0; // bind config int to database SkinInfo configSkin = LocalConfig.GetBindable <int>(OsuSetting.Skin); SkinManager.CurrentSkinInfo.ValueChanged += skin => configSkin.Value = skin.NewValue.ID; configSkin.ValueChanged += skinId => SkinManager.CurrentSkinInfo.Value = SkinManager.Query(s => s.ID == skinId.NewValue) ?? SkinInfo.Default; configSkin.TriggerChange(); LocalConfig.BindWith(OsuSetting.VolumeInactive, inactiveVolumeAdjust); IsActive.BindValueChanged(active => updateActiveState(active.NewValue), true); }
private void load(RulesetStore rulesets) { Children = new Drawable[] { new CatchInputManager(rulesets.GetRuleset(2)) { RelativeSizeAxes = Axes.Both, Child = new CatcherArea { RelativePositionAxes = Axes.Both, RelativeSizeAxes = Axes.Both, Anchor = Anchor.BottomLeft, Origin = Anchor.BottomLeft, Size = new Vector2(1, 0.2f), } }, }; }