SaveGameApiTest.cs

Component used for testing save/game storage APIs. It creates a Storage.Entry for "save", writes a DataStructureSample to FileSystem.Data and FileSystem.OrganizationData as JSON, enumerates saves, and contains commented examples showing metadata and file reads.

File Access
namespace Sandbox;

public sealed class SaveGameApiTest : Component
{
	// https://sbox.game/dev/doc/assets/storage-ugc
	// Storage.Entry saveing { get; set; } = Storage.CreateEntry( "save" );
	Storage.Entry saveing { get; set; } = Storage.CreateEntry( "save" );

	protected override void OnStart()
	{
		base.OnStart();
		DataStructureSample data = new DataStructureSample("AAA BBB");
		//data.Name = "AAA BBB";
		// saveing.SetMeta( "playerName", "awawa" );
		// saveing.SetMeta( "someSome", "sdafasklfjklwejlk" );
		// saveing.SetMeta( "level", 12 );
		// saveing.Files.WriteAllText( "saveingTeswt.txt", "hello world" );
		// saveing.Files.WriteJson<DataStructureSample>( "dataStructTest.json", data );

		// How about this instead?
		// https://sbox.game/dev/doc/assets/file-system
		FileSystem.Data.WriteJson<DataStructureSample>( "dataStructTestRaw.json", data );
		FileSystem.OrganizationData.WriteJson<DataStructureSample>( "dataStructTestRaw.json", data );
		// so saveing is only for doom?

		//DataStructureSample readData = saveing.Files.ReadJson<DataStructureSample>( "dataStructTest.json" );
		//Log.Info( $"Here data:,\n\n{readData}" );

		var allSaves = Storage.GetAll( "save" );

		/*

		foreach ( var save in allSaves )
		{
    		// Access entry properties
		    Log.Info( $"Save: {save.Id}" );
		    Log.Info( $"Created: {save.Created}" );

		    // Read metadata
		    var playerName = save.GetMeta<string>( "playerName" );
		    var someSome = save.GetMeta<string>( "someSome" );
		    var level = save.GetMeta<int>( "level" );

		    // Access the thumbnail
		    var thumbnail = save.Thumbnail;

		    // Read files from the entry
		    if ( save.Files.FileExists( "player.json" ) )
		    {
		        var playerJson = save.Files.ReadAllText( "player.json" );
		        // Load your game...
		    }
		}
		*/
	}

	protected override void OnUpdate()
	{

	}
}