From b6ec65741afdf6dd9f0d32cb120a2a2ef95d72a3 Mon Sep 17 00:00:00 2001 From: panfudan Date: Sun, 17 Aug 2025 21:12:35 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=B3=E5=8D=A1=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/ecs/position/BattleMoveSystem.ts | 5 ++ assets/script/game/map/MissionMonComp.ts | 5 +- assets/script/game/map/RogueConfig.ts | 46 +++++++++++++------ 3 files changed, 39 insertions(+), 17 deletions(-) diff --git a/assets/script/game/common/ecs/position/BattleMoveSystem.ts b/assets/script/game/common/ecs/position/BattleMoveSystem.ts index b6a84450..9ee1763c 100644 --- a/assets/script/game/common/ecs/position/BattleMoveSystem.ts +++ b/assets/script/game/common/ecs/position/BattleMoveSystem.ts @@ -57,9 +57,11 @@ export class BattleMoveSystem extends ecs.ComblockSystem implements ecs.ISystemU if (enemyX > currentX) { move.direction = 1; // 向右移动 view.node.setScale(1, 1, 1); // 面向右侧 + view.node.getChildByName("top").setScale(1, 1, 1); // 面向右侧 } else { move.direction = -1; // 向左移动 view.node.setScale(-1, 1, 1); // 面向左侧 + view.node.getChildByName("top").setScale(-1, 1, 1); // 面向左侧 } // 继续向敌人方向移动 @@ -96,8 +98,10 @@ export class BattleMoveSystem extends ecs.ComblockSystem implements ecs.ISystemU // 设置朝向 if (direction === 1) { view.node.setScale(1, 1, 1); // 面向右侧 + view.node.getChildByName("top").setScale(1, 1, 1); // 面向右侧 } else { view.node.setScale(-1, 1, 1); // 面向左侧 + view.node.getChildByName("top").setScale(-1, 1, 1); // 面向左侧 } // 确保不会超过目标位置 @@ -114,6 +118,7 @@ export class BattleMoveSystem extends ecs.ComblockSystem implements ecs.ISystemU // 到达目标位置后,面向右侧(敌人方向) move.direction = 1; view.node.setScale(1, 1, 1); // 面向右侧 + view.node.getChildByName("top").setScale(1, 1, 1); // 面向右侧 } return; } diff --git a/assets/script/game/map/MissionMonComp.ts b/assets/script/game/map/MissionMonComp.ts index 96c7a5f9..3f4769e3 100644 --- a/assets/script/game/map/MissionMonComp.ts +++ b/assets/script/game/map/MissionMonComp.ts @@ -103,8 +103,9 @@ export class MissionMonCompComp extends CCComp { // 添加刷怪队列 - 使 const currentStage = smc.data.mission; // 使用新的肉鸽关卡配置 - const stageType = getStageType(currentStage); - const monsterConfigs = getStageMonsterConfigs(currentStage); + let level=smc.vmdata.mission_data.level + const stageType = getStageType(currentStage,level); + const monsterConfigs = getStageMonsterConfigs(currentStage,level); console.log(`[MissionMonComp]:第${currentStage}关 - ${stageType}类型,怪物数量: ${monsterConfigs.length}`); this.generateMonstersFromStageConfig(monsterConfigs); } diff --git a/assets/script/game/map/RogueConfig.ts b/assets/script/game/map/RogueConfig.ts index 6d02a69a..9756e491 100644 --- a/assets/script/game/map/RogueConfig.ts +++ b/assets/script/game/map/RogueConfig.ts @@ -218,27 +218,40 @@ export function getMonsterEnhancement(monsterType: MonsterType, useRandom: boole } /** - * 根据关卡号判断关卡类型 + * 根据关卡号和等级判断关卡类型 * @param stageNumber 关卡号(从1开始) + * @param level 等级(1-5) * @returns 关卡类型 */ -export function getStageType(stageNumber: number): StageType { +export function getStageType(stageNumber: number, level: number = 1): StageType { + // 第10关的特殊规则 if (stageNumber % 10 === 0) { - return StageType.BOSS; // 每10关为Boss关 - } else if (stageNumber % 5 === 0) { - return StageType.ELITE; // 每5关(非10的倍数)为精英关 - } else { - return StageType.NORMAL; // 其他关卡为普通关 + if (level === 5) { + return StageType.BOSS; // 第10关第5级为Boss关 + } else if (level === 4) { + return StageType.ELITE; // 第10关第4级为精英关 + } else { + return StageType.NORMAL; // 第10关1-3级为普通关 + } + } + // 1-9关的规则 + else { + if (level === 5) { + return StageType.ELITE; // 1-9关第5级为精英关 + } else { + return StageType.NORMAL; // 1-9关1-4级为普通关 + } } } /** * 生成关卡配置 * @param stageNumber 关卡号(从1开始) + * @param level 等级(1-5) * @returns MonsterType数组格式 */ -export function generateStageConfig(stageNumber: number): MonsterType[] { - const stageType = getStageType(stageNumber); +export function generateStageConfig(stageNumber: number, level: number = 1): MonsterType[] { + const stageType = getStageType(stageNumber, level); const rule = StageConfigRules[stageType]; const monsterArray: MonsterType[] = []; @@ -249,7 +262,7 @@ export function generateStageConfig(stageNumber: number): MonsterType[] { } }); - return monsterArray; + return monsterArray; } /** @@ -276,10 +289,11 @@ export function getMonsterUUIDsByType(monsterType: MonsterType): number[] { /** * 获取当前关卡对应的所有怪物UUID数组 * @param stageNumber 关卡号 + * @param level 等级(1-5) * @returns 怪物UUID数组,按关卡配置顺序排列 */ -export function getStageMonsterUUIDs(stageNumber: number): number[] { - const monsterTypes = generateStageConfig(stageNumber); +export function getStageMonsterUUIDs(stageNumber: number, level: number = 1): number[] { + const monsterTypes = generateStageConfig(stageNumber, level); const monsterUUIDs: number[] = []; monsterTypes.forEach(monsterType => { @@ -297,11 +311,12 @@ export function getStageMonsterUUIDs(stageNumber: number): number[] { /** * 获取关卡怪物配置(包含UUID和增强属性) * @param stageNumber 关卡号 + * @param level 等级(1-5) * @param useRandomBuff 是否使用随机buff * @returns 完整的怪物配置数组 */ -export function getStageMonsterConfigs(stageNumber: number, useRandomBuff: boolean = true) { - const monsterTypes = generateStageConfig(stageNumber); +export function getStageMonsterConfigs(stageNumber: number, level: number = 1, useRandomBuff: boolean = true) { + const monsterTypes = generateStageConfig(stageNumber, level); const stageMultipliers = getStageAllMultipliers(stageNumber); const monsterConfigs = []; @@ -312,10 +327,11 @@ export function getStageMonsterConfigs(stageNumber: number, useRandomBuff: boole const enhancement = getMonsterEnhancement(monsterType, useRandomBuff); monsterConfigs.push({ - id: `stage_${stageNumber}_${index}`, + id: `stage_${stageNumber}_level_${level}_${index}`, uuid: randomUUID, type: monsterType, stageNumber: stageNumber, + level: level, enhancement: enhancement, stageMultipliers: stageMultipliers });