Files
TheGame/scripts/Game.cs
Björn Blomberg 61b03c5801 Add initial project files and implement core game features
- 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
2025-10-16 10:50:04 +02:00

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;
}
}
}