]> git.somenet.org - factorio/some-luaconsole.git/blob - control.lua
RELEASE 1.1.2 - Make console movable and autocenter on open.
[factorio/some-luaconsole.git] / control.lua
1 function exec_command(player)
2     if not player.admin then
3         player.print('You are not an admin. You may not use this mod. :(')
4         return
5     end
6
7     local f, err, cmd
8
9     if player.gui.screen.some_luaconsole then
10         global.cmd = player.gui.screen.some_luaconsole.input.text
11     end
12
13     cmd = global.cmd or ""
14     cmd = cmd:gsub('game%.player%.', 'game.players['..player.index..'].')
15
16     f, err = loadstring(cmd)
17     if not f then
18         cmd = 'game.players['..player.index..'].print('..cmd..')'
19         f, err = loadstring(cmd)
20     end
21
22     _, err = pcall(f)
23     if err then
24         player.print(cmd)
25         player.print(err:sub(1, err:find('\n')))
26     end
27 end
28
29
30 function toggleGui (player)
31     if player.gui.screen.some_luaconsole then
32         global.cmd = player.gui.screen.some_luaconsole.input.text
33         player.gui.screen.some_luaconsole.destroy()
34     else
35         frame = player.gui.screen.add{type = 'frame',
36             name = 'some_luaconsole',
37             direction = 'vertical',
38             caption = {'some_luaconsole.title'}
39         }
40
41         frame.add{type = 'label', caption = {'some_luaconsole.inputlabel'}}
42         input = frame.add{type = 'text-box',
43             name = 'input',
44             style='some_luaconsole_input_textbox'
45         }
46         input.word_wrap = true
47         input.text = global.cmd or ""
48
49         horizontal_flow = frame.add{type='flow', direction='horizontal'}
50         horizontal_flow.add{type = 'button',
51             name = 'some_luaconsole_close',
52             style='back_button',
53             caption = {'some_luaconsole.close'},
54             tooltip = {'some_luaconsole.close_tooltip'}
55         }
56         horizontal_flow.add{type = 'button',
57             name = 'some_luaconsole_exec',
58             style='confirm_button',
59             caption = {'some_luaconsole.exec'},
60             tooltip = {'some_luaconsole.exec_tooltip'}
61         }
62
63         if not player.admin then
64             player.gui.screen.some_luaconsole.input.text = 'You are not an admin. You may not use this mod. :('
65             player.gui.screen.some_luaconsole.input.enabled = false
66         end
67         frame.force_auto_center()
68     end
69 end
70
71
72
73 script.on_event(defines.events.on_gui_click, function(event)
74     if event.element.name == 'some_luaconsole_exec' then
75         exec_command(game.players[event.player_index])
76     elseif event.element.name == 'some_luaconsole_close' then
77         toggleGui(game.players[event.player_index])
78     end
79 end)
80
81
82 script.on_event('some_luaconsole_toggle', function(event)
83     toggleGui(game.players[event.player_index])
84 end)
85 script.on_event('some_luaconsole_exec', function(event)
86     exec_command(game.players[event.player_index])
87 end)