forked from endernon/PGRData
122 lines
4 KiB
Lua
122 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
|