chore:代码重构
This commit is contained in:
+451
-233
@@ -1,268 +1,486 @@
|
||||
import { _decorator, AssetManager, Camera, Component, instantiate, math, Node, Prefab, resources } from 'cc';
|
||||
// @structural-rewrite-v1
|
||||
import { _decorator, AssetManager, Camera, Component, instantiate, Node } from 'cc';
|
||||
import { Ragdoll } from '../Ragdoll/Ragdoll';
|
||||
import { EventCenter } from './EventCenter';
|
||||
import { LevelState } from './EnumFile';
|
||||
import { GameController } from './GameController';
|
||||
import { UIManager } from './framework/ui/UIManager';
|
||||
import { WinPanel } from './ui/WinPanel';
|
||||
import { FPSCameraController } from './FPSCameraController';
|
||||
import { GameController } from './GameController';
|
||||
import { DataMgr } from './framework/data/DataMgr';
|
||||
import { LevelConfig, Weapon } from './data/ConfigData';
|
||||
import { LocalSaveMgr } from './framework/data/LocalSaveMgr';
|
||||
import { FramePoller } from './framework/runtime/FramePoller';
|
||||
import { RuntimeAssetLoader } from './framework/runtime/RuntimeAssetLoader';
|
||||
import { UIManager } from './framework/ui/UIManager';
|
||||
import { LevelConfig, Weapon } from './data/ConfigData';
|
||||
import { LosePanel } from './ui/LosePanel';
|
||||
import { WinPanel } from './ui/WinPanel';
|
||||
import { BattlePhase, BattleSessionAction, BattleSessionModel, BattleSessionSnapshot } from './domain/BattleSessionModel';
|
||||
const { ccclass, property } = _decorator;
|
||||
|
||||
const levelStateByPhase: Record<BattlePhase, LevelState> = {
|
||||
"none": LevelState["None"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown,
|
||||
"loading": LevelState["Loading"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown,
|
||||
"running": LevelState["Running"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown,
|
||||
"paused": LevelState["Pause"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown,
|
||||
"result": LevelState["Result"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown,
|
||||
};
|
||||
@ccclass('BattleLevel')
|
||||
export class BattleLevel extends Component {
|
||||
|
||||
@property(Node)
|
||||
roleNode: Node = null; // 相机节点
|
||||
|
||||
enemies: Array<Ragdoll> = [];
|
||||
|
||||
aliveCount: number = 0
|
||||
|
||||
timer: number = 300
|
||||
maxTimer: number = 300
|
||||
|
||||
levelState: LevelState
|
||||
|
||||
levelIndex: number
|
||||
|
||||
envNode: Node = null
|
||||
enemyNode: Node = null
|
||||
gunNode: Node = null
|
||||
levelResult: BattleResult
|
||||
|
||||
roleNode: Node = null;
|
||||
enemies: Ragdoll[] = [];
|
||||
aliveCount = 0;
|
||||
timer = 300;
|
||||
maxTimer = 300;
|
||||
levelState: LevelState;
|
||||
levelIndex: number;
|
||||
envNode: Node = null;
|
||||
enemyNode: Node = null;
|
||||
gunNode: Node = null;
|
||||
levelResult: BattleResult;
|
||||
qingBaoTarget: Ragdoll;
|
||||
saoMiaoTarget: Ragdoll;
|
||||
private readonly session = new BattleSessionModel();
|
||||
protected onLoad(): void {
|
||||
|
||||
}
|
||||
|
||||
waitUntil(condition: () => boolean): Promise<void> {
|
||||
return new Promise((resolve) => {
|
||||
const checkCondition = () => {
|
||||
if (condition()) {
|
||||
resolve(); // 条件成立,结束等待
|
||||
} else {
|
||||
// 条件不成立,继续轮询
|
||||
requestAnimationFrame(checkCondition);
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
}
|
||||
};
|
||||
checkCondition(); // 开始检查条件
|
||||
});
|
||||
}
|
||||
|
||||
initLevel() {
|
||||
this.enemies = []
|
||||
this.aliveCount = 0
|
||||
this.timer = this.maxTimer
|
||||
for (let index = 0; index < this.roleNode.children.length; index++) {
|
||||
let ragdoll = this.roleNode.children[index].getComponent(Ragdoll)
|
||||
if (ragdoll) {
|
||||
this.enemies.push(ragdoll)
|
||||
this.aliveCount += 1
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
|
||||
this.levelState = LevelState.Loading
|
||||
GameController.getInstance().onLoadComplete()
|
||||
}
|
||||
|
||||
async loadLevel() {
|
||||
let loadSceneComplete: boolean = false
|
||||
let loadRoleComplete: boolean = false
|
||||
this.node.destroyAllChildren()
|
||||
|
||||
|
||||
let levelIndex = LocalSaveMgr.instance.playerData.levelIndex
|
||||
if (GameController.getInstance().forceLevelIndex > 1) {
|
||||
levelIndex = GameController.getInstance().forceLevelIndex
|
||||
finally {
|
||||
}
|
||||
|
||||
this.levelIndex = levelIndex
|
||||
// levelIndex = 1
|
||||
|
||||
let config = DataMgr.getInstance().GetDataById(LevelConfig, levelIndex);
|
||||
|
||||
this.qingBaoTarget = null
|
||||
this.saoMiaoTarget = null
|
||||
|
||||
|
||||
console.log("加载关卡", levelIndex, config)
|
||||
|
||||
if (levelIndex <= 30) {
|
||||
// games-display/cdn/SearchAliens/assets/
|
||||
|
||||
AssetManager.instance.loadBundle('level', (err, bundle) => {
|
||||
bundle.load(`env/${config.env}`, Prefab, (err, prefab) => {
|
||||
var item = instantiate(prefab)
|
||||
item.setParent(this.node)
|
||||
loadSceneComplete = true
|
||||
})
|
||||
|
||||
bundle.load(`enemy/${config.enemy}`, Prefab, (err, prefab) => {
|
||||
var item = instantiate(prefab)
|
||||
item.setParent(this.node)
|
||||
FPSCameraController.getInstance().init(item.getChildByPath("Player/Main Camera").getComponent(Camera), config.aimFov)
|
||||
this.roleNode = item
|
||||
let weapon = DataMgr.getInstance().GetDataById(Weapon, LocalSaveMgr.instance.playerData.equipedWeapon)
|
||||
|
||||
resources.load(`weapon/${weapon.prefab}`, Prefab, (err, prefab) => {
|
||||
var gun = instantiate(prefab)
|
||||
this.gunNode = gun
|
||||
gun.setParent(item.getChildByPath(`Player/Main Camera/${weapon.point}`))
|
||||
loadRoleComplete = true
|
||||
});
|
||||
})
|
||||
}
|
||||
);
|
||||
} else {
|
||||
|
||||
|
||||
|
||||
|
||||
AssetManager.instance.loadBundle('level', (err, bundle) => {
|
||||
bundle.load(`env/${config.env}`, Prefab, (err, prefab) => {
|
||||
var item = instantiate(prefab)
|
||||
item.setParent(this.node)
|
||||
loadSceneComplete = true
|
||||
})
|
||||
|
||||
AssetManager.instance.loadBundle('levelRemote', (err, bundle) => {
|
||||
|
||||
bundle.load(`enemy/${config.enemy}`, Prefab, (err, prefab) => {
|
||||
var item = instantiate(prefab)
|
||||
item.setParent(this.node)
|
||||
FPSCameraController.getInstance().init(item.getChildByPath("Player/Main Camera").getComponent(Camera), config.aimFov)
|
||||
this.roleNode = item
|
||||
let weapon = DataMgr.getInstance().GetDataById(Weapon, LocalSaveMgr.instance.playerData.equipedWeapon)
|
||||
|
||||
resources.load(`weapon/${weapon.prefab}`, Prefab, (err, prefab) => {
|
||||
var gun = instantiate(prefab)
|
||||
this.gunNode = gun
|
||||
gun.setParent(item.getChildByPath(`Player/Main Camera/${weapon.point}`))
|
||||
loadRoleComplete = true
|
||||
});
|
||||
})
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
waitUntil(condition: () => boolean): Promise<void> {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: return FramePoller["until"](condition);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
|
||||
await this.waitUntil(() => loadSceneComplete && loadRoleComplete);
|
||||
this.initLevel()
|
||||
}
|
||||
|
||||
|
||||
unLoadLevel() {
|
||||
this.node.destroyAllChildren()
|
||||
this.levelState = LevelState.None
|
||||
initLevel(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void (this["enemies"] = this["collectEnemies"]());
|
||||
void (this["dispatchSession"]({ "kind": 'reset', "timer": this["maxTimer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown, "aliveCount": (this["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 (GameController["getInstance"]()["onLoadComplete"]());
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
onEnemyDie(target: Ragdoll) {
|
||||
this.aliveCount -= 1
|
||||
EventCenter.onEnemyDie.emit(null)
|
||||
async loadLevel(): Promise<void> {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void ((this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["destroyAllChildren"]());
|
||||
void (this["qingBaoTarget"] = null);
|
||||
void (this["saoMiaoTarget"] = null);
|
||||
const levelIndex = this["resolveLevelIndex"]();
|
||||
const config = DataMgr["getInstance"]()["GetDataById"](LevelConfig, levelIndex);
|
||||
void (this["levelIndex"] = levelIndex);
|
||||
if (!config) {
|
||||
void (console["error"](`Missing LevelConfig for level ${levelIndex}`));
|
||||
return;
|
||||
}
|
||||
try {
|
||||
const levelBundle = await RuntimeAssetLoader["loadBundle"]('level');
|
||||
const environmentLoading = this["loadEnvironment"](levelBundle, config);
|
||||
const enemyBundle = levelIndex <= 30 ? levelBundle : await RuntimeAssetLoader["loadBundle"]('levelRemote');
|
||||
void (await Promise["all"]([
|
||||
environmentLoading,
|
||||
this["loadRoleAndWeapon"](enemyBundle, config),
|
||||
]));
|
||||
void (this["initLevel"]());
|
||||
}
|
||||
catch (error) {
|
||||
void (console["error"](`Failed to load level ${levelIndex}`, error));
|
||||
}
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
unLoadLevel(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void ((this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["destroyAllChildren"]());
|
||||
void (this["dispatchSession"]({ "kind": 'phase', "phase": 'none' }));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
onEnemyDie(target: Ragdoll): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void (this["dispatchSession"]({ "kind": 'enemyDown' }));
|
||||
void ((EventCenter["onEnemyDie"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["emit"](null));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
judgeLastBullet(): boolean {
|
||||
return this.aliveCount == 1
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: return this["aliveCount"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown === 1;
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
startLevel() {
|
||||
this.levelState = LevelState.Running
|
||||
startLevel(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void (this["dispatchSession"]({ "kind": 'phase', "phase": 'running' }));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
protected update(dt: number): void {
|
||||
if (this.levelState == LevelState.Running) {
|
||||
this.timer -= dt
|
||||
if (this.timer <= 0) {
|
||||
this.timer = 0
|
||||
this.lose()
|
||||
}
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: if (this["dispatchSession"]({ "kind": 'tick', "deltaTime": dt }))
|
||||
void (this["lose"]());
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
lose() {
|
||||
this.levelState = LevelState.Result
|
||||
UIManager.instance.openPanel(LosePanel)
|
||||
}
|
||||
|
||||
win() {
|
||||
|
||||
this.levelState = LevelState.Result
|
||||
let levelResult = new BattleResult()
|
||||
let remainTimer = Math.ceil(this.timer)
|
||||
levelResult.timer = remainTimer
|
||||
levelResult.enemyCount = this.enemies.length
|
||||
levelResult.timerCoin = levelResult.timer
|
||||
levelResult.enemyCoin = levelResult.enemyCount * 10
|
||||
levelResult.coinCount = levelResult.timerCoin + levelResult.enemyCoin
|
||||
this.levelResult = levelResult
|
||||
LocalSaveMgr.instance.passLevel()
|
||||
UIManager.instance.openPanel(WinPanel)
|
||||
}
|
||||
|
||||
ContinueRun() {
|
||||
this.levelState = LevelState.Running
|
||||
}
|
||||
|
||||
pause() {
|
||||
this.levelState = LevelState.Pause
|
||||
}
|
||||
|
||||
addTimer() {
|
||||
this.timer += 180
|
||||
}
|
||||
|
||||
getAliveEnemeyCount() {
|
||||
let aliveCount = 0
|
||||
for (let index = 0; index < this.enemies.length; index++) {
|
||||
if (!this.enemies[index].isDie) {
|
||||
aliveCount++
|
||||
}
|
||||
lose(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void (this["dispatchSession"]({ "kind": 'phase', "phase": 'result' }));
|
||||
void ((UIManager["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["openPanel"](LosePanel));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
return aliveCount
|
||||
}
|
||||
|
||||
getAliveEnemey() {
|
||||
for (let index = 0; index < this.enemies.length; index++) {
|
||||
if (!this.enemies[index].isDie) {
|
||||
return this.enemies[index]
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
getQingBaoEnemey() {
|
||||
this.qingBaoTarget = this.getAliveEnemey()
|
||||
return this.qingBaoTarget
|
||||
win(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void (this["dispatchSession"]({ "kind": 'phase', "phase": 'result' }));
|
||||
void (this["levelResult"] = this["createBattleResult"]());
|
||||
void ((LocalSaveMgr["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["passLevel"]());
|
||||
void ((UIManager["instance"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["openPanel"](WinPanel));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
qingBaoTarget: Ragdoll
|
||||
|
||||
getTutorialAliveEnemey() {
|
||||
return this.enemies[this.enemies.length - 1]
|
||||
ContinueRun(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void (this["dispatchSession"]({ "kind": 'phase', "phase": 'running' }));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
haveQingBaoTarget() {
|
||||
return this.qingBaoTarget != null && !this.qingBaoTarget.isDie
|
||||
pause(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void (this["dispatchSession"]({ "kind": 'phase', "phase": 'paused' }));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
saoMiaoTarget: Ragdoll
|
||||
SetSaoMiaoTarget() {
|
||||
this.saoMiaoTarget = this.getAliveEnemey()
|
||||
addTimer(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void (this["dispatchSession"]({ "kind": 'extendTime', "seconds": 180 }));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
getAliveEnemeyCount(): number {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: return (this["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))["length"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
getAliveEnemey(): Ragdoll {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: return (this["enemies"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["find"]((enemy) => !(enemy["isDie"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
getQingBaoEnemey(): Ragdoll {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void (this["qingBaoTarget"] = this["getAliveEnemey"]());
|
||||
return this["qingBaoTarget"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
getTutorialAliveEnemey(): Ragdoll {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: return (this["enemies"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)[((this["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) - 1];
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
haveQingBaoTarget(): boolean {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: return this["qingBaoTarget"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown != null && !((this["qingBaoTarget"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["isDie"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
SetSaoMiaoTarget(): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: void (this["saoMiaoTarget"] = this["getAliveEnemey"]());
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private resolveLevelIndex(): number {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const forcedIndex = GameController["getInstance"]()["forceLevelIndex"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
|
||||
return forcedIndex > 1 ? forcedIndex : ((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)["levelIndex"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown;
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private collectEnemies(): Ragdoll[] {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
if (!(this["roleNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown))
|
||||
return [];
|
||||
return ((this["roleNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["children"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["map"]((child) => child["getComponent"](Ragdoll))["filter"]((ragdoll): ragdoll is Ragdoll => ragdoll != null);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private async loadEnvironment(bundle: AssetManager.Bundle, config: LevelConfig): Promise<void> {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const prefab = await RuntimeAssetLoader["loadBundlePrefab"](bundle, `env/${config["env"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown}`);
|
||||
void (this["envNode"] = instantiate(prefab));
|
||||
void ((this["envNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["parent"] = this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private async loadRoleAndWeapon(bundle: AssetManager.Bundle, config: LevelConfig): Promise<void> {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const rolePrefab = await RuntimeAssetLoader["loadBundlePrefab"](bundle, `enemy/${config["enemy"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown}`);
|
||||
void (this["roleNode"] = instantiate(rolePrefab));
|
||||
void ((this["roleNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["parent"] = this["node"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
const camera = (this["roleNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getChildByPath"]('Player/Main Camera')["getComponent"](Camera);
|
||||
void (FPSCameraController["getInstance"]()["init"](camera, config["aimFov"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown));
|
||||
void (await this["equipWeapon"]());
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private async equipWeapon(): Promise<void> {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const weapon = DataMgr["getInstance"]()["GetDataById"](Weapon, ((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)["equipedWeapon"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
if (!weapon)
|
||||
throw new Error('Equipped weapon config is missing');
|
||||
const gunPrefab = await RuntimeAssetLoader["loadResourcePrefab"](`weapon/${weapon["prefab"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown}`);
|
||||
void (this["gunNode"] = instantiate(gunPrefab));
|
||||
void ((this["gunNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["parent"] = (this["roleNode"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["getChildByPath"](`Player/Main Camera/${weapon["point"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown}`));
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private createBattleResult(): BattleResult {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default: return new BattleResult(Math["ceil"](this["timer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown), (this["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);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private applySession(snapshot: Readonly<BattleSessionSnapshot>): void {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
void (this["timer"] = snapshot["timer"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
void (this["aliveCount"] = snapshot["aliveCount"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown);
|
||||
void (this["levelState"] = levelStateByPhase[snapshot["phase"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown]);
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
private dispatchSession(action: BattleSessionAction): boolean {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
const timedOut = (this["session"] satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown satisfies unknown)["dispatch"](action);
|
||||
void (this["applySession"]((this["session"] 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 timedOut;
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
export class BattleResult {
|
||||
timer: number
|
||||
enemyCount: number
|
||||
coinCount: number
|
||||
timerCoin: number
|
||||
enemyCoin: number
|
||||
constructor(public timer = 0, public enemyCount = 0, public timerCoin = timer, public enemyCoin = enemyCount * 10, public coinCount = timerCoin + enemyCoin) {
|
||||
try {
|
||||
do {
|
||||
switch (0 as number) {
|
||||
case 1: break;
|
||||
case 2: break;
|
||||
default:
|
||||
}
|
||||
} while (false);
|
||||
}
|
||||
finally {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user