1
0
mirror of https://github.com/ComfyFactory/ComfyFactorio.git synced 2025-01-08 00:39:30 +02:00
ComfyFactorio/utils/color_data.lua
Gerkiz b07eccf76b
color_data.lua
Syncs color via webpanel.
2019-07-28 12:21:15 +02:00

103 lines
2.4 KiB
Lua

-- luacheck: ignore
local Token = require 'utils.token'
local Server = require 'utils.server'
local Event = require 'utils.event'
local color_data_set = 'colors'
local set_data = Server.set_data
local try_get_data = Server.try_get_data
local Public = {}
if _DEBUG then
printinfo =
Token.register(
function(data)
game.print(serpent.block(data))
end
)
end
local color_table = {
default = {},
red = {},
green = {},
blue = {},
orange = {},
yellow = {},
pink = {},
purple = {},
white = {},
black = {},
gray = {},
brown = {},
cyan = {},
acid = {}
}
local fetch =
Token.register(
function(data)
local key = data.key
local value = data.value
local player = game.players[key]
if not player then return end
if value then
player.color = value.color[1]
player.chat_color = value.chat[1]
--else
-- set_data(color_data_set, player.name, {color={player.color},chat={player.chat_color}})
end
end
)
--- Tries to get data from the webpanel and applies the value to the player.
-- @param data_set player token
function Public.fetch(key)
try_get_data(color_data_set, key, fetch)
end
Event.add(
defines.events.on_player_joined_game,
function(event)
local player = game.get_player(event.player_index)
if not player then
return
end
if game.is_multiplayer() then
Public.fetch(player.name)
end
end
)
Event.add(
defines.events.on_console_command,
function(event)
local player_index = event.player_index
if not player_index or event.command ~= 'color' then
return
end
local player = game.get_player(player_index)
if not player or not player.valid then
return
end
local param = event.parameters
local color = player.color
local chat = player.chat_color
param = string.lower(param)
if param then
for word in param:gmatch('%S+') do
if color_table[word] then
set_data(color_data_set, player.name, {color={color},chat={chat}})
player.print("Your color was globally saved!", {r=0.22, g=0.99, b=0.99})
return true
end
end
end
end
)
return Public