123 lines
4 KiB
Lua
123 lines
4 KiB
Lua
|
local XReform2ndStage = require("XEntity/XReform2/XReform2ndStage")
|
|||
|
local XReform2ndMob = require("XEntity/XReform2/XReform2ndMob")
|
|||
|
local XReform2ndAffix = require("XEntity/XReform2/XReform2ndAffix")
|
|||
|
|
|||
|
---@class XReform2ndData
|
|||
|
local XReform2ndData = XClass(nil, "XReform2ndData")
|
|||
|
|
|||
|
function XReform2ndData:Ctor()
|
|||
|
-- 开始
|
|||
|
self._IsPlaying = false
|
|||
|
|
|||
|
-- 活动Id
|
|||
|
self._ActivityId = XReform2ndConfigs.GetActivityDefaultId()
|
|||
|
|
|||
|
---@type XReform2ndStage[]
|
|||
|
self._Stage = {}
|
|||
|
end
|
|||
|
|
|||
|
---@return XReform2ndStage
|
|||
|
function XReform2ndData:GetStage(stageId)
|
|||
|
if not XReform2ndConfigs.IsStageValid(stageId) then
|
|||
|
XLog.Error("[XReform2ndData] stageId invalid", stageId)
|
|||
|
return
|
|||
|
end
|
|||
|
local stage = self._Stage[stageId]
|
|||
|
if not stage then
|
|||
|
stage = XReform2ndStage.New(stageId)
|
|||
|
self._Stage[stageId] = stage
|
|||
|
end
|
|||
|
return stage
|
|||
|
end
|
|||
|
|
|||
|
function XReform2ndData:GetStageDic()
|
|||
|
return self._Stage
|
|||
|
end
|
|||
|
|
|||
|
-- 这个结构有点复杂
|
|||
|
function XReform2ndData:SetData(data)
|
|||
|
local stages = data.StageDbs
|
|||
|
|
|||
|
-- stage
|
|||
|
for i = 1, #stages do
|
|||
|
local stageData = stages[i]
|
|||
|
local stageId = stageData.Id
|
|||
|
if XReform2ndConfigs.IsStageValid(stageId) then
|
|||
|
local stage = self:GetStage(stageId)
|
|||
|
local pass = stageData.Pass
|
|||
|
stage:SetIsPassed(pass)
|
|||
|
|
|||
|
-- abandon: 每个stage有难度,现在默认为1
|
|||
|
local difficulty = stageData.CurDiffIndex + 1
|
|||
|
local detailData = stageData.DifficultyDbs[difficulty]
|
|||
|
if detailData then
|
|||
|
stage:SetStarHistory(XReform2ndConfigs.GetStarByPressure(detailData.Score, stageId))
|
|||
|
stage:SetExtraStar(detailData.ExtraStar > 0)
|
|||
|
|
|||
|
-- 每个难度有n组mobGroup
|
|||
|
local enemyList = detailData.EnemyReplaceIds
|
|||
|
for j = 1, #enemyList do
|
|||
|
local enemy = enemyList[j]
|
|||
|
local groupId = enemy.EnemyGroupId
|
|||
|
local mobGroup = stage:GetMonsterGroupByGroupId(groupId)
|
|||
|
|
|||
|
-- 每个mobGroup有一组mob
|
|||
|
if mobGroup then
|
|||
|
local sourceId = enemy.SourceId
|
|||
|
local index = mobGroup:GetIndexBySourceId(sourceId)
|
|||
|
if index then
|
|||
|
local mobId = enemy.TargetId
|
|||
|
---@type XReform2ndMob
|
|||
|
local mob = XReform2ndMob.New(mobId)
|
|||
|
mobGroup:SetMob(index, mob)
|
|||
|
|
|||
|
-- 每个mob有一组affix
|
|||
|
local affixList = enemy.AffixSourceId
|
|||
|
for k = 1, #affixList do
|
|||
|
local affixId = affixList[k]
|
|||
|
if XReform2ndConfigs.IsAffixValid(affixId) then
|
|||
|
local affix = XReform2ndAffix.New(affixId)
|
|||
|
mob:SetAffixSelected(affix)
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
self._IsPlaying = data.IsPlaying
|
|||
|
local activityId = data.ActivityId
|
|||
|
if not XReform2ndConfigs.IsActivityExist(activityId) then
|
|||
|
activityId = XReform2ndConfigs.GetActivityDefaultId()
|
|||
|
end
|
|||
|
self._ActivityId = activityId
|
|||
|
end
|
|||
|
|
|||
|
function XReform2ndData:GetHelpKey1()
|
|||
|
return XReform2ndConfigs.GetActivityHelpKey1(self._ActivityId)
|
|||
|
end
|
|||
|
|
|||
|
function XReform2ndData:GetHelpKey2()
|
|||
|
return XReform2ndConfigs.GetActivityHelpKey2(self._ActivityId)
|
|||
|
end
|
|||
|
|
|||
|
function XReform2ndData:GetOpenTimeId()
|
|||
|
return XReform2ndConfigs.GetActivityOpenTimeId(self._ActivityId)
|
|||
|
end
|
|||
|
|
|||
|
function XReform2ndData:GetName()
|
|||
|
return XReform2ndConfigs.GetActivityName(self._ActivityId)
|
|||
|
end
|
|||
|
|
|||
|
function XReform2ndData:GetIcon()
|
|||
|
return XReform2ndConfigs.GetActivityBannerIcon(self._ActivityId)
|
|||
|
end
|
|||
|
|
|||
|
function XReform2ndData:GetActivityId()
|
|||
|
return self._ActivityId
|
|||
|
end
|
|||
|
|
|||
|
return XReform2ndData
|