public void SpawnUnits() { GameObject combatSemaphore = GameObject.FindWithTag("CombatSemaphore"); if (combatSemaphore == null) { Debug.LogError("Combat Semaphore not found, you better have initialized enemies yourself"); return; } Debug.Log("Spawning units from semaphore information"); player = new List <CombatUnit>(); enemy = new List <CombatUnit>(); CombatSemaphore sem = combatSemaphore.GetComponent <CombatSemaphore>(); for (int i = 0; i < sem.playerParty.Count; i++) { GameObject newParyMember = Instantiate(sem.playerParty[i], playerLocations[i].position, playerLocations[i].rotation); player.Add(newParyMember.GetComponent <CombatUnit>()); } for (int i = 0; i < sem.enemiesToSpawn.Count; i++) { GameObject newEnemy = Instantiate(sem.enemiesToSpawn[i], enemyLocations[i].position, enemyLocations[i].rotation); enemy.Add(newEnemy.GetComponent <CombatUnit>()); } sem.MarkJobCompleted(); }
// Update is called once per frame void FixedUpdate() { if (player != null) { if (playerRB2D.velocity.x != 0 || playerRB2D.velocity.y != 0) { framesSinceCombat++; if (Random.Range(0, 100) % framesSinceCombat >= 99.0f) { framesSinceCombat = 1.0f; //New stuff is creating a semaphore and configuring it with relavent information. Debug.Log("Starting battle, generating enemies"); GameObject semaphore = Instantiate(semaphoreRef); CombatSemaphore comSem = semaphore.GetComponent <CombatSemaphore>(); DontDestroyOnLoad(semaphore); //TODO do I need this? int monstersToSpawn = Random.Range(0, 100); Debug.Log("Random number is " + monstersToSpawn); for (int i = 0; i < enemies.Count; i++) { Debug.Log("Checking random against " + enemies[i].probability + " with result " + monstersToSpawn % enemies[i].probability); if ((monstersToSpawn % enemies[i].probability) <= 1) { Debug.Log("Monster added to encounter list"); comSem.enemiesToSpawn.Add(enemies[i].enemy); } } if (comSem.enemiesToSpawn.Count == 0) { comSem.enemiesToSpawn.Add(enemies[0].enemy); } comSem.playerParty = playerParty; LevelLoader ll = GameObject.FindGameObjectWithTag("LevelLoader").GetComponent <LevelLoader>(); ll.BeginCombat("CombatBase"); } } } }