327 lines
10 KiB
Plaintext
327 lines
10 KiB
Plaintext
EnchantTransferView = class("EnchantView",BaseView)
|
|
autoImport("EnchantTransferCell")
|
|
EnchantTransferView.ViewType = UIViewType.NormalLayer
|
|
|
|
local PERSENT_FORMAT = "%s [c][1B5EB1]+%s%%[-][/c]"
|
|
local VALUE_FORMAT = "%s [c][1B5EB1]+%s[-][/c]"
|
|
local WORKTIP_FORMAT = "[c][9c9c9c]%s:%s(%s)[-][/c]"
|
|
local COMBINE_FORMAT = "[c][222222]%s:%s[-][/c]"
|
|
local NOENCHANT_FORMAT = "[c][9c9c9c]%s[-][/c]"
|
|
local STR_FORMAT = string.format
|
|
local _WhiteUIWidget = ColorUtil.WhiteUIWidget
|
|
local tempColor = LuaColor.white
|
|
local _ArrayClear = TableUtility.ArrayClear
|
|
local COST_CFG = GameConfig.Lottery.TransferCost
|
|
|
|
function EnchantTransferView:Init()
|
|
self:FindObjs()
|
|
self:LisEvent()
|
|
self:AddEvts()
|
|
self:InitView()
|
|
self:UpdataMainBord()
|
|
end
|
|
|
|
function EnchantTransferView:FindObjs()
|
|
self.transferText = self:FindComponent("TransferText",UILabel)
|
|
self.cost = self:FindComponent("Cost",UISprite)
|
|
self.costNum = self:FindComponent("CostNum",UILabel)
|
|
self.transferDesc = self:FindComponent("TransferDesc",UILabel)
|
|
self.filterName = self:FindComponent("FilterName",UILabel)
|
|
self.addItemInButton = self:FindComponent("AddItemInButton",UISprite);
|
|
self:AddClickEvent(self.addItemInButton.gameObject, function (go)
|
|
self:clickTargetInItem();
|
|
end);
|
|
self.addItemOutButton = self:FindComponent("AddItemOutButton",UISprite);
|
|
self:AddClickEvent(self.addItemOutButton.gameObject, function (go)
|
|
self:clickTargetOutItem();
|
|
end);
|
|
self.targetInGo = self:FindGO("TargetInCell");
|
|
self.targetInItemCell = BaseItemCell.new(self.targetInGo);
|
|
self.targetInItemCell:AddEventListener(MouseEvent.MouseClick, self.clickTargetInItem, self);
|
|
|
|
self.targetOutGo = self:FindGO("TargetOutCell");
|
|
self.targetOutItemCell = BaseItemCell.new(self.targetOutGo);
|
|
self.targetOutItemCell:AddEventListener(MouseEvent.MouseClick, self.clickTargetOutItem, self);
|
|
self.scrollView = self:FindGO("EnchantScrollView")
|
|
local enchantInfoTable = self:FindGO("EnchantInfoTable");
|
|
local wrapConfig = {
|
|
wrapObj = enchantInfoTable,
|
|
pfbNum = 5,
|
|
cellName = "EnchantTransferCell",
|
|
control = EnchantTransferCell,
|
|
}
|
|
self.chooseCtl = WrapCellHelper.new(wrapConfig);
|
|
self.chooseCtl:AddEventListener(MouseEvent.MouseClick, self.HandleChooseItem, self);
|
|
self.chooseCtl:AddEventListener(EnchantTransferCellEvent.ClickItemIcon,self.ClickItemIcon,self)
|
|
self.chooseBord = self:FindGO("EnchantInfoBord")
|
|
self.tipLabel = self:FindGO("TipLabel")
|
|
|
|
local table = self:FindComponent("previewTable", UITable);
|
|
self.attrPreviewCtl = UIGridListCtrl.new(table, TipLabelCell, "TipLabelCell");
|
|
self.filter = self:FindGO("Filter"):GetComponent(UIPopupList)
|
|
self.closecomp = self.chooseBord:GetComponent(CloseWhenClickOtherPlace);
|
|
self.empty = self:FindComponent("Empty",UILabel)
|
|
self.btn=self:FindComponent("TransferBtn",UISprite)
|
|
self.effContainer = self:FindGO("EffContainer");
|
|
end
|
|
|
|
function EnchantTransferView:AddEvts()
|
|
self:AddClickEvent(self.btn.gameObject,function (go)
|
|
self:OnTransfer()
|
|
end)
|
|
|
|
EventDelegate.Add(self.filter.onChange, function()
|
|
if self.filter.data == nil then
|
|
return
|
|
end
|
|
if self.filterData ~= self.filter.data then
|
|
local data = EnchantTransferProxy.Instance:GetFilterData(self.filter.data)
|
|
if(0<#data)then
|
|
self.filterData = self.filter.data
|
|
self.chooseCtl:UpdateInfo(data)
|
|
self.chooseCtl:ResetPosition()
|
|
self.curFilterValue=self.filter.value
|
|
else
|
|
self.filterName.text = self.curFilterValue
|
|
MsgManager.ShowMsgByID(290)
|
|
end
|
|
end
|
|
end)
|
|
end
|
|
|
|
function EnchantTransferView:SelectFirst()
|
|
local first = self.chooseCtl:GetCellCtls()[1]
|
|
if first then
|
|
self:HandleChooseItem(first)
|
|
end
|
|
end
|
|
|
|
function EnchantTransferView:ClickItemIcon(cell)
|
|
local data = cell.data
|
|
if nil~=data then
|
|
self.tipData.itemdata = data
|
|
self:ShowItemTip(self.tipData, cell.icon, NGUIUtil.AnchorSide.Right, {220,0})
|
|
end
|
|
end
|
|
|
|
local filter = {}
|
|
local function _getFilter(filterData)
|
|
_ArrayClear(filter)
|
|
for k,v in pairs(filterData) do
|
|
table.insert(filter,k)
|
|
end
|
|
return filter
|
|
end
|
|
|
|
function EnchantTransferView:InitFilter()
|
|
self.filter:Clear()
|
|
local makeFilter = GameConfig.Lottery.TransferFilter
|
|
local rangeList = _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
|
|
self.curFilterValue=self.filter.value
|
|
end
|
|
end
|
|
|
|
local lineTab = {453,229}
|
|
function EnchantTransferView:SetBordAttr()
|
|
if(nil==self.contextDatas)then
|
|
self.contextDatas={}
|
|
else
|
|
_ArrayClear(self.contextDatas)
|
|
end
|
|
|
|
if(self.transferInData and self.transferInData.enchantInfo)then
|
|
local attri = self.transferInData.enchantInfo:GetEnchantAttrs()
|
|
if(0<#attri)then
|
|
for i=1,#attri do
|
|
local content = {}
|
|
if(attri[i].propVO.isPercent)then
|
|
content.label = STR_FORMAT(PERSENT_FORMAT, attri[i].name, attri[i].value)
|
|
else
|
|
content.label = STR_FORMAT(VALUE_FORMAT, attri[i].name, attri[i].value)
|
|
end
|
|
content.hideline=false
|
|
content.lineTab=lineTab
|
|
self.contextDatas[#self.contextDatas+1] = content;
|
|
end
|
|
local combineEffects = self.transferInData.enchantInfo:GetCombineEffects()
|
|
for i=1,#combineEffects do
|
|
local content = {}
|
|
local combineEffect = combineEffects[i]
|
|
local buffData = combineEffect and combineEffect.buffData
|
|
if(buffData)then
|
|
if(combineEffect.isWork)then
|
|
content.label = STR_FORMAT(WORKTIP_FORMAT, buffData.BuffName, buffData.BuffDesc)
|
|
else
|
|
content.label = STR_FORMAT(COMBINE_FORMAT, buffData.BuffName, buffData.BuffDesc, combineEffect.WorkTip)
|
|
end
|
|
content.hideline=false
|
|
content.lineTab=lineTab
|
|
self.contextDatas[#self.contextDatas+1] = content;
|
|
end
|
|
end
|
|
end
|
|
end
|
|
if(0<#self.contextDatas)then
|
|
self.contextDatas[#self.contextDatas].hideline=true
|
|
end
|
|
self.attrPreviewCtl:ResetDatas(self.contextDatas);
|
|
end
|
|
|
|
function EnchantTransferView:LisEvent()
|
|
self:AddListenEvt(ServiceEvent.ItemEnchantTransItemCmd, self.HandleTransfer)
|
|
end
|
|
|
|
function EnchantTransferView:HandleTransfer(note)
|
|
local data = note.body
|
|
if(true==data.success)then
|
|
-- TODO play successful effect
|
|
|
|
self:PlayUIEffect(EffectMap.UI.EnchantTransfer,
|
|
self.effContainer,
|
|
true,
|
|
self.SuccessEffectHandle,
|
|
self)
|
|
end
|
|
end
|
|
|
|
function EnchantTransferView:_CloseUI()
|
|
MsgManager.ShowMsgByID(293)
|
|
LeanTween.cancel(self.gameObject)
|
|
LeanTween.delayedCall(self.gameObject,3,function ()
|
|
self:CloseSelf()
|
|
self.forbiddenFlag = false
|
|
end)
|
|
end
|
|
|
|
function EnchantTransferView.SuccessEffectHandle(effectHandle, owner)
|
|
if(owner)then
|
|
owner:_CloseUI()
|
|
end
|
|
end
|
|
|
|
function EnchantTransferView:InitView()
|
|
ServiceItemProxy.Instance:CallQueryLotteryHeadItemCmd()
|
|
local iconName = Table_Item[COST_CFG.itemid] and Table_Item[COST_CFG.itemid].Icon or ""
|
|
IconManager:SetItemIcon(iconName,self.cost)
|
|
self.costNum.text = COST_CFG.num
|
|
self.transferText.text =ZhString.EnchantTransferView_BtnName
|
|
self.empty.text = ZhString.EnchantTransferView_Empty
|
|
self.tipData = {}
|
|
tempColor:Set(1.0/255.0,2.0/255.0,3.0/255.0,160/255)
|
|
self:InitFilter()
|
|
self:SelectFirst()
|
|
end
|
|
|
|
function EnchantTransferView:HandleChooseItem(cellctl)
|
|
local data = cellctl and cellctl.data;
|
|
if(EnchantTransferProxy.Instance.chooseTransferInData)then
|
|
EnchantTransferProxy.Instance:ResetChooseData(data)
|
|
self.transferInData=data
|
|
self.targetInItemCell:SetData(data);
|
|
self.targetInItemCell:UpdateMyselfInfo(data)
|
|
self:Show(self.targetInGo)
|
|
self:ResetTransOutData()
|
|
else
|
|
self.transferOutData=data
|
|
self.targetOutItemCell:SetData(data);
|
|
self.targetOutItemCell:UpdateMyselfInfo(data)
|
|
self:Show(self.targetOutGo)
|
|
end
|
|
self:Hide(self.chooseBord)
|
|
self:UpdataMainBord()
|
|
self:SetBordAttr()
|
|
end
|
|
|
|
function EnchantTransferView:ResetTransOutData()
|
|
if(self.transferOutData and self.transferOutData.staticData.Type~=self.transferInData.staticData.Type)then
|
|
self.transferOutData = nil
|
|
self:Hide(self.targetOutGo)
|
|
end
|
|
end
|
|
|
|
function EnchantTransferView:UpdataMainBord()
|
|
if(self.transferInData)then
|
|
self:Hide(self.tipLabel)
|
|
self.addItemInButton.enabled = false
|
|
else
|
|
self:Show(self.tipLabel)
|
|
self.addItemInButton.enabled = true
|
|
_WhiteUIWidget(self.addItemInButton)
|
|
end
|
|
if(self.transferOutData)then
|
|
self.addItemOutButton.enabled = false
|
|
else
|
|
self.addItemOutButton.enabled = true
|
|
if(self.transferInData)then
|
|
_WhiteUIWidget(self.addItemOutButton)
|
|
else
|
|
self.addItemOutButton.color=tempColor
|
|
end
|
|
end
|
|
if(self.transferInData and self.transferOutData)then
|
|
_WhiteUIWidget(self.btn)
|
|
_WhiteUIWidget(self.cost)
|
|
self.transferText.effectStyle =UILabel.Effect.Outline
|
|
else
|
|
self.btn.color=tempColor
|
|
self.cost.color=tempColor
|
|
self.transferText.effectStyle =UILabel.Effect.None
|
|
end
|
|
end
|
|
|
|
function EnchantTransferView:clickTargetInItem(cellCtl)
|
|
EnchantTransferProxy.Instance:ResetPhase(true)
|
|
self:Show(self.filter.gameObject)
|
|
local data = EnchantTransferProxy.Instance:GetEnchantInData()
|
|
self:_resetChooseInfo(data)
|
|
end
|
|
|
|
function EnchantTransferView:clickTargetOutItem(cellCtl)
|
|
if(not self.transferInData)then return end
|
|
EnchantTransferProxy.Instance:ResetPhase(false)
|
|
self:Hide(self.filter.gameObject)
|
|
local data = EnchantTransferProxy.Instance:GetEnchantOutData()
|
|
self:_resetChooseInfo(data)
|
|
end
|
|
|
|
function EnchantTransferView:_resetChooseInfo(data)
|
|
self:Show(self.chooseBord)
|
|
self.chooseCtl:UpdateInfo(data)
|
|
self.chooseCtl:ResetPosition()
|
|
self.scrollView:SetActive(#data>0)
|
|
self.empty.gameObject:SetActive(#data==0)
|
|
end
|
|
|
|
function EnchantTransferView:OnTransfer()
|
|
if(self.forbiddenFlag)then
|
|
return
|
|
end
|
|
|
|
if(not self.transferInData or not self.transferOutData)then
|
|
return
|
|
end
|
|
if(BagProxy.Instance:GetItemNumByStaticID(COST_CFG.itemid) < COST_CFG.num)then
|
|
MsgManager.ShowMsgByID(292)
|
|
return
|
|
end
|
|
|
|
local dont = LocalSaveProxy.Instance:GetDontShowAgain(291)
|
|
if nil == dont then
|
|
MsgManager.DontAgainConfirmMsgByID(291, function ()
|
|
ServiceItemProxy.Instance:CallEnchantTransItemCmd(self.transferInData.id, self.transferOutData.id)
|
|
self.forbiddenFlag = true
|
|
end)
|
|
else
|
|
ServiceItemProxy.Instance:CallEnchantTransItemCmd(self.transferInData.id, self.transferOutData.id)
|
|
self.forbiddenFlag = true
|
|
end
|
|
end |