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
@@ -63,15 +63,15 @@ function DailyInstanceLevel:OnEvent_LevelResult(tbStar, bAbandon)
nStarCount = nStarCount + 1
end
end
local callback = function(tbSelectReward, tbFirstReward, nExp, mapChangeInfo)
local callback = function(tbSelectReward, tbFirstReward, tbDoubleItems, nExp, mapChangeInfo)
local waitCallback = function()
NovaAPI.InputEnable()
if 0 < nStar then
self:PlaySuccessPerform(tbFirstReward, tbSelectReward, nExp, tbStar, mapChangeInfo)
self:PlaySuccessPerform(tbFirstReward, tbSelectReward, tbDoubleItems, nExp, tbStar, mapChangeInfo)
else
EventManager.Hit(EventId.ClosePanel, PanelId.BtnTips)
local sLarge, sSmall = "", ""
EventManager.Hit(EventId.OpenPanel, PanelId.DailyInstanceResultPanel, false, tbStar, {}, {}, {}, 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, self.tbCharDamage)
EventManager.Hit(EventId.OpenPanel, PanelId.DailyInstanceResultPanel, false, tbStar, {}, {}, {}, 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo or {}, self.tbCharDamage, {})
self.parent:LevelEnd()
end
end
@@ -124,7 +124,7 @@ function DailyInstanceLevel:UnBindEvent()
end
end
end
function DailyInstanceLevel:PlaySuccessPerform(FirstRewardItems, tbSelectReward, nExp, tbStar, mapChangeInfo)
function DailyInstanceLevel:PlaySuccessPerform(FirstRewardItems, tbSelectReward, tbDoubleItems, nExp, tbStar, mapChangeInfo)
local func_SettlementFinish = function(bSuccess)
end
local tbChar = self.tbCharId
@@ -143,7 +143,7 @@ function DailyInstanceLevel:PlaySuccessPerform(FirstRewardItems, tbSelectReward,
local function openBattleResultPanel()
EventManager.Remove("SettlementPerformLoadFinish", self, openBattleResultPanel)
local sLarge, sSmall = "", ""
EventManager.Hit(EventId.OpenPanel, PanelId.DailyInstanceResultPanel, true, tbStar, tbSelectReward or {}, FirstRewardItems or {}, {}, nExp or 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, self.tbCharDamage)
EventManager.Hit(EventId.OpenPanel, PanelId.DailyInstanceResultPanel, true, tbStar, tbSelectReward or {}, FirstRewardItems or {}, {}, nExp or 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, self.tbCharDamage, tbDoubleItems or {})
self.bSettle = false
self.parent:LevelEnd()
self:UnBindEvent()
@@ -63,15 +63,15 @@ function EquipmentInstanceLevel:OnEvent_LevelResult(tbStar, bAbandon)
nStarCount = nStarCount + 1
end
end
local callback = function(tbStarReward, tbFirstReward, tbSurpriseItems, nExp, mapChangeInfo)
local callback = function(tbStarReward, tbFirstReward, tbSurpriseItems, tbDoubleItems, nExp, mapChangeInfo)
local waitCallback = function()
NovaAPI.InputEnable()
if 0 < nStar then
self:PlaySuccessPerform(tbFirstReward, tbStarReward, tbSurpriseItems, nExp, tbStar, mapChangeInfo)
self:PlaySuccessPerform(tbFirstReward, tbStarReward, tbSurpriseItems, tbDoubleItems, nExp, tbStar, mapChangeInfo)
else
EventManager.Hit(EventId.ClosePanel, PanelId.BtnTips)
local sLarge, sSmall = "", ""
EventManager.Hit(EventId.OpenPanel, PanelId.EquipmentInstanceResult, false, tbStar, {}, {}, {}, 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, {}, self.tbCharDamage or {})
EventManager.Hit(EventId.OpenPanel, PanelId.EquipmentInstanceResult, false, tbStar, {}, {}, {}, 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, {}, {}, self.tbCharDamage or {})
self.parent:LevelEnd()
end
end
@@ -124,7 +124,7 @@ function EquipmentInstanceLevel:UnBindEvent()
end
end
end
function EquipmentInstanceLevel:PlaySuccessPerform(FirstRewardItems, tbStarReward, tbSurpriseItems, nExp, tbStar, mapChangeInfo)
function EquipmentInstanceLevel:PlaySuccessPerform(FirstRewardItems, tbStarReward, tbSurpriseItems, tbDoubleItems, nExp, tbStar, mapChangeInfo)
local func_SettlementFinish = function(bSuccess)
end
local tbChar = self.tbCharId
@@ -143,7 +143,7 @@ function EquipmentInstanceLevel:PlaySuccessPerform(FirstRewardItems, tbStarRewar
local function openBattleResultPanel()
EventManager.Remove("SettlementPerformLoadFinish", self, openBattleResultPanel)
local sLarge, sSmall = "", ""
EventManager.Hit(EventId.OpenPanel, PanelId.EquipmentInstanceResult, true, tbStar, tbStarReward or {}, FirstRewardItems or {}, {}, nExp or 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, tbSurpriseItems or {}, self.tbCharDamage or {})
EventManager.Hit(EventId.OpenPanel, PanelId.EquipmentInstanceResult, true, tbStar, tbStarReward or {}, FirstRewardItems or {}, {}, nExp or 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, tbSurpriseItems or {}, tbDoubleItems or {}, self.tbCharDamage or {})
self.bSettle = false
self.parent:LevelEnd()
self:UnBindEvent()
@@ -11,6 +11,7 @@ local mapEventConfig = {
BattlePause = "OnEvent_Pause",
JointDrill_StartTiming = "OnEvent_BattleStart",
JointDrill_MonsterSpawn = "OnEvent_MonsterSpawn",
JointDrill_WaitLvChange = "OnEvent_WaitLvChange",
JointDrill_BattleLvsToggle = "OnEvent_BattleLvsToggle",
ADVENTURE_LEVEL_UNLOAD_COMPLETE = "OnEvent_UnloadComplete",
JointDrill_Gameplay_Time = "OnEvent_JointDrill_Gameplay_Time",
@@ -38,6 +39,8 @@ function JointDrillLevelData_1:Init(parent, nLevelId, nBuildId, nCurLevel, nLeve
self.mapFloor = nil
self.nGameTime = self.parent:GetGameTime()
self.bInResult = false
self.bInProcess = false
self.nBossId = 0
if not self.bChangeLevel then
self.nDamageValue = 0
self.tbCharDamage = {}
@@ -555,12 +558,25 @@ function JointDrillLevelData_1:OnEvent_MonsterSpawn(nBossId)
self.parent:JointDrillSync(self.nCurLevel, self.nGameTime, self.nDamageValue, nHp, nHpMax, data)
self.mapInitTempData = clone(self.mapTempData)
end
function JointDrillLevelData_1:OnEvent_WaitLvChange()
if self.bInProcess then
return
end
self.bInProcess = true
self.bChangeLevel = true
self.bRestart = false
EventManager.Hit("CloseJointDrillPause")
EventManager.Hit(EventId.CloseMessageBox)
PanelManager.InputDisable()
EventManager.Hit(EventId.BlockInput, true)
end
function JointDrillLevelData_1:OnEvent_BattleLvsToggle(nBattleLv, nTotalTime, nDamageValue)
if nBattleLv < self.nCurLevel then
return
end
self.bChangeLevel = true
self.bRestart = false
if not self.bChangeLevel then
return
end
nTotalTime = math.min(self.mapLevel.BattleTime * 1000, self:GetSyncGameTime(nTotalTime))
self.nCurLevel = nBattleLv + 1
self.nDamageValue = self.nDamageValue + nDamageValue
@@ -568,14 +584,15 @@ function JointDrillLevelData_1:OnEvent_BattleLvsToggle(nBattleLv, nTotalTime, nD
local bBoss = self.mapFloor.FloorType == GameEnum.JointDrillFloorType.Boss
self:CacheTempData(true, bBoss, false, true, true)
self.parent:AddJointDrillTeam(self.mapBuildData, nTotalTime, self.nDamageValue)
PanelManager.InputDisable()
self.parent:StopRecord()
local func = function()
local syncCallback = function()
PanelManager.InputEnable()
EventManager.Hit("CloseJointDrillPause")
EventManager.Hit(EventId.CloseMessageBox)
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
EventManager.Hit(EventId.BlockInput, false)
AdventureModuleHelper.LevelStateChanged(false)
end
cs_coroutine.start(wait)
@@ -607,7 +624,9 @@ function JointDrillLevelData_1:OnEvent_JointDrill_Gameplay_Time(nTime)
self:SyncGameTime(nTime)
end
function JointDrillLevelData_1:OnEvent_Pause()
EventManager.Hit("OpenJointDrillPause", self.nLevelId, self.tbCharId, self.nGameTime)
if self.nBossId ~= 0 then
EventManager.Hit("OpenJointDrillPause", self.nLevelId, self.tbCharId, self.nGameTime)
end
end
function JointDrillLevelData_1:OnEvent_DamageValue(nDamageValue)
self.nDamageValue = self.nDamageValue + nDamageValue
@@ -617,6 +636,10 @@ function JointDrillLevelData_1:OnEvent_GiveUpBattle()
self:CheckJointDrillGameOver()
end
function JointDrillLevelData_1:OnEvent_RestartJointDrill()
if self.bInProcess then
return
end
self.bInProcess = true
self.bRestart = true
self.bChangeLevel = false
self.parent:SetGameTime(0)
@@ -629,6 +652,7 @@ function JointDrillLevelData_1:OnEvent_RestartJointDrill()
EventManager.Hit("JointDrillReset")
end
function JointDrillLevelData_1:OnEvent_RetreatJointDrill()
self.bInProcess = true
local callback = function()
local sRecord = self.parent:EncodeTempDataJson(self.mapInitTempData)
self.parent:ResetRecord(sRecord)
@@ -102,6 +102,10 @@ function RegionBossBattleLevel:SettleRegionBoss(isWin)
for i, v in ipairs(mapMsgData.AwardItems) do
table.insert(CacheRewardTab, v)
end
for i, v in ipairs(mapMsgData.DoubleItems) do
v.rewardType = AllEnum.RewardType.Double
table.insert(CacheRewardTab, v)
end
if isWin then
self:PlaySuccessPerform(ConfigTable.GetData("RegionBossLevel", self.nLevelId).FloorId, self.nBuildId, nExp, CacheRewardTab, mapMsgData.Change, false)
else
@@ -83,7 +83,6 @@ function ScoreBossLevel:CalCharFixedEffect(nCharId, bMainChar, tbDiscId)
return stActorInfo
end
function ScoreBossLevel:OnEvent_LoadLevelRefresh()
EventManager.Hit("ResetBossHUD")
self.isCanPause = true
local mapAllEft, mapDiscEft, mapNoteEffect, tbNoteInfo = PlayerData.Build:GetBuildAllEft(self.mapBuildData.nBuildId)
safe_call_cs_func(CS.AdventureModuleHelper.SetNoteInfo, tbNoteInfo)
@@ -159,6 +158,7 @@ function ScoreBossLevel:OnEvent_HpChanged(hp, hpMax)
end
if hp > self.BossCurLvMinHp then
self.BossCurLvMinHp = hp
return
end
if hp <= self.BossCurLvMinHp then
self.BossCurLvMinHp = hp
@@ -182,11 +182,11 @@ function ScoreBossLevel:OnEvent_BossRushMonsterLevelChanged(oldLevel, battleLeve
end
end
self.parent:HPLevelChanged()
self.isDontChangeHp = false
end
function ScoreBossLevel:OnEvent_BossRushMonsterBattleAttrChanged()
local healthInfo = CS.AdventureModuleHelper.GetEntityHealthInfo(self.BossId)
self.BossMaxHp = healthInfo ~= nil and healthInfo.hpMax or 0
self.isDontChangeHp = false
end
function ScoreBossLevel:ScoreBossResultTime(nTime)
self.nTime = nTime
@@ -63,15 +63,15 @@ function SkillInstanceLevel:OnEvent_LevelResult(tbStar, bAbandon)
nStarCount = nStarCount + 1
end
end
local callback = function(tbStarReward, tbFirstReward, tbThreeStarItems, tbSurpriseItems, nExp, mapChangeInfo)
local callback = function(tbStarReward, tbFirstReward, tbThreeStarItems, tbSurpriseItems, tbDoubleItems, nExp, mapChangeInfo)
local waitCallback = function()
NovaAPI.InputEnable()
if 0 < nStar then
self:PlaySuccessPerform(tbFirstReward, tbStarReward, tbThreeStarItems, tbSurpriseItems, nExp, tbStar, mapChangeInfo)
self:PlaySuccessPerform(tbFirstReward, tbStarReward, tbThreeStarItems, tbSurpriseItems, tbDoubleItems, nExp, tbStar, mapChangeInfo)
else
EventManager.Hit(EventId.ClosePanel, PanelId.BtnTips)
local sLarge, sSmall = "", ""
EventManager.Hit(EventId.OpenPanel, PanelId.SkillInstanceResult, false, tbStar, {}, {}, {}, 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, {}, self.tbCharDamage)
EventManager.Hit(EventId.OpenPanel, PanelId.SkillInstanceResult, false, tbStar, {}, {}, {}, 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, {}, {}, self.tbCharDamage)
self.parent:LevelEnd()
end
end
@@ -124,7 +124,7 @@ function SkillInstanceLevel:UnBindEvent()
end
end
end
function SkillInstanceLevel:PlaySuccessPerform(FirstRewardItems, tbStarReward, tbThreeStarItems, tbSurpriseItems, nExp, tbStar, mapChangeInfo)
function SkillInstanceLevel:PlaySuccessPerform(FirstRewardItems, tbStarReward, tbThreeStarItems, tbSurpriseItems, tbDoubleItems, nExp, tbStar, mapChangeInfo)
local func_SettlementFinish = function(bSuccess)
end
local tbChar = self.tbCharId
@@ -143,7 +143,7 @@ function SkillInstanceLevel:PlaySuccessPerform(FirstRewardItems, tbStarReward, t
local function openBattleResultPanel()
EventManager.Remove("SettlementPerformLoadFinish", self, openBattleResultPanel)
local sLarge, sSmall = "", ""
EventManager.Hit(EventId.OpenPanel, PanelId.SkillInstanceResult, true, tbStar, tbStarReward or {}, FirstRewardItems or {}, tbThreeStarItems or {}, nExp or 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, tbSurpriseItems or {}, self.tbCharDamage)
EventManager.Hit(EventId.OpenPanel, PanelId.SkillInstanceResult, true, tbStar, tbStarReward or {}, FirstRewardItems or {}, tbThreeStarItems or {}, nExp or 0, false, sLarge, sSmall, self.nLevelId, self.tbCharId, mapChangeInfo, tbSurpriseItems or {}, tbDoubleItems or {}, self.tbCharDamage)
self.bSettle = false
self.parent:LevelEnd()
self:UnBindEvent()
+117 -9
View File
@@ -9,6 +9,7 @@ GameEnum.monsterEpicType = {
BOSSRUSH = 7,
JOINTDRILLBOSS = 8
}
GameEnum.subBossType = {NORMAL = 5, HUNTBOSS = 4}
GameEnum.actorMovType = {
STATIC = 1,
WALK = 2,
@@ -73,6 +74,7 @@ GameEnum.roguelikeLevelStyle = {
Main_7_1 = 20,
Main_7_2 = 21,
Main_8_1 = 22,
Main_8_2 = 23,
Roguelike_non = 101,
Roguelike_miniboss = 102,
Roguelike_shilaimu = 103,
@@ -121,6 +123,7 @@ GameEnum.roguelikeLevelStyle = {
StoryActivity_10 = 446,
StoryActivity_11 = 451,
StoryActivity_12 = 456,
StoryActivity_12_Boss01 = 457,
StoryActivity_13 = 461,
StoryActivity_14 = 466,
Training = 901
@@ -250,7 +253,8 @@ GameEnum.worldLevelType = {
BrickBreaker = 21,
TowerDefense = 22,
Tutorial = 23,
ActivityStory = 24
ActivityStory = 24,
TraceHunt = 25
}
GameEnum.dynamicLevelType = {
JointDrill = 1,
@@ -258,7 +262,9 @@ GameEnum.dynamicLevelType = {
Trial = 3,
Tutorial = 4,
JointDrill_2 = 5,
BattlePresetTeamEditor = 6
BattlePresetTeamEditor = 6,
SoldierChess = 7,
TraceHunt = 8
}
GameEnum.mainLineType = {Mainline = 1, Branchline = 2}
GameEnum.hurtFlashTintType = {
@@ -519,7 +525,9 @@ GameEnum.itemType = {
Title = 12,
Honor = 13,
HeadItem = 14,
LevelHonor = 15
LevelHonor = 15,
TraceRequest = 16,
HuntPermit = 17
}
GameEnum.expireType = {
ExpireMin = 1,
@@ -746,7 +754,13 @@ GameEnum.activityQuestCompleteCond = {
ActivityGoldenSpyAccUseSkill = 148,
ActivityPenguinCardClearScore = 149,
ActivityPenguinCardClearStar = 150,
ActivityPenguinCardTotalScore = 151
ActivityPenguinCardTotalScore = 151,
ActivityIceCreamCumulativeOrder = 152,
ActivityIceCreamSingleOrder = 153,
ActivityIceCreamCumulativeScore = 154,
ActivityIceCreamLevelPassed = 155,
ActivityIceCreamCumulativeUseItem = 156,
ActivityIceCreamCumulativeCombo = 157
}
GameEnum.chatCond = {
CharacterAcquire = 5,
@@ -1443,7 +1457,8 @@ GameEnum.stateAttributeType = {
UNPARALLELED = 38,
INDEFENSE = 39,
DODGE = 40,
MAX = 41
TOUGHNESS_BORKEN = 41,
MAX = 42
}
GameEnum.playerAttributeType = {
ADD_ENERGY = 0,
@@ -1847,7 +1862,10 @@ GameEnum.activityType = {
ThrowGift = 19,
GoldenSpy = 20,
Double = 21,
HistoryStory = 22
HistoryStory = 22,
IceCream = 23,
FollowSocialMedia = 24,
Soldier = 25
}
GameEnum.activityOpenType = {
None = 0,
@@ -2281,7 +2299,8 @@ GameEnum.OpenFuncType = {
BattlePass = 28,
NickNameReset = 29,
WeeklyQuest = 30,
QuestNewbie = 31
QuestNewbie = 31,
TraceHunt = 32
}
GameEnum.TowerQuestType = {Core = 1, Normal = 2}
GameEnum.poolType = {Elite = 1, Boss = 2}
@@ -2525,7 +2544,9 @@ GameEnum.activityThemeType = {
Viewfinder_10107 = 11,
BreakOut_30102 = 12,
Swim_11100 = 13,
Tech_10108 = 14
Tech_10108 = 14,
GunStorm_10109 = 15,
Summer_20103 = 16
}
GameEnum.ActivityLevelType = {
Explore = 1,
@@ -2809,7 +2830,8 @@ GameEnum.GoldenSpyBuffEffect = {
AddHookRadius = 7,
AddHookK = 8,
AddTimeInFloor = 9,
LabelAddPercentage = 10
LabelAddPercentage = 10,
AddBuffRefreshCount = 11
}
GameEnum.GoldenSpyBuffQty = {}
GameEnum.GoldenSpyBuffType = {
@@ -2843,4 +2865,90 @@ GameEnum.CharEnergyCostSpeed = {
Mid = 3,
Low = 4
}
GameEnum.EnterMethod = {Default = 0, JumpFormation = 1}
GameEnum.MainlineMemoryNodeType = {None = 0, DiscType = 1}
GameEnum.ChessRarity = {
White = 1,
Green = 2,
Blue = 3,
Purple = 4,
Gold = 5,
Color = 6
}
GameEnum.ChessType = {
Balance = 0,
Vanguard = 1,
Support = 2
}
GameEnum.ChessboardType = {Front = 0, Back = 1}
GameEnum.ChessAssistOnStageType = {
Front = 0,
Back = 1,
NotAppearing = 2
}
GameEnum.ChessPartnerType = {
DiGuoWeiDui = 0,
LianHeZhongYe = 1,
HuiFengJuLeBu = 2
}
GameEnum.ActivityIceCreamLevelType = {
Teaching = 1,
Common = 2,
Advanced = 3,
Infinite = 4
}
GameEnum.IceBuffEffect = {
Time = 1,
Patience = 2,
Score = 3,
HP = 4,
Order = 5
}
GameEnum.iceChar = {
NormalChar = 1,
Low = 2,
SpecialChar = 3
}
GameEnum.iceOption = {
Cone = 1,
IceBall = 2,
Topping = 3
}
GameEnum.soldierNodeType = {
Event = 1,
Battle = 2,
BossBattle = 3
}
GameEnum.soldierEventType = {BattleOptions = 1}
GameEnum.soldierLevelName = {
Simple = 1,
Medium = 2,
Difficult = 3,
Nightmare = 4
}
GameEnum.soldierCardUnloadType = {
GradeChallengeClear = 1,
FromNodeOnwards = 2,
AtStage = 3,
FromStageOnwards = 4
}
GameEnum.TraceHuntLogType = {
TraceStart = 1,
Tracing = 2,
TraceBeforeEnd = 3,
TraceEnd = 4,
TraceInterrupt = 5,
TraceRestart = 6,
HuntBeforeStart = 7,
HuntStart = 8,
HuntPlayer = 9,
HuntNPC = 10,
HuntPlayerFatal = 11,
HuntNPCFatal = 12,
HuntEnd = 13,
Settlement = 14,
HuntAfterStart = 15,
HuntInterrupt = 16
}
GameEnum.TDLevelGamePlayType = {None = 1, Hot = 2}
return GameEnum
+9
View File
@@ -14,6 +14,14 @@ GameTableDefine.CommonTable = {
"Desc"
}
},
ActivityDouble = {
Key = true,
Lang = {"DesText"}
},
ActivityDoubleQuest = {
Key = true,
Lang = {"Desc"}
},
ActivityGoods = {
Key = true,
Lang = {"Name", "Desc"}
@@ -697,6 +705,7 @@ GameTableDefine.CommonTable = {
Monster = {Key = true},
MonsterActionBranch = {Key = true},
MonsterAI = {Key = true},
MonsterAttackAjust = {},
MonsterAttributeContact = {Key = true},
MonsterBornGroup = {},
MonsterGroup = {Key = true},
+1 -1
View File
@@ -74,7 +74,7 @@ function JumpUtil.JumpTo(jumpId, ...)
elseif nType == GameEnum.jumpType.DailyInstanceLevel then
local nHard = mapJumpTo.Param[1]
local nDailyType = mapJumpTo.Param[2]
if nDailyType == nil or nDailyType == 0 then
if nDailyType == nil then
EventManager.Hit(EventId.OpenPanel, PanelId.LevelMenu, 3)
else
EventManager.Hit(EventId.OpenPanel, PanelId.DailyInstanceLevelSelect, nHard, nDailyType, true)
@@ -0,0 +1,177 @@
local DoubleDropActQuestCtrl = class("DoubleDropActQuestCtrl", BaseCtrl)
DoubleDropActQuestCtrl._mapNodeConfig = {
goBlur = {
sNodeName = "t_fullscreen_blur_blue"
},
aniBlur = {
sNodeName = "t_fullscreen_blur_blue",
sComponentName = "Animator"
},
goRoot = {
sNodeName = "----SafeAreaRoot----",
sComponentName = "Transform"
},
btnFullClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
aniWindow = {sNodeName = "questPopup", sComponentName = "Animator"},
txtWindowTitle = {
sComponentName = "TMP_Text",
sLanguageId = "Double_Drops_Quest_Reward_Title"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
sv = {
sComponentName = "LoopScrollView"
},
btn_GetAllReward = {
sComponentName = "UIButton",
callback = "OnBtnClick_GetAllReward"
},
btn_GetAllReward_None = {
sComponentName = "UIButton",
callback = "OnBtnClick_GetAllReward"
},
txt_GetAll = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "Double_Drops_Quest_Reward_Receive"
}
}
DoubleDropActQuestCtrl._mapEventConfig = {}
DoubleDropActQuestCtrl._mapRedDotConfig = {}
local nQuestItemWidth = 756
local nMinWidth = 32
function DoubleDropActQuestCtrl:ShowQuestList()
self.actData = PlayerData.Activity:GetActivityDataById(self.nActId)
if self.actData == nil then
return
end
self.tbItemCtrl = {}
self:RefreshQuestList()
self._mapNode.goRoot.gameObject:SetActive(false)
self._mapNode.goBlur:SetActive(true)
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
self._mapNode.goRoot.gameObject:SetActive(true)
self._mapNode.aniWindow:Play("t_window_04_t_in")
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
cs_coroutine.start(wait)
end
function DoubleDropActQuestCtrl:RefreshQuestList()
self.tbQuest = self.actData:GetAllQuests()
table.sort(self.tbQuest, function(a, b)
if a.nStatus == b.nStatus then
return a.nId < b.nId
end
return a.nStatus < b.nStatus
end)
self._mapNode.sv:SetAnim(0.08)
self._mapNode.sv:Init(#self.tbQuest, self, self.OnGridQuestRefresh, nil, false)
self.bHasComQuest = false
for _, v in ipairs(self.tbQuest) do
if v.nStatus == AllEnum.ActQuestStatus.Complete then
self.bHasComQuest = true
break
end
end
self._mapNode.btn_GetAllReward.gameObject:SetActive(self.bHasComQuest)
self._mapNode.btn_GetAllReward_None.gameObject:SetActive(not self.bHasComQuest)
end
function DoubleDropActQuestCtrl:OnGridQuestRefresh(goGrid, gridIndex)
local nIndex = gridIndex + 1
local instanceId = goGrid:GetInstanceID()
local questData = self.tbQuest[nIndex]
local goRoot = goGrid.transform:Find("btnGrid/AnimRoot/Root")
local img_Received = goRoot.transform:Find("img_Received")
local btn_item = goRoot.transform:Find("btn_item"):GetComponent("UIButton")
local item = goRoot.transform:Find("btn_item/AnimRoot/item")
if self.tbItemCtrl[instanceId] == nil then
self.tbItemCtrl[instanceId] = self:BindCtrlByNode(item, "Game.UI.TemplateEx.TemplateItemCtrl")
end
local txtTarget = goRoot.transform:Find("txt_target"):GetComponent("TMP_Text")
local txt_com1 = goRoot.transform:Find("txt_com1"):GetComponent("TMP_Text")
local txt_com2 = goRoot.transform:Find("txt_com2"):GetComponent("TMP_Text")
local bar = goRoot.transform:Find("imgBarBg/rtBarFill/imgMainBarFill"):GetComponent("RectTransform")
local img_state1 = goRoot.transform:Find("img_state1").gameObject
local img_state2 = goRoot.transform:Find("img_state2").gameObject
local img_state3 = goRoot.transform:Find("img_state3").gameObject
img_state1:SetActive(questData.nStatus == AllEnum.ActQuestStatus.Complete)
img_state2:SetActive(questData.nStatus == AllEnum.ActQuestStatus.Received)
img_state3:SetActive(questData.nStatus == AllEnum.ActQuestStatus.UnComplete)
img_Received.gameObject:SetActive(questData.nStatus == AllEnum.ActQuestStatus.Received)
btn_item.onClick:RemoveAllListeners()
local questConfig = ConfigTable.GetData("ActivityDoubleQuest", questData.nId)
if questConfig == nil then
return
end
local itemId = questConfig.ItemId
local itemCount = questConfig.ItemQty
btn_item.onClick:AddListener(function()
UTILS.ClickItemGridWithTips(itemId, btn_item.transform, true, true, false)
end)
self.tbItemCtrl[instanceId]:SetItem(itemId, nil, itemCount, false, questData.nStatus == AllEnum.ActQuestStatus.Received, false, false)
NovaAPI.SetTMPText(txtTarget, questConfig.Desc)
if questData.nStatus == AllEnum.ActQuestStatus.UnComplete then
NovaAPI.SetTMPText(txt_com1, tostring(questData.progress.Cur) .. "/" .. tostring(questData.progress.Max))
NovaAPI.SetTMPText(txt_com2, tostring(questData.progress.Cur) .. "/" .. tostring(questData.progress.Max))
local nWidth = 0
if questData.progress.Cur > 0 then
nWidth = math.max(nQuestItemWidth * (questData.progress.Cur / questData.progress.Max), nMinWidth)
end
bar.sizeDelta = Vector2(nWidth, bar.sizeDelta.y)
else
NovaAPI.SetTMPText(txt_com1, ConfigTable.GetUIText("BdConvert_QuestFinish"))
NovaAPI.SetTMPText(txt_com2, ConfigTable.GetUIText("BdConvert_QuestFinish"))
bar.sizeDelta = Vector2(nQuestItemWidth, bar.sizeDelta.y)
end
txt_com1.gameObject:SetActive(questData.nStatus ~= AllEnum.ActQuestStatus.Received)
txt_com2.gameObject:SetActive(questData.nStatus == AllEnum.ActQuestStatus.Received)
end
function DoubleDropActQuestCtrl:Awake()
end
function DoubleDropActQuestCtrl:OnEnable()
self.tbItemCtrl = {}
local param = self:GetPanelParam()
if type(param) == "table" then
self.nActId = param[1]
end
if self.nActId then
self:ShowQuestList()
end
end
function DoubleDropActQuestCtrl:OnDisable()
if self.tbItemCtrl ~= nil then
for _, ctrl in pairs(self.tbItemCtrl) do
self:UnbindCtrlByNode(ctrl)
end
end
end
function DoubleDropActQuestCtrl:OnDestroy()
end
function DoubleDropActQuestCtrl:OnBtnClick_Close()
self._mapNode.aniBlur:SetTrigger("tOut")
self._mapNode.aniWindow:Play("t_window_04_t_out")
self:AddTimer(1, 0.2, function()
EventManager.Hit(EventId.ClosePanel, PanelId.DoubleDropActQuestPanel_103001)
end, true, true, true)
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
end
function DoubleDropActQuestCtrl:OnBtnClick_GetAllReward()
if self.actData == nil then
return
end
if not self.bHasComQuest then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("DoubleDrop_Reward_Receive_Tip"))
return
end
local callback = function()
self:RefreshQuestList()
end
self.actData:SendReceiveQuestReward(0, callback)
end
return DoubleDropActQuestCtrl
@@ -0,0 +1,22 @@
local DoubleDropActQuestPanel = class("DoubleDropActQuestPanel", BasePanel)
DoubleDropActQuestPanel._bIsMainPanel = false
DoubleDropActQuestPanel._sUIResRootPath = "UI_Activity/"
DoubleDropActQuestPanel._tbDefine = {
{
sPrefabPath = "_103001/DoubleDropActRewardPanel.prefab",
sCtrlName = "Game.UI.Activity.DoubleDrop.DoubleDropActQuestCtrl"
}
}
function DoubleDropActQuestPanel:Awake()
end
function DoubleDropActQuestPanel:OnEnable()
end
function DoubleDropActQuestPanel:OnAfterEnter()
end
function DoubleDropActQuestPanel:OnDisable()
end
function DoubleDropActQuestPanel:OnDestroy()
end
function DoubleDropActQuestPanel:OnRelease()
end
return DoubleDropActQuestPanel
@@ -0,0 +1,49 @@
local DoubleDropInsItemCtrl = class("DoubleDropInsItemCtrl", BaseCtrl)
DoubleDropInsItemCtrl._mapNodeConfig = {
imgIconDaily = {},
imgIconRegionBoss = {},
imgIconSkill = {},
imgIconEquipment = {},
txtTitle = {sComponentName = "TMP_Text"},
txtDesc = {sComponentName = "TMP_Text"},
goLock = {},
txtLock = {sComponentName = "TMP_Text"}
}
DoubleDropInsItemCtrl._mapEventConfig = {}
DoubleDropInsItemCtrl._mapRedDotConfig = {}
function DoubleDropInsItemCtrl:InitItem(nFuncType)
self.nType = nFuncType
self._mapNode.imgIconDaily:SetActive(nFuncType == GameEnum.OpenFuncType.DailyInstance)
self._mapNode.imgIconRegionBoss:SetActive(nFuncType == GameEnum.OpenFuncType.RegionBoss)
self._mapNode.imgIconSkill:SetActive(nFuncType == GameEnum.OpenFuncType.SkillInstance)
self._mapNode.imgIconEquipment:SetActive(nFuncType == GameEnum.OpenFuncType.CharGemInstance)
local sDesc = ""
if nFuncType == GameEnum.OpenFuncType.SkillInstance then
sDesc = ConfigTable.GetUIText("LevelMenu_SSkill")
elseif nFuncType == GameEnum.OpenFuncType.RegionBoss then
sDesc = ConfigTable.GetUIText("LevelMenu_SRegion")
elseif nFuncType == GameEnum.OpenFuncType.DailyInstance then
sDesc = ConfigTable.GetUIText("LevelMenu_STime")
elseif nFuncType == GameEnum.OpenFuncType.CharGemInstance then
sDesc = ConfigTable.GetUIText("LevelMenu_SEquipment")
end
NovaAPI.SetTMPText(self._mapNode.txtDesc, sDesc)
local bUnlock = PlayerData.Base:CheckFunctionUnlock(nFuncType)
self._mapNode.goLock:SetActive(not bUnlock)
local mapFuncCfg = ConfigTable.GetData("OpenFunc", nFuncType)
if mapFuncCfg ~= nil then
NovaAPI.SetTMPText(self._mapNode.txtTitle, mapFuncCfg.Name)
if not bUnlock and mapFuncCfg.NeedWorldClass > 0 then
NovaAPI.SetTMPText(self._mapNode.txtLock, orderedFormat(ConfigTable.GetUIText("Double_Drops_WorldClass_Lock"), mapFuncCfg.NeedWorldClass))
end
end
end
function DoubleDropInsItemCtrl:Awake()
end
function DoubleDropInsItemCtrl:OnEnable()
end
function DoubleDropInsItemCtrl:OnDisable()
end
function DoubleDropInsItemCtrl:OnDestroy()
end
return DoubleDropInsItemCtrl
@@ -11,6 +11,7 @@ GoldenSpyBuffSelectPanel._tbDefine = {
}
function GoldenSpyBuffSelectPanel:Awake()
GamepadUIManager.EnableGamepadUI("GoldenSpyBuffSelect", {})
self.nTipsPanelId = PanelId.GoldenSpyBuffTipsPanel_400008
end
function GoldenSpyBuffSelectPanel:OnEnable()
end
@@ -12,6 +12,9 @@ GoldenSpyLevelPanel._tbDefine = {
function GoldenSpyLevelPanel:Awake()
PlayerData.Base:SetSkipNewDayWindow(true)
self.bFirstInCtrl = true
self.nTipsPanelId = PanelId.GoldenSpyBuffTipsPanel_400008
self.nResultPanelId = PanelId.GoldenSpyResultPanel_400008
self.nBuffSelectPanelId = PanelId.GoldenSpyBuffSelectPanel_400008
end
function GoldenSpyLevelPanel:OnEnable()
end
@@ -0,0 +1,27 @@
local GoldenSpyBuffSelectPanel = class("GoldenSpyBuffSelectPanel", BasePanel)
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
GoldenSpyBuffSelectPanel._bIsMainPanel = false
GoldenSpyBuffSelectPanel._sSortingLayerName = AllEnum.SortingLayerName.UI
GoldenSpyBuffSelectPanel._sUIResRootPath = "UI_Activity/"
GoldenSpyBuffSelectPanel._tbDefine = {
{
sPrefabPath = "_400012/GoldenSpyBuffSelectPanel.prefab",
sCtrlName = "Game.UI.Activity.GoldenSpy.GoldenSpyBuffSelectCtrl"
}
}
function GoldenSpyBuffSelectPanel:Awake()
GamepadUIManager.EnableGamepadUI("GoldenSpyBuffSelect", {})
self.nTipsPanelId = PanelId.GoldenSpyBuffTipsPanel_400012
end
function GoldenSpyBuffSelectPanel:OnEnable()
end
function GoldenSpyBuffSelectPanel:OnAfterEnter()
end
function GoldenSpyBuffSelectPanel:OnDisable()
end
function GoldenSpyBuffSelectPanel:OnDestroy()
GamepadUIManager.DisableGamepadUI("GoldenSpyBuffSelect")
end
function GoldenSpyBuffSelectPanel:OnRelease()
end
return GoldenSpyBuffSelectPanel
@@ -0,0 +1,24 @@
local GoldenSpyBuffTipsPanel = class("GoldenSpyBuffTipsPanel", BasePanel)
GoldenSpyBuffTipsPanel._bIsMainPanel = false
GoldenSpyBuffTipsPanel._bAddToBackHistory = false
GoldenSpyBuffTipsPanel._sSortingLayerName = AllEnum.SortingLayerName.UI_Top
GoldenSpyBuffTipsPanel._sUIResRootPath = "UI_Activity/"
GoldenSpyBuffTipsPanel._tbDefine = {
{
sPrefabPath = "_400012/GoldenSpyBuffTips.prefab",
sCtrlName = "Game.UI.Activity.GoldenSpy.GoldenSpyBuffTipsCtrl"
}
}
function GoldenSpyBuffTipsPanel:Awake()
end
function GoldenSpyBuffTipsPanel:OnEnable()
end
function GoldenSpyBuffTipsPanel:OnAfterEnter()
end
function GoldenSpyBuffTipsPanel:OnDisable()
end
function GoldenSpyBuffTipsPanel:OnDestroy()
end
function GoldenSpyBuffTipsPanel:OnRelease()
end
return GoldenSpyBuffTipsPanel
@@ -0,0 +1,31 @@
local GoldenSpyLevelPanel = class("GoldenSpyLevelPanel", BasePanel)
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
GoldenSpyLevelPanel._bIsMainPanel = true
GoldenSpyLevelPanel._sSortingLayerName = AllEnum.SortingLayerName.UI
GoldenSpyLevelPanel._sUIResRootPath = "UI_Activity/"
GoldenSpyLevelPanel._tbDefine = {
{
sPrefabPath = "_400012/GoldenSpyPanel.prefab",
sCtrlName = "Game.UI.Activity.GoldenSpy.GoldenSpyLevelCtrl"
}
}
function GoldenSpyLevelPanel:Awake()
PlayerData.Base:SetSkipNewDayWindow(true)
self.bFirstInCtrl = true
self.nTipsPanelId = PanelId.GoldenSpyBuffTipsPanel_400012
self.nResultPanelId = PanelId.GoldenSpyResultPanel_400012
self.nBuffSelectPanelId = PanelId.GoldenSpyBuffSelectPanel_400012
end
function GoldenSpyLevelPanel:OnEnable()
end
function GoldenSpyLevelPanel:OnAfterEnter()
end
function GoldenSpyLevelPanel:OnDisable()
end
function GoldenSpyLevelPanel:OnDestroy()
PlayerData.Base:SetSkipNewDayWindow(false)
PlayerData.Base:OnBackToMainMenuModule()
end
function GoldenSpyLevelPanel:OnRelease()
end
return GoldenSpyLevelPanel
@@ -0,0 +1,28 @@
local GoldenSpyLevelSelectPanel = class("GoldenSpyLevelSelectPanel", BasePanel)
GoldenSpyLevelSelectPanel._bIsMainPanel = true
GoldenSpyLevelSelectPanel._bAddToBackHistory = true
GoldenSpyLevelSelectPanel._sSortingLayerName = AllEnum.SortingLayerName.UI
GoldenSpyLevelSelectPanel._sUIResRootPath = "UI_Activity/"
GoldenSpyLevelSelectPanel._tbDefine = {
{
sPrefabPath = "_400012/GoldenSpyLevelSelectPanel.prefab",
sCtrlName = "Game.UI.Activity.GoldenSpy.GoldenSpyLevelSelectCtrl"
}
}
local PanelTab = {Group = 1, Level = 2}
function GoldenSpyLevelSelectPanel:Awake()
self.nPanelTab = PanelTab.Group
self.nSelectGroupId = 0
self.nSelectLevelId = 0
end
function GoldenSpyLevelSelectPanel:OnEnable()
end
function GoldenSpyLevelSelectPanel:OnAfterEnter()
end
function GoldenSpyLevelSelectPanel:OnDisable()
end
function GoldenSpyLevelSelectPanel:OnDestroy()
end
function GoldenSpyLevelSelectPanel:OnRelease()
end
return GoldenSpyLevelSelectPanel
@@ -0,0 +1,24 @@
local GoldenSpyResultPanel = class("GoldenSpyResultPanel", BasePanel)
GoldenSpyResultPanel._bIsMainPanel = true
GoldenSpyResultPanel._sSortingLayerName = AllEnum.SortingLayerName.UI
GoldenSpyResultPanel._nSnapshotPrePanel = 1
GoldenSpyResultPanel._sUIResRootPath = "UI_Activity/"
GoldenSpyResultPanel._tbDefine = {
{
sPrefabPath = "_400012/GoldenSpyResultPanel.prefab",
sCtrlName = "Game.UI.Activity.GoldenSpy.GoldenSpyResultCtrl"
}
}
function GoldenSpyResultPanel:Awake()
end
function GoldenSpyResultPanel:OnEnable()
end
function GoldenSpyResultPanel:OnAfterEnter()
end
function GoldenSpyResultPanel:OnDisable()
end
function GoldenSpyResultPanel:OnDestroy()
end
function GoldenSpyResultPanel:OnRelease()
end
return GoldenSpyResultPanel
@@ -78,7 +78,7 @@ function GoldenSpyBoomItem:Boom(callback)
if ctrl:GetItemCfg().ItemType == GameEnum.GoldenSpyItem.Boom then
return
end
self.floorCtrl:RemoveItem(ctrl)
self.floorCtrl:RemoveItem(ctrl, true)
end)
end
end
@@ -1,5 +1,5 @@
local GoldenSpyBuffCellCtrl = class("GoldenSpyBuffCellCtrl", BaseCtrl)
local BuffSpritePath = "UI_Activity/_400008/SpriteAtlas/Buff/"
local BuffSpritePath = "UI_Activity/_%s/SpriteAtlas/Buff/"
local buff_state_color = {
[1] = Color(0.8549019607843137, 0.37254901960784315, 0.9137254901960784, 1),
[2] = Color(0.42745098039215684, 0.4470588235294118, 0.8509803921568627, 1)
@@ -18,7 +18,7 @@ GoldenSpyBuffCellCtrl._mapRedDotConfig = {}
function GoldenSpyBuffCellCtrl:Awake()
self._mapNode.img_selected:SetActive(false)
end
function GoldenSpyBuffCellCtrl:SetData(data)
function GoldenSpyBuffCellCtrl:SetData(data, nActId, tipsPanelId)
self.data = data
self.buffId = self.data.buffData.buffId
self.buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", self.buffId)
@@ -47,9 +47,9 @@ function GoldenSpyBuffCellCtrl:SetData(data)
self._mapNode.btn_buff.onClick:RemoveAllListeners()
self._mapNode.btn_buff.onClick:AddListener(function()
self._mapNode.img_selected:SetActive(true)
EventManager.Hit(EventId.OpenPanel, PanelId.GoldenSpyBuffTipsPanel, self._mapNode.btn_buff.transform, self.buffId)
EventManager.Hit(EventId.OpenPanel, tipsPanelId, self._mapNode.btn_buff.transform, self.buffId)
end)
self:SetPngSprite(self._mapNode.img_icon, BuffSpritePath .. self.buffCfg.Icon .. "_s")
self:SetPngSprite(self._mapNode.img_icon, string.format(BuffSpritePath, nActId) .. self.buffCfg.Icon .. "_s")
end
function GoldenSpyBuffCellCtrl:OnEvent_BuffTipsClose()
self._mapNode.img_selected:SetActive(false)
@@ -1,8 +1,8 @@
local GoldenSpyBuffSelectCtrl = class("GoldenSpyBuffSelectCtrl", BaseCtrl)
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
local BuffSpritePath = "UI_Activity/_400008/SpriteAtlas/Buff/"
local ItemSpritePath = "UI_Activity/_400008/SpriteAtlas/Item/"
local BuffSpritePath = "UI_Activity/_%s/SpriteAtlas/Buff/"
local ItemSpritePath = "UI_Activity/_%s/SpriteAtlas/Item/"
local bg_buff = {
[1] = "bg_goldenspy_game_buff_04",
[2] = "bg_goldenspy_game_buff_02",
@@ -66,9 +66,20 @@ GoldenSpyBuffSelectCtrl._mapNodeConfig = {
txt_toolBox = {
sComponentName = "TMP_Text",
sLanguageId = "GoldenSpy_ToolBox_Title"
}
},
btn_Refresh = {
sComponentName = "NaviButton",
callback = "OnBtnClick_Refresh"
},
txt_Refresh = {
sComponentName = "TMP_Text",
sLanguageId = "GoldenSpy_Refresh_Title"
},
txt_num = {sComponentName = "TMP_Text"}
}
GoldenSpyBuffSelectCtrl._mapEventConfig = {
GM_GoldenSpy_RefeshBuff = "OnEvent_GM_GoldenSpy_RefeshBuff"
}
GoldenSpyBuffSelectCtrl._mapEventConfig = {}
GoldenSpyBuffSelectCtrl._mapRedDotConfig = {}
function GoldenSpyBuffSelectCtrl:Awake()
self._mapNode.root:SetActive(false)
@@ -79,12 +90,17 @@ function GoldenSpyBuffSelectCtrl:Awake()
if type(param) == "table" then
self.tbShowItem = param[1]
self.tbBuff = param[2]
self.tbSelectBuff = param[3]
self.tbBuffPool = param[3]
self.selectedCallback = param[4]
self.getRefreshCallback = param[5]
self.refreshCallback = param[6]
self.nActId = param[7]
end
self.mapBuffCellCtrl = {}
self.tbSelectBuff = self:RandomSelectBuff()
self:ShowBuffSelect(self.tbShowItem, self.tbBuff, self.tbSelectBuff, self.selectedCallback)
self.bConfirmed = false
self:RefreshRefreshCount()
end
function GoldenSpyBuffSelectCtrl:OnEnable()
local wait = function()
@@ -112,6 +128,65 @@ function GoldenSpyBuffSelectCtrl:OnDestroy()
end
self.mapBuffCellCtrl = {}
end
function GoldenSpyBuffSelectCtrl:RandomSelectBuff()
local tbSelectBuff = {}
local tempPool = self:CopyTable(self.tbBuffPool)
for i = 1, 3 do
local buff, index = self:RandomBuff(tempPool)
table.insert(tbSelectBuff, buff.buffId)
table.remove(tempPool, index)
end
return tbSelectBuff
end
function GoldenSpyBuffSelectCtrl:RandomBuff(tbBuffPool)
local tbBuffCount = {}
local tbRemoveBuffIds = {}
for _, v in ipairs(self.tbBuff) do
tbBuffCount[v.buffData.buffId] = (tbBuffCount[v.buffData.buffId] or 0) + 1
end
for k, v in pairs(tbBuffCount) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", k)
if buffCfg ~= nil and v >= buffCfg.MaxCount then
table.insert(tbRemoveBuffIds, k)
end
end
for i = #tbBuffPool, 1, -1 do
for _, v in ipairs(tbRemoveBuffIds) do
if tbBuffPool[i].buffId == v then
table.remove(tbBuffPool, i)
break
end
end
end
local nTotalWeight = 0
for i, v in ipairs(tbBuffPool) do
nTotalWeight = nTotalWeight + math.floor(v.weight)
end
local nRandom = math.random(1, nTotalWeight)
local nSum = 0
local nIndex = 0
local buffData
for i, v in ipairs(tbBuffPool) do
nSum = nSum + v.weight
if nRandom <= nSum then
buffData = v
nIndex = i
break
end
end
if NovaAPI.IsEditorPlatform() then
print("GoldenSpyLevelCtrl: tbBuffPool:--------------------------------")
for i, v in ipairs(tbBuffPool) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
print("GoldenSpyLevelCtrl: buffId:", v.buffId, " Name:", buffCfg.Name, " weight:", v.weight, " TotalWeight:", nTotalWeight, " 概率:", v.weight / nTotalWeight * 100, "%")
end
end
return buffData, nIndex
end
function GoldenSpyBuffSelectCtrl:RefreshRefreshCount()
local nRefreshCount = self.getRefreshCallback() or 0
NovaAPI.SetTMPText(self._mapNode.txt_num, nRefreshCount)
end
function GoldenSpyBuffSelectCtrl:ShowBuffSelect(tbShowItem, tbBuff, tbSelectBuff, selectedCallback)
self.selectedCallback = selectedCallback
self:RefreshItemList(tbShowItem)
@@ -130,7 +205,7 @@ function GoldenSpyBuffSelectCtrl:OnRefreshItemGrid(goGrid, gridIndex)
end
local img_icon = goGrid.transform:Find("db/icon"):GetComponent("Image")
local txt_score = goGrid.transform:Find("db/txt_score"):GetComponent("TMP_Text")
self:SetPngSprite(img_icon, ItemSpritePath .. itemCfg.IconPath .. "_s")
self:SetPngSprite(img_icon, string.format(ItemSpritePath, self.nActId) .. itemCfg.IconPath .. "_s")
NovaAPI.SetTMPText(txt_score, itemScore)
end
function GoldenSpyBuffSelectCtrl:RefreshBuffSelectList(tbSelectBuff)
@@ -151,11 +226,11 @@ function GoldenSpyBuffSelectCtrl:RefreshBuffSelectList(tbSelectBuff)
local txt_des = btn.transform:Find("AnimRoot/CardRoot/txt_des"):GetComponent("TMP_Text")
local db_type = btn.transform:Find("AnimRoot/CardRoot/db_type"):GetComponent("Image")
local txt_type = btn.transform:Find("AnimRoot/CardRoot/db_type/txt_type"):GetComponent("TMP_Text")
self:SetSprite(img_db, "UI_Activity/_400008/SpriteAtlas/" .. bg_buff[buffCfg.BuffType])
self:SetPngSprite(img_icon, BuffSpritePath .. buffCfg.Icon .. "_m")
self:SetSprite(img_db, string.format("UI_Activity/_%s/SpriteAtlas/", self.nActId) .. bg_buff[buffCfg.BuffType])
self:SetPngSprite(img_icon, string.format(BuffSpritePath, self.nActId) .. buffCfg.Icon .. "_m")
NovaAPI.SetTMPText(txt_name, buffCfg.Name)
NovaAPI.SetTMPText(txt_des, buffCfg.Desc)
self:SetPngSprite(db_type, "UI_Activity/_400008/SpriteAtlas/" .. bg_type[buffCfg.BuffType])
self:SetPngSprite(db_type, string.format("UI_Activity/_%s/SpriteAtlas/", self.nActId) .. bg_type[buffCfg.BuffType])
NovaAPI.SetTMPText(txt_type, ConfigTable.GetUIText(buff_type_lang[buffCfg.BuffType]))
goSelect:SetActive(false)
local tbEffectItem = buffCfg.ConnectItems
@@ -169,7 +244,7 @@ function GoldenSpyBuffSelectCtrl:RefreshBuffSelectList(tbSelectBuff)
local goItem = tbItemGO[i]
local itemCfg = ConfigTable.GetData("GoldenSpyItem", tbEffectItem[i])
local img_icon = goItem.transform:Find("itemIcon"):GetComponent("Image")
self:SetPngSprite(img_icon, ItemSpritePath .. itemCfg.IconPath .. "_s")
self:SetPngSprite(img_icon, string.format(ItemSpritePath, self.nActId) .. itemCfg.IconPath .. "_s")
goItem:SetActive(true)
end
end
@@ -201,7 +276,7 @@ function GoldenSpyBuffSelectCtrl:OnRefreshBuffGrid(goGrid, gridIndex)
objCtrl = self:BindCtrlByNode(goGrid, "Game.UI.Activity.GoldenSpy.GoldenSpyBuffCellCtrl")
self.mapBuffCellCtrl[nInstanceId] = objCtrl
end
objCtrl:SetData(self.tbBuff[nIndex])
objCtrl:SetData(self.tbBuff[nIndex], self.nActId, self._panel.nTipsPanelId)
end
function GoldenSpyBuffSelectCtrl:ResetSelect(tbUI)
self.nSelectIdx = 0
@@ -220,6 +295,13 @@ function GoldenSpyBuffSelectCtrl:ResetSelect(tbUI)
end
end, true, true, true)
end
function GoldenSpyBuffSelectCtrl:CopyTable(tb)
local tbTemp = {}
for _, v in ipairs(tb) do
table.insert(tbTemp, v)
end
return tbTemp
end
function GoldenSpyBuffSelectCtrl:OnBtnClick_BuffItem(btn, nIndex)
if nil == self.tbSelectBuff[nIndex] or self.nSelectIdx == nIndex then
return
@@ -262,10 +344,32 @@ function GoldenSpyBuffSelectCtrl:OnBtnClick_Confirm(btn, nIndex)
self.selectedCallback(self.tbSelectBuff[self.nSelectIdx])
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
EventManager.Hit(EventId.ClosePanel, PanelId.GoldenSpyBuffSelectPanel)
EventManager.Hit(EventId.ClosePanel, self._panel._nPanelId)
end
cs_coroutine.start(wait)
end, true, true, true, nil)
end
end
function GoldenSpyBuffSelectCtrl:OnBtnClick_Refresh(btn, nIndex)
local nRefreshCount = self.getRefreshCallback() or 0
if nRefreshCount <= 0 then
return
end
self.tbSelectBuff = self:RandomSelectBuff()
self:RefreshBuffSelectList(self.tbSelectBuff)
self:ResetSelect(self._mapNode.btnBuff)
if self.refreshCallback ~= nil then
self.refreshCallback()
end
self:RefreshRefreshCount()
self._mapNode.animCtrl:Play("GoldenSpyBuffSelectPanel_in1Empty")
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
function GoldenSpyBuffSelectCtrl:OnEvent_GM_GoldenSpy_RefeshBuff()
self.tbSelectBuff = self:RandomSelectBuff()
self:RefreshBuffSelectList(self.tbSelectBuff)
self:ResetSelect(self._mapNode.btnBuff)
self._mapNode.animCtrl:Play("GoldenSpyBuffSelectPanel_in1Empty")
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
return GoldenSpyBuffSelectCtrl
@@ -95,7 +95,7 @@ function GoldenSpyBuffTipsCtrl:SetTipsPosition(rtTarget, rtContent, safeAreaRoot
end
function GoldenSpyBuffTipsCtrl:OnBtnClick_ClosePanel()
NovaAPI.SetComponentEnableByName(self.rtTarget.gameObject, "TopGridCanvas", false)
EventManager.Hit(EventId.ClosePanel, PanelId.GoldenSpyBuffTipsPanel)
EventManager.Hit(EventId.ClosePanel, self._panel._nPanelId)
EventManager.Hit("GoldenSpyBuffTipsClose")
end
return GoldenSpyBuffTipsCtrl
@@ -380,7 +380,7 @@ function GoldenSpyCompanionItem:_CheckVision()
local hitArea = item.Ctrl:GetHitArea()
if hitArea and self:_HitAreaInSector(hitArea, vx, vy, forwardAngle, halfAngle, radius) then
if item.Ctrl == self.floorCtrl.catchedItem then
goto lbl_229
goto lbl_176
end
if item.Ctrl:GetItemCfg().ItemType == GameEnum.GoldenSpyItem.Boom then
item.Ctrl:Boom(nil)
@@ -390,22 +390,8 @@ function GoldenSpyCompanionItem:_CheckVision()
local tbHasBuff = self.floorCtrl.levelCtrl.GoldenSpyLevelData:GetBuffData()
for _, v in ipairs(tbHasBuff) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == itemCfg.ItemType then
local curFloor = self.floorCtrl.levelCtrl.GoldenSpyLevelData:GetCurFloor()
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and table.indexof(v.tbActiveFloor, curFloor) > 0 then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and table.indexof(v.tbActiveFloor, curFloor) > 0 then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == itemCfg.ItemType and self.floorCtrl.levelCtrl.GoldenSpyLevelData:CheckBuffActive(v) then
nScore = nScore + buffCfg.Params[2]
end
end
self._mapNode.animator:Play("Patrol_attack")
@@ -424,7 +410,7 @@ function GoldenSpyCompanionItem:_CheckVision()
end
tbRemoveItems = {}
end
::lbl_229::
::lbl_176::
end
end
function GoldenSpyCompanionItem:_StartVisionCheck()
@@ -1,5 +1,5 @@
local GoldenSpyFloorCtrl = class("GoldenSpyFloorCtrl", BaseCtrl)
local LevelPrefabPath = "UI_Activity/_400008/LevelPrefab/"
local LevelPrefabPath = "UI_Activity/_%s/LevelPrefab/"
GoldenSpyFloorCtrl._mapNodeConfig = {
HookCtrl = {
sNodeName = "HookRoot",
@@ -54,7 +54,7 @@ function GoldenSpyFloorCtrl:Init(levelId, floorId, levelCtrl)
return
end
local nPrefabName = self.levelCtrl.GoldenSpyLevelData:GetLevelPrefabName()
local goLevelPerfab = self:LoadAsset(LevelPrefabPath .. nPrefabName .. ".prefab")
local goLevelPerfab = self:LoadAsset(string.format(LevelPrefabPath, self.levelCtrl.nActId) .. nPrefabName .. ".prefab")
self.prefab = instantiate(goLevelPerfab, self._mapNode.floorItemRoot)
self.prefab.transform.localPosition = Vector3.zero
self.prefab.transform.localScale = Vector3.one
@@ -240,7 +240,7 @@ function GoldenSpyFloorCtrl:Shoot(nSpeed, nRadius, nFactor, onRetractComplete, o
end
end)
end
function GoldenSpyFloorCtrl:RemoveItem(itemCtrl)
function GoldenSpyFloorCtrl:RemoveItem(itemCtrl, bForce)
local bDelSuccess = false
local itemId = itemCtrl:GetItemCfg().Id
for i = #self.tbItem, 1, -1 do
@@ -252,7 +252,7 @@ function GoldenSpyFloorCtrl:RemoveItem(itemCtrl)
end
end
if bDelSuccess then
self.levelCtrl.GoldenSpyFloorData:DeleteItem(itemId)
self.levelCtrl.GoldenSpyFloorData:DeleteItem(itemId, bForce)
end
end
function GoldenSpyFloorCtrl:DropItem()
@@ -24,7 +24,8 @@ function GoldenSpyFloorData:SetItem(itemId)
end
self.tbItem[itemId].itemCount = self.tbItem[itemId].itemCount + 1
end
function GoldenSpyFloorData:DeleteItem(itemId)
function GoldenSpyFloorData:DeleteItem(itemId, bForce)
bForce = bForce or false
if self.tbItem[itemId] == nil then
return
end
@@ -33,7 +34,7 @@ function GoldenSpyFloorData:DeleteItem(itemId)
self.tbItem[itemId] = nil
end
local itemCfg = ConfigTable.GetData("GoldenSpyItem", itemId)
if itemCfg.ItemType == GameEnum.GoldenSpyItem.BuffItem then
if itemCfg.ItemType == GameEnum.GoldenSpyItem.BuffItem and not bForce then
return
end
local nCount = 0
@@ -270,22 +270,8 @@ function GoldenSpyHookCtrl:StartExtend(speed, radius, factor, onComplete, onCatc
local itemNormalWeight = item.Ctrl:GetWeight()
for _, v in ipairs(self:GetBuffData()) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.ReduceItemWeight then
local curFloor = self.levelData:GetCurFloor()
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and table.indexof(v.tbActiveFloor, curFloor) > 0 and itemCfg.ItemType == buffCfg.Params[1] then
itemNormalWeight = itemNormalWeight - buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and table.indexof(v.tbActiveFloor, curFloor) > 0 and itemCfg.ItemType == buffCfg.Params[1] then
itemNormalWeight = itemNormalWeight - buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive and itemCfg.ItemType == buffCfg.Params[1] then
itemNormalWeight = itemNormalWeight - buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.ReduceItemWeight and self.levelData:CheckBuffActive(v) then
itemNormalWeight = itemNormalWeight - buffCfg.Params[2]
end
end
itemNormalWeight = math.max(0, itemNormalWeight)
@@ -1,9 +1,9 @@
local GoldenSpyLevelCtrl = class("GoldenSpyLevelCtrl", BaseCtrl)
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
local ItemSpritePath = "UI_Activity/_400008/SpriteAtlas/Item/"
local SpritePath = "UI_Activity/_400008/SpriteAtlas/"
local PrefabPath = "UI_Activity/_400008/"
local ItemSpritePath = "UI_Activity/_%s/SpriteAtlas/Item/"
local SpritePath = "UI_Activity/_%s/SpriteAtlas/"
local PrefabPath = "UI_Activity/_%s/"
local BoomSkillId = 1001
local FrozenSkillId = 1002
local PlayerActivityData = PlayerData.Activity
@@ -82,7 +82,11 @@ GoldenSpyLevelCtrl._mapNodeConfig = {
imgWarning = {},
skill_Boom = {},
go_CompanionAddScore = {},
txt_CompanionAddScore = {sComponentName = "TMP_Text"}
txt_CompanionAddScore = {sComponentName = "TMP_Text"},
targetScoreCtrl = {
sNodeName = "TargetScorePanel",
sCtrlName = "Game.UI.Activity.GoldenSpy.GoldenSpyTargetScoreCtrl"
}
}
GoldenSpyLevelCtrl._mapEventConfig = {
GoldenSpy_Exit_OnClick = "GoldenSpy_Exit_OnClick",
@@ -96,6 +100,7 @@ GoldenSpyLevelCtrl._mapEventConfig = {
[EventId.ClosePanel] = "OnEvent_CloseDic",
GoldenSpyHookResumeSwing = "OnEvent_GoldenSpyHookResumeSwing",
GoldenSpyHookStartExtend = "OnEvent_GoldenSpyHookStartExtend",
GoldenSpy_TargetScore_Close = "OnEvent_GoldenSpy_TargetScore_Close",
GM_GoldenSpy_RefreshTask = "OnEvent_GM_GoldenSpy_RefreshTask",
GM_GoldenSpy_AddSkill = "OnEvent_GM_GoldenSpy_AddSkill",
GM_GoldenSpy_AddBuff = "OnEvent_GM_GoldenSpy_AddBuff",
@@ -104,6 +109,7 @@ GoldenSpyLevelCtrl._mapEventConfig = {
function GoldenSpyLevelCtrl:Awake()
self._mapNode.PausePanel.gameObject:SetActive(false)
self._mapNode.ToolBoxPanel.gameObject:SetActive(false)
self._mapNode.targetScoreCtrl.gameObject:SetActive(false)
self.tbGamepadUINode = self:GetGamepadUINode()
local param = self:GetPanelParam()
if type(param) == "table" then
@@ -128,7 +134,7 @@ function GoldenSpyLevelCtrl:Awake()
end
local groupCfg = ConfigTable.GetData("GoldenSpyLevelGroup", self.nGroupId)
if groupCfg ~= nil then
local goLightPerfab = self:LoadAsset(PrefabPath .. groupCfg.LightName .. ".prefab")
local goLightPerfab = self:LoadAsset(string.format(PrefabPath, self.nActId) .. groupCfg.LightName .. ".prefab")
self.lightPrefab = instantiate(goLightPerfab, self._mapNode.platformRoot)
local tr = self.lightPrefab.transform:GetComponent("RectTransform")
tr.anchoredPosition = Vector2.zero
@@ -153,9 +159,10 @@ end
function GoldenSpyLevelCtrl:EnterGame()
self._mapNode.ActorAnimRoot:Play("ActorPanel_Jump")
self.bInCharAnimator = false
self:AddTimer(1, 0.7, function()
self:StartFloor()
self:AddTimer(1, 1.7, function()
self:ShowTargetScore()
end, true, true, true)
EventManager.Hit(EventId.TemporaryBlockInput, 1.7)
if self.nLevelType == GameEnum.GoldenSpyLevelType.Quest or self.nLevelType == GameEnum.GoldenSpyLevelType.Random then
self.GoldenSpyLevelData:RefreshTask()
self:UpdateTaskUI()
@@ -167,7 +174,7 @@ function GoldenSpyLevelCtrl:Init()
if self.floorCfg == nil then
return
end
self:SetPngSprite(self._mapNode.img_bg, SpritePath .. self.floorCfg.BgName)
self:SetPngSprite(self._mapNode.img_bg, string.format(SpritePath, self.nActId) .. self.floorCfg.BgName)
local nFloor = self.GoldenSpyLevelData:GetCurFloor()
local nTotalFloor = self.GoldenSpyLevelData:GetTotalFloor()
local sFloorText = orderedFormat(ConfigTable.GetUIText("GoldenSpy_Floor"), nFloor, nTotalFloor)
@@ -271,6 +278,9 @@ function GoldenSpyLevelCtrl:StartFloor()
end
end
function GoldenSpyLevelCtrl:FinishFloor()
if self.bInPause then
self:GoldenSpy_Continue_OnClick()
end
WwiseAudioMgr:PostEvent("Mode_steal_get_stop")
self:ClearTimer()
self.bStartFloor = false
@@ -289,11 +299,12 @@ function GoldenSpyLevelCtrl:FinishFloor()
tbItems = self.GoldenSpyLevelData:GetCatchItemData(),
tbSkills = self.GoldenSpyLevelData:GetUsedSkillData()
}
self.GoldenSpyActData:FinishLevel(self.nLevelId, data, function()
self.GoldenSpyActData:FinishLevel(self.nLevelId, data, function(msgData)
if callback ~= nil then
callback()
local nextGroupId, nextLevelId = self.GoldenSpyActData:GetNextLevel(self.nGroupId, self.nLevelId)
callback(msgData, nextGroupId, nextLevelId)
end
EventManager.Hit(EventId.ClosePanel, PanelId.GoldenSpyPanel)
EventManager.Hit(EventId.ClosePanel, self._panel._nPanelId)
end)
end
local goNextCallback = function()
@@ -305,17 +316,50 @@ function GoldenSpyLevelCtrl:FinishFloor()
else
bSuccess = self.nCurScore >= self.floorCfg.GoalScore
end
local goNextLevelCallback = function(nextGroupId, nextLevelId)
if nextGroupId == nil or nextLevelId == nil then
return
end
local wait = function()
self.GoldenSpyActData:EnterGroupSelect(nextGroupId)
self.GoldenSpyActData:StartLevel(nextGroupId, nextLevelId)
end
cs_coroutine.start(wait)
end
local data = {
bResult = bFinish,
nLevelId = self.nLevelId,
nCurFloorId = nCurFloorId,
nFloor = nFloor,
nTotalFloor = nTotalFloor,
nCurScore = self.nCurScore,
finishCallback = finishCallback,
goNextCallback = goNextCallback,
bSuccess = bSuccess,
bCanGoNextLevel = bCanGoNextLevel,
goNextLevelCallback = goNextLevelCallback
}
if not self.GoldenSpyActData:CheckActivityOpen() then
EventManager.Hit(EventId.OpenMessageBox, {
nType = AllEnum.MessageBox.Alert,
sContent = ConfigTable.GetUIText("Activity_End_Notice"),
callbackConfirm = function()
PanelManager.Home()
end
})
return
end
if bSuccess then
if self.animator ~= nil then
self.animator:Play("GoldenSpyPanel_out")
self:AddTimer(1, 1.4, function()
EventManager.Hit(EventId.OpenPanel, PanelId.GoldenSpyResultPanel, bFinish, self.nLevelId, nCurFloorId, nFloor, nTotalFloor, self.nCurScore, finishCallback, goNextCallback, bSuccess)
EventManager.Hit(EventId.OpenPanel, self._panel.nResultPanelId, data)
end, true, true, true)
else
EventManager.Hit(EventId.OpenPanel, PanelId.GoldenSpyResultPanel, bFinish, self.nLevelId, nCurFloorId, nFloor, nTotalFloor, self.nCurScore, finishCallback, goNextCallback, bSuccess)
EventManager.Hit(EventId.OpenPanel, self._panel.nResultPanelId, data)
end
else
EventManager.Hit(EventId.OpenPanel, PanelId.GoldenSpyResultPanel, bFinish, self.nLevelId, nCurFloorId, nFloor, nTotalFloor, self.nCurScore, finishCallback, goNextCallback, bSuccess)
EventManager.Hit(EventId.OpenPanel, self._panel.nResultPanelId, data)
end
end
function GoldenSpyLevelCtrl:GoNextFloor()
@@ -353,6 +397,9 @@ function GoldenSpyLevelCtrl:CatchedComplete(itemCtrl)
local oldScore = self.nCurScore
local bFinishTask, addScore = self.GoldenSpyLevelData:CatchedItem(nItemId, itemCtrl)
addScore = math.floor(addScore or 0)
if NovaAPI.IsEditorPlatform() then
print("GoldenSpyLevelCtrl:抓到的道具分", addScore)
end
self.nCurScore = self.GoldenSpyLevelData:GetCurScore()
self.nCurScore = math.floor(self.nCurScore)
local newAddScore = self.nCurScore - oldScore
@@ -364,6 +411,9 @@ function GoldenSpyLevelCtrl:CatchedComplete(itemCtrl)
self.AddScoreTimer = nil
end
self.AddScoreTimer = self:AddTimer(1, 0.8, function()
if not self.bStartFloor then
return
end
if self._mapNode.go_AddScore == nil then
return
end
@@ -387,6 +437,9 @@ function GoldenSpyLevelCtrl:CatchedComplete(itemCtrl)
taskAnimator:Play("go_Task_switch")
self:UpdateTaskIcon()
local timer = self:AddTimer(1, 0.75, function()
if not self.bStartFloor then
return
end
self:UpdateTaskUI()
end, true, true, true)
table.insert(self.tbTimer, timer)
@@ -444,7 +497,7 @@ function GoldenSpyLevelCtrl:UpdateTaskUI()
local img_icon = self._mapNode.target[i].transform:Find("img_icon"):GetComponent("Image")
local icon_cg = img_icon:GetComponent("CanvasGroup")
local imgGet = self._mapNode.target[i].transform:Find("img_get"):GetComponent("Image")
self:SetPngSprite(img_icon, ItemSpritePath .. itemCfg.IconPath .. "_s")
self:SetPngSprite(img_icon, string.format(ItemSpritePath, self.nActId) .. itemCfg.IconPath .. "_s")
if v.bFinish then
imgGet.gameObject:SetActive(true)
NovaAPI.SetCanvasGroupAlpha(icon_cg, 0.3)
@@ -501,108 +554,28 @@ function GoldenSpyLevelCtrl:AddRandomBuff(nPoolId, callback)
break
end
end
if bIsLabel then
if hasBuffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if n.bActive and table.indexof(n.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) > 0 then
v.weight = v.weight * (1 + hasBuffCfg.Params[2] / 100.0)
end
elseif hasBuffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if n.bActive and table.indexof(n.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) > 0 then
v.weight = v.weight * (1 + hasBuffCfg.Params[2] / 100.0)
end
elseif hasBuffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if n.bActive then
v.weight = v.weight * (1 + hasBuffCfg.Params[2] / 100.0)
end
elseif hasBuffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if bIsLabel and self.GoldenSpyLevelData:CheckBuffActive(n) then
v.weight = v.weight * (1 + hasBuffCfg.Params[2] / 100.0)
end
end
end
end
end
local tbBuff = {}
for i = 1, 3 do
local buff, index = self:RandomBuff(tbBuffPool)
table.insert(tbBuff, buff.buffId)
table.remove(tbBuffPool, index)
end
self:ShowBuffSelect(tbBuff, callback)
return tbBuff
self:ShowBuffSelect(tbBuffPool, callback)
end
function GoldenSpyLevelCtrl:RandomBuff(tbBuffPool)
local tbBuffCount = {}
local tbHasBuff = self.GoldenSpyLevelData:GetBuffData()
local tbRemoveBuffIds = {}
for _, v in ipairs(tbHasBuff) do
tbBuffCount[v.buffId] = (tbBuffCount[v.buffId] or 0) + 1
end
for k, v in pairs(tbBuffCount) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", k)
if buffCfg ~= nil and v >= buffCfg.MaxCount then
table.insert(tbRemoveBuffIds, k)
end
end
for i = #tbBuffPool, 1, -1 do
for _, v in ipairs(tbRemoveBuffIds) do
if tbBuffPool[i].buffId == v then
table.remove(tbBuffPool, i)
break
end
end
end
local nTotalWeight = 0
for i, v in ipairs(tbBuffPool) do
nTotalWeight = nTotalWeight + math.floor(v.weight)
end
local nRandom = math.random(1, nTotalWeight)
local nSum = 0
local nIndex = 0
local buffData
for i, v in ipairs(tbBuffPool) do
nSum = nSum + v.weight
if nRandom <= nSum then
buffData = v
nIndex = i
break
end
end
if NovaAPI.IsEditorPlatform() then
print("GoldenSpyLevelCtrl: tbBuffPool:--------------------------------")
for i, v in ipairs(tbBuffPool) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
print("GoldenSpyLevelCtrl: buffId:", v.buffId, " Name:", buffCfg.Name, " weight:", v.weight, " TotalWeight:", nTotalWeight, " 概率:", v.weight / nTotalWeight * 100, "%")
end
end
return buffData, nIndex
end
function GoldenSpyLevelCtrl:ShowBuffSelect(tbBuff, callback)
function GoldenSpyLevelCtrl:ShowBuffSelect(tbBuffPool, callback)
self:Pause()
local tbShowItem = {}
local tbItems = self.GoldenSpyFloorData:GetItems()
local tbHasBuff = self.GoldenSpyLevelData:GetBuffData()
local curFloor = self.GoldenSpyLevelData:GetCurFloor()
for _, v in pairs(tbItems) do
local itemCfg = ConfigTable.GetData("GoldenSpyItem", v.itemId)
if itemCfg ~= nil and itemCfg.ShowValue ~= false then
local nScore = itemCfg.Score
for _, n in ipairs(tbHasBuff) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", n.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if n.bActive and table.indexof(n.tbActiveFloor, curFloor) > 0 and buffCfg.Params[1] == itemCfg.ItemType then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if n.bActive and table.indexof(n.tbActiveFloor, curFloor) > 0 and buffCfg.Params[1] == itemCfg.ItemType then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if n.bActive and buffCfg.Params[1] == itemCfg.ItemType then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and self.GoldenSpyLevelData:CheckBuffActive(n) and buffCfg.Params[1] == itemCfg.ItemType then
nScore = nScore + buffCfg.Params[2]
end
end
local itemData = {
@@ -620,7 +593,13 @@ function GoldenSpyLevelCtrl:ShowBuffSelect(tbBuff, callback)
end
end
local tbSortBuff = self:SortBuff(tbHasBuff)
EventManager.Hit(EventId.OpenPanel, PanelId.GoldenSpyBuffSelectPanel, tbShowItem, tbSortBuff, tbBuff, selectedCallback)
local getRefreshCallback = function()
return self.GoldenSpyLevelData:GetRefreshCount()
end
local refreshCallback = function()
self.GoldenSpyLevelData:UseRefreshCount()
end
EventManager.Hit(EventId.OpenPanel, self._panel.nBuffSelectPanelId, tbShowItem, tbSortBuff, tbBuffPool, selectedCallback, getRefreshCallback, refreshCallback, self.nActId)
end
function GoldenSpyLevelCtrl:GetHookBaseSpeed()
local levelCfg = ConfigTable.GetData("GoldenSpyLevel", self.nLevelId)
@@ -634,21 +613,8 @@ function GoldenSpyLevelCtrl:GetHookBaseSpeed()
local nSpeed = cfg.BaseSpeed
for _, v in ipairs(self.GoldenSpyLevelData:GetBuffData()) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddSpeed then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and 0 < table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) then
nSpeed = nSpeed + buffCfg.Params[1]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and 0 < table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) then
nSpeed = nSpeed + buffCfg.Params[1]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive then
nSpeed = nSpeed + buffCfg.Params[1]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddSpeed and self.GoldenSpyLevelData:CheckBuffActive(v) then
nSpeed = nSpeed + buffCfg.Params[1]
end
end
return nSpeed
@@ -661,21 +627,8 @@ function GoldenSpyLevelCtrl:GetHookRadius()
local nRadius = cfg.BaseRadius
for _, v in ipairs(self.GoldenSpyLevelData:GetBuffData()) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookRadius then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and 0 < table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) then
nRadius = nRadius + buffCfg.Params[1]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and 0 < table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) then
nRadius = nRadius + buffCfg.Params[1]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive then
nRadius = nRadius + buffCfg.Params[1]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookRadius and self.GoldenSpyLevelData:CheckBuffActive(v) then
nRadius = nRadius + buffCfg.Params[1]
end
end
return nRadius
@@ -828,6 +781,9 @@ function GoldenSpyLevelCtrl:OnBtnClick_Pause()
local bHasDic = self.floorCfg.DictionaryID ~= 0
self._mapNode.PausePanel:Open(bHasDic)
end
function GoldenSpyLevelCtrl:ShowTargetScore()
self._mapNode.targetScoreCtrl:ShowPanel(self.floorCfg.GoalScore, self.nCurScore)
end
function GoldenSpyLevelCtrl:OnBtnClick_Hook()
if self.bInCharAnimator then
return
@@ -844,44 +800,15 @@ function GoldenSpyLevelCtrl:OnBtnClick_Hook()
local nFactor = cfg.BaseFactor
for _, v in ipairs(self.GoldenSpyLevelData:GetBuffData()) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) > 0 then
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.SpeedUpHook then
nSpeed = nSpeed + buffCfg.Params[1]
end
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookRadius then
nRadius = nRadius + buffCfg.Params[1]
end
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookK then
nFactor = nFactor + buffCfg.Params[1]
end
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) > 0 then
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.SpeedUpHook then
nSpeed = nSpeed + buffCfg.Params[1]
end
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookRadius then
nRadius = nRadius + buffCfg.Params[1]
end
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookK then
nFactor = nFactor + buffCfg.Params[1]
end
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive then
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.SpeedUpHook then
nSpeed = nSpeed + buffCfg.Params[1]
end
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookRadius then
nRadius = nRadius + buffCfg.Params[1]
end
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookK then
nFactor = nFactor + buffCfg.Params[1]
end
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
if buffCfg ~= nil and self.GoldenSpyLevelData:CheckBuffActive(v) then
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.SpeedUpHook then
nSpeed = nSpeed + buffCfg.Params[1]
end
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookRadius then
nRadius = nRadius + buffCfg.Params[1]
end
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddHookK then
nFactor = nFactor + buffCfg.Params[1]
end
end
end
@@ -901,21 +828,8 @@ function GoldenSpyLevelCtrl:OnBtnClick_Hook()
local itemNormalWeight = itemCtrl:GetWeight()
for _, v in ipairs(self.GoldenSpyLevelData:GetBuffData()) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.ReduceItemWeight then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) > 0 and itemCtrl.nItemId == buffCfg.Params[1] then
itemNormalWeight = itemNormalWeight - buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) > 0 and itemCtrl.nItemId == buffCfg.Params[1] then
itemNormalWeight = itemNormalWeight - buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive and itemCtrl.nItemId == buffCfg.Params[1] then
itemNormalWeight = itemNormalWeight - buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.ReduceItemWeight and self.GoldenSpyLevelData:CheckBuffActive(v) and itemCtrl.nItemId == buffCfg.Params[1] then
itemNormalWeight = itemNormalWeight - buffCfg.Params[2]
end
end
itemNormalWeight = math.max(0, itemNormalWeight)
@@ -936,21 +850,8 @@ function GoldenSpyLevelCtrl:OnBtnClick_Hook()
local nScore = itemCfg.Score
for _, v in ipairs(self.GoldenSpyLevelData:GetBuffData()) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == itemCfg.ItemType then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) > 0 then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and table.indexof(v.tbActiveFloor, self.GoldenSpyLevelData:GetCurFloor()) > 0 then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == itemCfg.ItemType and self.GoldenSpyLevelData:CheckBuffActive(v) then
nScore = nScore + buffCfg.Params[2]
end
end
if nScore >= cfg.GetHighValue then
@@ -1028,6 +929,8 @@ function GoldenSpyLevelCtrl:OnBtnClick_Boom()
end
end, true, true, true)
table.insert(self.tbTimer, timer)
else
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("GoldenSpy_NoneBoom"))
end
end
function GoldenSpyLevelCtrl:OnBtnClick_Frozen()
@@ -1072,7 +975,9 @@ function GoldenSpyLevelCtrl:OnBtnClick_Frozen()
local timer = self:AddTimer(1, nTime, function()
self._mapNode.floorCtrl:StopFrozen()
self.bInFrozen = false
WwiseAudioMgr:PostEvent("Mode_steal_ice_break")
if self._mapNode.floorCtrl:CheckHasFrozenItem() then
WwiseAudioMgr:PostEvent("Mode_steal_ice_break")
end
end, true, true, true)
table.insert(self.tbTimer, timer)
local img_frozenCD = self._mapNode.img_frozenCD
@@ -1097,7 +1002,7 @@ function GoldenSpyLevelCtrl:OnBtnClick_ToolBox()
local nScore = itemCfg.Score
for _, n in ipairs(tbHasBuff) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", n.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == itemCfg.ItemType then
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and self.GoldenSpyLevelData:CheckBuffActive(n) and buffCfg.Params[1] == itemCfg.ItemType then
nScore = nScore + buffCfg.Params[2]
end
end
@@ -1112,7 +1017,7 @@ function GoldenSpyLevelCtrl:OnBtnClick_ToolBox()
self:Resume()
end
local tbSortBuff = self:SortBuff(tbHasBuff)
self._mapNode.ToolBoxPanel:Show(tbShowItem, tbSortBuff, callback)
self._mapNode.ToolBoxPanel:Show(tbShowItem, tbSortBuff, callback, self.nActId, self._panel.nTipsPanelId)
end
function GoldenSpyLevelCtrl:GoldenSpy_Exit_OnClick()
self.bInPause = false
@@ -1125,8 +1030,7 @@ function GoldenSpyLevelCtrl:GoldenSpy_Restart_OnClick()
self.bInPause = false
self._mapNode.floorCtrl:Exit()
self:ClearTimer()
self.GoldenSpyLevelData:InitData()
self.GoldenSpyLevelData:StartLevel(self.nLevelId)
self.GoldenSpyLevelData:RestartCurrentFloor()
self.animator:Play("GoldenSpyPanel_in")
self:Init()
self:InitSkill(true)
@@ -1216,6 +1120,9 @@ function GoldenSpyLevelCtrl:OnEvent_GoldenSpyHookStartExtend()
local hookMask = self._mapNode.btn_Hook.transform:Find("AnimRoot/mask"):GetComponent("Image")
hookMask.gameObject:SetActive(true)
end
function GoldenSpyLevelCtrl:OnEvent_GoldenSpy_TargetScore_Close()
self:StartFloor()
end
function GoldenSpyLevelCtrl:OnEvent_GM_GoldenSpy_RefreshTask()
if self.nLevelType == GameEnum.GoldenSpyLevelType.Quest or self.nLevelType == GameEnum.GoldenSpyLevelType.Random then
self.GoldenSpyLevelData:RefreshTask()
@@ -19,8 +19,10 @@ function GoldenSpyLevelData:InitData()
tbItems = {}
}
self.nCompleteTaskCount = 0
self.nBuffRefreshCount = 0
self.nLevelType = nil
self.tbRandomPrefabName = {}
self.tempPointData = nil
end
function GoldenSpyLevelData:StartLevel(levelId)
self.levelId = levelId
@@ -36,12 +38,71 @@ function GoldenSpyLevelData:StartLevel(levelId)
self.tbSkillData[v[1]] = v[2]
self.tbUsedSkill[v[1]] = 0
end
self.nBuffRefreshCount = self.levelConfig.BuffRefeshCount
end
function GoldenSpyLevelData:RestartCurrentFloor()
if self.tempPointData == nil then
self:InitData()
self:StartLevel(self.levelId)
return
end
self.nCurScore = self.tempPointData.nCurScore
self.tbCatchItem = self.tempPointData.tbCatchItem
self.tbBuff = self.tempPointData.tbBuff
self.tbUsedSkill = self.tempPointData.tbUsedSkill
self.tbSkillData = self.tempPointData.tbSkillData
self.nCompleteTaskCount = self.tempPointData.nCompleteTaskCount
self.nBuffRefreshCount = self.tempPointData.nBuffRefreshCount
local tbList = {}
for i = 1, #self.tempPointData.tbRandomPrefabName do
table.insert(tbList, self.tempPointData.tbRandomPrefabName[i])
end
self.tbRandomPrefabName = tbList
self.floorData:InitData()
self.floorData:StartFloor(self.levelId, self.nCurFloorId)
end
function GoldenSpyLevelData:NextFloor()
self.nCurFloor = self.nCurFloor + 1
self.nCurFloorId = self.levelConfig.FloorList[self.nCurFloor]
self.floorData:InitData()
self.floorData:StartFloor(self.levelId, self.nCurFloorId)
local tbCatchItem = {}
for k, v in pairs(self.tbCatchItem) do
tbCatchItem[k] = {
itemId = k,
itemCount = v.itemCount
}
end
local tbBuff = {}
for k, v in pairs(self.tbBuff) do
tbBuff[k] = {
buffId = v.buffId,
tbActiveFloor = v.tbActiveFloor,
bActive = v.bActive
}
end
local tbUsedSkill = {}
for k, v in pairs(self.tbUsedSkill) do
tbUsedSkill[k] = v
end
local tbSkillData = {}
for k, v in pairs(self.tbSkillData) do
tbSkillData[k] = v
end
local tbRandomPrefabName = {}
for i = 1, #self.tbRandomPrefabName do
table.insert(tbRandomPrefabName, self.tbRandomPrefabName[i])
end
self.tempPointData = {
nCurScore = self.nCurScore,
tbCatchItem = tbCatchItem,
tbBuff = tbBuff,
tbUsedSkill = tbUsedSkill,
tbSkillData = tbSkillData,
nCompleteTaskCount = self.nCompleteTaskCount,
nBuffRefreshCount = self.nBuffRefreshCount,
tbRandomPrefabName = tbRandomPrefabName
}
end
function GoldenSpyLevelData:GetFloorData()
return self.floorData
@@ -100,21 +161,8 @@ function GoldenSpyLevelData:CatchedItem(nItemId, itemCtrl)
end
for _, v in ipairs(self.tbBuff) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == itemCfg.ItemType then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and table.indexof(v.tbActiveFloor, self.nCurFloor) > 0 then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and table.indexof(v.tbActiveFloor, self.nCurFloor) > 0 then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive then
nScore = nScore + buffCfg.Params[2]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == itemCfg.ItemType and self:CheckBuffActive(v) then
nScore = nScore + buffCfg.Params[2]
end
end
self.nCurScore = self.nCurScore + nScore
@@ -161,21 +209,8 @@ function GoldenSpyLevelData:RefreshTask()
local nExWeight = 0
for _, v in ipairs(self.tbBuff) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddTaskWeight then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and 0 < table.indexof(v.tbActiveFloor, self.nCurFloor) then
nExWeight = nExWeight + buffCfg.Params[1]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and 0 < table.indexof(v.tbActiveFloor, self.nCurFloor) then
nExWeight = nExWeight + buffCfg.Params[1]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive then
nExWeight = nExWeight + buffCfg.Params[1]
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddTaskWeight and self:CheckBuffActive(v) then
nExWeight = nExWeight + buffCfg.Params[1]
end
end
local tbRandomTaskConfig = {}
@@ -231,24 +266,9 @@ function GoldenSpyLevelData:RefreshTask()
end
for _, v in ipairs(self.tbBuff) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddExScoreFactor then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if v.bActive and 0 < table.indexof(v.tbActiveFloor, self.nCurFloor) then
nScore = nScore * (1 + buffCfg.Params[1] / 100.0)
nScore = math.floor(nScore)
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if v.bActive and 0 < table.indexof(v.tbActiveFloor, self.nCurFloor) then
nScore = nScore * (1 + buffCfg.Params[1] / 100.0)
nScore = math.floor(nScore)
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if v.bActive then
nScore = nScore * (1 + buffCfg.Params[1] / 100.0)
nScore = math.floor(nScore)
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddExScoreFactor and self:CheckBuffActive(v) then
nScore = nScore * (1 + buffCfg.Params[1] / 100.0)
nScore = math.floor(nScore)
end
end
self.taskData = {nScore = nScore, tbItems = tbItems}
@@ -308,35 +328,55 @@ function GoldenSpyLevelData:AddBuff(nBuffId)
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddSkillUseCount then
self.tbSkillData[buffCfg.Params[1]] = (self.tbSkillData[buffCfg.Params[1]] or 0) + buffCfg.Params[2]
EventManager.Hit("GoldenSpy_UpdateSkillCount", buffCfg.Params[1], self.tbSkillData[buffCfg.Params[1]])
elseif buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddBuffRefreshCount then
self.nBuffRefreshCount = self.nBuffRefreshCount + buffCfg.Params[1]
end
end
table.insert(self.tbBuff, buffEntity)
if self.taskData ~= nil and 0 < self.taskData.nScore and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddExScoreFactor then
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if buffEntity.bActive and 0 < table.indexof(buffEntity.tbActiveFloor, self.nCurFloor) then
self.taskData.nScore = self.taskData.nScore * (1 + buffCfg.Params[1] / 100.0)
self.taskData.nScore = math.floor(self.taskData.nScore)
EventManager.Hit("GoldenSpy_UpdateTaskScore", self.taskData.nScore)
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if buffEntity.bActive and 0 < table.indexof(buffEntity.tbActiveFloor, self.nCurFloor) then
self.taskData.nScore = self.taskData.nScore * (1 + buffCfg.Params[1] / 100.0)
self.taskData.nScore = math.floor(self.taskData.nScore)
EventManager.Hit("GoldenSpy_UpdateTaskScore", self.taskData.nScore)
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if buffEntity.bActive then
self.taskData.nScore = self.taskData.nScore * (1 + buffCfg.Params[1] / 100.0)
self.taskData.nScore = math.floor(self.taskData.nScore)
EventManager.Hit("GoldenSpy_UpdateTaskScore", self.taskData.nScore)
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
if self.taskData ~= nil and 0 < self.taskData.nScore and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddExScoreFactor and self:CheckBuffActive(buffEntity) then
self.taskData.nScore = self.taskData.nScore * (1 + buffCfg.Params[1] / 100.0)
self.taskData.nScore = math.floor(self.taskData.nScore)
EventManager.Hit("GoldenSpy_UpdateTaskScore", self.taskData.nScore)
end
if buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore then
EventManager.Hit("GoldenSpy_ItemUpdateScore", self.tbBuff)
end
end
function GoldenSpyLevelData:CheckBuffActive(buffEntity)
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", buffEntity.buffId)
if buffCfg == nil then
return false
end
local bActive = false
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if buffEntity.bActive and table.indexof(buffEntity.tbActiveFloor, self.nCurFloor) > 0 then
bActive = true
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if buffEntity.bActive and table.indexof(buffEntity.tbActiveFloor, self.nCurFloor) > 0 then
bActive = true
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if buffEntity.bActive then
bActive = true
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
return bActive
end
function GoldenSpyLevelData:GetRefreshCount()
return self.nBuffRefreshCount
end
function GoldenSpyLevelData:UseRefreshCount()
if self.nBuffRefreshCount <= 0 then
return false
end
self.nBuffRefreshCount = self.nBuffRefreshCount - 1
return true
end
function GoldenSpyLevelData:AddRefreshCount(nCount)
self.nBuffRefreshCount = self.nBuffRefreshCount + nCount
end
function GoldenSpyLevelData:GetSkillData()
return self.tbSkillData
end
@@ -1,5 +1,5 @@
local GoldenSpyLevelSelectCtrl = class("GoldenSpyLevelSelectCtrl", BaseCtrl)
local UIAssetPath = "UI_Activity/_400008/SpriteAtlas/"
local UIAssetPath = "UI_Activity/_%s/SpriteAtlas/"
local PanelTab = {Group = 1, Level = 2}
local GroupState = {
Normal = 1,
@@ -42,6 +42,14 @@ GoldenSpyLevelSelectCtrl._mapNodeConfig = {
img_Pass = {},
go_lockTips = {},
txt_lockTips = {sComponentName = "TMP_Text"},
btnRight = {
sComponentName = "UIButton",
callback = "OnBtnClick_Right"
},
btnLeft = {
sComponentName = "UIButton",
callback = "OnBtnClick_Left"
},
btn_level = {
nCount = 2,
sComponentName = "UIButton",
@@ -85,12 +93,20 @@ function GoldenSpyLevelSelectCtrl:OnEnable()
self._mapNode.reddot_task:SetActive(false)
end
if self._panel.nPanelTab == PanelTab.Level then
local groupCfg = ConfigTable.GetData("GoldenSpyLevelGroup", self._panel.nSelectGroupId)
for _, v in ipairs(groupCfg.LevelList) do
local levelData = self.GoldenSpyActData:GetLevelDataById(v)
if levelData ~= nil and not levelData.bFirstComplete then
self._panel.nSelectLevelId = v
break
local lastGroupId, lastLevelId = self.GoldenSpyActData:GetLastLevelData()
if lastGroupId ~= 0 then
self._panel.nSelectGroupId = lastGroupId
end
if lastLevelId ~= 0 then
self._panel.nSelectLevelId = lastLevelId
else
local groupCfg = ConfigTable.GetData("GoldenSpyLevelGroup", self._panel.nSelectGroupId)
for _, v in ipairs(groupCfg.LevelList) do
local levelData = self.GoldenSpyActData:GetLevelDataById(v)
if levelData ~= nil and not levelData.bFirstComplete then
self._panel.nSelectLevelId = v
break
end
end
end
end
@@ -161,7 +177,7 @@ function GoldenSpyLevelSelectCtrl:InitGroupData()
img_pass.gameObject:SetActive(false)
table.insert(tbPointList, point)
end
self:SetPngSprite(bg, UIAssetPath .. groupCfg.IconPath)
self:SetPngSprite(bg, string.format(UIAssetPath, self.nActivityId) .. groupCfg.IconPath)
NovaAPI.SetTMPText(txt_GroupName, groupCfg.GroupName)
for m, n in ipairs(groupCfg.LevelList) do
local levelData = self.GoldenSpyActData:GetLevelDataById(n)
@@ -177,7 +193,7 @@ function GoldenSpyLevelSelectCtrl:InitGroupData()
local bg_lock = lockByPreGroupRoot.transform:Find("bg"):GetComponent("Image")
local txt_GroupName_Lock = lockByPreGroupRoot.transform:Find("bg_GroupName/txt_GroupName"):GetComponent("TMP_Text")
local txt_lock = lockByPreGroupRoot.transform:Find("txt_lock"):GetComponent("TMP_Text")
self:SetPngSprite(bg_lock, UIAssetPath .. groupCfg.IconPath)
self:SetPngSprite(bg_lock, string.format(UIAssetPath, self.nActivityId) .. groupCfg.IconPath)
NovaAPI.SetTMPText(txt_GroupName_Lock, groupCfg.GroupName)
local nIndex = table.indexof(self.tbGroupIdList, v)
if 1 < nIndex then
@@ -217,7 +233,7 @@ function GoldenSpyLevelSelectCtrl:InitLevelData()
local txt_score = levelRoot.transform:Find("AnimRoot/Image/txt_score"):GetComponent("TMP_Text")
local txt_target = levelRoot.transform:Find("AnimRoot/db_reward/txt_target"):GetComponent("TMP_Text")
NovaAPI.SetTMPText(txt_GroupName, groupCfg.GroupName)
self:SetPngSprite(img_level, UIAssetPath .. levelCfg.IconPath)
self:SetPngSprite(img_level, string.format(UIAssetPath, self.nActivityId) .. levelCfg.IconPath)
NovaAPI.SetTMPText(txt_levelName, levelCfg.LevelName)
local nTotalFloor = #levelCfg.FloorList
NovaAPI.SetTMPText(txt_floorCount, orderedFormat(ConfigTable.GetUIText("GoldenSpy_TotalFloor"), nTotalFloor))
@@ -248,6 +264,18 @@ function GoldenSpyLevelSelectCtrl:InitLevelData()
end
end
self._mapNode.img_Pass.gameObject:SetActive(levelData.bFirstComplete)
local preGroupId = self.GoldenSpyActData:GetPreGroup(self._panel.nSelectGroupId)
local nextGroupId = self.GoldenSpyActData:GetNextGroup(self._panel.nSelectGroupId)
local bCanGoNextGroup = false
if nextGroupId ~= nil then
local groupData = self.GoldenSpyActData:GetLevelGroupDataById(nextGroupId)
local time = CS.ClientManager.Instance.serverTimeStamp
if time >= groupData.nStartTime and self.GoldenSpyActData:CheckPreGroupPassByGroupId(nextGroupId) then
bCanGoNextGroup = true
end
end
self._mapNode.btnRight.gameObject:SetActive(nextGroupId ~= nil and bCanGoNextGroup)
self._mapNode.btnLeft.gameObject:SetActive(preGroupId ~= nil)
end
function GoldenSpyLevelSelectCtrl:GetTimeText(remainTime)
local sTimeStr = ""
@@ -289,7 +317,7 @@ function GoldenSpyLevelSelectCtrl:OnBtnClick_Task()
if mapGroupData ~= nil then
local actData = mapGroupData:GetActivityDataByIndex(AllEnum.ActivityThemeFuncIndex.Task)
if actData ~= nil then
EventManager.Hit(EventId.OpenPanel, PanelId.Task_20102, actData.ActivityId, 4)
EventManager.Hit(EventId.OpenPanel, PanelId.Task_10109, actData.ActivityId, 4)
end
end
end
@@ -326,17 +354,67 @@ end
function GoldenSpyLevelSelectCtrl:OnBtnClick_Go()
self.GoldenSpyActData:StartLevel(self._panel.nSelectGroupId, self._panel.nSelectLevelId)
end
function GoldenSpyLevelSelectCtrl:OnBtnClick_Right()
local nextGroupId = self.GoldenSpyActData:GetNextGroup(self._panel.nSelectGroupId)
if nextGroupId ~= nil then
self._panel.nSelectGroupId = nextGroupId
local groupCfg = ConfigTable.GetData("GoldenSpyLevelGroup", self._panel.nSelectGroupId)
local tempLevelId = groupCfg.LevelList[1]
for _, v in ipairs(groupCfg.LevelList) do
local levelData = self.GoldenSpyActData:GetLevelDataById(v)
if levelData ~= nil then
tempLevelId = v
if not levelData.bFirstComplete then
break
end
end
end
self._panel.nSelectLevelId = tempLevelId
for i = 1, 2 do
local levelCount = #groupCfg.LevelList
self._mapNode.btn_level[i].gameObject:SetActive(i <= levelCount)
self._mapNode.img_select[i].gameObject:SetActive(self._panel.nSelectLevelId == groupCfg.LevelList[i])
end
self:InitLevelData()
self.GoldenSpyActData:EnterGroupSelect(self._panel.nSelectGroupId)
end
end
function GoldenSpyLevelSelectCtrl:OnBtnClick_Left()
local preGroupId = self.GoldenSpyActData:GetPreGroup(self._panel.nSelectGroupId)
if preGroupId ~= nil then
self._panel.nSelectGroupId = preGroupId
local groupCfg = ConfigTable.GetData("GoldenSpyLevelGroup", self._panel.nSelectGroupId)
local tempLevelId = groupCfg.LevelList[1]
for _, v in ipairs(groupCfg.LevelList) do
local levelData = self.GoldenSpyActData:GetLevelDataById(v)
if levelData ~= nil then
tempLevelId = v
if not levelData.bFirstComplete then
break
end
end
end
self._panel.nSelectLevelId = tempLevelId
for i = 1, 2 do
local levelCount = #groupCfg.LevelList
self._mapNode.btn_level[i].gameObject:SetActive(i <= levelCount)
self._mapNode.img_select[i].gameObject:SetActive(self._panel.nSelectLevelId == groupCfg.LevelList[i])
end
self:InitLevelData()
self.GoldenSpyActData:EnterGroupSelect(self._panel.nSelectGroupId)
end
end
function GoldenSpyLevelSelectCtrl:OnEvent_BackHome(nPanelId)
if nPanelId == PanelId.GoldenSpyLevelSelectPanel then
if nPanelId == self._panel._nPanelId then
if self._panel.nPanelTab == PanelTab.Group then
EventManager.Hit(EventId.ClosePanel, PanelId.GoldenSpyLevelSelectPanel)
EventManager.Hit(EventId.ClosePanel, self._panel._nPanelId)
elseif self._panel.nPanelTab == PanelTab.Level then
self:SwitchPanelTab(PanelTab.Group)
end
end
end
function GoldenSpyLevelSelectCtrl:OnEvent_Home(nPanelId)
if nPanelId == PanelId.GoldenSpyLevelSelectPanel then
if nPanelId == self._panel._nPanelId then
PanelManager.Home()
end
end
@@ -16,7 +16,7 @@ function GoldenSpyNormalItem:InitData()
local nScore = self.itemCfg.Score
for _, v in ipairs(self.floorCtrl.levelCtrl.GoldenSpyLevelData:GetBuffData()) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == self.itemCfg.ItemType and self:IsBuffActive(v) then
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == self.itemCfg.ItemType and self.floorCtrl.levelCtrl.GoldenSpyLevelData:CheckBuffActive(v) then
nScore = nScore + buffCfg.Params[2]
end
end
@@ -38,29 +38,6 @@ function GoldenSpyNormalItem:GetHitArea()
}
return hitArea
end
function GoldenSpyNormalItem:IsBuffActive(buffData)
local bResult = false
local nCurFloor = self.floorCtrl.levelCtrl.GoldenSpyLevelData:GetCurFloor()
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", buffData.buffId)
if buffCfg == nil then
return false
end
if buffCfg.BuffType == GameEnum.GoldenSpyBuffType.TemporaryBuff then
if buffData.bActive and table.indexof(buffData.tbActiveFloor, nCurFloor) > 0 then
bResult = true
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.DelayBuff then
if buffData.bActive and table.indexof(buffData.tbActiveFloor, nCurFloor) > 0 then
bResult = true
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.PermanentBuff then
if buffData.bActive then
bResult = true
end
elseif buffCfg.BuffType == GameEnum.GoldenSpyBuffType.SkillCountBuff then
end
return bResult
end
function GoldenSpyNormalItem:OnSkill_InVision()
self.floorCtrl:RemoveItem(self)
self.gameObject:SetActive(false)
@@ -85,7 +62,7 @@ function GoldenSpyNormalItem:OnEvent_GoldenSpy_ItemUpdateScore(tbBuff)
local nScore = self.itemCfg.Score
for _, v in ipairs(tbBuff) do
local buffCfg = ConfigTable.GetData("GoldenSpyBuffCard", v.buffId)
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == self.itemCfg.ItemType and self:IsBuffActive(v) then
if buffCfg ~= nil and buffCfg.EffectType == GameEnum.GoldenSpyBuffEffect.AddScore and buffCfg.Params[1] == self.itemCfg.ItemType and self.floorCtrl.levelCtrl.GoldenSpyLevelData:CheckBuffActive(v) then
nScore = nScore + buffCfg.Params[2]
end
end
@@ -41,27 +41,38 @@ GoldenSpyResultCtrl._mapNodeConfig = {
},
txt_ttValue = {sComponentName = "TMP_Text"},
img_finish = {},
FinishRoot = {}
FinishRoot = {},
btn_goNext2 = {
sComponentName = "UIButton",
callback = "OnBtnClick_GoNext2"
},
txt_goNext2 = {
sComponentName = "TMP_Text",
sLanguageId = "GoldenSpy_Result_GoNext2"
}
}
GoldenSpyResultCtrl._mapEventConfig = {}
GoldenSpyResultCtrl._mapRedDotConfig = {}
function GoldenSpyResultCtrl:Awake()
local tbParam = self:GetPanelParam()
if type(tbParam) == "table" then
self.bResult = tbParam[1]
self.nLevelId = tbParam[2]
self.nCurFloorId = tbParam[3]
self.nFloor = tbParam[4]
self.nTotalFloor = tbParam[5]
self.nCurScore = tbParam[6]
self.finishCallback = tbParam[7]
self.goNextCallback = tbParam[8]
self.bSuccess = tbParam[9]
self.data = tbParam[1]
end
self.bResult = self.data.bResult
self.nLevelId = self.data.nLevelId
self.nCurFloorId = self.data.nCurFloorId
self.nFloor = self.data.nFloor
self.nTotalFloor = self.data.nTotalFloor
self.nCurScore = self.data.nCurScore
self.finishCallback = self.data.finishCallback
self.goNextCallback = self.data.goNextCallback
self.bSuccess = self.data.bSuccess
self.bCanGoNextLevel = self.data.bCanGoNextLevel
self.goNextLevelCallback = self.data.goNextLevelCallback
self.levelCfg = ConfigTable.GetData("GoldenSpyLevel", self.nLevelId)
self.floorCfg = ConfigTable.GetData("GoldenSpyFloor", self.nCurFloorId)
self._mapNode.GoNextRoot:SetActive(not self.bResult)
self._mapNode.FinishRoot:SetActive(self.bResult)
self:SetFinishActive(self.bResult)
self:SetContent()
if self.bSuccess then
for i, v in ipairs(self._mapNode.txt_title) do
@@ -127,29 +138,46 @@ function GoldenSpyResultCtrl:SetFinishTarget()
NovaAPI.SetTMPText(txt_target4, ConfigTable.GetUIText("GoldenSpy_Result_FinishTarget4"))
NovaAPI.SetTMPText(txt_value4, orderedFormat(ConfigTable.GetUIText("GoldenSpy_Result_TargetValue2"), self.nCurScore))
end
function GoldenSpyResultCtrl:OnBtnClick_Finish()
if self.bResult then
local callback = function()
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
EventManager.Hit(EventId.ClosePanel, PanelId.GoldenSpyResultPanel)
function GoldenSpyResultCtrl:SetFinishActive(bActive)
if bActive then
local callback = function(msgData, nextGroupId, nextLevelId)
self._mapNode.FinishRoot:SetActive(true)
local mapDecodedChangeInfo = UTILS.DecodeChangeInfo(msgData)
UTILS.OpenReceiveByChangeInfo(msgData)
self.nextGroupId = nextGroupId
self.nextLevelId = nextLevelId
if self.bSuccess and self.nextGroupId ~= nil and self.nextLevelId ~= nil then
self._mapNode.btn_goNext2.gameObject:SetActive(true)
else
self._mapNode.btn_goNext2.gameObject:SetActive(false)
end
cs_coroutine.start(wait)
end
if self.finishCallback ~= nil then
self.finishCallback(callback)
end
else
self._mapNode.FinishRoot:SetActive(false)
end
end
function GoldenSpyResultCtrl:OnBtnClick_Finish()
if self.bResult then
EventManager.Hit(EventId.ClosePanel, self._panel._nPanelId)
else
self.bResult = true
self._mapNode.GoNextRoot:SetActive(not self.bResult)
self._mapNode.FinishRoot:SetActive(self.bResult)
self:SetFinishActive(self.bResult)
end
end
function GoldenSpyResultCtrl:OnBtnClick_GoNext()
EventManager.Hit(EventId.ClosePanel, PanelId.GoldenSpyResultPanel)
EventManager.Hit(EventId.ClosePanel, self._panel._nPanelId)
if self.goNextCallback ~= nil then
self.goNextCallback()
end
end
function GoldenSpyResultCtrl:OnBtnClick_GoNext2()
EventManager.Hit(EventId.ClosePanel, self._panel._nPanelId)
if self.goNextCallback ~= nil then
self.goNextLevelCallback(self.nextGroupId, self.nextLevelId)
end
end
return GoldenSpyResultCtrl
@@ -0,0 +1,55 @@
local GoldenSpyTargetScoreCtrl = class("GoldenSpyTargetScoreCtrl", BaseCtrl)
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
GoldenSpyTargetScoreCtrl._mapNodeConfig = {
blur = {},
animator = {
sNodeName = "----SafeAreaRoot----",
sComponentName = "Animator"
},
AnimRoot = {},
UIParticle = {},
btn_close = {
sNodeName = "btn_TargetClose",
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
txt_ScoreTitle = {
sComponentName = "TMP_Text",
sLanguageId = "GoldenSpy_Result_GoNextTarget1"
},
txt_Num = {sComponentName = "TMP_Text"},
txt_Num2 = {sComponentName = "TMP_Text"}
}
GoldenSpyTargetScoreCtrl._mapEventConfig = {}
GoldenSpyTargetScoreCtrl._mapRedDotConfig = {}
function GoldenSpyTargetScoreCtrl:Awake()
end
function GoldenSpyTargetScoreCtrl:ShowPanel(nTargetScore, nCurScore)
self.gameObject:SetActive(true)
self._mapNode.AnimRoot:SetActive(false)
self._mapNode.UIParticle:SetActive(false)
self._mapNode.blur:SetActive(true)
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
self._mapNode.AnimRoot:SetActive(true)
self._mapNode.UIParticle:SetActive(true)
end
cs_coroutine.start(wait)
self._mapNode.animator:Play("open")
self.tbGamepadUINode = {}
GamepadUIManager.EnableGamepadUI("GoldenSpyTargetScoreCtrl", self.tbGamepadUINode)
EventManager.Hit(EventId.TemporaryBlockInput, 1)
NovaAPI.SetTMPText(self._mapNode.txt_Num, nTargetScore)
NovaAPI.SetTMPText(self._mapNode.txt_Num2, ConfigTable.GetUIText("GoldenSpy_Result_GoNextTarget2") .. ":" .. nCurScore)
end
function GoldenSpyTargetScoreCtrl:OnBtnClick_Close()
GamepadUIManager.DisableGamepadUI("GoldenSpyTargetScoreCtrl")
self._mapNode.animator:Play("close")
self:AddTimer(1, 0.15, function()
self.gameObject:SetActive(false)
EventManager.Hit("GoldenSpy_TargetScore_Close")
end, true, true, true)
end
return GoldenSpyTargetScoreCtrl
@@ -1,7 +1,7 @@
local GoldenSpyToolBoxCtrl = class("GoldenSpyToolBoxCtrl", BaseCtrl)
local GamepadUIManager = require("GameCore.Module.GamepadUIManager")
local BuffSpritePath = "UI_Activity/_400008/SpriteAtlas/Buff/"
local ItemSpritePath = "UI_Activity/_400008/SpriteAtlas/Item/"
local BuffSpritePath = "UI_Activity/_%s/SpriteAtlas/Buff/"
local ItemSpritePath = "UI_Activity/_%s/SpriteAtlas/Item/"
GoldenSpyToolBoxCtrl._mapNodeConfig = {
txt_toolBox = {
sComponentName = "TMP_Text",
@@ -38,9 +38,11 @@ function GoldenSpyToolBoxCtrl:OnDisable()
end
function GoldenSpyToolBoxCtrl:OnDestroy()
end
function GoldenSpyToolBoxCtrl:Show(tbItem, tbBuff, callback)
function GoldenSpyToolBoxCtrl:Show(tbItem, tbBuff, callback, nActId, tipsPanelId)
self.gameObject:SetActive(true)
self._mapNode.safeAreaRoot:SetActive(false)
self.nActId = nActId
self.nTipsPanelId = tipsPanelId
self:RefreshBuffList(tbBuff)
self:RefreshItemList(tbItem)
self.callback = callback
@@ -73,7 +75,7 @@ function GoldenSpyToolBoxCtrl:OnRefreshBuffGrid(goGrid, gridIndex)
objCtrl = self:BindCtrlByNode(goGrid, "Game.UI.Activity.GoldenSpy.GoldenSpyBuffCellCtrl")
self.mapBuffCellCtrl[nInstanceId] = objCtrl
end
objCtrl:SetData(self.tbBuff[nIndex])
objCtrl:SetData(self.tbBuff[nIndex], self.nActId, self.nTipsPanelId)
end
function GoldenSpyToolBoxCtrl:RefreshItemList(tbItem)
self.tbShowItem = tbItem
@@ -95,7 +97,7 @@ function GoldenSpyToolBoxCtrl:OnRefreshItemGrid(goGrid, gridIndex)
end
local img_icon = goGrid.transform:Find("db/icon"):GetComponent("Image")
local txt_score = goGrid.transform:Find("db/txt_score"):GetComponent("TMP_Text")
self:SetPngSprite(img_icon, ItemSpritePath .. itemCfg.IconPath .. "_s")
self:SetPngSprite(img_icon, string.format(ItemSpritePath, self.nActId) .. itemCfg.IconPath .. "_s")
NovaAPI.SetTMPText(txt_score, itemScore)
end
function GoldenSpyToolBoxCtrl:OnBtnClick_Close()
@@ -3,7 +3,7 @@ MiningGameGuidePanel._sUIResRootPath = "UI_Activity/"
MiningGameGuidePanel._tbDefine = {
{
sPrefabPath = "_400011/MiningGameGuidePanel.prefab",
sCtrlName = "Game.UI.Activity.Mining.400011.MiningGameGuideCtrl"
sCtrlName = "Game.UI.Activity.Mining.MiningGameGuideCtrl"
}
}
function MiningGameGuidePanel:Awake()
@@ -5,10 +5,11 @@ MiningGamePanel._sUIResRootPath = "UI_Activity/"
MiningGamePanel._tbDefine = {
{
sPrefabPath = "_400011/MiningGamePanel.prefab",
sCtrlName = "Game.UI.Activity.Mining.400011.MiningGameCtrl"
sCtrlName = "Game.UI.Activity.Mining.MiningGameCtrl"
}
}
function MiningGamePanel:Awake()
self.nGuidePanelId = PanelId.MiningGameGuidePanel_400011
end
function MiningGamePanel:OnEnable()
end
@@ -4,7 +4,7 @@ MiningGameQuestPanel._sUIResRootPath = "UI_Activity/"
MiningGameQuestPanel._tbDefine = {
{
sPrefabPath = "_400011/MiningGameQuestPanel.prefab",
sCtrlName = "Game.UI.Activity.Mining.400011.MiningGameQuestCtrl"
sCtrlName = "Game.UI.Activity.Mining.MiningGameQuestCtrl"
}
}
function MiningGameQuestPanel:Awake()
@@ -1,62 +0,0 @@
local MiningStoryCtrl = class("MiningStoryCtrl", BaseCtrl)
MiningStoryCtrl._mapNodeConfig = {
txt_Title = {sComponentName = "TMP_Text"},
loosv = {
sNodeName = "storyList",
sComponentName = "LoopScrollView"
},
btn_Close = {
sComponentName = "UIButton",
callback = "OnBtnClick_ClosePanel"
}
}
MiningStoryCtrl._mapEventConfig = {
MiningStoryFinish = "RefreshData"
}
function MiningStoryCtrl:Init()
self.tbStoryList = {}
self.tbGridCtrl = {}
self.actData = nil
end
function MiningStoryCtrl:Awake(...)
local param = self:GetPanelParam()
if type(param) == "table" then
self.nActId = param[1]
end
self:RefreshData()
end
function MiningStoryCtrl:OnDisable()
end
function MiningStoryCtrl:OnDestroy(...)
if not self.tbGridCtrl then
for k, v in pairs(self.tbGridCtrl) do
self:UnBindCtrlByNode(v)
end
end
end
function MiningStoryCtrl:RefreshData(...)
self:Init()
self:GetData()
end
function MiningStoryCtrl:GetData()
self.actData = PlayerData.Activity:GetActivityDataById(self.nActId)
self.tbStoryList = self.actData:GetGroupStoryData()
table.sort(self.tbStoryList, function(a, b)
return a.id < b.id
end)
self._mapNode.loosv:SetAnim(0.1)
self._mapNode.loosv:Init(#self.tbStoryList, self, self.OnGridRefresh)
end
function MiningStoryCtrl:OnGridRefresh(gridGo, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = gridGo:GetInstanceID()
if not self.tbGridCtrl[nInstanceId] then
self.tbGridCtrl[nInstanceId] = self:BindCtrlByNode(gridGo, "Game.Activity.Mining.400011.MiningStoryCellCtrl")
end
local data = self.tbStoryList[nIndex]
self.tbGridCtrl[nInstanceId]:SetData(data.id, nIndex, data.bIsLock, data.bIsRead)
end
function MiningStoryCtrl:OnBtnClick_ClosePanel()
EventManager.Hit(EventId.ClosePanel, PanelId.MiningGameStory_400002)
end
return MiningStoryCtrl
@@ -1,22 +0,0 @@
local MiningStoryPanel = class("MiningStoryPanel", BasePanel)
MiningStoryPanel._bIsMainPanel = false
MiningStoryPanel._sUIResRootPath = "UI_Activity/"
MiningStoryPanel._tbDefine = {
{
sPrefabPath = "_400011/MiningStoryPanel.prefab",
sCtrlName = "Game.UI.Activity.Mining.400011.MiningStoryCtrl"
}
}
function MiningStoryPanel:Awake()
end
function MiningStoryPanel:OnEnable()
end
function MiningStoryPanel:OnAfterEnter()
end
function MiningStoryPanel:OnDisable()
end
function MiningStoryPanel:OnDestroy()
end
function MiningStoryPanel:OnRelease()
end
return MiningStoryPanel
@@ -1,7 +1,7 @@
local MiningGameCtrl = class("MiningGameCtrl", BaseCtrl)
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
local listPrefabPath = "UI_Activity/_400011/GridCell/"
local assetPath = "UI_Activity/_400011/SpriteAtlas/Sprite/"
local listPrefabPath = "UI_Activity/_%s/GridCell/"
local assetPath = "UI_Activity/_%s/SpriteAtlas/Sprite/"
local signal_typeA = "zs_mining_signal_01"
local signal_typeB = "zs_mining_signal_02"
local signal_typeC = "zs_mining_signal_03"
@@ -89,7 +89,7 @@ function MiningGameCtrl:Awake()
self.miningData = PlayerData.Activity:GetActivityDataById(self.nActId)
if self.miningData:GetIsFirstIn() then
local cb = function()
local DicConfig = ConfigTable.GetData("TopBar", "MiningGame_400011")
local DicConfig = ConfigTable.GetData("TopBar", string.format("MiningGame_%s", self.nActId))
if DicConfig ~= nil then
local dicId = DicConfig.EntryId
if dicId ~= 0 then
@@ -110,7 +110,7 @@ function MiningGameCtrl:OnEnable()
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Activity_MiningEnd"))
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
EventManager.Hit(EventId.ClosePanel, PanelId.MiningGame_400011)
EventManager.Hit(EventId.ClosePanel, self._panel.nPanelId)
NovaAPI.InputEnable()
end
cs_coroutine.start(wait)
@@ -162,14 +162,14 @@ end
function MiningGameCtrl:UpdateLevelData()
self:InitData()
local config = self.miningData:GetMiningCfg()
local prefabPath = listPrefabPath .. config.GridListPrefab .. ".prefab"
local prefabPath = string.format(listPrefabPath, self.nActId) .. config.GridListPrefab .. ".prefab"
if self.gridListCtrl == nil then
for i = 1, 21 do
delChildren(self._mapNode.cellPos[i].transform)
local goCell = self:CreatePrefabInstance(prefabPath, self._mapNode.cellPos[i].transform)
goCell.name = "cell" .. i
end
self.gridListCtrl = self:BindCtrlByNode(self._mapNode.GirdListPrefab, "Game.UI.Activity.Mining.400011.MiningGridListCtrl")
self.gridListCtrl = self:BindCtrlByNode(self._mapNode.GirdListPrefab, "Game.UI.Activity.Mining.MiningGridListCtrl")
self.gridListCtrl:SetData(self.nActId)
end
self:UpdateSupData()
@@ -232,13 +232,13 @@ function MiningGameCtrl:UpdateRewardList()
local img_get = self._mapNode.signal[i].transform:Find("bg_reward/img_get")
local img_signal = self._mapNode.signal[i].transform:Find("bg_reward/img_signal")
if rewardConfig.MiningItemType == GameEnum.miningRewardType.RewardTypeA then
self:SetPngSprite(img_signal:GetComponent("Image"), assetPath .. signal_typeA)
self:SetPngSprite(img_signal:GetComponent("Image"), string.format(assetPath, self.nActId) .. signal_typeA)
elseif rewardConfig.MiningItemType == GameEnum.miningRewardType.RewardTypeB then
self:SetPngSprite(img_signal:GetComponent("Image"), assetPath .. signal_typeB)
self:SetPngSprite(img_signal:GetComponent("Image"), string.format(assetPath, self.nActId) .. signal_typeB)
elseif rewardConfig.MiningItemType == GameEnum.miningRewardType.RewardTypeC then
self:SetPngSprite(img_signal:GetComponent("Image"), assetPath .. signal_typeC)
self:SetPngSprite(img_signal:GetComponent("Image"), string.format(assetPath, self.nActId) .. signal_typeC)
else
self:SetPngSprite(img_signal:GetComponent("Image"), assetPath .. signal_typeD)
self:SetPngSprite(img_signal:GetComponent("Image"), string.format(assetPath, self.nActId) .. signal_typeD)
end
img_signal:GetComponent("Image"):SetNativeSize()
img_get.gameObject:SetActive(rewardData.bIsGet)
@@ -283,7 +283,7 @@ function MiningGameCtrl:CheckPassAllLevel()
self._mapNode.GirdListPrefab:SetActive(not bPassAllLevel)
end
function MiningGameCtrl:OnBtnClick_OpenGuidePanel()
EventManager.Hit(EventId.OpenPanel, PanelId.MiningGameGuidePanel_400011, self.nActId)
EventManager.Hit(EventId.OpenPanel, self._panel.nGuidePanelId, self.nActId)
end
function MiningGameCtrl:OnBtnClick_OpenTask()
if PlayerData.Activity:IsActivityInActivityGroup(self.nActId) then
@@ -42,7 +42,7 @@ function MiningGameGuideCtrl:Awake()
end
self.miningData = PlayerData.Activity:GetActivityDataById(self.nActId)
local idList = self.miningData:GetDicGroupId()
self.cardPrefabPath = "UI_Activity/_400011/CardCell.prefab"
self.cardPrefabPath = string.format("UI_Activity/_%s/CardCell.prefab", self.nActId)
self.CardCtrl = {}
self:InitList(idList)
end
@@ -68,7 +68,7 @@ function MiningGameGuideCtrl:InitList(list)
end
if go ~= nil then
go.name = config.Id
local ctrl = self:BindCtrlByNode(go, "Game.UI.Activity.Mining.400011.MiningGameGuideCardCtrl")
local ctrl = self:BindCtrlByNode(go, "Game.UI.Activity.Mining.MiningGameGuideCardCtrl")
ctrl:SetData(config.Id)
table.insert(self.CardCtrl, ctrl)
end
@@ -63,7 +63,7 @@ function MiningGameQuestCtrl:OnGridRefresh(goGrid, gridIndex)
local nIndex = gridIndex + 1
local nInstanceId = goGrid:GetInstanceID()
if not self.tbGridCtrl[nInstanceId] then
self.tbGridCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.Activity.Mining.400011.MiningQuestCellCtrl")
self.tbGridCtrl[nInstanceId] = self:BindCtrlByNode(goGrid, "Game.UI.Activity.Mining.MiningQuestCellCtrl")
end
self.tbGridCtrl[nInstanceId]:SetData(self.nActId, self.tbQuestList[nIndex])
end
@@ -13,7 +13,7 @@ local ColumnCount = {
MiningGridListCtrl._mapNodeConfig = {
cell = {
nCount = 21,
sCtrlName = "Game.UI.Activity.Mining.400011.MiningGridCellCtrl"
sCtrlName = "Game.UI.Activity.Mining.MiningGridCellCtrl"
},
reward_Go = {nCount = 3},
reward = {nCount = 3, sComponentName = "Image"}
@@ -15,10 +15,11 @@ ThrowGiftSettleCtrl._mapNodeConfig = {
sActionIconType = "Dark"
},
txtBtnClose = {
nCount = 2,
sComponentName = "TMP_Text",
sLanguageId = "ThrowGift_Settle_Close"
},
txtBtnConfirm = {sComponentName = "TMP_Text"},
txtBtnConfirm = {nCount = 2, sComponentName = "TMP_Text"},
TMPSettleScoreTitle = {
sComponentName = "TMP_Text",
sLanguageId = "ThrowGift_Settle_ScoreTitle"
@@ -67,7 +68,9 @@ end
function ThrowGiftSettleCtrl:ShowSettle(bWin, nScore, nGift, nPenguin, bShowPenguin, bNextUnlock, changeInfo, nLevelId)
self.bWin = bWin
GamepadUIManager.EnableGamepadUI("ThrowGiftSettle", self.tbGamepadUINode)
NovaAPI.SetTMPText(self._mapNode.txtBtnConfirm, self.bWin and ConfigTable.GetUIText("ThrowGift_Settle_NextLevel") or ConfigTable.GetUIText("ThrowGift_Settle_Restart"))
local sConfirm = self.bWin and ConfigTable.GetUIText("ThrowGift_Settle_NextLevel") or ConfigTable.GetUIText("ThrowGift_Settle_Restart")
NovaAPI.SetTMPText(self._mapNode.txtBtnConfirm[1], sConfirm)
NovaAPI.SetTMPText(self._mapNode.txtBtnConfirm[2], sConfirm)
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
NovaAPI.SetCanvasGroupAlpha(self.canvasGroup, 1)
+24 -1
View File
@@ -39,7 +39,8 @@ local sActTypePath = {
[GameEnum.activityType.JointDrill] = "JointDrill",
[GameEnum.activityType.Advertise] = "Advertise",
[GameEnum.activityType.Task] = "ActivityTask",
[GameEnum.activityType.PenguinCard] = "PenguinCard"
[GameEnum.activityType.PenguinCard] = "PenguinCard",
[GameEnum.activityType.Double] = "DoubleDrop"
}
function ActivityListCtrl:InitActivityList(nCurActId)
local tbActList = PlayerData.Activity:GetSortedActList()
@@ -380,6 +381,26 @@ function ActivityListCtrl:AddPenguinCardActivityCtrl(actData)
actCtrl.gameObject:SetActive(true)
actCtrl:InitActData(actData)
end
function ActivityListCtrl:AddDoubleDropActivityCtrl(actData)
local actCtrl = self.tbActCtrlObj[actData:GetActId()]
if nil == actCtrl then
local mapActCfg = ConfigTable.GetData("ActivityDouble", actData:GetActId())
if not mapActCfg then
return
end
local sFolder = sActTypePath[GameEnum.activityType.Double]
if sFolder == nil then
return
end
local sPrefabPath = string.format(sEntranceFolder, mapActCfg.UIAssets)
local goObj = self:CreatePrefabInstance(sPrefabPath, self._mapNode.rtContent)
local sCtrlPath = string.format("Game.UI.Activity.%s.%s", sFolder, mapActCfg.CtrlName)
actCtrl = self:BindCtrlByNode(goObj, sCtrlPath)
self.tbActCtrlObj[actData:GetActId()] = actCtrl
end
actCtrl.gameObject:SetActive(true)
actCtrl:InitActData(actData)
end
function ActivityListCtrl:RefreshSelectActivity(bResetDay)
for _, v in pairs(self.tbActCtrlObj) do
v.gameObject:SetActive(false)
@@ -414,6 +435,8 @@ function ActivityListCtrl:RefreshSelectActivity(bResetDay)
self:AddBdConvertActivityCtrl(actData.actData)
elseif actType == GameEnum.activityType.PenguinCard then
self:AddPenguinCardActivityCtrl(actData.actData)
elseif actType == GameEnum.activityType.Double then
self:AddDoubleDropActivityCtrl(actData.actData)
end
elseif actData.nType == AllEnum.ActivityMainType.ActivityGroup then
self.nSelectActId = actData.actData:GetActGroupId()
@@ -0,0 +1,144 @@
local ActivityDoubleDrop_103001PopUpCtrl = class("ActivityDoubleDrop_103001PopUpCtrl", BaseCtrl)
local LocalData = require("GameCore.Data.LocalData")
local ClientManager = CS.ClientManager.Instance
ActivityDoubleDrop_103001PopUpCtrl._mapNodeConfig = {
goContent = {
sNodeName = "---Common---"
},
btnGo = {
sComponentName = "UIButton",
callback = "OnBtnClick_Goto"
},
txtBtnGo = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_PopUp_Goto_1"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
txtTime = {sComponentName = "TMP_Text"},
btnDontShow = {
sComponentName = "UIButton",
callback = "OnBtnClick_DontShowAgain"
},
imgDontShow1 = {},
imgDontShow2 = {},
txtDontShow = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_DontShow_PopUp_Again"
}
}
ActivityDoubleDrop_103001PopUpCtrl._mapEventConfig = {}
function ActivityDoubleDrop_103001PopUpCtrl:ShowPopUp(actId, callback, index)
self.popUpIndex = index
self.dontShowAgain = false
self.nCurActId = actId
self.callback = callback
self.actCfg = ConfigTable.GetData("Activity", self.nCurActId)
local actData = PlayerData.Activity:GetActivityDataById(self.nCurActId)
if actData == nil then
return
end
self.nOpenTime = actData:GetActOpenTime()
self.nEndTime = actData:GetActEndTime()
self:RefreshTimeout()
if nil == self.remainTimer then
self.remainTimer = self:AddTimer(0, 1, "RefreshTimeout", true, true, true)
end
self._mapNode.imgDontShow1:SetActive(not self.dontShowAgain)
self._mapNode.imgDontShow2:SetActive(self.dontShowAgain)
self.anim = self.gameObject:GetComponent("Animator")
self:PlayOpenAnim()
end
function ActivityDoubleDrop_103001PopUpCtrl:PlayOpenAnim()
if self.anim then
self.anim:Play("open", 0, 0)
end
end
function ActivityDoubleDrop_103001PopUpCtrl:RefreshTimeout()
local endTime = self.nEndTime
local curTime = ClientManager.serverTimeStamp
local remainTime = endTime - curTime
if remainTime < 0 then
if self.remainTimer ~= nil then
self.remainTimer:Cancel()
self.remainTimer = nil
end
return
end
local sTimeStr = ""
if remainTime <= 60 then
local sec = math.floor(remainTime)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Sec") or "", sec)
elseif 60 < remainTime and remainTime <= 3600 then
local min = math.floor(remainTime / 60)
local sec = math.floor(remainTime - min * 60)
if sec == 0 then
min = min - 1
sec = 60
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Min") or "", min, sec)
elseif 3600 < remainTime and remainTime <= 86400 then
local hour = math.floor(remainTime / 3600)
local min = math.floor((remainTime - hour * 3600) / 60)
if min == 0 then
hour = hour - 1
min = 60
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Hour") or "", hour, min)
elseif 86400 < remainTime then
local day = math.floor(remainTime / 86400)
local hour = math.floor((remainTime - day * 86400) / 3600)
if hour == 0 then
day = day - 1
hour = 24
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Day") or "", day, hour)
end
NovaAPI.SetTMPText(self._mapNode.txtTime, sTimeStr)
end
function ActivityDoubleDrop_103001PopUpCtrl:ClosePopUp(callback)
if self.anim ~= nil then
self.anim:Play("close", 0, 0)
self:AddTimer(1, 0.1, function()
if callback ~= nil then
callback()
end
end, true, true, true)
EventManager.Hit(EventId.TemporaryBlockInput, 0.1)
elseif callback ~= nil then
callback()
end
end
function ActivityDoubleDrop_103001PopUpCtrl:OnBtnClick_DontShowAgain()
self.dontShowAgain = not self.dontShowAgain
self._mapNode.imgDontShow1:SetActive(not self.dontShowAgain)
self._mapNode.imgDontShow2:SetActive(self.dontShowAgain)
LocalData.SetPlayerLocalData("Act_PopUp_DontShow" .. self.nCurActId, self.dontShowAgain)
end
function ActivityDoubleDrop_103001PopUpCtrl:OnBtnClick_Close()
self:ClosePopUp(self.callback)
end
function ActivityDoubleDrop_103001PopUpCtrl:OnBtnClick_Goto()
local callback = function()
if nil ~= self.nCurActId then
PopUpManager.InterruptPopUp(self.popUpIndex)
PlayerData.Activity:SendActivityDetailMsg()
local endTime = self.nEndTime
local curTime = ClientManager.serverTimeStamp
local remainTime = endTime - curTime
if remainTime <= 0 then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Activity_Invalid_Tip_3"))
if self.callback ~= nil then
self.callback()
end
return
end
EventManager.Hit(EventId.ClosePanel, PanelId.ActivityPopUp)
EventManager.Hit(EventId.OpenPanel, PanelId.ActivityList, self.nCurActId)
end
end
self:ClosePopUp(callback)
end
return ActivityDoubleDrop_103001PopUpCtrl
@@ -0,0 +1,160 @@
local ActivityGunStorm_10109PopUpCtrl = class("ActivityGunStorm_10109PopUpCtrl", BaseCtrl)
local TimerManager = require("GameCore.Timer.TimerManager")
local LocalData = require("GameCore.Data.LocalData")
local ClientManager = CS.ClientManager.Instance
ActivityGunStorm_10109PopUpCtrl._mapNodeConfig = {
goContent = {
sNodeName = "---Common---"
},
btnGo = {
sComponentName = "UIButton",
callback = "OnBtnClick_Goto"
},
txtBtnGo = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_PopUp_Goto"
},
btnClose = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
btnCloseFullscreen = {
sComponentName = "UIButton",
callback = "OnBtnClick_Close"
},
txtDate = {sComponentName = "TMP_Text"},
txtTime = {sComponentName = "TMP_Text"},
btnDontShow = {
sComponentName = "UIButton",
callback = "OnBtnClick_DontShowAgain"
},
imgDontShow1 = {},
imgDontShow2 = {},
txtDontShow = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_DontShow_PopUp_Again"
}
}
ActivityGunStorm_10109PopUpCtrl._mapEventConfig = {}
function ActivityGunStorm_10109PopUpCtrl:ShowPopUp(actId, callback, index)
self.popUpIndex = index
self.dontShowAgain = false
self.nCurActId = actId
self.callback = callback
self.actGroupCfg = ConfigTable.GetData("ActivityGroup", self.nCurActId)
self.nOpenTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(self.actGroupCfg.StartTime)
self.nEndTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(self.actGroupCfg.EndTime)
self:RefreshTimeout()
self:RefreshDate()
if nil == self.remainTimer then
self.remainTimer = self:AddTimer(0, 1, "RefreshTimeout", true, true, true)
end
self._mapNode.imgDontShow1:SetActive(not self.dontShowAgain)
self._mapNode.imgDontShow2:SetActive(self.dontShowAgain)
self.anim = self.gameObject:GetComponent("Animator")
self:PlayOpenAnim()
end
function ActivityGunStorm_10109PopUpCtrl:PlayOpenAnim()
if self.anim then
self.anim:Play("open", 0, 0)
end
end
function ActivityGunStorm_10109PopUpCtrl:RefreshDate()
local nOpenMonth = tonumber(os.date("%m", self.nOpenTime))
local nOpenDay = tonumber(os.date("%d", self.nOpenTime))
local nEndMonth = tonumber(os.date("%m", self.nEndTime))
local nEndDay = tonumber(os.date("%d", self.nEndTime))
local strOpenDay = string.format("%d", nOpenDay)
local strEndDay = string.format("%d", nEndDay)
local dateStr = string.format("%s/%s ~ %s/%s", nOpenMonth, strOpenDay, nEndMonth, strEndDay)
NovaAPI.SetTMPText(self._mapNode.txtDate, dateStr)
end
function ActivityGunStorm_10109PopUpCtrl:RefreshTimeout()
local endTime = self.nEndTime
local curTime = ClientManager.serverTimeStamp
local remainTime = endTime - curTime
if remainTime < 0 then
if self.remainTimer ~= nil then
self.remainTimer:Cancel()
self.remainTimer = nil
end
return
end
local sTimeStr = ""
if remainTime <= 60 then
local sec = math.floor(remainTime)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Sec") or "", sec)
elseif 60 < remainTime and remainTime <= 3600 then
local min = math.floor(remainTime / 60)
local sec = math.floor(remainTime - min * 60)
if sec == 0 then
min = min - 1
sec = 60
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Min") or "", min, sec)
elseif 3600 < remainTime and remainTime <= 86400 then
local hour = math.floor(remainTime / 3600)
local min = math.floor((remainTime - hour * 3600) / 60)
if min == 0 then
hour = hour - 1
min = 60
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Hour") or "", hour, min)
elseif 86400 < remainTime then
local day = math.floor(remainTime / 86400)
local hour = math.floor((remainTime - day * 86400) / 3600)
if hour == 0 then
day = day - 1
hour = 24
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Day") or "", day, hour)
end
NovaAPI.SetTMPText(self._mapNode.txtTime, sTimeStr)
end
function ActivityGunStorm_10109PopUpCtrl:OnBtnClick_DontShowAgain()
self.dontShowAgain = not self.dontShowAgain
self._mapNode.imgDontShow1:SetActive(not self.dontShowAgain)
self._mapNode.imgDontShow2:SetActive(self.dontShowAgain)
LocalData.SetPlayerLocalData("Act_PopUp_DontShow" .. self.nCurActId, self.dontShowAgain)
end
function ActivityGunStorm_10109PopUpCtrl:OnBtnClick_Close()
if self.callback ~= nil then
if self.anim then
self.anim:Play("close")
self:AddTimer(1, 0.2, function()
self.callback()
end, true, true, true)
else
self.callback()
end
end
end
function ActivityGunStorm_10109PopUpCtrl:OnBtnClick_Goto()
if nil ~= self.nCurActId then
PopUpManager.InterruptPopUp(self.popUpIndex)
PlayerData.Activity:SendActivityDetailMsg()
self.anim:Play("close")
self:AddTimer(1, 0.2, function()
local endTime = self.nEndTime
local curTime = ClientManager.serverTimeStamp
local remainTime = endTime - curTime
if remainTime <= 0 then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Activity_Invalid_Tip_3"))
if self.callback ~= nil then
self.callback()
end
return
end
EventManager.Hit(EventId.ClosePanel, PanelId.ActivityPopUp)
if self.actGroupCfg.TransitionId ~= nil and 0 < self.actGroupCfg.TransitionId then
local callback = function()
EventManager.Hit(EventId.OpenPanel, self.actGroupCfg.PanelId, self.actGroupCfg.Id)
end
EventManager.Hit(EventId.SetTransition, self.actGroupCfg.TransitionId, callback)
else
EventManager.Hit(EventId.OpenPanel, self.actGroupCfg.PanelId, self.actGroupCfg.Id)
end
end, true, true, true)
end
end
return ActivityGunStorm_10109PopUpCtrl
@@ -58,11 +58,13 @@ end
function ActivitySwimPopUpCtrl:RefreshDate()
local nOpenMonth = tonumber(os.date("%m", self.nOpenTime))
local nOpenDay = tonumber(os.date("%d", self.nOpenTime))
local nOpenYear = tonumber(os.date("%Y", self.nOpenTime))
local nEndMonth = tonumber(os.date("%m", self.nEndTime))
local nEndDay = tonumber(os.date("%d", self.nEndTime))
local nEndYear = tonumber(os.date("%Y", self.nEndTime))
local strOpenDay = string.format("%d", nOpenDay)
local strEndDay = string.format("%d", nEndDay)
local dateStr = string.format("%s/%s ~ %s/%s", nOpenMonth, strOpenDay, nEndMonth, strEndDay)
local dateStr = string.format("%s/%s/%s ~ %s/%s/%s", nOpenYear, nOpenMonth, strOpenDay, nEndYear, nEndMonth, strEndDay)
NovaAPI.SetTMPText(self._mapNode.txtDate, dateStr)
end
function ActivitySwimPopUpCtrl:RefreshTimeout()
@@ -587,7 +587,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
return
end
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
@@ -575,7 +575,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
return
end
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
@@ -651,7 +651,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
return
end
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
@@ -747,7 +747,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
return
end
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
@@ -731,7 +731,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
return
end
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
@@ -759,7 +759,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
return
end
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
@@ -757,7 +757,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
end
self:AddTimer(1, 0.2, function()
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end, true, true, true)
end
function ActivityLevelsSelectCtrl:OnEvent_ClosePanel(nPanelId)
@@ -744,7 +744,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
end
self:AddTimer(1, 0.2, function()
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end, true, true, true)
end
function ActivityLevelsSelectCtrl:OnEvent_ClosePanel(nPanelId)
@@ -0,0 +1,173 @@
local ActivityGunStormCtrl = class("ActivityGunStormCtrl", BaseCtrl)
local TimerManager = require("GameCore.Timer.TimerManager")
local ClientManager = CS.ClientManager.Instance
ActivityGunStormCtrl._mapNodeConfig = {
btnGo = {
sComponentName = "UIButton",
callback = "OnBtnClick_Go"
},
txtTime = {sComponentName = "TMP_Text"},
svReward = {
sNodeName = "PreviewUpgradeMaterial",
sComponentName = "LoopScrollView"
},
txtAdvanceMat = {
sComponentName = "TMP_Text",
sLanguageId = "MessageBox_Reward"
},
txtDate = {sComponentName = "TMP_Text"},
imgLock = {},
txtLock = {sComponentName = "TMP_Text"},
imgEnd = {},
txtActivityEnd = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_End"
},
imgRemaineTime = {},
txtBtnGo = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_TowerAllOpen_Go"
},
txtBtnActDetail = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Btn_Detail"
},
btnActDetail = {
sComponentName = "UIButton",
callback = "OnBtnClick_Detail"
}
}
function ActivityGunStormCtrl:Awake()
self.tbGridCtrl = {}
end
function ActivityGunStormCtrl:OnDisable()
self:UnbindCtrl()
end
function ActivityGunStormCtrl:InitActData(actData)
self.actData = actData
self:RefreshLockState()
self:RefreshDate()
self:RefreshTimeout()
self:RefreshReward()
end
function ActivityGunStormCtrl:UnInit()
self:UnbindCtrl()
end
function ActivityGunStormCtrl:UnbindCtrl()
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
self:UnbindCtrlByNode(objCtrl)
self.tbGridCtrl[nInstanceId] = nil
end
self.tbGridCtrl = {}
end
function ActivityGunStormCtrl:RefreshLockState()
local IsUnlock, txtLock = self.actData:IsUnlock()
self._mapNode.imgLock.gameObject:SetActive(not IsUnlock)
self._mapNode.btnGo.gameObject:SetActive(IsUnlock)
if not IsUnlock then
NovaAPI.SetTMPText(self._mapNode.txtLock, txtLock)
end
end
function ActivityGunStormCtrl:RefreshTimeout()
local endTime = self.actData:GetActGroupEndTime()
local curTime = ClientManager.serverTimeStamp
local remainTime = endTime - curTime
self._mapNode.imgRemaineTime:SetActive(0 < remainTime)
self._mapNode.imgEnd:SetActive(remainTime <= 0)
if remainTime < 0 then
TimerManager.Remove(self.remainTimer)
self.remainTimer = nil
return
end
local sTimeStr = ""
if remainTime <= 60 then
local sec = math.floor(remainTime)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Sec") or "", sec)
elseif 60 < remainTime and remainTime <= 3600 then
local min = math.floor(remainTime / 60)
local sec = math.floor(remainTime - min * 60)
if sec == 0 then
min = min - 1
sec = 60
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Min") or "", min, sec)
elseif 3600 < remainTime and remainTime <= 86400 then
local hour = math.floor(remainTime / 3600)
local min = math.floor((remainTime - hour * 3600) / 60)
if min == 0 then
hour = hour - 1
min = 60
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Hour") or "", hour, min)
elseif 86400 < remainTime then
local day = math.floor(remainTime / 86400)
local hour = math.floor((remainTime - day * 86400) / 3600)
if hour == 0 then
day = day - 1
hour = 24
end
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Remain_Time_Day") or "", day, hour)
end
NovaAPI.SetTMPText(self._mapNode.txtTime, sTimeStr)
end
function ActivityGunStormCtrl:RefreshDate()
local nOpenMonth, nOpenDay, nEndMonth, nEndDay, nOpenYear, nEndYear = self.actData:GetActGroupDate()
local strOpenDay = string.format("%d", nOpenDay)
local strEndDay = string.format("%d", nEndDay)
local dateStr = string.format("%s/%s/%s ~ %s/%s/%s", nOpenYear, nOpenMonth, strOpenDay, nEndYear, nEndMonth, strEndDay)
NovaAPI.SetTMPText(self._mapNode.txtDate, dateStr)
end
function ActivityGunStormCtrl:RefreshReward()
local actGroupCfg = self.actData:GetActGroupCfgData()
local rewardData = actGroupCfg.RewardsShow
for nInstanceId, objCtrl in pairs(self.tbGridCtrl) do
self:UnbindCtrlByNode(objCtrl)
self.tbGridCtrl[nInstanceId] = nil
end
self._mapNode.svReward:Init(#rewardData, self, self.RefreshRewardGridItem, self.BtnRewardGridClick)
end
function ActivityGunStormCtrl:RefreshRewardGridItem(go, index)
local actGroupCfg = self.actData:GetActGroupCfgData()
local rewardData = actGroupCfg.RewardsShow
local rewardId = rewardData[index + 1]
local nInstanceID = go:GetInstanceID()
if not self.tbGridCtrl[nInstanceID] then
self.tbGridCtrl[nInstanceID] = self:BindCtrlByNode(go, "Game.UI.TemplateEx.TemplateItemCtrl")
end
self.tbGridCtrl[nInstanceID]:SetItem(rewardId)
end
function ActivityGunStormCtrl:BtnRewardGridClick(goGrid, gridIndex)
local nIndex = gridIndex + 1
local actGroupCfg = self.actData:GetActGroupCfgData()
local rewardData = actGroupCfg.RewardsShow
local item = goGrid.transform:Find("AnimRoot/item")
UTILS.ClickItemGridWithTips(rewardData[nIndex], item.transform, true, true, false)
end
function ActivityGunStormCtrl:OnBtnClick_Go()
local actGroupCfg = self.actData:GetActGroupCfgData()
if actGroupCfg ~= nil and actGroupCfg ~= nil then
if actGroupCfg.TransitionId ~= nil and actGroupCfg.TransitionId > 0 then
local callback = function()
EventManager.Hit(EventId.OpenPanel, PanelId.GunStormPanel, actGroupCfg.Id, true)
end
EventManager.Hit(EventId.SetTransition, actGroupCfg.TransitionId, callback)
else
EventManager.Hit(EventId.OpenPanel, PanelId.GunStormPanel, actGroupCfg.Id, true)
end
end
end
function ActivityGunStormCtrl:OnBtnClick_Detail()
local actGroupCfg = self.actData:GetActGroupCfgData()
if actGroupCfg == nil then
return
end
local msg = {
nType = AllEnum.MessageBox.Desc,
sContent = actGroupCfg.DesText,
sTitle = ConfigTable.GetUIText("Activity_Btn_Detail")
}
EventManager.Hit(EventId.OpenMessageBox, msg)
end
function ActivityGunStormCtrl:ClearActivity()
end
return ActivityGunStormCtrl
@@ -0,0 +1,139 @@
local ActivityLevelsLvCtrl = class("ActivityLevelsLvCtrl", BaseCtrl)
local lvIndexTitle = "{0}-{1}"
ActivityLevelsLvCtrl._mapNodeConfig = {
tog = {sComponentName = "UIButton"},
Select = {},
SelectAni = {sNodeName = "Select", sComponentName = "Animator"},
unSelect = {},
txt_Select = {sComponentName = "TMP_Text"},
txt_unSelect = {sComponentName = "TMP_Text"},
rt_Targets = {},
btnTarget = {sComponentName = "Button", nCount = 3},
rtLockInfo = {},
imgLockMask = {},
bgCondition = {},
rtLockPreLv = {},
redH = {},
AnimSwitch = {sComponentName = "Animator"},
imgSlc = {}
}
function ActivityLevelsLvCtrl:InitData(parent, nType, activityData, data, isOpen, isLevelUnLock)
self._mapNode.imgSlc:SetActive(false)
local txtLockConditionTime = self._mapNode.bgCondition.transform:Find("txtLockCondition"):GetComponent("TMP_Text")
if self.timerRun ~= nil then
self.timerRun:Pause(true)
self.timerRun = nil
end
self._mapNode.Select:SetActive(false)
self.lvLock = false
if isOpen and isLevelUnLock then
self._mapNode.rt_Targets:SetActive(true)
for i = 1, 3 do
self._mapNode.btnTarget[i].interactable = i <= data.Star
end
self._mapNode.rtLockInfo:SetActive(false)
self._mapNode.rtLockPreLv:SetActive(false)
self._mapNode.bgCondition:SetActive(false)
elseif isOpen and not isLevelUnLock then
self._mapNode.rt_Targets:SetActive(false)
self._mapNode.rtLockInfo:SetActive(true)
self._mapNode.imgLockMask:SetActive(false)
self._mapNode.rtLockPreLv:SetActive(true)
self._mapNode.bgCondition:SetActive(false)
elseif not isOpen then
self._mapNode.rt_Targets:SetActive(false)
self._mapNode.rtLockInfo:SetActive(true)
self._mapNode.imgLockMask:SetActive(true)
self._mapNode.rtLockPreLv:SetActive(false)
self._mapNode.bgCondition:SetActive(true)
local day = activityData:GetUnLockDay(nType, data.baseData.Id)
if day == 0 then
local timerCount = function()
local hour, min, sec = parent.activityLevelsData:GetUnLockHour(nType, data.baseData.Id)
if 0 < hour then
NovaAPI.SetTMPText(txtLockConditionTime, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Hour_Color_Common"), "c76153", hour))
elseif 0 < min then
NovaAPI.SetTMPText(txtLockConditionTime, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Min_Color_Common"), "c76153", min))
elseif 0 < sec then
NovaAPI.SetTMPText(txtLockConditionTime, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Sec_Color_Common"), "c76153", sec))
end
end
timerCount()
self.timerRun = self:AddTimer(0, 1, function()
timerCount()
end, true, true, false)
else
NovaAPI.SetTMPText(txtLockConditionTime, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Day_Color_Common"), "c76153", day))
end
self.lvLock = true
end
local strTitle = ""
if nType == GameEnum.ActivityLevelType.Explore then
strTitle = orderedFormat(lvIndexTitle, 1, data.baseData.Difficulty)
elseif nType == GameEnum.ActivityLevelType.Adventure then
strTitle = orderedFormat(lvIndexTitle, 2, data.baseData.Difficulty)
elseif nType == GameEnum.ActivityLevelType.HARD then
strTitle = orderedFormat(lvIndexTitle, 3, data.baseData.Difficulty)
end
NovaAPI.SetTMPText(self._mapNode.txt_Select, strTitle)
NovaAPI.SetTMPText(self._mapNode.txt_unSelect, strTitle)
self._mapNode.tog.onClick:RemoveAllListeners()
local clickCb = function()
if self._mapNode.Select.activeSelf == true then
return
end
self:SetDefault(true)
parent:SetSelectObj(self)
parent:RefreshInstanceInfo(nType, data.baseData.Difficulty, false)
parent.activityLevelsData:ChangeRedDot(nType, data.baseData.Id)
EventManager.Hit(EventId.TemporaryBlockInput, 0.3)
end
self._mapNode.tog.onClick:AddListener(clickCb)
local bInActGroup, nActGroupId = PlayerData.Activity:IsActivityInActivityGroup(parent.nActId)
if bInActGroup then
if nType == GameEnum.ActivityLevelType.Explore then
RedDotManager.RegisterNode(RedDotDefine.ActivityLevel_Explore_Level, {
nActGroupId,
data.baseData.Id
}, self._mapNode.redH)
elseif nType == GameEnum.ActivityLevelType.Adventure then
RedDotManager.RegisterNode(RedDotDefine.ActivityLevel_Adventure_Level, {
nActGroupId,
data.baseData.Id
}, self._mapNode.redH)
elseif nType == GameEnum.ActivityLevelType.HARD then
RedDotManager.RegisterNode(RedDotDefine.ActivityLevel_Hard_Level, {
nActGroupId,
data.baseData.Id
}, self._mapNode.redH)
end
end
end
function ActivityLevelsLvCtrl:SetDefault(isOn)
if self._mapNode.AnimSwitch.enabled == true then
self._mapNode.AnimSwitch.enabled = false
end
if not isOn then
self:ShowArrowAni(false)
end
self._mapNode.Select:SetActive(isOn)
self._mapNode.unSelect:SetActive(not isOn)
self._mapNode.imgSlc:SetActive(isOn)
self._mapNode.txt_Select.gameObject:SetActive(isOn)
self._mapNode.txt_unSelect.gameObject:SetActive(not isOn)
if not self.lvLock and isOn then
self._mapNode.SelectAni:Play("10109_ActitvityLevels_Select")
end
end
function ActivityLevelsLvCtrl:ShowArrowAni(isShow)
end
function ActivityLevelsLvCtrl:FadeIn()
EventManager.Hit(EventId.SetTransition)
end
function ActivityLevelsLvCtrl:OnDisable()
if self.timerRun ~= nil then
self.timerRun:Pause(true)
self.timerRun = nil
end
end
return ActivityLevelsLvCtrl
@@ -0,0 +1,769 @@
local ActivityLevelsSelectCtrl = class("ActivityLevelsSelectCtrl", BaseCtrl)
local LayoutRebuilder = CS.UnityEngine.UI.LayoutRebuilder
local mapToggle = {
[1] = GameEnum.diffculty.Diffculty_1,
[2] = GameEnum.diffculty.Diffculty_2,
[3] = GameEnum.diffculty.Diffculty_3,
[4] = GameEnum.diffculty.Diffculty_4,
[5] = GameEnum.diffculty.Diffculty_5,
[6] = GameEnum.diffculty.Diffculty_6,
[7] = GameEnum.diffculty.Diffculty_7,
[8] = GameEnum.diffculty.Diffculty_8,
[9] = GameEnum.diffculty.Diffculty_9,
[10] = GameEnum.diffculty.Diffculty_10
}
local colorSelect = Color(1.0, 0.9882352941176471, 0.9568627450980393, 1)
local colorUnSelect = Color(0.4, 0.13333333333333333, 0.15294117647058825, 1)
local colorSelectLock = Color(0.11764705882352941, 0.12549019607843137, 0.17254901960784313, 1)
local colorUnSelectLock = Color(0.4823529411764706, 0.5333333333333333, 0.6509803921568628, 1)
local timeUnLockColor = "fff7ca"
local colorConditionsUnLock = Color(0.3843137254901961, 0.28627450980392155, 0.21568627450980393, 1)
local colorConditionsLock = Color(0.24313725490196078, 0.18823529411764706, 0.18823529411764706, 1)
local lvIndexTitle = "{0}-{1}"
local twelveLvGroupPadding = {
64,
88,
-140,
0
}
local twelveLvGroupPaddingOpen = {
64,
818,
-140,
0
}
local fourLvGroupPadding = {
320,
88,
-140,
0
}
local fourLvGroupPaddingOpen = {
64,
818,
-140,
0
}
ActivityLevelsSelectCtrl._mapNodeConfig = {
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
goEnemyInfo = {
sCtrlName = "Game.UI.MainlineEx.MainlineMonsterInfoCtrl"
},
togTypeExplore = {
sComponentName = "UIButton",
callback = "OnBtnClick_TogTypeExplore"
},
togTypeExploreCtrl = {
sNodeName = "togTypeExplore",
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl"
},
lockExplore = {
sComponentName = "UIButton",
callback = "OnClick_BtnLockExplore"
},
redExplore = {},
togTypeAdventure = {
sComponentName = "UIButton",
callback = "OnBtnClick_TogTypeAdventure"
},
togTypeAdventureCtrl = {
sNodeName = "togTypeAdventure",
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl"
},
lockAdventure = {
sComponentName = "UIButton",
callback = "OnClick_BtnLockAdventure"
},
redAdventure = {},
togTypeHard = {
sComponentName = "UIButton",
callback = "OnBtnClick_TogTypeHard"
},
togTypeHardCtrl = {
sNodeName = "togTypeHard",
sCtrlName = "Game.UI.TemplateEx.TemplateToggleCtrl"
},
lockHard = {
sComponentName = "UIButton",
callback = "OnClick_BtnLockHard"
},
redHard = {},
rtToggles = {
sNodeName = "srToggle",
sComponentName = "UIScrollRect"
},
rtTogglesTmp = {
sNodeName = "rt_ToggleTmp",
sComponentName = "Transform"
},
togRoot = {
nCount = 12,
sCtrlName = "Game.UI.ActivityTheme.10109.ActivityLevels.ActivityLevelsLvCtrl"
},
rt_Toggle = {},
rt_ToggleTrans = {sNodeName = "rt_Toggle", sComponentName = "Transform"},
btnCloseBg = {
sComponentName = "UIButton",
callback = "OnBtnClick_CloseBossInfo"
},
rtBoss = {},
rtBossAni = {sNodeName = "rtBoss", sComponentName = "Animator"},
txtRecommendLevel = {
sNodeName = "txtSuggestLevel",
sComponentName = "TMP_Text"
},
txtTitle = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Recommend_Lv"
},
txtBuildTitle = {
sComponentName = "TMP_Text",
sLanguageId = "InfinityTower_Recommend_Construct"
},
imgBuild = {sComponentName = "Image"},
TMPName = {sComponentName = "TMP_Text"},
TMPLevel = {sComponentName = "TMP_Text"},
detailDescSc = {sComponentName = "Transform"},
detailDesc = {sComponentName = "TMP_Text"},
btnEnemyInfo = {
sComponentName = "UIButton",
callback = "OnBtnClick_EnemyInfo"
},
tex_EnemyInfo = {
sComponentName = "TMP_Text",
sLanguageId = "Equipment_Instance_EnemyInfo"
},
txtTitleTarget = {
sComponentName = "TMP_Text",
sLanguageId = "RogueBoss_Pause_Target"
},
txtReward = {
sComponentName = "TMP_Text",
sLanguageId = "Level_Award"
},
Task = {sComponentName = "Transform", nCount = 3},
rewardRoot = {sComponentName = "Transform"},
btn_itemTemp = {},
btnListRoot = {},
btnRaid = {
sComponentName = "UIButton",
callback = "OnClickBtnRaid"
},
txtBtnRaid = {
sComponentName = "TMP_Text",
sLanguageId = "Raid_Title_Raid"
},
btnGo = {
sComponentName = "UIButton",
callback = "OnClickBtnGo"
},
txtBtnGoRaidUnlock = {
sComponentName = "TMP_Text",
sLanguageId = "Maninline_Btn_Go"
},
txtBtnGo = {
sComponentName = "TMP_Text",
sLanguageId = "Maninline_Btn_Go"
},
goCoin = {},
txtTicketsCount = {sComponentName = "TMP_Text"},
btnRaidUnlock = {
sComponentName = "UIButton",
callback = "OnClickBtnGo"
},
goCoinRaidUnlock = {},
txtTicketsCountRaidUnlock = {sComponentName = "TMP_Text"},
grpRaidUnlock = {},
TMPRaidUnlockHint = {
sComponentName = "TMP_Text",
sLanguageId = "Raid_Btn_CondStar"
},
ListConditions = {},
ListConditionsObj = {
sNodeName = "Conditions_",
nCount = 2
}
}
ActivityLevelsSelectCtrl._mapEventConfig = {
[EventId.UpdateEnergy] = "OnEvent_UpdateEnergy",
[EventId.ClosePanel] = "OnEvent_ClosePanel"
}
ActivityLevelsSelectCtrl._mapRedDotConfig = {}
function ActivityLevelsSelectCtrl:Awake()
self.detailDescContent = self._mapNode.detailDescSc:Find("Viewport/Content").transform
self.curRequireEnergy = 0
local param = self:GetPanelParam()
if type(param) == "table" then
self.nActId = param[1]
end
self.nLevelType = GameEnum.ActivityLevelType.Explore
self.tabRewardList = {}
self.AniRoot = self.gameObject:GetComponent("Animator")
local bInActGroup, nActGroupId = PlayerData.Activity:IsActivityInActivityGroup(self.nActId)
if bInActGroup then
RedDotManager.RegisterNode(RedDotDefine.ActivityLevel_Explore, {nActGroupId}, self._mapNode.redExplore)
RedDotManager.RegisterNode(RedDotDefine.ActivityLevel_Adventure, {nActGroupId}, self._mapNode.redAdventure)
RedDotManager.RegisterNode(RedDotDefine.ActivityLevel_Hard, {nActGroupId}, self._mapNode.redHard)
end
end
function ActivityLevelsSelectCtrl:OnEnable()
self.isOpenLvMsg = false
self:ShowBossInfo(false, true)
self.timeTab = {}
EventManager.Hit(EventId.SetTransition)
self.SelectTogPreLvLock = nil
self.AniRoot:Play("ActivityLevelsSelect_in")
self:Init()
function self.onScrollValueChanged(value)
self._mapNode.rtTogglesTmp.localPosition = self._mapNode.rt_ToggleTrans.localPosition
end
self._mapNode.rtToggles.onValueChanged:AddListener(self.onScrollValueChanged)
end
function ActivityLevelsSelectCtrl:OnDisable()
self.timeTab = {}
for i = 1, #self.tabRewardList do
local go = self.tabRewardList[i].gameObject
local btnSelect = self.tabRewardList[i].gameObject:GetComponent("UIButton")
btnSelect.onClick:RemoveAllListeners()
self:UnbindCtrlByNode(self.tabRewardList[i])
destroy(go)
end
self.tabRewardList = {}
self.SelectTogPreLvLock = nil
self.SelectObj = nil
if self.onScrollValueChanged ~= nil then
self._mapNode.rtToggles.onValueChanged:RemoveListener(self.onScrollValueChanged)
self.onScrollValueChanged = nil
end
end
function ActivityLevelsSelectCtrl:OnDestroy(...)
end
function ActivityLevelsSelectCtrl:Init()
self.activityLevelsData = PlayerData.Activity:GetActivityDataById(self.nActId)
self:RefreshTogTypeCount()
self:Refresh()
end
function ActivityLevelsSelectCtrl:Refresh()
self.nLevelType = self.activityLevelsData:GetDefaultSelectionType()
self:RefreshTogType(self.nLevelType)
local nDifficulty = self.activityLevelsData:GetDefaultSelectionDifficulty(self.nLevelType)
self:RefreshTogList(self.nLevelType, nDifficulty)
end
function ActivityLevelsSelectCtrl:RefreshTogTypeCount()
self._mapNode.togTypeExploreCtrl:SetText(ConfigTable.GetUIText("ActivityLevels_Explore"))
self._mapNode.togTypeAdventureCtrl:SetText(ConfigTable.GetUIText("ActivityLevels_Adventure"))
self._mapNode.togTypeHardCtrl:SetText(ConfigTable.GetUIText("ActivityLevels_Hard"))
self._mapNode.togTypeExploreCtrl:SetDefaultActivity(self.nLevelType == GameEnum.ActivityLevelType.Explore)
self._mapNode.togTypeAdventureCtrl:SetDefaultActivity(self.nLevelType == GameEnum.ActivityLevelType.Adventure)
self._mapNode.togTypeHardCtrl:SetDefaultActivity(self.nLevelType == GameEnum.ActivityLevelType.HARD)
local objExploreCert = self._mapNode.togTypeExplore.gameObject.transform:Find("AnimRoot/AnimSwitch/iconCert").gameObject
local objAdventureCert = self._mapNode.togTypeAdventure.gameObject.transform:Find("AnimRoot/AnimSwitch/iconCert").gameObject
local objHardCert = self._mapNode.togTypeHard.gameObject.transform:Find("AnimRoot/AnimSwitch/iconCert").gameObject
self.firstExploreLevel = self.activityLevelsData.levelTabExploreDifficulty[1]
local isOpenExplore = self.activityLevelsData:GetLevelDayOpen(GameEnum.ActivityLevelType.Explore, self.firstExploreLevel)
self._mapNode.lockExplore.gameObject:SetActive(not isOpenExplore)
self.firstAdventureLevel = self.activityLevelsData.levelTabAdventureDifficulty[1]
local isOpenAdventure = self.activityLevelsData:GetLevelDayOpen(GameEnum.ActivityLevelType.Adventure, self.firstAdventureLevel)
self._mapNode.lockAdventure.gameObject:SetActive(not isOpenAdventure)
local txt_SelectAdventure = self._mapNode.togTypeAdventure.gameObject.transform:Find("AnimRoot/AnimSwitch/txt_Select").gameObject
local txt_unSelectAdventure = self._mapNode.togTypeAdventure.gameObject.transform:Find("AnimRoot/AnimSwitch/txt_unSelect").gameObject
txt_SelectAdventure.transform.localScale = isOpenAdventure == true and Vector3.one or Vector3.zero
txt_unSelectAdventure.transform.localScale = isOpenAdventure == true and Vector3.one or Vector3.zero
self.firstHardLevel = self.activityLevelsData.levelTabHardDifficulty[1]
local isOpenHard = self.activityLevelsData:GetLevelDayOpen(GameEnum.ActivityLevelType.HARD, self.firstHardLevel)
self._mapNode.lockHard.gameObject:SetActive(not isOpenHard)
local txt_SelectHard = self._mapNode.togTypeHard.gameObject.transform:Find("AnimRoot/AnimSwitch/txt_Select").gameObject
local txt_unSelectHard = self._mapNode.togTypeHard.gameObject.transform:Find("AnimRoot/AnimSwitch/txt_unSelect").gameObject
txt_SelectHard.transform.localScale = isOpenHard == true and Vector3.one or Vector3.zero
txt_unSelectHard.transform.localScale = isOpenHard == true and Vector3.one or Vector3.zero
objExploreCert:SetActive(true)
for i, v in pairs(self.activityLevelsData.levelTabExplore) do
if v.Star < 3 then
objExploreCert:SetActive(false)
break
end
end
objAdventureCert:SetActive(true)
for i, v in pairs(self.activityLevelsData.levelTabAdventure) do
if v.Star < 3 then
objAdventureCert:SetActive(false)
break
end
end
objHardCert:SetActive(true)
for i, v in pairs(self.activityLevelsData.levelTabHard) do
if v.Star < 3 then
objHardCert:SetActive(false)
break
end
end
end
function ActivityLevelsSelectCtrl:OnClick_BtnLockExplore()
self:FirstLevelLockTips(GameEnum.ActivityLevelType.Explore, self.firstExploreLevel)
end
function ActivityLevelsSelectCtrl:OnClick_BtnLockAdventure()
self:FirstLevelLockTips(GameEnum.ActivityLevelType.Adventure, self.firstAdventureLevel)
end
function ActivityLevelsSelectCtrl:OnClick_BtnLockHard()
self:FirstLevelLockTips(GameEnum.ActivityLevelType.HARD, self.firstHardLevel)
end
function ActivityLevelsSelectCtrl:FirstLevelLockTips(nType, nLevel)
local day = self.activityLevelsData:GetUnLockDay(nType, nLevel)
local strTips = ""
if day == 0 then
local hour, min, sec = self.activityLevelsData:GetUnLockHour(nType, nLevel)
if 0 < hour then
strTips = orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Hour"), hour)
elseif 0 < min then
strTips = orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Min"), min)
elseif 0 < sec then
strTips = orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Sec"), sec)
end
else
strTips = orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_DayOpen"), day)
end
EventManager.Hit(EventId.OpenMessageBox, strTips)
end
function ActivityLevelsSelectCtrl:OnBtnClick_TogTypeExplore()
if self.nLevelType == GameEnum.ActivityLevelType.Explore then
return
end
self:CloseAllTimer()
self.AniRoot:Play("ActivityLevelsSelect_in1")
self.nLevelType = GameEnum.ActivityLevelType.Explore
self:RefreshTogType(self.nLevelType)
local nDifficulty = self.activityLevelsData:GetDefaultSelectionDifficulty(self.nLevelType)
self:RefreshTogList(self.nLevelType, nDifficulty)
end
function ActivityLevelsSelectCtrl:OnBtnClick_TogTypeAdventure()
if self.nLevelType == GameEnum.ActivityLevelType.Adventure then
return
end
self:CloseAllTimer()
self.AniRoot:Play("ActivityLevelsSelect_in1")
self.nLevelType = GameEnum.ActivityLevelType.Adventure
self:RefreshTogType(self.nLevelType)
local nDifficulty = self.activityLevelsData:GetDefaultSelectionDifficulty(self.nLevelType)
self:RefreshTogList(self.nLevelType, nDifficulty)
end
function ActivityLevelsSelectCtrl:OnBtnClick_TogTypeHard()
if self.nLevelType == GameEnum.ActivityLevelType.HARD then
return
end
self:CloseAllTimer()
self.AniRoot:Play("ActivityLevelsSelect_in1")
self.nLevelType = GameEnum.ActivityLevelType.HARD
self:RefreshTogType(self.nLevelType)
local nDifficulty = self.activityLevelsData:GetDefaultSelectionDifficulty(self.nLevelType)
self:RefreshTogList(self.nLevelType, nDifficulty)
end
function ActivityLevelsSelectCtrl:CloseAllTimer()
for i, v in pairs(self.timeTab) do
v:Pause(true)
end
self.timeTab = {}
end
function ActivityLevelsSelectCtrl:RefreshTogType(nType)
self._mapNode.togTypeExploreCtrl:SetTrigger(nType == GameEnum.ActivityLevelType.Explore)
self._mapNode.togTypeAdventureCtrl:SetTrigger(nType == GameEnum.ActivityLevelType.Adventure)
self._mapNode.togTypeHardCtrl:SetTrigger(nType == GameEnum.ActivityLevelType.HARD)
self._mapNode.togTypeExploreCtrl:SetDefaultActivity(nType == GameEnum.ActivityLevelType.Explore)
self._mapNode.togTypeAdventureCtrl:SetDefaultActivity(nType == GameEnum.ActivityLevelType.Adventure)
self._mapNode.togTypeHardCtrl:SetDefaultActivity(nType == GameEnum.ActivityLevelType.HARD)
end
function ActivityLevelsSelectCtrl:RefreshTogList(nType, nDifficulty)
self.SelectObj = nil
local tabLevelInfo, tabLevelInfoDifficulty
self.currentTypeLvCount = 0
if nType == GameEnum.ActivityLevelType.Explore then
tabLevelInfo = self.activityLevelsData.levelTabExplore
tabLevelInfoDifficulty = self.activityLevelsData.levelTabExploreDifficulty
elseif nType == GameEnum.ActivityLevelType.Adventure then
tabLevelInfo = self.activityLevelsData.levelTabAdventure
tabLevelInfoDifficulty = self.activityLevelsData.levelTabAdventureDifficulty
else
tabLevelInfo = self.activityLevelsData.levelTabHard
tabLevelInfoDifficulty = self.activityLevelsData.levelTabHardDifficulty
end
self.currentTypeLvCount = #tabLevelInfoDifficulty
self._mapNode.rtToggles.gameObject:SetActive(true)
local isFour = self.currentTypeLvCount == 4
if self.isOpenLvMsg == false then
local tmpPadding = isFour and fourLvGroupPadding or twelveLvGroupPadding
NovaAPI.SetLayoutGroupPadding(self._mapNode.rt_Toggle, tmpPadding[1], tmpPadding[2], tmpPadding[3], tmpPadding[4])
else
local tmpPadding = isFour and fourLvGroupPaddingOpen or twelveLvGroupPaddingOpen
NovaAPI.SetLayoutGroupPadding(self._mapNode.rt_Toggle, tmpPadding[1], tmpPadding[2], tmpPadding[3], tmpPadding[4])
end
for i = 1, 12 do
self._mapNode.togRoot[i].gameObject:SetActive(i <= self.currentTypeLvCount)
end
for i = 1, self.currentTypeLvCount do
do
local tmpId = tabLevelInfoDifficulty[i]
local tmpData = tabLevelInfo[tmpId]
local isOpen = self.activityLevelsData:GetLevelDayOpen(nType, tmpData.baseData.Id)
local isLevelUnLock = self.activityLevelsData:GetLevelUnLock(nType, tmpData.baseData.Id)
self._mapNode.togRoot[i]:InitData(self, nType, self.activityLevelsData, tmpData, isOpen, isLevelUnLock, self._nSortingOrder)
if nDifficulty == i then
if self.isOpenLvMsg then
self.SelectObj = self._mapNode.togRoot[i]
self._mapNode.togRoot[i]:SetDefault(true)
self:RefreshInstanceInfo(nType, nDifficulty, true)
else
self._mapNode.togRoot[i]:SetDefault(false)
local wait = function()
LayoutRebuilder.ForceRebuildLayoutImmediate(self._mapNode.rt_ToggleTrans.gameObject:GetComponent("RectTransform"))
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
if i < 3 then
self._mapNode.rt_ToggleTrans.localPosition = Vector3(0, self._mapNode.rt_ToggleTrans.localPosition.y, 0)
elseif 10 < i then
self._mapNode.rt_ToggleTrans.localPosition = Vector3(-3444, self._mapNode.rt_ToggleTrans.localPosition.y, 0)
else
self._mapNode.rt_ToggleTrans.localPosition = Vector3(-400 * (i - 2), self._mapNode.rt_ToggleTrans.localPosition.y, 0)
end
end
cs_coroutine.start(wait)
end
else
self._mapNode.togRoot[i]:SetDefault(false)
end
end
end
end
function ActivityLevelsSelectCtrl:SetSelectObj(tmpSelectObj)
if self.SelectObj ~= nil then
self.SelectObj:SetDefault(false)
end
self.SelectObj = tmpSelectObj
end
function ActivityLevelsSelectCtrl:OnBtnClick_CloseBossInfo()
self._mapNode.rtBossAni:Play("rtBoss_out")
self:AddTimer(1, 0.2, function()
self:ShowBossInfo(false, false)
end, true, true, true)
end
function ActivityLevelsSelectCtrl:ShowBossInfo(isShow, isOnEnable)
self.isOpenLvMsg = isShow
self._mapNode.rtBoss:SetActive(isShow)
self._mapNode.btnCloseBg.gameObject:SetActive(isShow)
if not isShow and self.SelectObj ~= nil then
self.SelectObj:SetDefault(false)
self.SelectObj = nil
end
if not isShow and not isOnEnable then
local isFour = self.currentTypeLvCount == 4
local tmpPadding = isFour and fourLvGroupPadding or twelveLvGroupPadding
if isFour then
EventManager.Hit(EventId.TemporaryBlockInput, 0.2)
local moveTime = 0.2
local layoutGroup = self._mapNode.rt_Toggle:GetComponent("HorizontalLayoutGroup")
local startLeft = layoutGroup ~= nil and layoutGroup.padding.left or tmpPadding[1]
NovaAPI.SetLayoutGroupPadding(self._mapNode.rt_Toggle, startLeft, fourLvGroupPaddingOpen[2], fourLvGroupPaddingOpen[3], fourLvGroupPaddingOpen[4])
CS.DG.Tweening.DOVirtual.Float(startLeft, tmpPadding[1], moveTime, function(v)
NovaAPI.SetLayoutGroupPadding(self._mapNode.rt_Toggle, math.floor(v), tmpPadding[2], tmpPadding[3], tmpPadding[4])
end)
else
NovaAPI.SetLayoutGroupPadding(self._mapNode.rt_Toggle, tmpPadding[1], tmpPadding[2], tmpPadding[3], tmpPadding[4])
end
end
end
function ActivityLevelsSelectCtrl:RefreshInstanceInfo(nType, nHard, isInit)
if self.currentTypeLvCount == 12 then
NovaAPI.SetLayoutGroupPadding(self._mapNode.rt_Toggle, twelveLvGroupPaddingOpen[1], twelveLvGroupPaddingOpen[2], twelveLvGroupPaddingOpen[3], twelveLvGroupPaddingOpen[4])
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
local moveTime = isInit and 0.4 or 0.2
if nHard < 3 then
self._mapNode.rt_ToggleTrans:DOLocalMoveX(0, moveTime)
elseif 10 < nHard then
self._mapNode.rt_ToggleTrans:DOLocalMoveX(-3444, moveTime)
else
self._mapNode.rt_ToggleTrans:DOLocalMoveX(-400 * (nHard - 2), moveTime)
end
end
cs_coroutine.start(wait)
elseif self.currentTypeLvCount == 8 then
NovaAPI.SetLayoutGroupPadding(self._mapNode.rt_Toggle, twelveLvGroupPaddingOpen[1], twelveLvGroupPaddingOpen[2], twelveLvGroupPaddingOpen[3], twelveLvGroupPaddingOpen[4])
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
local moveTime = isInit and 0.4 or 0.2
if nHard < 3 then
self._mapNode.rt_ToggleTrans:DOLocalMoveX(0, moveTime)
elseif 6 < nHard then
self._mapNode.rt_ToggleTrans:DOLocalMoveX(-1857, moveTime)
else
self._mapNode.rt_ToggleTrans:DOLocalMoveX(-400 * (nHard - 2), moveTime)
end
end
cs_coroutine.start(wait)
else
local wait = function()
coroutine.yield(CS.UnityEngine.WaitForEndOfFrame())
local moveTime = isInit and 0.4 or 0.2
EventManager.Hit(EventId.TemporaryBlockInput, moveTime)
local layoutGroup = self._mapNode.rt_Toggle:GetComponent("HorizontalLayoutGroup")
local startLeft = layoutGroup ~= nil and layoutGroup.padding.left or fourLvGroupPadding[1]
NovaAPI.SetLayoutGroupPadding(self._mapNode.rt_Toggle, startLeft, fourLvGroupPaddingOpen[2], fourLvGroupPaddingOpen[3], fourLvGroupPaddingOpen[4])
CS.DG.Tweening.DOVirtual.Float(startLeft, fourLvGroupPaddingOpen[1], moveTime, function(v)
NovaAPI.SetLayoutGroupPadding(self._mapNode.rt_Toggle, math.floor(v), fourLvGroupPaddingOpen[2], fourLvGroupPaddingOpen[3], fourLvGroupPaddingOpen[4])
end)
if nHard < 2 then
self._mapNode.rt_ToggleTrans:DOLocalMoveX(0, moveTime)
elseif 3 <= nHard then
self._mapNode.rt_ToggleTrans:DOLocalMoveX(-270, moveTime)
else
self._mapNode.rt_ToggleTrans:DOLocalMoveX(-75 * (nHard - 1), moveTime)
end
end
cs_coroutine.start(wait)
end
self.curSelectHard = nHard
local levelId = 0
self.selectLevelData = nil
if nType == GameEnum.ActivityLevelType.Explore then
levelId = self.activityLevelsData.levelTabExploreDifficulty[nHard]
self.selectLevelData = self.activityLevelsData.levelTabExplore[levelId]
elseif nType == GameEnum.ActivityLevelType.Adventure then
levelId = self.activityLevelsData.levelTabAdventureDifficulty[nHard]
self.selectLevelData = self.activityLevelsData.levelTabAdventure[levelId]
else
levelId = self.activityLevelsData.levelTabHardDifficulty[nHard]
self.selectLevelData = self.activityLevelsData.levelTabHard[levelId]
end
NovaAPI.SetTMPText(self._mapNode.txtRecommendLevel, self.selectLevelData.baseData.SuggestedPower)
local sRank = "Icon/BuildRank/BuildRank_" .. self.selectLevelData.baseData.RecommendBuildRank
self:SetPngSprite(self._mapNode.imgBuild, sRank)
NovaAPI.SetTMPText(self._mapNode.TMPName, self.selectLevelData.baseData.Name)
local strTitle = ""
if nType == GameEnum.ActivityLevelType.Explore then
strTitle = orderedFormat(lvIndexTitle, 1, self.selectLevelData.baseData.Difficulty)
elseif nType == GameEnum.ActivityLevelType.Adventure then
strTitle = orderedFormat(lvIndexTitle, 2, self.selectLevelData.baseData.Difficulty)
elseif nType == GameEnum.ActivityLevelType.HARD then
strTitle = orderedFormat(lvIndexTitle, 3, self.selectLevelData.baseData.Difficulty)
end
NovaAPI.SetTMPText(self._mapNode.TMPLevel, strTitle)
NovaAPI.SetTMPText(self._mapNode.detailDesc, self.selectLevelData.baseData.Desc)
self.detailDescContent:DOLocalMoveY(0, 0)
self.curStar = self.selectLevelData.Star
local tbCond = {
self.selectLevelData.baseData.OneStarDesc,
self.selectLevelData.baseData.TwoStarDesc,
self.selectLevelData.baseData.ThreeStarDesc
}
for i = 1, 3 do
local rtTask = self._mapNode.Task[i]
local goDone = rtTask:Find("imgDone").gameObject
local imgUnDone = rtTask:Find("imgUnDone").gameObject
local Text = rtTask:Find("Text"):GetComponent("TMP_Text")
goDone:SetActive(i <= self.curStar)
imgUnDone:SetActive(i > self.curStar)
local cond = tbCond[i]
if cond == nil then
rtTask.gameObject:SetActive(false)
return
else
rtTask.gameObject:SetActive(true)
NovaAPI.SetTMPText(Text, cond)
end
end
self.PreviewMonsterGroupId = self.selectLevelData.baseData.PreviewMonsterGroupId
local isOpen = self.activityLevelsData:GetLevelDayOpen(nType, self.selectLevelData.baseData.Id)
local isLevelUnLock = self.activityLevelsData:GetLevelUnLock(nType, self.selectLevelData.baseData.Id)
local isNeedEnergyConsume = true
if not self.selectLevelData.baseData.EnergyConsumeOnRetry and 0 < self.selectLevelData.Star then
isNeedEnergyConsume = false
end
if isOpen and isLevelUnLock then
self._mapNode.btnListRoot:SetActive(true)
self._mapNode.ListConditions:SetActive(false)
if self.selectLevelData.baseData.ThreeStarSweep then
if self.selectLevelData.Star == 3 then
self._mapNode.btnRaid.gameObject:SetActive(true)
self._mapNode.btnGo.gameObject:SetActive(true)
self._mapNode.btnRaidUnlock.gameObject:SetActive(false)
else
self._mapNode.btnRaid.gameObject:SetActive(false)
self._mapNode.btnGo.gameObject:SetActive(false)
self._mapNode.btnRaidUnlock.gameObject:SetActive(true)
self._mapNode.grpRaidUnlock:SetActive(true)
end
else
self._mapNode.btnRaid.gameObject:SetActive(false)
self._mapNode.btnGo.gameObject:SetActive(false)
self._mapNode.btnRaidUnlock.gameObject:SetActive(true)
self._mapNode.grpRaidUnlock:SetActive(false)
end
local nHas = PlayerData.Base:GetCurEnergy()
local nRequire = self.selectLevelData.baseData.EnergyConsume
if not isNeedEnergyConsume then
nRequire = 0
end
self.curRequireEnergy = nRequire
NovaAPI.SetTMPText(self._mapNode.txtTicketsCount, nRequire)
NovaAPI.SetTMPColor(self._mapNode.txtTicketsCount, nRequire > nHas.nEnergy and Red_Unable or Blue_Normal)
self._mapNode.goCoin:SetActive(true)
NovaAPI.SetTMPText(self._mapNode.txtTicketsCountRaidUnlock, nRequire)
NovaAPI.SetTMPColor(self._mapNode.txtTicketsCountRaidUnlock, nRequire > nHas.nEnergy and Red_Unable or Blue_Normal)
self._mapNode.goCoinRaidUnlock:SetActive(true)
elseif isOpen and not isLevelUnLock then
self._mapNode.btnListRoot:SetActive(false)
self._mapNode.ListConditions:SetActive(true)
local preLevelId = self.selectLevelData.baseData.PreLevelId
if preLevelId ~= 0 then
local lvPreNeedStar = self.selectLevelData.baseData.PreLevelStar
local lvPreStar = self.activityLevelsData:GetPreLevelStar(nType, self.selectLevelData.baseData.Id)
local imgConditions_Lock_1 = self._mapNode.ListConditionsObj[1].transform:Find("imgConditions_Lock").gameObject
local imgConditions_UnLock_1 = self._mapNode.ListConditionsObj[1].transform:Find("imgConditions_UnLock").gameObject
local txt = self._mapNode.ListConditionsObj[1].transform:Find("tex_ConditionsTips"):GetComponent("TMP_Text")
local tmpData = ConfigTable.GetData("ActivityLevelsLevel", preLevelId)
imgConditions_Lock_1:SetActive(lvPreNeedStar > lvPreStar)
imgConditions_UnLock_1:SetActive(lvPreNeedStar <= lvPreStar)
NovaAPI.SetTMPText(txt, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_PreLevel"), tmpData.Name))
NovaAPI.SetTMPColor(txt, lvPreNeedStar <= lvPreStar and colorConditionsUnLock or colorConditionsLock)
else
local imgConditions_Lock_1 = self._mapNode.ListConditionsObj[1].transform:Find("imgConditions_Lock").gameObject
local imgConditions_UnLock_1 = self._mapNode.ListConditionsObj[1].transform:Find("imgConditions_UnLock").gameObject
local txt = self._mapNode.ListConditionsObj[1].transform:Find("tex_ConditionsTips"):GetComponent("TMP_Text")
imgConditions_Lock_1:SetActive(true)
imgConditions_UnLock_1:SetActive(false)
NovaAPI.SetTMPText(txt, ConfigTable.GetUIText("Unlocked_By_PreLevel"))
NovaAPI.SetTMPColor(txt, colorConditionsUnLock)
end
local preActivityStory = self.selectLevelData.baseData.PreActivityStory
if preActivityStory ~= nil and preActivityStory[1] ~= nil then
local isRead = PlayerData.ActivityAvg:IsStoryReaded(preActivityStory[2])
local imgConditions_Lock_2 = self._mapNode.ListConditionsObj[2].transform:Find("imgConditions_Lock").gameObject
local imgConditions_UnLock_2 = self._mapNode.ListConditionsObj[2].transform:Find("imgConditions_UnLock").gameObject
local txt = self._mapNode.ListConditionsObj[2].transform:Find("tex_ConditionsTips"):GetComponent("TMP_Text")
imgConditions_Lock_2:SetActive(not isRead)
imgConditions_UnLock_2:SetActive(isRead)
local cfgdata = ConfigTable.GetData("ActivityStory", preActivityStory[2])
if cfgdata ~= nil then
NovaAPI.SetTMPText(txt, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Avg"), cfgdata.Title))
self._mapNode.ListConditionsObj[2]:SetActive(true)
NovaAPI.SetTMPColor(txt, isRead and colorConditionsUnLock or colorConditionsLock)
else
self._mapNode.ListConditionsObj[2]:SetActive(false)
end
else
self._mapNode.ListConditionsObj[2]:SetActive(false)
end
elseif not isOpen then
self._mapNode.btnListRoot:SetActive(false)
self._mapNode.ListConditions:SetActive(true)
self._mapNode.ListConditionsObj[2]:SetActive(false)
local imgConditions_Lock_1 = self._mapNode.ListConditionsObj[1].transform:Find("imgConditions_Lock").gameObject
local imgConditions_UnLock_1 = self._mapNode.ListConditionsObj[1].transform:Find("imgConditions_UnLock").gameObject
imgConditions_Lock_1:SetActive(true)
imgConditions_UnLock_1:SetActive(false)
NovaAPI.SetTMPColor(txt, colorConditionsUnLock)
local txt = self._mapNode.ListConditionsObj[1].transform:Find("tex_ConditionsTips"):GetComponent("TMP_Text")
local day = self.activityLevelsData:GetUnLockDay(nType, self.selectLevelData.baseData.Id)
if day == 0 then
local hour, min, sec = self.activityLevelsData:GetUnLockHour(nType, self.selectLevelData.baseData.Id)
if 0 < hour then
NovaAPI.SetTMPText(txt, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Hour"), hour))
elseif 0 < min then
NovaAPI.SetTMPText(txt, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Min"), min))
elseif 0 < sec then
NovaAPI.SetTMPText(txt, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Min"), min))
end
else
local _day, _hour = self.activityLevelsData:GetUnLockDayHour(nType, self.selectLevelData.baseData.Id)
NovaAPI.SetTMPText(txt, orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_DayHourOpen"), _day, _hour))
end
end
for i = 1, #self.tabRewardList do
self.tabRewardList[i].gameObject:SetActive(false)
end
local tbReward = decodeJson(self.selectLevelData.baseData.CompleteRewardPreview)
for i = 1, #tbReward do
if i > #self.tabRewardList then
local obj = instantiate(self._mapNode.btn_itemTemp, self._mapNode.rewardRoot)
self.tabRewardList[i] = self:BindCtrlByNode(obj, "Game.UI.TemplateEx.TemplateItemCtrl")
end
do
local itemCtrl = self.tabRewardList[i]
itemCtrl.gameObject:SetActive(true)
if tbReward[i] ~= nil then
local bReceived = 0 < self.selectLevelData.Star and tbReward[i][3] == 1
local bFirstPass = tbReward[i][3] == 1
itemCtrl:SetItem(tbReward[i][1], nil, UTILS.ParseRewardItemCount(tbReward[i]), nil, bReceived, bFirstPass, false, true)
local btnItem = itemCtrl.gameObject:GetComponent("UIButton")
btnItem.onClick:RemoveAllListeners()
local clickCb = function()
self:OnBtnClick_RewardItem(tbReward[i][1], btnItem.gameObject)
end
btnItem.onClick:AddListener(clickCb)
end
end
end
if self._mapNode.rtBoss.activeSelf == false then
self:ShowBossInfo(true, false)
self:AddTimer(1, 0.2, function()
self._mapNode.rtBossAni:Play("rtBoss_in")
end, true, true, true)
else
self._mapNode.rtBossAni:Play("rtBoss_Empty")
self:AddTimer(1, 0.1, function()
self._mapNode.rtBossAni:Play("rtBoss_in")
end, true, true, true)
end
end
function ActivityLevelsSelectCtrl:OnBtnClick_RewardItem(nTid, btn)
local rtBtn = btn.transform
UTILS.ClickItemGridWithTips(nTid, rtBtn, false, true, false)
end
function ActivityLevelsSelectCtrl:OnClickBtnGo()
local nEnergy = PlayerData.Base:GetCurEnergy().nEnergy
if nEnergy < self.curRequireEnergy then
local callback = function()
EventManager.Hit(EventId.ClosePanel, PanelId.EnergyBuy)
end
EventManager.Hit(EventId.OpenPanel, PanelId.EnergyBuy, AllEnum.EnergyPanelType.Main, {}, true, callback)
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("MainlineData_Energy"))
return
end
if self.SelectObj ~= nil then
self.SelectObj:ShowArrowAni(true)
end
self:AddTimer(1, 0.2, function()
self.activityLevelsData:ChangeRedDot(self.selectLevelData.baseData.Type, self.selectLevelData.baseData.Id)
PlayerData.Activity:SetActivityLevelActId(self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.RegionBossFormation, AllEnum.RegionBossFormationType.ActivityLevels, self.selectLevelData.baseData.Id, {
self.nActId
})
end, true, true, true)
end
function ActivityLevelsSelectCtrl:OnClickBtnRaid()
if self.curStar ~= 3 then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Raid_Lock"))
return
end
if self.SelectObj ~= nil then
self.SelectObj:ShowArrowAni(true)
end
self:AddTimer(1, 0.2, function()
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end, true, true, true)
end
function ActivityLevelsSelectCtrl:OnEvent_ClosePanel(nPanelId)
if type(nPanelId) == "number" and nPanelId == PanelId.Raid and self.SelectObj ~= nil then
self.SelectObj:ShowArrowAni(false)
end
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
end
function ActivityLevelsSelectCtrl:OnEvent_UpdateEnergy()
local nHas = PlayerData.Base:GetCurEnergy()
NovaAPI.SetTMPColor(self._mapNode.txtTicketsCount, nHas.nEnergy < self.curRequireEnergy and Red_Unable or Blue_Normal)
NovaAPI.SetTMPColor(self._mapNode.txtTicketsCountRaidUnlock, nHas.nEnergy < self.curRequireEnergy and Red_Unable or Blue_Normal)
end
return ActivityLevelsSelectCtrl
@@ -0,0 +1,21 @@
local ActivityLevelsSelectPanel = class("ActivityLevelsSelectPanel", BasePanel)
ActivityLevelsSelectPanel._sUIResRootPath = "UI_Activity/"
ActivityLevelsSelectPanel._tbDefine = {
{
sPrefabPath = "10109/ActivityLevels/ActivityLevelsSelect.prefab",
sCtrlName = "Game.UI.ActivityTheme.10109.ActivityLevels.ActivityLevelsSelectCtrl"
}
}
function ActivityLevelsSelectPanel:Awake()
end
function ActivityLevelsSelectPanel:OnEnable()
end
function ActivityLevelsSelectPanel:OnAfterEnter()
end
function ActivityLevelsSelectPanel:OnDisable()
end
function ActivityLevelsSelectPanel:OnDestroy()
end
function ActivityLevelsSelectPanel:OnRelease()
end
return ActivityLevelsSelectPanel
@@ -0,0 +1,575 @@
local BaseCtrl = require("GameCore.UI.BaseCtrl")
local GunStormCtrl = class("GunStormCtrl", BaseCtrl)
local ClientManager = CS.ClientManager.Instance
local TimerManager = require("GameCore.Timer.TimerManager")
local LocalData = require("GameCore.Data.LocalData")
GunStormCtrl._mapNodeConfig = {
btnEntrance_ = {
nCount = 5,
sComponentName = "UIButton",
callback = "OnBtn_ClickActivityEntrance"
},
imgRemaineTime = {},
txtActivityTime = {sComponentName = "TMP_Text"},
txtActivityDate = {sComponentName = "TMP_Text"},
imgEnd = {},
txtActivityEnd = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_End"
},
imgMiniGame = {sComponentName = "Image"},
txtMiniGame = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Mini_Game_10109"
},
imgMiniGameEnd = {},
txtMiniGameEnd = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Mini_Game_10109"
},
txtMiniGame_End = {},
txtTask = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Task"
},
txtTaskProgress = {sComponentName = "TMP_Text"},
imgTaskActivityTime = {},
txtTaskActivityTime = {sComponentName = "TMP_Text"},
imgStory = {sComponentName = "Image"},
txtStory = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Story"
},
txtStory_End = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Story"
},
goStoryEnd = {},
txtStoryEnd = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_End"
},
txtMiniGameEndState = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_End"
},
txtTaskEndState = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_End"
},
txtShopEndState = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_End"
},
txtShop = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Shop"
},
imgShopActivityTime = {},
txtShopActivityTime = {sComponentName = "TMP_Text"},
txtLevel = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Level"
},
txtLevel_End = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Level"
},
goLevelEnd = {},
txtLevelEnd = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_End"
},
imgLevelActivityUnlockTime = {},
txtLevelActivityUnlockTime = {sComponentName = "TMP_Text"},
imgLevelEnd = {},
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
imgMiniGameActivityUnlockTime = {},
txtMiniGameActivityUnlockTime = {sComponentName = "TMP_Text"},
imgTaskEnd = {},
txtTaskEnd = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Task"
},
txtTaskProgress_End = {},
imgTaskActivityUnlockTime = {},
txtTaskActivityUnlockTime = {sComponentName = "TMP_Text"},
imgStoryActivityTime = {},
txtStoryActivityTime = {sComponentName = "TMP_Text"},
imgStoryActivityUnlockTime = {},
txtStoryActivityUnlockTime = {sComponentName = "TMP_Text"},
imgShopActivityUnlockTime = {},
txtShopActivityUnlockTime = {sComponentName = "TMP_Text"},
imgLevelActivityTime = {},
txtLevelActivityTime = {sComponentName = "TMP_Text"},
imgMiniGameActivityTime = {},
txtMiniGameActivityTime = {sComponentName = "TMP_Text"},
txtShopEnd = {
sComponentName = "TMP_Text",
sLanguageId = "Activity_Shop"
},
imgShopEnd = {},
txtShop_End = {},
txtTaskProgressEnd = {sComponentName = "TMP_Text"},
dbTaskEnd = {},
miniGameRedDot = {},
redDotEntrance2 = {},
storyRedDot = {},
reddotLevel = {},
goMiniGameEnd = {},
imgStoryEnd = {},
reddotMiniGame = {
sNodeName = "miniGameRedDot"
}
}
GunStormCtrl._mapEventConfig = {}
local ActivityState = {
NotOpen = 1,
Open = 2,
Closed = 3
}
function GunStormCtrl:Awake()
local param = self:GetPanelParam()
if type(param) == "table" then
self.nActId = param[1]
end
self.GunStormData = PlayerData.Activity:GetActivityGroupDataById(self.nActId)
if self.GunStormData ~= nil then
self.ActivityGroupCfg = self.GunStormData.actGroupConfig
end
for k, v in pairs(self._mapNode.btnEntrance_) do
v.interactable = false
end
end
function GunStormCtrl:FadeIn()
EventManager.Hit(EventId.SetTransition)
local sAnimName = "GunStormPanel_in"
local sSoundName = "Mode_Maoyan_activity"
if self.animRoot ~= nil then
self.animRoot = self.gameObject:GetComponent("Animator")
sAnimName = "GunStormPanel_in1"
sSoundName = "Mode_Maoyan_activity_01"
end
self.animRoot = self.gameObject:GetComponent("Animator")
self.animRoot:Play(sAnimName, 0, 0)
CS.WwiseAudioManager.Instance:PlaySound(sSoundName)
local nAnimLength = NovaAPI.GetAnimClipLength(self.animRoot, {sAnimName})
self:AddTimer(1, nAnimLength, function()
for k, v in pairs(self._mapNode.btnEntrance_) do
v.interactable = true
end
end, true, true, true)
end
function GunStormCtrl:OnEnable()
self:RefreshPanel()
for i = 1, 5 do
local actData = self.GunStormData:GetActivityDataByIndex(i)
if i == AllEnum.ActivityThemeFuncIndex.Task then
local nActId = actData.ActivityId
local state = self.tbActState[nActId]
if state == ActivityState.Closed then
self._mapNode.redDotEntrance2:SetActive(false)
else
RedDotManager.RegisterNode(RedDotDefine.Activity_Group_Task, {
self.nActId,
nActId
}, self._mapNode.redDotEntrance2)
end
elseif i == AllEnum.ActivityThemeFuncIndex.Level then
local nActId = actData.ActivityId
RedDotManager.RegisterNode(RedDotDefine.ActivityLevel, {
self.nActId,
nActId
}, self._mapNode.reddotLevel)
elseif i == AllEnum.ActivityThemeFuncIndex.Story then
local nActId = actData.ActivityId
RedDotManager.RegisterNode(RedDotDefine.Activity_GroupNew_Avg_Group, {
self.nActId,
nActId
}, self._mapNode.storyRedDot)
elseif i == AllEnum.ActivityThemeFuncIndex.MiniGame then
local nActId = actData.ActivityId
RedDotManager.RegisterNode(RedDotDefine.Activity_GoldenSpy, {
self.nActId
}, self._mapNode.reddotMiniGame)
end
end
end
function GunStormCtrl:OnDisable()
if nil ~= self.minigameRemainTimer then
TimerManager.Remove(self.minigameRemainTimer)
self.minigameRemainTimer = nil
end
if nil ~= self.remainTimer then
TimerManager.Remove(self.remainTimer)
self.remainTimer = nil
end
if nil ~= self.shopRemainTimer then
TimerManager.Remove(self.shopRemainTimer)
self.shopRemainTimer = nil
end
if nil ~= self.levelRemainTimer then
TimerManager.Remove(self.levelRemainTimer)
self.levelRemainTimer = nil
end
if nil ~= self.avgRemainTimer then
TimerManager.Remove(self.avgRemainTimer)
self.avgRemainTimer = nil
end
if nil ~= self.taskRemainTimer then
TimerManager.Remove(self.taskRemainTimer)
self.taskRemainTimer = nil
end
if nil ~= self.eatingAnimationTimer then
TimerManager.Remove(self.eatingAnimationTimer)
self.eatingAnimationTimer = nil
end
end
function GunStormCtrl:RefreshPanel()
if self.GunStormData == nil or self.ActivityGroupCfg == nil then
return
end
self:RefreshTime()
self:RefreshButtonState()
end
function GunStormCtrl:RefreshTime()
local bOpen = self.GunStormData:CheckActivityGroupOpen()
if bOpen then
RefreshRemainTime(self.GunStormData:GetActGroupEndTime(), self._mapNode.txtActivityTime)
if nil == self.remainTimer then
self.remainTimer = self:AddTimer(0, 1, function()
local remainTime = RefreshRemainTime(self.GunStormData:GetActGroupEndTime(), self._mapNode.txtActivityTime)
if remainTime <= 0 then
TimerManager.Remove(self.remainTimer)
self.remainTimer = nil
end
end, true, true, false)
end
end
self._mapNode.imgRemaineTime:SetActive(bOpen)
self._mapNode.imgEnd:SetActive(not bOpen)
local nOpenMonth, nOpenDay, nEndMonth, nEndDay, nOpenYear, nEndYear = self.GunStormData:GetActGroupDate()
local strOpenDay = string.format("%d", nOpenDay)
local strEndDay = string.format("%d", nEndDay)
local dateStr = string.format("%s/%s/%s ~ %s/%s/%s", nOpenYear, nOpenMonth, strOpenDay, nEndYear, nEndMonth, strEndDay)
NovaAPI.SetTMPText(self._mapNode.txtActivityDate, dateStr)
end
function GunStormCtrl:RefreshRemainOpenTime(openTime)
local curTime = ClientManager.serverTimeStamp
local remainTime = openTime - curTime
local sTimeStr = ""
if remainTime <= 60 then
local sec = math.floor(remainTime)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Open_Time_Sec") or "", sec)
elseif 60 < remainTime and remainTime <= 3600 then
local min = math.floor(remainTime / 60)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Open_Time_Min") or "", min)
elseif 3600 < remainTime and remainTime <= 86400 then
local hour = math.floor(remainTime / 3600)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Open_Time") or "", hour)
elseif 86400 < remainTime then
local day = math.floor(remainTime / 86400)
sTimeStr = orderedFormat(ConfigTable.GetUIText("Activity_Open_Time_Day") or "", day)
end
return sTimeStr
end
function GunStormCtrl:RefreshButtonState()
self.tbActState = {}
for i = 1, 5 do
local actData = self.GunStormData:GetActivityDataByIndex(i)
if i == AllEnum.ActivityThemeFuncIndex.MiniGame then
self:RefreshMiniGameButtonState(actData)
elseif i == AllEnum.ActivityThemeFuncIndex.Task then
self:RefreshTaskButtonState(actData)
elseif i == AllEnum.ActivityThemeFuncIndex.Level then
self:RefreshLevelButtonState(actData)
elseif i == AllEnum.ActivityThemeFuncIndex.Shop then
self:RefreshShopButtonState(actData)
elseif i == AllEnum.ActivityThemeFuncIndex.Story then
self:RefreshStoryButtonState(actData)
end
end
end
function GunStormCtrl:RefreshButtonTimer(actData, timer, txtTrans, imgTrans, refreshFunc)
local countDowmTimer
local activityId = actData.ActivityId
local activityData = ConfigTable.GetData("Activity", activityId)
local state = ActivityState.NotOpen
local bShowCountDown = false
if activityData ~= nil then
local curTime = ClientManager.serverTimeStamp
if activityData.StartTime ~= "" and activityData.EndTime ~= "" then
local openTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.StartTime)
local endTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.EndTime)
if curTime < openTime then
state = ActivityState.NotOpen
elseif curTime >= openTime and curTime <= endTime then
state = ActivityState.Open
else
state = ActivityState.Closed
end
elseif activityData.EndType == GameEnum.activityEndType.NoLimit then
state = ActivityState.Open
if activityData.StartTime ~= "" then
local openTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.StartTime)
if curTime < openTime then
state = ActivityState.NotOpen
end
end
end
if state == ActivityState.NotOpen then
if nil == timer and activityData.StartTime ~= "" and activityData.EndTime ~= "" then
local openTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.StartTime)
local fcTimer = function()
curTime = ClientManager.serverTimeStamp
local remainTime = openTime - curTime
if 0 < remainTime then
local sTimeStr = self:RefreshRemainOpenTime(openTime)
local txtUnlock = imgTrans:GetComponentInChildren(typeof(CS.TMPro.TMP_Text))
if txtUnlock ~= nil then
NovaAPI.SetTMPText(txtUnlock, sTimeStr)
end
else
imgTrans:SetActive(false)
TimerManager.Remove(countDowmTimer)
countDowmTimer = nil
self.tbActState[activityId] = ActivityState.Open
refreshFunc(actData)
self:RefreshActivityData()
end
end
fcTimer()
countDowmTimer = self:AddTimer(0, 1, fcTimer, true, true, false)
end
elseif state == ActivityState.Open and activityData.StartTime ~= "" and activityData.EndTime ~= "" then
do
local endTime = CS.ClientManager.Instance:ISO8601StrToTimeStamp(activityData.EndTime)
if endTime > self.GunStormData:GetActGroupEndTime() then
bShowCountDown = true
elseif endTime < self.GunStormData:GetActGroupEndTime() then
bShowCountDown = endTime - curTime <= 259200
end
if timer == nil and bShowCountDown then
RefreshRemainTime(endTime, txtTrans)
do
local fcTimer = function()
local remainTime = RefreshRemainTime(endTime, txtTrans)
if remainTime <= 0 then
TimerManager.Remove(countDowmTimer)
countDowmTimer = nil
refreshFunc(actData)
end
end
fcTimer()
countDowmTimer = self:AddTimer(0, 1, fcTimer, true, true, false)
end
end
end
end
end
return state, bShowCountDown, countDowmTimer
end
function GunStormCtrl:RefreshMiniGameButtonState(actData)
local activityId = actData.ActivityId
local activityData = ConfigTable.GetData("Activity", activityId)
if activityData ~= nil then
local refreshFunc = function(actData)
self:RefreshMiniGameButtonState(actData)
end
local state, bShowCountDown, countDowmTimer = self:RefreshButtonTimer(actData, self.minigameRemainTimer, self._mapNode.txtMiniGameActivityTime, self._mapNode.imgMiniGameActivityUnlockTime, refreshFunc)
if self.minigameRemainTimer == nil then
self.minigameRemainTimer = countDowmTimer
end
self._mapNode.imgMiniGameActivityUnlockTime:SetActive(state == ActivityState.NotOpen)
self._mapNode.imgMiniGameActivityTime.gameObject:SetActive(state == ActivityState.Open and bShowCountDown)
self._mapNode.imgMiniGameEnd:SetActive(state == ActivityState.Closed)
self._mapNode.txtMiniGame_End:SetActive(state == ActivityState.Closed)
self._mapNode.txtMiniGameEnd.gameObject:SetActive(state == ActivityState.Closed)
self._mapNode.goMiniGameEnd.gameObject:SetActive(state == ActivityState.Closed)
if state ~= ActivityState.Open then
end
self.tbActState[activityId] = state
end
end
function GunStormCtrl:RefreshTaskButtonState(actData)
local activityId = actData.ActivityId
local actInsData = PlayerData.Activity:GetActivityDataById(activityId)
local activityData = ConfigTable.GetData("Activity", activityId)
if activityData ~= nil then
local refreshFunc = function(actData)
if actInsData ~= nil then
actInsData:RefreshTaskRedDot()
end
self:RefreshTaskButtonState(actData)
end
local state, bShowCountDown, countDowmTimer = self:RefreshButtonTimer(actData, self.taskRemainTimer, self._mapNode.txtTaskActivityTime, self._mapNode.imgTaskActivityUnlockTime, refreshFunc)
if self.taskRemainTimer == nil then
self.taskRemainTimer = countDowmTimer
end
if state == ActivityState.Closed and actInsData ~= nil then
actInsData:RefreshTaskRedDot()
end
self._mapNode.imgTaskActivityTime:SetActive(state == ActivityState.Open and bShowCountDown)
self._mapNode.txtTaskProgress_End:SetActive(state == ActivityState.Closed)
self._mapNode.dbTaskEnd.gameObject:SetActive(state == ActivityState.Closed)
self._mapNode.imgTaskEnd:SetActive(state == ActivityState.Closed)
self._mapNode.txtTaskEnd.gameObject:SetActive(state == ActivityState.Closed)
self._mapNode.imgTaskActivityUnlockTime:SetActive(state == ActivityState.NotOpen)
self.tbActState[activityId] = state
local ActivityTaskData = PlayerData.Activity:GetActivityDataById(activityId)
local nDone, nTotal = 0, 0
if ActivityTaskData ~= nil then
nDone, nTotal = ActivityTaskData:CalcTotalProgress()
end
local progress = string.format("%d/%d", nDone, nTotal)
NovaAPI.SetTMPText(self._mapNode.txtTaskProgress, progress)
NovaAPI.SetTMPText(self._mapNode.txtTaskProgressEnd, progress)
end
end
function GunStormCtrl:RefreshStoryButtonState(actData)
local activityId = actData.ActivityId
local activityData = ConfigTable.GetData("Activity", activityId)
if activityData ~= nil then
local refreshFunc = function(actData)
local avgData = PlayerData.Activity:GetActivityDataById(activityId)
if nil ~= avgData then
avgData:RefreshAvgRedDot()
end
self:RefreshStoryButtonState(actData)
end
local state, bShowCountDown, countDowmTimer = self:RefreshButtonTimer(actData, self.avgRemainTimer, self._mapNode.txtStoryActivityTime, self._mapNode.imgStoryActivityUnlockTime, refreshFunc)
if self.avgRemainTimer == nil then
self.avgRemainTimer = countDowmTimer
end
if state == ActivityState.Closed then
local avgData = PlayerData.Activity:GetActivityDataById(activityId)
if nil ~= avgData then
avgData:RefreshAvgRedDot()
end
end
self._mapNode.imgStoryActivityTime:SetActive(state == ActivityState.Open and bShowCountDown)
self._mapNode.imgStoryActivityUnlockTime:SetActive(state == ActivityState.NotOpen)
self._mapNode.goStoryEnd:SetActive(state == ActivityState.Closed)
self._mapNode.imgStoryEnd:SetActive(state == ActivityState.Closed)
self._mapNode.txtStory_End.gameObject:SetActive(state == ActivityState.Closed)
self.tbActState[activityId] = state
end
end
function GunStormCtrl:RefreshLevelButtonState(actData)
local activityId = actData.ActivityId
local activityData = ConfigTable.GetData("Activity", activityId)
if activityData ~= nil then
local refreshFunc = function(actData)
local activityLevelsData = PlayerData.Activity:GetActivityDataById(activityId)
if nil ~= activityLevelsData then
activityLevelsData:ChangeAllRedHot()
end
self:RefreshLevelButtonState(actData)
end
local state, bShowCountDown, countDowmTimer = self:RefreshButtonTimer(actData, self.levelRemainTimer, self._mapNode.txtLevelActivityTime, self._mapNode.imgLevelActivityUnlockTime, refreshFunc)
if self.levelRemainTimer == nil then
self.levelRemainTimer = countDowmTimer
end
if state == ActivityState.Closed then
local activityLevelsData = PlayerData.Activity:GetActivityDataById(activityId)
if nil ~= activityLevelsData then
activityLevelsData:ChangeAllRedHot()
end
end
self._mapNode.imgLevelActivityTime:SetActive(state == ActivityState.Open and bShowCountDown)
self._mapNode.imgLevelActivityUnlockTime:SetActive(state == ActivityState.NotOpen)
self._mapNode.imgLevelEnd:SetActive(state == ActivityState.Closed)
self._mapNode.goLevelEnd:SetActive(state == ActivityState.Closed)
self._mapNode.txtLevel_End.gameObject:SetActive(state == ActivityState.Closed)
local animRoot = self._mapNode.btnEntrance_[5].transform:Find("AnimRoot"):GetComponent("Animator")
animRoot.enabled = state == ActivityState.Open
self.tbActState[activityId] = state
end
end
function GunStormCtrl:RefreshShopButtonState(actData)
local activityId = actData.ActivityId
local activityData = ConfigTable.GetData("Activity", activityId)
if activityData ~= nil then
local refreshFunc = function(actData)
self:RefreshShopButtonState(actData)
end
local state, bShowCountDown, countDowmTimer = self:RefreshButtonTimer(actData, self.shopRemainTimer, self._mapNode.txtShopActivityTime, self._mapNode.imgShopActivityUnlockTime, refreshFunc)
if self.shopRemainTimer == nil then
self.shopRemainTimer = countDowmTimer
end
self._mapNode.imgShopActivityTime:SetActive(state == ActivityState.Open and bShowCountDown)
self._mapNode.imgShopActivityUnlockTime:SetActive(state == ActivityState.NotOpen)
self._mapNode.txtShopEnd.gameObject:SetActive(state == ActivityState.Closed)
self._mapNode.imgShopEnd:SetActive(state == ActivityState.Closed)
self._mapNode.txtShop_End:SetActive(state == ActivityState.Closed)
self.tbActState[activityId] = state
end
end
function GunStormCtrl:RequireActiviyData()
if self.bRequiredActData then
return
end
local callFunc = function()
self.bRequireSucc = true
self:RefreshPanel()
end
HttpNetHandler.SendMsg(NetMsgId.Id.activity_detail_req, {}, nil, callFunc)
self.bRequiredActData = true
self:AddTimer(1, 1, function()
self.bRequiredActData = false
end, true, true, true)
end
function GunStormCtrl:RefreshActivityData()
if self.bRequiredActData then
return
end
self:AddTimer(1, 3, self.RequireActiviyData, true, true, true)
end
function GunStormCtrl:OnBtn_ClickActivityEntrance(btn, nIndex)
local actData = self.GunStormData:GetActivityDataByIndex(nIndex)
local state = self.tbActState[actData.ActivityId]
if nil == state then
return
end
if state == ActivityState.Closed then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Activity_End_Notice"))
return
elseif state == ActivityState.NotOpen then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Activity_Not_Open"))
return
elseif state == ActivityState.Open then
local activityData = PlayerData.Activity:GetActivityDataById(actData.ActivityId)
if activityData == nil then
local bHint = true
if nIndex == AllEnum.ActivityThemeFuncIndex.Story then
bHint = not PlayerData.ActivityAvg:HasActivityData(actData.ActivityId)
end
if self.bRequiredActData and bHint then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Activity_Data_Refreshing"))
return
end
if bHint then
EventManager.Hit(EventId.OpenMessageBox, ConfigTable.GetUIText("Activity_Not_Open"))
self:RequireActiviyData()
return
end
end
end
if actData.PanelId ~= nil and ActivityState.Open == state then
local nTransitionIdx = self.ActivityGroupCfg.TransitionId
if nTransitionIdx == nil or nTransitionIdx == 0 and nIndex == AllEnum.ActivityThemeFuncIndex.TrekkerVersus then
nTransitionIdx = 30
end
if nTransitionIdx ~= 0 then
EventManager.Hit(EventId.SetTransition, nTransitionIdx, function()
EventManager.Hit(EventId.OpenPanel, actData.PanelId, actData.ActivityId)
end)
else
EventManager.Hit(EventId.OpenPanel, actData.PanelId, actData.ActivityId)
end
end
end
return GunStormCtrl
@@ -0,0 +1,20 @@
local BasePanel = require("GameCore.UI.BasePanel")
local GunStormPanel = class("GunStormPanel", BasePanel)
GunStormPanel._sUIResRootPath = "UI_Activity/"
GunStormPanel._tbDefine = {
{
sPrefabPath = "10109/GunStormPanel.prefab",
sCtrlName = "Game.UI.ActivityTheme.10109.GunStormCtrl"
}
}
function GunStormPanel:Awake()
end
function GunStormPanel:OnEnable()
end
function GunStormPanel:OnDisable()
end
function GunStormPanel:OnDestroy()
end
function GunStormPanel:OnRelease()
end
return GunStormPanel
@@ -0,0 +1,134 @@
local ActivityShopGoodsItemCtrl = class("ActivityShopGoodsItemCtrl", BaseCtrl)
ActivityShopGoodsItemCtrl._mapNodeConfig = {
imgRare = {sComponentName = "Image"},
imgLeft = {},
txtLeft = {sComponentName = "TMP_Text"},
imgTime = {},
txtLeftTime = {sComponentName = "TMP_Text"},
txtName = {sComponentName = "TMP_Text"},
imgIcon = {sComponentName = "Image"},
imgElement = {sComponentName = "Image"},
goStar = {
sCtrlName = "Game.UI.TemplateEx.TemplateStarCtrl"
},
imgExpire = {sComponentName = "Image"},
txtCount = {sComponentName = "TMP_Text"},
imgCoin = {sComponentName = "Image"},
txtPrice = {sComponentName = "TMP_Text"},
imgMask = {},
goRestock = {},
txtRestock = {
sComponentName = "TMP_Text",
sLanguageId = "Mall_Package_SoldOut"
},
goCondition = {},
txtCondition = {sComponentName = "TMP_Text"}
}
ActivityShopGoodsItemCtrl._mapEventConfig = {}
function ActivityShopGoodsItemCtrl:Refresh(mapData, nCurrencyItemId)
self.mapData = mapData
self.mapGoodsCfg = ConfigTable.GetData("ActivityGoods", mapData.nId)
if not self.mapGoodsCfg then
return
end
self:RefreshInfo()
self:RefreshPrice(nCurrencyItemId)
self:RefreshTime()
self:RefreshLimit()
end
function ActivityShopGoodsItemCtrl:RefreshInfo()
local mapItemCfg = ConfigTable.GetData_Item(self.mapGoodsCfg.ItemId)
if not mapItemCfg then
return
end
NovaAPI.SetTMPText(self._mapNode.txtName, self.mapGoodsCfg.Name)
if mapItemCfg.Type == GameEnum.itemType.Disc then
self:SetPngSprite(self._mapNode.imgIcon, mapItemCfg.Icon .. AllEnum.OutfitIconSurfix.Item)
self._mapNode.imgElement.gameObject:SetActive(true)
self._mapNode.goStar.gameObject:SetActive(true)
local mapDiscCfgData = ConfigTable.GetData("Disc", self.mapGoodsCfg.ItemId)
if mapDiscCfgData then
self:SetAtlasSprite(self._mapNode.imgElement, "12_rare", AllEnum.Star_Element[mapDiscCfgData.EET].icon)
end
local nStar = 6 - mapItemCfg.Rarity
self._mapNode.goStar:SetStar(nStar, nStar)
else
self:SetPngSprite(self._mapNode.imgIcon, mapItemCfg.Icon)
self._mapNode.imgElement.gameObject:SetActive(false)
self._mapNode.goStar.gameObject:SetActive(false)
end
self._mapNode.imgExpire.gameObject:SetActive(mapItemCfg.ExpireType > 0)
local sPath = "db_gunstorm_shop_" .. AllEnum.FrameColor_New[mapItemCfg.Rarity]
self:SetActivityAtlasSprite_New(self._mapNode.imgRare, "10109/SpriteAtlas/1010904", sPath)
local bLimit = 0 < self.mapData.nMaximumLimit
if bLimit then
NovaAPI.SetTMPText(self._mapNode.txtLeft, orderedFormat(ConfigTable.GetUIText("Shop_Left"), self.mapData.nMaximumLimit - self.mapData.nBoughtCount))
else
NovaAPI.SetTMPText(self._mapNode.txtLeft, orderedFormat(ConfigTable.GetUIText("Shop_Left"), ConfigTable.GetUIText("Shop_Unlimited")))
end
NovaAPI.SetTMPText(self._mapNode.txtCount, orderedFormat(ConfigTable.GetUIText("Shop_GoodsItem_Count"), self.mapGoodsCfg.ItemQuantity))
end
function ActivityShopGoodsItemCtrl:RefreshPrice(nCurrencyItemId)
self:SetSprite_Coin(self._mapNode.imgCoin, nCurrencyItemId)
NovaAPI.SetTMPText(self._mapNode.txtPrice, self.mapGoodsCfg.Price)
end
function ActivityShopGoodsItemCtrl:RefreshTime()
local bTime = self.mapData.bPurchasTime and self.mapData.nNextRefreshTime > 0
self._mapNode.imgTime:SetActive(bTime)
if not bTime then
return
end
local sTime = ""
local nRemaining = self.mapData.nNextRefreshTime - CS.ClientManager.Instance.serverTimeStamp
if nRemaining <= 3600 and 0 < nRemaining then
sTime = ConfigTable.GetUIText("Shop_WithinHour")
elseif 3600 < nRemaining and nRemaining <= 86400 then
sTime = orderedFormat(ConfigTable.GetUIText("Shop_Hour"), math.floor(nRemaining / 3600))
elseif 86400 < nRemaining then
sTime = orderedFormat(ConfigTable.GetUIText("Shop_Day"), math.floor(nRemaining / 86400))
end
NovaAPI.SetTMPText(self._mapNode.txtLeftTime, sTime)
end
function ActivityShopGoodsItemCtrl:RefreshLimit()
local bMask = not self.mapData.bPurchasable or not self.mapData.bPurchasTime or self.mapData.bSoldOut
self._mapNode.imgMask:SetActive(bMask)
if self.mapData.bSoldOut then
self._mapNode.goRestock:SetActive(true)
self._mapNode.goCondition:SetActive(false)
return
end
self._mapNode.goRestock:SetActive(false)
self._mapNode.goCondition:SetActive(true)
if self.mapData.nUnlockPurchaseTime > 0 and self.mapData.nUnlockPurchaseTime == self.mapData.nNextRefreshTime then
local sTime = ""
local nRemaining = self.mapData.nNextRefreshTime - CS.ClientManager.Instance.serverTimeStamp
if nRemaining <= 3600 and 0 < nRemaining then
sTime = ConfigTable.GetUIText("Shop_WithinHourUnLock")
elseif 3600 < nRemaining and nRemaining <= 86400 then
sTime = orderedFormat(ConfigTable.GetUIText("Shop_HourUnLock"), math.floor(nRemaining / 3600))
elseif 86400 < nRemaining then
sTime = orderedFormat(ConfigTable.GetUIText("Shop_DayUnLock"), math.floor(nRemaining / 86400))
end
NovaAPI.SetTMPText(self._mapNode.txtCondition, sTime)
return
end
if not self.mapData.bPurchasable then
local sCond = ""
if self.mapData.nPurchaseCondType == GameEnum.shopCond.WorldClassSpecific then
sCond = orderedFormat(ConfigTable.GetUIText("Shop_Cond_WorldClass"), self.mapData.tbPurchaseCondParams[1])
elseif self.mapData.nPurchaseCondType == GameEnum.shopCond.ShopPreGoodsSellOut or self.mapData.nPurchaseCondType == GameEnum.shopCond.ActivityShopPreGoodsSellOut then
sCond = ConfigTable.GetUIText("Shop_Cond_PreGoodsSellOut")
end
NovaAPI.SetTMPText(self._mapNode.txtCondition, sCond)
return
end
end
function ActivityShopGoodsItemCtrl:Awake()
end
function ActivityShopGoodsItemCtrl:OnEnable()
end
function ActivityShopGoodsItemCtrl:OnDisable()
end
function ActivityShopGoodsItemCtrl:OnDestroy()
end
return ActivityShopGoodsItemCtrl
@@ -0,0 +1,24 @@
local ActivityShopPanel = class("ActivityShopPanel", BasePanel)
ActivityShopPanel._sUIResRootPath = "UI_Activity/"
ActivityShopPanel._tbDefine = {
{
sPrefabPath = "10109/Shop/ActivityShopPanel.prefab",
sCtrlName = "Game.UI.ActivityTheme.ShopCommon.ActivityShopCtrl"
}
}
function ActivityShopPanel:Awake()
self.nDefaultId = nil
local tbParam = self:GetPanelParam()
if type(tbParam) == "table" then
self.nActId = tbParam[1]
self.nDefaultId = tbParam[2]
end
self.actShopData = PlayerData.Activity:GetActivityDataById(self.nActId)
end
function ActivityShopPanel:OnEnable()
end
function ActivityShopPanel:OnDisable()
end
function ActivityShopPanel:OnDestroy()
end
return ActivityShopPanel
@@ -0,0 +1,398 @@
local BaseCtrl = require("GameCore.UI.BaseCtrl")
local LocalData = require("GameCore.Data.LocalData")
local GunStormStoryCtrl = class("GunStormStoryCtrl", BaseCtrl)
local ActivityAvgData = PlayerData.ActivityAvg
GunStormStoryCtrl._mapNodeConfig = {
svStory = {
sComponentName = "LoopScrollView"
},
ctlAvgRoot = {
sNodeName = "goAvgInfoRoot",
sCtrlName = "Game.UI.ActivityTheme.ActivityAvgInfoExCtrl"
},
t_fullscreen_blur_black = {},
btnsnapshot = {
sNodeName = "snapshot",
sComponentName = "Button",
callback = "OnBtn_ClickCloseLevelInfoPanel"
},
TopBar = {
sNodeName = "TopBarPanel",
sCtrlName = "Game.UI.TopBarEx.TopBarCtrl"
},
goChapterComplete = {},
snapshot_complete = {
sComponentName = "UIButton",
callback = "OnBtn_ClickCloseCompete"
},
ctlgoEnemyInfo = {
sNodeName = "goEnemyInfo",
sCtrlName = "Game.UI.MainlineEx.MainlineMonsterInfoCtrl"
},
behindBG = {
sComponentName = "RectTransform"
},
Content = {
sComponentName = "RectTransform"
}
}
GunStormStoryCtrl._mapEventConfig = {
Story_Done = "OnEvent_Story_Done",
SelectMainlineBattle = "OnEvent_SelectMainlineBattle",
Story_RewardClosed = "OnEvent_Activity_Story_RewardClosed"
}
local UnlockConditionPriority = {
[1] = "MustStoryIds",
[2] = "OneofStoryIds",
[3] = "MustEvIds",
[4] = "OneofEvIds",
[5] = "WorldLevel",
[6] = "MustAchievementIds",
[7] = "MustActivityLevel"
}
local BRANCH_GRID_INDEX = 0
local BRANCH_COUNT = 0
function GunStormStoryCtrl:Awake()
local param = self:GetPanelParam()
if type(param) == "table" then
self.nActId = param[1]
end
self.storyNodePos = {0, -66.1}
self.tbGridTimer = {}
self.tbPlayedAnim = {}
self.nScrollTime = 0.5
self.bInit = false
end
function GunStormStoryCtrl:OnEnable()
self:RefreshPanel()
self:BindBehindBGScroll()
end
function GunStormStoryCtrl:FadeIn()
EventManager.Hit(EventId.SetTransition)
end
function GunStormStoryCtrl:OnDisable()
self:UnbindBehindBGScroll()
end
function GunStormStoryCtrl:BindBehindBGScroll()
local scrollRect = self._mapNode.svStory.gameObject:GetComponent("ScrollRect")
if scrollRect == nil then
return
end
self.scrollRectStory = scrollRect
if self.behindBGOriginPos == nil then
self.behindBGOriginPos = self._mapNode.behindBG.anchoredPosition
end
self.contentOriginX = nil
function self.onStoryScrollChanged(_value)
local content = scrollRect.content
if content == nil then
return
end
local contentPos = content.anchoredPosition
if self.contentOriginX == nil then
self.contentOriginX = contentPos.x
end
if contentPos.x > self.contentOriginX then
return
end
local origin = self.behindBGOriginPos
local deltaX = contentPos.x - self.contentOriginX
self._mapNode.behindBG.anchoredPosition = Vector2(origin.x + deltaX / 4, origin.y)
end
scrollRect.onValueChanged:AddListener(self.onStoryScrollChanged)
end
function GunStormStoryCtrl:UnbindBehindBGScroll()
if self.scrollRectStory ~= nil and self.onStoryScrollChanged ~= nil then
self.scrollRectStory.onValueChanged:RemoveListener(self.onStoryScrollChanged)
end
self.onStoryScrollChanged = nil
self.scrollRectStory = nil
end
function GunStormStoryCtrl:RefreshPanel()
self:RefreshStoryList()
end
function GunStormStoryCtrl:RefreshStoryList()
self.tbPlayedAnim = {}
self.tbAllStory, self.nChapterId = ActivityAvgData:GetStoryIdListByActivityId(self.nActId)
if self.tbAllStory == nil or #self.tbAllStory <= 0 then
return
end
local recentStoryId = ActivityAvgData:GetRecentStoryId(self.nChapterId)
local recentIndex = 1
for i = 1, #self.tbAllStory do
if self.tbAllStory[i] == recentStoryId then
recentIndex = i
break
end
end
local scrollIndex = recentIndex
if 0 < BRANCH_COUNT then
local branchEnd = BRANCH_GRID_INDEX + BRANCH_COUNT - 1
if recentIndex >= BRANCH_GRID_INDEX and recentIndex <= branchEnd then
scrollIndex = BRANCH_GRID_INDEX
elseif recentIndex > branchEnd then
scrollIndex = recentIndex - (BRANCH_COUNT - 1)
end
end
self.curIndex = recentIndex
self._mapNode.svStory:SetAnim(0.07)
local branchCount = 0 < BRANCH_COUNT and BRANCH_COUNT - 1 or 0
self._mapNode.svStory:Init(#self.tbAllStory - branchCount, self, self.OnRefreshGrid)
local time = self.bInit and 0 or self.nScrollTime
self:AddTimer(1, 0.1, function()
self._mapNode.svStory:SetScrollGridPos(scrollIndex, time, 0)
self.bInit = true
end, true, true, true)
end
function GunStormStoryCtrl:RefreshGridInfo(grid, gridIndex, bBranch, nBranchIndex)
local storyId = self.tbAllStory[gridIndex]
local avgcfg = ConfigTable.GetData("ActivityStory", storyId)
local goInstanceID = grid:GetInstanceID()
local btnGrid = grid.transform:Find("btnGrid"):GetComponent("UIButton")
local RootNode = grid.transform:Find("btnGrid/AnimRoot/RootNode")
local imgStory = bBranch and RootNode:Find("imgStory/imgBg2"):GetComponent("Image") or RootNode:Find("imgStory"):GetComponent("Image")
local goNotOpen = RootNode:Find("goNotOpen").gameObject
local txtLevel = grid.transform:Find("btnGridText/scale_on_click/imgNumDb/txtIndex"):GetComponent("TMP_Text")
local imgStoryTitleBg = RootNode:Find("imgStoryTitle")
local imgBattleTitleBg = RootNode:Find("imgBattleTitle")
local RedDot = RootNode:Find("RedDot").gameObject
local goLock = grid.transform:Find("btnGridText/scale_on_click/goLockState").gameObject
local goComplete = grid.transform:Find("btnGridText/scale_on_click/goComplete").gameObject
local goImgTime = grid.transform:Find("btnGridText/scale_on_click/imgTime")
local txtTime = goImgTime:Find("txtTime"):GetComponent("TMP_Text")
local txtTitle = bBranch and RootNode:Find("tmpGroupDone"):GetComponent("TMP_Text") or grid.transform:Find("btnGridText/scale_on_click/grpTitle/tmpGroupDone"):GetComponent("TMP_Text")
local txtComplete = goComplete.transform:Find("imgBg/txtComplete"):GetComponent("TMP_Text")
local btnGridText = grid.transform:Find("btnGridText")
local imgDb = btnGridText:Find("scale_on_click/grpTitle/imgDb")
NovaAPI.SetTMPText(txtComplete, ConfigTable.GetUIText("RoguelikeBuild_Manage_FilterPass"))
local isUnlock, tbResult = ActivityAvgData:IsUnlock(avgcfg.ConditionId)
local isReaded = ActivityAvgData:IsStoryReaded(storyId)
local bOpen, nOpenTime = ActivityAvgData:IsOpen(avgcfg.StoryId, self.nActId)
local nIndex = 0
if isUnlock then
nIndex = bBranch and BRANCH_GRID_INDEX or gridIndex
if nIndex > BRANCH_GRID_INDEX then
nIndex = nIndex - (BRANCH_COUNT - 1)
end
end
local branchSuffix = bBranch and string.char(string.byte("a") + nBranchIndex - 1) or ""
local bShowImgStory = not bBranch or not not isUnlock
imgStory.gameObject:SetActive(bShowImgStory)
if bShowImgStory then
if bOpen and isUnlock then
self:SetPngSprite(imgStory, avgcfg.Icon .. branchSuffix)
else
self:SetPngSprite(imgStory, string.format("Icon/ActivityStory/ep_event09_00"))
end
end
NovaAPI.SetTMPText(txtTitle, avgcfg.Title)
NovaAPI.SetTMPText(txtLevel, avgcfg.Index)
txtLevel.gameObject:SetActive(not bBranch or not not isUnlock)
txtTitle.gameObject:SetActive(isUnlock and bOpen)
goImgTime.gameObject:SetActive(not bOpen)
goComplete.gameObject:SetActive(isUnlock and isReaded and bOpen)
goLock.gameObject:SetActive(not isUnlock and bOpen)
goNotOpen.gameObject:SetActive(not bOpen or bBranch and not isUnlock)
imgBattleTitleBg.gameObject:SetActive(avgcfg.IsBattle and isUnlock and bOpen)
imgStoryTitleBg.gameObject:SetActive(not avgcfg.IsBattle and isUnlock and bOpen)
imgDb.gameObject:SetActive(bOpen)
if not bOpen then
local strTime = self:GetRemainTimeStr(nOpenTime, avgcfg.DayOpen)
if self.tbGridTimer[goInstanceID] ~= nil then
self.tbGridTimer[goInstanceID]:Cancel()
self.tbGridTimer[goInstanceID] = nil
end
self.tbGridTimer[goInstanceID] = self:AddTimer(0, 1, function()
local strTime, bLock = self:GetRemainTimeStr(nOpenTime, avgcfg.DayOpen)
if bLock then
NovaAPI.SetTMPText(txtTime, strTime)
else
self:RefreshStoryList()
end
end, true, true, true)
NovaAPI.SetTMPText(txtTime, strTime)
end
local _bInActGroup, nActGroupId = PlayerData.Activity:IsActivityInActivityGroup(self.nActId)
RedDotManager.RegisterNode(RedDotDefine.Activity_GroupNew_Avg_Group, {
nActGroupId,
self.nActId,
avgcfg.Id
}, RedDot, nil, nil, true)
local clickFuc = function()
if not bOpen or self.bCantClick then
return
end
if isUnlock then
local bNew = not isReaded
self.avgId = avgcfg.StoryId
self._mapNode.ctlAvgRoot.gameObject:SetActive(true)
self._mapNode.ctlAvgRoot:OpenLevelInfo(avgcfg.StoryId, self.nActId, bNew)
self.curIndex = gridIndex
LocalData.SetPlayerLocalData("Act_Story_New" .. self.nActId .. avgcfg.Id, true)
PlayerData.ActivityAvg:RefreshAvgRedDot()
elseif tbResult ~= nil then
local lockTxt = ""
for i = 1, #tbResult do
local value = tbResult[i]
if value[1] == false then
if UnlockConditionPriority[i] == "MustStoryIds" then
do
local tbStoryIds = value[2]
for k, v in pairs(tbStoryIds) do
if v == false then
local storyData = ConfigTable.GetData("ActivityStory", k)
lockTxt = orderedFormat(ConfigTable.GetUIText("Story_UnlockPreId") or "", storyData.Title)
break
end
end
end
break
end
if UnlockConditionPriority[i] == "OneofStoryIds" then
do
local tbStoryIds = value[2]
for k, v in pairs(tbStoryIds) do
if v == false then
local storyData = ConfigTable.GetData("ActivityStory", k)
if ActivityAvgData:IsUnlock(storyData.ConditionId) then
lockTxt = orderedFormat(ConfigTable.GetUIText("Story_UnlockPreId") or "", storyData.Title)
break
end
end
end
if lockTxt == "" then
for k, v in pairs(tbStoryIds) do
local storyData = ConfigTable.GetData("ActivityStory", k)
lockTxt = orderedFormat(ConfigTable.GetUIText("Story_UnlockPreId") or "", storyData.Title)
break
end
end
end
break
end
if UnlockConditionPriority[i] == "MustEvIds" then
lockTxt = ConfigTable.GetUIText("Story_UnlockClueCondition")
break
end
if UnlockConditionPriority[i] == "OneofEvIds" then
lockTxt = ConfigTable.GetUIText("Story_UnlockClueCondition")
break
end
if UnlockConditionPriority[i] == "WorldLevel" then
do
local level = value[2]
lockTxt = orderedFormat(ConfigTable.GetUIText("Story_UnlockWorldLv") or "", level)
end
break
end
if UnlockConditionPriority[i] == "MustAchievementIds" then
if self.bHasAchievementData == true then
local tbAchievementList = value[2]
for k, v in pairs(tbAchievementList) do
if v == false then
local achievementId = k
local achievement = ConfigTable.GetData("Achievement", achievementId)
lockTxt = orderedFormat(ConfigTable.GetUIText("Story_UnlockAchievement") or "", achievement.Title) .. "\n" .. "(" .. achievement.Desc .. ")"
break
end
end
end
break
end
if UnlockConditionPriority[i] == "MustActivityLevel" then
local levelId = value[2]
if 0 < levelId then
local levelData = ConfigTable.GetData("ActivityLevelsLevel", levelId)
if levelData then
lockTxt = orderedFormat(ConfigTable.GetUIText("ActivityStory_UnlockActivityLevel"), levelData.Name)
end
end
end
break
end
end
local msg = {
nType = AllEnum.MessageBox.Alert,
sContent = lockTxt
}
EventManager.Hit(EventId.OpenMessageBox, msg)
end
end
btnGrid.onClick:RemoveAllListeners()
btnGrid.onClick:AddListener(clickFuc)
end
function GunStormStoryCtrl:OnRefreshGrid(grid, index)
local gridIndex = index + 1
local normalRoot = grid.transform:Find("Normal")
local branchRoot = grid.transform:Find("Branch")
if 0 < BRANCH_GRID_INDEX and gridIndex == BRANCH_GRID_INDEX then
for i = 1, BRANCH_COUNT do
local branchGrid = branchRoot:Find("tog" .. i)
self:RefreshGridInfo(branchGrid.gameObject, gridIndex + i - 1, true, i)
end
normalRoot.gameObject:SetActive(false)
branchRoot.gameObject:SetActive(true)
else
if 0 < BRANCH_COUNT and gridIndex > BRANCH_GRID_INDEX then
gridIndex = gridIndex + (BRANCH_COUNT - 1)
end
self:RefreshGridInfo(normalRoot.gameObject, gridIndex, false)
normalRoot.gameObject:SetActive(true)
branchRoot.gameObject:SetActive(false)
end
end
function GunStormStoryCtrl:GetRemainTimeStr(nOpenTime, openDay)
local timeStr = ""
local curTime = CS.ClientManager.Instance.serverTimeStamp
local openTime = CS.ClientManager.Instance:GetNextRefreshTime(nOpenTime) - 86400
local nRemainTime = openTime + openDay * 86400 - curTime
local day = math.floor(nRemainTime / 86400)
local hour = math.floor(nRemainTime / 3600)
local min = math.floor((nRemainTime - hour * 3600) / 60)
local sec = nRemainTime - hour * 3600 - min * 60
if 0 < day then
timeStr = orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Day_Color_Common"), "c76153", day)
elseif 0 < hour then
timeStr = orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Hour_Color_Common"), "c76153", hour)
elseif 0 < min then
timeStr = orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Min_Color_Common"), "c76153", min)
elseif 0 < sec then
timeStr = orderedFormat(ConfigTable.GetUIText("ActivityLevels_Lock_Sec_Color_Common"), "c76153", sec)
end
return timeStr, 0 < nRemainTime
end
function GunStormStoryCtrl:OnBtn_ClickBack()
EventManager.Hit(EventId.ClosePanel, PanelId.GunStormStory_10109)
end
function GunStormStoryCtrl:OnBtn_ClickHome()
PanelManager.Home()
end
function GunStormStoryCtrl:OnBtn_ClickCloseLevelInfoPanel()
self._mapNode.t_fullscreen_blur_black:SetActive(false)
self._mapNode.ctlAvgRoot.gameObject:SetActive(false)
self._mapNode.goChapterComplete:SetActive(false)
end
function GunStormStoryCtrl:OnEvent_Story_Done(bHasReward)
self:RefreshPanel()
if bHasReward then
self.bCantClick = true
end
end
function GunStormStoryCtrl:OnEvent_SelectMainlineBattle(bConfirm)
local OpenPanel = function()
EventManager.Hit(EventId.OpenPanel, PanelId.RegionBossFormation, AllEnum.RegionBossFormationType.ActivityStory, 0, self.avgId, self.nActId)
end
if bConfirm then
EventManager.Hit(EventId.SetTransition, 2, OpenPanel)
end
end
function GunStormStoryCtrl:OnEvent_Activity_Story_RewardClosed()
self.bCantClick = false
if self.curIndex == #self.tbAllStory then
self._mapNode.goChapterComplete:SetActive(true)
end
end
function GunStormStoryCtrl:OnBtn_ClickCloseCompete()
self._mapNode.goChapterComplete:SetActive(false)
end
return GunStormStoryCtrl
@@ -0,0 +1,20 @@
local BasePanel = require("GameCore.UI.BasePanel")
local GunStormStoryPanel = class("GunStormStoryPanel", BasePanel)
GunStormStoryPanel._sUIResRootPath = "UI_Activity/"
GunStormStoryPanel._tbDefine = {
{
sPrefabPath = "10109/Story/GunStormStoryPanel.prefab",
sCtrlName = "Game.UI.ActivityTheme.10109.Story.GunStormStoryCtrl"
}
}
function GunStormStoryPanel:Awake()
end
function GunStormStoryPanel:OnEnable()
end
function GunStormStoryPanel:OnDisable()
end
function GunStormStoryPanel:OnDestroy()
end
function GunStormStoryPanel:OnRelease()
end
return GunStormStoryPanel
@@ -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
@@ -610,7 +610,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
return
end
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
@@ -533,7 +533,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
return
end
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
@@ -876,7 +876,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
end
self:AddTimer(1, 0.2, function()
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end, true, true, true)
end
function ActivityLevelsSelectCtrl:OnEvent_ClosePanel(nPanelId)
@@ -97,6 +97,7 @@ function ActivityLevelsInstanceResultCtrl:Awake()
self._mapNode.goGacha.gameObject:SetActive(false)
end
function ActivityLevelsInstanceResultCtrl:OnEnable()
self.bOpenReward = false
local tbParam = self:GetPanelParam()
local nResultState = 0
if #tbParam == 2 and tbParam[1] == false then
@@ -323,6 +324,10 @@ function ActivityLevelsInstanceResultCtrl:OnBtnClick_Close(btn)
end
end
function ActivityLevelsInstanceResultCtrl:OpenReward()
if self.bOpenReward then
return
end
self.bOpenReward = true
if #self.mapReward > 0 then
local nAnimTime = 2
self._mapNode.goGacha.gameObject:SetActive(true)
@@ -564,7 +564,7 @@ function ActivityLevelsSelectCtrl:OnClickBtnRaid()
return
end
local nNeedEnergy = self.curRequireEnergy
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 5, self.nActId)
EventManager.Hit(EventId.OpenPanel, PanelId.Raid, self.selectLevelData.baseData.Id, nNeedEnergy, 0, self.nActId)
end
function ActivityLevelsSelectCtrl:OnBtnClick_EnemyInfo()
EventManager.Hit("OpenActivityLevelsMonsterInfo", self.PreviewMonsterGroupId)
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+119
View File
@@ -0,0 +1,119 @@
return {
{
cmd = "SetGroupId",
param = {"11401"}
},
{
cmd = "SetCharL2D",
param = {
"avg1_114",
3,
"none",
"",
0
}
},
{
cmd = "SetCharL2D",
param = {
"avg1_114",
0,
"avg_emoji_happy",
"",
0
}
},
{
cmd = "SetCharL2D",
param = {
"avg1_114",
0,
"none",
"special_b",
0
}
},
{
cmd = "SetTalk",
param = {
0,
"avg1_114",
"哼哼……猫眼大人成功凯旋!",
0,
"",
false,
""
}
},
{
cmd = "SetTalk",
param = {
0,
"avg1_114",
"已经感觉到了!我体内的黑暗之力,变得更加强大了!",
0,
"",
false,
""
}
},
{
cmd = "SetGroupId",
param = {"11402"}
},
{
cmd = "SetCharL2D",
param = {
"avg1_114",
3,
"none",
"",
0
}
},
{
cmd = "SetCharL2D",
param = {
"avg1_114",
0,
"avg_emoji_star",
"",
0
}
},
{
cmd = "SetCharL2D",
param = {
"avg1_114",
0,
"none",
"presents_b",
0
}
},
{
cmd = "SetTalk",
param = {
0,
"avg1_114",
"哎呀哎呀,看样子拿到了不少报酬呢!",
0,
"",
false,
""
}
},
{
cmd = "SetTalk",
param = {
0,
"avg1_114",
"看来,与魔王一起行动,果然能够增幅猫眼大人体内的黑暗之力呢!",
0,
"",
false,
""
}
},
{cmd = "End"}
}
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
+77 -3
View File
@@ -254,7 +254,7 @@ return {
{
id = "avg1_146",
name = "蓝锥",
name_bg_color = "#0ABEC5"
name_bg_color = "#84afff"
},
{
id = "avg1_147",
@@ -356,7 +356,7 @@ return {
},
{
id = "avg2_944",
name = "***",
name = "捕草蝎",
name_bg_color = "#0ABEC5",
ver = "1.12.0"
},
@@ -1132,6 +1132,18 @@ return {
name_bg_color = "#fced8a",
ver = "1.9.0"
},
{
id = "avg3_218",
name = "米拉什居民男",
name_bg_color = "#0ABEC5",
ver = "1.12.0"
},
{
id = "avg3_219",
name = "米拉什居民女",
name_bg_color = "#0ABEC5",
ver = "1.12.0"
},
{
id = "avg3_220",
name = "梅尔库莉娅",
@@ -1150,6 +1162,12 @@ return {
name_bg_color = "#a5cdc3",
ver = "1.11.0"
},
{
id = "avg3_223",
name = "***",
name_bg_color = "#a5cdc3",
ver = "1.15.0"
},
{
id = "avg3_873",
name = "克莱儿",
@@ -2811,11 +2829,67 @@ return {
},
{
id = "avg3_1304",
name = "***",
name = "猫眼A",
name_bg_color = "#8e65ad",
reuse = "avg1_114",
ver = "1.12.0"
},
{
id = "avg3_1305",
name = "***",
name_bg_color = "#b0e0f6",
reuse = "avg1_160",
ver = "1.13.0"
},
{
id = "avg3_1306",
name = "***",
name_bg_color = "#0ABEC5",
reuse = "avg2_948",
ver = "1.13.0"
},
{
id = "avg3_1307",
name = "***",
name_bg_color = "#0ABEC5",
reuse = "avg2_948",
ver = "1.13.0"
},
{
id = "avg3_1308",
name = "***",
name_bg_color = "#0ABEC5",
reuse = "avg2_947",
ver = "1.13.0"
},
{
id = "avg3_1309",
name = "***",
name_bg_color = "#0ABEC5",
reuse = "avg2_947",
ver = "1.13.0"
},
{
id = "avg3_1310",
name = "***",
name_bg_color = "#0ABEC5",
reuse = "avg2_991",
ver = "1.13.0"
},
{
id = "avg3_1311",
name = "***",
name_bg_color = "#0ABEC5",
reuse = "avg3_100",
ver = "1.13.0"
},
{
id = "avg3_1312",
name = "***",
name_bg_color = "#0ABEC5",
reuse = "avg3_101",
ver = "1.13.0"
},
{
id = "avg4_100",
name = "菈露发光",
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff
File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More