Update - 1.12.0.120

EN: 1.12.0.120
CN: 1.12.0.120
JP: 1.12.0.124
KR: 1.12.0.124
This commit is contained in:
SL1900
2026-06-30 14:30:00 +09:00
parent 061d344bf2
commit 80af235e05
826 changed files with 625145 additions and 81163 deletions
@@ -0,0 +1,423 @@
local GunStormTaskCtrl = class("GunStormTaskCtrl", BaseCtrl)
local JumpUtil = require("Game.Common.Utils.JumpUtil")
local PlayerActivityData = PlayerData.Activity
local TabType = GameEnum.ActivityTaskTabType
local ItemType = GameEnum.itemType
local tbImgDbType = {SizeDelta = 1, FillAmount = 2}
GunStormTaskCtrl._mapNodeConfig = {
TopBarPanel = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
svList_Tab = {
sComponentName = "LoopScrollView"
},
svList_Task = {
sComponentName = "LoopScrollView"
},
svList_GroupReward = {
sComponentName = "LoopScrollView"
},
imgGroupDone = {},
tmpGroupName = {sComponentName = "TMP_Text"},
tmpGroupProgress = {sComponentName = "TMP_Text"},
tmpGroupUndone = {
sComponentName = "TMP_Text",
sLanguageId = "PerActivity_Quest_UnComplete"
},
btnGroupDone = {
sComponentName = "UIButton",
callback = "onBtn_GroupDone"
},
tb_tmpReceived = {
nCount = 3,
sNodeName = "tmpReceived_",
sComponentName = "TMP_Text",
sLanguageId = "PerActivity_Quest_Received"
},
tmpUndone = {
sComponentName = "TMP_Text",
sLanguageId = "PerActivity_Quest_UnComplete"
},
tmpDone = {
sComponentName = "TMP_Text",
sLanguageId = "PerActivity_Quest_Receive"
},
tmpJump = {
sComponentName = "TMP_Text",
sLanguageId = "PerActivity_Quest_Jump"
},
tmpGroupDone = {
sComponentName = "TMP_Text",
sLanguageId = "PerActivity_Quest_Receive"
}
}
GunStormTaskCtrl._mapEventConfig = {
onClick_RewardItem = "onEvent_ClickRewardItem",
onClick_TaskDone = "onEvent_ClickTaskDone",
onClick_TaskJump = "onEvent_ClickTaskJump"
}
GunStormTaskCtrl._mapRedDotConfig = {}
function GunStormTaskCtrl:OnEnable()
local tbParam = self:GetPanelParam()
self.nActivityId = type(tbParam) == "table" and tbParam[1] or nil
self.nCurGroupIndex = tbParam[2] or 1
self.imgDbType = tbParam[3] or tbImgDbType.SizeDelta
if type(self.nActivityId) ~= "number" then
self.nActivityId = nil
end
self:BuildData(self.nActivityId)
self:refresh_Tab()
self:refresh_Task()
self:refresh_Group()
end
function GunStormTaskCtrl:FadeIn()
EventManager.Hit(EventId.SetTransition)
end
function GunStormTaskCtrl:BuildData(nActivityId)
self.tbData = {}
self.tbGroupId = {}
if self.tbData == nil then
self.tbData = {}
end
if self.tbGroupId == nil then
self.tbGroupId = {}
end
if self.nCurGroupIndex == nil then
self.nCurGroupIndex = 1
end
if type(nActivityId) ~= "number" then
return
end
self.ins_ActivityTaskData = PlayerActivityData:GetActivityDataById(nActivityId)
if self.ins_ActivityTaskData == nil then
return
end
local func_Parse_ActivityTaskGroup = function(mapData)
if mapData.ActivityId == nActivityId then
local _nGroupId = mapData.Id
local nIdx = table.indexof(self.tbGroupId, _nGroupId)
if nIdx <= 0 then
local _mapData = {
nGroupId = _nGroupId,
nGroupOrder = mapData.Order,
nTabType = mapData.TaskTabType,
tbGroupRewardId = {},
tbGroupRewardNum = {},
tbTaskId = {},
tbTaskData = {},
nTaskDoneNum = 0,
nTaskOKNum = 0
}
for i = 1, 6 do
local nRewardId = mapData["Reward" .. tostring(i)]
local nRewardNum = mapData["RewardQty" .. tostring(i)]
if 0 < nRewardId and 0 < nRewardNum then
table.insert(_mapData.tbGroupRewardId, nRewardId)
table.insert(_mapData.tbGroupRewardNum, nRewardNum)
end
end
table.insert(self.tbData, _mapData)
table.insert(self.tbGroupId, _nGroupId)
else
local _mapData = self.tbData[nIdx]
_mapData.nTaskDoneNum = 0
_mapData.nTaskOKNum = 0
end
end
end
ForEachTableLine(DataTable.ActivityTaskGroup, func_Parse_ActivityTaskGroup)
local func_Parse_ActivityTask = function(mapData)
local nIdx = table.indexof(self.tbGroupId, mapData.ActivityTaskGroupId)
if 0 < nIdx then
local _mapData = self.tbData[nIdx]
local _tbTaskId = _mapData.tbTaskId
local _tbTaskData = _mapData.tbTaskData
local _nTaskId = mapData.Id
local taskData = self.ins_ActivityTaskData.mapActivityTaskDatas[_nTaskId]
local nIndex = table.indexof(_tbTaskId, _nTaskId)
if nIndex <= 0 then
local _mapTaskData = {
nTaskId = _nTaskId,
nStatus = taskData.nStatus,
sDesc = mapData.Desc,
nRarity = mapData.Rarity,
nJumpTo = mapData.JumpTo,
nCur = taskData.nCur,
nMax = taskData.nMax,
tbTaskRewardId = {},
tbTaskRewardNum = {}
}
if taskData.nStatus == AllEnum.ActQuestStatus.Received then
_mapData.nTaskDoneNum = _mapData.nTaskDoneNum + 1
end
if taskData.nStatus ~= AllEnum.ActQuestStatus.UnComplete then
_mapData.nTaskOKNum = _mapData.nTaskOKNum + 1
end
for i = 1, 2 do
local nRewardId = mapData["Tid" .. tostring(i)]
local nRewardNum = mapData["Qty" .. tostring(i)]
if 0 < nRewardId and 0 < nRewardNum then
table.insert(_mapTaskData.tbTaskRewardId, nRewardId)
table.insert(_mapTaskData.tbTaskRewardNum, nRewardNum)
end
end
table.insert(_tbTaskId, _nTaskId)
table.insert(_tbTaskData, _mapTaskData)
else
local _mapTaskData = _tbTaskData[nIndex]
_mapTaskData.nStatus = taskData.nStatus
_mapTaskData.nCur = taskData.nCur
_mapTaskData.nMax = taskData.nMax
if taskData.nStatus == AllEnum.ActQuestStatus.Received then
_mapData.nTaskDoneNum = _mapData.nTaskDoneNum + 1
end
if taskData.nStatus ~= AllEnum.ActQuestStatus.UnComplete then
_mapData.nTaskOKNum = _mapData.nTaskOKNum + 1
end
end
end
end
ForEachTableLine(DataTable.ActivityTask, func_Parse_ActivityTask)
table.sort(self.tbData, function(a, b)
return a.nGroupOrder < b.nGroupOrder
end)
for i, v in ipairs(self.tbData) do
self.tbGroupId[i] = v.nGroupId
end
for i, mapData in ipairs(self.tbData) do
local tbTaskData = mapData.tbTaskData
table.sort(tbTaskData, function(a, b)
if a.nStatus == b.nStatus then
return a.nTaskId < b.nTaskId
else
return a.nStatus < b.nStatus
end
end)
for ii, vv in ipairs(tbTaskData) do
mapData.tbTaskId[ii] = vv.nTaskId
end
end
end
function GunStormTaskCtrl:refresh_Tab()
self._mapNode.svList_Tab:Init(#self.tbData, self, self.onGridRefresh_Tab, self.onGridBtnClick_Tab)
end
function GunStormTaskCtrl:onGridRefresh_Tab(go)
local nIndex = tonumber(go.name) + 1
local mapData = self.tbData[nIndex]
local mapCfgData_ActivityTaskGroup = ConfigTable.GetData("ActivityTaskGroup", mapData.nGroupId)
local nDone = mapData.nTaskDoneNum
local nTotal = #mapData.tbTaskData
local sProgress = string.format("%s/%s", tostring(nDone), tostring(nTotal))
local tr = go.transform
local objChain = tr:Find("imgChain1")
if #self.tbData == nIndex and objChain then
objChain.gameObject:SetActive(false)
end
self:RefreshScaleOnClick_State(tr, nIndex, mapCfgData_ActivityTaskGroup, sProgress)
local goRedDot = tr:Find("scale_on_click/redDotTab")
local bInActGroup, nActGroupId = PlayerData.Activity:IsActivityInActivityGroup(self.nActivityId)
if bInActGroup == false then
RedDotManager.RegisterNode(RedDotDefine.Activity_Group_Task_Group, {
self.nActivityId,
mapData.nGroupId
}, goRedDot, nil, nil, true)
else
RedDotManager.RegisterNode(RedDotDefine.Activity_Group_Task_Group, {
nActGroupId,
self.nActivityId,
mapData.nGroupId
}, goRedDot, nil, nil, true)
end
end
function GunStormTaskCtrl:onGridBtnClick_Tab(go)
local nIndex = tonumber(go.name) + 1
if self.nCurGroupIndex ~= nIndex then
local canvasGroupOn = go.transform.parent:GetChild(self.nCurGroupIndex - 1):Find("scale_on_click/imgDb_on"):GetComponent("CanvasGroup")
local canvasGroupOff = go.transform.parent:GetChild(self.nCurGroupIndex - 1):Find("scale_on_click/imgDb_off"):GetComponent("CanvasGroup")
NovaAPI.SetCanvasGroupAlpha(canvasGroupOn, 0)
NovaAPI.SetCanvasGroupAlpha(canvasGroupOff, 1)
self.nCurGroupIndex = nIndex
self:refresh_Tab()
self:refresh_Task(true)
self:refresh_Group()
end
end
function GunStormTaskCtrl:RefreshScaleOnClick_State(tr, nIndex, mapCfgData_ActivityTaskGroup, sProgress)
local canvasGroupOn = tr:Find("scale_on_click/imgDb_on"):GetComponent("CanvasGroup")
local canvasGroupOff = tr:Find("scale_on_click/imgDb_off"):GetComponent("CanvasGroup")
if self.nCurGroupIndex == nIndex then
NovaAPI.SetCanvasGroupAlpha(canvasGroupOn, 1)
NovaAPI.SetCanvasGroupAlpha(canvasGroupOff, 0)
NovaAPI.SetTMPText(tr:Find("scale_on_click/imgDb_on/tmpTabName_on"):GetComponent("TMP_Text"), mapCfgData_ActivityTaskGroup.TabText)
NovaAPI.SetTMPText(tr:Find("scale_on_click/imgDb_on/tmpTabProgress_on"):GetComponent("TMP_Text"), sProgress)
else
NovaAPI.SetCanvasGroupAlpha(canvasGroupOn, 0)
NovaAPI.SetCanvasGroupAlpha(canvasGroupOff, 1)
NovaAPI.SetTMPText(tr:Find("scale_on_click/imgDb_off/tmpTabName_off"):GetComponent("TMP_Text"), mapCfgData_ActivityTaskGroup.TabText)
NovaAPI.SetTMPText(tr:Find("scale_on_click/imgDb_off/tmpTabProgress_off"):GetComponent("TMP_Text"), sProgress)
end
end
function GunStormTaskCtrl:refresh_Task(bPlayAnim)
local mapData = self.tbData[self.nCurGroupIndex]
if bPlayAnim == true then
self._mapNode.svList_Task:SetAnim(0.05)
end
self._mapNode.svList_Task:Init(#mapData.tbTaskData, self, self.onGridRefresh_Task, nil)
end
function GunStormTaskCtrl:onGridRefresh_Task(go)
local nIndex = tonumber(go.name) + 1
local mapData = self.tbData[self.nCurGroupIndex]
local mapTask = mapData.tbTaskData[nIndex]
local tr = go.transform:GetChild(0)
for i = 1, 5 do
tr:Find("imgRare_" .. tostring(i)).localScale = i == mapTask.nRarity and Vector3.one or Vector3.zero
end
if self.imgDbType == tbImgDbType.SizeDelta then
self:SetImgBar_SizeDelta(mapTask, tr)
elseif self.imgDbType == tbImgDbType.FillAmount then
self:SetImgBar_FillAmount(mapTask, tr)
end
local nCount = #mapTask.tbTaskRewardId
for i = 1, 2 do
local _tr = tr:Find("goTaskReward" .. tostring(i))
if i <= nCount then
_tr.localScale = Vector3.one
local nId = mapTask.tbTaskRewardId[i]
local mapCfgData_Item = ConfigTable.GetData("Item", nId)
self:SetSprite_FrameColor(_tr:Find("Size/scale_on_click/imgRare").gameObject:GetComponent("Image"), mapCfgData_Item.Rarity, AllEnum.FrameType_New.Item, false)
self:SetPngSprite(_tr:Find("Size/scale_on_click/imgIcon").gameObject:GetComponent("Image"), mapCfgData_Item.Icon)
_tr:Find("Size/scale_on_click/goReceived").localScale = mapTask.nStatus == AllEnum.ActQuestStatus.Received and Vector3.one or Vector3.zero
local nNum = self:SetBigNum(mapTask.tbTaskRewardNum[i])
local sNum = mapCfgData_Item.Type ~= ItemType.Char and mapCfgData_Item.Type ~= ItemType.Disc and "×" .. tostring(nNum) or ""
NovaAPI.SetTMPText(_tr:Find("Size/scale_on_click/tmpCount").gameObject:GetComponent("TMP_Text"), sNum)
_tr:GetChild(0).name = tostring(nId)
_tr:Find("Size/scale_on_click/goTimeLimit").localScale = 0 < mapCfgData_Item.ExpireType and Vector3.one or Vector3.zero
else
_tr.localScale = Vector3.zero
end
end
tr:Find("tmpUndone").localScale = mapTask.nStatus == AllEnum.ActQuestStatus.UnComplete and 0 >= mapTask.nJumpTo and Vector3.one or Vector3.zero
tr:Find("btnDone").localScale = mapTask.nStatus == AllEnum.ActQuestStatus.Complete and Vector3.one or Vector3.zero
tr:Find("btnDone"):GetChild(0).name = tostring(mapTask.nTaskId)
tr:Find("btnJump").localScale = mapTask.nStatus == AllEnum.ActQuestStatus.UnComplete and 0 < mapTask.nJumpTo and Vector3.one or Vector3.zero
tr:Find("btnJump"):GetChild(0).name = tostring(mapTask.nJumpTo)
tr:Find("goDone").localScale = mapTask.nStatus == AllEnum.ActQuestStatus.Received and Vector3.one or Vector3.zero
end
function GunStormTaskCtrl:onEvent_ClickRewardItem(goBtn)
local nItemId = tonumber(goBtn.transform:GetChild(0).name)
if nItemId ~= nil then
UTILS.ClickItemGridWithTips(nItemId, goBtn.transform, true, true, true)
end
end
function GunStormTaskCtrl:onEvent_ClickTaskDone(goBtn)
local nTaskId = tonumber(goBtn.transform:GetChild(0).name)
if nTaskId ~= nil then
local cb = function()
self:BuildData(self.nActivityId)
self:refresh_Tab()
self:refresh_Task(true)
self:refresh_Group()
end
local mapData = self.tbData[self.nCurGroupIndex]
self.ins_ActivityTaskData:SendMsg_ActivityTaskRewardReceiveReq(mapData.nGroupId, 0, mapData.nTabType, cb)
end
end
function GunStormTaskCtrl:onEvent_ClickTaskJump(goBtn)
local nJumpId = tonumber(goBtn.transform:GetChild(0).name)
if nJumpId ~= nil and 0 < nJumpId then
JumpUtil.JumpTo(nJumpId)
end
end
function GunStormTaskCtrl:refresh_Group()
local mapData = self.tbData[self.nCurGroupIndex]
local nGroupId = mapData.nGroupId
local tbTaskData = mapData.tbTaskData
self.bGot = table.indexof(self.ins_ActivityTaskData.tbActivityTaskGroupIds, nGroupId) > 0
local nDone = mapData.nTaskDoneNum
local nOK = mapData.nTaskOKNum
local nTotal = #tbTaskData
local bDone = nOK == nTotal
local mapCfgData_ActivityTaskGroup = ConfigTable.GetData("ActivityTaskGroup", nGroupId)
NovaAPI.SetTMPText(self._mapNode.tmpGroupName, mapCfgData_ActivityTaskGroup.TabText)
NovaAPI.SetTMPText(self._mapNode.tmpGroupProgress, string.format("%s/%s", tostring(nDone), tostring(nTotal)))
self._mapNode.tmpGroupUndone.transform.localScale = bDone == true and Vector3.zero or Vector3.one
self._mapNode.btnGroupDone.transform.localScale = bDone == true and self.bGot == false and Vector3.one or Vector3.zero
self._mapNode.imgGroupDone.transform.localScale = self.bGot == true and Vector3.one or Vector3.zero
self.tbCurGroupRewardId = mapData.tbGroupRewardId
self.tbCurGroupRewardNum = mapData.tbGroupRewardNum
self._mapNode.svList_GroupReward:Init(#self.tbCurGroupRewardId, self, self.onGridRefresh_GroupRewardItem, self.onGridBtnClick_GroupRewardItem)
end
function GunStormTaskCtrl:onGridRefresh_GroupRewardItem(go)
local nIndex = tonumber(go.name) + 1
local mapCfgData_Item = ConfigTable.GetData("Item", self.tbCurGroupRewardId[nIndex])
local tr = go.transform
self:SetSprite_FrameColor(tr:Find("scale_on_click/imgRare").gameObject:GetComponent("Image"), mapCfgData_Item.Rarity, AllEnum.FrameType_New.Item, false)
self:SetPngSprite(tr:Find("scale_on_click/imgIcon").gameObject:GetComponent("Image"), mapCfgData_Item.Icon)
tr:Find("scale_on_click/goReceived").localScale = self.bGot == true and Vector3.one or Vector3.zero
local nNum = self:SetBigNum(self.tbCurGroupRewardNum[nIndex])
local sNum = mapCfgData_Item.Type ~= ItemType.Char and mapCfgData_Item.Type ~= ItemType.Disc and "×" .. tostring(nNum) or ""
NovaAPI.SetTMPText(tr:Find("scale_on_click/tmpCount").gameObject:GetComponent("TMP_Text"), sNum)
tr:Find("scale_on_click/goTimeLimit").localScale = mapCfgData_Item.ExpireType > 0 and Vector3.one or Vector3.zero
end
function GunStormTaskCtrl:onGridBtnClick_GroupRewardItem(go)
local nIndex = tonumber(go.transform.parent.name) + 1
UTILS.ClickItemGridWithTips(self.tbCurGroupRewardId[nIndex], go.transform, true, true, true)
end
function GunStormTaskCtrl:onBtn_GroupDone()
local mapData = self.tbData[self.nCurGroupIndex]
local cb = function()
self:BuildData(self.nActivityId)
self:refresh_Tab()
self:refresh_Group()
end
self.ins_ActivityTaskData:SendMsg_ActivityTaskGroupRewardReceiveReq(mapData.nGroupId, cb)
end
function GunStormTaskCtrl:SetImgBar_SizeDelta(mapTask, tr)
local nCur = mapTask.nCur
local nMax = mapTask.nMax
if nMax <= 0 then
nMax = 0 < nCur and nCur or 1
end
if nCur > nMax then
nCur = nMax
end
if mapTask.nStatus == AllEnum.ActQuestStatus.Complete or mapTask.nStatus == AllEnum.ActQuestStatus.Received then
nCur = nMax
end
local rt = tr:Find("imgProgessDb"):GetComponent("RectTransform")
local nWidth = nCur / nMax * rt.rect.width
if 0 < nWidth and nWidth < 40 then
nWidth = 40
end
tr:Find("imgProgessBar"):GetComponent("RectTransform").sizeDelta = Vector2(nWidth, rt.rect.height)
NovaAPI.SetTMPText(tr:Find("tmpTaskDesc"):GetComponent("TMP_Text"), mapTask.sDesc)
NovaAPI.SetTMPText(tr:Find("tmpTaskProgress"):GetComponent("TMP_Text"), string.format("%s/%s", tostring(nCur), tostring(nMax)))
end
function GunStormTaskCtrl:SetImgBar_FillAmount(mapTask, tr)
local nCur = mapTask.nCur
local nMax = mapTask.nMax
if nMax <= 0 then
nMax = 0 < nCur and nCur or 1
end
if nCur > nMax then
nCur = nMax
end
if mapTask.nStatus == AllEnum.ActQuestStatus.Complete or mapTask.nStatus == AllEnum.ActQuestStatus.Received then
nCur = nMax
end
local imgProgessBar = tr:Find("imgProgessBar"):GetComponent("Image")
NovaAPI.SetImageFillAmount(imgProgessBar, nCur / nMax)
NovaAPI.SetTMPText(tr:Find("tmpTaskDesc"):GetComponent("TMP_Text"), mapTask.sDesc)
NovaAPI.SetTMPText(tr:Find("tmpTaskProgress"):GetComponent("TMP_Text"), string.format("%s/%s", tostring(nCur), tostring(nMax)))
end
function GunStormTaskCtrl:SetBigNum(number)
local nNum = number
if 999999 < nNum then
local nFloor = math.floor(nNum / 100)
local nK = string.format("%.0f", nFloor / 10)
nNum = nK .. "k"
end
return nNum
end
return GunStormTaskCtrl
@@ -0,0 +1,16 @@
local GunStormTaskPanel = class("GunStormTaskPanel", BasePanel)
GunStormTaskPanel._sUIResRootPath = "UI_Activity/"
GunStormTaskPanel._tbDefine = {
{
sPrefabPath = "10109/Task.prefab",
sCtrlName = "Game.UI.ActivityTheme.10109.Task.GunStormTaskCtrl"
}
}
local tbImgDbType = {SizeDelta = 1, FillAmount = 2}
function GunStormTaskPanel:Awake()
local tbParam = self:GetPanelParam()
if type(tbParam) == "table" and tbParam[3] == nil then
tbParam[3] = tbImgDbType.FillAmount
end
end
return GunStormTaskPanel