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