Skip to content

Commit 3bc3c30

Browse files
committed
Fixes an issue when loading a small map the settings gets overwritten
This happens because smaller maps load faster before the event reaches the client, this check will prevent map settings from being overwritten when EDF is loaded
1 parent ef939ad commit 3bc3c30

File tree

2 files changed

+22
-13
lines changed

2 files changed

+22
-13
lines changed

[editor]/editor_gui/client/mapsettings_gamemodesettings.lua

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -5,27 +5,33 @@ mapsettings.gamemodeSettings = {}
55
local valueWidget
66
local isHandled
77
addEventHandler ( "doLoadEDF", root,
8-
function(tableEDF, resource)
8+
function(tableEDF, resource, isMapLoading)
99
--store all our data neatly under the resource
1010
edfSettings[resource] = tableEDF["settings"]
1111
refreshGamemodeSettings()
1212
--send back the intepreted gui table so the server knows the settings !!Lazy, server could interpret this info or only one client could send it
13-
mapsettings.gamemodeSettings = copyTable ( mapsettings.rowValues )
14-
currentMapSettings.rowData = rowData
15-
currentMapSettings.gamemodeSettings = mapsettings.gamemodeSettings
16-
triggerServerEvent ( "doSaveMapSettings", localPlayer, currentMapSettings, true )
13+
-- prevent edf from overwriting map settings while the map is being loaded
14+
if not isMapLoading then
15+
mapsettings.gamemodeSettings = copyTable ( mapsettings.rowValues )
16+
currentMapSettings.rowData = rowData
17+
currentMapSettings.gamemodeSettings = mapsettings.gamemodeSettings
18+
triggerServerEvent ( "doSaveMapSettings", localPlayer, currentMapSettings, true )
19+
end
1720
end )
1821

1922
addEventHandler ( "doUnloadEDF", root,
20-
function(resource)
23+
function(resource, isMapLoading)
2124
--store all our data neatly under the resource
2225
edfSettings[resource] = nil
2326
refreshGamemodeSettings()
2427
--send back the intepreted gui table so the server knows the settings !!Lazy, server could interpret this info or only one client could send it
25-
mapsettings.gamemodeSettings = copyTable ( mapsettings.rowValues )
26-
currentMapSettings.rowData = rowData
27-
currentMapSettings.gamemodeSettings = mapsettings.gamemodeSettings
28-
triggerServerEvent ( "doSaveMapSettings", localPlayer, currentMapSettings, true )
28+
-- prevent edf from overwriting map settings while the map is being loaded
29+
if not isMapLoading then
30+
mapsettings.gamemodeSettings = copyTable ( mapsettings.rowValues )
31+
currentMapSettings.rowData = rowData
32+
currentMapSettings.gamemodeSettings = mapsettings.gamemodeSettings
33+
triggerServerEvent ( "doSaveMapSettings", localPlayer, currentMapSettings, true )
34+
end
2935
end )
3036

3137
function refreshGamemodeSettings()

[editor]/editor_main/server/EDFhandler.lua

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ function registerEDF( resource )
3333
loadedEDF[resource] = edf.edfGetDefinition(resource)
3434
for i, player in ipairs(getElementsByType"player") do
3535
if clientGUILoaded[player] then
36-
triggerClientEvent ( player, "doLoadEDF", root, loadedEDF[resource], getResourceName ( resource ) )
36+
local isMapLoading = isEditorOpeningResource()
37+
triggerClientEvent ( player, "doLoadEDF", root, loadedEDF[resource], getResourceName ( resource ), isMapLoading )
3738
end
3839
end
3940
end
@@ -45,7 +46,8 @@ addEventHandler ( "onEDFUnload", root,
4546
loadedEDF[resource] = nil
4647
for i, player in ipairs(getElementsByType"player") do
4748
if clientGUILoaded[player] then
48-
triggerClientEvent ( player, "doUnloadEDF", root, getResourceName ( resource ) )
49+
local isMapLoading = isEditorOpeningResource()
50+
triggerClientEvent ( player, "doUnloadEDF", root, getResourceName ( resource ), isMapLoading )
4951
end
5052
end
5153
end
@@ -54,7 +56,8 @@ addEventHandler ( "onEDFUnload", root,
5456
local function sendEDF()
5557
clientGUILoaded[source] = true
5658
for resource, resourceDefinition in pairs(loadedEDF) do
57-
triggerClientEvent ( source, "doLoadEDF", root, resourceDefinition, getResourceName ( resource ) )
59+
local isMapLoading = isEditorOpeningResource()
60+
triggerClientEvent ( source, "doLoadEDF", root, resourceDefinition, getResourceName ( resource ), isMapLoading )
5861
end
5962
end
6063
addEventHandler ( "onClientGUILoaded", root, sendEDF)

0 commit comments

Comments
 (0)