Example #1
0
    public static MessageGameStatus Deserialize(this NetworkReader reader)
    {
        MessageGameStatus value = new MessageGameStatus();

        value.GameStarted  = reader.ReadBoolean();
        value.GameFinished = reader.ReadBoolean();
        value.Admin        = reader.ReadGameObject();
        return(value);
    }
Example #2
0
    public void UIStartGame()
    {
        if (!IsAdmin)
        {
            return;
        }

        // if (Hunters > NetworkServer.connections.Count / 2)
        //     return;

        MessageGameStatus status = new MessageGameStatus {
            GameStarted  = true,
            GameFinished = false
        };

        NetworkClient.Send(status);
    }
Example #3
0
 private void MessageGameStatusClientHandler(MessageGameStatus msg)
 {
     GameStarted = msg.GameStarted;
     Admin       = msg.Admin.GetComponent <Player>();
     if (!GameStarted)
     {
         if (msg.GameFinished)
         {
         }
         else
         {
             RefreshGameInfo();
         }
     }
     else
     {
         StatusStartTime = (float)NetworkTime.time;
         GameScreenDrawer.Instance.Intro = true;
         GameScreenDrawer.Instance.Outro = false;
         _usedColors.Clear();
     }
 }
Example #4
0
    private void MessageGameStatusServerHandler(NetworkConnection conn, MessageGameStatus msg)
    {
        if (Admin != conn.identity.GetComponent <Player>())
        {
            return;
        }

        if (!msg.GameStarted)
        {
            return;
        }

        GameStarted = true;
        _usedColors.Clear();
        msg.Admin = Admin.gameObject;
        NetworkServer.SendToAll(msg);
        StatusStartTime = (float)NetworkTime.time;
        List <int> connectionIds = new List <int>();

        foreach (int connectionsKey in NetworkServer.connections.Keys)
        {
            connectionIds.Add(connectionsKey);
        }

        int huntersCount = connectionIds.Count >= Hunters ? Hunters : connectionIds.Count;

        Debug.Log("HUNTERS = " + huntersCount);
        int[] hunters = new int[huntersCount];
        for (int i = 0; i < huntersCount; ++i)
        {
            hunters[i] = -100;
            int id = Random.Range(0, connectionIds.Count);
            if (hunters.Contains(id))
            {
                i--;
                continue;
            }

            hunters[i] = id;
        }

        Player.HunterPlayer = null;

        List <Color> availableColors = new List <Color>(PreCreatedColors);

        foreach (KeyValuePair <int, NetworkConnectionToClient> player in NetworkServer.connections)
        {
            Player p = player.Value.identity.GetComponent <Player>();
            p.IsHunter = false;
            Debug.Log("Color = " + p.Color);
            if (p.Name == "HUNTER")
            {
                p.IsHunter          = true;
                Player.HunterPlayer = p;
            }

            foreach (int hunter in hunters)
            {
                if (player.Key == connectionIds[hunter])
                {
                    p.IsHunter = true;
                    if (Player.HunterPlayer == null)
                    {
                        Player.HunterPlayer = p;
                    }
                }
            }

            int colorIndex = Random.Range(0, availableColors.Count);
            p.SetColor(availableColors[colorIndex]);
            availableColors.RemoveAt(colorIndex);
            p.RefreshStats();
        }

        ServerChangeScene("SampleScene");
    }
Example #5
0
 public static void Serialize(this NetworkWriter writer, MessageGameStatus value)
 {
     writer.WriteBoolean(value.GameStarted);
     writer.WriteBoolean(value.GameFinished);
     writer.WriteGameObject(value.Admin);
 }