Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
@@ -0,0 +1,620 @@
|
||||
local PhoneGiftCtrl = class("PhoneGiftCtrl", BaseCtrl)
|
||||
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
||||
local JumpUtil = require("Game.Common.Utils.JumpUtil")
|
||||
local LocalData = require("GameCore.Data.LocalData")
|
||||
local newDayTime = UTILS.GetDayRefreshTimeOffset()
|
||||
PhoneGiftCtrl._mapNodeConfig = {
|
||||
txtGiftTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Phone_Gift_Send_Title"
|
||||
},
|
||||
txtPresentTitle = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Dating_Send_Gift_Title"
|
||||
},
|
||||
loopsvGiftList = {
|
||||
sNodeName = "svGiftList",
|
||||
sComponentName = "LoopScrollView"
|
||||
},
|
||||
goEmpty = {sNodeName = "Empty", sComponentName = "GameObject"},
|
||||
txtArea = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Phone_Gift_Send_List_Area"
|
||||
},
|
||||
btnSource = {
|
||||
nCount = 2,
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtnClick_Source"
|
||||
},
|
||||
imgSourceIcon = {nCount = 2, sComponentName = "Image"},
|
||||
txtSource = {nCount = 2, sComponentName = "TMP_Text"},
|
||||
txtCharLandmark = {sComponentName = "TMP_Text"},
|
||||
imgAffinity = {sComponentName = "Image"},
|
||||
txtAffinityLevel = {sComponentName = "TMP_Text"},
|
||||
txtLevelCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Dating_Affinity_Level"
|
||||
},
|
||||
txtAffinityLevelCn = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Dating_Send_Gift_Tacit"
|
||||
},
|
||||
txtGiftCount = {sComponentName = "TMP_Text"},
|
||||
rectPreProgress = {
|
||||
sNodeName = "imgPreProgress",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
rectProgress = {
|
||||
sNodeName = "imgProgress",
|
||||
sComponentName = "RectTransform"
|
||||
},
|
||||
goAffinityInfo = {
|
||||
sNodeName = "goAffinityinfo",
|
||||
sComponentName = "GameObject"
|
||||
},
|
||||
btnPresent = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtn_ClickSendGift"
|
||||
},
|
||||
txtBtnPresent = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Phone_Gift_Send_Btn"
|
||||
},
|
||||
btnPresentGray = {
|
||||
sComponentName = "UIButton",
|
||||
callback = "OnBtn_ClickSendGift"
|
||||
},
|
||||
txtBtnPresentGray = {
|
||||
sComponentName = "TMP_Text",
|
||||
sLanguageId = "Phone_Gift_Send_Btn"
|
||||
},
|
||||
txtProgress = {
|
||||
sNodeName = "txtProgress",
|
||||
sComponentName = "TMP_Text"
|
||||
},
|
||||
t_common_04 = {}
|
||||
}
|
||||
PhoneGiftCtrl._mapEventConfig = {
|
||||
[EventId.AffinityChange] = "OnEvent_AffinityChange",
|
||||
[EventId.IsNewDay] = "OnEvent_NewDay"
|
||||
}
|
||||
function PhoneGiftCtrl:Awake()
|
||||
self.progressBarWidth = 487.66
|
||||
self.progressBarMinWidth = 0
|
||||
self.tbGridCtrl = {}
|
||||
self.tbChooseItem = {}
|
||||
self.nCurChosenIdx = 0
|
||||
self.lastChosenItem = 0
|
||||
self.nLastChosenItem = 0
|
||||
self.nMaxSendGiftCount = tonumber(ConfigTable.GetConfigNumber("AffinityGiftSendCount"))
|
||||
end
|
||||
function PhoneGiftCtrl:OnEnable()
|
||||
self:InitEmptyJumpTo()
|
||||
end
|
||||
function PhoneGiftCtrl:OnDisable()
|
||||
if self.tbGridCtrl then
|
||||
for k, v in pairs(self.tbGridCtrl) do
|
||||
self:UnbindCtrlByNode(v)
|
||||
end
|
||||
end
|
||||
self.tbGridCtrl = {}
|
||||
end
|
||||
function PhoneGiftCtrl:InitEmptyJumpTo()
|
||||
self.tbJumpTo = ConfigTable.GetConfigArray("PhoneGiftJumpTo", ",")
|
||||
if self.tbJumpTo ~= nil then
|
||||
for k, v in ipairs(self._mapNode.btnSource) do
|
||||
v.gameObject:SetActive(self.tbJumpTo[k] ~= nil)
|
||||
if self.tbJumpTo[k] ~= nil then
|
||||
local mapCfgJump = ConfigTable.GetData("JumpTo", tonumber(self.tbJumpTo[k]))
|
||||
if mapCfgJump ~= nil then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtSource[k], mapCfgJump.Desc)
|
||||
self:SetPngSprite(self._mapNode.imgSourceIcon[k], mapCfgJump.Icon)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
function PhoneGiftCtrl:GetGiftFavourLevelById(itemId)
|
||||
if self.PreferenceData == nil then
|
||||
return 2
|
||||
end
|
||||
local itemData = ConfigTable.GetData("AffinityGift", itemId)
|
||||
for k, v in ipairs(itemData.Tags) do
|
||||
for k1, v1 in ipairs(self.PreferenceData.PreferTags) do
|
||||
if v == v1 then
|
||||
return 1
|
||||
end
|
||||
end
|
||||
end
|
||||
for k, v in ipairs(itemData.Tags) do
|
||||
for k1, v1 in ipairs(self.PreferenceData.HateTags) do
|
||||
if v == v1 then
|
||||
return 3
|
||||
end
|
||||
end
|
||||
end
|
||||
return 2
|
||||
end
|
||||
function PhoneGiftCtrl:Refresh(nCharId)
|
||||
self._mapNode.rectPreProgress.gameObject:SetActive(false)
|
||||
self.nCharId = nCharId
|
||||
local cfgData = PlayerData.Phone:GetAvgContactsData(self.nCharId)
|
||||
if cfgData ~= nil then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtCharLandmark, orderedFormat(ConfigTable.GetUIText("Phone_Gift_Send_Char"), cfgData.landmark))
|
||||
end
|
||||
local affinityData = PlayerData.Char:GetCharAffinityData(self.nCharId)
|
||||
self.curFavourLevel = affinityData.Level
|
||||
self.curFavourExp = affinityData.Exp
|
||||
self.preFavourLevel = self.curFavourLevel
|
||||
self.preFavourExp = self.curFavourExp
|
||||
NovaAPI.SetTMPText(self._mapNode.txtAffinityLevel, self.curFavourLevel)
|
||||
local mapCharAffinity = ConfigTable.GetData("CharAffinityTemplate", self.nCharId)
|
||||
if mapCharAffinity == nil then
|
||||
return
|
||||
end
|
||||
local templateId = mapCharAffinity.TemplateId
|
||||
self.MaxAffinityLevel = PlayerData.Char:GetMaxAffinityLevel(templateId)
|
||||
local percent = 0
|
||||
local level = self.curFavourLevel >= self.MaxAffinityLevel and self.MaxAffinityLevel or self.curFavourLevel + 1
|
||||
local data = CacheTable.GetData("_AffinityLevel", templateId)[level]
|
||||
local curData = CacheTable.GetData("_AffinityLevel", templateId)[self.curFavourLevel]
|
||||
if self.curFavourLevel >= self.MaxAffinityLevel then
|
||||
percent = 1
|
||||
else
|
||||
percent = self.curFavourExp / data.NeedExp
|
||||
end
|
||||
local sizeDelta = self._mapNode.rectProgress.sizeDelta
|
||||
sizeDelta.x = self.progressBarWidth * percent < self.progressBarMinWidth and self.progressBarMinWidth or self.progressBarWidth * percent
|
||||
self._mapNode.rectProgress.sizeDelta = sizeDelta
|
||||
if self.curFavourLevel >= self.MaxAffinityLevel then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtProgress, ConfigTable.GetUIText("Phone_Gift_Affinity_Max_Level"))
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtProgress, string.format("%d/%d", self.curFavourExp, data.NeedExp))
|
||||
end
|
||||
self._mapNode.rectProgress.gameObject:SetActive(self.curFavourExp > 0 or self.curFavourLevel >= self.MaxAffinityLevel)
|
||||
self:SetPngSprite(self._mapNode.imgAffinity, curData.AffinityLevelIcon .. "_s")
|
||||
local curCount = PlayerData.Base:GetSendGiftCount()
|
||||
NovaAPI.SetTMPText(self._mapNode.txtGiftCount, orderedFormat(ConfigTable.GetUIText("Phone_Gift_Send_Day_Count_1"), curCount, self.nMaxSendGiftCount))
|
||||
local mapCharDesc = ConfigTable.GetData("CharacterDes", self.nCharId)
|
||||
if mapCharDesc ~= nil then
|
||||
self.PreferenceData = {
|
||||
PreferTags = mapCharDesc.PreferTags,
|
||||
HateTags = mapCharDesc.HateTags
|
||||
}
|
||||
end
|
||||
self:RefreshItemList()
|
||||
end
|
||||
function PhoneGiftCtrl:RefreshItemList()
|
||||
self.tbItemData = {}
|
||||
self.tbChooseItem = {}
|
||||
local listCount = 0
|
||||
local tbAllItem = {}
|
||||
local foreachAffinityGift = function(mapData)
|
||||
local count = PlayerData.Item:GetItemCountByID(mapData.Id)
|
||||
local itemData = ConfigTable.GetData_Item(mapData.Id)
|
||||
local favourLevel = self:GetGiftFavourLevel(mapData.Tags)
|
||||
if 0 < count then
|
||||
table.insert(tbAllItem, {
|
||||
nTid = itemData.Id,
|
||||
nRarity = itemData.Rarity,
|
||||
nCount = count,
|
||||
nExpire = itemData.ExpireType,
|
||||
favourLevel = favourLevel
|
||||
})
|
||||
end
|
||||
end
|
||||
ForEachTableLine(DataTable.AffinityGift, foreachAffinityGift)
|
||||
self._mapNode.goEmpty:SetActive(#tbAllItem == 0)
|
||||
self._mapNode.loopsvGiftList.gameObject:SetActive(0 < #tbAllItem)
|
||||
self.tbItemData = {}
|
||||
if 0 < #tbAllItem then
|
||||
table.sort(tbAllItem, function(a, b)
|
||||
if a.favourLevel == b.favourLevel then
|
||||
if a.nRarity == b.nRarity then
|
||||
return a.nTid < b.nTid
|
||||
end
|
||||
return a.nRarity < b.nRarity
|
||||
end
|
||||
return a.favourLevel < b.favourLevel
|
||||
end)
|
||||
for _, v in ipairs(tbAllItem) do
|
||||
for i = 1, v.nCount do
|
||||
listCount = listCount + 1
|
||||
table.insert(self.tbItemData, {
|
||||
nTid = v.nTid,
|
||||
nRarity = v.nRarity,
|
||||
nCount = 1,
|
||||
nExpire = v.nExpire,
|
||||
favourLevel = v.favourLevel
|
||||
})
|
||||
end
|
||||
end
|
||||
self._mapNode.loopsvGiftList:Init(listCount, self, self.RefreshItemGrid, self.OnBtn_ClickItemGrid)
|
||||
end
|
||||
self._mapNode.btnPresentGray.gameObject:SetActive(#self.tbItemData == 0)
|
||||
self._mapNode.btnPresent.gameObject:SetActive(#self.tbItemData > 0)
|
||||
end
|
||||
function PhoneGiftCtrl:RefreshItemGrid(grid)
|
||||
local nIndex = tonumber(grid.name) + 1
|
||||
local mapItem = self.tbItemData[nIndex]
|
||||
local nInstanceID = grid:GetInstanceID()
|
||||
if not self.tbGridCtrl[nInstanceID] then
|
||||
local itemObj = grid.transform:Find("btnGrid/AnimRoot/tc_item_02")
|
||||
self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(itemObj, "Game.UI.TemplateEx.TemplateItemCtrl")
|
||||
end
|
||||
self.tbGridCtrl[nInstanceID]:SetItem(mapItem.nTid, mapItem.nRarity, nil, mapItem.nExpire)
|
||||
local imgAffinityLevel = grid.transform:Find("btnGrid/AnimRoot/tc_item_02/imgAffinityGiftLevel"):GetComponent("Image")
|
||||
local level = mapItem.favourLevel
|
||||
self:SetAtlasSprite(imgAffinityLevel, "11_ico", "zs_present_heart_" .. level)
|
||||
for nIdx, v in pairs(self.tbChooseItem) do
|
||||
if v ~= nil and v.nTid == mapItem.nTid and nIdx == nIndex then
|
||||
self.tbGridCtrl[nInstanceID]:SetMultiSelected_Blue(true)
|
||||
end
|
||||
end
|
||||
end
|
||||
function PhoneGiftCtrl:GetGiftFavourLevel(tags)
|
||||
if self.PreferenceData == nil then
|
||||
return 2
|
||||
end
|
||||
for k, v in ipairs(tags) do
|
||||
for k1, v1 in ipairs(self.PreferenceData.PreferTags) do
|
||||
if v == v1 then
|
||||
return 1
|
||||
end
|
||||
end
|
||||
end
|
||||
for k, v in ipairs(tags) do
|
||||
for k1, v1 in ipairs(self.PreferenceData.HateTags) do
|
||||
if v == v1 then
|
||||
return 3
|
||||
end
|
||||
end
|
||||
end
|
||||
return 2
|
||||
end
|
||||
function PhoneGiftCtrl:OnItemChosen()
|
||||
local mapCharAffinity = ConfigTable.GetData("CharAffinityTemplate", self.nCharId)
|
||||
if mapCharAffinity == nil then
|
||||
return
|
||||
end
|
||||
if self.curFavourLevel >= self.MaxAffinityLevel then
|
||||
return
|
||||
end
|
||||
local nSelectCount = 0
|
||||
local addedExp = 0
|
||||
for nIndex, v in pairs(self.tbChooseItem) do
|
||||
local data = ConfigTable.GetData("AffinityGift", v.nTid)
|
||||
local level = self:GetGiftFavourLevelById(v.nTid)
|
||||
local AffinityGiftPreferenceProp = ConfigTable.GetConfigNumberArray("AffinityGiftPreferenceProp")
|
||||
local nExp = data.BaseAffinity * (AffinityGiftPreferenceProp[level] / 100 + 1)
|
||||
addedExp = addedExp + nExp
|
||||
nSelectCount = nSelectCount + 1
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtGiftCount, orderedFormat(ConfigTable.GetUIText("Phone_Gift_Send_Day_Count_1"), nSelectCount + PlayerData.Base:GetSendGiftCount(), self.nMaxSendGiftCount))
|
||||
local mapCharAffinity = ConfigTable.GetData("CharAffinityTemplate", self.nCharId)
|
||||
if mapCharAffinity == nil then
|
||||
return
|
||||
end
|
||||
local templateId = mapCharAffinity.TemplateId
|
||||
local addedLevel = self.curFavourLevel
|
||||
local preFinalExp = addedExp + self.curFavourExp
|
||||
if 0 < addedExp then
|
||||
while 0 < preFinalExp and not (addedLevel >= self.MaxAffinityLevel) do
|
||||
local needExp = CacheTable.GetData("_AffinityLevel", templateId)[addedLevel + 1].NeedExp
|
||||
preFinalExp = preFinalExp - needExp
|
||||
if 0 <= preFinalExp then
|
||||
addedLevel = addedLevel + 1
|
||||
if addedLevel >= self.MaxAffinityLevel then
|
||||
preFinalExp = CacheTable.GetData("_AffinityLevel", templateId)[self.MaxAffinityLevel].NeedExp
|
||||
break
|
||||
end
|
||||
else
|
||||
preFinalExp = preFinalExp + needExp
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
local sizeDelta = self._mapNode.rectPreProgress.sizeDelta
|
||||
local percent = 0
|
||||
if addedLevel > self.curFavourLevel then
|
||||
self._mapNode.rectProgress.gameObject:SetActive(false)
|
||||
percent = preFinalExp / CacheTable.GetData("_AffinityLevel", templateId)[addedLevel + 1 > self.MaxAffinityLevel and self.MaxAffinityLevel or addedLevel + 1].NeedExp
|
||||
else
|
||||
self._mapNode.rectProgress.gameObject:SetActive(true)
|
||||
percent = (self.curFavourExp + addedExp) / CacheTable.GetData("_AffinityLevel", templateId)[addedLevel + 1 > self.MaxAffinityLevel and self.MaxAffinityLevel or addedLevel + 1].NeedExp
|
||||
end
|
||||
if 1 <= percent then
|
||||
percent = 1
|
||||
end
|
||||
sizeDelta.x = self.progressBarWidth * percent
|
||||
self._mapNode.rectPreProgress.sizeDelta = sizeDelta
|
||||
local nShowFinalExp = self.curFavourExp + addedExp
|
||||
if addedLevel >= self.MaxAffinityLevel then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtProgress, ConfigTable.GetUIText("Phone_Gift_Affinity_Max_Level"))
|
||||
else
|
||||
NovaAPI.SetTMPText(self._mapNode.txtProgress, string.format("%d/%d", nShowFinalExp, CacheTable.GetData("_AffinityLevel", templateId)[addedLevel + 1 > self.MaxAffinityLevel and self.MaxAffinityLevel or addedLevel + 1].NeedExp))
|
||||
end
|
||||
NovaAPI.SetTMPText(self._mapNode.txtAffinityLevel, addedLevel)
|
||||
self._mapNode.rectPreProgress.gameObject:SetActive(0 < addedExp)
|
||||
local mapLevelBefore = {
|
||||
nLevel = self.preFavourLevel,
|
||||
nMaxLevel = self.MaxAffinityLevel,
|
||||
nExp = self.preFavourExp,
|
||||
nMaxExp = CacheTable.GetData("_AffinityLevel", templateId)[self.curFavourLevel + 1 > self.MaxAffinityLevel and self.MaxAffinityLevel or self.curFavourLevel + 1].NeedExp
|
||||
}
|
||||
self.preFavourLevel = addedLevel
|
||||
self.preFavourExp = preFinalExp
|
||||
local mapLevelAfter = {
|
||||
nLevel = addedLevel,
|
||||
nMaxLevel = self.MaxAffinityLevel,
|
||||
nExp = preFinalExp,
|
||||
nMaxExp = CacheTable.GetData("_AffinityLevel", templateId)[addedLevel + 1 > self.MaxAffinityLevel and self.MaxAffinityLevel or addedLevel + 1].NeedExp
|
||||
}
|
||||
self:PlayPreProgressAnim(mapLevelBefore, mapLevelAfter)
|
||||
end
|
||||
function PhoneGiftCtrl:PlayPreProgressAnim(mapBefore, mapAfter)
|
||||
local bMaxLv = mapAfter.nLevel == mapAfter.nMaxLevel
|
||||
local nAddLevel = mapAfter.nLevel - mapBefore.nLevel
|
||||
local nAddCount = 0
|
||||
if nAddLevel == 0 then
|
||||
nAddCount = 1
|
||||
elseif 0 < mapAfter.nExp and not bMaxLv then
|
||||
nAddCount = nAddLevel + 1
|
||||
else
|
||||
nAddCount = nAddLevel
|
||||
end
|
||||
local nAniTime = 0.2
|
||||
if nAddCount < 6 then
|
||||
nAniTime = 0.2
|
||||
elseif 6 <= nAddCount then
|
||||
nAniTime = 0.1
|
||||
end
|
||||
local nBeforeToMaxTime = nAniTime * (1 - mapBefore.nExp / mapBefore.nMaxExp)
|
||||
local nBeforeToAfterTime = nAniTime * ((mapAfter.nExp - mapBefore.nExp) / mapAfter.nMaxExp)
|
||||
local nZeroToAfterTime = nAniTime * mapAfter.nExp / mapAfter.nMaxExp
|
||||
local nAllTime = 0
|
||||
local height = self._mapNode.rectPreProgress.sizeDelta.y
|
||||
local sequence = DOTween.Sequence()
|
||||
for i = 1, nAddCount - 1 do
|
||||
local nTime = i == 1 and nBeforeToMaxTime or nAniTime
|
||||
nAllTime = nAllTime + nTime
|
||||
sequence:Append(self._mapNode.rectPreProgress:DOSizeDelta(Vector2(self.progressBarWidth, height), nTime))
|
||||
sequence:AppendCallback(function()
|
||||
self._mapNode.rectPreProgress.sizeDelta = Vector2(0, height)
|
||||
end)
|
||||
end
|
||||
if bMaxLv then
|
||||
local nTime = 1 < nAddCount and nAniTime or nBeforeToMaxTime
|
||||
nAllTime = nAllTime + nTime
|
||||
sequence:Append(self._mapNode.rectPreProgress:DOSizeDelta(Vector2(self.progressBarWidth, height), nTime))
|
||||
elseif mapAfter.nExp > 0 then
|
||||
local nTime = 1 < nAddCount and nZeroToAfterTime or nBeforeToAfterTime
|
||||
nAllTime = nAllTime + nTime
|
||||
local width = self.progressBarWidth * mapAfter.nExp / mapAfter.nMaxExp
|
||||
sequence:Append(self._mapNode.rectPreProgress:DOSizeDelta(Vector2(width, height), nTime))
|
||||
elseif mapAfter.nExp == 0 then
|
||||
local nTime = 1 < nAddCount and nAniTime or nBeforeToMaxTime
|
||||
nAllTime = nAllTime + nTime
|
||||
sequence:Append(self._mapNode.rectPreProgress:DOSizeDelta(Vector2(self.progressBarWidth, height), nTime))
|
||||
sequence:AppendCallback(function()
|
||||
self._mapNode.rectPreProgress.sizeDelta = Vector2(0, height)
|
||||
end)
|
||||
end
|
||||
sequence:SetUpdate(true)
|
||||
nAllTime = nAllTime + 0.2
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, nAllTime)
|
||||
end
|
||||
function PhoneGiftCtrl:PlayProgressAnim(mapBefore, mapAfter, callback)
|
||||
local bMaxLv = mapAfter.nLevel == mapAfter.nMaxLevel
|
||||
local nAddLevel = mapAfter.nLevel - mapBefore.nLevel
|
||||
local nAddCount = 0
|
||||
if nAddLevel == 0 then
|
||||
nAddCount = 1
|
||||
elseif 0 < mapAfter.nExp then
|
||||
nAddCount = nAddLevel + 1
|
||||
else
|
||||
nAddCount = nAddLevel
|
||||
end
|
||||
local nAniTime = 0.2
|
||||
if nAddCount < 6 then
|
||||
nAniTime = 0.2
|
||||
elseif 6 <= nAddCount then
|
||||
nAniTime = 0.1
|
||||
end
|
||||
local nBeforeToMaxTime = nAniTime * (1 - mapBefore.nExp / mapBefore.nMaxExp)
|
||||
local nBeforeToAfterTime = nAniTime * ((mapAfter.nExp - mapBefore.nExp) / mapAfter.nMaxExp)
|
||||
local nZeroToAfterTime = nAniTime * mapAfter.nExp / mapAfter.nMaxExp
|
||||
local nAllTime = 0
|
||||
local heigth = self._mapNode.rectPreProgress.sizeDelta.y
|
||||
local sequence = DOTween.Sequence()
|
||||
for i = 1, nAddCount - 1 do
|
||||
local nTime = i == 1 and nBeforeToMaxTime or nAniTime
|
||||
nAllTime = nAllTime + nTime
|
||||
sequence:AppendCallback(function()
|
||||
WwiseAudioMgr:PlaySound("ui_common_levelUp")
|
||||
end)
|
||||
sequence:Append(self._mapNode.rectProgress:DOSizeDelta(Vector2(self.progressBarWidth, heigth), nTime))
|
||||
sequence:AppendCallback(function()
|
||||
self._mapNode.rectProgress.sizeDelta = Vector2(0, heigth)
|
||||
end)
|
||||
end
|
||||
if bMaxLv then
|
||||
local nTime = 1 < nAddCount and nAniTime or nBeforeToMaxTime
|
||||
nAllTime = nAllTime + nTime
|
||||
sequence:AppendCallback(function()
|
||||
WwiseAudioMgr:PlaySound("ui_common_levelUp")
|
||||
end)
|
||||
sequence:Append(self._mapNode.rectProgress:DOSizeDelta(Vector2(self.progressBarWidth, heigth), nTime))
|
||||
elseif mapAfter.nExp > 0 then
|
||||
local nTime = 1 < nAddCount and nZeroToAfterTime or nBeforeToAfterTime
|
||||
nAllTime = nAllTime + nTime
|
||||
sequence:AppendCallback(function()
|
||||
WwiseAudioMgr:PlaySound("ui_common_levelUp")
|
||||
end)
|
||||
local width = self.progressBarWidth * mapAfter.nExp / mapAfter.nMaxExp
|
||||
sequence:Append(self._mapNode.rectProgress:DOSizeDelta(Vector2(width, heigth), nTime))
|
||||
elseif mapAfter.nExp == 0 then
|
||||
local nTime = 1 < nAddCount and nAniTime or nBeforeToMaxTime
|
||||
nAllTime = nAllTime + nTime
|
||||
sequence:AppendCallback(function()
|
||||
WwiseAudioMgr:PlaySound("ui_common_levelUp")
|
||||
end)
|
||||
sequence:Append(self._mapNode.rectProgress:DOSizeDelta(Vector2(self.progressBarWidth, heigth), nTime))
|
||||
sequence:AppendCallback(function()
|
||||
self._mapNode.rectProgress.sizeDelta = Vector2(0, heigth)
|
||||
end)
|
||||
end
|
||||
sequence:SetUpdate(true)
|
||||
nAllTime = nAllTime + 0.2
|
||||
EventManager.Hit(EventId.TemporaryBlockInput, nAllTime)
|
||||
self:AddTimer(1, nAllTime, callback, true, true, true)
|
||||
end
|
||||
function PhoneGiftCtrl:OnBtn_ClickSendGift()
|
||||
if #self.tbItemData == 0 then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Gift_Send_Item_Empty"))
|
||||
return
|
||||
end
|
||||
if self.tbChooseItem == nil or next(self.tbChooseItem) == nil then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Gift_Send_Not_Select"))
|
||||
return
|
||||
end
|
||||
local sendCount = PlayerData.Base:GetSendGiftCount()
|
||||
if sendCount >= tonumber(self.nMaxSendGiftCount) then
|
||||
local tips = ConfigTable.GetUIText("Gift_Send_Day_Count_Max")
|
||||
EventManager.Hit(EventId.OpenMessageBox, tips)
|
||||
return
|
||||
end
|
||||
local sendGift = function()
|
||||
local tbItems = {}
|
||||
local tbSendItems = {}
|
||||
for nIndex, v in pairs(self.tbChooseItem) do
|
||||
if nil == tbItems[v.nTid] then
|
||||
tbItems[v.nTid] = 1
|
||||
else
|
||||
tbItems[v.nTid] = tbItems[v.nTid] + 1
|
||||
end
|
||||
end
|
||||
for nId, nCount in pairs(tbItems) do
|
||||
table.insert(tbSendItems, {Tid = nId, Qty = nCount})
|
||||
end
|
||||
local mapMsg = {
|
||||
CharId = self.nCharId,
|
||||
Items = tbSendItems
|
||||
}
|
||||
local successCallback = function(_, mapMainData)
|
||||
if mapMainData ~= nil then
|
||||
NovaAPI.SetTMPText(self._mapNode.txtGiftCount, orderedFormat(ConfigTable.GetUIText("Phone_Gift_Send_Day_Count_1"), mapMainData.SendGiftCnt, self.nMaxSendGiftCount))
|
||||
end
|
||||
if self.curFavourLevel == self.MaxAffinityLevel then
|
||||
EventManager.Hit("RefreshCharList", true)
|
||||
local mapCharAffinity = ConfigTable.GetData("CharAffinityTemplate", self.nCharId)
|
||||
if mapCharAffinity == nil then
|
||||
return
|
||||
end
|
||||
local templateId = mapCharAffinity.TemplateId
|
||||
local nMaxExp = CacheTable.GetData("_AffinityLevel", templateId)[self.MaxAffinityLevel].NeedExp
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.CharFavourLevelUp, self.nCharId, self.curFavourLevel, self.curFavourLevel, nMaxExp, nMaxExp)
|
||||
end
|
||||
end
|
||||
HttpNetHandler.SendMsg(NetMsgId.Id.char_affinity_gift_send_req, mapMsg, nil, successCallback)
|
||||
end
|
||||
if self.curFavourLevel >= self.MaxAffinityLevel then
|
||||
local TipsTime = LocalData.GetPlayerLocalData("PhoneGiftMax_Tips_Time")
|
||||
local _tipDay = 0
|
||||
if TipsTime ~= nil then
|
||||
_tipDay = tonumber(TipsTime)
|
||||
end
|
||||
local curTimeStamp = CS.ClientManager.Instance.serverTimeStampWithTimeZone
|
||||
local fixedTimeStamp = curTimeStamp + newDayTime * 3600
|
||||
local nYear = tonumber(os.date("!%Y", fixedTimeStamp))
|
||||
local nMonth = tonumber(os.date("!%m", fixedTimeStamp))
|
||||
local nDay = tonumber(os.date("!%d", fixedTimeStamp))
|
||||
local nowD = nYear * 366 + nMonth * 31 + nDay
|
||||
if nowD == _tipDay then
|
||||
sendGift()
|
||||
else
|
||||
local sTip = ConfigTable.GetUIText("PhoneGift_Send_Max_Tip")
|
||||
local isSelectAgain = false
|
||||
local confirmCallback = function()
|
||||
if isSelectAgain then
|
||||
local _curTimeStamp = CS.ClientManager.Instance.serverTimeStampWithTimeZone
|
||||
local _fixedTimeStamp = _curTimeStamp + newDayTime * 3600
|
||||
local _nYear = tonumber(os.date("!%Y", _fixedTimeStamp))
|
||||
local _nMonth = tonumber(os.date("!%m", _fixedTimeStamp))
|
||||
local _nDay = tonumber(os.date("!%d", _fixedTimeStamp))
|
||||
local _nowD = _nYear * 366 + _nMonth * 31 + _nDay
|
||||
LocalData.SetPlayerLocalData("PhoneGiftMax_Tips_Time", tostring(_nowD))
|
||||
end
|
||||
sendGift()
|
||||
end
|
||||
local againCallback = function(isSelect)
|
||||
isSelectAgain = isSelect
|
||||
end
|
||||
local msg = {
|
||||
nType = AllEnum.MessageBox.Char,
|
||||
sContent = sTip,
|
||||
nCharId = self.nCharId,
|
||||
callbackConfirm = confirmCallback,
|
||||
callbackAgain = againCallback
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, msg)
|
||||
end
|
||||
return
|
||||
end
|
||||
sendGift()
|
||||
end
|
||||
function PhoneGiftCtrl:OnBtn_ClickItemGrid(grid)
|
||||
local nInstanceID = grid:GetInstanceID()
|
||||
if not self.tbGridCtrl[nInstanceID] then
|
||||
return
|
||||
end
|
||||
local nIndex = tonumber(grid.name) + 1
|
||||
local mapItem = self.tbItemData[nIndex]
|
||||
local itemCtrl = self.tbGridCtrl[nInstanceID]
|
||||
if self.tbChooseItem ~= nil and self.tbChooseItem[nIndex] ~= nil then
|
||||
itemCtrl:SetMultiSelected_Blue(false)
|
||||
self.tbChooseItem[nIndex] = nil
|
||||
self:OnItemChosen()
|
||||
else
|
||||
local nCount = 0
|
||||
if self.tbChooseItem ~= nil then
|
||||
for nIndex, v in pairs(self.tbChooseItem) do
|
||||
if v ~= nil then
|
||||
nCount = nCount + 1
|
||||
end
|
||||
end
|
||||
end
|
||||
local nSendCount = PlayerData.Base:GetSendGiftCount()
|
||||
if nCount + nSendCount >= self.nMaxSendGiftCount then
|
||||
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Gift_Send_Day_Count_Max"))
|
||||
return
|
||||
end
|
||||
self.tbChooseItem[nIndex] = {
|
||||
nTid = mapItem.nTid,
|
||||
itemCtrl = itemCtrl
|
||||
}
|
||||
itemCtrl:SetMultiSelected_Blue(true)
|
||||
self:OnItemChosen()
|
||||
end
|
||||
end
|
||||
function PhoneGiftCtrl:OnBtnClick_Source(btn, nIdx)
|
||||
if self.tbJumpTo[nIdx] ~= nil then
|
||||
JumpUtil.JumpTo(tonumber(self.tbJumpTo[nIdx]))
|
||||
end
|
||||
end
|
||||
function PhoneGiftCtrl:OnEvent_AffinityChange(charId, curLevel, lastFavourLevel)
|
||||
if self.nCharId == nil or self._panel.nCurTog ~= AllEnum.PhoneTogType.Gift then
|
||||
return
|
||||
end
|
||||
local lastExp = self.curFavourExp
|
||||
local affinityData = PlayerData.Char:GetCharAffinityData(self.nCharId)
|
||||
self.curFavourExp = affinityData.Exp
|
||||
self.curFavourLevel = affinityData.Level
|
||||
EventManager.Hit("RefreshCharList", false)
|
||||
EventManager.Hit(EventId.OpenPanel, PanelId.CharFavourLevelUp, charId, curLevel, lastFavourLevel, self.curFavourExp, lastExp)
|
||||
end
|
||||
function PhoneGiftCtrl:OnEvent_NewDay()
|
||||
local curCount = 0
|
||||
NovaAPI.SetTMPText(self._mapNode.txtGiftCount, orderedFormat(ConfigTable.GetUIText("Phone_Gift_Send_Day_Count_1"), curCount, self.nMaxSendGiftCount))
|
||||
end
|
||||
return PhoneGiftCtrl
|
||||
Reference in New Issue
Block a user