PGRData/Script/matrix/xconfig/xconfigdlc/XDlcHuntAttrConfigs.lua
2024-09-01 22:49:41 +02:00

140 lines
No EOL
4 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

local FixToInt = FixToInt
XDlcHuntAttrConfigs = XDlcHuntAttrConfigs or {}
XDlcHuntAttrConfigs.ATTR_TYPE = {
Fighting = 1, --战斗
--...其他的是系统用type没什么大用
}
XDlcHuntAttrConfigs.ATTR_GROUP = {
ATTACK_DEFENSE = 1,
ATTACK_LIFE = 2,
}
-- 固定显示部分属性
XDlcHuntAttrConfigs.ATTR_TYPE_STR = {
Attack = "Attack",
Life = "Life",
Defense = "Defense",
}
---@type XConfig
local _ConfigAttrib
---@type XConfig
local _ConfigAttrDesc
---@type XConfig
local _ConfigAttrType
function XDlcHuntAttrConfigs.Init()
_ConfigAttrib = XConfig.New("Share/DlcHunt/Attrib/AttribBase", XTable.XTableAttribBase, "Id")
local xtable = XTable.XTableDlcHuntAttribDesc
xtable.Power.ValueType = "float"
_ConfigAttrDesc = XConfig.New("Share/DlcHunt/Attrib/DlcHuntAttribDesc.tab", xtable, "Name")
_ConfigAttrType = XConfig.New("Client/DlcHunt/Attrib/DlcHuntAttrType.tab", XTable.XTableDlcHuntAttrType, "AttrType")
end
function XDlcHuntAttrConfigs.GetAttrTable(attribId)
return _ConfigAttrib:GetConfig(attribId)
end
function XDlcHuntAttrConfigs.GetAttrName(id)
return _ConfigAttrDesc:GetProperty(id, "Des") or "???"
end
function XDlcHuntAttrConfigs.GetAttrNameEn(id)
return _ConfigAttrDesc:GetProperty(id, "DescEn") or "???"
end
function XDlcHuntAttrConfigs.GetAttrPriority(id)
-- 固定显示部分属性
if id == XDlcHuntAttrConfigs.ATTR_TYPE_STR.Attack then
return 3
end
if id == XDlcHuntAttrConfigs.ATTR_TYPE_STR.Life then
return 2
end
if id == XDlcHuntAttrConfigs.ATTR_TYPE_STR.Defense then
return 1
end
local priority = _ConfigAttrDesc:GetProperty(id, "Id") or 0
return -priority
end
-- 属性转战斗力的系数
local function GetRatioFightingPower(attrId)
return _ConfigAttrDesc:TryGetProperty(attrId, "Power")
end
-- 为什么要加这个判断因为配置Id也被放在attrTable里了
function XDlcHuntAttrConfigs.IsAttr(attrId)
local config = _ConfigAttrDesc:TryGetConfig(attrId)
return config ~= nil
end
function XDlcHuntAttrConfigs.IsFightingAttr(attrId)
local config = _ConfigAttrDesc:TryGetConfig(attrId)
return config and config.Type == XDlcHuntAttrConfigs.ATTR_TYPE.Fighting
end
function XDlcHuntAttrConfigs.IsSystemAttr(attrId)
local config = _ConfigAttrDesc:TryGetConfig(attrId)
return config and config.Type ~= XDlcHuntAttrConfigs.ATTR_TYPE.Fighting
end
-- 战斗力
function XDlcHuntAttrConfigs.GetFightingPower(attrTable)
local fightingPower = 0
for attrId, attrValue in pairs(attrTable) do
if XDlcHuntAttrConfigs.IsAttr(attrId) then
local ratio, isExist = GetRatioFightingPower(attrId)
if isExist then
fightingPower = fightingPower + ratio * attrValue
end
end
end
return math.floor(fightingPower)
end
local function IsPercent(attrId)
return _ConfigAttrDesc:GetProperty(attrId, "IsPercent")
end
function XDlcHuntAttrConfigs.GetValueWithPercent(attrId, attrValue, keepDecimals)
if keepDecimals then
attrValue = string.format("%.2f", attrValue)
else
attrValue = math.floor(attrValue + 0.5)
end
if IsPercent(attrId) then
-- (attrValue / 100).."%"
return XUiHelper.GetText("DlcHuntPercent", attrValue / 100)
end
return attrValue
end
function XDlcHuntAttrConfigs.GetNameAttrType(attrType)
return _ConfigAttrType:GetProperty(attrType, "Des")
end
function XDlcHuntAttrConfigs.GetAttrType(attrId)
return _ConfigAttrDesc:GetProperty(attrId, "Type")
end
function XDlcHuntAttrConfigs.GetNameAttrTypeByAttrId(attrId)
local attrType = XDlcHuntAttrConfigs.GetAttrType(attrId)
return XDlcHuntAttrConfigs.GetNameAttrType(attrType)
end
function XDlcHuntAttrConfigs.MergeAttrTable(table1, table2)
local result = {}
for attrId, attrValue in pairs(table1) do
result[attrId] = result[attrId] or 0 + attrValue
end
for attrId, attrValue in pairs(table2) do
result[attrId] = result[attrId] or 0 + attrValue
end
return result
end