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); }
public void UIStartGame() { if (!IsAdmin) { return; } // if (Hunters > NetworkServer.connections.Count / 2) // return; MessageGameStatus status = new MessageGameStatus { GameStarted = true, GameFinished = false }; NetworkClient.Send(status); }
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(); } }
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"); }
public static void Serialize(this NetworkWriter writer, MessageGameStatus value) { writer.WriteBoolean(value.GameStarted); writer.WriteBoolean(value.GameFinished); writer.WriteGameObject(value.Admin); }