Initial version - 1.2.0.60
EN: 1.2.0.60 CN: 1.2.0.61 JP: 1.2.0.63 KR: 1.2.0.67
This commit is contained in:
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,217 @@
|
||||
local BaseRoom = require("Game.Adventure.StarTower.StarTowerRoom.BaseRoom")
|
||||
local BattleRoom = class("BattleRoom", BaseRoom)
|
||||
BattleRoom._mapEventConfig = {
|
||||
CSHARP2LUA_BATTLE_DROP_COIN = "OnEvent_GetCoin",
|
||||
ADVENTURE_BATTLE_MONSTER_DIED = "OnEvent_MonsterDied",
|
||||
LevelStateChanged = "OnEvent_LevelStateChanged",
|
||||
LevelUseTotalTime = "OnEvent_TimeEnd",
|
||||
LevelPauseUseTotalTime = "OnEvent_TimeEnd",
|
||||
InteractiveNpc = "OnEvent_InteractiveNpc",
|
||||
Level_Settlement = "OnEvent_ActorFinishDie"
|
||||
}
|
||||
function BattleRoom:LevelStart()
|
||||
local mapBattleCase = self.mapCases[self.EnumCase.Battle]
|
||||
self.nCoinTemp = 0
|
||||
self.bBattleEnd = false
|
||||
if mapBattleCase == nil then
|
||||
self.bBattleEnd = true
|
||||
EventManager.Hit("ShowStarTowerRoomInfo", true, self.parent.nTeamLevel, self.parent.nTeamExp, clone(self.parent._mapNote), clone(self.parent._mapFateCard))
|
||||
local nCoin = self.parent._mapItem[AllEnum.CoinItemId.FixedRogCurrency]
|
||||
if nCoin == nil then
|
||||
nCoin = 0
|
||||
end
|
||||
local nBuildScore = self.parent:CalBuildScore()
|
||||
EventManager.Hit("ShowStarTowerCoin", true, nCoin, nBuildScore)
|
||||
self:AddTimer(1, 0.1, function()
|
||||
CS.WwiseAudioManager.Instance:SetState("combat", "explore")
|
||||
end, true, true, true)
|
||||
return
|
||||
end
|
||||
PlayerData.Achievement:SetSpecialBattleAchievement(GameEnum.levelType.StarTower)
|
||||
if mapBattleCase.Data.TimeLimit then
|
||||
local nLevel = self.parent.nCurLevel
|
||||
local nType = self.parent.nRoomType
|
||||
local nStage = self.parent:GetStage(nLevel)
|
||||
EventManager.Hit("OpenBossTime", nStage, nType)
|
||||
end
|
||||
EventManager.Hit("ShowStarTowerCoin", false)
|
||||
self.bFailed = false
|
||||
local nType = self.parent.nRoomType
|
||||
if nType == GameEnum.starTowerRoomType.BossRoom or nType == GameEnum.starTowerRoomType.FinalBossRoom then
|
||||
EventManager.Hit("StartClientRankTimer")
|
||||
end
|
||||
end
|
||||
function BattleRoom:OnLoadLevelRefresh()
|
||||
end
|
||||
function BattleRoom:OnEvent_LevelStateChanged(nState)
|
||||
if self.bFailed then
|
||||
printError("角色已死亡")
|
||||
return
|
||||
end
|
||||
if nState == GameEnum.levelState.Teleporter then
|
||||
if self.mapCases[self.EnumCase.OpenDoor] == nil then
|
||||
printError("无传送门case 无法进入下一层")
|
||||
return
|
||||
end
|
||||
local tbDoorCase = self.mapCases[self.EnumCase.OpenDoor]
|
||||
self.parent:EnterRoom(tbDoorCase[1], tbDoorCase[2])
|
||||
return
|
||||
end
|
||||
if self.mapCases[self.EnumCase.Battle] == nil then
|
||||
printError("无战斗事件需要处理")
|
||||
return
|
||||
end
|
||||
EventManager.Hit("CloseBossTime", nState == GameEnum.levelState.Success)
|
||||
local msg = {}
|
||||
local nEventId = self.mapCases[self.EnumCase.Battle].Id
|
||||
msg.Id = nEventId
|
||||
msg.BattleEndReq = {}
|
||||
local nType = self.parent.nRoomType
|
||||
if nType == GameEnum.starTowerRoomType.BossRoom or nType == GameEnum.starTowerRoomType.FinalBossRoom then
|
||||
EventManager.Hit("ResetClientRankTimer")
|
||||
end
|
||||
if nState == GameEnum.levelState.Success then
|
||||
self.bBattleEnd = true
|
||||
EventManager.Hit("ShowStarTowerRoomInfo", true, self.parent.nTeamLevel, self.parent.nTeamExp, clone(self.parent._mapNote), clone(self.parent._mapFateCard))
|
||||
local nCoin = self.parent._mapItem[AllEnum.CoinItemId.FixedRogCurrency]
|
||||
if nCoin == nil then
|
||||
nCoin = 0
|
||||
end
|
||||
local nBuildScore = self.parent:CalBuildScore()
|
||||
EventManager.Hit("ShowStarTowerCoin", true, nCoin, nBuildScore)
|
||||
local mapCharHpInfo = self.parent.GetActorHp()
|
||||
local nMainChar = self.parent.tbTeam[1]
|
||||
local nHp = -1
|
||||
if mapCharHpInfo[nMainChar] ~= nil then
|
||||
nHp = mapCharHpInfo[nMainChar]
|
||||
end
|
||||
local tbUsage = self.parent:GetFateCardUsage()
|
||||
local clientData, nDataLength = self.parent:CacheTempData()
|
||||
local tbDamage = self.parent:GetDamageRecord()
|
||||
local tbSamples = UTILS.GetBattleSamples()
|
||||
if self.parent.nTotalTime ~= nil then
|
||||
self.parent.nTotalTime = self.parent.nTotalTime + self.nTime
|
||||
end
|
||||
local tbEvent = {}
|
||||
tbEvent = PlayerData.Achievement:GetBattleAchievement(GameEnum.levelType.StarTower, true)
|
||||
msg.BattleEndReq.Victory = {
|
||||
HP = nHp,
|
||||
Time = self.nTime,
|
||||
ClientData = clientData,
|
||||
fateCardUsage = tbUsage,
|
||||
DateLen = nDataLength,
|
||||
Damages = tbDamage,
|
||||
Sample = tbSamples,
|
||||
Events = {List = tbEvent}
|
||||
}
|
||||
local tabUpLevel = {}
|
||||
table.insert(tabUpLevel, {
|
||||
"role_id",
|
||||
tostring(PlayerData.Base._nPlayerId)
|
||||
})
|
||||
table.insert(tabUpLevel, {
|
||||
"game_cost_time",
|
||||
tostring(self.nTime)
|
||||
})
|
||||
table.insert(tabUpLevel, {
|
||||
"real_cost_time",
|
||||
tostring(CS.ClientManager.Instance.serverTimeStampWithTimeZone - self._EntryTime)
|
||||
})
|
||||
table.insert(tabUpLevel, {
|
||||
"tower_id",
|
||||
tostring(self.parent.nTowerId)
|
||||
})
|
||||
table.insert(tabUpLevel, {
|
||||
"room_floor",
|
||||
tostring(self.parent.nCurLevel)
|
||||
})
|
||||
table.insert(tabUpLevel, {
|
||||
"room_type",
|
||||
tostring(self.parent.nRoomType)
|
||||
})
|
||||
table.insert(tabUpLevel, {
|
||||
"action",
|
||||
tostring(2)
|
||||
})
|
||||
NovaAPI.UserEventUpload("star_tower", tabUpLevel)
|
||||
elseif nState == GameEnum.levelState.Failed then
|
||||
self.bFailed = true
|
||||
return
|
||||
end
|
||||
local callback = function(msgData, tbChangeFateCard, mapChangeNote, mapItemChange, nLevelChange, nExpChange)
|
||||
self.nCoinTemp = 0
|
||||
self.mapCases[self.EnumCase.Battle].bFinish = true
|
||||
self.nWaitShowTime = 0
|
||||
self.showFinishCall = nil
|
||||
local setTime = function(nTime, callback)
|
||||
self.nWaitShowTime = nTime
|
||||
self.showFinishCall = callback
|
||||
end
|
||||
EventManager.Hit("ShowBattleReward", nLevelChange, nExpChange, tbChangeFateCard, mapChangeNote, mapItemChange, setTime)
|
||||
self.blockNpcBtn = true
|
||||
local waitCallback = function()
|
||||
if self.showFinishCall ~= nil then
|
||||
self.showFinishCall()
|
||||
self.showFinishCall = nil
|
||||
end
|
||||
self:HandleCases()
|
||||
end
|
||||
if 0 < self.nWaitShowTime then
|
||||
self:AddTimer(1, self.nWaitShowTime, waitCallback, true, true, true, nil)
|
||||
else
|
||||
waitCallback()
|
||||
end
|
||||
end
|
||||
self.parent:StarTowerInteract(msg, callback)
|
||||
end
|
||||
function BattleRoom:OnEvent_MonsterDied()
|
||||
end
|
||||
function BattleRoom:OnEvent_InteractiveNpc(nNpcId, nNpcUid)
|
||||
self:HandleNpc(nNpcId, nNpcUid)
|
||||
end
|
||||
function BattleRoom:OnEvent_GetCoin(num)
|
||||
end
|
||||
function BattleRoom:OnEvent_TimeEnd(nTime)
|
||||
self.nTime = nTime
|
||||
end
|
||||
function BattleRoom:OnEvent_ActorFinishDie()
|
||||
if self.bBattleEnd then
|
||||
EventManager.Hit("AbandonStarTower")
|
||||
else
|
||||
local msg = {}
|
||||
local nEventId = self.mapCases[self.EnumCase.Battle].Id
|
||||
msg.Id = nEventId
|
||||
msg.BattleEndReq = {}
|
||||
msg.BattleEndReq.Defeat = true
|
||||
local callback = function(msgData)
|
||||
self.nCoinTemp = 0
|
||||
self.mapCases[self.EnumCase.Battle].bFinish = true
|
||||
print("遗迹失败")
|
||||
self.parent:StarTowerFailed(msgData.Settle.Change, msgData.Settle.Build, msgData.Settle.TotalTime, msgData.Settle.Reward, msgData.Settle.TowerRewards, msgData.Settle.NpcInteraction)
|
||||
end
|
||||
local ConfirmCallback = function()
|
||||
self.parent:ReBattle()
|
||||
PanelManager.InputEnable()
|
||||
end
|
||||
local CancelCallback = function()
|
||||
self.parent:StarTowerInteract(msg, callback)
|
||||
PanelManager.InputEnable()
|
||||
end
|
||||
if self.parent.bPrologue == true then
|
||||
self.parent:StarTowerInteract(msg, callback)
|
||||
else
|
||||
do
|
||||
local data = {
|
||||
nType = AllEnum.MessageBox.Confirm,
|
||||
sContent = ConfigTable.GetUIText("Startower_ReBattleHint"),
|
||||
sContentSub = "",
|
||||
callbackConfirm = ConfirmCallback,
|
||||
callbackCancel = CancelCallback
|
||||
}
|
||||
EventManager.Hit(EventId.OpenMessageBox, data)
|
||||
PanelManager.InputDisable()
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
return BattleRoom
|
||||
@@ -0,0 +1,35 @@
|
||||
local BaseRoom = require("Game.Adventure.StarTower.StarTowerRoom.BaseRoom")
|
||||
local EventRoom = class("EventRoom", BaseRoom)
|
||||
local WwiseAudioMgr = CS.WwiseAudioManager.Instance
|
||||
EventRoom._mapEventConfig = {
|
||||
LevelStateChanged = "OnEvent_LevelStateChanged",
|
||||
InteractiveNpc = "OnEvent_InteractiveNpc"
|
||||
}
|
||||
function EventRoom:LevelStart()
|
||||
self:HandleCases()
|
||||
EventManager.Hit("ShowStarTowerRoomInfo", true, self.parent.nTeamLevel, self.parent.nTeamExp, clone(self.parent._mapNote), clone(self.parent._mapFateCard))
|
||||
local nCoin = self.parent._mapItem[AllEnum.CoinItemId.FixedRogCurrency]
|
||||
if nCoin == nil then
|
||||
nCoin = 0
|
||||
end
|
||||
local nBuildScore = self.parent:CalBuildScore()
|
||||
EventManager.Hit("ShowStarTowerCoin", true, nCoin, nBuildScore)
|
||||
EventManager.Hit("PlayStarTowerDiscBgm")
|
||||
end
|
||||
function EventRoom:OnEvent_InteractiveNpc(nNpcId, nNpcUid)
|
||||
self:HandleNpc(nNpcId, nNpcUid)
|
||||
end
|
||||
function EventRoom:OnLoadLevelRefresh()
|
||||
end
|
||||
function EventRoom:OnEvent_LevelStateChanged(nState)
|
||||
if nState == GameEnum.levelState.Teleporter then
|
||||
if self.mapCases[self.EnumCase.OpenDoor] == nil then
|
||||
printError("无传送门case 无法进入下一层")
|
||||
return
|
||||
end
|
||||
local tbDoorCase = self.mapCases[self.EnumCase.OpenDoor]
|
||||
self.parent:EnterRoom(tbDoorCase[1], tbDoorCase[2])
|
||||
return
|
||||
end
|
||||
end
|
||||
return EventRoom
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user