Migrate control code to using event_handler

This commit is contained in:
Simon Brodtmann 2025-01-21 23:20:34 +01:00
parent f3713fd201
commit 366a16f76d
5 changed files with 309 additions and 198 deletions

View file

@ -1,7 +1,14 @@
local crash_site = require("crash-site")
local util = require("util")
local e = defines.events
-- Transition from Lignumis to Nauvis with the provisional rocket silo
local ToNauvis = {
events = {}
}
-- Chart the starting area for the player
local function chart_starting_area(surface, player)
local r = 200
local force = player.force
@ -9,35 +16,58 @@ local function chart_starting_area(surface, player)
force.chart(surface, { { origin.x - r, origin.y - r }, { origin.x + r, origin.y + r } })
end
local function travel_to_nauvis()
-- Initialize Nauvis
local function init_nauvis()
local nauvis = game.planets["nauvis"].create_surface()
nauvis.request_to_generate_chunks({ 0, 0 }, 3)
nauvis.force_generate_chunk_requests()
nauvis.daytime = 0.7
end
-- Teleport all players to Nauvis and show welcoe message
local function teleport_players()
local nauvis = game.planets["nauvis"].surface
for _, player in pairs(game.players) do
if player.surface.name == "lignumis" then
player.teleport(nauvis.find_non_colliding_position("character", { 0, 0 }, 0, 1) --[[@as MapPosition]],
"nauvis")
player.teleport(nauvis.find_non_colliding_position("character", { 0, 0 }, 0, 1), "nauvis")
chart_starting_area(nauvis, player)
player.print("Oh no, not again. But... Welcome to Nauvis!")
end
end
nauvis.daytime = 0.7
if remote.interfaces.freeplay then
local ship_items = { ["burner-mining-drill"] = 5, ["stone-furnace"] = 5, ["burner-assembling-machine"] = 2, ["burner-agricultural-tower"] = 4, ["wood-lab"] = 4 }
local debris_items = { ["wood-darts-magazine"] = 20, ["wood"] = 20, ["lumber"] = 20 }
local crashed_ship_parts = remote.call("freeplay", "get_ship_parts")
crash_site.create_crash_site(nauvis, { -5, -6 }, ship_items, debris_items, table.deepcopy(crashed_ship_parts))
end
end
script.on_event(e.on_rocket_launched, function(event)
local rocket_silo = event.rocket_silo
if rocket_silo.name == "provisional-rocket-silo" then
--rocket_silo.destroy()
travel_to_nauvis()
-- Initialize the Nauvis freeplay scenario
local function init_freeplay()
if not remote.interfaces.freeplay then
return
end
end)
local nauvis = game.planets["nauvis"].surface
local ship_items = {
["burner-mining-drill"] = 5,
["stone-furnace"] = 5,
["burner-assembling-machine"] = 2,
["burner-agricultural-tower"] = 4,
["wood-lab"] = 4
}
local debris_items = { ["wood-darts-magazine"] = 20, ["wood"] = 20, ["lumber"] = 20 }
local crashed_ship_parts = remote.call("freeplay", "get_ship_parts")
crash_site.create_crash_site(nauvis, { -5, -6 }, ship_items, debris_items, table.deepcopy(crashed_ship_parts))
end
ToNauvis.events[defines.events.on_rocket_launched] = function(event)
if not event.rocket_silo.name == "provisional-rocket-silo" then
return
end
init_nauvis()
teleport_players()
init_freeplay()
end
return ToNauvis