- 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
76 lines
1.9 KiB
C#
76 lines
1.9 KiB
C#
using Godot;
|
|
|
|
namespace TheGame
|
|
{
|
|
public partial class Game : Control
|
|
{
|
|
private Label _timerLabel;
|
|
private Control _pauseMenu;
|
|
private float _gameTime = 0.0f;
|
|
private bool _isPaused = false;
|
|
|
|
public override void _Ready()
|
|
{
|
|
_timerLabel = GetNode<Label>("UI/TimerLabel");
|
|
_pauseMenu = GetNode<Control>("PauseMenu");
|
|
|
|
// Om vi kommer från Load Game, försök ladda sparat tillstånd
|
|
if (GameState.LoadedGameTime >= 0)
|
|
{
|
|
_gameTime = GameState.LoadedGameTime;
|
|
GameState.LoadedGameTime = -1; // Reset efter användning
|
|
}
|
|
}
|
|
|
|
public override void _Process(double delta)
|
|
{
|
|
if (!_isPaused)
|
|
{
|
|
_gameTime += (float)delta;
|
|
UpdateTimerDisplay();
|
|
}
|
|
}
|
|
|
|
public override void _Input(InputEvent @event)
|
|
{
|
|
if (@event.IsActionPressed("ui_cancel")) // ESC key
|
|
{
|
|
TogglePause();
|
|
}
|
|
}
|
|
|
|
private void UpdateTimerDisplay()
|
|
{
|
|
int hours = (int)(_gameTime / 3600);
|
|
int minutes = (int)((_gameTime % 3600) / 60);
|
|
int seconds = (int)(_gameTime % 60);
|
|
|
|
_timerLabel.Text = $"{hours:D2}:{minutes:D2}:{seconds:D2}";
|
|
}
|
|
|
|
public void TogglePause()
|
|
{
|
|
_isPaused = !_isPaused;
|
|
_pauseMenu.Visible = _isPaused;
|
|
|
|
if (_isPaused)
|
|
{
|
|
GetTree().Paused = true;
|
|
}
|
|
else
|
|
{
|
|
GetTree().Paused = false;
|
|
}
|
|
}
|
|
|
|
private void _on_pause_button_pressed()
|
|
{
|
|
TogglePause();
|
|
}
|
|
|
|
public float GetGameTime()
|
|
{
|
|
return _gameTime;
|
|
}
|
|
}
|
|
} |