|
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 |
|
|