global game state manager
parent
c2a4385deb
commit
cc3ca57467
|
@ -0,0 +1,34 @@
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace SupaLidlGame.Debug;
|
||||||
|
|
||||||
|
public partial class DebugConsole : Node
|
||||||
|
{
|
||||||
|
public void SetProp(
|
||||||
|
Utils.World world,
|
||||||
|
string entityName,
|
||||||
|
string property,
|
||||||
|
string value)
|
||||||
|
{
|
||||||
|
var ent = world.CurrentMap.Entities.GetNodeOrNull(entityName);
|
||||||
|
if (ent is not null)
|
||||||
|
{
|
||||||
|
ent.Set(property, value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public string CallMethod(
|
||||||
|
Utils.World world,
|
||||||
|
string entityName,
|
||||||
|
string method,
|
||||||
|
string[] args)
|
||||||
|
{
|
||||||
|
var ent = world.CurrentMap.Entities.GetNodeOrNull(entityName);
|
||||||
|
if (ent is not null)
|
||||||
|
{
|
||||||
|
var returnValue = ent.Call(method, args);
|
||||||
|
return returnValue.ToString();
|
||||||
|
}
|
||||||
|
return "";
|
||||||
|
}
|
||||||
|
}
|
|
@ -58,4 +58,15 @@ alignment = 1
|
||||||
visible = false
|
visible = false
|
||||||
layout_mode = 2
|
layout_mode = 2
|
||||||
|
|
||||||
|
[node name="DebugUI" type="CanvasLayer" parent="."]
|
||||||
|
layer = 2
|
||||||
|
|
||||||
|
[node name="Control" type="Control" parent="DebugUI"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
|
[node name="MusicPlayer" type="AudioStreamPlayer" parent="."]
|
||||||
|
|
|
@ -0,0 +1,10 @@
|
||||||
|
using Godot;
|
||||||
|
|
||||||
|
namespace SupaLidlGame.State.Global;
|
||||||
|
|
||||||
|
public partial class GlobalState : Node
|
||||||
|
{
|
||||||
|
public Utils.World World { get; set; }
|
||||||
|
|
||||||
|
public Progression Progression { get; set; }
|
||||||
|
}
|
|
@ -0,0 +1,9 @@
|
||||||
|
using Godot;
|
||||||
|
using Godot.Collections;
|
||||||
|
|
||||||
|
namespace SupaLidlGame.State.Global;
|
||||||
|
|
||||||
|
public partial class Progression : Resource
|
||||||
|
{
|
||||||
|
public Dictionary<PackedScene, bool> BossStatus { get; set; }
|
||||||
|
}
|
|
@ -0,0 +1,18 @@
|
||||||
|
[gd_scene format=3 uid="uid://be8bc4eivsg4s"]
|
||||||
|
|
||||||
|
[node name="DebugUI" type="Control"]
|
||||||
|
layout_mode = 3
|
||||||
|
anchors_preset = 15
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 2
|
||||||
|
|
||||||
|
[node name="VBoxContainer" type="VBoxContainer" parent="."]
|
||||||
|
layout_mode = 1
|
||||||
|
anchors_preset = 12
|
||||||
|
anchor_top = 1.0
|
||||||
|
anchor_right = 1.0
|
||||||
|
anchor_bottom = 1.0
|
||||||
|
grow_horizontal = 2
|
||||||
|
grow_vertical = 0
|
|
@ -17,6 +17,9 @@ public partial class World : Node2D
|
||||||
[Export]
|
[Export]
|
||||||
public Player CurrentPlayer { get; set; }
|
public Player CurrentPlayer { get; set; }
|
||||||
|
|
||||||
|
[Export]
|
||||||
|
public Boss CurrentBoss { get; set; }
|
||||||
|
|
||||||
[Export]
|
[Export]
|
||||||
public UI.UIController UIController { get; set; }
|
public UI.UIController UIController { get; set; }
|
||||||
|
|
||||||
|
@ -44,7 +47,18 @@ public partial class World : Node2D
|
||||||
|
|
||||||
public override void _Ready()
|
public override void _Ready()
|
||||||
{
|
{
|
||||||
|
// check if world already exists
|
||||||
|
|
||||||
|
var globalState = GetNode<State.Global.GlobalState>("/root/GlobalState");
|
||||||
|
if (globalState.World is not null)
|
||||||
|
{
|
||||||
|
throw new System.InvalidOperationException();
|
||||||
|
}
|
||||||
|
|
||||||
|
globalState.World = this;
|
||||||
|
|
||||||
Godot.RenderingServer.SetDefaultClearColor(Godot.Colors.Black);
|
Godot.RenderingServer.SetDefaultClearColor(Godot.Colors.Black);
|
||||||
|
|
||||||
if (StartingArea is not null)
|
if (StartingArea is not null)
|
||||||
{
|
{
|
||||||
LoadScene(StartingArea);
|
LoadScene(StartingArea);
|
||||||
|
@ -74,11 +88,19 @@ public partial class World : Node2D
|
||||||
|
|
||||||
public void RegisterBoss(Boss boss)
|
public void RegisterBoss(Boss boss)
|
||||||
{
|
{
|
||||||
|
CurrentBoss = boss;
|
||||||
UIController.BossBar.Boss = boss;
|
UIController.BossBar.Boss = boss;
|
||||||
MusicPlayer.Stream = boss.Music;
|
MusicPlayer.Stream = boss.Music;
|
||||||
MusicPlayer.Play();
|
MusicPlayer.Play();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void DeregisterBoss(Boss boss)
|
||||||
|
{
|
||||||
|
CurrentBoss = null;
|
||||||
|
UIController.BossBar.Boss = null;
|
||||||
|
MusicPlayer.Stop();
|
||||||
|
}
|
||||||
|
|
||||||
private void LoadMap(Map map)
|
private void LoadMap(Map map)
|
||||||
{
|
{
|
||||||
GD.Print("Loading map " + map.Name);
|
GD.Print("Loading map " + map.Name);
|
||||||
|
|
|
@ -15,6 +15,10 @@ run/main_scene="res://Scenes/Level.tscn"
|
||||||
config/features=PackedStringArray("4.1", "C#", "Forward Plus")
|
config/features=PackedStringArray("4.1", "C#", "Forward Plus")
|
||||||
config/icon="res://icon.svg"
|
config/icon="res://icon.svg"
|
||||||
|
|
||||||
|
[autoload]
|
||||||
|
|
||||||
|
DebugConsole="*res://Debug/DebugConsole.cs"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
window/size/viewport_width=640
|
window/size/viewport_width=640
|
||||||
|
|
Loading…
Reference in New Issue