Aleksei-bird 7c9c708c92 Первый фикс
Пачки некоторых позиций увеличены
2024-03-01 20:54:33 +03:00

43 lines
1.4 KiB
Lua

local _messages = {}
---@alias MessageCategory "error" | "warning" | "hint"
---@class PlayerMessage
---@field category MessageCategory
---@field text LocalisedString
---@field lifetime integer
---@param player LuaPlayer
---@param category MessageCategory
---@param message LocalisedString
---@param lifetime integer
function _messages.raise(player, category, message, lifetime)
local messages = util.globals.ui_state(player).messages
table.insert(messages, {category=category, text=message, lifetime=lifetime})
end
---@param player LuaPlayer
function _messages.refresh(player)
-- Only refresh messages if the user is actually looking at them
if not main_dialog.is_in_focus(player) then return end
local ui_state = util.globals.ui_state(player)
local message_frame = ui_state.main_elements["messages_frame"]
if not message_frame or not message_frame.valid then return end
local messages = ui_state.messages
message_frame.visible = (next(messages) ~= nil)
message_frame.clear()
for i=#messages, 1, -1 do
local message = messages[i] ---@type PlayerMessage
local caption = {"", "[img=warning-white] ", {"fp." .. message.category .. "_message", message.text}}
message_frame.add{type="label", caption=caption, style="bold_label"}
message.lifetime = message.lifetime - 1
if message.lifetime == 0 then table.remove(messages, i) end
end
end
return _messages