HumanBreak/docs/api/class/mota-setting.md
2024-03-01 19:52:30 +08:00

260 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 类 MotaSetting
渲染进程类,在游戏进程不可直接使用,继承自 [`EventEmitter`](./event-emitter.md)
- 实例成员
- [`readonly list`](#readonly-list)
- 实例方法
- [`reset`](#reset)
- [`register`](#register)
- [`getSetting`](#getsetting)
- [`setValue`](#setvalue)
- [`addValue`](#addvalue)
- [`getValue`](#getvalue)
- [`setDisplayFunc`](#setdisplayfunc)
- [`setValueController`](#setvaluecontroller)
- [`setDescription`](#setdescription)
- 静态成员
- [`noStorage`](#nostorage)
- 实例事件
- [`valueChange`](#valuechange-事件)
## readonly list
```ts
declare const list: Record<string, MotaSettingItem>
```
- 成员说明
该成员描述了这个设置实例在这一级设置中的所有设置。理论上其所有成员都是只读的。
- 接口 `MotaSettingItem`
```ts
interface MotaSettingItem<T extends MotaSettingType = MotaSettingType> {
name: string; // 设置的显示名称
key: string; // 设置的名称(id)
value: T; // 设置当前的值
controller: SettingComponent; // 设置的编辑组件
description?: string; // 设置的说明文字
defaults?: boolean | number; // 设置的默认值
step?: [number, number, number]; // 数字型设置的步长信息
display?: (value: T) => string; // 设置显示函数
}
```
- 详细说明
- `name`: 设置的显示名称,例如 `宝石血瓶显伤`
- `key`: 设置的名称,也就是设置的 id不能包含 `.`
- `value`: 设置当前的值,可以是数字、布尔值和设置实例,该项是设置实例时表示级联设置。通过方法 [`setValue`](#setvalue) 设置,在设置时**不可**更改数据类型
- `controller`: 设置的编辑组件,可以通过 [`setValueController`](#setvaluecontroller) 方法设置,一般在注册设置的时候指定
- `description`: 设置的说明文字,如果使用默认的设置 UI 的话,会显示在右方
- `defaults`: 设置的默认值,在注册后,如果没有设置,那么设置就会是这个值。当设置是一个级联设置的时候,该项为 `undefined`
- `step`: 当此项设置为数字型设置时,该成员表示步长信息,第一项表示最小值,第二项表示最大值,第三项表示单步步长
- `display`: 设置的显示函数,如果设置了,那么显示的值会是它的返回值,参考[指南](../../guide/setting.md#设置显示函数)
## reset()
```ts
declare function reset(setting: Record<string, number | boolean>): void
```
- 参数说明
- `setting`: 重设的设置信息,是一系列键值对,键表示设置的 id值表示设置的值例如`{ 'mySetting1.mySetting2': 123 }`
- 方法说明
该方法用于重设设置,一般用于初始化设置信息
## register()
```ts
// overload 1
declare function register(
key: string,
name: string,
value: number,
com?: SettingComponent,
step?: [number, number, number]
): this
// overload 2
declare function register(
key: string,
name: string,
value: boolean | MotaSetting,
com?: SettingComponent
): this
```
- 用法一
- 参数说明
- `key`: 要注册的设置名称,也就是 id不能包含 `.`
- `name`: 设置的显示名称
- `value`: 设置的初始值(默认值)
- `com`: 设置的编辑组件,也就是右侧设置说明下方的内容
- `step`: 步长信息,是一个数组,第一项表示最小值,第二项表示最大值,第三项表示单步步长
- 方法说明
该用法用于注册一个数字型设置
- 用法二
- 参数说明
- `key`: 要注册的设置名称,也就是 id不能包含 `.`
- `name`: 设置的显示名称
- `value`: 设置的初始值(默认值),或者是级联设置
- `com`: 设置的编辑组件,也就是右侧设置说明下方的内容
- 方法说明
该用法用于注册一个布尔型变量,或者是级联设置。当 `value` 传递一个设置实例的时候,会认为是级联设置
## getSetting()
```ts
declare function getSetting(key: string): Readonly<MotaSettingItem | null>
```
- 参数说明
- `key`: 设置的键名,对于级联设置,使用 `.` 进行连接,例如 `mySetting1.mySetting2`
- 返回值
该函数返回获取到的设置,如果没有获取到设置,会抛出错误。获取的返回值理论上(在 ts 下)是只读的,不允许修改。
- 方法说明
该方法用于获取到一个设置
## setValue()
```ts
declare function setValue(key: string, value: boolean | number): void
```
- 方法说明
该方法用于设置一个设置的值,接受设置键名,以及要设置为的值为参数。
- 示例
```js
mySetting.setValue('mySetting1.mySetting2', 200);
```
## addValue()
```ts
declare function addValue(key: string, value: number): void
```
- 方法说明
该方法用于增减一个数字型设置的值,其中 `value` 表示增减的多少
- 示例
```js
mySetting.addValue('mySetting1.mySetting2', 100); // 增加100减少100可以填-100
```
## getValue()
```ts
declare function getValue(
key: string,
defaultValue?: boolean | number
): boolean | number
```
- 参数说明
- `key`: 设置的键名
- `defaultValue`: 当设置或设置的值不存在,或者设置是一个级联设置时,返回的默认值
- 方法说明
用于获取一个设置的值,当设置或设置的值不存在,或者设置是一个级联设置时,会返回默认值
## setDisplayFunc()
```ts
declare function setDisplayFunc(
key: string,
func: (value: boolean | number) => string
): this
```
- 参数说明
- `key`: 设置的键名
- `func`: 显示函数,接受当前设置的值作为参数,返回一个字符串作为显示值
- 示例
```js
mySetting.setDisplayFunc('mySetting1.mySetting2', value => value ? '宝石' : '血瓶');
```
## setValueController()
```ts
declare function setValueController(key: string, com: SettingComponent): this
```
- 参数说明
- `key`: 设置的键名
- `com`: 要设置成的编辑组件,以函数式组件为宜
## setDescription()
```ts
declare function setDescription(key: string, desc: string): this
```
- 参数说明
- `key`: 设置的键名
- `desc`: 要设置成的描述信息,允许 html 元素的出现
## noStorage
```ts
declare var noStorage: string[]
```
- 静态成员说明
该成员描述了所有不计入本地存储的样板自带设置的键名
- 示例
```js
MotaSetting.noStorage.push('mySetting');
```
## valueChange 事件
```ts
interface MotaSettingEvent {
valueChange: <T extends boolean | number>(
key: string,
newValue: T,
oldValue: T
) => void
}
```
- 事件说明
当设置的值被设置时触发该事件,传入设置的键名、新值、旧值作为参数