2023-07-14 19:35:33 +00:00
|
|
|
|
local XDoomsdayAttribute = require("XEntity/XDoomsday/XDoomsdayAttribute")
|
|
|
|
|
|
|
|
|
|
local Default = {
|
|
|
|
|
_Id = 0,
|
|
|
|
|
_AttributeDic = {}, --居民属性
|
|
|
|
|
_WorkingBuildingId = 0, --工作建筑Id
|
|
|
|
|
_LivingBuildingId = 0 --居住建筑Id(自动分配,仅用于判断无家可归)
|
|
|
|
|
}
|
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
local AttrType2BadKeyName = {
|
|
|
|
|
[XDoomsdayConfigs.ATTRUBUTE_TYPE.HUNGER] = "DailyChangeValueWhenHungery",
|
|
|
|
|
[XDoomsdayConfigs.ATTRUBUTE_TYPE.HEALTH] = "DailyChangeValueWhenSick"
|
|
|
|
|
}
|
|
|
|
|
|
2023-07-14 19:35:33 +00:00
|
|
|
|
--末日生存玩法-居民
|
|
|
|
|
local XDoomsdayInhabitant = XClass(XDataEntityBase, "XDoomsdayInhabitant")
|
|
|
|
|
|
|
|
|
|
function XDoomsdayInhabitant:Ctor()
|
|
|
|
|
self:Init(Default)
|
|
|
|
|
|
|
|
|
|
self._AttributeDic = {}
|
|
|
|
|
for _, attrType in ipairs(XDoomsdayConfigs.GetSortedAttrTypes()) do
|
|
|
|
|
self._AttributeDic[attrType] = XDoomsdayAttribute.New(attrType)
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
function XDoomsdayInhabitant:UpdateData(data)
|
|
|
|
|
self:SetProperty("_Id", data.Id)
|
|
|
|
|
self:SetProperty("_WorkingBuildingId", data.WorkingBuildingId)
|
|
|
|
|
self:SetProperty("_LivingBuildingId", data.LivingBuildingId)
|
|
|
|
|
|
|
|
|
|
self:GetAttr(XDoomsdayConfigs.ATTRUBUTE_TYPE.HEALTH):SetProperty("_Value", data.Heath)
|
|
|
|
|
self:GetAttr(XDoomsdayConfigs.ATTRUBUTE_TYPE.HUNGER):SetProperty("_Value", data.Hunger)
|
|
|
|
|
self:GetAttr(XDoomsdayConfigs.ATTRUBUTE_TYPE.SAN):SetProperty("_Value", data.Mental)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--是否无家可归
|
|
|
|
|
function XDoomsdayInhabitant:IsHomeless()
|
|
|
|
|
return not XTool.IsNumberValid(self._LivingBuildingId)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--是否空闲
|
|
|
|
|
function XDoomsdayInhabitant:IsIdle()
|
|
|
|
|
return not XTool.IsNumberValid(self._WorkingBuildingId)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
--根据属性类型获取属性
|
|
|
|
|
function XDoomsdayInhabitant:GetAttr(attrType)
|
|
|
|
|
return self._AttributeDic[attrType]
|
|
|
|
|
end
|
|
|
|
|
|
2024-09-01 20:49:41 +00:00
|
|
|
|
function XDoomsdayInhabitant:GetTodayValue(attrId, attrType)
|
|
|
|
|
local attr = self:GetAttr(attrType)
|
|
|
|
|
local value = attr:GetProperty("_Value")
|
|
|
|
|
if attr:IsBad() then
|
|
|
|
|
local key = AttrType2BadKeyName[attrType]
|
|
|
|
|
local downValue = XDoomsdayConfigs.AttributeConfig:GetProperty(attrId, key) or 0
|
|
|
|
|
--取的值为负数
|
|
|
|
|
value = value + downValue
|
|
|
|
|
end
|
|
|
|
|
if self:IsHomeless() then
|
|
|
|
|
local downValue = XDoomsdayConfigs.AttributeConfig:GetProperty(attrId, "DailyChangeValueWhenNoHome") or 0
|
|
|
|
|
--取的值为负数
|
|
|
|
|
value = value + downValue
|
|
|
|
|
end
|
|
|
|
|
return value
|
|
|
|
|
end
|
|
|
|
|
|
2023-07-14 19:35:33 +00:00
|
|
|
|
return XDoomsdayInhabitant
|