mirror of
https://github.com/ComfyFactory/ComfyFactorio.git
synced 2025-01-06 00:23:49 +02:00
67 lines
2.0 KiB
Lua
67 lines
2.0 KiB
Lua
local function toggle(player)
|
|
if not player.gui.top.global_chat_toggle then return end
|
|
|
|
local button = player.gui.top.global_chat_toggle
|
|
|
|
if button.caption == "Global Chat" then
|
|
button.caption = "Team Chat"
|
|
button.tooltip = "Chat messages are only sent to your team."
|
|
button.style.font_color = {r=0.77, g=0.77, b=0.0}
|
|
return
|
|
end
|
|
|
|
button.caption = "Global Chat"
|
|
button.tooltip = "Chat messages are sent to everyone."
|
|
button.style.font_color = {r=0.0, g=0.77, b=0.0}
|
|
end
|
|
|
|
local function create_gui_button(player)
|
|
if player.gui.top.global_chat_toggle then return end
|
|
local b = player.gui.top.add({
|
|
type = "sprite-button",
|
|
name = "global_chat_toggle",
|
|
caption = "",
|
|
})
|
|
b.style.font = "heading-2"
|
|
b.style.minimal_width = 100
|
|
b.style.minimal_height = 38
|
|
b.style.maximal_height = 38
|
|
b.style.padding = 1
|
|
b.style.margin = 0
|
|
toggle(player)
|
|
end
|
|
|
|
local function on_player_joined_game(event)
|
|
local player = game.players[event.player_index]
|
|
create_gui_button(player)
|
|
end
|
|
|
|
local function on_gui_click(event)
|
|
if not event then return end
|
|
if not event.element then return end
|
|
if not event.element.valid then return end
|
|
local player = game.players[event.element.player_index]
|
|
if event.element.name ~= "global_chat_toggle" then return end
|
|
toggle(player)
|
|
end
|
|
|
|
local function on_console_chat(event)
|
|
if not event.message then return end
|
|
if not event.player_index then return end
|
|
local player = game.players[event.player_index]
|
|
if not player.gui.top.global_chat_toggle then return end
|
|
local button = player.gui.top.global_chat_toggle
|
|
if button.caption ~= "Global Chat" then return end
|
|
for _, force in pairs(game.forces) do
|
|
if force.name ~= player.force.name then
|
|
force.print(player.name .. " " .. player.tag .. ": " .. event.message, player.chat_color)
|
|
end
|
|
end
|
|
end
|
|
|
|
local Event = require 'utils.event'
|
|
Event.on_init(on_init)
|
|
Event.add(defines.events.on_console_chat, on_console_chat)
|
|
Event.add(defines.events.on_player_joined_game, on_player_joined_game)
|
|
Event.add(defines.events.on_gui_click, on_gui_click)
|