예제 #1
0
        public void TestBallTintChangedOnAccentChange()
        {
            DrawableSlider dho = null;

            AddStep("create slider", () =>
            {
                var tintingSkin = skinManager.GetSkin(DefaultLegacySkin.CreateInfo());
                tintingSkin.Configuration.ConfigDictionary["AllowSliderBallTint"] = "1";

                Child = new SkinProvidingContainer(tintingSkin)
                {
                    RelativeSizeAxes = Axes.Both,
                    Child            = dho = new DrawableSlider(prepareObject(new Slider
                    {
                        Position            = new Vector2(256, 192),
                        IndexInCurrentCombo = 0,
                        StartTime           = Time.Current,
                        Path = new SliderPath(PathType.Linear, new[]
                        {
                            Vector2.Zero,
                            new Vector2(150, 100),
                            new Vector2(300, 0),
                        })
                    }))
                };
            });

            AddStep("set accent white", () => dho.AccentColour.Value = Color4.White);
            AddAssert("ball is white", () => dho.ChildrenOfType <SliderBall>().Single().AccentColour == Color4.White);

            AddStep("set accent red", () => dho.AccentColour.Value = Color4.Red);
            AddAssert("ball is red", () => dho.ChildrenOfType <SliderBall>().Single().AccentColour == Color4.Red);
        }
예제 #2
0
        private Drawable setupSkinHierarchy(Drawable child, ISkin skin)
        {
            var legacySkinProvider    = new SkinProvidingContainer(skins.GetSkin(DefaultLegacySkin.CreateInfo()));
            var testSkinProvider      = new SkinProvidingContainer(skin);
            var legacySkinTransformer = new SkinProvidingContainer(new CatchLegacySkinTransformer(testSkinProvider));

            return(legacySkinProvider
                   .WithChild(testSkinProvider
                              .WithChild(legacySkinTransformer
                                         .WithChild(child))));
        }
예제 #3
0
 public TestSkin(string resourceName, IStorageResourceProvider resources)
     : base(DefaultLegacySkin.CreateInfo(), new TestResourceStore(resourceName), resources, "skin.ini")
 {
 }
예제 #4
0
파일: OsuGame.cs 프로젝트: bdach/osu
        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 <string>(OsuSetting.Ruleset);
            uiScale       = LocalConfig.GetBindable <float>(OsuSetting.UIScale);

            var preferredRuleset = int.TryParse(configRuleset.Value, out int rulesetId)
                                   // int parsing can be removed 20220522
                ? RulesetStore.GetRuleset(rulesetId)
                : 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.ShortName;

            // bind config int to database SkinInfo
            configSkin = LocalConfig.GetBindable <string>(OsuSetting.Skin);
            SkinManager.CurrentSkinInfo.ValueChanged += skin => configSkin.Value = skin.NewValue.ID.ToString();
            configSkin.ValueChanged += skinId =>
            {
                ILive <SkinInfo> skinInfo = null;

                if (Guid.TryParse(skinId.NewValue, out var guid))
                {
                    skinInfo = SkinManager.Query(s => s.ID == guid);
                }

                if (skinInfo == null)
                {
                    if (guid == SkinInfo.CLASSIC_SKIN)
                    {
                        skinInfo = DefaultLegacySkin.CreateInfo().ToLive();
                    }
                }

                SkinManager.CurrentSkinInfo.Value = skinInfo ?? DefaultSkin.CreateInfo().ToLive();
            };
            configSkin.TriggerChange();

            IsActive.BindValueChanged(active => updateActiveState(active.NewValue), true);

            Audio.AddAdjustment(AdjustableProperty.Volume, inactiveVolumeFade);

            SelectedMods.BindValueChanged(modsChanged);
            Beatmap.BindValueChanged(beatmapChanged, true);
        }
예제 #5
0
        private void load(AudioManager audio, OsuGameBase game)
        {
            var legacySkin = new DefaultLegacySkin(new NamespacedResourceStore <byte[]>(game.Resources, "Skins/Legacy"), audio);

            legacySkinSource = new SkinProvidingContainer(legacySkin);
        }