303 lines
7.9 KiB
Plaintext
303 lines
7.9 KiB
Plaintext
autoImport("MakeMaterialCell")
|
|
autoImport("EquipMakeCell")
|
|
|
|
EquipMakeView = class("EquipMakeView", ContainerView)
|
|
|
|
EquipMakeView.ViewType = UIViewType.NormalLayer
|
|
|
|
function EquipMakeView:OnEnter()
|
|
EquipMakeView.super.OnEnter(self)
|
|
|
|
if self.npc then
|
|
local viewPort = CameraConfig.HappyShop_ViewPort
|
|
local rotation = CameraConfig.HappyShop_Rotation
|
|
self:CameraFaceTo(self.npc.assetRole.completeTransform,viewPort,rotation)
|
|
end
|
|
end
|
|
|
|
function EquipMakeView:OnExit()
|
|
self:CameraReset()
|
|
self:SetChooseMakeData(false)
|
|
EquipMakeView.super.OnExit(self)
|
|
end
|
|
|
|
function EquipMakeView:Init()
|
|
self:FindObjs()
|
|
self:AddEvts()
|
|
self:AddViewEvts()
|
|
self:InitShow()
|
|
end
|
|
|
|
function EquipMakeView:FindObjs()
|
|
self.silverLabel = self:FindGO("SilverLabel"):GetComponent(UILabel)
|
|
self.selfProfession = self:FindGO("SelfProfession"):GetComponent(UIToggle)
|
|
self.makeTitle = self:FindGO("MakeTitle"):GetComponent(UILabel)
|
|
self.costInfo = self:FindGO("CostInfo")
|
|
self.silverCost = self:FindGO("ZenyCost"):GetComponent(UILabel)
|
|
self.tip = self:FindGO("Tip"):GetComponent(UILabel)
|
|
self.emptyTip = self:FindGO("EmptyTip")
|
|
self.makeBtn = self:FindGO("MakeBtn"):GetComponent(UISprite)
|
|
-- self.makeBtnLabel = self:FindGO("Label" , self.makeBtn.gameObject):GetComponent(UILabel)
|
|
end
|
|
|
|
function EquipMakeView:AddEvts()
|
|
self:AddClickEvent(self.makeBtn.gameObject,function ()
|
|
if self.curComposeId == nil then
|
|
return
|
|
end
|
|
|
|
--判斷材料是否足夠
|
|
local enoughMaterial = self.total - self.need
|
|
--判斷金幣是否足夠
|
|
local data = Table_Compose[self.curComposeId]
|
|
local enoughROB = MyselfProxy.Instance:GetROB() - data.ROB
|
|
--判斷是否解鎖
|
|
local makeData = EquipMakeProxy.Instance:GetMakeData(self.curComposeId)
|
|
|
|
if enoughMaterial < 0 then
|
|
--缺失item列表
|
|
local needList = ReusableTable.CreateArray()
|
|
local cells = self.makeMatCtl:GetCells()
|
|
for i=1,#cells do
|
|
local needCount = cells[i]:NeedCount()
|
|
if needCount > 0 then
|
|
local needData = ReusableTable.CreateTable()
|
|
needData.id = cells[i].data.id
|
|
needData.count = needCount
|
|
TableUtility.ArrayPushBack(needList, needData)
|
|
end
|
|
end
|
|
--彈出快速購買界面
|
|
if not QuickBuyProxy.Instance:TryOpenView(needList) then
|
|
MsgManager.ShowMsgByID(8)
|
|
end
|
|
--clear
|
|
for i=1,#needList do
|
|
ReusableTable.DestroyAndClearTable(needList[i])
|
|
end
|
|
ReusableTable.DestroyArray(needList)
|
|
return
|
|
elseif enoughROB < 0 then
|
|
MsgManager.ShowMsgByID(1)
|
|
return
|
|
elseif makeData:IsLock() then
|
|
local composeData = Table_Compose[self.curComposeId]
|
|
if composeData and composeData.MenuID then
|
|
local menuData = Table_Menu[composeData.MenuID]
|
|
if menuData and menuData.sysMsg and menuData.sysMsg.id then
|
|
MsgManager.ShowMsgByID(menuData.sysMsg.id)
|
|
end
|
|
end
|
|
return
|
|
end
|
|
|
|
ServiceItemProxy.Instance:CallProduce(SceneItem_pb.EPRODUCETYPE_EQUIP, self.curComposeId , self.npc.data.id)
|
|
end)
|
|
EventDelegate.Add(self.selfProfession.onChange, function ()
|
|
if self.isSelfProfession ~= self.selfProfession.value then
|
|
self.isSelfProfession = self.selfProfession.value
|
|
|
|
self:UpdateMakeList()
|
|
self.itemWrapHelper:ResetPosition()
|
|
|
|
self:SelectFirstMakeCell()
|
|
end
|
|
end)
|
|
end
|
|
|
|
function EquipMakeView:AddViewEvts()
|
|
self:AddListenEvt( MyselfEvent.MyDataChange , self.MyDataChange )
|
|
self:AddListenEvt( ItemEvent.ItemUpdate , self.UpdateItem )
|
|
end
|
|
|
|
function EquipMakeView:InitShow()
|
|
|
|
self.isSelfProfession = true
|
|
self.tipData = {}
|
|
self.tipData.funcConfig = {}
|
|
|
|
self.npc = self.viewdata.viewdata.npcdata
|
|
EquipMakeProxy.Instance:SetNpcId(self.npc.data.staticData.id)
|
|
|
|
local targetCellGO = self:FindGO("TargetCell")
|
|
self.targetCell = BaseItemCell.new(targetCellGO)
|
|
self.targetCell:AddEventListener(MouseEvent.MouseClick, self.ClickTargetCell, self)
|
|
|
|
local makeMaterialGrid = self:FindGO("MakeMaterialGrid"):GetComponent(UIGrid)
|
|
self.makeMatCtl = UIGridListCtrl.new(makeMaterialGrid, MakeMaterialCell, "MakeMaterialCell")
|
|
self.makeMatCtl:AddEventListener(MouseEvent.MouseClick, self.ClickMakeMaterialItem, self)
|
|
|
|
local makeListContainer = self:FindGO("MakeListContainer")
|
|
local wrapConfig = {
|
|
wrapObj = makeListContainer,
|
|
pfbNum = 6,
|
|
cellName = "EquipMakeCell",
|
|
control = EquipMakeCell,
|
|
dir = 1,
|
|
}
|
|
self.itemWrapHelper = WrapCellHelper.new(wrapConfig)
|
|
self.itemWrapHelper:AddEventListener(MouseEvent.MouseClick, self.ClickMakeCell, self)
|
|
|
|
local isEmpty = self:UpdateMakeList()
|
|
if isEmpty then
|
|
self.selfProfession.value = false
|
|
end
|
|
self:UpdateCoins()
|
|
|
|
--預設選中第一個
|
|
self:SelectFirstMakeCell()
|
|
end
|
|
|
|
function EquipMakeView:SelectFirstMakeCell()
|
|
local itemCells = self.itemWrapHelper:GetCellCtls()
|
|
if #itemCells > 0 then
|
|
self:ClickMakeCell(itemCells[1])
|
|
end
|
|
end
|
|
|
|
function EquipMakeView:ClickMakeCell(cellctl)
|
|
local data = cellctl.data
|
|
if data then
|
|
if self.curComposeId and self.curComposeId ~= data then
|
|
self:SetChooseMakeData(false)
|
|
self:SetChooseCell(false)
|
|
end
|
|
|
|
self.curComposeId = data
|
|
|
|
self:SetChooseMakeData(true)
|
|
cellctl:SetChoose(true)
|
|
|
|
self:UpdateTargetCell()
|
|
self:UpdateItem()
|
|
|
|
local makeData = EquipMakeProxy.Instance:GetMakeData(self.curComposeId)
|
|
if makeData and makeData:IsLock() then
|
|
self.tip.gameObject:SetActive(true)
|
|
self.costInfo:SetActive(false)
|
|
|
|
self:UpdateTip()
|
|
else
|
|
self.tip.gameObject:SetActive(false)
|
|
self.costInfo:SetActive(true)
|
|
|
|
self:UpdateCost()
|
|
end
|
|
end
|
|
end
|
|
|
|
function EquipMakeView:ClickTargetCell(cellctl)
|
|
|
|
self.tipData.itemdata = cellctl.data
|
|
|
|
self:ShowItemTip(self.tipData , cellctl.icon , NGUIUtil.AnchorSide.Left, {-170,0})
|
|
end
|
|
|
|
function EquipMakeView:ClickMakeMaterialItem(cellctl)
|
|
|
|
self.tipData.itemdata = cellctl.itemData
|
|
|
|
self:ShowItemTip(self.tipData , cellctl.icon , NGUIUtil.AnchorSide.Left, {-220,0})
|
|
end
|
|
|
|
function EquipMakeView:UpdateMakeList()
|
|
local data = EquipMakeProxy.Instance:GetMakeList()
|
|
if self.isSelfProfession then
|
|
data = EquipMakeProxy.Instance:GetSelfProfessionMakeList()
|
|
end
|
|
self.itemWrapHelper:UpdateInfo(data)
|
|
|
|
local isEmpty = #data == 0
|
|
if isEmpty then
|
|
self:UpdateEmpty()
|
|
end
|
|
self.emptyTip:SetActive(isEmpty)
|
|
|
|
return isEmpty
|
|
end
|
|
|
|
function EquipMakeView:UpdateMakeMaterial()
|
|
local data = Table_Compose[self.curComposeId]
|
|
local datas = data and data.BeCostItem or {}
|
|
self.makeMatCtl:ResetDatas(datas)
|
|
end
|
|
|
|
function EquipMakeView:UpdateTargetCell()
|
|
local makeData = EquipMakeProxy.Instance:GetMakeData(self.curComposeId)
|
|
if makeData then
|
|
self.targetCell:SetData(makeData.itemData)
|
|
else
|
|
self.targetCell.nameLab.text = ""
|
|
self.targetCell.normalItem:SetActive(false)
|
|
end
|
|
end
|
|
|
|
function EquipMakeView:UpdateMakeTitle()
|
|
local cells = self.makeMatCtl:GetCells()
|
|
self.need = #cells
|
|
self.total = 0
|
|
for i=1,self.need do
|
|
local cell = cells[i]
|
|
if cell:IsEnough() then
|
|
self.total = self.total + 1
|
|
end
|
|
end
|
|
|
|
self.makeTitle.text = string.format(ZhString.EquipMake_Title , self.total , self.need)
|
|
end
|
|
|
|
function EquipMakeView:UpdateCost()
|
|
local data = Table_Compose[self.curComposeId]
|
|
self.silverCost.text = data and data.ROB or 0
|
|
end
|
|
|
|
function EquipMakeView:UpdateTip()
|
|
local data = Table_Compose[self.curComposeId]
|
|
self.tip.text = data and data.MenuDes or ""
|
|
end
|
|
|
|
function EquipMakeView:UpdateCoins()
|
|
self.silverLabel.text = MyselfProxy.Instance:GetROB()
|
|
end
|
|
|
|
function EquipMakeView:MyDataChange()
|
|
self:UpdateCoins()
|
|
end
|
|
|
|
function EquipMakeView:UpdateItem()
|
|
self:UpdateMakeMaterial()
|
|
self:UpdateMakeTitle()
|
|
end
|
|
|
|
function EquipMakeView:SetChooseMakeData(isChoose)
|
|
local makeData = EquipMakeProxy.Instance:GetMakeData(self.curComposeId)
|
|
if makeData then
|
|
makeData:SetChoose(isChoose)
|
|
end
|
|
end
|
|
|
|
function EquipMakeView:SetChooseCell(isChoose)
|
|
local cells = self.itemWrapHelper:GetCellCtls()
|
|
for i=1,#cells do
|
|
if cells[i].data == self.curComposeId then
|
|
cells[i]:SetChoose(isChoose)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
|
|
function EquipMakeView:UpdateEmpty()
|
|
if self.curComposeId then
|
|
self:SetChooseMakeData(false)
|
|
self:SetChooseCell(false)
|
|
end
|
|
|
|
self.curComposeId = nil
|
|
|
|
self:UpdateTargetCell()
|
|
self:UpdateItem()
|
|
|
|
self.tip.gameObject:SetActive(false)
|
|
self.costInfo:SetActive(true)
|
|
self:UpdateCost()
|
|
end |