public override IMessage Process(IGameMaster gameMaster)
        {
            if (PlayerGuid == default(Guid))
            {
                //Console.WriteLine("Unsigned request");
                return(null);
            }

            var optionalSenderId = gameMaster.Authorize(PlayerGuid);

            if (!optionalSenderId.HasValue)
            {
                //Console.WriteLine("Unrecognized player");
                return(null);
            }

            var senderId = optionalSenderId.Value;

            //Console.WriteLine($"Player {senderId} request to {WithPlayerId}");

            if (!gameMaster.PlayerIdExists(WithPlayerId))
            {
                return(new RejectKnowledgeExchangeMessage(senderId, WithPlayerId, null, true));
            }
            gameMaster.EvaluateAction(GetActionInfo());
            return(null);
        }
        public override IMessage Process(IGameMaster gameMaster)
        {
            var result = gameMaster.EvaluateAction(GetActionInfo());

            return(DataMessage.FromBoardDataOverridingTimestamps(result.data, result.isGameFinished));
        }