126 lines
4.4 KiB
Lua
126 lines
4.4 KiB
Lua
require("scripts.commands")
|
|
require("scripts.remote_interface")
|
|
require("scripts.tracker")
|
|
require("scripts.gui")
|
|
require("scripts.presets_loader")
|
|
require("scripts.milestones_util")
|
|
require("scripts.util")
|
|
require("scripts.global_init")
|
|
local migrations = require("scripts.migrations")
|
|
|
|
local migration = require("__flib__.migration")
|
|
|
|
|
|
script.on_init(function()
|
|
global.delayed_chat_messages = {}
|
|
global.forces = {}
|
|
global.players = {}
|
|
global.milestones_check_frequency_setting = settings.global["milestones_check_frequency"].value
|
|
|
|
initial_preset_string = settings.global["milestones_initial_preset"].value
|
|
if initial_preset_string ~= "" then
|
|
initial_preset, err = convert_and_validate_imported_json(initial_preset_string)
|
|
if initial_preset == nil then
|
|
table.insert(global.delayed_chat_messages, {"milestones.message_invalid_initial_preset"})
|
|
table.insert(global.delayed_chat_messages, err)
|
|
else
|
|
global.current_preset_name = "Imported"
|
|
global.loaded_milestones = initial_preset
|
|
table.insert(global.delayed_chat_messages, {"milestones.message_loaded_initial_preset"})
|
|
end
|
|
end
|
|
|
|
fetch_remote_presets()
|
|
add_remote_presets_to_preset_tables()
|
|
load_presets()
|
|
if initial_preset == nil then
|
|
load_preset_addons()
|
|
end
|
|
initialize_alias_table()
|
|
|
|
-- Initialize for existing forces in existing save file
|
|
local backfilled_anything = false
|
|
for _, force in pairs(game.forces) do
|
|
local backfilled_anything_from_this_force = initialize_force_if_needed(force)
|
|
backfilled_anything = backfilled_anything or backfilled_anything_from_this_force
|
|
end
|
|
if backfilled_anything then
|
|
table.insert(global.delayed_chat_messages, {"milestones.message_loaded_into_exiting_game"})
|
|
end
|
|
remove_invalid_milestones_all_forces()
|
|
|
|
-- Initialize for existing players in existing save file
|
|
for _, player in pairs(game.players) do
|
|
initialize_player(player)
|
|
end
|
|
|
|
if next(global.delayed_chat_messages) ~= nil then
|
|
create_delayed_chat()
|
|
end
|
|
end)
|
|
|
|
script.on_load(function()
|
|
if global.delayed_chat_messages ~= nil and next(global.delayed_chat_messages) ~= nil then
|
|
create_delayed_chat()
|
|
end
|
|
add_remote_presets_to_preset_tables()
|
|
end)
|
|
|
|
script.on_event(defines.events.on_force_created, function(event)
|
|
initialize_force_if_needed(event.force)
|
|
end)
|
|
|
|
script.on_event(defines.events.on_player_changed_force, function(event)
|
|
local player = game.get_player(event.player_index)
|
|
initialize_force_if_needed(player.force)
|
|
refresh_gui_for_player(player)
|
|
end)
|
|
|
|
script.on_event(defines.events.on_forces_merged, function(event)
|
|
clear_force(event.source_name)
|
|
end)
|
|
|
|
script.on_event(defines.events.on_player_created, function(event)
|
|
local player = game.players[event.player_index]
|
|
initialize_player(player)
|
|
if global.forces[player.force.name] == nil then -- Possible if new player is added to empty force e.g. vanilla freeplay
|
|
initialize_force_if_needed(player.force)
|
|
end
|
|
end)
|
|
|
|
script.on_event(defines.events.on_player_removed, function(event)
|
|
clear_player(event.player_index)
|
|
end)
|
|
|
|
script.on_event(defines.events.on_runtime_mod_setting_changed, function(event)
|
|
local setting_name = event.setting
|
|
if setting_name == "milestones_check_frequency" then
|
|
global.milestones_check_frequency_setting = settings.global["milestones_check_frequency"].value
|
|
elseif setting_name == "milestones_compact_list"
|
|
or setting_name == "milestones_list_by_group"
|
|
or setting_name == "milestones_show_estimations"
|
|
or setting_name == "milestones_show_incomplete" then
|
|
refresh_gui_for_player(game.get_player(event.player_index))
|
|
end
|
|
end)
|
|
|
|
|
|
script.on_configuration_changed(function(event)
|
|
-- Run migrations for version changes
|
|
migration.on_config_changed(event, migrations)
|
|
|
|
if next(event.mod_changes) ~= nil then
|
|
fetch_remote_presets()
|
|
-- on_load is called before on_configuration_changed so we have to redo add_remote_presets_to_preset_tables here
|
|
add_remote_presets_to_preset_tables()
|
|
reload_presets()
|
|
end
|
|
remove_invalid_milestones_all_forces()
|
|
|
|
-- We also do this here because for some reason on_nth_tick sometimes doesn't work in on_init
|
|
-- I don't know why
|
|
if next(global.delayed_chat_messages) ~= nil then
|
|
create_delayed_chat()
|
|
end
|
|
end)
|