Files
wnsrc/lua/menu/menu_save.lua
lifestorm 9c918c46e5 Upload
2024-08-04 23:12:27 +03:00

82 lines
1.8 KiB
Lua

--[[
| This file was obtained through the combined efforts
| of Madbluntz & Plymouth Antiquarian Society.
|
| Credits: lifestorm, Gregory Wayne Rossel JR.,
| Maloy, DrPepper10 @ RIP, Atle!
|
| Visit for more: https://plymouth.thetwilightzone.ru/
--]]
ws_save = WorkshopFileBase( "save", { "save" } )
function ws_save:FetchLocal( offset, perpage )
local f = file.Find( "saves/*.gms", "MOD", "datedesc" )
local saves = {}
for k, v in ipairs( f ) do
if ( k <= offset ) then continue end
if ( k > offset + perpage ) then break end
local entry = {
file = "saves/" .. v,
name = v:StripExtension(),
preview = "saves/" .. v:StripExtension() .. ".jpg",
description = "Local map save stored on your computer. Local content can be deleted in the main menu."
}
table.insert( saves, entry )
end
local results = {
totalresults = #f,
results = saves
}
local json = util.TableToJSON( results, false )
pnlMainMenu:Call( "save.ReceiveLocal( " .. json .. " )" )
end
function ws_save:DownloadAndLoad( id )
steamworks.DownloadUGC( id, function( name )
if ( !name ) then hook.Call( "LoadGModSaveFailed", nil, "Failed to download save from Steam Workshop!" ) return end
ws_save:Load( name )
end )
end
function ws_save:Load( filename )
RunConsoleCommand( "gm_load", filename )
end
function ws_save:FinishPublish( filename, imagename, name, desc, chosenTag, other )
local info = GetSaveFileDetails( filename )
if ( !info ) then return "Couldn't get save information!" end
steamworks.Publish( filename, imagename, name, desc, { "save", info.map, chosenTag }, other.Callback, other.WorkshopID, other.ChangeNotes )
end
--
-- Called from the engine!
--
concommand.Add( "save_publish", function( ply, cmd, args )
ws_save:Publish( args[1], args[2] )
gui.ActivateGameUI()
end, nil, "", { FCVAR_DONTRECORD } )