Files
Common/src/shared/typings/settings.ts
T
2026-06-21 11:27:44 +02:00

54 lines
1.1 KiB
TypeScript

/**
* Possible types of Setting.
*/
export enum SettingType {
Boolean = "Boolean",
Enum = "Enum",
Float = "Float",
Int = "Int",
String = "String",
}
/**
* A setting definition.
*/
export interface SettingDefinition<T extends SettingType = SettingType> {
/**
* The default value of the setting.
*/
default: SettingRealType<T>;
/**
* The english description of the setting.
*/
description: string;
/**
* The unique id of the setting.
*/
id: string;
/**
* The name of the setting.
*/
name: string;
/**
* The type of the setting.
*/
type: T;
}
export const SettingTypeChecker: Record<SettingType, keyof CheckableTypes> = {
Boolean: "boolean",
Enum: "number",
Float: "number",
Int: "number",
String: "string",
};
/**
* The data storage form of saved setting.
*/
export type SetSetting = Map<string, Map<string, boolean | number | string>>;
/**
* Transform Setting type enum to real typescript/lua type.
*/
export type SettingRealType<T extends SettingType> = CheckableTypes[(typeof SettingTypeChecker)[T]];