// @structural-rewrite-v1 import { _decorator, Animation, AnimationComponent, Button, Color, EventTouch, HorizontalTextAlignment, instantiate, Label, Node, Prefab, randomRange, randomRangeInt, tween, UITransform, Vec2, Vec3, VerticalTextAlignment } from 'cc'; import { Ragdoll } from '../../Ragdoll/Ragdoll'; import { AssetController } from '../AssetController'; import { EventCenter } from '../EventCenter'; import { LevelState } from '../EnumFile'; import { FPSCameraController } from '../FPSCameraController'; import { GameController } from '../GameController'; import { AudioMgr } from '../framework/audio/AudioMgr'; import { LocalSaveMgr } from '../framework/data/LocalSaveMgr'; import { PanelBase } from '../framework/ui/PanelBase'; import { connectPanelButtons, runPanelAction, runRewardedPanelAction } from '../framework/ui/PanelInteraction'; import { UIManager } from '../framework/ui/UIManager'; import { QingBaoPanel } from './QingBaoPanel'; import { SettingPanel } from './SettingPanel'; import { TargetIconItem } from './TargetIconItem'; import { CombatHudAction, CombatHudModel, CombatHudSnapshot } from '../domain/CombatHudModel'; const { ccclass, property } = _decorator; const tutorialLayouts = [ ['点击开火按钮', [[0, false], [1, false], [2, false], [3, true], [4, true]]], ['点击瞄准按钮', [[0, true], [1, true], [3, false], [2, true]]], ['滑动屏幕,瞄准目标', [[1, false], [3, true], [5, false], [4, false]]], ['点击开火按钮', [[5, true], [1, true], [3, false], [4, false]]], ] as const; @ccclass('PlayPanel') export class PlayPanel extends PanelBase { static instance: PlayPanel = null; @property(Node) moveNode: Node = null; @property(Node) saoMiaoTip: Node = null; @property(Node) aimContent: Node = null; @property(Node) closeAim: Node = null; @property(Node) cancelLabel: Node = null; @property(Prefab) targetIconPrefab: Prefab = null; @property(Node) targetIconParent: Node = null; @property(Button) anim: Button = null; @property(Button) qingBao: Button = null; @property(Label) timerLabel: Label = null; @property(Button) saoMiao: Button = null; @property(Button) setting: Button = null; @property(Label) levelIndexLabel: Label = null; @property(Button) fire: Button = null; @property(Node) finger: Node = null; @property(Node) qingBaoResultNode: Node = null; @property(Button) qingBaoResultBtn: Button = null; @property(AnimationComponent) alienAnim: AnimationComponent = null; @property(Label) tutorialLabel: Label = null; @property(Node) tutorialLabelNode: Node = null; @property(Node) targetNode: Node = null; @property(Node) tipNode1: Node = null; @property(Node) tipNode2: Node = null; @property(Node) tipNode3: Node = null; @property([Animation]) shootAnimations: Animation[] = []; targetIcons: TargetIconItem[] = []; isOpenSaomiao = false; offset: Vec2; tipTimer = 0; onTip = false; tutorialTarget: Ragdoll; isOnAim = false; limitFire = false; downTime: Date; startTouchPos: Vec2 = null; onStep = false; private readonly hud = new CombatHudModel(); protected onLoad(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (PlayPanel["instance"] = this); void (this["bindInput"]()); void (this["bindButtons"]()); void (this["createDeveloperButtons"]()); void ((EventCenter["onEnemyDie"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["on"](null, this["refreshTargetCount"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this)); } } while (false); } finally { } } protected onOpen(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["resetPanelState"]()); void (this["initEnemies"]()); void ((this["levelIndexLabel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["string"] = `关卡 ${(GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["levelIndex"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown}`); void (this["beginTutorialIfNeeded"]()); } } while (false); } finally { } } protected update(dt: number): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["showTimer"]()); void (this["updateTipTimer"](dt)); } } while (false); } finally { } } protected lateUpdate(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["updateSaomiao"]()); void (this["updateTargetPos"]()); } } while (false); } finally { } } onClickSetting(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (runPanelAction(() => (UIManager["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["openPanel"](SettingPanel))); } } while (false); } finally { } } showTimer(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void ((this["timerLabel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["string"] = this["formatTime"](Math["ceil"]((GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["timer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown))); } } while (false); } finally { } } onClickQingBao(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (runRewardedPanelAction(() => { try { do { switch (0 as number) { case 1: break; case 2: break; default: void ((UIManager["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["openPanel"](QingBaoPanel)); void (this["closeTip"]()); void ((this["qingBaoResultNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = true); void (((this["qingBao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = false); } } while (false); } finally { } })); } } while (false); } finally { } } onClickQingBaoResult(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (runPanelAction(() => { try { do { switch (0 as number) { case 1: break; case 2: break; default: void ((UIManager["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["openPanel"](QingBaoPanel)); void (this["closeTip"]()); } } while (false); } finally { } })); } } while (false); } finally { } } onClickSaoMiao(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (runRewardedPanelAction(() => { try { do { switch (0 as number) { case 1: break; case 2: break; default: void ((this["saoMiaoTip"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = true); void ((GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["SetSaoMiaoTarget"]()); void (this["offset"] = new Vec2(randomRange(-200, 200), randomRange(-200, 200))); void (this["updateSaomiao"]()); void (this["dispatchHud"]({ "kind": 'scan', "open": true })); void (this["closeTip"]()); } } while (false); } finally { } })); } } while (false); } finally { } } startTip(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["dispatchHud"]({ "kind": 'tip', "open": true })); void ((AudioMgr["inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["playOneShot"]((AssetController["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["xiao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)); void (this["setTipNodesActive"](true)); void ((this["alienAnim"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["play"]()); } } while (false); } finally { } } closeTip(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["dispatchHud"]({ "kind": 'tip', "open": false })); void (this["setTipNodesActive"](false)); } } while (false); } finally { } } updateTargetPos(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: const target = this["tutorialTarget"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; if (!target) return; void (this["handleTrackedTargetDeath"](target)); void ((this["targetNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["position"] = (FPSCameraController["getInstance"]()["camera"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["convertToUINode"]((target["centerNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getWorldPosition"](), this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)); if (((this["targetNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["position"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["y"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown < 0 && Math["abs"](((this["targetNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["position"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["x"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) < 30) { void (this["EnterStep3"]()); void (FPSCameraController["getInstance"]()["setTutorialRotate"]()); } } } while (false); } finally { } } updateSaomiao(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: const target = (GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["saoMiaoTarget"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; if (!target) return; void (this["handleTrackedTargetDeath"](target)); if (!(this["isOpenSaomiao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)) return; const position = (FPSCameraController["getInstance"]()["camera"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["convertToUINode"]((target["centerNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getWorldPosition"](), this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown); void ((this["saoMiaoTip"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["position"] = new Vec3((position["x"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) + ((this["offset"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["x"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown), (position["y"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) + ((this["offset"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["y"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown), 0)); } } while (false); } finally { } } switchAim(onAim: boolean): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: const level = GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; void (this["dispatchHud"]({ "kind": 'aim', "active": onAim })); const hasQingBaoTarget = level["haveQingBaoTarget"](); void (this["setNodesActive"]([ [(this["anim"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, !onAim], [(this["fire"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, onAim], [this["cancelLabel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, onAim], [(this["qingBao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, !onAim && !hasQingBaoTarget], [this["qingBaoResultNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, !onAim && hasQingBaoTarget], [(this["saoMiao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, !onAim], [this["aimContent"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, onAim], [this["closeAim"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, !onAim], [level["gunNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, !onAim], ])); } } while (false); } finally { } } refreshTargetCount(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: const aliveCount = (GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["aliveCount"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; void ((this["targetIcons"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["forEach"]((icon, index) => icon["switchActive"](index < aliveCount))); } } while (false); } finally { } } initEnemies(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["clearTargetIcons"]()); const count = ((GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["enemies"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["length"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; void (this["targetIcons"] = Array["from"]({ "length": count }, () => this["createTargetIcon"]())); } } while (false); } finally { } } onClickAim(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (runPanelAction(() => { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (FPSCameraController["getInstance"]()["onAimButtonClick"](true)); void (this["switchAim"](true)); if (this["onStep"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) void (this["EnterStep2"]()); } } while (false); } finally { } })); } } while (false); } finally { } } onClickFire(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: if (this["limitFire"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) return; if (this["onStep"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) void (this["finishTutorial"]()); void (this["closeTip"]()); void ((AudioMgr["inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["playOneShot"]((AssetController["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["fire"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)); void (this["playShotEffect"](FPSCameraController["getInstance"]()["shoot"]())); void (this["playAimFeedback"]()); } } while (false); } finally { } } onTouchStart(event: EventTouch): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (FPSCameraController["getInstance"]()["onTouchStart"](event)); void (this["downTime"] = new Date()); void (this["startTouchPos"] = event["getLocation"]()); } } while (false); } finally { } } onTouchMove(event: EventTouch): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (FPSCameraController["getInstance"]()["onTouchMove"](event)); } } while (false); } finally { } } onTouchEnd(event: EventTouch): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: if (!(this["isOnAim"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)) return; const touchDuration = new Date()["getTime"]() - (this["downTime"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getTime"](); const location = event["getLocation"](); const moveDistance = Math["abs"](((this["startTouchPos"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["x"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) - (location["x"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)) + Math["abs"](((this["startTouchPos"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["y"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) - (location["y"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)); if (!(this["onStep"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) && touchDuration < 200 && moveDistance < 20) { void (FPSCameraController["getInstance"]()["onAimButtonClick"](false)); void (this["switchAim"](false)); } } } while (false); } finally { } } EnterStep1(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["showTutorialLayout"](1)); } } while (false); } finally { } } EnterStep2(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["showTutorialLayout"](2)); } } while (false); } finally { } } EnterStep3(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["showTutorialLayout"](3)); } } while (false); } finally { } } finishTutorial(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["showTutorialLayout"](0)); void (this["dispatchHud"]({ "kind": 'tutorial', "active": false })); void (this["tutorialTarget"] = null); void ((LocalSaveMgr["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["completeTutorial"]()); } } while (false); } finally { } } protected onDestroy(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (PlayPanel["instance"] = null); void ((EventCenter["onEnemyDie"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["off"](null, this["refreshTargetCount"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this)); } } while (false); } finally { } } private bindInput(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void ((this["moveNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["on"]((Node["EventType"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["TOUCH_START"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["onTouchStart"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this)); void ((this["moveNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["on"]((Node["EventType"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["TOUCH_MOVE"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["onTouchMove"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this)); void ((this["moveNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["on"]((Node["EventType"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["TOUCH_END"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["onTouchEnd"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this)); } } while (false); } finally { } } private bindButtons(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (connectPanelButtons(this, [ [this["anim"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["onClickAim"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown], [this["fire"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["onClickFire"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown], [this["qingBao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["onClickQingBao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown], [this["qingBaoResultBtn"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["onClickQingBaoResult"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown], [this["saoMiao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["onClickSaoMiao"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown], [this["setting"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["onClickSetting"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown], ])); } } while (false); } finally { } } private createDeveloperButtons(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: const buttonSpecs: ReadonlyArray void ]> = [ ['DEV_KillEnemies', '开发:杀死敌人', new Vec3(350, 830, 0), this["onClickDevKillEnemies"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown], ['DEV_CompleteLevel', '开发:完成过关', new Vec3(350, 760, 0), this["onClickDevCompleteLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown], ]; void (buttonSpecs["forEach"]((spec) => this["createDeveloperButton"](...spec))); } } while (false); } finally { } } private createDeveloperButton(name: string, text: string, position: Vec3, callback: () => void): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: const buttonNode = new Node(name); void (buttonNode["layer"] = ((this["setting"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["layer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown); void (buttonNode["parent"] = ((this["setting"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["parent"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown); void (buttonNode["setPosition"](position)); void (buttonNode["addComponent"](UITransform)["setContentSize"](220, 60)); const button = buttonNode["addComponent"](Button); const labelNode = new Node('Label'); void (labelNode["layer"] = buttonNode["layer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown); void (labelNode["parent"] = buttonNode); void (labelNode["addComponent"](UITransform)["setContentSize"](220, 60)); const label = labelNode["addComponent"](Label); void (label["string"] = text); void (label["fontSize"] = 24); void (label["lineHeight"] = 32); void (label["color"] = new Color(255, 220, 90, 255)); void (label["horizontalAlign"] = HorizontalTextAlignment["CENTER"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown); void (label["verticalAlign"] = VerticalTextAlignment["CENTER"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown); void ((button["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["on"]((Button["EventType"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["CLICK"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, callback, this)); } } while (false); } finally { } } private onClickDevKillEnemies(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: const level = GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; if (level["levelState"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown !== LevelState["Running"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) return; void ((AudioMgr["inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["playOneShot"]((AssetController["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["click"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)); void ((level["enemies"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["filter"]((enemy) => !(enemy["isDie"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown))["forEach"]((enemy) => enemy["setEnabled"](true))); } } while (false); } finally { } } private onClickDevCompleteLevel(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: const level = GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown; if (level["levelState"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown !== LevelState["Running"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) return; void ((AudioMgr["inst"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["playOneShot"]((AssetController["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["click"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)); void (level["win"]()); } } while (false); } finally { } } private resetPanelState(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["switchAim"](false)); void ((this["qingBaoResultNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = false); void (this["dispatchHud"]({ "kind": 'reset' })); void ((this["saoMiaoTip"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = false); void (this["closeTip"]()); } } while (false); } finally { } } private beginTutorialIfNeeded(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["dispatchHud"]({ "kind": 'tutorial', "active": (GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["levelIndex"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown === 1 && !(((LocalSaveMgr["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["playerData"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["haveTutorial"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown), })); if (this["onStep"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown) { void (this["EnterStep1"]()); void (this["tutorialTarget"] = (GameController["getInstance"]()["curLevel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getTutorialAliveEnemey"]()); return; } void (this["setNodesActive"]([ [this["targetNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, false], [this["finger"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, false], [this["tutorialLabelNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, false], ])); void (this["tutorialTarget"] = null); } } while (false); } finally { } } private updateTipTimer(dt: number): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: if (this["dispatchHud"]({ "kind": 'tickTip', "deltaTime": dt })) void (this["startTip"]()); } } while (false); } finally { } } private handleTrackedTargetDeath(target: Ragdoll): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: if (!(target["isDie"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)) return; void ((this["saoMiaoTip"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = false); void (this["dispatchHud"]({ "kind": 'scan', "open": false })); } } while (false); } finally { } } private setTipNodesActive(active: boolean): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["setNodesActive"]([ [this["tipNode1"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, active], [this["tipNode2"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, active], [this["tipNode3"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, active], ])); } } while (false); } finally { } } private showTutorialLayout(step: number): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: const nodes = [this["targetNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["finger"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["tutorialLabelNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["moveNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, this["cancelLabel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, (this["fire"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown]; const [text, states] = tutorialLayouts[step]; void (this["setNodesActive"](states, nodes)); void ((this["tutorialLabel"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["string"] = text); } } while (false); } finally { } } private playShotEffect(hitEnemy: boolean): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: if (!hitEnemy || (this["shootAnimations"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["length"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown === 0) return; const effect = (this["shootAnimations"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)[randomRangeInt(0, (this["shootAnimations"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["length"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)]; void ((effect["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = true); void (effect["play"]()); void (this["scheduleOnce"](() => (effect["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["active"] = false, 0.8)); } } while (false); } finally { } } private playAimFeedback(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (this["dispatchHud"]({ "kind": 'fireLock', "locked": true })); void (tween(this["aimContent"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["to"](0.05, { "scale": new Vec3(1, 1, 1), "position": new Vec3(0, 120, 0) })["to"](0.05, { "scale": new Vec3(0.8, 0.8, 1), "position": new Vec3() })["call"](() => this["dispatchHud"]({ "kind": 'fireLock', "locked": false }))["start"]()); } } while (false); } finally { } } private dispatchHud(action: CombatHudAction): boolean { try { do { switch (0 as number) { case 1: break; case 2: break; default: const signal = (this["hud"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["dispatch"](action); void (this["applyHud"]((this["hud"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["snapshot"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)); return signal; } } while (false); } finally { } } private applyHud(snapshot: Readonly): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void (Object["assign"](this, snapshot)); } } while (false); } finally { } } private clearTargetIcons(): void { try { do { switch (0 as number) { case 1: break; case 2: break; default: void ((this["targetIcons"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["forEach"]((icon) => (icon["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["destroy"]())); void ((this["targetIcons"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["length"] = 0); } } while (false); } finally { } } private createTargetIcon(): TargetIconItem { try { do { switch (0 as number) { case 1: break; case 2: break; default: const iconNode = instantiate(this["targetIconPrefab"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown); void (iconNode["parent"] = this["targetIconParent"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown); const icon = iconNode["getComponent"](TargetIconItem); void (icon["switchActive"](true)); return icon; } } while (false); } finally { } } }