]> git.somenet.org - factorio/some-luaconsole.git/blob - control.lua
0.16.x -> 0.17.x transition helper mod
[factorio/some-luaconsole.git] / control.lua
1 function exec_command(player)
2     local f, err, cmd
3     cmd = player.gui.left.some_luaconsole.input.text:gsub('game%.player%.', 'game.players['..player.index..'].')
4
5     f, err = loadstring(cmd)
6     if not f then
7         cmd = 'game.players['..player.index..'].print('..cmd..')'
8         f, err = loadstring(cmd)
9     end
10
11     _, err = pcall(f)
12     if err then
13         player.print(cmd)
14         player.print(err:sub(1, err:find('\n')))
15     end
16 end
17
18
19 function toggleGui (player)
20     if player.gui.left.some_luaconsole then
21         player.gui.left.some_luaconsole.destroy()
22     else
23         frame = player.gui.left.add{type = 'frame',
24             name = 'some_luaconsole',
25             direction = 'vertical',
26             caption = {'some_luaconsole.title'}
27         }
28
29         frame.add{type = 'label', caption = {'some_luaconsole.inputlabel'}}
30         input = frame.add{type = 'text-box',
31             name = 'input',
32             style='some_luaconsole_input_textbox'
33         }
34         input.word_wrap = true
35         input.focus()
36
37         horizontal_flow = frame.add{type='flow', direction='horizontal'}
38         horizontal_flow.add{type = 'button',
39             name = 'some_luaconsole_close',
40             style='back_button',
41             caption = {'some_luaconsole.close'},
42             tooltip = {'some_luaconsole.close_tooltip'}
43         }
44         horizontal_flow.add{type = 'button',
45             name = 'some_luaconsole_exec',
46             style='confirm_button',
47             caption = {'some_luaconsole.exec'},
48             tooltip = {'some_luaconsole.exec_tooltip'}
49         }
50     end
51 end
52
53
54
55 script.on_event(defines.events.on_gui_click, function(event)
56     if event.element.name == 'some_luaconsole_exec' then
57         exec_command(game.players[event.player_index])
58     elseif event.element.name == 'some_luaconsole_close' then
59         toggleGui(game.players[event.player_index])
60     end
61 end)
62
63
64 script.on_event('some_luaconsole_toggle', function(event)
65     toggleGui(game.players[event.player_index])
66 end)