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

351 lines
9.4 KiB
Plaintext

autoImport("CardRandomMakeCombineCell")
autoImport("CardRandomGetCombineCell")
CardRandomMakeView = class("CardRandomMakeView", ContainerView)
CardRandomMakeView.ViewType = UIViewType.NormalLayer
local maxCard = 3
local skipType = SKIPTYPE.CardRandomMake
function CardRandomMakeView:OnEnter()
CardRandomMakeView.super.OnEnter(self)
if self.viewdata.viewdata.npcdata then
local npcRootTrans = self.viewdata.viewdata.npcdata.assetRole.completeTransform
local viewPort = CameraConfig.NPC_Dialog_ViewPort
if type(self.camera)=="number" then
viewPort = Vector3(viewPort.x, viewPort.y, self.camera)
end
local duration = CameraConfig.NPC_Dialog_DURATION
self:CameraFocusOnNpc(npcRootTrans, viewPort, duration)
end
end
function CardRandomMakeView:OnExit()
self:CameraReset()
CardRandomMakeView.super.OnExit(self)
end
function CardRandomMakeView:Init()
self:FindObjs()
self:AddEvts()
self:AddViewEvts()
self:InitShow()
end
function CardRandomMakeView:FindObjs()
self.filter = self:FindGO("Filter"):GetComponent(UIPopupList)
self.title = self:FindGO("Title"):GetComponent(UILabel)
self.tip = self:FindGO("Tip"):GetComponent(UILabel)
self.costLabel = self:FindGO("Cost"):GetComponent(UILabel)
self.confirmButton = self:FindGO("ConfirmButton"):GetComponent(UIMultiSprite)
self.confirmLabel = self:FindGO("Label", self.confirmButton.gameObject):GetComponent(UILabel)
self.randomRoot = self:FindGO("RandomRoot"):GetComponent(TweenPosition)
self.getRoot = self:FindGO("GetRoot")
self.fadeInOut = self:FindGO("FadeInOut"):GetComponent(TweenPosition)
self.fadeInOutSp = self:FindGO("FadeInOutSymbol"):GetComponent(UISprite)
self.bgTp = self:FindGO("Bg"):GetComponent(TweenPosition)
self.bgTw = self.bgTp.gameObject:GetComponent(TweenWidth)
self.bg1 = self:FindGO("Bg1"):GetComponent(TweenWidth)
self.skipBtn = self:FindGO("SkipBtn"):GetComponent(UISprite)
end
function CardRandomMakeView: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()
end
end)
self:AddClickEvent(self.confirmButton.gameObject,function ()
self:Confirm()
end)
self:AddClickEvent(self.fadeInOut.gameObject,function ()
self:FadeInOut()
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 CardRandomMakeView: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)
self:AddListenEvt(ServiceEvent.NUserVarUpdate, self.UpdateTipInfo)
end
function CardRandomMakeView:InitShow()
self.tipData = {}
self.tipData.funcConfig = {}
self.canChoose = true
self.canMake = false
self.isFadeInOut = true
self.npcId = self.viewdata.viewdata.npcdata.data.id
self:InitRandomCard()
local container = self:FindGO("Container")
local wrapConfig = {
wrapObj = container,
pfbNum = 4,
cellName = "CardRandomMakeCombineCell",
control = CardRandomMakeCombineCell,
dir = 1,
}
self.wrapHelper = WrapCellHelper.new(wrapConfig)
self.wrapHelper:AddEventListener(MouseEvent.MouseClick, self.HandleClick, self)
self.wrapHelper:AddEventListener(CardMakeEvent.Select, self.HandleSelect, self)
local getContainer = self:FindGO("GetContainer")
TableUtility.TableClear(wrapConfig)
wrapConfig.wrapObj = getContainer
wrapConfig.pfbNum = 5
wrapConfig.cellName = "CardRandomGetCombineCell"
wrapConfig.control = CardRandomGetCombineCell
wrapConfig.dir = 1
self.getWrapHelper = WrapCellHelper.new(wrapConfig)
self.getWrapHelper:AddEventListener(MouseEvent.MouseClick, self.HandleGet, self)
self:InitFilter()
self:UpdateCard()
self:UpdateGetCard()
self:SetConfirm(not self.canMake)
self:UpdateTip()
self:UpdateSkip()
end
function CardRandomMakeView:InitRandomCard()
CardMakeProxy.Instance:InitRandomCard()
end
function CardRandomMakeView:InitFilter()
self.filter:Clear()
local randomFilter = GameConfig.CardMake.RandomFilter
local rangeList = CardMakeProxy.Instance:GetFilter(randomFilter)
for i=1,#rangeList do
local rangeData = randomFilter[rangeList[i]]
self.filter:AddItem(rangeData , rangeList[i])
end
if #rangeList > 0 then
local range = rangeList[1]
self.filterData = range
local rangeData = randomFilter[range]
self.filter.value = rangeData
end
end
function CardRandomMakeView:UpdateCard()
local data = CardMakeProxy.Instance:FilterRandomCard(self.filterData)
self:UpdateCardInfo(data)
end
function CardRandomMakeView:CheckUpdateCard()
local data = CardMakeProxy.Instance:CheckFilterRandomCardList(self.filterData)
self:UpdateCardInfo(data)
end
function CardRandomMakeView:UpdateCardInfo(data)
if data then
local newData = self:ReUniteCellData(data, 4)
self.wrapHelper:UpdateInfo(newData)
end
end
function CardRandomMakeView:ResetCard()
self:UpdateCard()
self.wrapHelper:ResetPosition()
end
function CardRandomMakeView:UpdateGetCard()
local data = CardMakeProxy.Instance:GetRandomGetList()
if data then
local newData = self:ReUniteCellData(data, 2)
self.getWrapHelper:UpdateInfo(newData)
end
end
function CardRandomMakeView:UpdateTip()
self.costLabel.gameObject:SetActive(self.canMake)
self.tip.gameObject:SetActive(not self.canMake)
self:UpdateTipInfo()
if self.canMake then
self.cost = CardMakeProxy.Instance:GetRandomCost()
if self.cost then
self.costLabel.text = StringUtil.NumThousandFormat(self.cost)
end
end
end
function CardRandomMakeView:UpdateTipInfo()
local count = MyselfProxy.Instance:getVarValueByType(Var_pb.EVARTYPE_EXCHANGECARD_DRAWMAX) or 0
local maxCount = GameConfig.Card.exchangecard_draw_max
count = maxCount - count
if count < 0 then
count = 0
end
self.tip.text = string.format(ZhString.CardMark_Tip, count, maxCount)
end
function CardRandomMakeView:UpdateSkip()
local isShow = FunctionFirstTime.me:IsFirstTime(FunctionFirstTime.ExchangeCard)
self.skipBtn.gameObject:SetActive(not isShow)
end
function CardRandomMakeView: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 CardRandomMakeView:HandleItemUpdate()
self:InitRandomCard()
self:ResetCard()
end
function CardRandomMakeView:HandleExchangeCardItem(note)
local data = note.body
if data then
if data.charid == Game.Myself.data.id then
self:CloseSelf()
end
end
end
function CardRandomMakeView: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 CardRandomMakeView:HandleClick(cell)
local data = cell.data
if data then
local canChoose = true
if not data.isChoose then
canChoose = self.canChoose
end
if canChoose then
cell:SetChoose()
self:CheckUpdateCard()
local list = CardMakeProxy.Instance:GetRandomChooseList()
local count = #list
self.canChoose = count < maxCard
self.canMake = count == maxCard
self:SetConfirm(not self.canMake)
self:UpdateTip()
else
MsgManager.ShowMsgByID(985)
end
end
end
function CardRandomMakeView:HandleSelect(cell)
local data = cell.data
if data then
self.tipData.itemdata = data.itemData
self:ShowItemTip(self.tipData, self.title, NGUIUtil.AnchorSide.Left, {-225,-250})
end
end
function CardRandomMakeView:HandleGet(cell)
local data = cell.data
if data then
self.tipData.itemdata = data
self:ShowItemTip(self.tipData, cell.icon, NGUIUtil.AnchorSide.Right, {220,0})
end
end
function CardRandomMakeView:Confirm()
if self.canMake then
if MyselfProxy.Instance:GetROB() < self.cost then
MsgManager.ShowMsgByID(1)
return
end
self:CallExchangeCardItem()
end
end
function CardRandomMakeView:FadeInOut()
self.isFadeInOut = not self.isFadeInOut
if self.isFadeInOut then
self.fadeInOut:PlayForward()
self.randomRoot:PlayForward()
self.bgTp:PlayForward()
self.bgTw:PlayForward()
self.bg1:PlayForward()
self.fadeInOutSp.flip = 0
else
self.fadeInOut:PlayReverse()
self.randomRoot:PlayReverse()
self.bgTp:PlayReverse()
self.bgTw:PlayReverse()
self.bg1:PlayReverse()
self.fadeInOutSp.flip = 1
end
self.getRoot:SetActive(self.isFadeInOut)
end
function CardRandomMakeView:Skip()
TipManager.Instance:ShowSkipAnimationTip(skipType, self.skipBtn , NGUIUtil.AnchorSide.Right, {150,0})
end
function CardRandomMakeView:CallExchangeCardItem()
local list = CardMakeProxy.Instance:GetRandomChooseIdList()
local skipValue = CardMakeProxy.Instance:IsSkipGetEffect(skipType)
ServiceItemProxy.Instance:CallExchangeCardItemCmd(CardMakeProxy.MakeType.Random, self.npcId, list, nil, nil, not skipValue)
end
function CardRandomMakeView:ReUniteCellData(datas, perRowNum)
local newData = {}
if(datas~=nil and #datas>0)then
for i = 1,#datas do
local i1 = math.floor((i-1)/perRowNum)+1;
local i2 = math.floor((i-1)%perRowNum)+1;
newData[i1] = newData[i1] or {};
if(datas[i] == nil)then
newData[i1][i2] = nil;
else
newData[i1][i2] = datas[i];
end
end
end
return newData;
end