public void Initialise(InitialData data, Client client) { this.client = client; Player.OnEndTurn += PlayerTurnFinished; Player.OnVictory += VictoryHandling; deckManager.Initialise(Extensions.Invert(data.cards)); localId = client.client.clientID; localDownOffset = -Mathf.PI / 2 + (-localId + data.players.Count) * ((2 * Mathf.PI) / (data.players.Count)); Camera.main.orthographicSize = Constants.OverlapPreventionDistance + Constants.HalfCardLenght * 2 + Constants.MiddleRadius; cameraWidth = Camera.main.orthographicSize * 2 * Camera.main.aspect; foreach (byte id in data.players.Keys) { players.Add(AddPlayer(id, data.players[id], (byte)data.players.Count)); } display.InstantiateTurnIndicators(players.ToArray()); foreach (Player player in players) { OnTurnBegin?.Invoke(this, player); player.Draw(4); } gameBegan = true; OnTurnBegin?.Invoke(this, players[0]); }