1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-10 00:43:27 +02:00
ComfyFactorio/maps/pirates/surfaces/common.lua
2022-03-19 21:20:55 +00:00

67 lines
1.7 KiB
Lua

-- local Memory = require 'maps.pirates.memory'
-- local Math = require 'maps.pirates.math'
-- local Balance = require 'maps.pirates.balance'
-- local Common = require 'maps.pirates.common'
local CoreData = require 'maps.pirates.coredata'
-- local Utils = require 'maps.pirates.utils_local'
local _inspect = require 'utils.inspect'.inspect
local Public = {}
local enum = {
SEA = 'Sea',
ISLAND = 'Island',
CROWSNEST = 'Crowsnest',
LOBBY = 'Lobby',
HOLD = 'Hold',
CABIN = 'Cabin',
CHANNEL = 'Channel',
DOCK = 'Dock',
}
Public.enum = enum
function Public.encode_surface_name(crewid, destination_index, type, subtype) -- crewid=0 is shared surfaces
local str
if subtype then
str = string.format('%03d-%03d-%s-%s', crewid, destination_index, type, subtype) --uses the fact that type and subtype resolve to strings
else
str = string.format('%03d-%03d-%s', crewid, destination_index, type)
end
return str
end
function Public.decode_surface_name(name)
local crewid = tonumber(string.sub(name, 1, 3))
local destination_index = tonumber(string.sub(name, 5, 7))
local type = nil
local subtype = nil
local substring = string.sub(name, 9, -1)
local pull = {}
for a, b in string.gmatch(substring, "(%w+)-(%w+)") do
pull[1] = a
pull[2] = b
end
if #pull == 0 then
type = substring
elseif #pull == 2 then
type = pull[1]
subtype = pull[2]
end
return {crewid = crewid, destination_index = destination_index, type = type, subtype = subtype}
end
function Public.fetch_iconized_map(destination)
local type = destination.type
if type == Public.enum.LOBBY then
return CoreData.Lobby_iconized_map()
elseif type == Public.enum.DOCK then
return CoreData.Dock_iconized_map()
else
return destination.iconized_map
end
end
return Public