PGRData/Script/matrix/xconfig/XHostelConfigs.lua

141 lines
No EOL
4.5 KiB
Lua

XHostelConfigs = XHostelConfigs or {}
local tableInsert = table.insert
local pairs = pairs
local TABLE_HOSTELROOM_PATH = "Share/Hostel/HostelRoom.tab"
local TABLE_HOSTEL_FUNCDEVICE_PATH = "Share/Hostel/FunctionDevice.tab"
local TABLE_HOSTEL_REST_PATH = "Share/Hostel/HostelRest.tab"
local TABLE_HOSTEL_ROOM_NODE_PATH = "Client/Hostel/HostelRoomNode.tab"
local TABLE_HOSTEL_DEVICE_NODE_PATH = "Client/Hostel/HostelDeviceNode.tab"
local TABLE_HOSTEL_HUD_PATH = "Client/Hostel/HostelHud.tab"
local SceneToHostelRoomNodeMap = {}
local SceneToHostelDeviceNodeMap = {}
local HostelRoomTemplate = {}
local HostelRoomFloorList = {}
local FunctionDeviceLvlTemplate = {}
local FunctionDeviceSubType = {}
local HostelRestTemplate = {}
local HostelHudTemplate = {}
local HostelMaxFloor = 0
local MaxCharacterVitality = 0
local FuncFindInList = function(tList, value)
for _, v in ipairs(tList) do
if v == value then
return true
end
end
return false
end
function XHostelConfigs.Init()
local rooms = XTableManager.ReadByIntKey(TABLE_HOSTEL_ROOM_NODE_PATH, XTable.XTableHostelRoomNode, "Id")
for _, config in pairs(rooms) do
local sceneTab = SceneToHostelRoomNodeMap[config.Scene]
if not sceneTab then
sceneTab = {}
SceneToHostelRoomNodeMap[config.Scene] = sceneTab
end
sceneTab[config.Id] = config
end
local configs = XTableManager.ReadByIntKey(TABLE_HOSTEL_DEVICE_NODE_PATH, XTable.XTableHostelDeviceNode, "Id")
for _, config in pairs(configs) do
local sceneTab = SceneToHostelDeviceNodeMap[config.Scene]
if not sceneTab then
sceneTab = {}
SceneToHostelDeviceNodeMap[config.Scene] = sceneTab
end
local roomTab = sceneTab[config.RoomType]
if not roomTab then
roomTab = {}
sceneTab[config.RoomType] = roomTab
end
roomTab[config.Id] = config
end
local hudConfigs = XTableManager.ReadByIntKey(TABLE_HOSTEL_HUD_PATH, XTable.XTableHostelHud, "Id")
for _, config in pairs(hudConfigs) do
local hudTypeMap = HostelHudTemplate[config.HudType]
if not hudTypeMap then
hudTypeMap = {}
HostelHudTemplate[config.HudType] = hudTypeMap
end
hudTypeMap[config.DeviceType] = config
end
MaxCharacterVitality = CS.XGame.Config:GetInt("MaxCharacterVitality")
HostelRoomTemplate = XTableManager.ReadByIntKey(TABLE_HOSTELROOM_PATH, XTable.XTableHostelRoom, "Id")
for k, v in pairs(HostelRoomTemplate) do
if not HostelRoomFloorList[v.Floor] then
HostelRoomFloorList[v.Floor] = {}
end
HostelRoomFloorList[v.Floor][k] = v
end
local totalFuncDeviceData = XTableManager.ReadByIntKey(TABLE_HOSTEL_FUNCDEVICE_PATH, XTable.XTableFunctionDevice, "Id")
for _, v in pairs(totalFuncDeviceData) do
if not FunctionDeviceLvlTemplate[v.Type] then
FunctionDeviceLvlTemplate[v.Type] = {}
end
FunctionDeviceLvlTemplate[v.Type][v.Level] = v
if v.BelongType and v.BelongType ~= 0 then
if not FunctionDeviceSubType[v.BelongType] then
FunctionDeviceSubType[v.BelongType] = {}
end
local tTypeList = FunctionDeviceSubType[v.BelongType]
if not FuncFindInList(tTypeList, v.Type) then
tableInsert(tTypeList, v.Type)
end
end
end
HostelRestTemplate = XTableManager.ReadByIntKey(TABLE_HOSTEL_REST_PATH, XTable.XTableHostelRest, "Floor")
for floor, _ in pairs(HostelRestTemplate) do
if floor > HostelMaxFloor then
HostelMaxFloor = floor
end
end
XHostelConfigs.HostelMaxFloor = HostelMaxFloor
XHostelConfigs.MaxCharacterVitality = MaxCharacterVitality
end
function XHostelConfigs.GetSceneToHostelRoomNodeMap()
return SceneToHostelRoomNodeMap
end
function XHostelConfigs.GetSceneToHostelDeviceNodeMap()
return SceneToHostelDeviceNodeMap
end
function XHostelConfigs.GetHostelRoomTemplate()
return HostelRoomTemplate
end
function XHostelConfigs.GetHostelRoomFloorList()
return HostelRoomFloorList
end
function XHostelConfigs.GetFunctionDeviceLvlTemplate()
return FunctionDeviceLvlTemplate
end
function XHostelConfigs.GetFunctionDeviceSubType()
return FunctionDeviceSubType
end
function XHostelConfigs.GetHostelRestTemplate()
return HostelRestTemplate
end
function XHostelConfigs.GetHostelHudTemplate()
return HostelHudTemplate
end