589 lines
No EOL
23 KiB
Lua
589 lines
No EOL
23 KiB
Lua
local XUiSpringFestivalSmashEggs = XLuaUiManager.Register(XLua, "UiSpringFestivalSmashEggs")
|
|
local XUiGridSpringFestivalSmashEggsReward = require("XUi/XUiSpringFestival/SmashEggs/XUiGridSpringFestivalSmashEggsReward")
|
|
local XUiGridSpringFestivalBuffEffectItem = require("XUi/XUiSpringFestival/SmashEggs/XUiGridSpringFestivalBuffEffectItem")
|
|
local tableInsert = table.insert
|
|
local MODEL_COUNT = 3
|
|
local HAMMER_COUNT = 2
|
|
local SHOW_TIP_DELAY = 3 * XScheduleManager.SECOND
|
|
local SHOW_REWARD_DELAY = 4 * XScheduleManager.SECOND
|
|
local HammerPosOffset = {
|
|
x = 0,
|
|
y = 0.1,
|
|
z = 0.2
|
|
}
|
|
|
|
function XUiSpringFestivalSmashEggs:OnStart()
|
|
self:InitSceneRoot()
|
|
self:RegisterButtonClick()
|
|
self.RewardGrid = {}
|
|
self.BuffItemBtn = {}
|
|
self.BuffEffectGrid = {}
|
|
self.CurrentSelectHammer = XDataCenter.SpringFestivalActivityManager.GetCurrHammer()
|
|
self.CurrentSelectBuffItem = XDataCenter.SpringFestivalActivityManager.GetCurrBuffItem()
|
|
self.CurrentSafetyProtect = XDataCenter.SpringFestivalActivityManager.GetCurrSafetyProtect()
|
|
self.SkipAnimation = false
|
|
self.EndTime = XDataCenter.SpringFestivalActivityManager.GetActivityEndTime()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnEnable()
|
|
self:RefreshRemainingTime()
|
|
self:StartTimer()
|
|
local protectId = XSpringFestivalActivityConfigs.GetBuffItemItemId(XSpringFestivalActivityConfigs.BuffItem.Money)
|
|
self.BaodiGrid:SetButtonState(self.CurrentSafetyProtect == 0 and CS.UiButtonState.Normal or CS.UiButtonState.Select)
|
|
self.BaodiGrid:SetRawImage(XDataCenter.ItemManager.GetItemIcon(protectId))
|
|
self.AssetPanel = XUiPanelAsset.New(self, self.BtnShop, XSpringFestivalActivityConfigs.GetScoreConvertItemId())
|
|
local sliverText = self.GridTips01:Find("TxtTips"):GetComponent("Text")
|
|
sliverText.text = XDataCenter.ItemManager.GetItemDescription(XSpringFestivalActivityConfigs.GetBuffItemItemId(XSpringFestivalActivityConfigs.BuffItem.SilverHammer))
|
|
local goldText = self.GridTips02:Find("TxtTips"):GetComponent("Text")
|
|
goldText.text = XDataCenter.ItemManager.GetItemDescription(XSpringFestivalActivityConfigs.GetBuffItemItemId(XSpringFestivalActivityConfigs.BuffItem.GoldHammer))
|
|
self:InitHammerBtnGroup()
|
|
self:InitBuffItemPanel()
|
|
self:Refresh()
|
|
self.BtnHelpCourse.gameObject:SetActiveEx(XSpringFestivalActivityConfigs.GetSmashEggsHelpId() > 0)
|
|
local isShowHelp = XSaveTool.GetData(string.format("%s%s", XSpringFestivalActivityConfigs.SMASH_EGGS_HELP_KEY, XPlayer.Id))
|
|
if not isShowHelp then
|
|
self:ShowHelp()
|
|
XSaveTool.SaveData(string.format("%s%s", XSpringFestivalActivityConfigs.SMASH_EGGS_HELP_KEY, XPlayer.Id), true)
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnDisable()
|
|
self:StopTimer()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnDestroy()
|
|
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:InitSceneRoot()
|
|
local root = self.UiModelGo.transform
|
|
for i = 1, MODEL_COUNT do
|
|
local model = root:FindTransform("Model" .. i).gameObject
|
|
CS.XShadowHelper.AddShadow(model)
|
|
self["UIMonsterFaint" .. i] = root:FindTransform("UIMonsterFaint" .. i).gameObject
|
|
self["UIMonsterAngry" .. i] = root:FindTransform("UIMonsterAngry" .. i).gameObject
|
|
self["UISuccessed" .. i] = root:FindTransform("UISuccessed" .. i).gameObject
|
|
self["FxUIHammerHit" .. i] = root:FindTransform("FxUIHammerHit" .. i).gameObject
|
|
self["FxHongbao" .. i] = root:FindTransform("FxHongbao" .. i).gameObject
|
|
self["Model" .. i] = model:GetComponent("Animator")
|
|
local inputHandler = model:GetComponent(typeof(CS.XGoInputHandler))
|
|
if not inputHandler then
|
|
inputHandler = model:AddComponent(typeof(CS.XGoInputHandler))
|
|
end
|
|
self["InputHandler" .. i] = inputHandler
|
|
end
|
|
for i = 1, HAMMER_COUNT do
|
|
self["Hammer" .. i] = root:FindTransform("Hammer" .. i):GetComponent("Animator")
|
|
self["Hammer" .. i].gameObject:SetActive(false)
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnGetEvents()
|
|
return {
|
|
XEventId.EVENT_SPRING_FESTIVAL_SMASH_EGGS_REFRESH,
|
|
}
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnNotify(event, ...)
|
|
if event == XEventId.EVENT_SPRING_FESTIVAL_SMASH_EGGS_REFRESH then
|
|
self:RefreshPanel()
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RegisterButtonClick()
|
|
self.BtnBack.CallBack = function()
|
|
self:OnClickBackBtn()
|
|
end
|
|
self.BtnMainUi.CallBack = function()
|
|
self:OnClickMainBtn()
|
|
end
|
|
self.BtnSkip.CallBack = function()
|
|
self:OnClickBtnSkipAnimation()
|
|
end
|
|
self.BaodiGrid.CallBack = function()
|
|
self:OnClickBaodiGrid()
|
|
end
|
|
|
|
self.BtnExchange.CallBack = function()
|
|
self:OnClickBtnExchange()
|
|
end
|
|
|
|
self.BtnShop.CallBack = function()
|
|
self:OnClickBtnShop()
|
|
end
|
|
|
|
if self.BtnHelpCourse then
|
|
local template = XHelpCourseConfig.GetHelpCourseTemplateById(XSpringFestivalActivityConfigs.GetSmashEggsHelpId())
|
|
self:BindHelpBtn(self.BtnHelpCourse, template.Function)
|
|
end
|
|
for i = 1, MODEL_COUNT do
|
|
local index = i
|
|
self["InputHandler" .. i]:AddPointerClickListener(function(eventData)
|
|
self:OnClickModel(eventData, index)
|
|
end)
|
|
self["BtnSupply" .. i].CallBack = function()
|
|
self:OnClickBtnSupply(index)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnClickModel(eventData, index)
|
|
|
|
if not self:CheckItemCount() then
|
|
XUiManager.TipText("SpringFestivalItemNotEnough")
|
|
return
|
|
end
|
|
if XDataCenter.SpringFestivalActivityManager.CheckIsNeedTip() and self.CurrentSafetyProtect == 0 then
|
|
XUiManager.DialogTip(CS.XTextManager.GetText("TipTitle"), CS.XTextManager.GetText("SpringFestivalSequenceSuccessTip", XDataCenter.SpringFestivalActivityManager.GetSequenceSuccessCount()), XUiManager.DialogType.Normal, nil, function()
|
|
self:SendSmashRequest(index)
|
|
end)
|
|
else
|
|
self:SendSmashRequest(index)
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:ShowHelp()
|
|
local helpId = XSpringFestivalActivityConfigs.GetSmashEggsHelpId()
|
|
if helpId > 0 then
|
|
local template = XHelpCourseConfig.GetHelpCourseTemplateById(helpId)
|
|
XUiManager.ShowHelpTip(template.Function)
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:SendSmashRequest(index)
|
|
local place = index - 1
|
|
local useItem = {
|
|
Buff = self.CurrentSelectBuffItem,
|
|
Hammer = self.CurrentSelectHammer,
|
|
SafetyProtect = self.CurrentSafetyProtect }
|
|
XDataCenter.SpringFestivalActivityManager.SmashEggRequest(place, useItem, function(isSuccess, rewards, addScore)
|
|
|
|
if self.SkipAnimation then
|
|
self:PlaySkipAnimation(index)
|
|
else
|
|
if isSuccess then
|
|
self:PlaySuccessAnimation(index)
|
|
else
|
|
self:PlayFailAnimation(index)
|
|
end
|
|
end
|
|
local tipDelay = not self.SkipAnimation and SHOW_TIP_DELAY or 0
|
|
local rewardDelay = not self.SkipAnimation and SHOW_REWARD_DELAY or 1000
|
|
if not rewards or #rewards == 0 then
|
|
if isSuccess then
|
|
self.TipTimer = XScheduleManager.ScheduleOnce(function ()XUiManager.TipMsg(CsXTextManagerGetText("SpringFestivalSuccessNoItem", addScore))end ,tipDelay)
|
|
else
|
|
if self.CurrentSafetyProtect > 0 then
|
|
self.TipTimer = XScheduleManager.ScheduleOnce(function()XUiManager.TipMsg(CsXTextManagerGetText("SpringFestivalFailWithProtect"))end,tipDelay)
|
|
else
|
|
self.TipTimer = XScheduleManager.ScheduleOnce(function()XUiManager.TipMsg(CsXTextManagerGetText("SpringFestivalFailNoItem"))end,tipDelay)
|
|
end
|
|
end
|
|
return
|
|
else
|
|
if isSuccess then
|
|
self.TipTimer = XScheduleManager.ScheduleOnce(function ()XUiManager.TipMsg(CsXTextManagerGetText("SpringFestivalSuccessHasItem", addScore))end ,tipDelay)
|
|
else
|
|
if self.CurrentSafetyProtect > 0 then
|
|
self.TipTimer = XScheduleManager.ScheduleOnce(function()XUiManager.TipMsg(CsXTextManagerGetText("SpringFestivalFailWithProtectAndItem"))end,tipDelay)
|
|
else
|
|
self.TipTimer = XScheduleManager.ScheduleOnce(function()XUiManager.TipMsg(CsXTextManagerGetText("SpringFestivalFailHasItem"))end,tipDelay)
|
|
end
|
|
end
|
|
self.RewardTimer = XScheduleManager.ScheduleOnce(function()XUiManager.OpenUiTipReward(rewards,CS.XTextManager.GetText("SpringFestivalGetRewardTitle")) end,rewardDelay)
|
|
end
|
|
end)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnClickBtnSupply(index)
|
|
local list = {}
|
|
for i = 1, MODEL_COUNT do
|
|
tableInsert(list, i - 1)
|
|
end
|
|
XDataCenter.SpringFestivalActivityManager.SmashEggsResetEggsRequest(list, function()
|
|
self:PlayRebornAnimation()
|
|
end)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnClickBaodiGrid()
|
|
local isSelect = self.BaodiGrid:GetToggleState()
|
|
if isSelect then
|
|
self.CurrentSafetyProtect = XSpringFestivalActivityConfigs.BuffItem.Money
|
|
else
|
|
self.CurrentSafetyProtect = 0
|
|
end
|
|
self:RefreshBuffEffectPanel()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnClickBackBtn()
|
|
XLuaUiManager.Close("UiSpringFestivalSmashEggs")
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnClickMainBtn()
|
|
XLuaUiManager.RunMain()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnClickBtnExchange()
|
|
XDataCenter.SpringFestivalActivityManager.SmashEggsConvertScoreRequest(function()
|
|
self:PlayAnimation("EffectEnable")
|
|
XUiManager.TipText("SpringFestivalConvertItem")
|
|
end)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:InitHammerBtnGroup()
|
|
local hammerBtns = {
|
|
self.BtnHammer01,
|
|
self.BtnHammer02,
|
|
}
|
|
self.HammerBtnGroup:Init(hammerBtns, function(index)
|
|
self:OnSelectHammer(index)
|
|
end)
|
|
self.HammerBtnGroup:SelectIndex(self.CurrentSelectHammer)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnSelectHammer(index)
|
|
if index < 0 then
|
|
return
|
|
end
|
|
self:PlayAnimation("GridTipsEnable")
|
|
local hammerList = XSpringFestivalActivityConfigs.GetBuffItemsByType(XSpringFestivalActivityConfigs.BuffType.Hammer)
|
|
self.CurrentSelectHammer = hammerList[index].Id
|
|
self:RefreshBuffEffectPanel()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnClickBtnSkipAnimation()
|
|
self.SkipAnimation = self.BtnSkip:GetToggleState()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnClickBtnShop()
|
|
local skipId = XSpringFestivalActivityConfigs.GetSpringFestivalActivityShopSkipId()
|
|
XFunctionManager.SkipInterface(skipId)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:Refresh()
|
|
self:RefreshPanel()
|
|
self:RefreshEgg()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshPanel()
|
|
self:RefreshRewardList()
|
|
self:RefreshTextInfo()
|
|
self:RefreshBuffItemPanel()
|
|
self:RefreshBuffEffectPanel()
|
|
self:RefreshProtectItem()
|
|
self:RefreshHammerCount()
|
|
self:RefreshProcessBar()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshTextInfo()
|
|
local todayScore = XDataCenter.SpringFestivalActivityManager.GetSmashEggsTodayScore()
|
|
if self.TxtDailyActive then
|
|
self.TxtDailyActive.text = todayScore
|
|
end
|
|
|
|
local highestScore = XDataCenter.SpringFestivalActivityManager.GetSmashEggsHighestScore()
|
|
if self.TxtIntegralTop then
|
|
self.TxtIntegralTop.text = CS.XTextManager.GetText("SpringFestivalSmashEggsHighestScore", highestScore)
|
|
end
|
|
|
|
local currentScore = XDataCenter.SpringFestivalActivityManager.GetSmashEggsCurrentScore()
|
|
if self.TxtIntegral then
|
|
self.TxtIntegral.text = currentScore
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshEgg()
|
|
local eggList = XDataCenter.SpringFestivalActivityManager.GetSmashEggsEggList()
|
|
local isReborn = true
|
|
for i = 1, #eggList do
|
|
if not eggList[i].IsBroken then
|
|
self:ResetModel(i)
|
|
else
|
|
self["Model" .. i].gameObject:SetActiveEx(false)
|
|
self["BtnSupply" .. i].gameObject:SetActiveEx(true)
|
|
end
|
|
isReborn = isReborn and eggList[i].IsBroken
|
|
end
|
|
|
|
if isReborn then
|
|
local list = {}
|
|
for i = 1, MODEL_COUNT do
|
|
tableInsert(list, i - 1)
|
|
end
|
|
XDataCenter.SpringFestivalActivityManager.SmashEggsResetEggsRequest(list, function()
|
|
self:RefreshEgg()
|
|
self:PlayRebornAnimation()
|
|
end)
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshProtectItem()
|
|
local itemId = XSpringFestivalActivityConfigs.GetBuffItemItemId(XSpringFestivalActivityConfigs.BuffItem.Money)
|
|
local itemCount = XDataCenter.ItemManager.GetCount(itemId)
|
|
self.BaodiGrid:SetName(itemCount)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshBuffEffectPanel()
|
|
local buffList = {
|
|
self.CurrentSelectBuffItem,
|
|
self.CurrentSafetyProtect
|
|
}
|
|
local isEmpty = true
|
|
for i = 1, #buffList do
|
|
local grid = self.BuffEffectGrid[i]
|
|
if not grid then
|
|
local obj = CS.UnityEngine.Object.Instantiate(self.GridEffect, self.Content)
|
|
grid = XUiGridSpringFestivalBuffEffectItem.New(obj)
|
|
self.BuffEffectGrid[i] = grid
|
|
end
|
|
grid:Refresh(buffList[i])
|
|
isEmpty = buffList[i] == 0 and isEmpty
|
|
end
|
|
self.ImgEmpty.gameObject:SetActiveEx(isEmpty)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:InitBuffItemPanel()
|
|
local buffItems = XSpringFestivalActivityConfigs.GetBuffItemsByType(XSpringFestivalActivityConfigs.BuffType.Additive)
|
|
local defaultSelect = -1
|
|
for i = 1, #buffItems do
|
|
local buffItemsButton = self.BuffItemBtn[i]
|
|
if not buffItemsButton then
|
|
local obj = CS.UnityEngine.Object.Instantiate(self.GridProp, self.PanelProp)
|
|
obj.gameObject:SetActiveEx(true)
|
|
buffItemsButton = obj:GetComponent("XUiButton")
|
|
local itemIcon = XDataCenter.ItemManager.GetItemIcon(buffItems[i].ItemId)
|
|
buffItemsButton:SetRawImage(itemIcon)
|
|
local itemCount = XDataCenter.ItemManager.GetCount(buffItems[i].ItemId)
|
|
buffItemsButton:SetName(itemCount)
|
|
tableInsert(self.BuffItemBtn, buffItemsButton)
|
|
end
|
|
if buffItems[i].Id == self.CurrentSelectBuffItem then
|
|
defaultSelect = i
|
|
end
|
|
end
|
|
self.BuffItemBtnGroup:Init(self.BuffItemBtn, function(index)
|
|
self:OnSelectBuffItem(index)
|
|
end)
|
|
if self.BuffItemBtnGroup.CurSelectId ~= defaultSelect then
|
|
if defaultSelect == -1 then
|
|
self.BuffItemBtnGroup:CancelSelect()
|
|
self.CurrentSelectBuffItem = 0
|
|
else
|
|
self.BuffItemBtnGroup:SelectIndex(defaultSelect)
|
|
end
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshBuffItemPanel()
|
|
local buffItems = XSpringFestivalActivityConfigs.GetBuffItemsByType(XSpringFestivalActivityConfigs.BuffType.Additive)
|
|
for i = 1, #self.BuffItemBtn do
|
|
local itemCount = XDataCenter.ItemManager.GetCount(buffItems[i].ItemId)
|
|
self.BuffItemBtn[i]:SetName(itemCount)
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshHammerCount()
|
|
local silverHammer = XSpringFestivalActivityConfigs.GetBuffItemItemId(XSpringFestivalActivityConfigs.BuffItem.SilverHammer)
|
|
local goldHammer = XSpringFestivalActivityConfigs.GetBuffItemItemId(XSpringFestivalActivityConfigs.BuffItem.GoldHammer)
|
|
local silverCount = XDataCenter.ItemManager.GetCount(silverHammer)
|
|
local goldCount = XDataCenter.ItemManager.GetCount(goldHammer)
|
|
self.BtnHammer01:SetNameByGroup(1, silverCount)
|
|
self.BtnHammer02:SetNameByGroup(1, goldCount)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshProcessBar()
|
|
local today = XDataCenter.SpringFestivalActivityManager.GetSmashEggsTodayScore()
|
|
local day = XDataCenter.SpringFestivalActivityManager.GetSmashEggsActivityDay()
|
|
local rewardList = XSpringFestivalActivityConfigs.GetSmashRewardTemplateByNowDay(day)
|
|
table.sort(rewardList, function(a, b)
|
|
return a.Index < b.Index
|
|
end)
|
|
--分段计算实际进度条,适配不按比例的目标分数
|
|
local process = 0
|
|
local preValue = 0
|
|
for i = 1, #rewardList do
|
|
if today <= 0 then
|
|
break
|
|
end
|
|
local offset = rewardList[i].TargetScore - preValue
|
|
local pow = 1 / (#rewardList * offset)
|
|
if today < offset then
|
|
process = process + today * pow
|
|
else
|
|
process = process + offset * pow
|
|
end
|
|
preValue = rewardList[i].TargetScore
|
|
today = today - offset
|
|
end
|
|
|
|
self.ImgDailyActiveProgress.fillAmount = process / 1
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:OnSelectBuffItem(index)
|
|
local buffItems = XSpringFestivalActivityConfigs.GetBuffItemsByType(XSpringFestivalActivityConfigs.BuffType.Additive)
|
|
local isSelect = self.BuffItemBtn[index]:GetToggleState()
|
|
if isSelect then
|
|
self.CurrentSelectBuffItem = buffItems[index].Id
|
|
else
|
|
self.CurrentSelectBuffItem = 0
|
|
end
|
|
self:RefreshBuffEffectPanel()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshRewardList()
|
|
local day = XDataCenter.SpringFestivalActivityManager.GetSmashEggsActivityDay()
|
|
local rewardList = XSpringFestivalActivityConfigs.GetSmashRewardTemplateByNowDay(day)
|
|
table.sort(rewardList, function(a, b)
|
|
return a.Index > b.Index
|
|
end)
|
|
for i = 1, #rewardList do
|
|
local grid = self.RewardGrid[i]
|
|
if not grid then
|
|
local obj = CS.UnityEngine.Object.Instantiate(self.PanelActive, self.PanelGift)
|
|
obj.gameObject:SetActiveEx(true)
|
|
grid = XUiGridSpringFestivalSmashEggsReward.New(obj, function()
|
|
self:RefreshPanel()
|
|
end)
|
|
self.RewardGrid[i] = grid
|
|
end
|
|
grid:Refresh(rewardList[i])
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:PlaySuccessAnimation(index)
|
|
local modelAnimator = self["Model" .. index]
|
|
local hammerAnimator = self["Hammer" .. self.CurrentSelectHammer]
|
|
local faintEffect = self["UIMonsterFaint" .. index]
|
|
local successEffect = self["UISuccessed" .. index]
|
|
local effect = self["FxUIHammerHit" .. index]
|
|
local hongbaoEffect = self["FxHongbao" .. index]
|
|
local modelPos = modelAnimator.transform.position
|
|
hammerAnimator.transform.position = CS.UnityEngine.Vector3(modelPos.x + HammerPosOffset.x, modelPos.y + HammerPosOffset.y, modelPos.z + HammerPosOffset.z)
|
|
XLuaUiManager.SetMask(true)
|
|
XScheduleManager.ScheduleOnce(function()
|
|
hammerAnimator.gameObject:SetActive(true)
|
|
hammerAnimator:Play("Break")
|
|
XSoundManager.PlaySoundByType(XSpringFestivalActivityConfigs.SmashSoundId.HammerSuccess,XSoundManager.SoundType.Sound)
|
|
XSoundManager.PlaySoundByType(XSpringFestivalActivityConfigs.SmashSoundId.EggSuccess,XSoundManager.SoundType.Sound)
|
|
effect:SetActiveEx(true)
|
|
end, 100)
|
|
XScheduleManager.ScheduleOnce(function()
|
|
hammerAnimator.gameObject:SetActive(false)
|
|
end,1000)
|
|
XScheduleManager.ScheduleOnce(function()
|
|
self["BtnSupply" .. index].gameObject:SetActiveEx(true)
|
|
XSoundManager.PlaySoundByType(XSpringFestivalActivityConfigs.SmashSoundId.SuccessEffectSound,XSoundManager.SoundType.Sound)
|
|
successEffect:SetActiveEx(true)
|
|
hongbaoEffect:SetActiveEx(true)
|
|
modelAnimator.gameObject:SetActiveEx(false)
|
|
end, 3000)
|
|
faintEffect:SetActiveEx(true)
|
|
modelAnimator:Play("UIFaint")
|
|
|
|
XScheduleManager.ScheduleOnce(function()
|
|
XLuaUiManager.SetMask(false)
|
|
self:RefreshEgg()
|
|
end, 4000)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:PlayFailAnimation(index)
|
|
local modelAnimator = self["Model" .. index]
|
|
local hammerAnimator = self["Hammer" .. self.CurrentSelectHammer]
|
|
local angryEffect = self["UIMonsterAngry" .. index]
|
|
local modelPos = modelAnimator.transform.position
|
|
hammerAnimator.transform.position = CS.UnityEngine.Vector3(modelPos.x + HammerPosOffset.x, modelPos.y + HammerPosOffset.y, modelPos.z + HammerPosOffset.z)
|
|
XLuaUiManager.SetMask(true)
|
|
XScheduleManager.ScheduleOnce(function()
|
|
hammerAnimator.gameObject:SetActive(true)
|
|
hammerAnimator:Play("Break")
|
|
XSoundManager.PlaySoundByType(XSpringFestivalActivityConfigs.SmashSoundId.HammerFail,XSoundManager.SoundType.Sound)
|
|
end, 200)
|
|
XScheduleManager.ScheduleOnce(function()
|
|
hammerAnimator.gameObject:SetActive(false)
|
|
end,1000)
|
|
XScheduleManager.ScheduleOnce(function()
|
|
modelAnimator.gameObject:SetActiveEx(false)
|
|
self["BtnSupply" .. index].gameObject:SetActiveEx(true)
|
|
end, 3000)
|
|
angryEffect:SetActiveEx(true)
|
|
modelAnimator:Play("UIGainst")
|
|
XSoundManager.PlaySoundByType(XSpringFestivalActivityConfigs.SmashSoundId.EggFail,XSoundManager.SoundType.Sound)
|
|
XScheduleManager.ScheduleOnce(function()
|
|
XLuaUiManager.SetMask(false)
|
|
self:RefreshEgg()
|
|
end, 4000)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:PlayRebornAnimation()
|
|
for i = 1, MODEL_COUNT do
|
|
self:ResetModel(i)
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:ResetModel(i)
|
|
self["UIMonsterFaint" .. i]:SetActiveEx(false)
|
|
self["UIMonsterAngry" .. i]:SetActiveEx(false)
|
|
self["UISuccessed" .. i]:SetActiveEx(false)
|
|
self["FxUIHammerHit" .. i]:SetActiveEx(false)
|
|
self["FxHongbao" .. i]:SetActiveEx(false)
|
|
self["Model" .. i].gameObject:SetActiveEx(true)
|
|
self["BtnSupply" .. i].gameObject:SetActiveEx(false)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:PlaySkipAnimation(index)
|
|
self["Model" .. index].gameObject:SetActiveEx(false)
|
|
self["BtnSupply" .. index].gameObject:SetActiveEx(true)
|
|
self:RefreshEgg()
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:StartTimer()
|
|
if self.Timer then
|
|
self:StopTimer()
|
|
end
|
|
self.Timer = XScheduleManager.ScheduleForever(function()
|
|
if XTool.UObjIsNil(self.TxtTime) then
|
|
self:StopTimer()
|
|
return
|
|
end
|
|
local currentTime = XTime.GetServerNowTimestamp()
|
|
if currentTime > self.EndTime then
|
|
XDataCenter.SpringFestivalActivityManager.OnActivityEnd()
|
|
return
|
|
end
|
|
self:RefreshRemainingTime()
|
|
end, XScheduleManager.SECOND)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:StopTimer()
|
|
if self.Timer then
|
|
XScheduleManager.UnSchedule(self.Timer)
|
|
self.Timer = nil
|
|
end
|
|
if self.TipTimer then
|
|
XScheduleManager.UnSchedule(self.TipTimer)
|
|
self.TipTimer = nil
|
|
end
|
|
if self.RewardTimer then
|
|
XScheduleManager.UnSchedule(self.RewardTimer)
|
|
self.RewardTimer = nil
|
|
end
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:RefreshRemainingTime()
|
|
local endTime = XDataCenter.SpringFestivalActivityManager.GetActivityEndTime()
|
|
local startTime = XDataCenter.SpringFestivalActivityManager.GetActivityStartTime()
|
|
local now = XTime.GetServerNowTimestamp()
|
|
local offset = XMath.Clamp(endTime - now, 0, endTime - startTime)
|
|
self.TxtTime.text = XUiHelper.GetTime(offset, XUiHelper.TimeFormatType.ACTIVITY)
|
|
end
|
|
|
|
function XUiSpringFestivalSmashEggs:CheckItemCount()
|
|
local buffCount = self.CurrentSelectBuffItem == 0 and 0 or XDataCenter.ItemManager.GetCount(XSpringFestivalActivityConfigs.GetBuffItemItemId(self.CurrentSelectBuffItem))
|
|
local protectCount = self.CurrentSafetyProtect == 0 and 0 or XDataCenter.ItemManager.GetCount(XSpringFestivalActivityConfigs.GetBuffItemItemId(self.CurrentSafetyProtect))
|
|
local hammerCount = self.CurrentSelectHammer == 0 and 0 or XDataCenter.ItemManager.GetCount(XSpringFestivalActivityConfigs.GetBuffItemItemId(self.CurrentSelectHammer))
|
|
|
|
return (self.CurrentSelectBuffItem == 0 or buffCount > 0) and (self.CurrentSafetyProtect == 0 or protectCount > 0) and (self.CurrentSelectHammer == 0 or
|
|
hammerCount > 0)
|
|
end
|
|
|
|
return XUiSpringFestivalSmashEggs |