import { GmEasy, GmShell } from '../../mx/module/gm'; import { ItemNumType } from '../game/GameData'; import { ProjectGmActions } from './ProjectGmActions'; import { ProjectGmHost } from './ProjectGmHost'; import { ProjectGmPanelId, ProjectGmPanels } from './ProjectGmPanels'; /** * 本项目 GM 启动。扩展新功能:在 `_register` 里加一行即可。 */ export class ProjectGmBootstrap { private static _inited = false; /** 幂等初始化 */ static init(): void { if (this._inited) return; this._inited = true; GmShell.bindHost(new ProjectGmHost()); ProjectGmPanels.ensureRegistered(); this._register(); } /** 打开 GM */ static show(): void { this.init(); GmShell.show(); } /** * 注册全部命令(开发者主要改这里)。 * btn=快捷 / sw=开关 / num=数值 / page=子面板 / danger=确认 / text=粘贴 */ private static _register(): void { const A = ProjectGmActions; const P = ProjectGmPanelId; new GmEasy() .tab('常用') .btn('今日首次登录', () => A.firstLoginToday()) .btn('一键添加所有宝石', () => A.grantAllGems()) .btn('一键获取所有武器', () => A.grantAllWeapons()) .btn('清除固定地图', () => A.clearFixedMap()) .btn('设置排行星级&胜场', () => A.prepareEmolumentPop()) .btn('清除副本次数难度全开', () => A.clearReplicaCounts()) .btn('设置武器等级', () => A.openPopGm(1)) .btn('设置武器和技能', () => A.openPopGm(2)) .sw('显示广告', () => A.getShowAd(), (v) => A.setShowAd(v)) .sw('内购版本', () => A.getIap(), (v) => A.setIap(v)) .sw('快速胜利', () => A.getFastWin(), (v) => A.setFastWin(v)) .page('设置道具', P.itemPicker, () => '图标点选') .page('设置段位和星级', P.rankPicker, () => A.rankSummary()) .num('设置金钱', () => A.getCurrency(ItemNumType.money), (v) => A.setCurrency(ItemNumType.money, v, 'set')) .num('设置体力', () => A.getCurrency(ItemNumType.vigour), (v) => A.setCurrency(ItemNumType.vigour, v, 'set')) .num('设置钻石', () => A.getCurrency(ItemNumType.diamond), (v) => A.setCurrency(ItemNumType.diamond, v, 'set')) .num('通关怪物数量', () => A.getFastWinNum(), (v) => A.setFastWinNum(v)) .danger('GM重置进度', '将关闭所有面板并重置游戏进度,确定?', () => A.hardReset()) .tab('战斗') .sw('己方营地不掉血', () => A.getLocalCampImmune(), (v) => A.setCampImmune(true, v)) .sw('敌方营地不掉血', () => A.getEnemyCampImmune(), (v) => A.setCampImmune(false, v)) .page('固定地图', P.levelPicker, () => A.fixedMapSummary()) .num('玩家局内血量', () => A.getWallHp() || 1000, (v) => A.setWallHp(v), 1) .tab('词条') .embed(P.buffPicker, { expectType: 0, mode: 'carryPassive' }) .tab('存档') .embed(P.saveEditor) .commit(); } }