Constrain configuration lookup as enum.

This commit is contained in:
Huo Yaoyuan 2019-12-06 21:32:31 +08:00
parent dc45811dfd
commit 04b3297a05
4 changed files with 12 additions and 8 deletions

View File

@ -1,6 +1,7 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using osu.Framework.Bindables; using osu.Framework.Bindables;
@ -9,8 +10,8 @@ using osu.Game.Rulesets;
namespace osu.Game.Configuration namespace osu.Game.Configuration
{ {
public abstract class DatabasedConfigManager<T> : ConfigManager<T> public abstract class DatabasedConfigManager<TLookup> : ConfigManager<TLookup>
where T : struct where TLookup : struct, Enum
{ {
private readonly SettingsStore settings; private readonly SettingsStore settings;
@ -53,7 +54,7 @@ namespace osu.Game.Configuration
private readonly List<DatabasedSetting> dirtySettings = new List<DatabasedSetting>(); private readonly List<DatabasedSetting> dirtySettings = new List<DatabasedSetting>();
protected override void AddBindable<TBindable>(T lookup, Bindable<TBindable> bindable) protected override void AddBindable<TBindable>(TLookup lookup, Bindable<TBindable> bindable)
{ {
base.AddBindable(lookup, bindable); base.AddBindable(lookup, bindable);

View File

@ -1,12 +1,13 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System;
using osu.Framework.Configuration; using osu.Framework.Configuration;
namespace osu.Game.Configuration namespace osu.Game.Configuration
{ {
public class InMemoryConfigManager<T> : ConfigManager<T> public class InMemoryConfigManager<TLookup> : ConfigManager<TLookup>
where T : struct where TLookup : struct, Enum
{ {
public InMemoryConfigManager() public InMemoryConfigManager()
{ {

View File

@ -1,12 +1,13 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System;
using osu.Game.Configuration; using osu.Game.Configuration;
namespace osu.Game.Rulesets.Configuration namespace osu.Game.Rulesets.Configuration
{ {
public abstract class RulesetConfigManager<T> : DatabasedConfigManager<T>, IRulesetConfigManager public abstract class RulesetConfigManager<TLookup> : DatabasedConfigManager<TLookup>, IRulesetConfigManager
where T : struct where TLookup : struct, Enum
{ {
protected RulesetConfigManager(SettingsStore settings, RulesetInfo ruleset, int? variant = null) protected RulesetConfigManager(SettingsStore settings, RulesetInfo ruleset, int? variant = null)
: base(settings, ruleset, variant) : base(settings, ruleset, variant)

View File

@ -1,11 +1,12 @@
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence. // Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
// See the LICENCE file in the repository root for full licence text. // See the LICENCE file in the repository root for full licence text.
using System;
using osu.Framework.Configuration; using osu.Framework.Configuration;
namespace osu.Game.Skinning namespace osu.Game.Skinning
{ {
public class SkinConfigManager<T> : ConfigManager<T> where T : struct public class SkinConfigManager<TLookup> : ConfigManager<TLookup> where TLookup : struct, Enum
{ {
protected override void PerformLoad() protected override void PerformLoad()
{ {