216 lines
7 KiB
Lua
216 lines
7 KiB
Lua
|
-- 战双大秘境插件
|
|||
|
local XRiftPlugin = XClass(nil, "XRiftPlugin")
|
|||
|
local CommonText = XUiHelper.GetText("Common")
|
|||
|
|
|||
|
function XRiftPlugin:Ctor(config)
|
|||
|
self.Config = config
|
|||
|
self.IsHave = false
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:GetId()
|
|||
|
return self.Config.Id
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:GetName()
|
|||
|
return self.Config.Name
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:GetStar()
|
|||
|
return self.Config.Star
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:GetIcon()
|
|||
|
return self.Config.Icon
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:GetTag()
|
|||
|
if self.Config.CharacterId ~= 0 then
|
|||
|
return XCharacterConfigs.GetCharacterName(self.Config.CharacterId)
|
|||
|
else
|
|||
|
return CommonText
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:GetQualityImage()
|
|||
|
local config = XRiftConfig.GetCfgByIdKey(XRiftConfig.TableKey.RiftPluginQuality, self.Config.Quality)
|
|||
|
return config.Image, config.ImageBg
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:GetImageDropHead()
|
|||
|
local config = XRiftConfig.GetCfgByIdKey(XRiftConfig.TableKey.RiftPluginQuality, self.Config.Quality)
|
|||
|
return config.ImageDropHead
|
|||
|
end
|
|||
|
|
|||
|
-- 插件总描述
|
|||
|
function XRiftPlugin:GetDesc()
|
|||
|
local attrLevel = XDataCenter.RiftManager.GetDefaultTemplateAttrLevel(self.Config.DescFixAttrId)
|
|||
|
local descInitValue = self.Config.DescInitValue / 10000 -- DescInitValue配表按*10000填写
|
|||
|
local descCoefficient = self.Config.DescCoefficient / 10000 -- DescCoefficient配表按*10000填写
|
|||
|
local attrAddValue = attrLevel * descCoefficient
|
|||
|
local desc = self.Config.Desc
|
|||
|
desc = string.gsub(desc, "{0}", self:FormatNum(descInitValue + attrAddValue))
|
|||
|
desc = string.gsub(desc, "{1}", self:FormatNum(descInitValue))
|
|||
|
desc = string.gsub(desc, "{2}", self:FormatNum(attrAddValue))
|
|||
|
desc = string.gsub(desc, "{3}", attrLevel)
|
|||
|
desc = string.gsub(desc, "{4}", self:FormatNum(descCoefficient))
|
|||
|
if self.Config.DescTips then
|
|||
|
desc = desc .. self.Config.DescTips
|
|||
|
end
|
|||
|
return desc
|
|||
|
end
|
|||
|
|
|||
|
-- 保留到小数点一位,小数如果为0,则去掉
|
|||
|
function XRiftPlugin:FormatNum(num)
|
|||
|
num = string.format("%.1f", num)
|
|||
|
num = tonumber(num)
|
|||
|
local t1, t2 = math.modf(num)
|
|||
|
if t2 > 0 then
|
|||
|
return num
|
|||
|
else
|
|||
|
return t1
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 获取插件补正类型,如:能量:S、体力:A
|
|||
|
function XRiftPlugin:GetAttrFixTypeList()
|
|||
|
if self.Config.FixAttrIds == nil then
|
|||
|
return {}
|
|||
|
end
|
|||
|
|
|||
|
local attrTypeList = {}
|
|||
|
for index, attrId in ipairs(self.Config.FixAttrIds) do
|
|||
|
local level = self.Config.FixAttrLevels[index]
|
|||
|
local attrType = XRiftConfig.GetAttrName(attrId) .. ":" .. XRiftConfig.AttributeLevelStr[level]
|
|||
|
table.insert(attrTypeList, attrType)
|
|||
|
end
|
|||
|
return attrTypeList
|
|||
|
end
|
|||
|
|
|||
|
-- 获取插件总的战力值
|
|||
|
-- 不传属性加点模板xAttrTemplate,则用默认的
|
|||
|
function XRiftPlugin:GetAbility(xAttrTemplate)
|
|||
|
local ability = self.Config.Ability
|
|||
|
local attrFixCfgList = self:GetAttrFixConfigList(xAttrTemplate)
|
|||
|
for _, attrFixCfg in ipairs(attrFixCfgList) do
|
|||
|
ability = ability + attrFixCfg.Ability
|
|||
|
end
|
|||
|
|
|||
|
return ability
|
|||
|
end
|
|||
|
|
|||
|
-- 获取补正效果,未拼接好字符串,可与队伍属性加点效果叠加处理
|
|||
|
-- 不传属性加点模板xAttrTemplate,则用默认的
|
|||
|
function XRiftPlugin:GetEffectList(xAttrTemplate)
|
|||
|
local attrFixCfgList = self:GetAttrFixConfigList(xAttrTemplate)
|
|||
|
if #attrFixCfgList == 0 then
|
|||
|
return {}
|
|||
|
end
|
|||
|
|
|||
|
local effectList = {}
|
|||
|
for _, attrFixCfg in ipairs(attrFixCfgList) do
|
|||
|
local showValue = attrFixCfg.EffectValue
|
|||
|
local effectTypeCfg = XRiftConfig.GetCfgByIdKey(XRiftConfig.TableKey.RiftTeamAttributeEffectType, attrFixCfg.EffectType)
|
|||
|
if effectTypeCfg.ShowType == XRiftConfig.AttributeFixEffectType.Percent then
|
|||
|
showValue = self:FormatNum(attrFixCfg.EffectValue / 100)
|
|||
|
end
|
|||
|
local effect = { EffectType = attrFixCfg.EffectType, EffectValue = showValue }
|
|||
|
table.insert(effectList, effect)
|
|||
|
end
|
|||
|
|
|||
|
return effectList
|
|||
|
end
|
|||
|
|
|||
|
-- 获取补正效果,已拼接好效果值字符串
|
|||
|
function XRiftPlugin:GetEffectStringList()
|
|||
|
local attrFixCfgList = self:GetAttrFixConfigList()
|
|||
|
if #attrFixCfgList == 0 then
|
|||
|
return {}
|
|||
|
end
|
|||
|
|
|||
|
local effectList = {}
|
|||
|
for _, attrFixCfg in ipairs(attrFixCfgList) do
|
|||
|
local valueString
|
|||
|
local attrName = XRiftConfig.GetAttrName(attrFixCfg.FixAttrId)
|
|||
|
local attrLevel = XDataCenter.RiftManager.GetDefaultTemplateAttrLevel(attrFixCfg.FixAttrId)
|
|||
|
|
|||
|
local effectTypeCfg = XRiftConfig.GetCfgByIdKey(XRiftConfig.TableKey.RiftTeamAttributeEffectType, attrFixCfg.EffectType)
|
|||
|
if effectTypeCfg.ShowType == XRiftConfig.AttributeFixEffectType.Percent then
|
|||
|
local showValue = self:FormatNum(attrFixCfg.EffectValue / 100)
|
|||
|
valueString = string.format("+%s(%s%s)", showValue .. "%", attrName, attrLevel)
|
|||
|
else
|
|||
|
valueString = string.format("+%s(%s%s)", attrFixCfg.EffectValue, attrName, attrLevel)
|
|||
|
end
|
|||
|
|
|||
|
local effect = { Name = effectTypeCfg.Name, ValueString = valueString, Order = effectTypeCfg.Order }
|
|||
|
table.insert(effectList, effect)
|
|||
|
end
|
|||
|
table.sort(effectList, function(a, b)
|
|||
|
return a.Order < b.Order
|
|||
|
end)
|
|||
|
|
|||
|
return effectList
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:SetHave()
|
|||
|
self.IsHave = true
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:GetHave()
|
|||
|
return self.IsHave
|
|||
|
end
|
|||
|
|
|||
|
-- 是否为展示插件,用于UI上刷新显示,不会掉落,不在插件背包显示
|
|||
|
function XRiftPlugin:GetIsDisplay()
|
|||
|
return self.Config.IsDisplay == 1
|
|||
|
end
|
|||
|
|
|||
|
-- 获取补正的configList(根据当前默认加点模板属性值)
|
|||
|
-- 不传属性加点模板xAttrTemplate,则用默认的
|
|||
|
function XRiftPlugin:GetAttrFixConfigList(xAttrTemplate)
|
|||
|
if xAttrTemplate == nil then
|
|||
|
xAttrTemplate = XDataCenter.RiftManager.GetAttrTemplate(XRiftConfig.DefaultAttrTemplateId)
|
|||
|
end
|
|||
|
|
|||
|
local attrFixCfgList = {}
|
|||
|
for _, groupId in ipairs(self.Config.AttrFixGroupIds) do
|
|||
|
local attrId = XRiftConfig.GetAttrIdByFixGroupId(groupId)
|
|||
|
local attrLevel = xAttrTemplate:GetAttrLevel(attrId)
|
|||
|
local attrFixCfg = XRiftConfig.GetPluginAttrFixConfig(groupId, attrId, attrLevel)
|
|||
|
table.insert(attrFixCfgList, attrFixCfg)
|
|||
|
end
|
|||
|
|
|||
|
return attrFixCfgList
|
|||
|
end
|
|||
|
|
|||
|
-- 检测该插件是否有角色条件限制
|
|||
|
function XRiftPlugin:CheckCharacterWearLimit(characterId)
|
|||
|
if not XTool.IsNumberValid(self.Config.CharacterId) then
|
|||
|
return false
|
|||
|
end
|
|||
|
|
|||
|
return self.Config.CharacterId ~= characterId
|
|||
|
end
|
|||
|
|
|||
|
-- 检测当前插件是有相同类型穿戴限制
|
|||
|
function XRiftPlugin:CheckCurPluginTypeLimit(xRole)
|
|||
|
for k, xPlugin in pairs(xRole:GetPlugIns()) do
|
|||
|
if xPlugin.Config.Type == self.Config.Type then
|
|||
|
return true
|
|||
|
end
|
|||
|
end
|
|||
|
end
|
|||
|
|
|||
|
-- 检测该角色是否可以穿戴该插件
|
|||
|
function XRiftPlugin:GetCharacterUpgradeRedpoint()
|
|||
|
local redKey = "RiftCharacterPluginRed"..XPlayer.Id.."PluginId:"..self:GetId()
|
|||
|
local isShowRed = XSaveTool.GetData(redKey)
|
|||
|
|
|||
|
return isShowRed
|
|||
|
end
|
|||
|
|
|||
|
function XRiftPlugin:SetCharacterUpgradeRedpoint(flag)
|
|||
|
local redKey = "RiftCharacterPluginRed"..XPlayer.Id.."PluginId:"..self:GetId()
|
|||
|
XSaveTool.SaveData(redKey, flag)
|
|||
|
end
|
|||
|
|
|||
|
return XRiftPlugin
|