----------------------------------------------------------------
-- 巅峰战场战斗模块
-- 用于注册到 CombatLogic 的战斗模块系统
----------------------------------------------------------------

local CombatDefine = require("combat.CombatDefine")
local CombatLogic = require("combat.CombatLogic")
local ServerCommerceActPeakBettle = require("serverCommerce.ServerCommerceActPeakBettle")
local RoleDBLogic = require("role.RoleDBLogic")
local CombatPosLogic = require("combat.CombatPosLogic")

-- 战斗类型（需要在 CombatDefine 中添加，或使用 Excel 配置）
local COMBAT_TYPE_PEAK_BATTLEFIELD = CombatDefine.COMBAT_TYPE35 or 35

local module = {}

-- 获取对手的战斗对象列表（防守方）
function module.getCombatObjList(human, side, args, combatType)
    if side ~= CombatDefine.DEFEND_SIDE then return end
    if combatType ~= COMBAT_TYPE_PEAK_BATTLEFIELD then return end
    
    local opponentUuid = args.opponentUuid
    if not opponentUuid then return end
    
    -- 获取对手数据（通过 serverCommerce 模块）
    -- 注意：这里需要访问 ServerCommerceActPeakBettle 的内部函数
    -- 由于是 local 函数，可能需要添加公共接口或使用其他方式
    
    -- 如果是玩家，使用玩家的防守阵容
    local target = CombatLogic.createCombatFakeHuman(opponentUuid)
    if target then
        return CombatLogic.getHumanObjList(target, COMBAT_TYPE_PEAK_BATTLEFIELD)
    end
    
    -- 如果是NPC或系统数据，使用系统提供的英雄数据
    -- 这里需要根据实际需求实现系统英雄数据的创建
    -- 暂时返回 nil，需要后续实现
    return nil
end

-- 获取地图ID
function module.getMapID(human, param)
    -- 巅峰战场使用固定地图，或从配置读取
    return nil  -- 使用默认地图
end

-- 检查是否可以打开上阵界面
function module.checkCombatPos(human, args, combatType)
    if combatType ~= COMBAT_TYPE_PEAK_BATTLEFIELD then return true end
    
    -- 检查对手是否存在
    local opponentUuid = args.opponentUuid
    if not opponentUuid then return false end
    
    -- 使用公共接口检查对手
    if not ServerCommerceActPeakBettle.CheckOpponent(opponentUuid) then
        return false
    end
    
    return true, {opponentUuid = opponentUuid}
end

-- 战斗开始前的处理
function module.fight(human, args, combatType)
    if combatType ~= COMBAT_TYPE_PEAK_BATTLEFIELD then return end
    
    -- 战斗已经在 ServerCommerceActPeakBettle.CommerceActPeakBettle_Challenge 中启动
    -- 这里可以做额外的处理
end

-- 战斗结束回调
function module.onFightEnd(human, result, combatType, cbParam, combatInfo, param, isSaodang)
    if combatType ~= COMBAT_TYPE_PEAK_BATTLEFIELD then return end
    
    ServerCommerceActPeakBettle.CommerceActPeakBettle_OnFightEnd(human, result, combatType, cbParam, combatInfo, param)
end

-- 获取战斗名称
function module.getCombatName(human, args, combatType)
    if combatType ~= COMBAT_TYPE_PEAK_BATTLEFIELD then return "" end
    return "巅峰战场"
end

return module

