Exemplo n.º 1
0
 //Match concludes
 /// <summary>
 /// Match conclude but yet to return to lobby
 /// </summary>
 void sv_match_conclude(Body_generic.Character_type race_winner)
 {
     syn_match_state = MATCH_STATE.GAME_PREVAIL;
     StartCoroutine(backToLobby());
     //Tell client to display summary
     Rpc_match_conclude((byte)race_winner);
 }
Exemplo n.º 2
0
    //Match ends
    /// <summary>
    /// For server & clients;
    /// </summary>
    /// <returns></returns>
    public IEnumerator backToLobby()
    {
        yield return(new WaitForSeconds(5));

        cl_preroundStarted = false;

        Cursor.visible = true;

        onClientReady.Clear();
        if (isServer)
        {
            syn_match_state = MATCH_STATE.LOBBY;
            comp_spawnPoint_manager.enabled = false;
            lobbyManager.ServerReturnToLobby();
        }
    }
Exemplo n.º 3
0
    /*Map scene*/
    //Preround
    /// <summary>
    /// When the server scene is loaded and all clients are ready
    /// </summary>
    void sv_preround_start()
    {
        all_players = FindObjectsOfType <Player_controller>();
        all_ais     = FindObjectsOfType <AI_generic>();
        all_bodies  = FindObjectsOfType <Body_generic>();

        //Skin initialization
        for (int i = 0; i < all_bodies.Length; i++)
        {
            if (all_bodies[i].isPlayer)
            {
                all_bodies[i].Rpc_send_skin_color((sbyte)Array.IndexOf(CONSTANTS.PLAYERCOLORS, all_bodies[i].skin_color));
            }
            Npc_skin_generic[] skins = all_bodies[i].GetComponentsInChildren <Npc_skin_generic>();
            if (skins == null || skins.Length == 0)
            {
                continue;
            }


            //Randomize each skin part, and form a skin map to send to clients
            byte[] skin_map = new byte[skins.Length];
            for (int j = 0; j < skins.Length; j++)
            {
                byte skin_index = (byte)UnityEngine.Random.Range(0, skins[j].sprites_pool.Count);
                skin_map[skins[j].skin_id] = skin_index;
            }

            all_bodies[i].Rpc_send_skin_info(skin_map);
        }

        serverMapSpawnTime = Time.realtimeSinceStartup;
        syn_match_state    = MATCH_STATE.GAME_INSESSION;
        map_match_start();
        Rpc_match_start();

        if (isDedicated())
        {
            Camera.main.enabled = false;
        }

        StartCoroutine(sv_match_start());
    }
Exemplo n.º 4
0
 /// <summary>
 /// Determines if the game is in certain stage.
 /// Example: Match initialization period: begin = game_initializing, end = game_waiting
 /// </summary>
 /// <param name="begin">When this starts</param>
 /// <param name="end">When this ends (inclusive)</param>
 /// <returns></returns>
 public bool atState(MATCH_STATE begin, MATCH_STATE end)
 {
     return(syn_match_state >= begin && syn_match_state <= end);
 }