PGRData/Script/matrix/xentity/xmonstercombat/XMonsterTeam.lua
2024-09-01 22:49:41 +02:00

93 lines
No EOL
2.2 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 XTeam = require("XEntity/XTeam/XTeam")
---@class XMonsterTeam : XTeam
local XMonsterTeam = XClass(XTeam, "XMonsterTeam")
function XMonsterTeam:Ctor()
-- 怪物信息 XTeam的Ctor有加载本地信息处理这里不能直接初始化
self.MonsterIds = self.MonsterIds or { 0, 0 }
end
function XMonsterTeam:GetSaveKey()
return string.format("MonsterTeam_%s_%s", XPlayer.Id, self:GetId())
end
function XMonsterTeam:_Save()
if self.LocalSave then
XSaveTool.SaveData(self:GetSaveKey(), {
Id = self.Id,
EntitiyIds = self.EntitiyIds,
FirstFightPos = self.FirstFightPos,
CaptainPos = self.CaptainPos,
MonsterIds = self.MonsterIds
})
end
if self.SaveCallback then
self.SaveCallback(self)
end
end
function XMonsterTeam:GetMonsterIdByPos(pos)
return self.MonsterIds[pos] or 0
end
function XMonsterTeam:GetMonsterIds()
return self.MonsterIds
end
function XMonsterTeam:UpdateMonsterPos(monsterId, pos, isJoin)
if isJoin then
self.MonsterIds[pos] = monsterId or 0
else
for i, id in pairs(self.MonsterIds) do
if id == monsterId then
self.MonsterIds[i] = 0
break
end
end
end
self:Save()
end
function XMonsterTeam:UpdateMonsterIds(monsters)
for pos, monsterId in pairs(monsters) do
self.MonsterIds[pos] = monsterId
end
self:Save()
end
function XMonsterTeam:GetMonsterIsEmpty()
for _, v in ipairs(self.MonsterIds) do
if v ~= 0 then
return false
end
end
return true
end
function XMonsterTeam:GetMonsterIdIsInTeam(monsterId)
return table.contains(self.MonsterIds, monsterId)
end
-- 排序规则不等于0的优先
function XMonsterTeam:MonsterSort()
table.sort(self.MonsterIds, function(a, b)
local weightA = a > 0 and 10 or 0
local weightB = b > 0 and 10 or 0
return weightA > weightB
end)
end
function XMonsterTeam:Clear()
self.EntitiyIds = { 0, 0, 0 }
self.FirstFightPos = 1
self.CaptainPos = 1
self.MonsterIds = { 0, 0 }
self:Save()
end
function XMonsterTeam:ClearMonsterIds()
self.MonsterIds = { 0, 0 }
self:Save()
end
return XMonsterTeam