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:
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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},
|
||||
|
||||
@@ -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
|
||||
+1
@@ -11,6 +11,7 @@ GoldenSpyBuffSelectPanel._tbDefine = {
|
||||
}
|
||||
function GoldenSpyBuffSelectPanel:Awake()
|
||||
GamepadUIManager.EnableGamepadUI("GoldenSpyBuffSelect", {})
|
||||
self.nTipsPanelId = PanelId.GoldenSpyBuffTipsPanel_400008
|
||||
end
|
||||
function GoldenSpyBuffSelectPanel:OnEnable()
|
||||
end
|
||||
+3
@@ -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
|
||||
+11
-11
@@ -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
|
||||
+2
-2
@@ -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
|
||||
+1
-1
@@ -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
|
||||
+1
-1
@@ -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)
|
||||
|
||||
@@ -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
@@ -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
@@ -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
Reference in New Issue
Block a user