PGRData/Script/matrix/xentity/xdlchunt/XDlcHuntCharacter.lua

179 lines
4.9 KiB
Lua
Raw Normal View History

2024-09-01 20:49:41 +00:00
local XDlcHuntModel = require("XEntity/XDlcHunt/XDlcHuntModel")
local XUiDlcHuntUtil = require("XUi/XUiDlcHunt/XUiDlcHuntUtil")
---@class XDlcHuntCharacter
local XDlcHuntCharacter = XClass(nil, "XDlcHuntCharacter")
function XDlcHuntCharacter:Ctor()
self._TemplateId = false
self._Level = 1
self._ChipGroupId = false
---@type XDlcHuntModel
self._DataModel = false
-- 似乎没什么营养
--self._CreateTime = 0
end
function XDlcHuntCharacter:SetData(data)
self._TemplateId = data.Id
self._ChipGroupId = data.ChipFormId
--self._CreateTime = data.CreateTime
end
function XDlcHuntCharacter:SetCharacterId(id)
self._TemplateId = id
end
function XDlcHuntCharacter:SetChipGroupId(groupId)
self._ChipGroupId = groupId
end
function XDlcHuntCharacter:GetChipGroupId()
return self._ChipGroupId
end
function XDlcHuntCharacter:GetChipGroup()
return XDataCenter.DlcHuntChipManager.GetChipGroup(self:GetChipGroupId())
end
function XDlcHuntCharacter:IsDressChipGroup(chipGroupId)
return self:GetChipGroupId() == chipGroupId
end
function XDlcHuntCharacter:GetCharacterId()
return self._TemplateId
end
function XDlcHuntCharacter:IsCharacter(characterId)
return self:GetCharacterId() == characterId
end
function XDlcHuntCharacter:GetNpcId()
return XDlcHuntCharacterConfigs.GetCharacterNpcId(self:GetCharacterId())
end
function XDlcHuntCharacter:GetPlayerId()
return XPlayer.Id
end
function XDlcHuntCharacter:GetIcon()
return XDlcHuntCharacterConfigs.GetCharacterIcon(self:GetCharacterId())
end
function XDlcHuntCharacter:GetLevel()
return self._Level
end
function XDlcHuntCharacter:GetName()
return XDlcHuntCharacterConfigs.GetCharacterName(self:GetCharacterId())
end
function XDlcHuntCharacter:GetNameEn()
return XDlcHuntCharacterConfigs.GetCharacterNameEn(self:GetCharacterId())
end
function XDlcHuntCharacter:GetElementIconList()
return XDlcHuntCharacterConfigs.GetCharacterElementIconList(self:GetCharacterId())
end
function XDlcHuntCharacter:GetModelId()
return XDlcHuntCharacterConfigs.GetCharacterModelId(self:GetCharacterId())
end
function XDlcHuntCharacter:GetDataModel()
if not self._DataModel then
self._DataModel = XDlcHuntModel.New()
end
self._DataModel:SetDataByMember(self)
return self._DataModel
end
function XDlcHuntCharacter:GetFightingPower()
local attrTable = self:GetAttrTable()
return XDlcHuntAttrConfigs.GetFightingPower(attrTable)
end
-- 人物的属性
function XDlcHuntCharacter:GetBaseAttrTable()
return XDlcHuntCharacterConfigs.GetCharacterAttrTable(self:GetCharacterId())
end
-- 人物 + 芯片的属性
function XDlcHuntCharacter:GetAttrTable()
local characterAttr = self:GetBaseAttrTable()
local chipGroup = self:GetChipGroup()
if chipGroup then
local chipAttr = chipGroup:GetAttrTable()
local sumAttrTable = XUiDlcHuntUtil.GetSumAttrTable(characterAttr, chipAttr)
return sumAttrTable
end
return characterAttr
end
function XDlcHuntCharacter:GetAttrTable4Display(justBaseAttr)
local characterAttr = self:GetBaseAttrTable()
local chipAttr
local chipGroup = self:GetChipGroup()
if chipGroup and not justBaseAttr then
chipAttr = chipGroup:GetAttrTable()
else
chipAttr = {}
end
characterAttr = XUiDlcHuntUtil.SelectCharacterAttr(characterAttr)
chipAttr = XUiDlcHuntUtil.SelectCharacterAttr(chipAttr)
local mergeAttr = XUiDlcHuntUtil.GetAttrTableMerge4Display(characterAttr, chipAttr)
return mergeAttr
end
function XDlcHuntCharacter:IsOnFight()
return XDataCenter.DlcHuntCharacterManager.GetFightCharacterId() == self:GetCharacterId()
end
function XDlcHuntCharacter:GetMagicDesc()
local chipGroup = self:GetChipGroup()
if not chipGroup then
return {}
end
return chipGroup:GetMagicDesc()
end
function XDlcHuntCharacter:GetCode()
return XDlcHuntCharacterConfigs.GetCharacterCode(self:GetCharacterId())
end
function XDlcHuntCharacter:GetMagicEventIds()
local chipGroup = self:GetChipGroup()
if not chipGroup then
return {}
end
return chipGroup:GetMagicEventIds()
end
function XDlcHuntCharacter:GetPriority()
return XDlcHuntCharacterConfigs.GetCharacterPriority(self:GetCharacterId())
end
function XDlcHuntCharacter:IsCanEquipMoreChip()
local chipGroup = self:GetChipGroup()
if not chipGroup then
return true
end
local mainChip = chipGroup:GetMainChip()
if not mainChip then
local amountMainOnBag = XDataCenter.DlcHuntChipManager.GetChipAmountMain()
if amountMainOnBag > 0 then
return true
end
end
local amountSubChipEquip = chipGroup:GetAmountSubChip()
if amountSubChipEquip < XDlcHuntChipConfigs.CHIP_SUB_AMOUNT then
local amountSubOnBag = XDataCenter.DlcHuntChipManager.GetChipAmountSub()
if amountSubChipEquip < amountSubOnBag then
return true
end
end
return false
end
return XDlcHuntCharacter