From 550765796a1e6a13c4b748ad49211c603429ef4a Mon Sep 17 00:00:00 2001 From: copygirl Date: Wed, 28 Apr 2021 09:37:48 +0200 Subject: [PATCH] Remove init action from Spawn --- src/CreativeBuilding.cs | 16 +++++++++------- src/Network/NetworkSync.cs | 3 +-- src/Scenes/Server.cs | 20 ++++++++++---------- 3 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/CreativeBuilding.cs b/src/CreativeBuilding.cs index 6b0fd99..b3bb2fc 100644 --- a/src/CreativeBuilding.cs +++ b/src/CreativeBuilding.cs @@ -97,14 +97,16 @@ public class CreativeBuilding : Node2D { var player = server.GetPlayer(networkID); // TODO: Test if starting block is valid. - foreach (var pos in GetBlockPositions(start, direction, length)) { - if (server.GetBlockAt(pos) != null) continue; - // FIXME: Test if there is a player in the way. - server.Spawn(block => { - block.Position = pos; - block.Color = player.Color.Blend(Color.FromHsv(0.0F, 0.0F, GD.Randf(), 0.2F)); - }); + // FIXME: Test if there is a player in the way. + var validLocations = GetBlockPositions(start, direction, length) + .Where(pos => server.GetBlockAt(pos) == null) + .ToArray(); + + foreach (var pos in validLocations) { + var block = server.Spawn(); + block.Position = pos; + block.Color = player.Color.Blend(Color.FromHsv(0.0F, 0.0F, GD.Randf(), 0.2F)); } } diff --git a/src/Network/NetworkSync.cs b/src/Network/NetworkSync.cs index ea7e587..4687cf9 100644 --- a/src/Network/NetworkSync.cs +++ b/src/Network/NetworkSync.cs @@ -25,7 +25,7 @@ public static class NetworkSync } - public static T Spawn(this Server server, Action init = null) + public static T Spawn(this Server server) where T : Node { if (!_infoByType.TryGetValue(typeof(T), out var info)) throw new ArgumentException( @@ -37,7 +37,6 @@ public static class NetworkSync _statusByObject.Add(status.Object, status); _dirtyObjects.Add(status); server.GetNode(info.ContainerNodePath).AddChild(obj); - init?.Invoke(obj); return obj; } diff --git a/src/Scenes/Server.cs b/src/Scenes/Server.cs index f6e873a..e43e8d9 100644 --- a/src/Scenes/Server.cs +++ b/src/Scenes/Server.cs @@ -34,12 +34,12 @@ public class Server : Game CustomMultiplayer.NetworkPeer = peer; // Spawn default blocks. - for (var x = -6; x <= 6; x++) - this.Spawn(block => { - block.Position = new BlockPos(x, 3); - block.Color = Color.FromHsv(GD.Randf(), 0.1F, 1.0F); - block.Unbreakable = true; - }); + for (var x = -6; x <= 6; x++) { + var block = this.Spawn(); + block.Position = new BlockPos(x, 3); + block.Color = Color.FromHsv(GD.Randf(), 0.1F, 1.0F); + block.Unbreakable = true; + } } public void Stop() @@ -62,10 +62,10 @@ public class Server : Game var networkID = new NetworkID(id); NetworkSync.SendAllObjects(this, networkID); - var player = this.Spawn(p => { - p.Position = Vector2.Zero; - p.Color = Colors.Red; - }); + var player = this.Spawn(); + player.Position = Vector2.Zero; + player.Color = Colors.Red; + _playersByNetworkID.Add(networkID, player); _networkIDByPlayer.Add(player, networkID);