/// <summary> /// Sent by: server /// Received by: all clients /// Set player colors decided by the server /// </summary> /// <param name="evnt"></param> public override void OnEvent(SetColors evnt) { MemoryStream ms = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); ms.Write(evnt.BinaryData, 0, evnt.BinaryData.Length); ms.Seek(0, SeekOrigin.Begin); Debug.Log(evnt.BinaryData.Length); GameManager.PlayerColorsDatabase PlayerColors = (GameManager.PlayerColorsDatabase)bf.Deserialize(ms); GameManager.Instance.PlayerColors = PlayerColors; }
/// <summary> /// start game session /// NOTE: ONLY CALLED FROM SERVER /// </summary> public void StartGame() { // decide player colors and send to all connected clients int count = 0; foreach (CredentialToken player in ServerManager.Instance.ConnectedUsers) { SerializedColor playerColor = new SerializedColor(possibleColors[count]); PlayerColors[player] = playerColor; count++; } BinaryFormatter bf = new BinaryFormatter(); MemoryStream ms = new MemoryStream(); bf.Serialize(ms, PlayerColors); SetColors setColors = SetColors.Create(Bolt.GlobalTargets.Others); setColors.BinaryData = ms.ToArray(); setColors.Send(); // = SendConnectedClients.Create(connection); //sendClients.BinaryData = ms.ToArray(); //sendClients.Send(); SceneChangeToken token = new SceneChangeToken(); token.Reason = "StartGame"; token.SceneTo = MainGameScene; token.SceneFrom = Application.loadedLevelName; Debug.Log("Starting game from gamemanager..."); //Instantiate(EndGameManagerPrefab); //Instantiate(GameTypeManagerPrefab); BoltNetwork.LoadScene("Game", token); }