✨ Player name
This commit is contained in:
@ -6,7 +6,7 @@ public partial class World : Node2D
|
||||
{
|
||||
[Export] public PackedScene PlayerScene;
|
||||
|
||||
public void StartGame()
|
||||
public void StartGame(string currentPlayerName = null)
|
||||
{
|
||||
if (!Multiplayer.IsServer())
|
||||
return;
|
||||
@ -21,7 +21,7 @@ public partial class World : Node2D
|
||||
|
||||
// Add this client as a player if client isn't a dedicated server
|
||||
if (!OS.HasFeature("dedicated_server"))
|
||||
AddPlayer(1);
|
||||
AddPlayer(1, currentPlayerName);
|
||||
}
|
||||
|
||||
public override void _ExitTree()
|
||||
@ -44,13 +44,14 @@ public partial class World : Node2D
|
||||
private void RemovePlayer_Adaptor(long id)
|
||||
=> RemovePlayer((int)id);
|
||||
|
||||
private void AddPlayer(int id)
|
||||
private void AddPlayer(int id, string name = null)
|
||||
{
|
||||
var player = PlayerScene.Instantiate<AceField.Scripts.Player>();
|
||||
player.SetPlayerId(id);
|
||||
var player = PlayerScene.Instantiate<Player>();
|
||||
player.PlayerId = id;
|
||||
var position = Vector2.FromAngle(GD.Randf() * 2 * Mathf.Pi);
|
||||
player.Position = new Vector2(position.X * 5f * GD.Randf(), position.Y * 5f * GD.Randf());
|
||||
player.Name = BuildPlayerName(id);
|
||||
player.PlayerName = name;
|
||||
|
||||
AddChild(player, true);
|
||||
}
|
||||
@ -63,4 +64,17 @@ public partial class World : Node2D
|
||||
|
||||
GetNode(name).QueueFree();
|
||||
}
|
||||
|
||||
public Player GetCurrentPlayer()
|
||||
{
|
||||
foreach(var child in GetChildren())
|
||||
{
|
||||
if (child is Player { IsCurrentPlayer: true } player)
|
||||
{
|
||||
return player;
|
||||
}
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user