ro-table/Asstes/Resources/Script/FrameWork/GUI/view/EnchantTransferView.txt
2025-06-04 05:02:57 +08:00

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