예제 #1
0
 // Update is called once per frame
 void Update()
 {
     if (NetworkManager.Instance.IsServer)
     {
         if (blueTeamDead.Count > 0)
         {
             if (TimeMachine.blueTimeMachine.MAvalableLaboreres.Count > 0)
             {
                 Debug.Log("respawning player as blue");
                 NetworkingPlayer toGive = blueTeamDead.Dequeue();
                 RMManager        obj    = TimeMachine.blueTimeMachine.MAvalableLaboreres.Dequeue();
                 obj.networkObject.Destroy();
                 RobotManagerBehavior behavior = NetworkManager.Instance.InstantiateRobotManager();
                 StartCoroutine(respawnPlayer(behavior, 2, toGive, 0.1f));
             }
         }
         if (redTeamDead.Count > 0)
         {
             Debug.Log("this is right");
             if (TimeMachine.redTimeMachine.MAvalableLaboreres.Count > 0)
             {
                 Debug.Log("respawning player as red");
                 NetworkingPlayer toGive = redTeamDead.Dequeue();
                 RMManager        obj    = TimeMachine.redTimeMachine.MAvalableLaboreres.Dequeue();
                 obj.networkObject.Destroy();
                 RobotManagerBehavior behavior = NetworkManager.Instance.InstantiateRobotManager();
                 StartCoroutine(respawnPlayer(behavior, 1, toGive, 0.1f));
             }
         }
     }
 }
예제 #2
0
 public void spawnLabourer()
 {
     if (NetworkManager.Instance.IsServer)
     {
         RobotManagerBehavior behavior = NetworkManager.Instance.InstantiateRobotManager();
         StartCoroutine(setLabourer(behavior, 0.1f));
         Invoke("spawnLabourer", 15f);
     }
 }
예제 #3
0
    // Use this for initialization
    IEnumerator setLabourer(RobotManagerBehavior rmb, float delay)
    {
        yield return(new WaitForSeconds(delay));

        Vector3 bounds   = LaborerSpawn.size;
        float   x        = LaborerSpawn.transform.position.x + Random.Range(-bounds.x, bounds.x);
        float   z        = LaborerSpawn.transform.position.z + Random.Range(-bounds.z, bounds.z);
        Vector3 spawnPos = new Vector3(x, LaborerSpawn.transform.position.y, z);

        rmb.networkObject.SendRpc("makeIntoLabourer", Receivers.All, spawnPos);
    }
예제 #4
0
    IEnumerator respawnPlayer(RobotManagerBehavior rmb, int team, NetworkingPlayer toGive, float delay)
    {
        yield return(new WaitForSeconds(delay));

        if (team == 1)
        {
            rmb.networkObject.SendRpc("setStarting", Receivers.All, redRespawnPoint.position, redRespawnPoint.rotation, team);
        }
        else
        {
            rmb.networkObject.SendRpc("setStarting", Receivers.All, blueRespawnPoint.position, blueRespawnPoint.rotation, team);
        }
        if (toGive != null)
        {
            rmb.networkObject.AssignOwnership(toGive);
        }
    }
예제 #5
0
    /*
     * if (team == 1)
     *  {
     *      rmb.networkObject.SendRpc("setStarting", Receivers.AllBuffered, RedPositions[position].position, RedPositions[position].rotation, 1);
     *  }
     *  else
     *  {
     *      rmb.networkObject.SendRpc("setStarting", Receivers.AllBuffered, BluePositions[position].position, BluePositions[position].rotation, 2);
     *  }*/
    IEnumerator setPlayerPositions(RobotManagerBehavior rmb, int team, int position, NetworkingPlayer toGive, float delay)
    {
        yield return(new WaitForSeconds(delay));

        if (team == 1)
        {
            rmb.networkObject.SendRpc("setStarting", Receivers.All, RedPositions[position].position, RedPositions[position].rotation, team);
        }
        else
        {
            rmb.networkObject.SendRpc("setStarting", Receivers.All, BluePositions[position].position, BluePositions[position].rotation, team);
        }
        if (toGive != null)
        {
            rmb.networkObject.AssignOwnership(toGive);
        }
    }
예제 #6
0
    /*
     *
     */
    void spawnPlayers()
    {
        room room1 = GlobalVariables.instance.foundGames[0].First;
        room room2 = GlobalVariables.instance.foundGames[0].Second;

        Debug.Log(GlobalVariables.instance.foundGames.Count);
        int counter = 0;

        foreach (GlobalVariables.PlayerDetails player in room1.Players)
        {
            Debug.Log("player " + player.Name + " in game with id " + player.Player.NetworkId);
            RobotManagerBehavior behavior = NetworkManager.Instance.InstantiateRobotManager();
            StartCoroutine(setPlayerPositions(behavior, 1, counter, player.Player, 0.1f));
        }
        counter = 0;
        foreach (GlobalVariables.PlayerDetails player in room2.Players)
        {
            Debug.Log("player " + player.Name + " in game with id " + player.Player.NetworkId);
            RobotManagerBehavior behavior = NetworkManager.Instance.InstantiateRobotManager();
            StartCoroutine(setPlayerPositions(behavior, 2, counter, player.Player, 0.1f));
        }
    }