2025-06-04 05:02:57 +08:00

317 lines
8.0 KiB
Plaintext

RuneEquipPage = class("RuneEquipPage", SubView)
RuneEquipPage.EquipConfig = {
[1] = SceneItem_pb.EEQUIPPOS_SHIELD,
[2] = SceneItem_pb.EEQUIPPOS_ARMOUR,
[3] = SceneItem_pb.EEQUIPPOS_ROBE,
[4] = SceneItem_pb.EEQUIPPOS_SHOES,
[5] = SceneItem_pb.EEQUIPPOS_ACCESSORY1,
[6] = SceneItem_pb.EEQUIPPOS_ACCESSORY2,
[7] = SceneItem_pb.EEQUIPPOS_WEAPON,
[8] = SceneItem_pb.EEQUIPPOS_HEAD,
[9] = SceneItem_pb.EEQUIPPOS_FACE,
[10] = SceneItem_pb.EEQUIPTYPE_MOUTH,
[11] = SceneItem_pb.EEQUIPPOS_BACK,
[12] = SceneItem_pb.EEQUIPPOS_TAIL,
[13] = SceneItem_pb.EEQUIPPOS_MOUNT,
[14] = SceneItem_pb.EEQUIPPOS_BARROW or 14,
[15] = SceneItem_pb.EEQUIPPOS_ARTIFACT,
[16] = SceneItem_pb.EEQUIPPOS_ARTIFACT_HEAD,
[17] = SceneItem_pb.EEQUIPPOS_ARTIFACT_BACK,
[18] = SceneItem_pb.EEQUIPPOS_RUNE1,
[19] = SceneItem_pb.EEQUIPPOS_RUNE2,
[20] = SceneItem_pb.EEQUIPPOS_RUNE3,
[21] = SceneItem_pb.EEQUIPPOS_RUNE4,
[22] = SceneItem_pb.EEQUIPPOS_RUNE5,
[23] = SceneItem_pb.EEQUIPPOS_RUNE6,
[24] = SceneItem_pb.EEQUIPPOS_RUNE7,
[25] = SceneItem_pb.EEQUIPPOS_RUNE8,
[26] = SceneItem_pb.EEQUIPPOS_RUNE9,
[27] = SceneItem_pb.EEQUIPPOS_RUNE10,
[28] = SceneItem_pb.EEQUIPPOS_RUNE11,
[29] = SceneItem_pb.EEQUIPPOS_RUNE12,
[30] = SceneItem_pb.EEQUIPPOS_RUNE13,
[31] = SceneItem_pb.EEQUIPPOS_RUNE14,
[32] = SceneItem_pb.EEQUIPPOS_RUNE15,
[33] = SceneItem_pb.EEQUIPPOS_RUNE16,
}
PackageEquip_FashionParts =
{
2,7,8,1,9,10,11,12,13,
}
if(GameConfig.SystemForbid.FashionPart)then
PackageEquip_FashionParts =
{
8,7,9,1,10,11,12,
}
end
PackageEquip_ShowShieldPart_Class =
{
72,73,74,
}
autoImport("MyselfEquipItemCell")
local tempV3 = LuaVector3();
local tempRot = LuaQuaternion();
local EQUIP_MAXINDEX = nil;
function RuneEquipPage:Init()
EQUIP_MAXINDEX = #RuneEquipPage.EquipConfig;
self:AddViewInterest();
self:InitUI();
end
local equipgrid_reposition = function (equipGrid_self)
equipGrid_self.grid:Reposition();
local childCount = equipGrid_self.transform.childCount;
if(childCount == 13)then
local cell13 = equipGrid_self.transform:GetChild(12);
if(cell13)then
tempV3:Set(216, -488);
cell13.transform.localPosition = tempV3;
end
elseif(childCount == 14)then
local cell13 = equipGrid_self.transform:GetChild(12);
if(cell13)then
tempV3:Set(144, -488);
cell13.transform.localPosition = tempV3;
end
local cell14 = equipGrid_self.transform:GetChild(13);
if(cell14)then
tempV3:Set(288, -488);
cell14.transform.localPosition = tempV3;
end
end
end
function RuneEquipPage:GetEquipGrid()
local grid = self:FindComponent("EquipGrid", UIGrid);
local equipGrid = {};
equipGrid.grid = grid;
equipGrid.transform = grid.transform;
equipGrid.gameObject = grid.gameObject;
--equipGrid.Reposition = equipgrid_reposition;
equipGrid.comp = equipGrid.gameObject:GetComponent(GameObjectForLua);
if(not equipGrid.comp)then
equipGrid.comp = equipGrid.gameObject:AddComponent(GameObjectForLua);
end
equipGrid.comp.onEnable = function ()
--equipGrid.Reposition(equipGrid);
end
return equipGrid;
end
function RuneEquipPage:InitCtls()
local myPro = Game.Myself.data.userdata:Get(UDEnum.PROFESSION);
if(self.roleEquips)then
local cachePro = self.cachePro;
if(cachePro ~= nil and cachePro == myPro)then
return;
end
end
self.cachePro = myPro;
self:InitEquipCtl();
end
function RuneEquipPage:InitEquipCtl()
local equipGrid = self:GetEquipGrid();
self.roleEquips = {};
for i = 0,15 do
local obj = nil;
local go = equipGrid.transform:GetChild(i);
obj = go.gameObject;
self.roleEquips[i+18] = MyselfEquipItemCell.new(obj, i+18);
self.roleEquips[i+18]:AddEventListener(MouseEvent.MouseClick, self.ClickEquip, self);
self.roleEquips[i+18]:AddEventListener(MouseEvent.DoubleClick, self.DoubleClickEqip, self);
end
end
function RuneEquipPage:InitUI()
self.chooseSymbol = self:FindGO("EquipChoose");
self.normalStick = self.container.normalStick;
end
function RuneEquipPage:OnEnter()
RuneEquipPage.super.OnEnter(self);
self:InitCtls();
self:UpdateEquip();
end
function RuneEquipPage:ShowEquipInfo(b)
for i = 1, #self.roleEquips do
local cell = self.roleEquips[i];
cell:ShowStrentlv(b);
end
end
function RuneEquipPage:ClickEquip(cellCtl)
local packageView = self.container
if packageView.equipStrengthenIsShow then
local equipData = cellCtl.data
if equipData then
local index = equipData.index
local equipInfo = equipData.equipInfo
if cellCtl.isfashion then
MsgManager.ShowMsgByIDTable(240)
elseif not equipInfo:CanStrength() then
MsgManager.ShowMsgByIDTable(243)
elseif packageView.equipStrengthenViewController:IsCouldStrengthen(index) then
self:SetChoose(cellCtl);
packageView.equipStrengthenViewController:Refresh(index)
else
MsgManager.ShowMsgByIDTable(240)
end
end
else
if(cellCtl~=nil and self.chooseEquip~=cellCtl)then
self:SetChoose(cellCtl);
local data = cellCtl.data;
if(data)then
local funcs = self.container:GetDataFuncs(data, FunctionItemFunc_Source.RoleEquipBag, cellCtl.isfashion);
local callback = function ()
self:CancelChoose();
end
local sdata = {
itemdata = data,
funcConfig = funcs,
ignoreBounds = {cellCtl.gameObject},
callback = callback,
showUpTip = true,
};
local itemTip = self:ShowItemTip(sdata, self.normalStick, nil, {210,0});
if(not cellCtl:IsEffective())then
itemTip:GetCell(1):SetNoEffectTip(true);
end
else
self:ShowItemTip();
end
else
self:CancelChoose();
end
end
end
function RuneEquipPage:SetChoose(cellCtl)
if(cellCtl)then
local index = cellCtl.index;
if(type(index)=="number")then
BagProxy.Instance:SetToEquipPos(self.EquipConfig[index]);
else
BagProxy.Instance:SetToEquipPos();
end
local go = cellCtl.gameObject;
if(go)then
self.chooseSymbol:SetActive(true);
self.chooseSymbol.transform:SetParent(go.transform, false);
else
self.chooseSymbol:SetActive(false);
self.chooseSymbol.transform:SetParent(go.transform, false);
self.chooseSymbol.transform:SetParent(self.trans, false);
end
self.chooseEquip = cellCtl;
else
self.chooseSymbol:SetActive(false);
self.chooseSymbol.transform:SetParent(self.trans, false);
BagProxy.Instance:SetToEquipPos();
self.chooseEquip = nil;
end
end
function RuneEquipPage:DoubleClickEqip(cellCtl)
local packageView = self.container
if packageView.equipStrengthenIsShow then return end
local data = cellCtl.data;
if(data)then
local funcs = self.container:GetDataFuncs(data, FunctionItemFunc_Source.RoleEquipBag);
if(funcs[1])then
local tipfunc = FunctionItemFunc.Me():GetFuncById(funcs[1]);
if(type(tipfunc) == "function")then
tipfunc(data);
end
end
end
self:SetChoose();
TipManager.Instance:CloseItemTip();
end
function RuneEquipPage:UpdateEquip()
-- 更新人物裝備
local equipdata = BagProxy.Instance.roleEquip.siteMap;
for i = 1,EQUIP_MAXINDEX do
if(self.roleEquips[i])then
self.roleEquips[i]:SetData(equipdata[i]);
end
end
end
function RuneEquipPage:SetItemDragEnabled(b)
-- for k,v in pairs(self.roleEquips) do
-- v:CanDrag(b);
-- end
end
function RuneEquipPage:AddViewInterest()
self:AddListenEvt(ItemEvent.ItemUpdate, self.UpdateEquip);
self:AddListenEvt(ItemEvent.EquipUpdate, self.UpdateEquip);
self:AddListenEvt(ServiceEvent.ItemEquipPosDataUpdate, self.UpdateEquip);
self:AddListenEvt(MyselfEvent.MyProfessionChange, self.UpdateEquip);
self:AddListenEvt(ItemEvent.Equip, self.CancelChoose);
end
function RuneEquipPage:CancelChoose()
self.chooseSymbol:SetActive(false);
self.chooseSymbol.transform:SetParent(self.trans, false);
self:ShowItemTip();
self:SetChoose();
end
function RuneEquipPage:OnExit()
self:CancelChoose();
RuneEquipPage.super.OnExit(self);
end
function RuneEquipPage:AddMaskOnItems()
local roleEquips = self.roleEquips
if roleEquips then
for _, roleEquip in pairs(roleEquips)do
roleEquip:ShowMask()
end
end
end
function RuneEquipPage:RemoveMaskOnItems()
local roleEquips = self.roleEquips
if roleEquips then
for _, roleEquip in pairs(roleEquips)do
roleEquip:HideMask()
end
end
end