global.map_info = {} global.map_info.main_caption = "Insert Main Caption" global.map_info.sub_caption = "Insert Sub Caption" global.map_info.text = [[ Add info text to global.map_info. ]] local function create_map_intro_button(player) if player.gui.top["map_intro_button"] then return end local b = player.gui.top.add({type = "sprite-button", caption = "?", name = "map_intro_button", tooltip = "Map Info"}) b.style.font_color = {r = 0.1, g = 0.8, b = 0.1} b.style.font = "heading-1" b.style.minimal_height = 38 b.style.minimal_width = 38 b.style.top_padding = 2 b.style.left_padding = 4 b.style.right_padding = 4 b.style.bottom_padding = 2 end local function create_map_intro(player) local frame = player.gui.left.add {type = "frame", name = "map_intro_frame", direction = "vertical"} local t = frame.add {type = "table", column_count = 1} local tt = t.add {type = "table", column_count = 3} local l = tt.add {type = "label", caption = global.map_info.main_caption} l.style.font = "heading-1" l.style.font_color = {r=0.6, g=0.3, b=0.99} l.style.top_padding = 6 l.style.bottom_padding = 6 local l = tt.add {type = "label", caption = global.map_info.sub_caption} l.style.font = "default" l.style.font_color = {r=0.2, g=0.9, b=0.2} l.style.minimal_width = 280 local b = tt.add {type = "button", caption = "X", name = "close_map_intro_frame", align = "right"} b.style.font = "default" b.style.minimal_height = 30 b.style.minimal_width = 30 b.style.top_padding = 2 b.style.left_padding = 4 b.style.right_padding = 4 b.style.bottom_padding = 2 local tt = t.add {type = "table", column_count = 1} local frame = t.add {type = "frame"} local l = frame.add {type = "label", caption = global.map_info.text} l.style.font = "heading-3" l.style.single_line = false l.style.font_color = {r=0.95, g=0.95, b=0.95} end local function on_player_joined_game(event) local player = game.players[event.player_index] create_map_intro_button(player) if player.online_time == 0 then create_map_intro(player) end 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 == "close_map_intro_frame" then player.gui.left["map_intro_frame"].destroy() return end if event.element.name == "map_intro_button" then if player.gui.left["map_intro_frame"] then player.gui.left["map_intro_frame"].destroy() else create_map_intro(player) end return end end local event = require 'utils.event' event.add(defines.events.on_player_joined_game, on_player_joined_game) event.add(defines.events.on_gui_click, on_gui_click)