195 lines
5.4 KiB
Lua
195 lines
5.4 KiB
Lua
|
--===========================
|
|||
|
--超限乱斗核心对象
|
|||
|
--模块负责:吕天元
|
|||
|
--===========================
|
|||
|
local XSmashBCore = XClass(nil, "XSmashBCore")
|
|||
|
|
|||
|
function XSmashBCore:Ctor(cfg)
|
|||
|
self:Reset()
|
|||
|
self.CoreCfg = cfg
|
|||
|
end
|
|||
|
|
|||
|
function XSmashBCore:Reset()
|
|||
|
self.AtkLevel = 0
|
|||
|
self.LifeLevel = 0
|
|||
|
self.Star = 0
|
|||
|
self.CoreCfg = nil
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心Id(SuperSmashBrosCore Id)
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetId()
|
|||
|
return self.CoreCfg and self.CoreCfg.Id
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心对应模式Id(SuperSmashBrosCore ModeId)
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetModeId()
|
|||
|
return self.CoreCfg and self.CoreCfg.ModeId
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心名称(SuperSmashBrosCore Name)
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetName()
|
|||
|
return self.CoreCfg and self.CoreCfg.Name
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心图标途径(SuperSmashBrosCore Icon)
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetIcon()
|
|||
|
return self.CoreCfg and self.CoreCfg.Icon
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心星级上限(SuperSmashBrosCore StarLimit)
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetStarLimit()
|
|||
|
return self.CoreCfg and self.CoreCfg.StarLimit
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心增幅上限(SuperSmashBrosCore StrongAttrLimit)
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetStrongAttrLimit()
|
|||
|
return self.CoreCfg and self.CoreCfg.StrongAttrLimit
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取解锁条件描述(SuperSmashBrosCore UnlockTips)
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetUnlockTips()
|
|||
|
return self.CoreCfg and self.CoreCfg.UnlockTips
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心攻击力增幅等级
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetAtkLevel()
|
|||
|
return self.AtkLevel
|
|||
|
end
|
|||
|
--===============
|
|||
|
--设置核心攻击力增幅等级
|
|||
|
--===============
|
|||
|
function XSmashBCore:SetAtkLevel(value)
|
|||
|
if not value or value < 0 then
|
|||
|
value = 0
|
|||
|
end
|
|||
|
self.AtkLevel = value
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心生命值增幅等级
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetLifeLevel()
|
|||
|
return self.LifeLevel
|
|||
|
end
|
|||
|
--===============
|
|||
|
--设置核心生命值增幅等级
|
|||
|
--===============
|
|||
|
function XSmashBCore:SetLifeLevel(value)
|
|||
|
if not value or value < 0 then
|
|||
|
value = 0
|
|||
|
end
|
|||
|
self.LifeLevel = value
|
|||
|
end
|
|||
|
--===============
|
|||
|
--检查属性增幅是否满值
|
|||
|
--===============
|
|||
|
function XSmashBCore:CheckAttrIsMax()
|
|||
|
return (self:GetAtkLevel() + self:GetLifeLevel()) >= self:GetStrongAttrLimit()
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心星级
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetStar()
|
|||
|
return self.Star + 1
|
|||
|
end
|
|||
|
--===============
|
|||
|
--设置核心星级
|
|||
|
--===============
|
|||
|
function XSmashBCore:SetStar(value)
|
|||
|
if not value or value < XDataCenter.SuperSmashBrosManager.GetCoreStartLevel() then
|
|||
|
value = XDataCenter.SuperSmashBrosManager.GetCoreStartLevel()
|
|||
|
end
|
|||
|
self.Star = value
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心是否上锁
|
|||
|
--===============
|
|||
|
function XSmashBCore:CheckIsLock()
|
|||
|
local mode = XDataCenter.SuperSmashBrosManager.GetModeByModeType(self:GetModeId())
|
|||
|
return mode and not mode:CheckUnlock()
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心所有技能配置列表(以技能星级排序)
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetSkillCfgs()
|
|||
|
return XSuperSmashBrosConfig.GetCfgByIdKey(XSuperSmashBrosConfig.TableKey.Core2CoreLevelDic, self:GetId())
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心当前星级技能配置
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetCurrentSkillCfg()
|
|||
|
return self:GetSkillCfgByStar(self:GetStar())
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心当前星级技能描述
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetSkillDescription()
|
|||
|
local cfg = self:GetCurrentSkillCfg()
|
|||
|
return cfg and cfg.Description
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心当前星级技能的升级描述
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetSkillUpgradeDescription()
|
|||
|
local cfg = self:GetCurrentSkillCfg()
|
|||
|
return cfg and cfg.UpgradeDescription
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心给定星级技能配置
|
|||
|
--@param
|
|||
|
--star : 要获取的技能的星级
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetSkillCfgByStar(star)
|
|||
|
local skills = self:GetSkillCfgs()
|
|||
|
if skills then return skills[star - 1] end --这里减1是因为配置星数是从0开始的,而展示是从1开始的,这里统一使用展示用的从1开始的星数
|
|||
|
return {}
|
|||
|
end
|
|||
|
--===============
|
|||
|
--检查核心是否满级
|
|||
|
--===============
|
|||
|
function XSmashBCore:CheckSkillIsMax()
|
|||
|
return self:GetStar() >= self:GetStarLimit()
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心消耗道具Id
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetSkillCostItemId()
|
|||
|
local cfg = self:GetCurrentSkillCfg()
|
|||
|
return cfg and cfg.SpendMaterialId
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心消耗道具数量
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetSkillCostCount()
|
|||
|
local cfg = self:GetCurrentSkillCfg()
|
|||
|
return cfg and cfg.SpendMaterialCount
|
|||
|
end
|
|||
|
--===============
|
|||
|
--获取核心消耗道具图标
|
|||
|
--===============
|
|||
|
function XSmashBCore:GetSkillCostItemIcon()
|
|||
|
local itemId = self:GetSkillCostItemId()
|
|||
|
return XDataCenter.ItemManager.GetItemIcon(itemId)
|
|||
|
end
|
|||
|
--===============
|
|||
|
--检查是否是新核心
|
|||
|
--===============
|
|||
|
function XSmashBCore:CheckNew()
|
|||
|
local isLock = self:CheckIsLock()
|
|||
|
if isLock then return false end
|
|||
|
local isNew = XSaveTool.GetData(
|
|||
|
"SuperSmashBrosLocalData_NewCore_Id_" .. self:GetId() ..
|
|||
|
"_Player_" .. XPlayer.Id ..
|
|||
|
"_Activity_" .. XDataCenter.SuperSmashBrosManager.GetActivityId()
|
|||
|
) == nil
|
|||
|
return isNew
|
|||
|
end
|
|||
|
|
|||
|
return XSmashBCore
|