docs: 为游戏地图模块添加详细的代码注释

为游戏地图模块的脚本文件添加全面的注释,说明每个组件的职责、关键设计、依赖关系和使用方式。注释覆盖了英雄信息面板、技能卡槽位管理器、排行榜弹窗、卡牌控制器、背景滚动组件等核心功能模块,提高了代码的可读性和维护性。

同时修复了英雄预制体的激活状态和技能效果预制体的尺寸参数。
This commit is contained in:
walkpan
2026-04-07 19:00:30 +08:00
parent 9a1d517aa9
commit e880613f8f
21 changed files with 1840 additions and 242 deletions

View File

@@ -1,74 +1,142 @@
/**
* @file RogueConfig.ts
* @description Roguelike 关卡配置 —— 怪物类型、成长值、波次刷怪方案
*
* 职责:
* 1. 定义怪物属性成长类型UpType和每种类型的 AP / HP 每阶段成长值。
* 2. 定义怪物分类MonType和对应的怪物 UUID 池。
* 3. 定义每一波Wave的怪物占位配置WaveSlotConfig / DefaultWaveSlot
* 4. 提供全局刷怪强度偏差系数SpawnPowerBias
*
* 设计说明:
* - 战场固定 6 个占位槽(索引 0-5
* - Boss 占 2 个槽位,只能放在 0、2、4 号位(确保有连续 2 格)。
* - MissionMonComp 在每波开始时读取本配置,决定刷怪组合。
*
* 注意:
* - StageGrow / StageBossGrow 的索引 [0] 为 AP 成长,[1] 为 HP 成长。
* - 实际计算公式base_stat + stage × grow_value × SpawnPowerBias。
*/
// ======================== 属性成长类型枚举 ========================
/** 怪物属性成长类型 */
export enum UpType {
AP1_HP1 = 0, //平衡
HP2 = 1, //强hp
AP2 = 2 //强ap
/** 平衡型AP 和 HP 均匀成长 */
AP1_HP1 = 0,
/** 强 HP 型:以血量为主成长 */
HP2 = 1,
/** 强 AP 型:以攻击力为主成长 */
AP2 = 2
}
// 普通关卡成长值:第一项为攻击力成长,第二项为血量成长
// ======================== 普通怪成长配置 ========================
/**
* 普通怪每阶段成长值:[AP 成长, HP 成长]
* 每经历一波stage +1怪物的 base_ap / base_hp 增加对应值。
*/
export const StageGrow = {
[UpType.AP1_HP1]: [4,10], // 平衡型:4 血10
[UpType.HP2]: [2,20], // 强HP型2 血20
[UpType.AP2]: [8,0], // 强AP型8 血0
[UpType.AP1_HP1]: [4,10], // 平衡型:每波攻击+4 血量+10
[UpType.HP2]: [2,20], // 强HP型每波攻击+2 血量+20
[UpType.AP2]: [8,0], // 强AP型每波攻击+8 血量+0
}
// Boss关卡成长值同上数值更高
// ======================== Boss 额外成长配置 ========================
/**
* Boss 在普通怪成长基础上的 **额外** 成长值:[AP 增量, HP 增量]
* 实际 Boss 成长 = StageGrow + StageBossGrow。
*/
export const StageBossGrow = {
[UpType.AP1_HP1]: [3,16], // 平衡型:攻3 血16
[UpType.HP2]: [1,24], // 强HP型:攻1 血24
[UpType.AP2]: [10,4], // 强AP型:攻10 血4
[UpType.AP1_HP1]: [3,16], // 平衡型 Boss额外攻击+3 血量+16
[UpType.HP2]: [1,24], // 强HP型 Boss额外攻击+1 血量+24
[UpType.AP2]: [10,4], // 强AP型 Boss额外攻击+10 血量+4
}
// ======================== 怪物类型定义 ========================
/** 怪物类型常量(用于 WaveSlotConfig 中引用) */
export const MonType = {
Melee: 0, // 近战高功
Long: 1, // 高速贴近
Support: 2, // 支持怪
MeleeBoss: 3, // boss怪
LongBoss: 4, // boss怪
/** 近战普通怪 */
Melee: 0,
/** 远程普通怪 */
Long: 1,
/** 辅助怪(支持类) */
Support: 2,
/** 近战 Boss */
MeleeBoss: 3,
/** 远程 Boss */
LongBoss: 4,
}
// ======================== 怪物 UUID 池 ========================
/** 各类型对应的怪物 UUID 列表(随机抽取) */
export const MonList = {
[MonType.Melee]: [6001,6002,6003], // 近战怪
[MonType.Long]: [6004,6005], // 远程怪
[MonType.Support]: [6005], // 辅助怪
[MonType.MeleeBoss]:[6006,6015], // 近战boss
[MonType.LongBoss]:[6104], // 远程boss
[MonType.Melee]: [6001,6002,6003], // 近战怪
[MonType.Long]: [6004,6005], // 远程怪
[MonType.Support]: [6005], // 辅助怪
[MonType.MeleeBoss]:[6006,6015], // 近战 Boss
[MonType.LongBoss]:[6104], // 远程 Boss
}
/*
*** 全局刷怪强度配置,后期根据玩家强度动态调整
*/
// ======================== 全局刷怪强度系数 ========================
/**
* 全局刷怪强度偏差系数。
* 所有怪物的最终 AP / HP 会乘以此系数。
* 后期可根据玩家强度动态调整以实现自适应难度。
*/
export const SpawnPowerBias = 1
// ======================== 波次占位配置数据结构 ========================
/** 单条波次占位配置 */
export interface IWaveSlot {
type: number; // 对应 MonType
count: number; // 占位数量
slotsPerMon?: number; // 每个怪占用几个位置,默认 1
/** 怪物类型(参考 MonType */
type: number;
/** 该类型的怪物数量 */
count: number;
/** (可选)每个怪物占用几个槽位,默认 1大型 Boss 设为 2 */
slotsPerMon?: number;
}
// =========================================================================================
// 【每波怪物占位与刷怪配置说明】
// 1. 字段说明:
//
// 字段说明:
// - type: 怪物类型 (参考 MonType如近战 0远程 1Boss 3 等)。
// - count: 该类型的怪在场上同时存在几个。
// - slotsPerMon: (可选) 单个怪物体积占用几个占位坑,默认为 1。如果是大型 Boss 可设为 2它会跨占位降落。
//
// 【注意】:
// 全场固定 6 个槽位(索引 0-5
// Boss 固定占用 2 个位置,且只能出现在 1、3、5 号位(对应索引 0, 2, 4)。
// 每波怪物总槽位占用不能超过 6。不再支持排队刷怪
// - slotsPerMon: (可选) 单个怪物体积占用几个占位坑,默认为 1。
// 大型 Boss 设为 2它会跨占位降落。
//
// 【规则约束】:
// - 全场固定 6 个槽位(索引 0-5)。
// - Boss 固定占用 2 个位置,且只能出现在 1、3、5 号位(对应索引 0, 2, 4
// - 每波怪物总槽位占用不能超过 6。
// =========================================================================================
/** 各波次的怪物占位配置key = 波次编号) */
export const WaveSlotConfig: { [wave: number]: IWaveSlot[] } = {
/** 第 1 波3 近战 + 3 远程 */
1: [
{ type: MonType.Melee, count: 3 },
{ type: MonType.Long, count: 3 }
],
/** 第 2 波2 近战 + 2 远程 + 2 辅助 */
2: [
{ type: MonType.Melee, count: 2 },
{ type: MonType.Long, count: 2 },
{ type: MonType.Support, count: 2 }
],
/** 第 3 波2 近战 + 1 近战Boss(占2格) + 2 远程 */
3: [
{ type: MonType.Melee, count: 2 },
{ type: MonType.MeleeBoss, count: 1, slotsPerMon: 2 },
{ type: MonType.Long, count: 2 }
],
/** 第 4 波2 近战 + 2 远程 + 1 远程Boss(占2格) */
4: [
{ type: MonType.Melee, count: 2 },
{ type: MonType.Long, count: 2 },
@@ -76,7 +144,11 @@ export const WaveSlotConfig: { [wave: number]: IWaveSlot[] } = {
],
}
// 默认占位配置 (如果在 WaveSlotConfig 中找不到波次,则使用此配置)
/**
* 默认占位配置:
* 当 WaveSlotConfig 中找不到对应波次时使用此兜底配置。
* 默认 3 近战 + 3 远程。
*/
export const DefaultWaveSlot: IWaveSlot[] = [
{ type: MonType.Melee, count: 3 },
{ type: MonType.Long, count: 3 }