本文最后更新于42 天前,其中的信息可能已经过时,如有错误请发送邮件到big_fw@foxmail.com
BattleManager(战斗管理器)
核心功能 :负责战斗核心逻辑的实现,包括战斗状态管理、行动执行、伤害计算等。
主要属性 :
- player_characters :玩家角色数组
- enemy_characters :敌人角色数组
- turn_queue :回合队列(按速度排序)
- current_turn_character :当前行动角色
- is_player_turn :是否为玩家回合(基于状态管理器)
关键方法 :
- start_battle() :开始战斗
- player_select_action() :处理玩家选择的行动
- execute_enemy_ai() :执行敌人AI
- _execute_attack()/_execute_skill()/_execute_defend() :执行具体行动
- check_battle_end_condition() :检查战斗结束条件
- spawn_damage_number() :生成伤害数字
- get_valid_enemy_targets()/get_valid_ally_targets() :获取有效目标
BattleScene(战斗场景)
核心功能 :负责战斗UI管理、用户交互处理、场景控制。
主要属性 :
- action_panel :行动面板UI
- info_label :战斗信息显示
- skill_select_menu :技能选择菜单
- target_selection_menu :目标选择菜单
- player_area/enemy_area :角色区域
- battle_manager :引用战斗管理器
- current_selected_skill :当前选中的技能
关键方法 :
- _ready() :初始化场景和连接信号
- show_action_ui() :显示/隐藏行动UI
- _on_skill_selected() :处理技能选择
- _on_target_selected() :处理目标选择
- _open_skill_menu() :打开技能菜单
- _show_action_menu() :显示行动菜单
战斗进行中的交互
玩家行动流程 :
- BattleScene 显示行动菜单 → 玩家选择行动
- BattleScene 调用 battle_manager.player_select_action() 执行行动
- BattleManager 执行具体行动(攻击/技能/防御)
- BattleManager 检查战斗结束条件
- BattleManager 发出信号通知 BattleScene 更新UI
技能使用流程 :
- BattleScene 打开技能菜单 → 玩家选择技能
- BattleScene 根据技能目标类型决定是否显示目标选择
- 玩家选择目标后,BattleScene 调用 battle_manager.player_select_action(“skill”, target, skill)
- BattleManager 执行技能逻辑,计算伤害/治疗
- BattleManager 生成伤害数字,发出战斗信息信号
不同战斗阶段的配合
1. 初始化阶段
- BattleScene :加载场景,连接信号,注册角色到 BattleManager
- BattleManager :初始化状态管理器,准备战斗数据
2. 战斗进行中
- 回合开始 :
- BattleManager 确定当前行动角色,发出 turn_changed 信号
- BattleScene 响应信号,根据是否为玩家回合显示/隐藏行动UI
- 玩家行动 :
- BattleScene 处理用户输入,显示相应菜单
- 玩家选择后,BattleScene 调用 BattleManager 的方法执行行动
- 行动执行 :
- BattleManager 执行具体行动,计算效果,生成视觉反馈
- BattleManager 发出战斗信息信号,BattleScene 更新信息显示
- 敌人回合 :
- BattleManager 执行敌人AI,选择目标和行动
- BattleScene 仅显示战斗信息,不处理用户输入
3. 战斗结束
- BattleManager :检查结束条件,发出 battle_ended 信号
- BattleScene :响应信号,隐藏行动UI,显示战斗结果
