using Godot; using System; using Cirno.Scripts; public partial class GameManager : Node2D { private Hud _hud; private PlayerMovement _player; private Node2D _cameraTarget; [Export] public PackedScene PlayerTemplate { get; set; } [Export] public Marker2D PlayerSpawnMarker { get; set; } private InventoryManager _inventoryManager { get; set; } public InventoryManager Inventory => _inventoryManager; private Node2D _bulletsContainer; public Node2D BulletsContainer => _bulletsContainer; // Called when the node enters the scene tree for the first time. public override void _Ready() { _hud = GetNode("HUD"); _cameraTarget = GetNode("CameraTarget"); _inventoryManager = GetNode("InventoryManager"); SpawnBulletsContainer(); if (PlayerSpawnMarker != null) { SpawnPlayer(); } _player.HealthChanged += (newHealth, maxHealth) => _hud.UpdateHealth(newHealth, maxHealth); //_player.Connect(nameof(_player.HealthChanged), _hud, nameof(_hud.UpdateHealth)); } // Called every frame. 'delta' is the elapsed time since the previous frame. public override void _Process(double delta) { } public void SpawnPlayer() { if (_player == null) { //_player = this.CreateChild(PlayerTemplate, PlayerSpawnMarker.Position ); _player = PlayerTemplate.Instantiate(); this.CallDeferred("add_child", _player); _player.Transform = this.GlobalTransform; _player.GlobalPosition = PlayerSpawnMarker.Position; _cameraTarget.Reparent(_player, true); _cameraTarget.GlobalPosition = _player.Position; } } private void SpawnBulletsContainer() { _bulletsContainer = new Node2D(); _bulletsContainer.Name = "BulletsContainer"; AddChild(_bulletsContainer); } }