54 lines
1.1 KiB
TypeScript
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]];
|