Exemple #1
0
        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);
            }
        }
Exemple #2
0
        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);
            }
        }
Exemple #3
0
        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;
            }
        }
Exemple #4
0
 //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);
        });
    }
Exemple #6
0
 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));
                });
            }
        }
Exemple #8
0
        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));
                });
            }
        }
Exemple #9
0
        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);
            }
        }
Exemple #10
0
        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);
        }
Exemple #11
0
        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;
    }
Exemple #14
0
        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);
        }
Exemple #15
0
        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);
            }
        }
Exemple #16
0
        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);
        }
Exemple #17
0
        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();
        }
Exemple #18
0
        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();
        }
Exemple #19
0
        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);
        }