internal override bool Handle(PlayerEventCode eventCode, Dictionary <byte, object> parameters, out string errorMessage) { if (base.Handle(eventCode, parameters, out errorMessage)) { int gameID = (int)parameters[(byte)GameStartParameterCode.GameID]; int player1ID = (int)parameters[(byte)GameStartParameterCode.Player1ID]; string player1Nickname = (string)parameters[(byte)GameStartParameterCode.Player1Nickname]; Library.GamePlayer gamePlayer1 = SerializationHelper.Deserialize <Library.GamePlayer>((byte[])parameters[(byte)GameStartParameterCode.GamePlayer1DataByteArray]); int player2ID = (int)parameters[(byte)GameStartParameterCode.Player2ID]; string player2Nickname = (string)parameters[(byte)GameStartParameterCode.Player2Nickname]; Library.GamePlayer gamePlayer2 = SerializationHelper.Deserialize <Library.GamePlayer>((byte[])parameters[(byte)GameStartParameterCode.GamePlayer2DataByteArray]); int roundCount = (int)parameters[(byte)GameStartParameterCode.RoundCount]; int currentGamePlayerID = (int)parameters[(byte)GameStartParameterCode.CurrentGamePlayerID]; GameCardManager gameCardManager = SerializationHelper.Deserialize <GameCardManager>((byte[])parameters[(byte)GameStartParameterCode.GameCardManagerByteArray]); gamePlayer1.Player = new Library.Player(player1ID, player1Nickname); gamePlayer2.Player = new Library.Player(player2ID, player2Nickname); Library.Game game = new Library.Game ( gameID: gameID, gamePlayer1: gamePlayer1, gamePlayer2: gamePlayer2, roundCount: roundCount, currentGamePlayerID: currentGamePlayerID, gameCardManager: gameCardManager ); GameManager.Instance.AddGame(game); gamePlayer1.BindGame(game); gamePlayer2.BindGame(game); gameCardManager.BindGame(game); return(true); } else { return(false); } }
public Game(int gameID, Player player1, Player player2, Deck player1Deck, Deck player2Deck) { GameCardManager = new GameCardManager(); GameCardManager.BindGame(this); GameID = gameID; GamePlayer1 = new GamePlayer(player1, new Hero(1, 30, 30), CreateGameDeck(1, player1Deck)); GamePlayer1.BindGame(this); GamePlayer2 = new GamePlayer(player2, new Hero(2, 30, 30), CreateGameDeck(2, player2Deck)); GamePlayer2.BindGame(this); RoundCount = 0; Random randomGenerator = new Random(); if (randomGenerator.NextDouble() > 0.5) { CurrentGamePlayerID = 1; GamePlayer1.Draw(3); GamePlayer2.Draw(4); } else { CurrentGamePlayerID = 2; GamePlayer1.Draw(4); GamePlayer2.Draw(3); } Field1 = new Field(1); Field1.BindGame(this); Field2 = new Field(2); Field2.BindGame(this); AssemblyGamePlayerEvents(GamePlayer1); AssemblyGamePlayerEvents(GamePlayer2); AssemblyFieldEvents(Field1); AssemblyFieldEvents(Field2); EventManager = new GameEventManager(this); }