PGRData/Script/matrix/xentity/xplanet/xdata/XPlanetTileData.lua
2024-09-01 22:49:41 +02:00

148 lines
No EOL
4 KiB
Lua

---@class XPlanetTileData:XDataEntityBase
local XPlanetTileData = XClass(XDataEntityBase, "XPlanetTileData")
local default = {
_TileId = 0,
_GridType = 1,
_BuildingId = 0,
_BuildingDirection = 1,
_BuildingCenter = 0,
_FloorId = 1,
_FloorHeight = 0,
_AdjacentGrid = {},
_BuildingGuid = -1,
_BeInBuildingRangeList = {}, -- 建筑范围内包含该地块的建筑列表
}
---@class XPlanetTileData
---@field _TileId int 地块Id
---@field _GridType XPlanetWorldConfigs.GridType 地块类型
---@field _BuildingId int 该地块上的建筑模型
---@field _BuildingDirection int 模型朝向
---@field _BuildingCenter int 默认建筑中心
---@field _FloorId int 地板材质Id
---@field _FloorHeight float 地板高度
---@field _AdjacentGrid table<int, int> 相邻地块Id
---@field _BuildingGuid numbert 地块建筑唯一id
function XPlanetTileData:Ctor(stageId)
self:Init(default, stageId)
end
function XPlanetTileData:UpdateData(data)
self:SetTileId(data.Id)
self:SetGridType(data.GridType)
self:SetBuildingId(data.DefaultBuilding)
self:SetBuildingCenter(data.BuildingCenter)
self:SetBuildingDirection(data.BuildingDirection)
self:SetFloorId(data.DefaultFloorId)
self:SetFloorHeight(data.FloorHeight)
self:SetAdjacentGrid(data.AdjacentGrid)
end
function XPlanetTileData:CheckIsDefaultBuild()
return XTool.IsNumberValid(self._BuildingCenter)
end
function XPlanetTileData:CheckIsHaveBuild()
return XTool.IsNumberValid(self._BuildingId)
end
function XPlanetTileData:CheckIsGirdType(gridType)
return self._GridType == gridType
end
--region Getter
function XPlanetTileData:GetTileId()
return self:GetProperty("_TileId")
end
---@return XPlanetWorldConfigs.GridType
function XPlanetTileData:GetGridType()
return self:GetProperty("_GridType")
end
function XPlanetTileData:GetBuildingId()
return self:GetProperty("_BuildingId")
end
function XPlanetTileData:GetBuildingDirection()
return self:GetProperty("_BuildingDirection")
end
function XPlanetTileData:GetBuildingCenter()
return self:GetProperty("_BuildingCenter")
end
function XPlanetTileData:GetFloorId()
return self:GetProperty("_FloorId")
end
---@return float
function XPlanetTileData:GetFloorHeight()
return self:GetProperty("_FloorHeight")
end
function XPlanetTileData:GetAdjacentGrid()
return self:GetProperty("_AdjacentGrid")
end
function XPlanetTileData:GetBuildingGuid()
return self:GetProperty("_BuildingGuid")
end
--endregion
--region Setter
function XPlanetTileData:SetTileId(tileId)
self:SetProperty("_TileId", tileId)
end
function XPlanetTileData:SetGridType(gridType)
self:SetProperty("_GridType", gridType)
end
function XPlanetTileData:SetBuildingId(buildingId)
self:SetProperty("_BuildingId", buildingId)
end
function XPlanetTileData:SetBuildingDirection(buildingDirection)
self:SetProperty("_BuildingDirection", buildingDirection)
end
function XPlanetTileData:SetBuildingCenter(buildingCenter)
self:SetProperty("_BuildingCenter", buildingCenter)
end
function XPlanetTileData:SetFloorId(floorId)
self:SetProperty("_FloorId", floorId)
end
function XPlanetTileData:SetFloorHeight(floorHeight)
self:SetProperty("_FloorHeight", floorHeight)
end
function XPlanetTileData:SetAdjacentGrid(adjacentGrid)
self:SetProperty("_AdjacentGrid", XTool.Clone(adjacentGrid))
end
function XPlanetTileData:SetBuildingGuid(buildingGuid)
self:SetProperty("_BuildingGuid", buildingGuid)
end
function XPlanetTileData:AddBeInBuildingRangeList(buildingGuid)
if XTool.IsTableEmpty(self._BeInBuildingRangeList) then
table.insert(self._BeInBuildingRangeList, buildingGuid)
else
local index = table.indexof(self._BeInBuildingRangeList, buildingGuid)
if not XTool.IsNumberValid(index) then
table.insert(self._BeInBuildingRangeList, buildingGuid)
end
end
end
function XPlanetTileData:RemoveBeInBuildingRangeList(buildingGuid)
end
--endregion
return XPlanetTileData