1065 lines
37 KiB
Lua
1065 lines
37 KiB
Lua
|
---@class XEquipAgency : XAgency
|
|||
|
---@field _Model XEquipModel
|
|||
|
local XEquipAgency = XClass(XAgency, "XEquipAgency")
|
|||
|
local XUiPanelEquipV2P6 = require("XUi/XUiCharacterV2P6/Grid/XUiPanelEquipV2P6")
|
|||
|
|
|||
|
function XEquipAgency:OnInit()
|
|||
|
--初始化一些变量
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:InitRpc()
|
|||
|
-- 注册服务器事件
|
|||
|
XRpc.NotifyEquipDataList = Handler(self, self.NotifyEquipDataList)
|
|||
|
XRpc.NotifyEquipChipGroupList = Handler(self, self.NotifyEquipChipGroupList)
|
|||
|
XRpc.NotifyEquipChipAutoRecycleSite = Handler(self, self.NotifyEquipChipAutoRecycleSite)
|
|||
|
XRpc.NotifyEquipAutoRecycleChipList = Handler(self, self.NotifyEquipAutoRecycleChipList)
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:InitEvent()
|
|||
|
--实现跨Agency事件注册
|
|||
|
--self:AddAgencyEvent()
|
|||
|
end
|
|||
|
|
|||
|
-------rpc start--------
|
|||
|
-- 登陆初始化装备数据
|
|||
|
function XEquipAgency:InitEquipData(equipList)
|
|||
|
self._Model:InitEquipData(equipList)
|
|||
|
local equipDic = self._Model:GetEquipDic()
|
|||
|
XDataCenter.EquipManager.InitEquipData(equipDic)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_DATA_INIT_NOTIFY)
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:NotifyEquipDataList(data)
|
|||
|
if data.EquipDataList then
|
|||
|
self._Model:UpdateEquipData(data.EquipDataList)
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_DATA_LIST_UPDATE_NOTYFY)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:NotifyEquipChipGroupList(data)
|
|||
|
XDataCenter.EquipManager.NotifyEquipChipGroupList(data)
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:NotifyEquipChipAutoRecycleSite(data)
|
|||
|
XDataCenter.EquipManager.NotifyEquipChipAutoRecycleSite(data)
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:NotifyEquipAutoRecycleChipList(data)
|
|||
|
XDataCenter.EquipManager.NotifyEquipAutoRecycleChipList(data)
|
|||
|
end
|
|||
|
|
|||
|
-- 穿戴装备
|
|||
|
function XEquipAgency:PutOn(characterId, equipId, cb)
|
|||
|
if not XDataCenter.CharacterManager.IsOwnCharacter(characterId) then
|
|||
|
XUiManager.TipText("EquipPutOnNotChar")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local equipSpecialCharacterId = XDataCenter.EquipManager.GetEquipSpecialCharacterId(equipId)
|
|||
|
if equipSpecialCharacterId and equipSpecialCharacterId ~= characterId then
|
|||
|
local char = XDataCenter.CharacterManager.GetCharacter(equipSpecialCharacterId)
|
|||
|
if char then
|
|||
|
local characterName = XCharacterConfigs.GetCharacterName(equipSpecialCharacterId)
|
|||
|
local gradeName = XCharacterConfigs.GetCharGradeName(equipSpecialCharacterId, char.Grade)
|
|||
|
XUiManager.TipMsg(XUiHelper.GetText("EquipPutOnSpecialCharacterIdNotEqual", characterName, gradeName))
|
|||
|
end
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local characterEquipType = XCharacterConfigs.GetCharacterEquipType(characterId)
|
|||
|
if not XDataCenter.EquipManager.IsTypeEqual(equipId, characterEquipType) then
|
|||
|
XUiManager.TipText("EquipPutOnEquipTypeError")
|
|||
|
return
|
|||
|
end
|
|||
|
local site = XDataCenter.EquipManager.GetEquipSite(equipId)
|
|||
|
local req = { CharacterId = characterId, Site = site, EquipId = equipId }
|
|||
|
|
|||
|
local curEquip = XDataCenter.EquipManager.GetWearingEquipBySite(characterId, site)
|
|||
|
XNetwork.Call("EquipPutOnRequest", req, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
|
|||
|
local charIdDic = {}
|
|||
|
local oldEquipId = XDataCenter.EquipManager.GetWearingEquipIdBySite(characterId, site)
|
|||
|
--请求的装备从原来的角色替换到当前角色
|
|||
|
if oldEquipId and oldEquipId ~= 0 then
|
|||
|
local oldEquip = self:GetEquip(oldEquipId)
|
|||
|
local switchCharacterId = XDataCenter.EquipManager.GetEquipWearingCharacterId(equipId)
|
|||
|
if XDataCenter.EquipManager.IsWeapon(oldEquipId) then
|
|||
|
oldEquip:PutOn(switchCharacterId)
|
|||
|
else
|
|||
|
oldEquip:TakeOff()
|
|||
|
end
|
|||
|
XDataCenter.EquipGuideManager.HandleEquipGuidePutOnOrTakeOff({ equipId }, switchCharacterId, false)
|
|||
|
elseif curEquip then --目标角色更换了非目标装备
|
|||
|
XDataCenter.EquipGuideManager.HandleEquipGuidePutOnOrTakeOff({ curEquip.Id }, characterId, false)
|
|||
|
end
|
|||
|
|
|||
|
if equip:IsWearing() then
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
end
|
|||
|
charIdDic[characterId] = true
|
|||
|
equip:PutOn(characterId)
|
|||
|
|
|||
|
self:TipEquipOperation(nil, XUiHelper.GetText("EquipPutOnSuc"))
|
|||
|
|
|||
|
XDataCenter.EquipGuideManager.HandleEquipGuidePutOnOrTakeOff({ equipId }, characterId, true)
|
|||
|
|
|||
|
-- 更新角色数据
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_PUTON_NOTYFY, equipId)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_PUTON_NOTYFY, equipId)
|
|||
|
|
|||
|
if equip:IsWeapon() then
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_PUTON_WEAPON_NOTYFY, characterId, equipId)
|
|||
|
end
|
|||
|
|
|||
|
if cb then cb() end
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 卸下装备
|
|||
|
function XEquipAgency:TakeOff(equipIds)
|
|||
|
if not equipIds or not next(equipIds) then
|
|||
|
XLog.Error("XEquipAgency:TakeOff错误, 参数equipIds不能为为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
for _, equipId in pairs(equipIds) do
|
|||
|
if not XDataCenter.EquipManager.IsWearing(equipId) then
|
|||
|
XUiManager.TipText("EquipTakeOffNotChar")
|
|||
|
return
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
local req = {EquipIds = equipIds}
|
|||
|
XNetwork.Call("EquipTakeOffRequest", req, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
self:TipEquipOperation(nil, XUiHelper.GetText("EquipTakeOffSuc"))
|
|||
|
|
|||
|
local charIdDic = {}
|
|||
|
for _, equipId in pairs(equipIds) do
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
local characterId = equip.CharacterId
|
|||
|
charIdDic[characterId] = true
|
|||
|
equip:TakeOff()
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_TAKEOFF_NOTYFY, equipId)
|
|||
|
XDataCenter.EquipGuideManager.HandleEquipGuidePutOnOrTakeOff({ equipId }, characterId, false)
|
|||
|
end
|
|||
|
|
|||
|
-- 更新角色数据
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIPLIST_TAKEOFF_NOTYFY, equipIds)
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIPLIST_TAKEOFF_NOTYFY, equipIds)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 替换装备意识套装
|
|||
|
function XEquipAgency:EquipSuitPrefabEquip(prefabIndex, characterId, afterCheckCb)
|
|||
|
if not characterId then
|
|||
|
return
|
|||
|
end
|
|||
|
local suitPrefabInfo = XDataCenter.EquipManager.GetSuitPrefabInfo(prefabIndex)
|
|||
|
if not suitPrefabInfo then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local oldEquipSiteToIdDic = {}
|
|||
|
local oldEquipIds = XDataCenter.EquipManager.GetCharacterWearingAwarenessIds(characterId)
|
|||
|
for _, equipId in pairs(oldEquipIds) do
|
|||
|
local equipSite = XDataCenter.EquipManager.GetEquipSite(equipId)
|
|||
|
oldEquipSiteToIdDic[equipSite] = equipId
|
|||
|
end
|
|||
|
|
|||
|
local isDifferent = false
|
|||
|
local newEquipSiteToIdDic = {}
|
|||
|
local newEquipIds = suitPrefabInfo:GetEquipIds()
|
|||
|
local newEquipIdDic = {}
|
|||
|
for _, equipId in pairs(newEquipIds) do
|
|||
|
local equipSpecialCharacterId = XDataCenter.EquipManager.GetEquipSpecialCharacterId(equipId)
|
|||
|
if equipSpecialCharacterId and equipSpecialCharacterId ~= characterId then
|
|||
|
local char = XDataCenter.CharacterManager.GetCharacter(equipSpecialCharacterId)
|
|||
|
local characterName = XCharacterConfigs.GetCharacterName(equipSpecialCharacterId)
|
|||
|
local gradeName = XCharacterConfigs.GetCharGradeName(equipSpecialCharacterId, char.Grade)
|
|||
|
XUiManager.TipMsg(XUiHelper.GetText("EquipPutOnSpecialCharacterIdNotEqual", characterName, gradeName))
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local equipSite = XDataCenter.EquipManager.GetEquipSite(equipId)
|
|||
|
newEquipSiteToIdDic[equipSite] = equipId
|
|||
|
newEquipIdDic[equipId] = true
|
|||
|
if oldEquipSiteToIdDic[equipSite] ~= equipId then
|
|||
|
isDifferent = true
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
for _, oldequipId in pairs(oldEquipIds) do
|
|||
|
if not newEquipIdDic[oldequipId] then
|
|||
|
isDifferent = true
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
if not isDifferent then
|
|||
|
XUiManager.TipText("EquipSuitPrefabEquipSame")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local req = {CharacterId = characterId, GroupId = suitPrefabInfo:GetGroupId()}
|
|||
|
XNetwork.Call("EquipPutOnChipGroupRequest", req, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local charIdDic = {}
|
|||
|
XDataCenter.EquipGuideManager.HandleEquipGuidePutOnOrTakeOff(oldEquipIds, characterId, false)
|
|||
|
for _, equipId in pairs(oldEquipIds) do
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
equip:TakeOff()
|
|||
|
end
|
|||
|
|
|||
|
for _, equipId in pairs(newEquipIds) do
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
-- 记录卸下装备的角色
|
|||
|
if equip:IsWearing() then
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
end
|
|||
|
equip:PutOn(characterId)
|
|||
|
end
|
|||
|
charIdDic[characterId] = true
|
|||
|
XDataCenter.EquipGuideManager.HandleEquipGuidePutOnOrTakeOff(newEquipIds, characterId, true)
|
|||
|
|
|||
|
local equipIds = {}
|
|||
|
for _, equipSite in pairs(XEnumConst.EQUIP.EQUIP_SITE.AWARENESS) do
|
|||
|
local equipId = oldEquipSiteToIdDic[equipSite] or newEquipSiteToIdDic[equipSite]
|
|||
|
if equipId then
|
|||
|
table.insert(equipIds, equipId)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
XUiManager.TipText("EquipSuitPrefabEquipSuc")
|
|||
|
if afterCheckCb then
|
|||
|
afterCheckCb()
|
|||
|
end
|
|||
|
|
|||
|
-- 更新角色数据
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIPLIST_TAKEOFF_NOTYFY, equipIds)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIPLIST_TAKEOFF_NOTYFY, equipIds)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 请求升级
|
|||
|
function XEquipAgency:LevelUp(equipId, equipIdCheckList, useItemDic, callBackBeforeEvent)
|
|||
|
if not equipId then
|
|||
|
XLog.Error("XEquipAgency.LevelUp错误: 参数equipId不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if XDataCenter.EquipManager.IsMaxLevel(equipId) then
|
|||
|
XUiManager.TipText("EquipLevelUpMaxLevel")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local costEmpty = true
|
|||
|
local costMoney = 0
|
|||
|
if equipIdCheckList and next(equipIdCheckList) then
|
|||
|
costEmpty = nil
|
|||
|
costMoney = costMoney + XDataCenter.EquipManager.GetEatEquipsCostMoney(equipIdCheckList)
|
|||
|
end
|
|||
|
|
|||
|
if useItemDic and next(useItemDic) then
|
|||
|
costEmpty = nil
|
|||
|
costMoney = costMoney + XDataCenter.EquipManager.GetEatItemsCostMoney(useItemDic)
|
|||
|
XMessagePack.MarkAsTable(useItemDic)
|
|||
|
end
|
|||
|
|
|||
|
if costEmpty then
|
|||
|
XUiManager.TipText("EquipLevelUpItemEmpty")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not XDataCenter.ItemManager.DoNotEnoughBuyAsset(
|
|||
|
XDataCenter.ItemManager.ItemId.Coin,
|
|||
|
costMoney,
|
|||
|
1,
|
|||
|
function()
|
|||
|
self:LevelUp(equipId, equipIdCheckList, useItemDic, callBackBeforeEvent)
|
|||
|
end,
|
|||
|
"EquipBreakCoinNotEnough")
|
|||
|
then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local useEquipIdList = {}
|
|||
|
local containPrecious = false
|
|||
|
for tmpEquipId in pairs(equipIdCheckList) do
|
|||
|
containPrecious = containPrecious or self:GetEquipStar(self:GetEquipTemplateId(tmpEquipId)) >= XEnumConst.EQUIP.CAN_NOT_AUTO_EAT_STAR
|
|||
|
table.insert(useEquipIdList, tmpEquipId)
|
|||
|
end
|
|||
|
|
|||
|
local req = {EquipId = equipId, UseEquipIdList = useEquipIdList, UseItems = useItemDic}
|
|||
|
local callFunc = function()
|
|||
|
XNetwork.Call("EquipLevelUpRequest", req, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local charIdDic = {}
|
|||
|
for _, tmpEquipId in pairs(useEquipIdList) do
|
|||
|
local tmpEquip = self:GetEquip(tmpEquipId)
|
|||
|
if tmpEquip:IsWearing() then
|
|||
|
charIdDic[tmpEquip.CharacterId] = true
|
|||
|
end
|
|||
|
self:DeleteEquip(tmpEquipId)
|
|||
|
end
|
|||
|
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
equip:SetLevel(res.Level)
|
|||
|
equip:SetExp(res.Exp)
|
|||
|
if equip:IsWearing() then
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
end
|
|||
|
|
|||
|
local closeCb
|
|||
|
if XDataCenter.EquipManager.CanBreakThrough(equipId) then
|
|||
|
closeCb = function()
|
|||
|
self:TipEquipOperation(equipId, nil, nil, true)
|
|||
|
end
|
|||
|
end
|
|||
|
self:TipEquipOperation(nil, XUiHelper.GetText("EquipStrengthenSuc"), closeCb, true)
|
|||
|
|
|||
|
if callBackBeforeEvent then
|
|||
|
callBackBeforeEvent()
|
|||
|
end
|
|||
|
|
|||
|
-- 更新角色数据
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_STRENGTHEN_NOTYFY, equipId)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_STRENGTHEN_NOTYFY, equipId)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
if containPrecious then
|
|||
|
local title = XUiHelper.GetText("EquipStrengthenPreciousTipTitle")
|
|||
|
local content = XUiHelper.GetText("EquipStrengthenPreciousTipContent")
|
|||
|
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, nil, callFunc)
|
|||
|
else
|
|||
|
callFunc()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 请求突破
|
|||
|
function XEquipAgency:Breakthrough(equipId)
|
|||
|
if not equipId then
|
|||
|
XLog.Error("XEquipAgency.Breakthrough错误: 参数equipId不能为空")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if XDataCenter.EquipManager.IsMaxBreakthrough(equipId) then
|
|||
|
XUiManager.TipText("EquipBreakMax")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not XDataCenter.EquipManager.IsReachBreakthroughLevel(equipId) then
|
|||
|
XUiManager.TipText("EquipBreakMinLevel")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local consumeItems = XDataCenter.EquipManager.GetBreakthroughConsumeItems(equipId)
|
|||
|
if not XDataCenter.ItemManager.CheckItemsCount(consumeItems) then
|
|||
|
XUiManager.TipText("EquipBreakItemNotEnough")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if not XDataCenter.ItemManager.DoNotEnoughBuyAsset(
|
|||
|
XDataCenter.EquipManager.GetBreakthroughUseItemId(equipId),
|
|||
|
XDataCenter.EquipManager.GetBreakthroughUseMoney(equipId),
|
|||
|
1,
|
|||
|
function()
|
|||
|
self:Breakthrough(equipId)
|
|||
|
end,
|
|||
|
"EquipBreakCoinNotEnough")
|
|||
|
then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local title = XUiHelper.GetText("EquipBreakthroughConfirmTiltle")
|
|||
|
local content = XUiHelper.GetText("EquipBreakthroughConfirmContent")
|
|||
|
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, nil, function()
|
|||
|
XNetwork.Call("EquipBreakthroughRequest", {EquipId = equipId}, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
equip:BreakthroughOneTime()
|
|||
|
|
|||
|
if equip:IsWearing() then
|
|||
|
local charIdDic = {}
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
end
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_BREAKTHROUGH_NOTYFY, equipId)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_BREAKTHROUGH_NOTYFY, equipId)
|
|||
|
end)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 请求一键升级
|
|||
|
function XEquipAgency:EquipOneKeyFeedRequest(equipId, targetBreakthrough, targetLevel, operations, cb)
|
|||
|
if XFunctionManager.CheckFunctionFitter(XFunctionManager.FunctionName.EquipQuick) then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local req = { EquipId = equipId, TargetBreakthrough = targetBreakthrough, TargetLevel = targetLevel, OperationInfos = {}}
|
|||
|
|
|||
|
--服务端要求数据结构
|
|||
|
for _, operation in ipairs(operations) do
|
|||
|
local data = {
|
|||
|
OperationType = operation.OperationType,
|
|||
|
UseItemIdList = {},
|
|||
|
UseItemCountList = {},
|
|||
|
UseEquipIdList = {}
|
|||
|
}
|
|||
|
if not XTool.IsTableEmpty(operation.UseItems) then
|
|||
|
for itemId, itemCount in pairs(operation.UseItems) do
|
|||
|
if itemCount > 0 then
|
|||
|
table.insert(data.UseItemIdList, itemId)
|
|||
|
table.insert(data.UseItemCountList, itemCount)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
--构造装备列表
|
|||
|
if not XTool.IsTableEmpty(operation.UseEquipIdDic) then
|
|||
|
for equipId in pairs(operation.UseEquipIdDic) do
|
|||
|
table.insert(data.UseEquipIdList, equipId)
|
|||
|
end
|
|||
|
end
|
|||
|
table.insert(req.OperationInfos, data)
|
|||
|
end
|
|||
|
-- 拦截空操作
|
|||
|
if XTool.IsTableEmpty(req.OperationInfos) then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
XDataCenter.TaskManager.CloseSyncTasksEvent()
|
|||
|
XNetwork.Call("EquipOneKeyFeedRequest", req, function(res)
|
|||
|
XDataCenter.TaskManager.OpenSyncTasksEvent()
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
--删除被吃掉的装备
|
|||
|
local charIdDic = {}
|
|||
|
for _, operation in pairs(req.OperationInfos) do
|
|||
|
for _, tmpEquipId in pairs(operation.UseEquipIdList) do
|
|||
|
local tmpEquip = self:GetEquip(tmpEquipId)
|
|||
|
if tmpEquip:IsWearing() then
|
|||
|
charIdDic[tmpEquip.CharacterId] = true
|
|||
|
end
|
|||
|
self:DeleteEquip(tmpEquipId)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
--更新装备数据
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
equip:SetBreakthrough(res.Breakthrough)
|
|||
|
equip:SetLevel(res.Level)
|
|||
|
equip:SetExp(res.Exp)
|
|||
|
if equip:IsWearing() then
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
end
|
|||
|
|
|||
|
self:TipEquipOperation(nil, XUiHelper.GetText("EquipMultiStrengthenSuc"))
|
|||
|
|
|||
|
if cb then
|
|||
|
cb()
|
|||
|
end
|
|||
|
|
|||
|
-- 更新角色数据
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_QUICK_STRENGTHEN_NOTYFY, equipId)
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_STRENGTHEN_NOTYFY, equipId)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_STRENGTHEN_NOTYFY, equipId)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 请求武器/意识共鸣
|
|||
|
function XEquipAgency:RequestEquipResonance(equipId, slots, characterId, useEquipId, useItemId, selectSkillIds, equipResonanceType)
|
|||
|
if useEquipId and self:GetEquip(useEquipId).IsLock then
|
|||
|
XUiManager.TipText("EquipIsLock")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
if characterId and not XDataCenter.CharacterManager.IsOwnCharacter(characterId) then
|
|||
|
XUiManager.TipText("EquipResonanceNotOwnCharacter")
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local callFunc = function()
|
|||
|
local req = { EquipId = equipId, Slots = slots, CharacterId = characterId, UseEquipId = useEquipId, UseItemId = useItemId,
|
|||
|
SelectSkillIds = selectSkillIds, SelectType = equipResonanceType }
|
|||
|
|
|||
|
XNetwork.Call("EquipResonanceRequest", req, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local charIdDic = {}
|
|||
|
if useEquipId then
|
|||
|
local useEquip = self:GetEquip(useEquipId)
|
|||
|
if useEquip:IsWearing() then
|
|||
|
charIdDic[useEquip.CharacterId] = true
|
|||
|
end
|
|||
|
self:DeleteEquip(useEquipId)
|
|||
|
end
|
|||
|
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
for i, resonanceData in ipairs(res.ResonanceDatas) do
|
|||
|
if equip:IsWeapon() then
|
|||
|
equip:Resonance(resonanceData, true)
|
|||
|
else
|
|||
|
equip:Resonance(resonanceData)
|
|||
|
end
|
|||
|
end
|
|||
|
if equip:IsWearing() then
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
end
|
|||
|
|
|||
|
--5星及以上的装备(包括武器、意识)共鸣操作成功之后,将该装备自动上锁
|
|||
|
if XDataCenter.EquipManager.CanResonance(equipId) then
|
|||
|
equip:SetLock(true)
|
|||
|
end
|
|||
|
|
|||
|
-- 更新角色数据
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_RESONANCE_NOTYFY, equipId, slots)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_RESONANCE_NOTYFY, equipId, slots)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
local containPrecious = useEquipId and self:GetEquipStar(self:GetEquipTemplateId(useEquipId)) >= XEnumConst.EQUIP.CAN_NOT_AUTO_EAT_STAR
|
|||
|
if containPrecious then
|
|||
|
local title = XUiHelper.GetText("EquipResonancePreciousTipTitle")
|
|||
|
local content = XUiHelper.GetText("EquipResonancePreciousTipContent")
|
|||
|
XUiManager.DialogTip(title, content, XUiManager.DialogType.Normal, nil, callFunc)
|
|||
|
else
|
|||
|
callFunc()
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 共鸣技能确认
|
|||
|
function XEquipAgency:ResonanceConfirm(equipId, slot, isUse)
|
|||
|
local req = {EquipId = equipId, Slot = slot, IsUse = isUse}
|
|||
|
XNetwork.Call("EquipResonanceConfirmRequest", req, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
equip:ResonanceConfirm(slot, isUse)
|
|||
|
|
|||
|
-- 更新角色数据
|
|||
|
if equip:IsWearing() then
|
|||
|
local charIdDic = {}
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
end
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_RESONANCE_ACK_NOTYFY, equipId, slot)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_RESONANCE_ACK_NOTYFY, equipId)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 请求超频
|
|||
|
function XEquipAgency:Awake(equipId, slot, costType)
|
|||
|
if not XFunctionManager.DetectionFunction(XFunctionManager.FunctionName.EquipAwake) then
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
XNetwork.Call("EquipAwakeRequest", {EquipId = equipId, Slot = slot, CostType = costType}, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
equip:SetAwake(slot)
|
|||
|
|
|||
|
-- 更新角色数据
|
|||
|
if equip:IsWearing() then
|
|||
|
local charIdDic = {}
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
end
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_AWAKE_NOTYFY, equipId, slot)
|
|||
|
XEventManager.DispatchEvent(XEventId.EVENT_EQUIP_AWAKE_NOTYFY, equipId)
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 请求超限升级
|
|||
|
function XEquipAgency:EquipWeaponOverrunLevelUpRequest(equipId, callback)
|
|||
|
local request = { EquipId = equipId }
|
|||
|
XNetwork.Call("EquipWeaponOverrunLevelUpRequest", request, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- 刷新数据
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
equip:SetOverrunData(res.WeaponOverrunData)
|
|||
|
if equip:IsWearing() then
|
|||
|
local charIdDic = {}
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
end
|
|||
|
|
|||
|
-- 升级1级时,自动上锁
|
|||
|
if res.WeaponOverrunData.Level == 1 and not equip.IsLock then
|
|||
|
XDataCenter.EquipManager.SetLock(equipId, true)
|
|||
|
end
|
|||
|
|
|||
|
-- 超限发生变化,发送事件
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_OVERRUN_CHANGE_NOTYFY, equipId)
|
|||
|
|
|||
|
if callback then
|
|||
|
callback()
|
|||
|
end
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 请求超限额外意识解锁
|
|||
|
function XEquipAgency:EquipWeaponActiveOverrunSuitRequest(equipId, suitId, callback)
|
|||
|
local request = { EquipId = equipId, SuitId = suitId }
|
|||
|
XNetwork.Call("EquipWeaponActiveOverrunSuitRequest", request, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- 刷新数据
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
equip:SetOverrunData(res.WeaponOverrunData)
|
|||
|
if equip:IsWearing() then
|
|||
|
local charIdDic = {}
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
end
|
|||
|
|
|||
|
if callback then
|
|||
|
callback()
|
|||
|
end
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 请求超限切换意识选中
|
|||
|
function XEquipAgency:EquipWeaponChoseOverrunSuitRequest(equipId, suitId, callback)
|
|||
|
local request = { EquipId = equipId, SuitId = suitId }
|
|||
|
XNetwork.Call("EquipWeaponChoseOverrunSuitRequest", request, function(res)
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
-- 刷新数据
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
equip:SetOverrunData(res.WeaponOverrunData)
|
|||
|
if equip:IsWearing() then
|
|||
|
local charIdDic = {}
|
|||
|
charIdDic[equip.CharacterId] = true
|
|||
|
XMVCA:GetAgency(ModuleId.XCharacter):OnSyncCharacterEquipChange(charIdDic)
|
|||
|
end
|
|||
|
|
|||
|
-- 超限发生变化,发送事件
|
|||
|
CsXGameEventManager.Instance:Notify(XEventId.EVENT_EQUIP_OVERRUN_CHANGE_NOTYFY, equipId)
|
|||
|
|
|||
|
if callback then
|
|||
|
callback()
|
|||
|
end
|
|||
|
end)
|
|||
|
end
|
|||
|
|
|||
|
-- 请求分解装备
|
|||
|
function XEquipAgency:EquipDecompose(equipIds, cb)
|
|||
|
local req = {EquipIds = equipIds}
|
|||
|
XDataCenter.TaskManager.CloseSyncTasksEvent()
|
|||
|
XNetwork.Call("EquipDecomposeRequest", req, function(res)
|
|||
|
XDataCenter.TaskManager.OpenSyncTasksEvent()
|
|||
|
if res.Code ~= XCode.Success then
|
|||
|
XUiManager.TipCode(res.Code)
|
|||
|
return
|
|||
|
end
|
|||
|
|
|||
|
local rewardGoodsList = res.RewardGoodsList
|
|||
|
for _, id in pairs(equipIds) do
|
|||
|
self:DeleteEquip(id)
|
|||
|
end
|
|||
|
|
|||
|
if cb then
|
|||
|
cb(rewardGoodsList)
|
|||
|
end
|
|||
|
end)
|
|||
|
end
|
|||
|
-------rpc end--------
|
|||
|
|
|||
|
--------------------------------------------------------------------协议数据 start---------------------------------------
|
|||
|
-- 获取装备的XEquip对象实例
|
|||
|
function XEquipAgency:GetEquip(equipId)
|
|||
|
return self._Model:GetEquip(equipId)
|
|||
|
end
|
|||
|
|
|||
|
-- 获取所有装备的XEquip对象实例
|
|||
|
function XEquipAgency:GetEquipDic()
|
|||
|
return self._Model:GetEquipDic()
|
|||
|
end
|
|||
|
|
|||
|
-- 删除装备
|
|||
|
function XEquipAgency:DeleteEquip(equipId)
|
|||
|
self._Model:DeleteEquip(equipId)
|
|||
|
end
|
|||
|
|
|||
|
-- 获取装备的配置表Id
|
|||
|
function XEquipAgency:GetEquipTemplateId(equipId)
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
return equip.TemplateId
|
|||
|
end
|
|||
|
|
|||
|
-- 获取装备的属性哈希表
|
|||
|
function XEquipAgency:GetEquipAttrMap(equipId, preBreakthrough, preLevel)
|
|||
|
local attrMap = {}
|
|||
|
if not equipId then
|
|||
|
return attrMap
|
|||
|
end
|
|||
|
|
|||
|
local equip = self:GetEquip(equipId)
|
|||
|
local attrs = XFightEquipManager.GetEquipAttribs(equip, preBreakthrough, preLevel)
|
|||
|
attrMap = self:ConstructEquipAttrMap(attrs)
|
|||
|
return attrMap
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:ConstructEquipAttrMap(attrs, isIncludeZero, remainDigitTwo)
|
|||
|
local equipAttrMap = {}
|
|||
|
for _, attrIndex in ipairs(XEquipConfig.AttrSortType) do
|
|||
|
local value = attrs and attrs[attrIndex]
|
|||
|
|
|||
|
--默认保留两位小数
|
|||
|
if not remainDigitTwo then
|
|||
|
value = value and FixToInt(value)
|
|||
|
else
|
|||
|
value = value and tonumber(string.format("%0.2f", FixToDouble(value)))
|
|||
|
end
|
|||
|
|
|||
|
if isIncludeZero or value and value > 0 then
|
|||
|
local name = XAttribManager.GetAttribNameByIndex(attrIndex)
|
|||
|
table.insert(equipAttrMap, {AttrIndex = attrIndex, Name = name, Value = value or 0})
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
return equipAttrMap
|
|||
|
end
|
|||
|
|
|||
|
-- 获取角色穿戴的装备列表
|
|||
|
function XEquipAgency:GetWearingEquipList(characterId)
|
|||
|
local equipList = {}
|
|||
|
local equipDic = self._Model:GetEquipDic()
|
|||
|
for _, equip in pairs(equipDic) do
|
|||
|
if equip.CharacterId == characterId then
|
|||
|
table.insert(equipList, equip)
|
|||
|
end
|
|||
|
end
|
|||
|
return equipList
|
|||
|
end
|
|||
|
|
|||
|
-- 获取角色穿戴的意识列表
|
|||
|
function XEquipAgency:GetWearingAwarenessList(characterId)
|
|||
|
local equipList = {}
|
|||
|
local equipDic = self._Model:GetEquipDic()
|
|||
|
for _, equip in pairs(equipDic) do
|
|||
|
if equip.CharacterId == characterId and equip:IsAwareness() then
|
|||
|
table.insert(equipList, equip)
|
|||
|
end
|
|||
|
end
|
|||
|
return equipList
|
|||
|
end
|
|||
|
|
|||
|
-- 获取角色穿戴的套装列表信息
|
|||
|
function XEquipAgency:GetWearingSuitInfoList(characterId)
|
|||
|
local suitInfoDic = {}
|
|||
|
local suitInfoList = {}
|
|||
|
local getSuitInfoFunc = function(suitId)
|
|||
|
local suitInfo = suitInfoDic[suitId]
|
|||
|
if not suitInfo then
|
|||
|
local suitName = self:GetEquipSuitName(suitId)
|
|||
|
suitInfo = { SuitId = suitId, Name = suitName, Count = 0, IsOverrun = false }
|
|||
|
suitInfoDic[suitId] = suitInfo
|
|||
|
table.insert(suitInfoList, suitInfo)
|
|||
|
end
|
|||
|
return suitInfo
|
|||
|
end
|
|||
|
|
|||
|
local equipList = self:GetWearingAwarenessList(characterId)
|
|||
|
for _, equip in pairs(equipList) do
|
|||
|
local suitId = self:GetEquipSuitId(equip.TemplateId)
|
|||
|
local suitInfo = getSuitInfoFunc(suitId)
|
|||
|
suitInfo.Count = suitInfo.Count + 1
|
|||
|
end
|
|||
|
|
|||
|
-- 武器超限
|
|||
|
local usingWeaponId = XDataCenter.EquipManager.GetCharacterWearingWeaponId(characterId)
|
|||
|
if usingWeaponId ~= 0 then
|
|||
|
local equip = self:GetEquip(usingWeaponId)
|
|||
|
if equip:CanOverrun() and equip:IsOverrunBlindMatch() then
|
|||
|
local overrunSuitId = equip:GetOverrunChoseSuit()
|
|||
|
if overrunSuitId ~= 0 then
|
|||
|
local suitInfo = getSuitInfoFunc(overrunSuitId)
|
|||
|
local skillDescs = self:GetEquipSuitSkillDescription(overrunSuitId)
|
|||
|
local curCnt = suitInfo.Count
|
|||
|
for addCnt = 1, XEnumConst.EQUIP.OVERRUN_ADD_SUIT_CNT do
|
|||
|
if skillDescs[curCnt + addCnt]then
|
|||
|
suitInfo.Count = curCnt + addCnt
|
|||
|
suitInfo.IsOverrun = true
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
table.sort(suitInfoList, function(a, b)
|
|||
|
-- 套装数量多的优先
|
|||
|
if a.Count ~= b.Count then
|
|||
|
return a.Count > b.Count
|
|||
|
end
|
|||
|
|
|||
|
-- 非超限的优先
|
|||
|
if a.IsOverrun ~= b.IsOverrun then
|
|||
|
return not a.IsOverrun
|
|||
|
end
|
|||
|
|
|||
|
-- 套装id大的优先
|
|||
|
return a.SuitId > b.SuitId
|
|||
|
end)
|
|||
|
|
|||
|
return suitInfoList
|
|||
|
end
|
|||
|
|
|||
|
-- 是否是角色穿戴武器,激活超限所绑定的意识
|
|||
|
function XEquipAgency:IsCharacterOverrunSuit(characterId, suitId)
|
|||
|
local usingWeaponId = XDataCenter.EquipManager.GetCharacterWearingWeaponId(characterId)
|
|||
|
if usingWeaponId ~= 0 then
|
|||
|
local usingEquip = self:GetEquip(usingWeaponId)
|
|||
|
local choseSuit = usingEquip:GetOverrunChoseSuit()
|
|||
|
return choseSuit == suitId
|
|||
|
end
|
|||
|
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
-- 获取意识激活详情列表
|
|||
|
function XEquipAgency:GetSuitActiveSkillDesList(suitId, count, isOverrun, isAddOverrunTips)
|
|||
|
count = count or 0
|
|||
|
|
|||
|
local skillInfoList = {}
|
|||
|
local skillDesList = self:GetEquipSuitSkillDescription(suitId)
|
|||
|
local maxDescCnt = XEnumConst.EQUIP.WEAR_AWARENESS_COUNT
|
|||
|
|
|||
|
for i = 1, maxDescCnt do
|
|||
|
local skillDesc = skillDesList[i]
|
|||
|
if skillDesc then
|
|||
|
local isActive = count >= i -- 意识装备数量激活
|
|||
|
local isActiveWithOverrun = isOverrun and (count + XEnumConst.EQUIP.OVERRUN_ADD_SUIT_CNT) >= i -- 算上超限能否激活
|
|||
|
|
|||
|
local skillInfo = {}
|
|||
|
skillInfo.Pos = i
|
|||
|
skillInfo.PosDes = XUiHelper.GetText("EquipSuitSkillPrefix" .. i)
|
|||
|
skillInfo.IsActive = isActive or isActiveWithOverrun
|
|||
|
skillInfo.IsActiveByOverrun = not isActive and isActiveWithOverrun
|
|||
|
skillInfo.SkillDes = skillDesc or ""
|
|||
|
if skillInfo.IsActiveByOverrun then
|
|||
|
skillInfo.OverrunTips = XUiHelper.GetText("EquipOverrunActive" .. i)
|
|||
|
if isAddOverrunTips then
|
|||
|
skillInfo.SkillDes = skillInfo.SkillDes .. XUiHelper.GetText("EquipOverrunActiveTips")
|
|||
|
end
|
|||
|
end
|
|||
|
table.insert(skillInfoList, skillInfo)
|
|||
|
end
|
|||
|
end
|
|||
|
return skillInfoList
|
|||
|
end
|
|||
|
--------------------------------------------------------------------协议数据 end---------------------------------------
|
|||
|
|
|||
|
--------------------------------------------------------------------config start---------------------------------------
|
|||
|
--------------------region Equip --------------------
|
|||
|
function XEquipAgency:GetConfigEquip(id)
|
|||
|
return self._Model:GetConfigEquip(id)
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipName(id)
|
|||
|
return self._Model:GetConfigEquip(id).Name
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipSite(id)
|
|||
|
return self._Model:GetConfigEquip(id).Site
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipType(id)
|
|||
|
return self._Model:GetConfigEquip(id).Type
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipQuality(id)
|
|||
|
return self._Model:GetConfigEquip(id).Quality
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipStar(id)
|
|||
|
return self._Model:GetConfigEquip(id).Star
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipWeaponSkillId(id)
|
|||
|
return self._Model:GetConfigEquip(id).WeaponSkillId
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipPriority(id)
|
|||
|
return self._Model:GetConfigEquip(id).Priority
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipDefaultLock(id)
|
|||
|
return self._Model:GetConfigEquip(id).DefaultLock
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipCharacterId(id)
|
|||
|
return self._Model:GetConfigEquip(id).CharacterId
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipSuitId(id)
|
|||
|
return self._Model:GetConfigEquip(id).SuitId
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipCharacterType(id)
|
|||
|
return self._Model:GetConfigEquip(id).CharacterType
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipLogName(id)
|
|||
|
return self._Model:GetConfigEquip(id).LogName
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipDescription(id)
|
|||
|
return self._Model:GetConfigEquip(id).Description
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipNeedFirstShow(id)
|
|||
|
return self._Model:GetConfigEquip(id).NeedFirstShow
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipRecommendCharacterId(id)
|
|||
|
return self._Model:GetConfigEquip(id).RecommendCharacterId
|
|||
|
end
|
|||
|
--------------------endregion Equip --------------------
|
|||
|
|
|||
|
---------------------region EquipSuit---------------------------
|
|||
|
function XEquipAgency:GetEquipSuitIconPath(id)
|
|||
|
return self._Model:GetConfigEquipSuit(id).IconPath
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipSuitBigIconPath(id)
|
|||
|
return self._Model:GetConfigEquipSuit(id).BigIconPath
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipSuitName(id)
|
|||
|
return self._Model:GetConfigEquipSuit(id).Name
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipSuitDescription(id)
|
|||
|
return self._Model:GetConfigEquipSuit(id).Description
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipSuitSkillEffect(id)
|
|||
|
return self._Model:GetConfigEquipSuit(id).SkillEffect
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipSuitSkillDescription(id)
|
|||
|
return self._Model:GetConfigEquipSuit(id).SkillDescription
|
|||
|
end
|
|||
|
|
|||
|
function XEquipAgency:GetEquipSuitSuitType(id)
|
|||
|
return self._Model:GetConfigEquipSuit(id).SuitType
|
|||
|
end
|
|||
|
--------------------endregion EquipSuit --------------------
|
|||
|
|
|||
|
--------------------------------------------------------------------config end---------------------------------------
|
|||
|
|
|||
|
-------open ui start--------
|
|||
|
-- 初始化成员界面的装备面板
|
|||
|
---@return XUiPanelEquipV2P6
|
|||
|
function XEquipAgency:InitPanelEquipV2P6(parentTransform, parentUiProxy, ...)
|
|||
|
local path = CS.XGame.ClientConfig:GetString("PanelEquipV2P6")
|
|||
|
local equipUi = parentTransform:LoadPrefab(path)
|
|||
|
-- local cacheComp = parentTransform:GetComponent(typeof(CS.XUiCachePrefab))
|
|||
|
-- local equipUi = CS.UnityEngine.Object.Instantiate(cacheComp.go, parentTransform)
|
|||
|
local xPanelEquipV2P6 = XUiPanelEquipV2P6.New(equipUi, parentUiProxy, ...)
|
|||
|
return xPanelEquipV2P6
|
|||
|
end
|
|||
|
|
|||
|
-- 打开详情界面
|
|||
|
function XEquipAgency:OpenUiEquipDetail(equipId, isPreview, characterId, forceShowBindCharacter, childUiIndex, openUiType, isShowExtendPanel)
|
|||
|
if XEnumConst.EQUIP.IS_TEST_V2P6 then
|
|||
|
XLuaUiManager.Open("UiEquipDetailChildV2P6", equipId, isPreview, characterId, forceShowBindCharacter, childUiIndex, openUiType, isShowExtendPanel)
|
|||
|
else
|
|||
|
XLuaUiManager.Open("UiEquipDetail", equipId, isPreview, characterId, forceShowBindCharacter, childUiIndex, openUiType)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 打开武器替换界面
|
|||
|
function XEquipAgency:OpenUiEquipReplace(characterId, closecallback, notShowStrengthenBtn)
|
|||
|
if XEnumConst.EQUIP.IS_TEST_V2P6 then
|
|||
|
XLuaUiManager.Open("UiEquipReplaceV2P6", characterId, closecallback, notShowStrengthenBtn)
|
|||
|
else
|
|||
|
XLuaUiManager.Open("UiEquipReplaceNew", characterId, closecallback, notShowStrengthenBtn)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 打开意识替换界面
|
|||
|
function XEquipAgency:OpenUiEquipAwarenessReplace(characterId, equipSite, notShowStrengthenBtn)
|
|||
|
if XEnumConst.EQUIP.IS_TEST_V2P6 then
|
|||
|
XLuaUiManager.Open("UiEquipAwarenessReplaceV2P6", characterId, equipSite, notShowStrengthenBtn)
|
|||
|
else
|
|||
|
XLuaUiManager.Open("UiEquipAwarenessReplace", characterId, equipSite, notShowStrengthenBtn)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 打开预览界面
|
|||
|
function XEquipAgency:OpenUiEquipPreview(equipTemplateId)
|
|||
|
if XEnumConst.EQUIP.IS_TEST_V2P6 then
|
|||
|
XLuaUiManager.Open("UiEquipPreviewV2P6", equipTemplateId)
|
|||
|
else
|
|||
|
XLuaUiManager.Open("UiEquipDetail", equipTemplateId, true)
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 打开装备意识界面
|
|||
|
function XEquipAgency:OpenUiEquipAwareness(characterId)
|
|||
|
XLuaUiManager.Open("UiEquipAwarenessV2P6", characterId)
|
|||
|
end
|
|||
|
|
|||
|
-- 打开操作成功提示界面
|
|||
|
function XEquipAgency:TipEquipOperation(equipId, changeTxt, closeCb, setMask)
|
|||
|
local uiName = "UiEquipCanBreakthroughTip"
|
|||
|
if XLuaUiManager.IsUiShow(uiName) then
|
|||
|
XLuaUiManager.Remove(uiName)
|
|||
|
end
|
|||
|
XLuaUiManager.Open(uiName, equipId, changeTxt, closeCb, setMask)
|
|||
|
end
|
|||
|
----------open ui end----------
|
|||
|
|
|||
|
return XEquipAgency
|