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

413 lines
11 KiB
Plaintext

PackageEquipPage = class("PackageEquipPage", SubView)
PackageEquipPage.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,
}
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 PackageEquipPage:Init()
EQUIP_MAXINDEX = #PackageEquipPage.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 PackageEquipPage: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
local fashion_reposition = function (fashionGrid_self)
local childCount = fashionGrid_self.transform.childCount;
if(childCount > 6)then
fashionGrid_self.grid.cellHeight = 582/math.ceil(childCount/2);
else
fashionGrid_self.grid.cellHeight = 195.6;
end
fashionGrid_self.grid:Reposition();
end
function PackageEquipPage:GetFashionGrid()
local grid = self:FindComponent("FashionGrid", UIGrid);
local fashionGrid = {};
fashionGrid.grid = grid;
fashionGrid.transform = grid.transform;
fashionGrid.gameObject = grid.gameObject;
fashionGrid.Reposition = fashion_reposition;
fashionGrid.comp = fashionGrid.gameObject:GetComponent(GameObjectForLua);
if(not fashionGrid.comp)then
fashionGrid.comp = fashionGrid.gameObject:AddComponent(GameObjectForLua);
end
fashionGrid.comp.onEnable = function ()
fashionGrid.Reposition(fashionGrid);
end
return fashionGrid;
end
function PackageEquipPage:InitCtls()
local myPro = Game.Myself.data.userdata:Get(UDEnum.PROFESSION);
if(self.roleEquips and self.fashionEquips)then
local cachePro = self.cachePro;
if(cachePro ~= nil and cachePro == myPro)then
return;
end
end
self.cachePro = myPro;
self:InitEquipCtl();
self:InitFashionCtl();
self:InitArtifactEquips();
end
function PackageEquipPage:InitEquipCtl()
local equipGrid = self:GetEquipGrid();
if(equipGrid.transform.childCount > 0)then
for i=equipGrid.transform.childCount-1,0,-1 do
local go = equipGrid.transform:GetChild(i);
if(go and go ~= self.chooseSymbol)then
GameObject.DestroyImmediate(go.gameObject);
end
end
end
self.roleEquips = {};
local profession = MyselfProxy.Instance:GetMyProfession()
local canEquipCar = Table_Class[profession].Type == 6;
for i = 1,14 do
if(i ~= 14 or canEquipCar)then
local obj = nil;
obj = self:LoadPreferb("cell/RoleEquipItemCell", equipGrid);
obj.name = "RoleEquipItemCell"..i;
self.roleEquips[i] = MyselfEquipItemCell.new(obj, i);
self.roleEquips[i]:AddEventListener(MouseEvent.MouseClick, self.ClickEquip, self);
self.roleEquips[i]:AddEventListener(MouseEvent.DoubleClick, self.DoubleClickEqip, self);
end
end
equipGrid:Reposition();
end
local ArtifactEquipConfig =
{
[7] = 15,
[8] = 16,
[11] = 17,
}
function PackageEquipPage:InitArtifactEquips()
for k,v in pairs(ArtifactEquipConfig)do
local cell = self.roleEquips[k];
local go = self:FindGO("ArtifactEquipCell", cell.gameObject);
if(go == nil)then
go = self:LoadPreferb("cell/ArtifactEquipCell", cell.gameObject);
go.name = "ArtifactEquipCell";
end
local equipGO = self:FindGO("RoleEquipItemCell", go);
local roleEquipCell = MyselfEquipItemCell.new(equipGO, v);
roleEquipCell:AddEventListener(MouseEvent.MouseClick, self.ClickEquip, self);
roleEquipCell:AddEventListener(MouseEvent.DoubleClick, self.DoubleClickEqip, self);
self.roleEquips[v] = roleEquipCell;
end
end
function PackageEquipPage:InitFashionCtl()
local fashionGrid = self:GetFashionGrid();
if(fashionGrid.transform.childCount > 0)then
for i=fashionGrid.transform.childCount-1,0,-1 do
local go = fashionGrid.transform:GetChild(i);
if(go)then
GameObject.DestroyImmediate(go.gameObject);
end
end
end
self.fashionEquips = {};
for i=1,#PackageEquip_FashionParts do
local index = PackageEquip_FashionParts[i];
local canShow = false;
if(index == 1)then
if(TableUtility.ArrayFindIndex(PackageEquip_ShowShieldPart_Class, self.cachePro) ~= 0)then
canShow = true;
end
else
canShow = true;
end
if(canShow)then
local obj = self:LoadPreferb("cell/RoleEquipItemCell", fashionGrid);
obj.name = "FashionEquipItemCell"..index;
self.fashionEquips[index] = MyselfEquipItemCell.new(obj, index, true);
self.fashionEquips[index]:AddEventListener(MouseEvent.MouseClick, self.ClickEquip, self);
self.fashionEquips[index]:AddEventListener(MouseEvent.DoubleClick, self.DoubleClickEqip, self);
end
end
fashionGrid:Reposition();
end
function PackageEquipPage:InitUI()
self.chooseSymbol = self:FindGO("EquipChoose");
self.normalStick = self.container.normalStick;
end
function PackageEquipPage:OnEnter()
PackageEquipPage.super.OnEnter(self);
self:InitCtls();
self:UpdateEquip();
end
function PackageEquipPage:ShowEquipInfo(b)
for i = 1, #self.roleEquips do
local cell = self.roleEquips[i];
cell:ShowStrentlv(b);
end
end
function PackageEquipPage: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 PackageEquipPage: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 PackageEquipPage: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 PackageEquipPage: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
local fashiondata = BagProxy.Instance.fashionEquipBag.siteMap;
for i=1,#PackageEquip_FashionParts do
local index = PackageEquip_FashionParts[i];
if(self.fashionEquips[index])then
self.fashionEquips[index]:SetData(fashiondata[index]);
end
end
end
function PackageEquipPage:SetItemDragEnabled(b)
-- for k,v in pairs(self.roleEquips) do
-- v:CanDrag(b);
-- end
end
function PackageEquipPage: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 PackageEquipPage:CancelChoose()
self.chooseSymbol:SetActive(false);
self.chooseSymbol.transform:SetParent(self.trans, false);
self:ShowItemTip();
self:SetChoose();
end
function PackageEquipPage:OnExit()
self:CancelChoose();
PackageEquipPage.super.OnExit(self);
end
function PackageEquipPage:AddMaskOnItems()
local roleEquips = self.roleEquips
if roleEquips then
for _, roleEquip in pairs(roleEquips)do
roleEquip:ShowMask()
end
end
local fashionEquips = self.fashionEquips
if fashionEquips then
for _, fashionEquip in pairs(fashionEquips)do
fashionEquip:ShowMask()
end
end
end
function PackageEquipPage:RemoveMaskOnItems()
local roleEquips = self.roleEquips
if roleEquips then
for _, roleEquip in pairs(roleEquips)do
roleEquip:HideMask()
end
end
local fashionEquips = self.fashionEquips
if fashionEquips then
for _, fashionEquip in pairs(fashionEquips)do
fashionEquip:HideMask()
end
end
end