public SwarmOrder createOrder(byte source, byte target, int spawnZone) { PathSolution ps = _computedPaths [spawnZone]; if (source != 0) { ps = ps.getSpecifiSolution(source); } Vector3 targetAvgPos = new Vector3(); Queue <Vector3> path = null; if (target == MAIN_TARGET) { path = ps.getPathToTarget(); targetAvgPos = SpawnTable.getInstance().getTargetSpawns() [0].getAveragePosition(); } else { path = ps.getPathToTower(target); if (path == null) { Debug.Log("Null order. source: " + source + ", target: " + target + ", spawnZone: " + spawnZone); return(null); } targetAvgPos = SpawnTable.getInstance().getTowerSpawns() [target].getAveragePosition(); } SwarmOrder order = new SwarmOrder(target, targetAvgPos, path); return(order); }
public GameEnemyInstance spawnSoldier(string attackerTemplate, int spawnZone, byte order) { SwarmOrder orderObj = createOrder(0, order, spawnZone); GameEnemy template = EnemyTable.getInstance().getEnemyByName(attackerTemplate); if (template == null) { return(null); } GameEnemyInstance attacker = new GameEnemyInstance(IDFactory.getNextID(), template, spawnZone); World.getInstance().registerEnemy(attacker); Vector3 spawnPosition = _positions [_computedPaths [spawnZone].getSpawnPointIndex()]; attacker.getGameInstance().transform.position = spawnPosition; attacker.getGameInstance().GetComponent <EnemyController> ().setOrder(orderObj); return(attacker); }