fixed cue issue and setup proper waves
This commit is contained in:
@@ -17,7 +17,7 @@ public partial class TokenManager : Node
|
||||
private Dictionary<ulong, Token> Tokens { get; set; } = [];
|
||||
public int TokenCount => Tokens.Count;
|
||||
|
||||
private List<ulong> RequestQueue { get; set; } = [];
|
||||
private Queue<ulong> RequestQueue { get; set; } = [];
|
||||
|
||||
public int MaxTokens { get; set;}
|
||||
|
||||
@@ -28,15 +28,27 @@ public partial class TokenManager : Node
|
||||
|
||||
public Token? RequestToken(Node owner)
|
||||
{
|
||||
if (Tokens.ContainsKey(owner.GetInstanceId())) return null; // Already has a token
|
||||
if (RequestQueue.Contains(owner.GetInstanceId())) return null; // Already in queue
|
||||
if (Tokens.ContainsKey(owner.GetInstanceId()))
|
||||
{
|
||||
GD.Print("Already has a token");
|
||||
return null; // Already has a token
|
||||
}
|
||||
if (TokenCount >= MaxTokens)
|
||||
{
|
||||
GD.Print($"Max tokens reached: {TokenCount}");
|
||||
return null; // Max tokens reached
|
||||
}
|
||||
if (!RequestQueue.Contains(owner.GetInstanceId()))
|
||||
{
|
||||
RequestQueue.Enqueue(owner.GetInstanceId());
|
||||
}
|
||||
if (RequestQueue.First() != owner.GetInstanceId())
|
||||
{
|
||||
GD.Print("Waiting its turn");
|
||||
return null; // Next in line is not the requester
|
||||
}
|
||||
|
||||
RequestQueue.Add(owner.GetInstanceId());
|
||||
if (TokenCount >= MaxTokens) return null; // Max tokens reached
|
||||
if (RequestQueue.First() != owner.GetInstanceId()) return null; // Next in line is not the requester
|
||||
|
||||
RequestQueue.RemoveAt(0);
|
||||
var ownerInstanceId = owner.GetInstanceId();
|
||||
var ownerInstanceId = RequestQueue.Dequeue();
|
||||
var token = new Token(ownerInstanceId, () => UseToken(ownerInstanceId));
|
||||
Tokens.Add(token.InstanceId, token);
|
||||
return token;
|
||||
|
||||
@@ -8,6 +8,7 @@ public partial class EnemyDescription(PackedScene scene, EnemyDescription.EnemyT
|
||||
public enum EnemyType
|
||||
{
|
||||
Normal,
|
||||
Flying,
|
||||
Projectile,
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,12 @@
|
||||
[gd_resource type="Resource" script_class="EnemyDescription" format=3 uid="uid://cfyafss8ncbhh"]
|
||||
|
||||
[ext_resource type="Resource" uid="uid://bwqjaom4k7rc3" path="res://scenes/enemies/flying_enemy/flying_enemy_movement.tres" id="1_hsb6g"]
|
||||
[ext_resource type="PackedScene" uid="uid://cmlud1hwkd6sv" path="res://scenes/enemies/flying_enemy/flying_enemy.tscn" id="1_yvgr4"]
|
||||
[ext_resource type="Script" uid="uid://rhdkfi7nuvu1" path="res://managers/Wave/EnemyDescription.cs" id="2_hsb6g"]
|
||||
|
||||
[resource]
|
||||
script = ExtResource("2_hsb6g")
|
||||
Scene = ExtResource("1_yvgr4")
|
||||
Type = 1
|
||||
MovementOverride = ExtResource("1_hsb6g")
|
||||
metadata/_custom_type_script = "uid://rhdkfi7nuvu1"
|
||||
|
||||
Reference in New Issue
Block a user