| local mod_gui = require("mod-gui") | |
| local util = require("util") | |
| local version = 1 | |
| local on_player_created = function(event) | |
| local player = game.players[event.player_index] | |
| local character = player.character | |
| player.character = nil | |
| if character then | |
| character.destroy() | |
| end | |
| local r = global.chart_distance or 200 | |
| player.force.chart(player.surface, {{player.position.x - r, player.position.y - r}, {player.position.x + r, player.position.y + r}}) | |
| if not global.skip_intro then | |
| if game.is_multiplayer() then | |
| player.print({"msg-introduction"}) | |
| else | |
| game.show_message_dialog{text = {"msg-introduction"}} | |
| end | |
| end | |
| if not global.skip_cheat_menu then | |
| create_technologies_frame(player) | |
| end | |
| end | |
| local starting_items = | |
| { | |
| ["wood"] = "100", | |
| ["coal"] = "100", | |
| ["stone"] = "100", | |
| ["iron-plate"] = "400", | |
| ["copper-plate"] = "400", | |
| ["steel-plate"] = "100", | |
| ["iron-gear-wheel"] = "200", | |
| ["electronic-circuit"] = "200", | |
| ["advanced-circuit"] = "200", | |
| ["offshore-pump"] = "20", | |
| ["pipe"] = "50", | |
| ["boiler"] = "50", | |
| ["electric-mining-drill"] = "50", | |
| ["steam-engine"] = "10", | |
| ["stone-furnace"] = "50", | |
| ["transport-belt"] = "200", | |
| ["underground-belt"] = "50", | |
| ["splitter"] = "20", | |
| ["fast-transport-belt"] = "50", | |
| ["express-transport-belt"] = "50", | |
| ["inserter"] = "50", | |
| ["fast-inserter"] = "50", | |
| ["long-handed-inserter"] = "50", | |
| ["filter-inserter"] = "50", | |
| ["small-electric-pole"] = "50", | |
| ["assembling-machine-1"] = "50", | |
| ["assembling-machine-2"] = "30", | |
| ["rail"] = "200", | |
| ["train-stop"] = "10", | |
| ["rail-signal"] = "50", | |
| ["locomotive"] = "5", | |
| ["cargo-wagon"] = "10" | |
| } | |
| local on_gui_click = function(event) | |
| local player = game.players[event.player_index] | |
| local gui = event.element | |
| if not (gui and gui.valid) then return end | |
| if gui.name == "button_technologies_researched" then | |
| player.force.research_all_technologies() | |
| gui.parent.destroy() | |
| create_item_frame(player) | |
| return | |
| end | |
| if gui.name == "button_technologies_normal" then | |
| gui.parent.destroy() | |
| create_item_frame(player) | |
| return | |
| end | |
| if gui.name == "button_yes_items" then | |
| util.insert_safe(player, starting_items) | |
| gui.parent.destroy() | |
| create_cheat_frame(player) | |
| return | |
| end | |
| if gui.name =="button_no_items" then | |
| gui.parent.destroy() | |
| create_cheat_frame(player) | |
| return | |
| end | |
| if gui.name == "button_use_cheat_mode" then | |
| player.cheat_mode = true | |
| gui.parent.destroy() | |
| create_day_frame(player) | |
| return | |
| end | |
| if gui.name == "button_no_cheat_mode" then | |
| gui.parent.destroy() | |
| create_day_frame(player) | |
| return | |
| end | |
| if gui.name == "button_yes_day" then | |
| player.surface.always_day = true | |
| gui.parent.destroy() | |
| return | |
| end | |
| if gui.name =="button_no_day" then | |
| gui.parent.destroy() | |
| return | |
| end | |
| end | |
| function create_item_frame(player) | |
| local frame = mod_gui.get_frame_flow(player).add{name = "items_frame", type = "frame", style = mod_gui.frame_style, direction = "horizontal", caption={"msg-give-items"}} | |
| frame.add{type = "button", name="button_yes_items", caption={"button-yes-items"}} | |
| frame.add{type = "button", name="button_no_items", caption={"button-no-items"}} | |
| end | |
| function create_technologies_frame(player) | |
| local frame = mod_gui.get_frame_flow(player).add{name = "technologies_frame", type = "frame", style = mod_gui.frame_style, direction = "horizontal", caption={"msg-ask-technologies"}} | |
| frame.add{type = "button", name = "button_technologies_researched", caption = {"button-technologies-researched"}} | |
| frame.add{type = "button", name = "button_technologies_normal", caption = {"button-technologies-normal"}} | |
| end | |
| function create_cheat_frame(player) | |
| local frame = mod_gui.get_frame_flow(player).add{name = "cheat_frame", type = "frame", style = mod_gui.frame_style, direction = "horizontal", caption={"msg-ask-cheat-mode"}} | |
| frame.add{type = "button", name="button_use_cheat_mode", caption={"button-use-cheat-mode"}} | |
| frame.add{type = "button", name="button_no_cheat_mode", caption={"button-no-cheat-mode"}} | |
| end | |
| function create_day_frame(player) | |
| local frame = mod_gui.get_frame_flow(player).add{name = "day_frame", type = "frame", style = mod_gui.frame_style, direction = "horizontal", caption={"msg-ask-always-day"}} | |
| frame.add{type = "button", name="button_yes_day", caption={"button-yes-day"}} | |
| frame.add{type = "button", name="button_no_day", caption={"button-no-day"}} | |
| end | |
| local sandbox = {} | |
| sandbox.events = | |
| { | |
| [defines.events.on_player_created] = on_player_created, | |
| [defines.events.on_gui_click] = on_gui_click | |
| } | |
| sandbox.on_init = function() | |
| global.version = version | |
| end | |
| sandbox.on_configuration_changed = function(event) | |
| end | |
| sandbox.add_remote_interface = function() | |
| remote.add_interface("sandbox", | |
| { | |
| set_skip_intro = function(bool) | |
| global.skip_intro = bool | |
| end, | |
| set_chart_distance = function(value) | |
| global.chart_distance = tonumber(value) or error("Remote call parameter to sandbox set chart distance must be a number") | |
| end, | |
| set_skip_cheat_menu = function(bool) | |
| global.skip_cheat_menu = bool | |
| end | |
| }) | |
| end | |
| return sandbox | |