public ChessGame(string id, string player1, string player2, string actualStateTx) { Type = GameTypes.ChessGame; try { Id = new Guid(id); } catch (Exception ex) { log.Error("Chess Game - Wrong format of GUID. New one will be created!", ex); Id = Guid.NewGuid(); } ActualStateTxId = actualStateTx; GameHistoryTxIds = new List <string>(); GameHistory = new List <ChessGameDto>(); Bets = new Dictionary <string, Bet>(); Players = new Dictionary <string, ChessPlayer>(); Player1Address = player1; Player2Address = player2; ChessPlayer pl1 = (ChessPlayer)PlayersFactory.GetPlayer(PlayerTypes.ChessPlayer, player1, string.Empty, string.Empty, string.Empty, 0.0); pl1.FigureType = FigureTypes.White; ChessPlayer pl2 = (ChessPlayer)PlayersFactory.GetPlayer(PlayerTypes.ChessPlayer, player2, string.Empty, string.Empty, string.Empty, 0.0); pl2.FigureType = FigureTypes.Black; Players.TryAdd(player1, pl1); Players.TryAdd(player2, pl2); }
public void Initialize(ICollection <PlayerInfo> inputs, GameRestriction restriction) { if (inputs.Count < restriction.MinPlayers || inputs.Count > restriction.MaxPlayers) { throw new ArgumentException("Players count does not meet minimum or maximum requirement", nameof(inputs)); } Restriction = restriction; _basket = new Basket(Restriction.MinWeight, Restriction.MaxWeight); Players = new List <GenericPlayer <IGuessStrategy> >(inputs.Count); _finilizerThread = new Thread(FinalizeProc); _finalizeEvent = new ManualResetEvent(false); _state = new GameState(); PlayersFactory.PreparePlayersType(restriction); foreach (var input in inputs) { var newPlayer = PlayersFactory.GetPlayer(input.Name, input.PlayerType); Players.Add(newPlayer); newPlayer.OnNumberGuessed += OnNumberGuessedHandler; } // All cheaters are subscribed to all players guess events foreach (var player in Players) { var cheaterPlayer = player as GenericCheaterPlayer; cheaterPlayer?.SubscribeToOtherPlayersGuesses(Players); } _initialized = true; }