mirror of
https://github.com/unanmed/HumanBreak.git
synced 2025-02-28 17:37:07 +08:00
添加设置的监听事件
This commit is contained in:
parent
a457438e97
commit
62f2fbf838
@ -1,3 +1,5 @@
|
|||||||
|
import { EmitableEvent, EventEmitter } from '../common/eventEmitter';
|
||||||
|
|
||||||
type MotaSettingType = boolean | number | MotaSetting;
|
type MotaSettingType = boolean | number | MotaSetting;
|
||||||
|
|
||||||
interface MotaSettingItem<T extends MotaSettingType = MotaSettingType> {
|
interface MotaSettingItem<T extends MotaSettingType = MotaSettingType> {
|
||||||
@ -8,7 +10,15 @@ interface MotaSettingItem<T extends MotaSettingType = MotaSettingType> {
|
|||||||
display?: (value: T) => string;
|
display?: (value: T) => string;
|
||||||
}
|
}
|
||||||
|
|
||||||
class MotaSetting {
|
interface SettingEvent extends EmitableEvent {
|
||||||
|
valueChange: <T extends boolean | number>(
|
||||||
|
key: string,
|
||||||
|
newValue: T,
|
||||||
|
oldValue: T
|
||||||
|
) => void;
|
||||||
|
}
|
||||||
|
|
||||||
|
class MotaSetting extends EventEmitter<SettingEvent> {
|
||||||
private list: Record<string, MotaSettingItem> = {};
|
private list: Record<string, MotaSettingItem> = {};
|
||||||
special?: string;
|
special?: string;
|
||||||
|
|
||||||
@ -17,6 +27,7 @@ class MotaSetting {
|
|||||||
*/
|
*/
|
||||||
markAsSpecial(sp: string) {
|
markAsSpecial(sp: string) {
|
||||||
this.special = sp;
|
this.special = sp;
|
||||||
|
this.register('@special', '', false);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -70,7 +81,9 @@ class MotaSetting {
|
|||||||
`Expected: ${typeof setting.value}. Recieve: ${typeof value}`
|
`Expected: ${typeof setting.value}. Recieve: ${typeof value}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
const old = setting.value as boolean | number;
|
||||||
setting.value = value;
|
setting.value = value;
|
||||||
|
this.emit('valueChange', this.formatKey(key), old, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -86,7 +99,9 @@ class MotaSetting {
|
|||||||
`Type expected: number. See: ${typeof setting.value}`
|
`Type expected: number. See: ${typeof setting.value}`
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
const old = setting.value as boolean | number;
|
||||||
setting.value += value;
|
setting.value += value;
|
||||||
|
this.emit('valueChange', this.formatKey(key), old, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -115,6 +130,10 @@ class MotaSetting {
|
|||||||
|
|
||||||
return now.list[list.at(-1)!] ?? null;
|
return now.list[list.at(-1)!] ?? null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private formatKey(key: string) {
|
||||||
|
return key.replace('.@special', '');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
export const mainSetting = new MotaSetting();
|
export const mainSetting = new MotaSetting();
|
||||||
|
Loading…
Reference in New Issue
Block a user