void Update()
 {
     if (isHostInstance && Input.GetKeyDown(KeyCode.B))
     {
         Debug.Log("=========== SPAWNING AI");
         spawnPlayer(CombatFlow.convertTeamToNum(0), true);
     }
 }
    private void deployUnit()
    {
        //tankCount++;
        //squadRemaining--;

        GameObject selectedPrefab = selectDeployPrefab();

        Vector3 spawnPoint = currentSpawnPoint;

        if (selectedPrefab == SAMPrefab)
        {
            spawnPoint = randomSpawnPoint();
            //Debug.LogError("SAM detected, spawning at random point");
        }


        CreepControl newCreep = PhotonNetwork.InstantiateSceneObject(selectedPrefab.name, spawnPoint,
                                                                     Quaternion.LookRotation(waypoints[1] - transform.position, Vector3.up)).GetComponent <CreepControl>();

        float range;



        if (selectedPrefab == SAMPrefab)
        {
            range = SAMSpacing * SAMCount + SAMSpacing;
        }
        else if (selectedPrefab == AAAPrefab)
        {
            squadRemaining--;
            range = currentSpawnRange - currentRangeOffset;
        }
        else
        {
            squadRemaining--;
            range             = newCreep.effectiveRange - currentRangeOffset;
            currentSpawnRange = range;
        }

        Vector3 offset = spawnPoint - transform.position;


        int teamNum = CombatFlow.convertTeamToNum(team);


        newCreep.photonView.RPC("rpcInit", RpcTarget.AllBuffered, photonView.ViewID, offset, range, teamNum);


        // instantiate
        // place at offset
        // fill waypoints
        // set offset

        // RANGE:
        //  if creep, use its own range
        //  if AAA at end of squad, use previously saved range
    }
    private AI_GroundAttack doSpawn()
    {
        totalSpawnCount++;

        CombatFlow      newAircraft  = gm.spawnPlayer(CombatFlow.convertTeamToNum(spawner.team), true);
        AI_GroundAttack newAirGndAtk = newAircraft.GetComponent <AI_GroundAttack>();

        newAirGndAtk.assignToLane(decideLane(myAI));

        newAircraft.setNetName("JeffBot" + totalSpawnCount);

        return(newAirGndAtk);
    }
    public void createExplosionAt(Vector3 position, float setRadius, float setCoreDamage,
                                  bool doCollide, float dissipationTime, Color glowColor, bool doEmitLight, Color newSmokeColor,
                                  float newExpandTime, CombatFlow.Team newTeam, bool newDamageProjectiles, bool newFriendlyFire,
                                  float newExplosiveForce)
    {
        // If the weapon that initiated the explosion is not local-owned, it will have
        //  to set the damage, doCollide, and explosive force to zero

        // create local-only explosion
        rpcCreateExplosionAt(position, setRadius, setCoreDamage,
                             doCollide, dissipationTime, glowColor, doEmitLight, newSmokeColor,
                             newExpandTime, CombatFlow.convertTeamToNum(newTeam), newDamageProjectiles, newFriendlyFire,
                             newExplosiveForce);
    }
    public void createNetExplosionAt(Vector3 position, float setRadius, float setCoreDamage,
                                     bool doCollide, float dissipationTime, Color glowColor, bool doEmitLight, Color newSmokeColor,
                                     float newExpandTime, CombatFlow.Team newTeam, bool newDamageProjectiles, bool newFriendlyFire,
                                     float newExplosiveForce)
    {
        // create local explosion, will deal damage
        rpcCreateExplosionAt(position, setRadius, setCoreDamage,
                             doCollide, dissipationTime, glowColor, doEmitLight, newSmokeColor,
                             newExpandTime, CombatFlow.convertTeamToNum(newTeam), newDamageProjectiles, newFriendlyFire,
                             newExplosiveForce);

        // create networked explosion, cosmetic only
        //  zero damage, will not collide, zero explosive force
        photonView.RPC("rpcCreateExplosionAt", RpcTarget.Others, position, setRadius, 0,
                       false, dissipationTime, glowColor, doEmitLight, newSmokeColor,
                       newExpandTime, CombatFlow.convertTeamToNum(newTeam), newDamageProjectiles, newFriendlyFire,
                       0);
    }
    public GameObject spawnPlayer(GameObject playerPrefab, string name, bool isPlayer = true)
    {
        //playerPrefab.name = PhotonNetwork.NickName;
        GameObject emptySpawn = findEmptySpawnPoint();

        GameObject player = PhotonNetwork.Instantiate(playerPrefab.name, emptySpawn.transform.position, Quaternion.identity, 0);

        if (isPlayer)
        {
            localPlayerInstance = player;
        }

        player.transform.rotation = emptySpawn.transform.rotation;

        CombatFlow playerFlow = player.GetComponent <CombatFlow>();

        playerFlow.setNetName(name);
        playerFlow.setNetTeam(CombatFlow.convertTeamToNum(team));

        return(player);
    }
 public List <CombatFlow> getTeamAircraftList(CombatFlow.Team team)
 {
     return(getTeamAircraftList(CombatFlow.convertTeamToNum(team)));
 }