declare module "mw-god-mod" { import { ValueTypeInEnum } from "gtoolkit"; export interface IElementBase { id: number; } export interface ConfigBase { getElement(id: number | string): T; findElement(fieldName: string, fieldValue: any): T; findElements(fieldName: string, fieldValue: any): Array; getAllElement(): Array; } export type AcceptableParamType = "void" | "string" | "integer" | "number" | "vector" | "vector2" | "rotation" | ConfigBase | object; export type InferParamType

= P extends "void" ? void : P extends "string" ? string : P extends "integer" ? number : P extends "number" ? number : P extends "vector" ? mw.Vector : P extends "vector2" ? mw.Vector2 : P extends "rotation" ? mw.Rotation : P extends ConfigBase ? E : P extends object ? ValueTypeInEnum

: never; export type InferParamTypeForTransmit

= P extends "void" ? void : P extends "string" ? string : P extends "integer" ? number : P extends "number" ? number : P extends "vector" ? mw.Vector : P extends "vector2" ? mw.Vector2 : P extends "rotation" ? mw.Rotation : P extends ConfigBase ? number : P extends object ? ValueTypeInEnum

: never; export type GodModInferParamForTransmit = InferParamTypeForTransmit; /** * 󰌆数据验证器. */ export type DataValidator

= (param: P) => boolean; /** * 归因 󰌆数据验证器. */ export interface DataValidatorWithReason

{ /** * 󰌆数据验证器. */ validator: DataValidator

; /** * 原因. */ reason: string; } /** * God Mod 命令参数选项. */ export interface GodCommandParamOption

{ /** * 󰌆数据验证器组合. */ validator?: (DataValidator

| DataValidatorWithReason

)[]; label?: string; /** * 结果显示时长. ms * @desc 仅在自定义 string 类型结果时生效. * @desc 否则使用默认显示时长. 2e3 ms */ resultShowTime?: number; } export function RangeDataValidator(min: number, max: number): DataValidatorWithReason; } declare module "mw-god-mod" { export type CmdResultType = boolean | string | void; export type ClientCmdType

= (params: InferParamType

) => CmdResultType; export type ServerCmdType

= (player: mw.Player, params: InferParamType

) => CmdResultType; /** * God Command Item 命令项. * @desc 描述一个 God 命令. */ export class GodCommandItem

{ label: string; paramType: P; clientCmd?: ClientCmdType

; serverCmd?: ServerCmdType

; paramOption?: GodCommandParamOption>; group?: string; pinyin: string; /** * God Command Item constructor. * @param {string} label 名称. 唯一的. * @param {P} paramType 参数类型. * @param {(params: P) => void} clientCmd client 命令. * @param {(player: mw.Player, params: P) => void} serverCmd server 命令. * @param {GodCommandParamOption

} paramOption 参数选项. * @param {string} group 分组. */ constructor(label: string, paramType: P, clientCmd?: ClientCmdType

, serverCmd?: ServerCmdType

, paramOption?: GodCommandParamOption>, group?: string); /** * 是否 󰍹客户端命令. * @return {boolean} */ get isClientCmd(): boolean; /** * 是否 󰒋服务器命令. * @return {boolean} */ get isServerCmd(): boolean; /** * 是否 只读命令. * @returns {boolean} */ get isReadonlyCmd(): boolean; /** * 是否通过 󰄲数据验证. * @param {P} p * @return {boolean} 是否 通过验证. */ isParamValid(p: InferParamType

): boolean; } } declare module "mw-god-mod" { import { Component, Property } from "mw-lynx-ui"; import { Delegate } from "gtoolkit"; export const ParamInputSizeY = 60; export const ParamInputZOrder = 1; export interface IGodModParamInputParametric

{ getParam(): P; setParam(p: P): void; setValidator(validator: Property.DataValidators): void; setCustomLabel(label?: string): void; get validated(): Property.DataValidateResult; get onCommit(): Delegate.SimpleDelegate; } export type GodModParamInputComponent

= IGodModParamInputParametric

& Component; } declare module "mw-god-mod" { export const GodModPanelSizeX = 400; } declare module "mw-god-mod" { import { Component } from "mw-lynx-ui"; export class GodModParamInputBase extends Component { constructor(); } } declare module "mw-god-mod" { import { Component, ComponentOption } from "mw-lynx-ui"; /** * Icon for Expand. * * ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠒⠒⠒⠒⠚⠛⣿⡟ * ⠄⠄⢠⠄⠄⠄⡄⠄⠄⣠⡶⠶⣶⠶⠶⠂⣠⣶⣶⠂⠄⣸⡿⠄ * ⠄⢀⣿⠇⠄⣰⡿⣠⡾⠋⠄⣼⡟⠄⣠⡾⠋⣾⠏⠄⢰⣿⠁⠄ * ⠄⣾⡏⠄⠠⠿⠿⠋⠠⠶⠶⠿⠶⠾⠋⠄⠽⠟⠄⠄⠄⠃⠄⠄ * ⣼⣿⣤⡤⠤⠤⠤⠤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ * @author LviatYi * @font JetBrainsMono Nerd Font Mono https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/JetBrainsMono.zip * @fallbackFont Sarasa Mono SC https://github.com/be5invis/Sarasa-Gothic/releases/download/v0.41.6/sarasa-gothic-ttf-0.41.6.7z */ export class ExpandIcon extends Component { static readonly ImgRoundedRectangle60 = "163384"; static readonly ColorHex = "EAEAEBFF"; private _imgSqrLeftTop; private _imgSqrLeftBottom; private _imgSqrRightTop; private _imgSqrRightBottom; private _option; static create(option?: ComponentOption): ExpandIcon; static defaultOption(option?: ComponentOption): Required; setLayout(option: ComponentOption): this; } } declare module "mw-god-mod" { import { Component, ComponentOption } from "mw-lynx-ui"; /** * Icon for Expand. * * ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠒⠒⠒⠒⠚⠛⣿⡟ * ⠄⠄⢠⠄⠄⠄⡄⠄⠄⣠⡶⠶⣶⠶⠶⠂⣠⣶⣶⠂⠄⣸⡿⠄ * ⠄⢀⣿⠇⠄⣰⡿⣠⡾⠋⠄⣼⡟⠄⣠⡾⠋⣾⠏⠄⢰⣿⠁⠄ * ⠄⣾⡏⠄⠠⠿⠿⠋⠠⠶⠶⠿⠶⠾⠋⠄⠽⠟⠄⠄⠄⠃⠄⠄ * ⣼⣿⣤⡤⠤⠤⠤⠤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ * @author LviatYi * @font JetBrainsMono Nerd Font Mono https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/JetBrainsMono.zip * @fallbackFont Sarasa Mono SC https://github.com/be5invis/Sarasa-Gothic/releases/download/v0.41.6/sarasa-gothic-ttf-0.41.6.7z */ export class MoveIcon extends Component { static readonly ImgRoundedRectangle60 = "34422"; private _cnvRotate; private _imgArrLeftTop; private _imgArrLeftBottom; private _imgArrRightTop; private _imgArrRightBottom; private _option; static create(option?: ComponentOption): MoveIcon; static defaultOption(option?: ComponentOption): Required; setLayout(option: ComponentOption): this; } } declare module "mw-god-mod" { import { Component, ComponentOption } from "mw-lynx-ui"; /** * Icon for Platform. * * ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠒⠒⠒⠒⠚⠛⣿⡟ * ⠄⠄⢠⠄⠄⠄⡄⠄⠄⣠⡶⠶⣶⠶⠶⠂⣠⣶⣶⠂⠄⣸⡿⠄ * ⠄⢀⣿⠇⠄⣰⡿⣠⡾⠋⠄⣼⡟⠄⣠⡾⠋⣾⠏⠄⢰⣿⠁⠄ * ⠄⣾⡏⠄⠠⠿⠿⠋⠠⠶⠶⠿⠶⠾⠋⠄⠽⠟⠄⠄⠄⠃⠄⠄ * ⣼⣿⣤⡤⠤⠤⠤⠤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ * @author LviatYi * @font JetBrainsMono Nerd Font Mono https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/JetBrainsMono.zip * @fallbackFont Sarasa Mono SC https://github.com/be5invis/Sarasa-Gothic/releases/download/v0.41.6/sarasa-gothic-ttf-0.41.6.7z */ export class PlatformIcon extends Component { static readonly ImgCircle = "163437"; static readonly HexServer = "1ea89d"; static readonly HexClient = "e550b2"; static readonly HexDouble = "616972"; private _imgFlag; private _txtFlag; private _option; static create(option?: PlatformIconOption): PlatformIcon; static defaultOption(option?: PlatformIconOption): Required; setLayout(option: ComponentOption): this; } export type PlatformIconVariant = "server" | "client" | "double"; export interface PlatformIconOption extends ComponentOption { fontSize?: number; variant?: PlatformIconVariant; } } declare module "mw-god-mod" { import { Component } from "mw-lynx-ui"; export class GodModPanel extends Component { private static readonly TipsShownTime; private static readonly TipsFadeTime; private static readonly BtnRunSizeY; private static readonly TxtInfoSizeY; private static readonly AutoShrinkFloatTime; private _cnvMain; private _cnvController; private _btnExpand; private _btnMove; private _btnClose; private _acInput; private _cnvParamInputContainer; private _cnvParamInput; private _btnRun; private _txtInfo; private _gameConfigRenderer; private _imgDrag; private _cnvFloatWindow; private _btnFloat; private _imgExpandFloatBar; private _imgShrinkFloatBar; private _btnShow; private _godCommandItems; private _currentChoose; private _lastChoose; private _currentInputComponent; private _paramCache; private _paramInputComponentCache; private _dragSensitive; private _dragStartTime; private _mouseStartMosPos; private _mouseStartCnvPos; private _lastShowTipsTime; private _currentChooseConfigBase; private _currentTouchBtnMoveLocation; private _floating; private _expandFloat; private _autoShrinkFloatTimer; private _enterFloatDist; private _currentTipShowTime; private get btnMovePointerLocation(); private _runCommandHandler; static create(option?: GodModPanelOption): GodModPanel; static defaultOption(): any; protected renderAnimHandler: (dt: number) => void; protected destruct(): void; refreshCmdItems(items: GodCommandItem[]): void; registerCommandHandler(handler: (label: string, p: unknown, autoDispatchToServer?: boolean) => void): this; private showCnvParamInput; private hideCnvParamInput; private commit; private dragHandler; private playStartDragEffect; private playStopDragEffect; private innerShowTips; showTips(text: string, showTime?: number): void; private showWarning; showSuccess(): void; showRunning(): void; showError(): void; } export interface GodModPanelOption { items: GodCommandItem[]; /** * 拖动敏度. ms * @desc 该时间后触发拖动. */ dragSensitive?: number; zOrder?: number; } } declare module "mw-god-mod" { export type AuthStrategy = "strong" | "weak"; const GodModService_base: { new (): { createTime: Date; onConstruct(): void; }; _instance: GodModService; getInstance(): GodModService; }; /** * God Mod 服务. * * ⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠐⠒⠒⠒⠒⠚⠛⣿⡟ * ⠄⠄⢠⠄⠄⠄⡄⠄⠄⣠⡶⠶⣶⠶⠶⠂⣠⣶⣶⠂⠄⣸⡿⠄ * ⠄⢀⣿⠇⠄⣰⡿⣠⡾⠋⠄⣼⡟⠄⣠⡾⠋⣾⠏⠄⢰⣿⠁⠄ * ⠄⣾⡏⠄⠠⠿⠿⠋⠠⠶⠶⠿⠶⠾⠋⠄⠽⠟⠄⠄⠄⠃⠄⠄ * ⣼⣿⣤⡤⠤⠤⠤⠤⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄⠄ * @author LviatYi * @font JetBrainsMono Nerd Font Mono https://github.com/ryanoasis/nerd-fonts/releases/download/v3.0.2/JetBrainsMono.zip * @fallbackFont Sarasa Mono SC https://github.com/be5invis/Sarasa-Gothic/releases/download/v0.41.6/sarasa-gothic-ttf-0.41.6.7z */ export default class GodModService extends GodModService_base { /** * 管理员列表存储键. */ static readonly GodModAdminListStorageKey = "GOD_MOD_ADMIN_LIST__STORAGE_KEY"; /** * 缺省 管理员 UserId. */ static readonly GodModDefaultAdmin = "ADMIN_USER_ID"; /** * God Mod 请求运行 事件名前缀. */ static readonly GodModRunRequestEventNamePrefix = "__GOD_MOD_RUN_REQUEST_EVENT_NAME__"; /** * God Mod 命令于服务端运行完成 事件名. */ static readonly GodModCommandRunResultInServerEventName = "__GOD_MOD_COMMAND_RUN_RESULT_IN_SERVER_EVENT_NAME__"; /** * God Mod 查询权限请求 事件名. */ static readonly GodModQueryAuthorityReqEventName = "__GOD_MOD_QUERY_AUTHORITY_REQ_EVENT_NAME__"; /** * God Mod 查询权限回应 事件名. */ static readonly GodModQueryAuthorityRespEventName = "__GOD_MOD_QUERY_AUTHORITY_RESP_EVENT_NAME__"; /** * God Mod 未授权调用 事件名. * event {@link GodModUnauthorizedCallEventArgs} * @desc 仅服务器. */ static readonly GodModUnauthorizedCallEventName = "__GOD_MOD_UNAUTHORIZED_CALL_EVENT_NAME__"; private _queriedAdminList; private _view; /** * GodCommands 库. * @type {Map>} * @private */ private _commands; /** * 管理员列表. * @type {Set} * @private */ private _adminList; private _shutdown; private _checkAuthorityRegulator; private _currentFrontFocus; private _authStrategy; onConstruct(): void; addCommand

(label: string, paramType?: P, clientCmd?: ClientCmdType

, serverCmd?: ServerCmdType

, paramOption?: GodCommandParamOption>, group?: string): this; removeCommand(label: string): this; getAllCommands(): Readonly[]>; runCommandInClient(label: string, p: unknown, autoDispatchToServer?: boolean): void; runCommandInServer(player: mw.Player, label: string, p: any): void; /** * 显示 God Mod 面板. */ showGm(): this; /** * 刷新 God Mod 面板. */ private refreshGm; /** * 隐藏 God Mod 面板. */ hideGm(): this; /** * 带权限验证地 显示 God Mod 面板. * @desc 使用服务器的 权限认证策略. * @desc 当 PIE 环境时 无论如何将直接显示. */ authShowGm(): this; /** * 关闭 God Mod 服务. * @desc 执行后不再生效. */ shutdown(): this; /** * 设置服务器 权限验证策略. * @param {AuthStrategy} strategy * - "strong" 强权限验证. * 仅手动添加到管理员列表的用户可使用. * - "weak" 弱权限验证. * 若不存在管理员列表则所有用户可使用. * 否则仅手动添加到管理员列表的用户可使用. * @return {this} */ setAuthStrategy(strategy: AuthStrategy): this; /** * 设置 GodMod 面板 zOrder. * @param {number} zOrder * @return {this} */ setZOrder(zOrder: number): this; /** * 设置 GodMod 面板 位置. * @param {number} x * @param {number} y * @return {this} */ setPosition(x: number, y: number): this; /** * 为所有 GameConfig 添加预览命令. * @param {object} gameConfig 传入 GameConfig. * @return {this} */ addPreviewForGameConfig(gameConfig: object): this; /** * 是否 具有权限. * @desc 仅服务端. * @param {string} userId * @return {boolean} * @private */ private verifyAuthority; /** * 是否 具有弱认证权限. * @desc 仅服务端. * @param {string} userId * @return {boolean} * @private */ private verifyWeakAuthority; /** * 是否 具有强认证权限. * @desc 仅服务端. * @param {string} userId * @return {boolean} * @private */ private verifyStrongAuthority; /** * 是否 自身具有认证权限. * @desc 仅客户端. * @desc 需服务器手动加入后生效. * @return {Promise} */ hasAuthority(): Promise; /** * 查询管理员列表. */ private queryAdminList; /** * 获取填充类型名. * @param {string} label * @return {string} * @private */ private getEventName; /** * 显示执行反馈结果。 * @param {boolean} result * @param {number} showTime 显示时间. ms * @private */ private showUiResult; } export function addGMCommand

(label: string, paramType: P, clientCmd?: (params: InferParamType

) => void, serverCmd?: (player: mw.Player, params: InferParamType

) => void, paramOption?: GodCommandParamOption>, group?: string): void; } declare module "mw-god-mod" { import { Delegate } from "gtoolkit"; interface GodModItemStatistic { /** * 命令标签. */ label: string; /** * 已使用次数. */ usedCount: number; /** * 最后使用时间. */ lastUsedTime: number; /** * 最后使用参数. */ lastParams: unknown; } interface GodModItemUpdateContext { /** * 命令标签. */ label: string; /** * 使用时间. */ time: number; /** * 使用参数. */ params: unknown; } type GodModUserData = GodModItemStatistic[]; export class GodModDB { private static readonly EVENT_NAME_USER_DATA_UPDATE; private static readonly EVENT_NAME_USER_DATA_REFRESH; /** * 记录缩容触发阈值. */ static readonly DEDUCTION_THRESHOLD = 40; /** * 单次缩容数量. */ static readonly DEDUCTION_COUNT = 20; static init(): void; static memMap: Map>; static UserDataLoadedEvent: Delegate.SimpleDelegate<[ GodModUserData ]>; static isUserDataReady(userId: string): boolean; private static isUserDataLoading; /** * 更新用户数据. * @desc 仅客户端调用. * @param {GodModItemUpdateContext} context * @return {boolean} */ static updateUserDataInC(context: GodModItemUpdateContext): boolean; /** * 刷新用户数据. * @desc 调用端生效. * @desc 双端应同步调用. * @param {string} userId */ static refreshUserData(userId: string): void; /** * 加载用户数据. * @desc 仅服务器生效. * @param {string} userId * @param {number} retry 重试次数. */ static loadUserData(userId: string, retry?: number): void; /** * 保存用户数据. * @desc 仅服务器生效. * @param {string} userId */ static saveUserData(userId: string): void; private static innerUpdateUserData; private static receiveUserData; private static dataDeduction; private static getUserDataKey; } }