/// <summary> /// /// </summary> public override void Execute() { IPEndPoint remoteEp = myConversation.FirstEnvelope.remoteEndPoint; MessageId convId = myConversation.FirstEnvelope.message.convId; short gameId = ((StartGameMessage)myConversation.FirstEnvelope.message).GameId; Envelope envelope = new Envelope(new AckMessage(convId, gameId), remoteEp); UserInfo userInfo = ((UserAppWorker)myConversation.commFacility.myAppWorker).UserInfo; UserAppWorker appWorker = (UserAppWorker)myConversation.commFacility.myAppWorker; if (ReceivedGameState?.CurrentPlayerId == userInfo.PlayerId) { Envelope receivedEnvelope = SendAndReceiveMessage(envelope); if (receivedEnvelope?.message != null) { appWorker.UserInfo.AcceptUserInput = true; } else { // TODO: Throw Error, no Start Ack Message received } } else { // TODO: Handle what happens if this ack is not received and so another GameUpdateStateMessage was received SendMessage(envelope); } myConversation.Stop(); }
/// <summary> /// Assigns received game info data to the UserAppWorker's user info /// </summary> /// <param name="gMessage">GameStateUpdateMessage received</param> private void SetUserInfo(GameStateUpdateMessage gMessage) { UserAppWorker userAppWorker = (UserAppWorker)myConversation.commFacility.myAppWorker; userAppWorker.UserInfo.GameId = gMessage.GameId; userAppWorker.UserInfo.CurrentPlayerId = gMessage.CurrentPlayerId; userAppWorker.UserInfo.PlayerPoints = gMessage.PlayerPoints; userAppWorker.UserInfo.PlayerCardAmounts = gMessage.PlayerCardsAmounts; userAppWorker.UserInfo.BoardLayout = gMessage.BoardLayout; userAppWorker.UserInfo.PlayerWithLR = gMessage.PlayerWithLR; userAppWorker.UserInfo.LastMove = gMessage.LastMove; }
public StartUpState(UserAppWorker appWorker) : base(appWorker) { }
static void Main(string[] args) { UserAppWorker appWorker = new UserAppWorker(); appWorker.Start(); }