Files
barotrauma-localmods/Blueprints/Lua/first_time_setup.lua
2025-03-31 13:19:47 +02:00

81 lines
3.1 KiB
Lua

if SERVER then return end --prevents it from running on the server
-- Function to write text to a file
local function writeFile(path, text)
return blue_prints.writeFile(path, text)
end
-- Recursively copy a directory structure
local function copy_directory_structure(source, destination)
-- Normalize paths
source = blue_prints.normalizePath(source)
destination = blue_prints.normalizePath(destination)
-- Ensure destination exists
if not blue_prints.createFolder(destination) then
print("Failed to create destination directory: " .. destination)
return false
end
-- Get all files and directories using our safe functions
local files = blue_prints.getFiles(source)
local directories = blue_prints.getDirectories(source)
-- Copy files
for _, filepath in pairs(files) do
if string.match(filepath, "%.txt$") then
local filename = filepath:match("([^/\\]+)$")
local file_content = blue_prints.readFileContents(filepath)
if file_content then
local dest_path = blue_prints.normalizePath(destination .. "/" .. filename)
if not File.Exists(dest_path) then
writeFile(dest_path, file_content)
end
end
end
end
-- Recursively copy subdirectories
for _, dir in pairs(directories) do
local dir_name = dir:match("([^/\\]+)$")
if dir_name then
local source_subdir = blue_prints.normalizePath(source .. "/" .. dir_name)
local dest_subdir = blue_prints.normalizePath(destination .. "/" .. dir_name)
copy_directory_structure(source_subdir, dest_subdir)
end
end
return true
end
-- Create base directory first
if not blue_prints.ensureBaseDirectory() then
print("Failed to create blueprint directory")
return nil
end
-- Check if this is first run by looking for existing content
local existing_files = blue_prints.getFiles(blue_prints.save_path)
local existing_dirs = blue_prints.getDirectories(blue_prints.save_path)
local is_first_run = #existing_files == 0 and #existing_dirs == 0
if is_first_run then
-- Look for starter_blueprints directory
local starter_blueprints_path = blue_prints.normalizePath(blue_prints.path .. "/starter_blueprints")
if File.DirectoryExists(starter_blueprints_path) then
-- Copy the entire directory structure
if copy_directory_structure(starter_blueprints_path, blue_prints.save_path) then
print("Successfully copied starter blueprints")
else
print("Failed to copy starter blueprints")
end
else
print("No starter_blueprints directory found at: " .. starter_blueprints_path)
-- Create default folders if no starter blueprints exist
local defaultFolders = {"General", "Reactor", "Navigation", "Weapons", "Medical"}
for _, folder in ipairs(defaultFolders) do
local folderPath = blue_prints.normalizePath(blue_prints.save_path .. "/" .. folder)
blue_prints.createFolder(folderPath)
end
end
end