Example #1
0
File: Turn.cs Project: Bakkes/Karo
 /// <summary>
 /// Zet Turn om in een Message
 /// </summary>
 /// <returns>Message van messagetype Turn. Gevuld met de huidige turn.</returns>
 /// <seealso cref="Message"/>
 internal Message ToMessage()
 {
     Message m = new Message();
     m.Type = MessageType.Turn;
     m.Turn = this;
     return m;
 }
Example #2
0
        public override void StartCommunicating()
        {
            _listener.Start();
            _client = _listener.AcceptTcpClient();
            if (_client.Connected)
            {
                OnConnected();
            }
            if (_client.Connected)
            {
                Message connectedMessage = new Message();
                connectedMessage.Type = MessageType.Connected;
                SendMessage(connectedMessage);

                Random r = new Random();
                double x = r.NextDouble();
                Console.Write("Diceroll: " + x);
                SendRequestFirstMove();
                /*
                if (x >= 0.5)
                {
                    Console.Write(" server starts\n");
                    OnRequestFirstMove();
                }
                else
                {
                    Console.Write(" client starts\n");
                    SendRequestFirstMove();
                }*/
            }
            DoCommunication();
            if(_listener == null){
                return;
            }
            _listener.Stop();
        }
Example #3
0
 public abstract void SendMessage(Message m);
Example #4
0
 //
 /// <summary>
 /// Methode voor de afhandeling van een binnenkomend bericht, hierin wordt het bijbehorende event aangeroepen.
 /// </summary>
 /// <param name="m">Binnenkomend bericht</param>
 private void Proces_MessageReceived(Message m)
 {
     switch (m.Type)
     {
         case MessageType.Connected:
             OnConnected();
             break;
         case MessageType.Turn:
             OnTurnReceived(m.Turn);
             break;
         case MessageType.Disconnect:
             DisconnectMessage dm = (DisconnectMessage)m;
             OnDisconnected(dm.Reason);
             break;
         case MessageType.SentMoveInvalid:
             OnSentMoveInvalid(m.Turn);
             break;
         case MessageType.WinRejected:
             OnWinRejected();
             break;
         case MessageType.WinDetected:
             OnWinDetected(m.Turn, ((WinDetectedMessage)m).Winner);
             break;
         case MessageType.WinAccepted:
             OnWinAccepted();
             break;
         case MessageType.RequestFirstMove:
             OnRequestFirstMove();
             break;
         default:
             break;
     }
 }
Example #5
0
 /// <summary>
 /// Verstuur een aanvraag om de eerste move te doen. 
 /// Voor intern gebruik na diceroll om startende speler aan te geven.
 /// </summary>
 /// <seealso cref="Message"/>
 /// <seealso cref="SendMessage"/>
 internal void SendRequestFirstMove()
 {
     Message m = new Message();
     m.Type = MessageType.RequestFirstMove;
     SendMessage(m);
 }
Example #6
0
 /// <summary>
 /// Stuur een bericht naar de andere game instantie
 /// 'Voor intern gebruik' 
 /// </summary>
 /// <param name="m">Bericht dat verzonden dient te worden</param>
 /// <seealso cref="OnDisconnected"/>
 internal void SendMessage(Message m)
 {
     try
     {
         BinaryFormatter bFormatter = new BinaryFormatter();
         MemoryStream ms = new MemoryStream();
         bFormatter.Serialize(ms, m);
         Byte[] data = ms.ToArray();
         NetworkStream ns = _client.GetStream();
         ns.Write(data, 0, data.Length);
     }
     catch (IOException)
     {
         OnDisconnected(DisconnectReason.ConnectionLost);
     }
 }
Example #7
0
 /// <summary>
 /// Methode om het binnenkomende bericht te verwerken en het bijbehorende event te triggeren.
 /// </summary>
 /// <param name="m">Ontvangen bericht</param>
 /// <seealso cref="Message"/>
 /// <seealso cref="Proces_MessageReceived"/>
 internal void OnMessageReceived(Message m)
 {
     new Thread(() => Proces_MessageReceived(m)).Start();
 }
Example #8
0
 /// <summary>
 /// Verstuur een reactie op WinDetected dat er onenigheid is over de gedetecteerde winst
 /// </summary>
 /// <seealso cref="Message"/>
 /// <seealso cref="SendMessage"/>
 public void SendWinDisputed()
 {
     Message m = new Message();
     m.Type = MessageType.WinRejected;
     SendMessage(m);
 }
Example #9
0
 /// <summary>
 /// Vertuur een reactie op WinDetected dat je het eens bent met de gedetecteerde winst.
 /// </summary>
 /// <seealso cref="Message"/>
 /// <seealso cref="SendMessage"/>
 /// <seealso cref="MessageType"/>
 public void SendWinAccepted()
 {
     Message m = new Message();
     m.Type = MessageType.WinAccepted;
     SendMessage(m);
 }
Example #10
0
 /// <summary>
 /// Verstuurt naar de andere instantie dat de ontvangen zet ongeldig is.
 /// </summary>
 /// <param name="t">De turn die als ongeldig gezien wordt</param>
 /// <seealso cref="Message"/>
 /// <seealso cref="SendMessage"/>
 public void SendMoveInvalid(Turn t)
 {
     Message m = new Message();
     m.Turn = t;
     m.Type = MessageType.SentMoveInvalid;
     SendMessage(m);
 }