private void RecommendStore(IDialogContext context) { IList <ScoreStore> stores = context.UserData.GetValue <IList <ScoreStore> >("_stores"); ScoreStore store = stores.FirstOrDefault(); if (store != null) { context.UserData.SetValue("_storeNow", store); IMessageActivity heroCard = ShowRecommend(context, store); if (heroCard == null) { RecommendStore(context); } else { stores.Remove(store); context.UserData.SetValue("_stores", stores); context.PostAsync(heroCard); context.Wait(AfterRecommendStoreAsync); } } else { context.Done <object>(_dialogResponse); } }
private IMessageActivity ShowStoreAddress(IDialogContext context, ScoreStore store) { try { IMessageActivity rootActivity = context.MakeMessage(); rootActivity.ChannelData = JsonConvert.SerializeObject(new ChannelData() { Payload = new ChannelDataMessage() { Message = new LocationMessage() { Title = store.Name, Address = store.Address, Latitude = store.Latitude, Longitude = store.Longitude } } }); return(rootActivity); } catch (Exception ex) { Logger.Write(EnumLogCategory.Information, ex.ToString()); return(null); } }
private async Task AfterRecommendStoreAsync(IDialogContext context, IAwaitable <IMessageActivity> result) { IMessageActivity message = await result; User user = context.UserData.GetValue <User>("User"); ScoreStore storeNow = context.UserData.GetValue <ScoreStore>("_storeNow"); switch (message.Text) { case "想知道店家地點~": var storeaddress = ShowStoreAddress(context, storeNow); if (storeaddress == null) { RecommendStore(context); } else { context.PostAsync(storeaddress); await Task.Delay(TimeSpan.FromSeconds(2)); IMessageActivity heroCard = ShowRecommend(context, storeNow); context.PostAsync(heroCard); context.Wait(AfterRecommendStoreAsync); } break; case "這間我想吃!": _dialogResponse = new DialogResponse() { Result = true }; _storeService.SaveRecord(storeNow.Id, user.Id, 1); //去過的Score -1 _storeService.InsertOrUpdateScore(storeNow.Id, user.Id, -1); context.Done <object>(_dialogResponse); break; case "這間好雷...下一間!": //SaveHateList _favoriteService.SaveUserHateList(storeNow.Id, user.Id); _storeService.SaveRecord(storeNow.Id, user.Id, -5); RecommendStore(context); break; case "推薦我下一間!": _storeService.SaveRecord(storeNow.Id, user.Id, 0); //沒去過的Score + 1 _storeService.InsertOrUpdateScore(storeNow.Id, user.Id, 1); RecommendStore(context); break; default: RecommendStore(context); break; } }
//Ensures that this object carrys across scenes, while not duplicating void Awake() { if (instance != null) { Destroy(gameObject); } else { instance = this; DontDestroyOnLoad(gameObject); } waveCount = 0; }
// Use this for initialization void Start() { if (first) { ScoreStore.LoadOffline(); BeatmapStore.LoadAll(); } first = true; PlayButton.onClick.AddListener(() => { Initiate.Fade("SongSelectScene", Color.black, 2f); }); }
public ScoreIPCChannel(IIpcHost host, ScoreStore scores = null) : base(host) { this.scores = scores; MessageReceived += msg => { Debug.Assert(scores != null); ImportAsync(msg.Path).ContinueWith(t => { if (t.Exception != null) { throw t.Exception; } }, TaskContinuationOptions.OnlyOnFaulted); }; }
private void fileDrop(object sender, FileDropEventArgs e) { var filePaths = new [] { e.FileName }; if (filePaths.All(f => Path.GetExtension(f) == @".osz")) { Task.Factory.StartNew(() => BeatmapManager.Import(filePaths), TaskCreationOptions.LongRunning); } else if (filePaths.All(f => Path.GetExtension(f) == @".osr")) { Task.Run(() => { var score = ScoreStore.ReadReplayFile(filePaths.First()); Schedule(() => LoadScore(score)); }); } }
private void dragDrop(DragEventArgs e) { // this method will only be executed if e.Effect in dragEnter gets set to something other that None. var dropData = (object[])e.Data.GetData(DataFormats.FileDrop); var filePaths = dropData.Select(f => f.ToString()).ToArray(); if (filePaths.All(f => Path.GetExtension(f) == @".osz")) { Task.Run(() => BeatmapManager.Import(filePaths)); } else if (filePaths.All(f => Path.GetExtension(f) == @".osr")) { Task.Run(() => { var score = ScoreStore.ReadReplayFile(filePaths.First()); Schedule(() => LoadScore(score)); }); } }
private IMessageActivity ShowRecommend(IDialogContext context, ScoreStore store) { try { IMessageActivity rootActivity = context.MakeMessage(); rootActivity.Attachments = new List <Attachment>(); // AttachmentLayout options are list or carousel rootActivity.AttachmentLayout = "carousel"; List <CardImage> cardImages1 = new List <CardImage>(); cardImages1.Add(new CardImage(url: store.PictureUrl)); string PositiveRecordString = "這間還沒有其他人吃過唷,歡迎嘗鮮!"; if (store.PositiveRecordList != null) { PositiveRecordString = $"☆{store.PositiveRecordList.Count}人覺得這間不錯!"; } HeroCard card1 = new HeroCard() { Title = $"skr 推薦「{store.Name}」給你", Subtitle = PositiveRecordString, Images = cardImages1, Buttons = GenerateButtons(SkrConstants.RecommandActionMap.Select(o => o.Name)) }; Attachment plAttachment1 = card1.ToAttachment(); // Add the Attachment to the reply message rootActivity.Attachments.Add(plAttachment1); var json = new JavaScriptSerializer().Serialize(rootActivity); Logger.Write(EnumLogCategory.Error, json); return(rootActivity); } catch (Exception ex) { Logger.Write(EnumLogCategory.Information, ex.ToString()); return(null); } }
private ScoreStore RandomOneStore(IDialogContext context) { // Candidate IList <ScoreStore> stores = context.UserData.GetValue <IList <ScoreStore> >("_stores"); ScoreStore result = null; if (stores != null && stores.Count > 0) { // Random one store Random random = new Random(); int index = random.Next(stores.Count - 1); result = stores[index]; // Remove the same store from store pool stores = stores.Where(s => s.Id != result.Id).ToList(); context.UserData.SetValue("_stores", stores); } return(result); }
public IList <ScoreStore> GetRandomList(User user, EnumSkrType type) { IList <Store> stores = _storeDao.GetList(user, type); stores = _recordDao.GetPositiveRecordNum(stores); IList <ScoreStore> scoreStores = CalculateScore(stores, EnumSkrType.Random, user); IList <ScoreStore> result = new List <ScoreStore>(); int totalFinalScore = 0; scoreStores.ToList() .ForEach(s => { int count = Convert.ToInt32(s.FinalScore); totalFinalScore += count; }); scoreStores.ToList() .ForEach(s => { int count = Convert.ToInt32(s.FinalScore / totalFinalScore * 500); IList <ScoreStore> sameScoreStores = Enumerable.Repeat(s, count).ToList(); result = result.Concat(sameScoreStores).ToList(); }); // Shuffle list Random random = new Random(); int index = scoreStores.Count; while (index > 1) { index--; int swapIndex = random.Next(index + 1); ScoreStore value = scoreStores[swapIndex]; scoreStores[swapIndex] = scoreStores[index]; scoreStores[index] = value; } return(result); }
public void Load(Result result) { this.result = result; accuracyListText = GameObject.Find("AccuracyListText").GetComponent <TextMeshProUGUI>(); accuracyText = GameObject.Find("AccuracyText").GetComponent <TextMeshProUGUI>(); scoreText = GameObject.Find("ScoreText").GetComponent <TextMeshProUGUI>(); highestComboText = GameObject.Find("HighestComboText").GetComponent <TextMeshProUGUI>(); string format = accuracyListText.text; SetAccuracyList(format); accuracyText.text = "Accuracy: " + result.totalAccuracy + "%"; scoreText.text = "Score: " + result.score.ToString("#,##0"); highestComboText.text = "Highest Combo: " + result.highestCombo + "x"; ScoreStore.AddOfflineScore(result); Helper.SetBackgroundImage(Beatmap.CurrentlyLoaded.BackgroundImage, 0.25f); }
public void Start() { ScoreStore.LoadOffline(); if (BeatmapStore.Beatmaps == null) { BeatmapStore.LoadAll(); } SongListItemRect = SongListItemPrefab.GetComponent <RectTransform>().rect; ScoreListItemRect = ScoreListItemPrefab.GetComponent <RectTransform>().rect; AddItemsToList( BeatmapStore.Beatmaps.Count, SongListItemPrefab, VerticalSongSelectListPosition, SongListContentTransform, (GameObject songListItem, int index) => { SongListItem item = songListItem.GetComponent <SongListItem>(); item.Load(); item.SetBeatmapInfo(BeatmapStore.Beatmaps[index]); item.SelectedChange(false); } ); if (first) { Selected = UnityEngine.Random.Range(0, BeatmapStore.Beatmaps.Count); } else { Selected = Selected; } isStart = false; first = false; }
private ScoreStore CalculateScore(Store store, ScoreRatio scoreRatio, User user) { ScoreStore scoreStore = new ScoreStore(store); int eatInTenDayRecord = 0; double currentStoreScore = CalculateFirstScore(store, scoreRatio.CurrentStoreScoreRatio); double currentStoreScoreWithOthers = CalculateSecondScore(store, scoreRatio.CurrentStoreScoreWithOthersRatio); double distanceScore = CalculateThirdScore(store, scoreRatio.DistanceScoreRatio); IDictionary <string, double> fourthResult = CalculateFourthScore(store, scoreRatio.TenDayNoEatScoreRatio, user); double tenDayNoEatScore = fourthResult["tenDayNoEatScore"]; eatInTenDayRecord = Convert.ToInt32(fourthResult["eatInTenDayRecord"]); double priceScore = CalculateFifthScore(store, scoreRatio.PriceRatio); double notAlwaysEatScore = CalculateSixthScore(store, scoreRatio.NotAlwaysEatScoreRatio, eatInTenDayRecord); scoreStore.FinalScore = currentStoreScore + currentStoreScoreWithOthers + distanceScore + tenDayNoEatScore + priceScore + notAlwaysEatScore; return(scoreStore); }
private void RecommendStore(IDialogContext context) { ScoreStore store = RandomOneStore(context); if (store != null) { context.UserData.SetValue("_storeNow", store); var heroCard = ShowRecommend(context, store); if (heroCard == null) { RecommendStore(context); } else { context.PostAsync(heroCard); context.Wait(AfterRecommendStore); } } else { context.Done <object>(_dialogResponse); } }
private void load() { Resources.AddStore(new DllResourceStore(@"osu.Game.Resources.dll")); dependencies.Cache(contextFactory = new DatabaseContextFactory(Host)); dependencies.Cache(new LargeTextureStore(new RawTextureLoaderStore(new NamespacedResourceStore <byte[]>(Resources, @"Textures")))); dependencies.CacheAs(this); dependencies.Cache(LocalConfig); runMigrations(); dependencies.Cache(SkinManager = new SkinManager(Host.Storage, contextFactory, Host, Audio)); dependencies.CacheAs <ISkinSource>(SkinManager); var api = new APIAccess(LocalConfig); dependencies.Cache(api); dependencies.CacheAs <IAPIProvider>(api); dependencies.Cache(RulesetStore = new RulesetStore(contextFactory)); dependencies.Cache(FileStore = new FileStore(contextFactory, Host.Storage)); dependencies.Cache(BeatmapManager = new BeatmapManager(Host.Storage, contextFactory, RulesetStore, api, Audio, Host)); dependencies.Cache(ScoreStore = new ScoreStore(Host.Storage, contextFactory, Host, BeatmapManager, RulesetStore)); dependencies.Cache(KeyBindingStore = new KeyBindingStore(contextFactory, RulesetStore)); dependencies.Cache(SettingsStore = new SettingsStore(contextFactory)); dependencies.Cache(RulesetConfigCache = new RulesetConfigCache(SettingsStore)); dependencies.Cache(new OsuColour()); fileImporters.Add(BeatmapManager); fileImporters.Add(ScoreStore); fileImporters.Add(SkinManager); //this completely overrides the framework default. will need to change once we make a proper FontStore. dependencies.Cache(Fonts = new FontStore { ScaleAdjust = 100 }); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/FontAwesome")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/osuFont")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Medium")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-MediumItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-Basic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-Hangul")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-CJK-Basic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-CJK-Compatibility")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Regular")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-RegularItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-SemiBold")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-SemiBoldItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Bold")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BoldItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Light")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-LightItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Black")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BlackItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Venera")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Venera-Light")); var defaultBeatmap = new DummyWorkingBeatmap(this); beatmap = new OsuBindableBeatmap(defaultBeatmap, Audio); BeatmapManager.DefaultBeatmap = defaultBeatmap; // tracks play so loud our samples can't keep up. // this adds a global reduction of track volume for the time being. Audio.Track.AddAdjustment(AdjustableProperty.Volume, new BindableDouble(0.8)); dependencies.CacheAs <BindableBeatmap>(beatmap); dependencies.CacheAs <IBindableBeatmap>(beatmap); FileStore.Cleanup(); AddInternal(api); GlobalActionContainer globalBinding; MenuCursorContainer = new MenuCursorContainer { RelativeSizeAxes = Axes.Both }; MenuCursorContainer.Child = globalBinding = new GlobalActionContainer(this) { RelativeSizeAxes = Axes.Both, Child = content = new OsuTooltipContainer(MenuCursorContainer.Cursor) { RelativeSizeAxes = Axes.Both } }; base.Content.Add(new DrawSizePreservingFillContainer { Child = MenuCursorContainer }); KeyBindingStore.Register(globalBinding); dependencies.Cache(globalBinding); PreviewTrackManager previewTrackManager; dependencies.Cache(previewTrackManager = new PreviewTrackManager()); Add(previewTrackManager); }
private void load() { dependencies.Cache(contextFactory = new DatabaseContextFactory(Host)); dependencies.Cache(this); dependencies.Cache(LocalConfig); try { using (var context = contextFactory.GetContext()) context.Migrate(); } catch (MigrationFailedException) { using (var context = contextFactory.GetContext()) context.Database.EnsureDeleted(); using (var context = contextFactory.GetContext()) context.Migrate(); } dependencies.Cache(API = new APIAccess { Username = LocalConfig.Get <string>(OsuSetting.Username), Token = LocalConfig.Get <string>(OsuSetting.Token) }); dependencies.Cache(RulesetStore = new RulesetStore(contextFactory.GetContext)); dependencies.Cache(FileStore = new FileStore(contextFactory.GetContext, Host.Storage)); dependencies.Cache(BeatmapManager = new BeatmapManager(Host.Storage, contextFactory.GetContext, RulesetStore, API, Host)); dependencies.Cache(ScoreStore = new ScoreStore(Host.Storage, contextFactory.GetContext, Host, BeatmapManager, RulesetStore)); dependencies.Cache(KeyBindingStore = new KeyBindingStore(contextFactory.GetContext, RulesetStore)); dependencies.Cache(new OsuColour()); //this completely overrides the framework default. will need to change once we make a proper FontStore. dependencies.Cache(Fonts = new FontStore { ScaleAdjust = 100 }, true); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/FontAwesome")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/osuFont")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Medium")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-MediumItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-Basic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-Hangul")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-CJK-Basic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-CJK-Compatibility")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Regular")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-RegularItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-SemiBold")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-SemiBoldItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Bold")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BoldItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Light")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-LightItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Black")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BlackItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Venera")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Venera-Light")); var defaultBeatmap = new DummyWorkingBeatmap(this); Beatmap = new NonNullableBindable <WorkingBeatmap>(defaultBeatmap); BeatmapManager.DefaultBeatmap = defaultBeatmap; Beatmap.ValueChanged += b => { var trackLoaded = lastBeatmap?.TrackLoaded ?? false; // compare to last beatmap as sometimes the two may share a track representation (optimisation, see WorkingBeatmap.TransferTo) if (!trackLoaded || lastBeatmap?.Track != b.Track) { if (trackLoaded) { Debug.Assert(lastBeatmap != null); Debug.Assert(lastBeatmap.Track != null); lastBeatmap.DisposeTrack(); } Audio.Track.AddItem(b.Track); } lastBeatmap = b; }; API.Register(this); FileStore.Cleanup(); }
private void load() { dependencies.Cache(contextFactory = new DatabaseContextFactory(Host)); dependencies.Cache(new LargeTextureStore(new RawTextureLoaderStore(new NamespacedResourceStore <byte[]>(Resources, @"Textures")))); dependencies.CacheAs(this); dependencies.Cache(LocalConfig); runMigrations(); dependencies.Cache(API = new APIAccess { Username = LocalConfig.Get <string>(OsuSetting.Username), Token = LocalConfig.Get <string>(OsuSetting.Token) }); dependencies.Cache(RulesetStore = new RulesetStore(contextFactory)); dependencies.Cache(FileStore = new FileStore(contextFactory, Host.Storage)); dependencies.Cache(BeatmapManager = new BeatmapManager(Host.Storage, contextFactory, RulesetStore, API, Host)); dependencies.Cache(ScoreStore = new ScoreStore(Host.Storage, contextFactory, Host, BeatmapManager, RulesetStore)); dependencies.Cache(KeyBindingStore = new KeyBindingStore(contextFactory, RulesetStore)); dependencies.Cache(SettingsStore = new SettingsStore(contextFactory)); dependencies.Cache(new OsuColour()); fileImporters.Add(BeatmapManager); fileImporters.Add(ScoreStore); //this completely overrides the framework default. will need to change once we make a proper FontStore. dependencies.Cache(Fonts = new FontStore { ScaleAdjust = 100 }); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/FontAwesome")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/osuFont")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Medium")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-MediumItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-Basic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-Hangul")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-CJK-Basic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-CJK-Compatibility")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Regular")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-RegularItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-SemiBold")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-SemiBoldItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Bold")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BoldItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Light")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-LightItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Black")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BlackItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Venera")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Venera-Light")); var defaultBeatmap = new DummyWorkingBeatmap(this); Beatmap = new NonNullableBindable <WorkingBeatmap>(defaultBeatmap); BeatmapManager.DefaultBeatmap = defaultBeatmap; // tracks play so loud our samples can't keep up. // this adds a global reduction of track volume for the time being. Audio.Track.AddAdjustment(AdjustableProperty.Volume, new BindableDouble(0.8)); Beatmap.ValueChanged += b => { var trackLoaded = lastBeatmap?.TrackLoaded ?? false; // compare to last beatmap as sometimes the two may share a track representation (optimisation, see WorkingBeatmap.TransferTo) if (!trackLoaded || lastBeatmap?.Track != b.Track) { if (trackLoaded) { Debug.Assert(lastBeatmap != null); Debug.Assert(lastBeatmap.Track != null); lastBeatmap.RecycleTrack(); } Audio.Track.AddItem(b.Track); } lastBeatmap = b; }; API.Register(this); FileStore.Cleanup(); }
private void load() { dependencies.Cache(this); dependencies.Cache(LocalConfig); connection = Host.Storage.GetDatabase(@"client"); connection.CreateTable <StoreVersion>(); dependencies.Cache(RulesetStore = new RulesetStore(connection)); dependencies.Cache(FileStore = new FileStore(connection, Host.Storage)); dependencies.Cache(BeatmapManager = new BeatmapManager(Host.Storage, FileStore, connection, RulesetStore, Host)); dependencies.Cache(ScoreStore = new ScoreStore(Host.Storage, connection, Host, BeatmapManager, RulesetStore)); dependencies.Cache(KeyBindingStore = new KeyBindingStore(connection, RulesetStore)); dependencies.Cache(new OsuColour()); //this completely overrides the framework default. will need to change once we make a proper FontStore. dependencies.Cache(Fonts = new FontStore { ScaleAdjust = 100 }, true); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/FontAwesome")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/osuFont")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Medium")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-MediumItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-Basic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-Hangul")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-CJK-Basic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Noto-CJK-Compatibility")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Regular")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-RegularItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-SemiBold")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-SemiBoldItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Bold")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BoldItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Light")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-LightItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-Black")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Exo2.0-BlackItalic")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Venera")); Fonts.AddStore(new GlyphStore(Resources, @"Fonts/Venera-Light")); var defaultBeatmap = new DummyWorkingBeatmap(this); Beatmap = new NonNullableBindable <WorkingBeatmap>(defaultBeatmap); BeatmapManager.DefaultBeatmap = defaultBeatmap; dependencies.Cache(API = new APIAccess { Username = LocalConfig.Get <string>(OsuSetting.Username), Token = LocalConfig.Get <string>(OsuSetting.Token) }); Beatmap.ValueChanged += b => { // compare to last beatmap as sometimes the two may share a track representation (optimisation, see WorkingBeatmap.TransferTo) if (lastBeatmap?.Track != b.Track) { lastBeatmap?.Track?.Dispose(); Audio.Track.AddItem(b.Track); } lastBeatmap = b; }; API.Register(this); }