z_mirror/EditorExtensions

git clone https://git.raiguard.me/z_mirror/EditorExtensions

Caleb HeuerMove "start in editor" back to player settings93b6003

1.14
2.1 KiB83 linesraw
1local util = require("__EditorExtensions__/scripts/util")
2
3--- @param surface LuaSurface
4local function setup_surface(surface)
5  surface.generate_with_lab_tiles = true
6  surface.show_clouds = false
7  surface.freeze_daytime = true
8  surface.daytime = 0
9  surface.clear(true)
10end
11
12--- @param force LuaForce
13local function setup_force(force)
14  force.max_successful_attempts_per_tick_per_construction_queue = 30
15  force.max_failed_attempts_per_tick_per_construction_queue = 10
16  force.research_all_technologies()
17end
18
19--- @param player LuaPlayer
20local function setup_player(player)
21  player.cheat_mode = true
22  local start_in_editor = player.mod_settings["ee-start-in-editor"]
23  if start_in_editor and start_in_editor.value then
24    player.toggle_map_editor()
25  end
26  if util.in_debug_world() then
27    local items = remote.call("freeplay", "get_created_items")
28    remote.call("freeplay", "set_created_items", {})
29    remote.call("freeplay", "set_respawn_items", {})
30    for name, count in pairs(items) do
31      player.remove_item({ name = name, count = count })
32    end
33  end
34end
35
36--- @param e EventData.on_force_created
37local function on_force_created(e)
38  if not util.in_debug_world() and not util.in_testing_scenario() then
39    return
40  end
41  setup_force(e.force)
42end
43
44--- @param e EventData.on_player_created
45local function on_player_created(e)
46  if not util.in_debug_world() and not util.in_testing_scenario() then
47    return
48  end
49  local player = game.get_player(e.player_index)
50  if player then
51    setup_player(player)
52  end
53end
54
55local function on_init()
56  if not util.in_debug_world() and not util.in_testing_scenario() then
57    return
58  end
59  for _, force in pairs(game.forces) do
60    setup_force(force)
61  end
62  for _, player in pairs(game.players) do
63    setup_player(player)
64  end
65
66  if util.in_debug_world() then
67    local nauvis = game.get_surface("nauvis")
68    if nauvis then
69      setup_surface(nauvis)
70    end
71  end
72end
73
74local debug_world = {}
75
76debug_world.on_init = on_init
77
78debug_world.events = {
79  [defines.events.on_force_created] = on_force_created,
80  [defines.events.on_player_created] = on_player_created,
81}
82
83return debug_world