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); } }
private IEnumerator DelayStartGame(float time) { yield return(new WaitForSeconds(time)); MsgRelay.TriggerGameSceneLoaded(); SpawnPlanets(DataManager.PlayerPlanetPrefab, DataManager.EnemyPlanetPrefab); InternalStartGame(); }
private void InternalTogglePause() { _isGamePaused = !_isGamePaused; if (_isGamePaused) { MsgRelay.TriggerGamePause(); } else { MsgRelay.TriggerGameResume(); } }
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); } }
private void InternalRestartCurrentLevel() { if (DataManager.Exists) { var ao = SceneManager.UnloadSceneAsync( DataManager.ActiveLevelAsset.sceneName); ao.completed += (op) => { MsgRelay.TriggerGameSceneUnloaded(); LoadActiveScene(); }; } }
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); } }
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); } } }
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); } }