]> git.somenet.org - factorio/some-zoom.git/blob - control.lua
401246ad1c7a5bdb0f997671b6e950e546b2a831
[factorio/some-zoom.git] / control.lua
1
2 function build_gui(player)
3     -- here only build gui, but not try to update it with player data that is not always already available (in init_player for example)
4     local guif = player.gui.top.flw_zoom
5
6     if guif == nil then
7         guif = player.gui.top.add({type = "flow", name = "flw_zoom", direction = "horizontal", style = "zoom_flow_style"})
8         guif.add({type = "sprite-button", name = "but_zoom_zout", sprite = "sprite_zout", style = "zoom_sprite_style"})
9         guif.add({type = "sprite-button", name = "but_zoom_zin", sprite = "sprite_zin", style = "zoom_sprite_style"})
10     end
11 end
12
13
14 function setplayerzoomlimit(player)
15     if player.controller_type == defines.controllers.character then
16         player.zoom_limits = {}
17         local defzoomlimit = player.zoom_limits
18
19         player.zoom_limits = {
20             furthest = { distance = defzoomlimit.furthest.distance*player.mod_settings["some-zoom-zoomlimitfactor"].value, max_distance = defzoomlimit.furthest.max_distance*player.mod_settings["some-zoom-zoomlimitfactor"].value},
21             furthest_game_view = { distance = defzoomlimit.furthest.distance*player.mod_settings["some-zoom-zoomlimitfactor"].value, max_distance = defzoomlimit.furthest.max_distance*player.mod_settings["some-zoom-zoomlimitfactor"].value}
22         }
23
24         build_gui(player)
25     end
26 end
27
28
29 local function on_gui_click(event)
30     local player = game.players[event.player_index]
31
32     if event.element.name == "but_zoom_zin" then
33         setplayerzoomlimit(player)
34         player.zoom = player.zoom/player.mod_settings["some-zoom-zoomchangefactor"].value
35
36     elseif event.element.name == "but_zoom_zout" then
37         setplayerzoomlimit(player)
38         player.zoom = player.zoom*player.mod_settings["some-zoom-zoomchangefactor"].value
39
40     end
41 end
42
43
44
45 local function on_runtime_mod_setting_changed(event)
46     local player = game.players[event.player_index]
47     setplayerzoomlimit(player)
48 end
49
50
51
52 local function on_init()
53     for _, player in pairs(game.players) do
54         setplayerzoomlimit(player)
55     end
56 end
57
58
59 script.on_event(defines.events.on_runtime_mod_setting_changed, on_runtime_mod_setting_changed)
60 script.on_event(defines.events.on_gui_click, on_gui_click)
61 script.on_init(on_init)