global game state manager
							parent
							
								
									3fe3cec651
								
							
						
					
					
						commit
						020337494a
					
				| 
						 | 
					@ -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