--luacheck: ignore
local event = require 'utils.event'

local main_caption = ' --Nightfall-- '
local sub_caption = '*can you make it through*'
local info =
    [[
	They come out at night, trying to nom your rocket silo.

	Fend them off as long as possible!

	There seem to be shipwrecks of unfortunate explorers all over this place.
	It might be worth scavenging a few.

	Wreck loot quality increases with distance.
]]

local function create_map_intro(player)
    if player.gui.left['map_intro_frame'] then
        player.gui.left['map_intro_frame'].destroy()
    end
    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 = main_caption}
    l.style.font = 'default-listbox'
    l.style.font_color = {r = 0.85, g = 0.0, b = 0.25}
    l.style.top_padding = 6
    l.style.bottom_padding = 6

    local l = tt.add {type = 'label', caption = sub_caption}
    l.style.font = 'default'
    l.style.font_color = {r = 0.1, g = 0.65, b = 0.1}
    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 = info}
    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]
    if player.online_time < 36000 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()
    end
end

event.add(defines.events.on_player_joined_game, on_player_joined_game)
event.add(defines.events.on_gui_click, on_gui_click)