PGRData/Script/matrix/xentity/xequip/XEquipSuitPrefab.lua

122 lines
3.2 KiB
Lua
Raw Normal View History

local PresentSuitEquipsCount = 4 -- 已装备的意识中同一套的装备数量代表值
local XEquipSuitPrefab = XClass(nil, "XEquipSuitPrefab")
local Default = {
EquipCount = 0,
PresentSuitId = nil,
SiteToEquipIdDic = {},
EquipIdCheckTable = {},
--Original Data
GroupId = 0,
Name = "",
ChipIdList = {},
CharacterId = 0,
}
--[[
public class XChipGroupData
{
// id
public int GroupId;
//
public string Name;
// id列表
public List<int> ChipIdList;
// Id0
public int CharacterId;
}
]]
function XEquipSuitPrefab:Ctor(equipGroupData)
for key, v in pairs(Default) do
self[key] = v
end
self:UpdateData(equipGroupData)
end
function XEquipSuitPrefab:UpdateData(equipGroupData)
self.GroupId = equipGroupData.GroupId or self.GroupId
self.Name = equipGroupData.Name or self.Name
self.CharacterId = equipGroupData.CharacterId or self.CharacterId
self.ChipIdList = equipGroupData.ChipIdList
self.SiteToEquipIdDic = {}
self.EquipIdCheckTable = {}
for _, equipId in pairs(self.ChipIdList) do
local equipSite = XDataCenter.EquipManager.GetEquipSite(equipId)
self.SiteToEquipIdDic[equipSite] = equipId
self.EquipIdCheckTable[equipId] = true
end
local count = 0
for _, _ in pairs(self.SiteToEquipIdDic) do
count = count + 1
end
self.EquipCount = count
local presentEquipId = nil
local suitIdCountDic = {}
for site = XEquipConfig.EquipSite.Awareness.One, XEquipConfig.EquipSite.Awareness.Six do
local equipId = self.SiteToEquipIdDic[site]
if equipId then
presentEquipId = presentEquipId or equipId
local suitId = XDataCenter.EquipManager.GetSuitId(equipId)
local tmpCount = suitIdCountDic[suitId] or 0
tmpCount = tmpCount + 1
if tmpCount == PresentSuitEquipsCount then
presentEquipId = equipId
break
end
suitIdCountDic[suitId] = tmpCount
end
end
self.PresentSuitId = presentEquipId and XDataCenter.EquipManager.GetSuitId(presentEquipId)
end
function XEquipSuitPrefab:GetGroupId()
return self.GroupId
end
function XEquipSuitPrefab:GetName()
return self.Name
end
function XEquipSuitPrefab:SetName(newName)
self.Name = newName
end
function XEquipSuitPrefab:GetEquipCount()
return self.EquipCount
end
function XEquipSuitPrefab:GetPresentSuitId()
return self.PresentSuitId
end
function XEquipSuitPrefab:GetEquipId(site)
return self.SiteToEquipIdDic[site]
end
function XEquipSuitPrefab:GetEquipIds()
return self.ChipIdList
end
-- 专属组合角色Id通用组合为0
function XEquipSuitPrefab:GetCharacterId()
return self.CharacterId
end
function XEquipSuitPrefab:IsEquipIn(equipId)
return self.EquipIdCheckTable[equipId]
end
function XEquipSuitPrefab:GetCharacterType()
for _, equipId in pairs(self.ChipIdList) do
local templateId = XDataCenter.EquipManager.GetEquipTemplateId(equipId)
return XEquipConfig.GetEquipCharacterType(templateId)
end
return XEquipConfig.UserType.All
end
return XEquipSuitPrefab