Commit ae0df041b2d7aa56f38942310aacdf54b28b0980

Authored by Stefan Wichmann
1 parent 8595b9ad

Fixed multiplayer issue when dragging the window.

Now the UI won't auto center anymore after moved.
If moved out of bounds, it will return fully in sight.
CHANGELOG.md
... ... @@ -6,6 +6,17 @@ and this project adheres to the versioning of Factorio, so 0.18.x will be at lea
6 6  
7 7 ## [Released]
8 8  
  9 +## [0.18.4] - 2020-06-07
  10 +### General
  11 +Based onyuser feedback updated the mod
  12 +
  13 +### Changed
  14 +- Window now remember last location when opened
  15 +
  16 +### Fixed
  17 +- On multiplayer session the window would lag behind while dragging, because the location would be saved on server. This isn't going to happen anymore, hopefully (not tested yet).
  18 +- When window is moved out of boundaries, when reopened, it will correct itself to be fully in sight again.
  19 +
9 20 ## [0.18.3] - 2020-06-07
10 21 ### General
11 22 A small visual overhaul of the mod
... ...
calculator.lua
... ... @@ -40,6 +40,28 @@ local function destroy_calculator(player)
40 40 end
41 41  
42 42 -- ----------------------------------------------------------------
  43 +function fix_oob_ui(player)
  44 + if global.gui_position[player.index].x < 0 then
  45 + global.gui_position[player.index].x = 0
  46 + end
  47 + if global.gui_position[player.index].y < 0 then
  48 + global.gui_position[player.index].y = 0
  49 + end
  50 +
  51 + -- TODO fixed box size, because there is no API call for that
  52 + local width = 255
  53 + local height = 350
  54 +
  55 + if global.gui_position[player.index].x + width > player.display_resolution.width then
  56 + global.gui_position[player.index].x = player.display_resolution.width - width
  57 + end
  58 + if global.gui_position[player.index].y + height > player.display_resolution.height then
  59 + global.gui_position[player.index].y = player.display_resolution.height - height
  60 + end
  61 + --global.gui_position[player.index]
  62 +end
  63 +
  64 +-- ----------------------------------------------------------------
43 65 function show_calculator(player)
44 66 local root = get_gui_root(player)
45 67  
... ... @@ -130,8 +152,6 @@ function show_calculator(player)
130 152 row5.add({type="sprite-button", style="calcui_button_style_dark", caption=".", name="calcui_button_DOT"}).sprite = "sprite_calcui_dark"
131 153 row5.add({type="sprite-button", style="calcui_button_style_red", caption="=", name="calcui_button_EQU"}).sprite = "sprite_calcui_red"
132 154  
133   - --.sprite = "sprite_calcui_dark"
134   -
135 155 local col2 = table.add({
136 156 type = "flow",
137 157 name = "calcui_table_col2",
... ... @@ -170,8 +190,18 @@ function show_calculator(player)
170 190 recents.style.column_alignments[1] = "right"
171 191  
172 192  
173   - -- center the gui
174   - calcui.force_auto_center()
  193 + -- use last saved location or center the gui
  194 + if not global.gui_position then
  195 + global.gui_position = {}
  196 + end
  197 + if global.gui_position[player.index] then
  198 + -- fix weird saved positions (out of reach)
  199 + fix_oob_ui(player)
  200 +
  201 + calcui.location = global.gui_position[player.index]
  202 + else
  203 + calcui.force_auto_center()
  204 + end
175 205 end
176 206 end
177 207  
... ... @@ -447,8 +477,10 @@ end
447 477 -- ----------------------------------------------------------------
448 478 function calcui_on_gui_location_changed(event)
449 479 if event.element.name == "calcui" then
450   - local player = game.players[event.player_index]
451   - local root = get_gui_root(player)
452   - root.calcui.location = event.element.location
  480 + local root = get_gui_root(game.players[event.player_index])
  481 + if not global.gui_position then
  482 + global.gui_position = {}
  483 + end
  484 + global.gui_position[event.player_index] = event.element.location
453 485 end
454 486 end
455 487 \ No newline at end of file
... ...
info.json
1 1 {
2 2 "name": "calculator-ui",
3   - "version": "0.18.3",
  3 + "version": "0.18.4",
4 4 "title": "Calculator UI",
5 5 "author": "Wichu",
6 6 "factorio_version": "0.18",
... ...