Hey anyone able to reset/delete saves in user files?

Godot Version

4.7

Question

How did you do it?

Tried all the DirAccess variables and the OS.move_to_trash and the files are all there still.

Can you share your code? DirAccess.remove and OS.move_to_trash should work, the latter may fail if the OS does not have a “trash” set up. Are you globalizing your path?

Thank for the help but figured it out, turns out you can´t delete a folder if it has items inside so I had to first delete all possible saves inside the folder then the folder.

Not pretty but it works <3

unc new_save():
	if DirAccess.dir_exists_absolute(Level.LEVEL_SAVES_FOLDER):
		DirAccess.open("user://level_saves/")
		DirAccess.remove_absolute("user://level_saves/level_save_1.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_2.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_3.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_4.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_5.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_6.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_7.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_8.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_9.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_10.tres")
		DirAccess.remove_absolute("user://level_saves/level_save_11.tres")
		DirAccess.remove_absolute("user://level_saves")
		var err = DirAccess.remove_absolute("user://level_saves/")
		if err == OK:
			print("Success")
		else:
			print("Failed with error code: ", err)
		
		
		queue_free()
		SceneManager.transiton_to_scene("Intro Cut Scene", "0")
		return

	if not DirAccess.dir_exists_absolute(Level.LEVEL_SAVES_FOLDER):
		
		SceneManager.transiton_to_scene("Intro Cut Scene", "0")

Opening the directory at the start is a little odd, you could walk through all the files inside the directory but your list of potential files to remove is better practice, unless you really need to delete that directory for some reason. Reason being you never know what or why a player may store files inside your save directory, maybe they like your game so much they put all of their tax documents in level saves, you wouldn’t want to delete that by accident.

You could reduce this code a bit by using an Array and for loop, while also checking for errors

const my_save_files: Array[String] = [
	"user://level_saves/level_save_1.tres",
	"user://level_saves/level_save_2.tres",
	"user://level_saves/level_save_3.tres",
	"user://level_saves/level_save_4.tres",
	"user://level_saves/level_save_5.tres",
	"user://level_saves/level_save_6.tres",
	"user://level_saves/level_save_7.tres",
	"user://level_saves/level_save_8.tres",
	"user://level_saves/level_save_9.tres",
	"user://level_saves/level_save_10.tres",
	"user://level_saves/level_save_11.tres",
	"user://level_saves",
]

func new_save():
	if DirAccess.dir_exists_absolute(Level.LEVEL_SAVES_FOLDER):
		
		for save_path in my_save_files:
			var err := DirAccess.remove_absolute(save_path)
			if err != OK:
				push_warning("Failed to delete file '%s' because '%s'" % [save_path, error_string(err)])

		queue_free()
		SceneManager.transiton_to_scene("Intro Cut Scene", "0")
		return

In that case, it would make sense to keep a log of the files (saves) created by the game and delete only those.