Skip to content

Commit ba05022

Browse files
authored
editor: add directory to save UI (closes #287) (#319)
1 parent 6f13c7a commit ba05022

File tree

4 files changed

+26
-7
lines changed

4 files changed

+26
-7
lines changed

[editor]/editor_gui/client/save.lua

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,12 @@ function createSaveDialog()
99
saveDialog.mapsList = guiCreateGridList ( 0.02, 0.08, 0.98, 0.75, true, saveDialog.window )
1010
saveDialog.save = guiCreateButton ( 0.780357142, 0.85388845, 0.22857142, 0.05555555, "Save", true, saveDialog.window )
1111
saveDialog.cancel = guiCreateButton ( 0.780357142, 0.919444, 0.22857142, 0.05555555, "Cancel", true, saveDialog.window )
12-
saveDialog.mapName = guiCreateEdit ( 0.02, 0.87388845, 0.75, 0.08, "", true, saveDialog.window )
12+
saveDialog.mapNameLabel = guiCreateLabel ( 0.3, 0.835, 0.45, 0.05555555, "Map Name:", true, saveDialog.window )
13+
guiLabelSetVerticalAlign(saveDialog.mapNameLabel, 'center')
14+
saveDialog.mapName = guiCreateEdit ( 0.3, 0.9, 0.45, 0.08, "", true, saveDialog.window )
15+
saveDialog.directoryLabel = guiCreateLabel ( 0.02, 0.835, 0.25, 0.05555555, "Output Directory:", true, saveDialog.window )
16+
guiLabelSetVerticalAlign(saveDialog.directoryLabel, 'center')
17+
saveDialog.directory = guiCreateEdit ( 0.02, 0.9, 0.25, 0.08, "", true, saveDialog.window )
1318
--
1419
guiGridListAddColumn ( saveDialog.mapsList, "Name", 0.4 )
1520
guiGridListAddColumn ( saveDialog.mapsList, "Gamemodes", 0.4 )
@@ -70,22 +75,25 @@ end
7075

7176
function saveButton()
7277
local resourceName = guiGetText ( saveDialog.mapName )
73-
editor_main.saveResource ( resourceName )
78+
local directory = guiGetText ( saveDialog.directory )
79+
editor_main.saveResource ( resourceName, directory )
7480
end
7581

7682
function restoreSaveDialog()
7783
guiSetProperty(saveDialog.window, "Disabled", "False")
7884
end
7985

8086
addEvent ( "saveAsShowDialog", true )
81-
function saveShowDialog( resources )
87+
function saveShowDialog( resources, directory )
8288
if ( exports.editor_main:getMode() ~= 2 ) then
8389
exports.editor_main:setMode(2)
8490
end
8591
setGUIShowing(false)
8692
guiSetInputEnabled ( true )
8793
setWorldClickEnabled ( false )
8894
guiSetText ( saveDialog.mapName, "" )
95+
directory = ( type( directory ) == 'string' ) and string.match(directory, "%[(%a+)%]")
96+
guiSetText ( saveDialog.directory, directory or '' )
8997
guiGridListClear ( saveDialog.mapsList )
9098
for i,res in ipairs(resources) do
9199
if res["type"] == "map" and string.lower(res["friendlyName"]) ~= TEST_RESOURCE and string.lower(res["friendlyName"]) ~= DUMP_RESOURCE then

[editor]/editor_gui/server/guiserverlink.lua

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,8 @@ function loadsave_getResources ( dialog, player )
3333
mapInfo["friendlyName"] = resourceName
3434
end
3535
table.sort(maps, function(a, b) return a.name < b.name end)
36-
triggerClientEvent ( source, dialog.."ShowDialog", source, maps )
36+
local currentDirectory = get('*editor_main.mapResourceOrganizationalDirectory')
37+
triggerClientEvent ( source, dialog.."ShowDialog", source, maps, currentDirectory )
3738
end
3839
addEventHandler ( "loadsave_getResources", getRootElement(), loadsave_getResources )
3940

[editor]/editor_main/client/saveloadtest_client.lua

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,8 @@ addEventHandler ( "saveloadtest_return", getRootElement(),
4444
end
4545
)
4646

47-
function saveResource ( resourceName )
48-
triggerServerEvent ( "saveResource", getLocalPlayer(), resourceName )
47+
function saveResource ( resourceName, directory )
48+
triggerServerEvent ( "saveResource", getLocalPlayer(), resourceName, nil, directory )
4949
end
5050

5151
function newResource ()

[editor]/editor_main/server/saveloadtest_server.lua

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -276,7 +276,7 @@ addEventHandler ( "openResource", rootElement, openResource )
276276

277277
---Save
278278

279-
function saveResource(resourceName, test)
279+
function saveResource(resourceName, test, directory)
280280
if ( client and not isPlayerAllowedToDoEditorAction(client, "saveAs") ) then
281281
editor_gui.outputMessage ("You don't have permissions to save the map!", client,255,0,0)
282282
return false
@@ -291,11 +291,21 @@ function saveResource(resourceName, test)
291291
"You cannot save while another save or load is in progress" )
292292
return false
293293
end
294+
saveOrganizationalDirectory ( directory )
294295
saveResourceCoroutine = coroutine.create(saveResourceCoroutineFunction)
295296
coroutine.resume(saveResourceCoroutine, resourceName, test, client, client)
296297
end
297298
addEventHandler ( "saveResource", rootElement, saveResource )
298299

300+
function saveOrganizationalDirectory(directory)
301+
if ( utf8.len ( directory ) == 0 ) then
302+
directory = 'none'
303+
else
304+
directory = '[' .. directory .. ']'
305+
end
306+
return set('*editor_main.mapResourceOrganizationalDirectory', directory)
307+
end
308+
299309
local specialSyncers = {
300310
position = function() end,
301311
rotation = function() end,

0 commit comments

Comments
 (0)