Major Update - 2.0.0.143

EN: 2.0.0.143
CN: 2.0.0.142
JP: 2.0.0.145
KR: 2.0.0.150
This commit is contained in:
SL1900
2026-10-20 13:00:00 +09:00
parent 4bcada6061
commit 08b515afd9
1773 changed files with 1095195 additions and 65670 deletions
+169 -10
View File
@@ -1,4 +1,12 @@
local AdventureModuleHelper = CS.AdventureModuleHelper
local LocalSettingData = require("GameCore.Data.LocalSettingData")
local ClientManager = CS.ClientManager.Instance
local Time = CS.UnityEngine.Time
local HudSourceGroup = {
None = 0,
Master = 1,
Assist = 2
}
local HudMainCtrl = class("HudMainCtrl", BaseCtrl)
HudMainCtrl._mapNodeConfig = {
Root = {sNodeName = "Root"},
@@ -27,12 +35,16 @@ HudMainCtrl._mapEventConfig = {
CacheInstanceHud = "OnEvent_CacheInstanceHud",
SpecialHudShow = "OnEvent_HuoChuiBossShow",
ToughnessStateChangedForGlobal = "OnEvent_ToughnessStateChangedForGlobal",
ADVENTURE_BATTLE_MONSTER_DECLARE_DIED = "OnEvent_MonsterDeclareDied"
ADVENTURE_BATTLE_MONSTER_DECLARE_DIED = "OnEvent_MonsterDeclareDied",
[EventId.SettingsBattleClose] = "OnEvent_SettingsChanged"
}
function HudMainCtrl:Awake()
end
function HudMainCtrl:OnEnable()
self.resistanceTipInterval = ConfigTable.GetConfigNumber("HudResistanceTipInterval")
self.hudMergeInterval = ConfigTable.GetConfigNumber("HudDamageMergeInterval", true) or 1
self.nHudDamageMode = self:GetHudDamageMode()
self.mergeHuds = {}
self.hudId = 0
self.playerHuds = {}
self.tbPlayerBloodState = {}
@@ -59,15 +71,19 @@ function HudMainCtrl:OnEnable()
self.wordHudPrefab = self:LoadAsset("UI/HUD/WordHud_UI.prefab")
self.npcHudPrefab = self:LoadAsset("UI/HUD/NpcHud.prefab")
self.breakOutHudPrefab = self:LoadAsset("UI/HUD/BreakOutHUDNumber_UI.prefab")
self.damageMergeMasterPrefab = self:LoadAsset("UI/HUD/DamageHUDNumber_UI_Merge_Master.prefab")
self.damageMergeAssistPrefab = self:LoadAsset("UI/HUD/DamageHUDNumber_UI_Merge_Assist.prefab")
self.critDamageHudPrefab_Vampire = self:LoadAsset("UI/HUD/CritDamageHUDNumber_UI_Vampire.prefab")
self.minDamageHUDNumber_Vampire = self:LoadAsset("UI/HUD/MinDamageHUDNumber_UI_Vampire.prefab")
self.damageHudPrefab_Vampire = self:LoadAsset("UI/HUD/DamageHUDNumber_UI_Vampire.prefab")
self.critDamageHudPrefab_Soldier = self:LoadAsset("UI/HUD/CritDamageHUDNumber_UI_Soldier.prefab")
self.toughnessDamageHUD = self:LoadAsset("UI/HUD/ToughnessDamageHUD_UI.prefab")
self.TEST_VISIBLE_HUD_DAMAGE = true
local tbParam = self:GetPanelParam()
self.isVampireInstance = tbParam[1] or false
local bNotAdventureEnter = tbParam[2]
self.jointDrillType = tbParam[3]
self.isSoldierType = tbParam[4] or false
if not bNotAdventureEnter then
self._mapNode.BattleTarget.gameObject:SetActive(true)
end
@@ -80,6 +96,8 @@ function HudMainCtrl:OnDisable()
self.critDamageHudPrefab = nil
self.dotDamageHudPrefab = nil
self.damageHudPrefab = nil
self.damageMergeMasterPrefab = nil
self.damageMergeAssistPrefab = nil
self.minDamageHUDNumber = nil
self.healHudPrefab = nil
self.wordHudPrefab = nil
@@ -88,6 +106,7 @@ function HudMainCtrl:OnDisable()
self.critDamageHudPrefab_Vampire = nil
self.minDamageHUDNumber_Vampire = nil
self.damageHudPrefab_Vampire = nil
self.critDamageHudPrefab_Soldier = nil
self.toughnessDamageHUD = nil
end
function HudMainCtrl:OnDestroy()
@@ -125,6 +144,7 @@ function HudMainCtrl:Clear()
self.tabToughnessEntity = {}
self.tabToughnessEntityVal = {}
self.tabToughnessHudId = {}
self.mergeHuds = {}
end
function HudMainCtrl:MonsterShowChanged(id, showed, nType, nDataId)
local monsterHud = self.monsterHuds[id]
@@ -171,6 +191,75 @@ function HudMainCtrl:MonsterAdvShowChanged(id, showed, nType, nDataId)
self.monsterAdvHuds[id] = nil
end
end
function HudMainCtrl:GetHudDamageMode()
local nMode = LocalSettingData.GetLocalSettingData("HudDamageShow")
return nMode
end
function HudMainCtrl:IsHudDamageClosed()
return self.nHudDamageMode == AllEnum.BattleHudDamageSetting.Close
end
function HudMainCtrl:IsHudDamageMerged()
return self.nHudDamageMode == AllEnum.BattleHudDamageSetting.Merge
end
function HudMainCtrl:GetMergeKey(nEntityId, nFromId)
local nGroup = AdventureModuleHelper.GetHudDamageSourceGroup(nFromId or 0)
if nGroup == HudSourceGroup.None then
return nil, nGroup
end
return string.format("%s_%s", tostring(nEntityId), tostring(nGroup)), nGroup
end
function HudMainCtrl:GetMergePrefab(nGroup)
if nGroup == HudSourceGroup.Assist then
return self.damageMergeAssistPrefab
end
return self.damageMergeMasterPrefab
end
function HudMainCtrl:TryMergeDamage(sKey, nValue, nHudColorIndex)
local tbMerge = self.mergeHuds[sKey]
if tbMerge == nil then
return false
end
local hud = self.numberHuds[tbMerge.nHudId]
if hud == nil then
self.mergeHuds[sKey] = nil
return false
end
if Time.time - tbMerge.nLastTS > self.hudMergeInterval then
self.mergeHuds[sKey] = nil
return false
end
tbMerge.nValue = tbMerge.nValue + nValue
tbMerge.nLastTS = Time.time
AdventureModuleHelper.RefreshHudValue(hud.gameObject, tbMerge.nValue, nHudColorIndex)
return true
end
function HudMainCtrl:RecordMergeHud(sKey, nHudId, nValue)
if sKey == nil then
return
end
self.mergeHuds[sKey] = {
nHudId = nHudId,
nValue = nValue,
nLastTS = Time.time
}
end
function HudMainCtrl:RemoveMergeHudById(nHudId)
if self.mergeHuds == nil then
return
end
for sKey, tbMerge in pairs(self.mergeHuds) do
if tbMerge.nHudId == nHudId then
self.mergeHuds[sKey] = nil
end
end
end
function HudMainCtrl:OnEvent_SettingsChanged()
local nMode = self:GetHudDamageMode()
if nMode ~= self.nHudDamageMode then
self.nHudDamageMode = nMode
self.mergeHuds = {}
end
end
function HudMainCtrl:OnEvent_ShowBossHUD(bossId, nType, showed, nDataId, nBloodType)
self.nBloodType = nBloodType
showed = showed and self.tbBossBloodState[bossId] == true
@@ -217,7 +306,6 @@ function HudMainCtrl:OnEvent_PlayerShowChanged(id, showed)
end
end
function HudMainCtrl:OnEvent_PlayerBloodShow(id, showed)
printLog("HudMainCtrl:OnEvent_PlayerBloodShow id=" .. tostring(id) .. " showed=" .. tostring(showed))
if id == 0 then
return
end
@@ -248,14 +336,28 @@ function HudMainCtrl:OnEvent_HudDestroyed(id)
self:DespawnPrefabInstance(hud, "HUD")
self.numberHuds[id] = nil
end
self:RemoveMergeHudById(id)
end
function HudMainCtrl:OnEvent_HudDamaged(id, value, isCrit, hitDamageConfig, formId, isMark, fromElementType, hudColorIndex)
if self.tabToughnessEntity[id] then
self:SetToughnessValue(id, value)
return
end
if self:IsHudDamageClosed() then
return
end
local sMergeKey, nMergeGroup
if self:IsHudDamageMerged() then
sMergeKey, nMergeGroup = self:GetMergeKey(id, formId)
if sMergeKey ~= nil and self:TryMergeDamage(sMergeKey, value, hudColorIndex or 4) then
self:CheckGreyResistanceTip(id, hudColorIndex)
return
end
end
local hud
if hitDamageConfig and hitDamageConfig.IsDenseType then
if sMergeKey ~= nil then
hud = self:SpawnPrefabInstance(self:GetMergePrefab(nMergeGroup), "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
elseif hitDamageConfig and hitDamageConfig.IsDenseType then
if self.isVampireInstance then
if isCrit then
hud = self:SpawnPrefabInstance(self.critDamageHudPrefab_Vampire, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
@@ -263,7 +365,15 @@ function HudMainCtrl:OnEvent_HudDamaged(id, value, isCrit, hitDamageConfig, form
hud = self:SpawnPrefabInstance(self.minDamageHUDNumber_Vampire, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
end
elseif isCrit then
hud = self:SpawnPrefabInstance(self.critDamageHudPrefab, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
if self.isSoldierType then
hud = self:SpawnPrefabInstance(self.critDamageHudPrefab_Soldier, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
local CritImage_Color2 = hud.gameObject.transform:Find("text/CritImage_Color2").gameObject
local CritImage_Color3 = hud.gameObject.transform:Find("text/CritImage_Color3").gameObject
CritImage_Color2:SetActive(hudColorIndex == 2)
CritImage_Color3:SetActive(hudColorIndex == 3)
else
hud = self:SpawnPrefabInstance(self.critDamageHudPrefab, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
end
else
hud = self:SpawnPrefabInstance(self.minDamageHUDNumber, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
end
@@ -274,7 +384,15 @@ function HudMainCtrl:OnEvent_HudDamaged(id, value, isCrit, hitDamageConfig, form
hud = self:SpawnPrefabInstance(self.damageHudPrefab_Vampire, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
end
elseif isCrit then
hud = self:SpawnPrefabInstance(self.critDamageHudPrefab, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
if self.isSoldierType then
hud = self:SpawnPrefabInstance(self.critDamageHudPrefab_Soldier, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
local CritImage_Color2 = hud.gameObject.transform:Find("text/CritImage_Color2").gameObject
local CritImage_Color3 = hud.gameObject.transform:Find("text/CritImage_Color3").gameObject
CritImage_Color2:SetActive(hudColorIndex == 2)
CritImage_Color3:SetActive(hudColorIndex == 3)
else
hud = self:SpawnPrefabInstance(self.critDamageHudPrefab, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
end
else
hud = self:SpawnPrefabInstance(self.damageHudPrefab, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
end
@@ -291,11 +409,24 @@ function HudMainCtrl:OnEvent_HudDamaged(id, value, isCrit, hitDamageConfig, form
if hudColorIndex ~= nil then
_hudColorIndex = hudColorIndex
end
AdventureModuleHelper.SetHudValue(hud.gameObject, id, self.hudId, value, false, hitDamageConfig, _formId, isCrit, false, _fromElementType, _hudColorIndex)
local hudHitDamage = hitDamageConfig
local bHudCrit = isCrit
if sMergeKey ~= nil then
hudHitDamage = nil
bHudCrit = false
end
AdventureModuleHelper.SetHudValue(hud.gameObject, id, self.hudId, value, false, hudHitDamage, _formId, bHudCrit, false, _fromElementType, _hudColorIndex)
self.numberHuds[self.hudId] = hud
hud.gameObject.transform:SetAsLastSibling()
if hudColorIndex ~= nil and hudColorIndex == 5 and (self.nTypeGreyResistanceTime[id] == nil or self.nTypeGreyResistanceTime[id] + self.resistanceTipInterval <= CS.ClientManager.Instance.serverTimeStampWithTimeZone) then
self.nTypeGreyResistanceTime[id] = CS.ClientManager.Instance.serverTimeStampWithTimeZone
self:RecordMergeHud(sMergeKey, self.hudId, value)
self:CheckGreyResistanceTip(id, hudColorIndex)
end
function HudMainCtrl:CheckGreyResistanceTip(id, hudColorIndex)
if hudColorIndex == nil or hudColorIndex ~= 5 then
return
end
if self.nTypeGreyResistanceTime[id] == nil or self.nTypeGreyResistanceTime[id] + self.resistanceTipInterval <= ClientManager.serverTimeStampWithTimeZone then
self.nTypeGreyResistanceTime[id] = ClientManager.serverTimeStampWithTimeZone
self:OnEvent_HudDefenced(id, 3)
end
end
@@ -304,7 +435,22 @@ function HudMainCtrl:OnEvent_HudDotDamage(id, value, isCrit, hitDamageConfig, fo
self:SetToughnessValue(id, value)
return
end
local hud = self:SpawnPrefabInstance(self.dotDamageHudPrefab, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
if self:IsHudDamageClosed() then
return
end
local sMergeKey, nMergeGroup
if self:IsHudDamageMerged() then
sMergeKey, nMergeGroup = self:GetMergeKey(id, formId)
if sMergeKey ~= nil and self:TryMergeDamage(sMergeKey, value, hudColorIndex or 4) then
return
end
end
local bMerge = sMergeKey ~= nil
local hudPrefab = self.dotDamageHudPrefab
if bMerge then
hudPrefab = self:GetMergePrefab(nMergeGroup)
end
local hud = self:SpawnPrefabInstance(hudPrefab, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
self.hudId = self.hudId + 1
local _formId = formId
if formId == nil then
@@ -314,11 +460,21 @@ function HudMainCtrl:OnEvent_HudDotDamage(id, value, isCrit, hitDamageConfig, fo
if fromElementType ~= nil then
_fromElementType = fromElementType
end
AdventureModuleHelper.SetHudValue(hud.gameObject, id, self.hudId, value, false, hitDamageConfig, _formId, isCrit, true, _fromElementType, hudColorIndex)
local hudHitDamage = hitDamageConfig
local bHudCrit = isCrit
if bMerge then
hudHitDamage = nil
bHudCrit = false
end
AdventureModuleHelper.SetHudValue(hud.gameObject, id, self.hudId, value, false, hudHitDamage, _formId, bHudCrit, not bMerge, _fromElementType, hudColorIndex)
self.numberHuds[self.hudId] = hud
hud.gameObject.transform:SetAsLastSibling()
self:RecordMergeHud(sMergeKey, self.hudId, value)
end
function HudMainCtrl:OnEvent_HudHealed(id, value)
if self:IsHudDamageClosed() then
return
end
local hud = self:SpawnPrefabInstance(self.healHudPrefab, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageNumberRoot)
self.hudId = self.hudId + 1
AdventureModuleHelper.SetHudValue(hud.gameObject, id, self.hudId, value, true, nil, 0, false, false)
@@ -335,6 +491,9 @@ function HudMainCtrl:OnEvent_HudBreakOutScore(id, value)
hud.gameObject.transform:SetAsLastSibling()
end
function HudMainCtrl:OnEvent_HudDefenced(id, valueType)
if self:IsHudDamageClosed() then
return
end
local nWordType
local hud = self:SpawnPrefabInstance(self.wordHudPrefab, "Game.UI.Hud.HudNumberCtrl", "HUD", self._mapNode.DamageWordRoot)
self.hudId = self.hudId + 1