310 lines
8.1 KiB
Plaintext
310 lines
8.1 KiB
Plaintext
autoImport("CardNCell")
|
|
autoImport("CardMakeCell")
|
|
autoImport("CardMakeMaterialCell")
|
|
|
|
CardMakeView = class("CardMakeView", ContainerView)
|
|
|
|
CardMakeView.ViewType = UIViewType.NormalLayer
|
|
|
|
CardMakeView.CardNCellResPath = ResourcePathHelper.UICell("CardNCell")
|
|
|
|
local tempVector3 = LuaVector3.zero
|
|
local skipType = SKIPTYPE.CardMake
|
|
|
|
function CardMakeView:OnExit()
|
|
self:ClearChooseData()
|
|
CardMakeProxy.Instance:SetChoose(nil)
|
|
CardMakeView.super.OnExit(self)
|
|
end
|
|
|
|
function CardMakeView:Init()
|
|
self:FindObjs()
|
|
self:AddEvts()
|
|
self:AddViewEvts()
|
|
self:InitShow()
|
|
end
|
|
|
|
function CardMakeView:FindObjs()
|
|
self.filter = self:FindGO("Filter"):GetComponent(UIPopupList)
|
|
self.targetName = self:FindGO("TargetName"):GetComponent(UILabel)
|
|
self.tip = self:FindGO("Tip"):GetComponent(UILabel)
|
|
self.tipIcon = self:FindGO("TipIcon"):GetComponent(UISprite)
|
|
self.confirmButton = self:FindGO("ConfirmButton"):GetComponent(UIMultiSprite)
|
|
self.confirmLabel = self:FindGO("Label", self.confirmButton.gameObject):GetComponent(UILabel)
|
|
self.cost = self:FindGO("Cost"):GetComponent(UILabel)
|
|
self.skipBtn = self:FindGO("SkipBtn"):GetComponent(UISprite)
|
|
end
|
|
|
|
function CardMakeView:AddEvts()
|
|
EventDelegate.Add(self.filter.onChange, function()
|
|
if self.filter.data == nil then
|
|
return
|
|
end
|
|
if self.filterData ~= self.filter.data then
|
|
self.filterData = self.filter.data
|
|
|
|
self:ResetCard()
|
|
self:SelectFirst()
|
|
end
|
|
end)
|
|
|
|
self:AddClickEvent(self.confirmButton.gameObject,function ()
|
|
self:Confirm()
|
|
end)
|
|
|
|
local closeButton = self:FindGO("CloseButton")
|
|
self:AddClickEvent(closeButton,function ()
|
|
SceneUIManager.Instance:PlayerSpeak(self.npcId, ZhString.CardMark_EndDialog)
|
|
self:CloseSelf()
|
|
end)
|
|
|
|
self:AddClickEvent(self.skipBtn.gameObject, function ()
|
|
self:Skip()
|
|
end)
|
|
end
|
|
|
|
function CardMakeView:AddViewEvts()
|
|
self:AddListenEvt(ItemEvent.ItemUpdate, self.HandleItemUpdate)
|
|
self:AddListenEvt(ServiceEvent.ItemExchangeCardItemCmd, self.HandleExchangeCardItem)
|
|
self:AddListenEvt(SceneUserEvent.SceneRemoveNpcs, self.HandleRemoveNpc)
|
|
self:AddListenEvt(LoadSceneEvent.FinishLoad, self.CloseSelf)
|
|
end
|
|
|
|
function CardMakeView:InitShow()
|
|
|
|
self.tipData = {}
|
|
self.tipData.funcConfig = {}
|
|
self.canMake = false
|
|
self.npcId = self.viewdata.viewdata.npcdata.data.id
|
|
|
|
local container = self:FindGO("CardContainer")
|
|
local wrapConfig = {
|
|
wrapObj = container,
|
|
pfbNum = 6,
|
|
cellName = "CardMakeCell",
|
|
control = CardMakeCell,
|
|
dir = 1,
|
|
}
|
|
self.wrapHelper = WrapCellHelper.new(wrapConfig)
|
|
self.wrapHelper:AddEventListener(MouseEvent.MouseClick, self.HandleClickCell, self)
|
|
self.wrapHelper:AddEventListener(CardMakeEvent.Select, self.HandleSelect, self)
|
|
|
|
local materialGrid = self:FindGO("MaterialGrid"):GetComponent(UIGrid)
|
|
self.materialCtl = UIGridListCtrl.new(materialGrid, CardMakeMaterialCell, "CardMakeMaterialCell")
|
|
self.materialCtl:AddEventListener(MouseEvent.MouseClick, self.HandleMaterialTip, self)
|
|
|
|
local targetCard = self:FindGO("TargetCard")
|
|
obj = Game.AssetManager_UI:CreateAsset(CardMakeView.CardNCellResPath, targetCard)
|
|
tempVector3:Set(0,0,0)
|
|
obj.transform.localPosition = tempVector3
|
|
tempVector3:Set(1,1,1)
|
|
obj.transform.localScale = tempVector3
|
|
self.targetCardCell = CardNCell.new(obj)
|
|
self.targetCardCell:Hide(self.targetCardCell.useButton.gameObject)
|
|
|
|
self:InitFilter()
|
|
self:UpdateCard()
|
|
self:UpdateSkip()
|
|
|
|
--預設選中第一個
|
|
self:SelectFirst()
|
|
end
|
|
|
|
function CardMakeView:InitFilter()
|
|
self.filter:Clear()
|
|
|
|
local makeFilter = GameConfig.CardMake.MakeFilter
|
|
local rangeList = CardMakeProxy.Instance:GetFilter(makeFilter)
|
|
for i=1,#rangeList do
|
|
local rangeData = makeFilter[rangeList[i]]
|
|
self.filter:AddItem(rangeData , rangeList[i])
|
|
end
|
|
if #rangeList > 0 then
|
|
local range = rangeList[1]
|
|
self.filterData = range
|
|
local rangeData = makeFilter[range]
|
|
self.filter.value = rangeData
|
|
end
|
|
end
|
|
|
|
function CardMakeView:SelectFirst()
|
|
local first = self.wrapHelper:GetCellCtls()[1]
|
|
if first then
|
|
self:HandleClickCell(first)
|
|
end
|
|
end
|
|
|
|
function CardMakeView:HandleClickCell(cell)
|
|
local data = cell.data
|
|
if data then
|
|
local _CardMakeProxy = CardMakeProxy.Instance
|
|
local chooseData = _CardMakeProxy:GetChoose()
|
|
if chooseData and chooseData.id == data.id then
|
|
return
|
|
end
|
|
|
|
self:ClearChooseCard()
|
|
self:ClearChooseData()
|
|
|
|
cell:SetChoose(true)
|
|
_CardMakeProxy:SetChoose(cell.data)
|
|
|
|
self.targetName.text = data.itemData.staticData.NameZh
|
|
self.targetCardCell:SetData(data.itemData)
|
|
self:UpdateMaterial(data)
|
|
|
|
local isLock = data:IsLock()
|
|
self.tip.gameObject:SetActive(isLock)
|
|
local composeData = Table_Compose[data.id]
|
|
if isLock then
|
|
self.tip.text = composeData.MenuDes or ""
|
|
self.tipIcon:UpdateAnchors()
|
|
end
|
|
self.cost.text = StringUtil.NumThousandFormat(composeData.ROB)
|
|
|
|
self:UpdateConfirmBtn()
|
|
end
|
|
end
|
|
|
|
function CardMakeView:HandleSelect(cell)
|
|
local data = cell.data
|
|
if data then
|
|
self.tipData.itemdata = data.itemData
|
|
self:ShowItemTip(self.tipData, cell.icon, NGUIUtil.AnchorSide.Right, {220,0})
|
|
end
|
|
end
|
|
|
|
function CardMakeView:HandleMaterialTip(cell)
|
|
local data = cell.data
|
|
if data then
|
|
self.tipData.itemdata = data.itemData
|
|
self:ShowItemTip(self.tipData, cell.icon, NGUIUtil.AnchorSide.Left, {-220,0})
|
|
end
|
|
end
|
|
|
|
function CardMakeView:HandleItemUpdate()
|
|
local chooseData = CardMakeProxy.Instance:GetChoose()
|
|
if chooseData then
|
|
self:UpdateMaterial(chooseData)
|
|
self:UpdateConfirmBtn()
|
|
end
|
|
end
|
|
|
|
function CardMakeView:HandleExchangeCardItem(note)
|
|
local data = note.body
|
|
if data then
|
|
if data.charid == Game.Myself.data.id then
|
|
self:CloseSelf()
|
|
end
|
|
end
|
|
end
|
|
|
|
function CardMakeView:HandleRemoveNpc(note)
|
|
local data = note.body
|
|
if data and #data > 0 then
|
|
for i=1,#data do
|
|
if self.npcId == data[i] then
|
|
self:CloseSelf()
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function CardMakeView:UpdateCard()
|
|
local data = CardMakeProxy.Instance:FilterCard(self.filterData)
|
|
if data then
|
|
self.wrapHelper:UpdateInfo(data)
|
|
end
|
|
end
|
|
|
|
function CardMakeView:UpdateMaterial(data)
|
|
if data then
|
|
data:ClearCount()
|
|
self.materialCtl:ResetDatas(data.materialItems)
|
|
end
|
|
end
|
|
|
|
function CardMakeView:ResetCard()
|
|
self:UpdateCard()
|
|
self.wrapHelper:ResetPosition()
|
|
end
|
|
|
|
function CardMakeView:UpdateConfirmBtn()
|
|
self.canMake = CardMakeProxy.Instance:CanMake()
|
|
self:SetConfirm(not self.canMake)
|
|
end
|
|
|
|
function CardMakeView:UpdateSkip()
|
|
local isShow = FunctionFirstTime.me:IsFirstTime(FunctionFirstTime.ComposeCard)
|
|
self.skipBtn.gameObject:SetActive(not isShow)
|
|
end
|
|
|
|
function CardMakeView:Confirm()
|
|
if self.canMake then
|
|
local chooseData = CardMakeProxy.Instance:GetChoose()
|
|
local data = Table_Compose[chooseData.id]
|
|
if MyselfProxy.Instance:GetROB() < data.ROB then
|
|
MsgManager.ShowMsgByID(1)
|
|
return
|
|
end
|
|
|
|
if CardMakeProxy.Instance:IsCostGreatCard(chooseData.id) then
|
|
MsgManager.ConfirmMsgByID(1150, function ()
|
|
self:CallExchangeCardItem()
|
|
end)
|
|
else
|
|
self:CallExchangeCardItem()
|
|
end
|
|
end
|
|
end
|
|
|
|
function CardMakeView:Skip()
|
|
TipManager.Instance:ShowSkipAnimationTip(skipType, self.skipBtn , NGUIUtil.AnchorSide.Right, {150,0})
|
|
end
|
|
|
|
function CardMakeView:CallExchangeCardItem()
|
|
local chooseData = CardMakeProxy.Instance:GetChoose()
|
|
local skipValue = CardMakeProxy.Instance:IsSkipGetEffect(skipType)
|
|
ServiceItemProxy.Instance:CallExchangeCardItemCmd(CardMakeProxy.MakeType.Compose, self.npcId, nil, nil, chooseData.itemData.staticData.id, skipValue)
|
|
end
|
|
|
|
function CardMakeView:SetConfirm(isGray)
|
|
if isGray then
|
|
self.confirmButton.CurrentState = 1
|
|
self.confirmLabel.effectStyle = UILabel.Effect.None
|
|
else
|
|
self.confirmButton.CurrentState = 0
|
|
self.confirmLabel.effectStyle = UILabel.Effect.Outline
|
|
end
|
|
end
|
|
|
|
function CardMakeView:ClearChooseCard()
|
|
local chooseData = CardMakeProxy.Instance:GetChoose()
|
|
if chooseData then
|
|
local cell
|
|
local cells = self.wrapHelper:GetCellCtls()
|
|
for i=1,#cells do
|
|
cell = cells[i]
|
|
if cell.data and cell.data.id == chooseData.id then
|
|
cell:SetChoose(false)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
function CardMakeView:ClearChooseData()
|
|
local chooseData = CardMakeProxy.Instance:GetChoose()
|
|
if chooseData then
|
|
local data = CardMakeProxy.Instance:GetCard()
|
|
if data then
|
|
for i=1,#data do
|
|
if data[i].id == chooseData.id then
|
|
data[i]:SetChoose(false)
|
|
break
|
|
end
|
|
end
|
|
end
|
|
end
|
|
end |