interface EventStatusDataMap { /** * 执行事件中 */ action: ActionStatusData; /** * 怪物手册的信息,是当前选择了哪个怪物 */ book: number; /** * 楼层传送器中当前楼层索引 */ fly: number; /** * 浏览地图时的信息 */ viewMaps: ViewMapStatusData; /** * 装备栏的信息 */ equipbox: EquipboxStatusData; /** * 道具栏的信息 */ toolbox: ToolboxStatusData; /** * 存档界面的信息 */ save: SaveStatusData; load: SaveStatusData; replayLoad: SaveStatusData; replayRemain: SaveStatusData; replaySince: SaveStatusData; /** * 文本框界面的信息 */ text: TextStatusData; /** * 确认框界面的信息 */ confirmBox: ConfirmStatusData; /** * 关于界面,帮助界面,怪物手册详细信息界面,虚拟键盘界面,系统设置界面,系统选项栏界面, * 快捷商店界面,存档笔记界面,同步存档界面,光标界面,录像回放界面,游戏信息界面,没有东西 */ about: null; help: null; 'book-detail': null; keyBoard: null; switchs: null; 'switchs-sounds': null; 'switchs-display': null; 'switchs-action': null; settings: null; selectShop: null; notes: null; syncSave: null; syncSelect: null; localSaveSelect: null; storageRemove: null; cursor: null; replay: null; gameInfo: null; } interface _EventStatusSelectionMap { /** * 执行事件中,一般是选择框的当前选中项 */ action: number; /** * 装备栏中当前选中了哪个装备 */ equipbox: number; /** * 道具栏中当前选中了哪个道具 */ toolbox: number; /** * 当前是否是删除模式 */ save: boolean; load: boolean; /** * 当前选择了确认(0)还是取消(1) */ confirmBox: 0 | 1; /** * 系统设置界面,存档笔记界面,同步存档界面,录像回放界面,游戏信息界面,当前的选择项 */ switchs: number; 'switchs-sounds': number; 'switchs-display': number; 'switchs-action': number; settings: number; notes: number; syncSave: number; syncSelect: number; localSaveSelect: number; storageRemove: number; replay: number; gameInfo: number; } interface _EventStatusUiMap { /** * 执行事件中,一般是与选择框有关的 */ action: ActionStatusUi; /** * 如果是从浏览地图界面呼出的怪物手册,该项是当前正在浏览的地图的索引(注意不是id) */ book: number; /** * 确认框中显示的文字 */ confirmBox: string; /** * 显示设置的选择信息 */ 'switchs-display': SwitchsStatusData; /** * 系统选项栏的选择信息 */ settings: SwitchsStatusData; /** * 快捷商店界面,存档笔记界面,同步存档界面,录像回放界面,游戏信息界面的绘制信息 */ selectShop: SelectShopStatusUi; notes: SelectShopStatusUi; syncSave: SelectShopStatusUi; syncSelect: SelectShopStatusUi; localSaveSelect: SelectShopStatusUi; storageRemove: SelectShopStatusUi; gameInfo: SelectShopStatusUi; } interface _EventStatusIntervalMap { /** * 执行事件中,一般用于呼出某个界面时暂存当前事件信息(? */ action: ActionStatusData; /** * 如果是从事件中呼出的,用于存储当前事件信息,当退出怪物手册时恢复事件 */ book: ActionStatusData; /** * 如果是从事件中呼出的,用于存储当前事件信息,当退出存档节目时恢复事件 */ save: ActionStatusData; load: ActionStatusData; } interface _EventStatusTimeoutMap { /** * 执行事件中,一般是等待用户操作事件等事件中的超时时间的判定 */ action: number; } interface _EventStatusAnimateUiMap { /** * 执行事件中,一般是对话框事件的动画定时器 */ action: number; } type EventStatus = keyof EventStatusDataMap; type _FillEventStatus = { [P in EventStatus]: P extends keyof T ? T[P] : null; }; type EventStatusSelectionMap = _FillEventStatus<_EventStatusSelectionMap>; type EventStatusUiMap = _FillEventStatus<_EventStatusUiMap>; type EventStatusIntervalMap = _FillEventStatus<_EventStatusIntervalMap>; type EventStatusTimeoutMap = _FillEventStatus<_EventStatusTimeoutMap>; type EventStatusAnimateUiMap = _FillEventStatus<_EventStatusAnimateUiMap>; /** * 某个事件状态下的信息 */ interface EventStatusOf { /** * 当前事件状态的类型 */ id: T; /** * 当前事件状态的信息 */ data: EventStatusDataMap[T]; /** * 当前事件状态的选择信息 */ selection: EventStatusSelectionMap[T]; /** * 当前事件状态的ui信息 */ ui: EventStatusUiMap[T]; /** * 当前事件状态的定时器信息 */ interval: EventStatusIntervalMap[T]; /** * 当前事件状态的计时器信息 */ timeout: EventStatusTimeoutMap[T]; /** * 当前事件状态的动画信息 */ animateUi: EventStatusAnimateUiMap[T]; } interface ActionStatusEventList { /** * 要执行的事件列表 */ todo: MotaEvent; /** * 全部的事件列表 */ total: MotaEvent; /** * 执行条件 */ contidion: string; } interface ActionLocStackInfo { /** * 横坐标 */ x: number; /** * 纵坐标 */ y: number; /** * 楼层id */ floorId: FloorIds; } /** * 执行事件中 */ interface ActionStatusData { /** * 当前的事件列表 */ list: DeepReadonly; /** * 事件执行的横坐标,或者对话框的横坐标 */ x?: number; /** * 事件执行的纵坐标,或者对话框的纵坐标 */ y?: number; /** * 事件执行完毕的回调函数 */ callback?: () => void; /** * 不太清楚用处,可能是与自动事件有关的 */ appendingEvents: MotaEvent[]; /** * 事件的坐标栈 */ locStack: any[]; /** * 当前的事件类型 */ type: string; /** * 当前事件 */ current: MotaAction; } interface ActionStatusUi { /** * 显示文字事件的文字,包括确认框等 */ text: string; /** * 确认框中确定时执行的事件 */ yes?: MotaEvent; /** * 确认框中取消时执行的事件 */ no?: MotaEvent; /** * 当前是选择事件时所有的选项 */ choices?: string[]; /** * 当前是选择事件时选项框的宽度 */ width?: number; } interface ViewMapStatusData { /** * 当前浏览的楼层索引 */ index: number; /** * 是否显示伤害 */ damage: boolean; /** * 大地图是否显示全部地图 */ all: boolean; /** * 大地图不显示全部地图时当前的横坐标,单位格子 */ x: number; /** * 大地图不显示全部地图时当前的纵坐标,单位格子 */ y: number; } interface EquipboxStatusData { /** * 拥有装备的当前页数 */ page: number; /** * 当前选中的装备 */ selectId: ItemIdOf<'equips'>; } interface ToolboxStatusData { /** * 消耗道具的当前页码数 */ toolsPage: number; /** * 永久道具的当前页码数 */ constantsPage: number; /** * 当前选中的道具id */ selectId: ItemIdOf<'constants' | 'tools'>; } interface SaveStatusData { /** * 当前存读档界面的页码数 */ page: number; /** * 选择的框的偏移量,在不同状态下意义不同 */ offset: number; /** * 当前存读档界面的模式,fav表示收藏,all表示所有存档 */ mode: 'fav' | 'all'; } interface TextStatusData { /** * 文本框要显示的文字列表 */ list: string[]; /** * 文字显示完毕后的回调函数 */ callback: () => void; } interface ConfirmStatusData { /** * 点击确认时 */ yes: () => void; /** * 点击取消时 */ no: () => void; } interface SwitchsStatusData { /** * 选择项 */ choices: string[]; } interface SelectShopStatusUi { /** * 选择框的偏移量 */ offset: number; }