Files
fracturepoint/Assets/Scripts/CommonScripts/CommonData.cs
2026-01-19 10:41:03 -07:00

78 lines
2.0 KiB
C#

using Godot;
using System;
using System.Collections.Generic;
public partial class CommonData : Node
{
public bool Muted = true;
// Level information
public string CurrentLevel;
// Player information
public float CurrentHealth;
public float MaxHealth = 100;
// Levels Completed
public HashSet<string> LevelsCompleted = new HashSet<string>();
public override void _Ready()
{
// Connect to the audio player
GetNode<AudioStreamPlayer>("AudioStreamPlayer").Finished += LoopAudio;
GetNode<AudioStreamPlayer>("AudioStreamPlayer").VolumeDb = -80; // temporary
// Start game by loading the camera
var scene = GD.Load<PackedScene>("res://Assets/Scenes/Persistant/Camera.tscn");
var inst = scene.Instantiate();
GetTree().Root.CallDeferred(Node.MethodName.AddChild, inst);
// Start game by loading the main menu
scene = GD.Load<PackedScene>("res://Assets/Scenes/MenusAndLevels/MainMenu.tscn");
inst = scene.Instantiate();
GetTree().Root.CallDeferred(Node.MethodName.AddChild, inst);
PlayMusic("MainMenu");
// Load in saved data
}
public override void _Process(double delta)
{
if (Input.IsActionJustPressed("quit_game"))
{
GetTree().Quit();
}
if (Input.IsActionJustPressed("mute"))
{
if (Muted)
{
Muted = false;
GetNode<AudioStreamPlayer>("AudioStreamPlayer").VolumeDb = 0;
}
else
{
Muted = true;
GetNode<AudioStreamPlayer>("AudioStreamPlayer").VolumeDb = -80;
}
}
}
// BG Audio Management
public void StopMusic()
{
// Stop whatever audio is playing
GetNode<AudioStreamPlayer>("AudioStreamPlayer").Stop();
}
public void PlayMusic(string AudioName)
{
// Load target audio and play the audio
GetNode<AudioStreamPlayer>("AudioStreamPlayer").Stream = (Godot.AudioStream)GD.Load($"res://Assets/Audio/Music/{AudioName}.mp3");
GetNode<AudioStreamPlayer>("AudioStreamPlayer").Play();
}
void LoopAudio()
{
// Find when the stream finishes playing to play it again
GetNode<AudioStreamPlayer>("AudioStreamPlayer").Play();
}
}