From c8b6ac623cdc7fbbf2b0a04dc774126907d473c9 Mon Sep 17 00:00:00 2001
From: sili98 <sili98@sch.bme.hu>
Date: Wed, 11 Mar 2020 04:24:19 +0100
Subject: [PATCH] Fixed communication bug.

---
 zsirozas/Common.cs          |  2 +-
 zsirozas/Game.cs            |  7 ++++---
 zsirozas/GameClient.cs      | 32 +++++++++++++++++++-------------
 zsirozas/RawTcpTransport.cs |  2 +-
 4 files changed, 25 insertions(+), 18 deletions(-)

diff --git a/zsirozas/Common.cs b/zsirozas/Common.cs
index 906a844..0335dfd 100644
--- a/zsirozas/Common.cs
+++ b/zsirozas/Common.cs
@@ -48,7 +48,7 @@ namespace zsirozas
         /// </summary>
         /// <param name="s">a message that will be written to the network stream</param>
         void SendMessage(string s);
-        void ParseNextMessage(Stream s, object param);
+        void ParseNextMessage(StreamReader sr);
         bool ValidateConnection(object connInfo);
     }
 
diff --git a/zsirozas/Game.cs b/zsirozas/Game.cs
index c2e9f44..b6a8c48 100644
--- a/zsirozas/Game.cs
+++ b/zsirozas/Game.cs
@@ -16,8 +16,8 @@ namespace zsirozas
 
         public void NotifyPlayers(GameEvent @event)
         {
-            string prefix = ServerEvent.GameEvent + "\n";
-            string message = prefix + @event;
+            //string prefix = ServerEvent.GameEvent + "\n";
+            string message = "";//prefix + @event;
             switch (@event)
             {
                 case GameEvent.CardAction:
@@ -48,7 +48,8 @@ namespace zsirozas
             }
             for (int i = 0; i < playersByOrder.Length; i++)
             {
-                gameServer.UsersByID[playersByOrder[i]].client.SendMessage(message);
+                //gameServer.UsersByID[playersByOrder[i]].client.SendMessage(message);
+                gameServer.UsersByID[playersByOrder[i]].client.InGameNotify(GameEvent.GameOver, message);
             }
         }
 
diff --git a/zsirozas/GameClient.cs b/zsirozas/GameClient.cs
index 1aa94f4..52b59bf 100644
--- a/zsirozas/GameClient.cs
+++ b/zsirozas/GameClient.cs
@@ -121,17 +121,22 @@ namespace zsirozas
 
         void ListenForServer()
         {
-            try
+            using (var sr = new StreamReader(messageStream))
             {
                 while (true)
                 {
-                    ParseNextMessage(messageStream, null);
+                    try
+                    {
+                        ParseNextMessage(sr);
+                    }
+                    catch (Exception ex)
+                    {
+                        //TODO: rossz debug módszer....
+                        handleServerError(this, ex.Message);
+                        return;
+                    }
                 }
             }
-            catch (Exception ex)
-            {
-                return;
-            }
             //using (var sr = new StreamReader(messageStream))
             //{
             //    string line = "";
@@ -217,9 +222,9 @@ namespace zsirozas
             throw new NotImplementedException();
         }
 
-        public void ParseNextMessage(Stream s, object param)
+        public void ParseNextMessage(StreamReader sr)
         {
-            using (var sr = new StreamReader(s))
+            //using (var sr = new StreamReader(s))
             {
                 try
                 {
@@ -231,7 +236,7 @@ namespace zsirozas
                     var @event = (ServerEvent)Enum.Parse(typeof(ServerEvent), line);
                     if (@event == ServerEvent.GameEvent)
                     {
-                        ParseGameMessage(sr, param);
+                        ParseGameMessage(sr);
                     }
                     else
                     {
@@ -253,13 +258,14 @@ namespace zsirozas
                 }
             }
         }
-        private void ParseGameMessage(StreamReader sr, object param) 
+        private void ParseGameMessage(StreamReader sr) 
         {
             //TODO: validálni
             string line = sr.ReadLine();
-            GameEvent gameEvent;
-            Enum.TryParse(line, out gameEvent);
-            InGameNotify(gameEvent, sr.ReadLine());
+            if (Enum.TryParse(line, out GameEvent gameEvent))
+            {
+                InGameNotify(gameEvent, sr.ReadLine());
+            }
         }
 
         public void InGameNotify(GameEvent @event, string param0)
diff --git a/zsirozas/RawTcpTransport.cs b/zsirozas/RawTcpTransport.cs
index 19eca1f..425d142 100644
--- a/zsirozas/RawTcpTransport.cs
+++ b/zsirozas/RawTcpTransport.cs
@@ -68,7 +68,7 @@ namespace zsirozas
             return false;
         }
 
-        public void ParseNextMessage(Stream s, object param)
+        public void ParseNextMessage(StreamReader sr)
         {
             throw new NotSupportedException("This is a proxy to the real app client. You shouldn't want to feed it message streams.");
         }
-- 
GitLab