private void OnDamageTaken(uint amount)
    {
        if (currentHealth == 1 || currentHealth == 0)
        {
            currentHealth = 0;
        }
        else
        {
            currentHealth -= amount;
        }

        GameEventObserver.FireHUDHealthEvent(currentHealth);
    }
    void Start()
    {
        currentHealth = defaultHealth;
        GameEventObserver.FireHUDHealthEvent(currentHealth);
        GameEventObserver.FireHUDMaxWaveEvent((uint)waves.Length);

        PoolManager.Initialize();

        for (int index = 0; index < poolableObjects.Length; index++)
        {
            var poolableObject = poolableObjects[index];
            PoolManager.AddToPool(poolableObject);
        }

        GameEventObserver.AddOnDamageTakenListener(OnDamageTaken);

        StartCoroutine(SpawnCoroutine());
        GameEventObserver.FireHUDHealthEvent(currentHealth);
    }