// Copyright (c) 2007-2017 ppy Pty Ltd . // Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; using System.Collections.Generic; using osu.Framework.Input.Bindings; using osu.Framework.Platform; using osu.Game.Database; using osu.Game.Input.Bindings; using SQLite.Net; namespace osu.Game.Input { public class KeyBindingStore : DatabaseBackedStore { public KeyBindingStore(SQLiteConnection connection, Storage storage = null) : base(connection, storage) { } protected override int StoreVersion => 2; protected override void PerformMigration(int currentVersion, int targetVersion) { base.PerformMigration(currentVersion, targetVersion); while (currentVersion++ < targetVersion) { switch (currentVersion) { case 1: // cannot migrate; breaking underlying changes. Reset(); break; } } } protected override void Prepare(bool reset = false) { Connection.CreateTable(); } protected override Type[] ValidTypes => new[] { typeof(DatabasedKeyBinding) }; public List GetProcessedList(IEnumerable defaults, int? rulesetId, int? variant) { //todo: cache and share reference List bindings = new List(defaults); // load from database if present. foreach (var b in Query(b => b.RulesetID == rulesetId && b.Variant == variant)) bindings.Add(b); return bindings; } } }