summaryrefslogtreecommitdiff
path: root/src/config
diff options
context:
space:
mode:
Diffstat (limited to 'src/config')
-rw-r--r--src/config/configSchema.ts27
-rw-r--r--src/config/generatedConfigSchema.ts31
2 files changed, 38 insertions, 20 deletions
diff --git a/src/config/configSchema.ts b/src/config/configSchema.ts
index 4ab0d25..9568fd8 100644
--- a/src/config/configSchema.ts
+++ b/src/config/configSchema.ts
@@ -8,6 +8,7 @@
import { callable } from "@decky/api";
import type { ConfigurationData } from './generatedConfigSchema';
import { getDefaults } from './generatedConfigSchema';
+import { updateLsfgConfig } from "../api/lsfgApi";
// Re-export all auto-generated configuration constants
export {
@@ -17,7 +18,11 @@ export {
ConfigurationData,
getFieldNames,
getDefaults,
- getFieldTypes
+ getFieldTypes,
+ // Field name constants for type-safe access
+ DLL, MULTIPLIER, FLOW_SCALE, PERFORMANCE_MODE, HDR_MODE,
+ EXPERIMENTAL_PRESENT_MODE, DXVK_FRAME_RATE, ENABLE_WOW64,
+ DISABLE_STEAMDECK_MODE, MANGOHUD_WORKAROUND, DISABLE_VKBASALT
} from './generatedConfigSchema';
/**
@@ -30,7 +35,6 @@ export class ConfigurationManager {
// Callable methods for backend communication
private getConfiguration = callable<[], { success: boolean; data?: ConfigurationData; error?: string }>("get_configuration");
- private setConfiguration = callable<[{ config_data: ConfigurationData }], { success: boolean; error?: string }>("set_configuration");
private resetConfiguration = callable<[], { success: boolean; data?: ConfigurationData; error?: string }>("reset_configuration");
private constructor() {}
@@ -50,23 +54,6 @@ export class ConfigurationManager {
}
/**
- * Create args array from config object for lsfg API calls
- */
- static createArgsFromConfig(config: ConfigurationData): [string, number, number, boolean, boolean, string, number, boolean, boolean] {
- return [
- config.dll,
- config.multiplier,
- config.flow_scale,
- config.performance_mode,
- config.hdr_mode,
- config.experimental_present_mode,
- config.dxvk_frame_rate,
- config.enable_wow64,
- config.disable_steamdeck_mode
- ];
- }
-
- /**
* Load configuration from backend
*/
async loadConfig(): Promise<ConfigurationData> {
@@ -89,7 +76,7 @@ export class ConfigurationManager {
*/
async saveConfig(config: ConfigurationData): Promise<void> {
try {
- const result = await this.setConfiguration({ config_data: config });
+ const result = await updateLsfgConfig(config);
if (result.success) {
this._config = config;
} else {
diff --git a/src/config/generatedConfigSchema.ts b/src/config/generatedConfigSchema.ts
index 5f0e368..4a301a1 100644
--- a/src/config/generatedConfigSchema.ts
+++ b/src/config/generatedConfigSchema.ts
@@ -7,6 +7,19 @@ export enum ConfigFieldType {
STRING = "string"
}
+// Field name constants for type-safe access
+export const DLL = "dll" as const;
+export const MULTIPLIER = "multiplier" as const;
+export const FLOW_SCALE = "flow_scale" as const;
+export const PERFORMANCE_MODE = "performance_mode" as const;
+export const HDR_MODE = "hdr_mode" as const;
+export const EXPERIMENTAL_PRESENT_MODE = "experimental_present_mode" as const;
+export const DXVK_FRAME_RATE = "dxvk_frame_rate" as const;
+export const ENABLE_WOW64 = "enable_wow64" as const;
+export const DISABLE_STEAMDECK_MODE = "disable_steamdeck_mode" as const;
+export const MANGOHUD_WORKAROUND = "mangohud_workaround" as const;
+export const DISABLE_VKBASALT = "disable_vkbasalt" as const;
+
// Configuration field definition
export interface ConfigField {
name: string;
@@ -71,6 +84,18 @@ export const CONFIG_SCHEMA: Record<string, ConfigField> = {
default: false,
description: "disable Steam Deck mode (unlocks hidden settings in some games)"
},
+ mangohud_workaround: {
+ name: "mangohud_workaround",
+ fieldType: ConfigFieldType.BOOLEAN,
+ default: false,
+ description: "Enables a transparent mangohud overlay, sometimes fixes issues with 2X multiplier in game mode"
+ },
+ disable_vkbasalt: {
+ name: "disable_vkbasalt",
+ fieldType: ConfigFieldType.BOOLEAN,
+ default: false,
+ description: "Disables vkBasalt layer which can conflict with LSFG (Reshade, some Decky plugins)"
+ },
};
// Type-safe configuration data structure
@@ -84,6 +109,8 @@ export interface ConfigurationData {
dxvk_frame_rate: number;
enable_wow64: boolean;
disable_steamdeck_mode: boolean;
+ mangohud_workaround: boolean;
+ disable_vkbasalt: boolean;
}
// Helper functions
@@ -102,6 +129,8 @@ export function getDefaults(): ConfigurationData {
dxvk_frame_rate: 0,
enable_wow64: false,
disable_steamdeck_mode: false,
+ mangohud_workaround: false,
+ disable_vkbasalt: false,
};
}
@@ -116,6 +145,8 @@ export function getFieldTypes(): Record<string, ConfigFieldType> {
dxvk_frame_rate: ConfigFieldType.INTEGER,
enable_wow64: ConfigFieldType.BOOLEAN,
disable_steamdeck_mode: ConfigFieldType.BOOLEAN,
+ mangohud_workaround: ConfigFieldType.BOOLEAN,
+ disable_vkbasalt: ConfigFieldType.BOOLEAN,
};
}