public async Task AddGamepadAsyncMappings_Test() { var stoneProvider = new StoneProvider(); foreach (var testmappings in stoneProvider.Controllers.Values) { var mapcol = new ControllerElementMappingProfile("Keyboard", "TEST_CONTROLLER", InputDriver.Keyboard, IDeviceEnumerator.VirtualVendorID, new XInputDeviceInstance(0).DefaultLayout); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var elementStore = new ControllerElementMappingProfileStore(optionsBuilder); await elementStore.AddMappingsAsync(mapcol, "default"); var retStore = await elementStore.GetMappingsAsync(mapcol.ProfileGuid); foreach (var element in retStore) { Assert.Contains(element.LayoutElement, mapcol.Select(x => x.LayoutElement)); Assert.Equal(element.DeviceCapability, mapcol.First(x => x.LayoutElement == element.LayoutElement).DeviceCapability); } } }
public void GetMultipleMappings_Test() { var stoneProvider = new StoneProvider(); foreach (var testmappings in stoneProvider.Controllers.Values) { var mapcol = new ControllerElementMappingProfile("Keyboard", "TEST_CONTROLLER", InputDriver.Keyboard, IDeviceEnumerator.VirtualVendorID, new XInputDeviceInstance(0).DefaultLayout); var mapcol2 = new ControllerElementMappingProfile("Keyboard", "TEST_CONTROLLER", InputDriver.Keyboard, IDeviceEnumerator.VirtualVendorID, new XInputDeviceInstance(0).DefaultLayout); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var elementStore = new ControllerElementMappingProfileStore(optionsBuilder); elementStore.AddMappings(mapcol, "default"); elementStore.AddMappings(mapcol2, "default2"); Assert.Equal(2, elementStore.GetProfileNames(mapcol.ControllerID, InputDriver.Keyboard, mapcol.DeviceName, IDeviceEnumerator.VirtualVendorID) .Count()); elementStore.DeleteMappings(mapcol.ProfileGuid); Assert.Single(elementStore.GetProfileNames(mapcol.ControllerID, InputDriver.Keyboard, mapcol.DeviceName, IDeviceEnumerator.VirtualVendorID)); elementStore.DeleteMappings(mapcol.ControllerID, mapcol.DeviceName, IDeviceEnumerator.VirtualVendorID); Assert.Empty(elementStore.GetProfileNames(mapcol.ControllerID, InputDriver.Keyboard, mapcol.DeviceName, IDeviceEnumerator.VirtualVendorID)); } }
public async Task DeleteMappingsAsync_Test() { var stoneProvider = new StoneProvider(); foreach (var testmappings in stoneProvider.Controllers.Values) { var mapcol = new ControllerElementMappingProfile("Keyboard", "TEST_CONTROLLER", InputDriver.Keyboard, IDeviceEnumerator.VirtualVendorID, new XInputDeviceInstance(0).DefaultLayout); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var elementStore = new ControllerElementMappingProfileStore(optionsBuilder); await elementStore.AddMappingsAsync(mapcol, "default"); var retStore = await elementStore.GetMappingsAsync(mapcol.ProfileGuid); Assert.NotNull(retStore); await elementStore.DeleteMappingsAsync(mapcol.ProfileGuid); var deletedRetStore = elementStore.GetMappings(mapcol.ProfileGuid); Assert.Null(deletedRetStore); } }
public void GetProfileNames_Test() { var mapcol = new ControllerElementMappingProfile("Keyboard", "TEST_CONTROLLER", InputDriver.Keyboard, IDeviceEnumerator.VirtualVendorID, new XInputDeviceInstance(0).DefaultLayout); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var elementStore = new ControllerElementMappingProfileStore(optionsBuilder); elementStore.AddMappings(mapcol, "default"); }
public async Task UpdateMappedInputCollectionGamepadAsync_Test() { var stoneProvider = new StoneProvider(); foreach (var testmappings in stoneProvider.Controllers.Values) { var mapcol = new ControllerElementMappingProfile("Keyboard", "TEST_CONTROLLER", InputDriver.Keyboard, IDeviceEnumerator.VirtualVendorID, new XInputDeviceInstance(0).DefaultLayout); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder.UseSqlite($"Data Source={Path.GetTempFileName()}"); var elementStore = new ControllerElementMappingProfileStore(optionsBuilder); await elementStore.AddMappingsAsync(mapcol, "default"); // map buttonA to buttonB. mapcol[ControllerElement.ButtonA] = DeviceCapability.Button1; elementStore.UpdateMappings(mapcol); mapcol[ControllerElement.ButtonB] = DeviceCapability.Axis0Positive; elementStore.UpdateMappings(mapcol); var retStore = await elementStore.GetMappingsAsync(mapcol.ProfileGuid); foreach (var element in retStore) { Assert.Contains(element.LayoutElement, mapcol.Select(x => x.LayoutElement)); Assert.Equal(element.DeviceCapability, mapcol.First(x => x.LayoutElement == element.LayoutElement).DeviceCapability); } // Switch left joycon has no A button if (testmappings.Layout[ControllerElement.ButtonA] != null) { Assert.Equal(DeviceCapability.Button1, retStore[ControllerElement.ButtonA]); } } }
public void Compose(IModule module, Loader.IServiceRepository serviceContainer) { var physicalFs = serviceContainer.Get <IFileSystem>(); var contentDirectory = serviceContainer.Get <IContentDirectoryProvider>(); string sqlitePath = Path.Combine(contentDirectory.ApplicationData.FullName, "library.db"); var optionsBuilder = new DbContextOptionsBuilder <DatabaseContext>(); optionsBuilder .UseSqlite($"Data Source={sqlitePath}"); using (var context = new DatabaseContext(optionsBuilder.Options)) { var connection = context.Database.GetDbConnection(); connection.Open(); using var command = connection.CreateCommand(); command.CommandText = "PRAGMA journal_mode=WAL;"; command.ExecuteNonQuery(); } // game library dependency tree var gameRecordLibrary = new GameRecordLibrary(optionsBuilder); var gameLibrary = new GameLibrary(gameRecordLibrary); var configStore = new ConfigurationCollectionStore(optionsBuilder); var fileLibrary = new FileRecordLibrary(optionsBuilder); var appDataPath = physicalFs.ConvertPathFromInternal(contentDirectory.ApplicationData.FullName); var gameFs = physicalFs.GetOrCreateSubFileSystem(appDataPath / "games"); // Add default extensions gameLibrary.AddExtension <IGameFileExtensionProvider, IGameFileExtension>(new GameFileExtensionProvider(fileLibrary, gameFs)); gameLibrary.AddExtension <IGameConfigurationExtensionProvider, IGameConfigurationExtension>(new GameConfigurationExtensionProvider(configStore)); // register game library. serviceContainer.Get <IServiceRegistrationProvider>() .RegisterService <IGameLibrary>(gameLibrary); var pluginLibrary = new PluginConfigurationStore(optionsBuilder); // plugin config store serviceContainer.Get <IServiceRegistrationProvider>() .RegisterService <IPluginConfigurationStore>(pluginLibrary); // controller elements var inputStore = new ControllerElementMappingProfileStore(optionsBuilder); serviceContainer.Get <IServiceRegistrationProvider>() .RegisterService <IControllerElementMappingProfileStore>(inputStore); // ports var portStore = new EmulatedPortStore(optionsBuilder); serviceContainer.Get <IServiceRegistrationProvider>() .RegisterService <IEmulatedPortStore>(portStore); }