]> git.somenet.org - factorio/some-zoom.git/blob - control.lua
RELEASE 2.0.4 - Rewritten. Works again. Now by increasing the players zoom limits.
[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
15 local function on_gui_click(event)
16     local player = game.players[event.player_index]
17
18     if event.element.name == "but_zoom_zin" then
19         player.zoom = player.zoom*player.mod_settings["some-zoom-zoomchangefactor"].value
20
21     elseif event.element.name == "but_zoom_zout" then
22         player.zoom = player.zoom/player.mod_settings["some-zoom-zoomchangefactor"].value
23
24     end
25 end
26
27
28
29 local function on_runtime_mod_setting_changed(event)
30     local player = game.players[event.player_index]
31     if player.connected then
32         player.zoom_limits = {}
33         local defzoomlimit = player.zoom_limits
34         local zoomlimitfactor = 1
35
36         player.zoom_limits = {
37             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},
38             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}
39         }
40     end
41 end
42
43
44
45 local function on_init()
46     for _, player in pairs(game.players) do
47         if player.connected then
48             player.zoom_limits = {}
49             local defzoomlimit = player.zoom_limits
50             local zoomlimitfactor = 1
51
52             player.zoom_limits = {
53                 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},
54                 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}
55             }
56             build_gui(player)
57         end
58     end
59 end
60
61
62 script.on_event(defines.events.on_runtime_mod_setting_changed, on_runtime_mod_setting_changed)
63 script.on_event(defines.events.on_gui_click, on_gui_click)
64 script.on_init(on_init)