Esempio n. 1
0
    public virtual void Damage(int amount)
    {
        if (amount <= 0)
        {
            return;
        }

        _curHealth -= amount;
        _curHealth  = Mathf.Max(_curHealth, 0);

        Debug.LogFormat("[Hit = {0}] Damage {1}  Health {2}", this.name, amount, _curHealth);

        if (_eventDamaged != null)
        {
            _eventDamaged.Invoke(this);
        }
        MsgRelay.TriggerPlanetDamaged(this);

        if (_curHealth == 0)
        {
            IsAlive = false;
            if (_eventDestroyed != null)
            {
                _eventDestroyed.Invoke(this);
            }
            MsgRelay.TriggerPlanetDestroyed(this);
        }
    }
Esempio n. 2
0
    private IEnumerator DelayStartGame(float time)
    {
        yield return(new WaitForSeconds(time));

        MsgRelay.TriggerGameSceneLoaded();

        SpawnPlanets(DataManager.PlayerPlanetPrefab,
                     DataManager.EnemyPlanetPrefab);

        InternalStartGame();
    }
Esempio n. 3
0
 private void InternalTogglePause()
 {
     _isGamePaused = !_isGamePaused;
     if (_isGamePaused)
     {
         MsgRelay.TriggerGamePause();
     }
     else
     {
         MsgRelay.TriggerGameResume();
     }
 }
Esempio n. 4
0
 private void InternalStartGame()
 {
     if (_isGameActive == false)
     {
         _isGameActive = true;
         MsgRelay.TriggerGameStart();
     }
     else
     {
         Debug.LogWarningFormat("[{0}]: Attempted to start game, " +
                                "but the game is already active.", this.name);
     }
 }
Esempio n. 5
0
    private void InternalRestartCurrentLevel()
    {
        if (DataManager.Exists)
        {
            var ao = SceneManager.UnloadSceneAsync(
                DataManager.ActiveLevelAsset.sceneName);
            ao.completed += (op) =>
            {
                MsgRelay.TriggerGameSceneUnloaded();

                LoadActiveScene();
            };
        }
    }
Esempio n. 6
0
    public IEnumerator DelayedCompleteGame(float time)
    {
        yield return(new WaitForSeconds(time));

        if (_isGameActive == true)
        {
            _isGameActive = false;
            MsgRelay.TriggerGameComplete();
        }
        else
        {
            Debug.LogWarningFormat("[{0}]: Attempted to complete game, " +
                                   "but the game was not active.", this.name);
        }
    }
Esempio n. 7
0
    public void SetPlayerStatus(bool isPlayer, bool force_events = false)
    {
        if (this.IsPlayer != IsPlayer || force_events)
        {
            this.IsPlayer = isPlayer;

            if (this.IsPlayer)
            {
                MsgRelay.TriggerPlayerAssigned(this);
            }
            else
            {
                MsgRelay.TriggerPlayerUnassigned(this);
            }
        }
    }
Esempio n. 8
0
    private void SpawnPlanets(Planet playerPlanetPrefab, Planet enemyPlanetPrefab)
    {
        if (enemyPlanetPrefab != null)
        {
            enemyPlanet = Instantiate <Planet>(enemyPlanetPrefab);
            enemyPlanet.transform.SetParent(this.transform);

            // Look for a spawn point for the enemey
            var enemySpawnPoint = GameObject.FindGameObjectWithTag("EnemySpawnPoint");
            if (enemySpawnPoint != null)
            {
                enemyPlanet.transform.position = enemySpawnPoint.transform.position;
            }
            else
            {
                Debug.LogWarning("[GameManager]: No gameobject with tag EnemySpawnPoint found " +
                                 "in the planet level secen. Spawning enemy planet at (0, 0, 0).");
                enemyPlanet.transform.position = Vector3.zero;
            }

            enemyPlanet.EventDestroyed += OnPlanetDestroyed;

            if (enemyPlanet != null)
            {
                MsgRelay.TriggerPlanetSpawned(enemyPlanet);
            }
            enemyPlanet.SetPlayerStatus(false);
        }
        else
        {
            Debug.LogWarning("[GameManager]: No Enemy Planet Prefab assigned.");
        }

        if (playerPlanetPrefab != null)
        {
            playerPlanet = Instantiate <Planet>(playerPlanetPrefab);
            playerPlanet.transform.SetParent(this.transform);

            // Look for a spawn point for the player
            var playerSpawnPoint = GameObject.FindGameObjectWithTag("PlayerSpawnPoint");
            if (playerSpawnPoint != null)
            {
                playerPlanet.transform.position = playerSpawnPoint.transform.position;
            }
            else
            {
                Debug.LogWarning("[GameManager]: No gameobject with tag PlayerSpawnPoint found " +
                                 "in the planet level secen. Spawning player planet at (0, 0, 0).");
                playerPlanet.transform.position = Vector3.zero;
            }

            playerPlanet.EventDestroyed += OnPlanetDestroyed;

            if (playerPlanet != null)
            {
                MsgRelay.TriggerPlanetSpawned(playerPlanet);
            }
            playerPlanet.SetPlayerStatus(true, true);
        }
        else
        {
            Debug.LogWarning("[GameManager]: No Enemy Planet Prefab assigned.");
        }

        if (enemyPlanet != null && playerPlanet != null)
        {
            Debug.Log("Setting up targets");
            playerPlanet.SetTargetPlanet(enemyPlanet);
            enemyPlanet.SetTargetPlanet(playerPlanet);
        }
    }