// Make a function call (static class) or create a new Battle object? // How to know which enemies to spawn in each area? public void StartBattle(Player player, CharacterBase[] playerParty, OverworldEnemy oe) { // NOTE: probably temporary foreach (EnemyBase enmy in oe.enemyParty) { enmy.gameObject.SetActive(true); } foreach (CharacterBase chr in playerParty) { chr.gameObject.SetActive(true); } // TODO make this AsyncLoad [1] SceneManager.LoadScene("Assets/Scenes/Battle.unity"); this.enemyWhoStartedBattle = oe; this.playerParty = playerParty; this.enemies = oe.enemyParty; this.p = player; this.p.pc = new MenuController(mm); // NOTE: cant deactivate player cause the controller script needs to run this.p.GetComponent <SpriteRenderer>().enabled = false; currentState = BattleState.START; // TODO: make a smooth scene transition // StartCoroutine(LoadBattleScene()); // FIXME: do we need async load? see [1] }
// Use this for initialization void Start () { self = gameObject.GetComponent<OverworldEnemy>(); shootTimer = shootMaxTimer; alertFader.animateFade = true; }
public void EndBattle() { Debug.Log("[MSG]: Ending battle."); // NOTE: probably temporary foreach (CharacterBase chr in playerParty) { chr.gameObject.SetActive(false); } enemyWhoStartedBattle.gameObject.SetActive(false); GameObject.Destroy(enemyWhoStartedBattle); enemyWhoStartedBattle = null; p.pc = new OverworldController(p); this.p.GetComponent <SpriteRenderer>().enabled = true; GameObject.Destroy(this.currentPortrait); this.currentPortrait = null; SceneManager.LoadScene("Assets/Scenes/Prototype.unity"); }
void OnCollisionEnter2D(Collision2D other) { Debug.Log("[MSG]: " + this + " collided with " + other.gameObject); if (other.gameObject.tag.Equals("OverworldEnemy")) { OverworldEnemy enemy = other.gameObject .GetComponent <OverworldEnemy>(); // If enemy has already been battled before just return if (enemy.battled) { return; } enemy.battled = true; other.gameObject.GetComponent <SpriteRenderer>().enabled = false; // Should transition scene here or in battle script? // TODO: Create a scene manager to transition scenes // sceneManager.transition(SceneManager.BATTLE_SCENE) Debug.Log("[MSG]: Touched an enemy! Starting battle..."); bm.StartBattle(this, party, enemy); } }