351 lines
9.4 KiB
Plaintext
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 |