- Created README.md with project description and setup instructions - Added project configuration files (TheGame.csproj, TheGame.sln, project.godot) - Implemented main game scenes (MainMenu.tscn, Game.tscn, LoadGameMenu.tscn) - Developed game logic in C# scripts (Game.cs, MainMenu.cs, LoadGameMenu.cs, PauseMenu.cs, SaveManager.cs) - Introduced save/load functionality and timer display - Included icon.svg for game branding
73 lines
2.3 KiB
C#
73 lines
2.3 KiB
C#
using Godot;
|
|
using System.Collections.Generic;
|
|
|
|
namespace TheGame
|
|
{
|
|
public partial class LoadGameMenu : Control
|
|
{
|
|
private VBoxContainer _saveList;
|
|
private SaveManager _saveManager;
|
|
|
|
public override void _Ready()
|
|
{
|
|
_saveList = GetNode<VBoxContainer>("VBoxContainer/ScrollContainer/SaveList");
|
|
_saveManager = new SaveManager();
|
|
PopulateSaveList();
|
|
}
|
|
|
|
private void PopulateSaveList()
|
|
{
|
|
// Rensa tidigare innehåll
|
|
foreach (Node child in _saveList.GetChildren())
|
|
{
|
|
child.QueueFree();
|
|
}
|
|
|
|
var savedGames = _saveManager.GetSavedGames();
|
|
|
|
if (savedGames.Count == 0)
|
|
{
|
|
var noSavesLabel = new Label();
|
|
noSavesLabel.Text = "No saved games found";
|
|
noSavesLabel.HorizontalAlignment = HorizontalAlignment.Center;
|
|
_saveList.AddChild(noSavesLabel);
|
|
return;
|
|
}
|
|
|
|
foreach (var saveData in savedGames)
|
|
{
|
|
var saveButton = new Button();
|
|
|
|
// Formatera tid för visning
|
|
int hours = (int)(saveData.GameTime / 3600);
|
|
int minutes = (int)((saveData.GameTime % 3600) / 60);
|
|
int seconds = (int)(saveData.GameTime % 60);
|
|
string timeText = $"{hours:D2}:{minutes:D2}:{seconds:D2}";
|
|
|
|
saveButton.Text = $"{saveData.SaveName}\nTime: {timeText}\nSaved: {saveData.SaveDate:yyyy-MM-dd HH:mm:ss}";
|
|
|
|
// Anslut knapp-händelse
|
|
saveButton.Pressed += () => LoadSelectedGame(saveData);
|
|
|
|
_saveList.AddChild(saveButton);
|
|
}
|
|
}
|
|
|
|
private void LoadSelectedGame(SaveData saveData)
|
|
{
|
|
if (_saveManager.LoadGame(saveData))
|
|
{
|
|
GetTree().ChangeSceneToFile("res://scenes/Game.tscn");
|
|
}
|
|
else
|
|
{
|
|
GD.PrintErr("Failed to load selected game");
|
|
}
|
|
}
|
|
|
|
private void _on_back_button_pressed()
|
|
{
|
|
GetTree().ChangeSceneToFile("res://scenes/MainMenu.tscn");
|
|
}
|
|
}
|
|
} |