Console client: Display chat messages.

This commit is contained in:
lotodore
2008-12-26 20:01:25 +00:00
parent 6f9129818c
commit 52fc37a8b7
6 changed files with 91 additions and 0 deletions
+7
View File
@@ -150,6 +150,13 @@ namespace pokerth_console
Console.WriteLine("\n{0} wins the game.", name);
}
public void ChatText(string name, string message)
{
Console.WriteLine("{0}: {1}",
name,
message);
}
public void Error(string message)
{
Console.WriteLine("Error: " + message);
+1
View File
@@ -43,6 +43,7 @@ namespace pokerth_lib
void HandResult();
void PlayerWinsHand(string name, uint moneyWon);
void PlayerWinsGame(string name);
void ChatText(string name, string message);
void Error(string message);
}
}
+1
View File
@@ -52,6 +52,7 @@ namespace pokerth_lib
void VisitEndOfHandShowCards(NetPacket p);
void VisitEndOfHandHideCards(NetPacket p);
void VisitEndOfGame(NetPacket p);
void VisitChatText(NetPacket p);
void VisitError(NetPacket p);
}
}
+4
View File
@@ -144,6 +144,7 @@ namespace pokerth_lib
BestHandPos4,
BestHandPos5,
CardsValue,
ChatText,
}
public enum ListPropType
@@ -221,6 +222,9 @@ namespace pokerth_lib
case NetTypeEndOfGame :
tmpPacket = new NetPacketEndOfGame(size, reader);
break;
case NetTypeChatText :
tmpPacket = new NetPacketChatText(size, reader);
break;
case NetTypeError :
tmpPacket = new NetPacketError(size, reader);
break;
+64
View File
@@ -0,0 +1,64 @@
/***************************************************************************
* Copyright (C) 2008 by Lothar May *
* *
* This file is part of pokerth_console. *
* pokerth_console is free software: you can redistribute it and/or *
* modify it under the terms of the GNU Affero General Public License *
* as published by the Free Software Foundation, either version 3 of *
* the License, or (at your option) any later version. *
* *
* pokerth_console is distributed in the hope that it will be useful, *
* but WITHOUT ANY WARRANTY; without even the implied warranty of *
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the *
* GNU General Public License for more details. *
* *
* You should have received a copy of the *
* GNU Affero General Public License along with pokerth_console. *
* If not, see <http://www.gnu.org/licenses/>. *
***************************************************************************/
using System;
using System.Collections.Generic;
using System.Text;
using System.Net;
using System.Net.Sockets;
using System.IO;
namespace pokerth_lib
{
class NetPacketChatText : NetPacket
{
public NetPacketChatText()
: base(NetPacket.NetTypeChatText)
{
}
public NetPacketChatText(int size, BinaryReader r)
: base(NetPacket.NetTypeChatText)
{
if (size < 12)
throw new NetPacketException("NetPacketChatText invalid size.");
Properties.Add(PropType.PlayerId,
Convert.ToString(IPAddress.NetworkToHostOrder((int)r.ReadUInt32())));
int textLen = IPAddress.NetworkToHostOrder((short)r.ReadUInt16());
r.ReadUInt16(); // reserved
// Read chat text.
byte[] tmpText = r.ReadBytes(textLen);
Properties.Add(PropType.ChatText,
Encoding.UTF8.GetString(tmpText));
}
public override void Accept(INetPacketVisitor visitor)
{
visitor.VisitChatText(this);
}
public override byte[] ToByteArray()
{
throw new NotImplementedException();
}
}
}
+14
View File
@@ -358,6 +358,20 @@ namespace pokerth_lib
m_data.JoinedGame = false;
}
public void VisitChatText(NetPacket p)
{
uint playerId = Convert.ToUInt32(p.Properties[NetPacket.PropType.PlayerId]);
string name;
if (playerId == 0)
name = "(global notice)";
else
name = m_data.PlayerList.GetPlayerInfo(playerId).Name;
m_callback.ChatText(
name,
p.Properties[NetPacket.PropType.ChatText]);
}
public void VisitError(NetPacket p)
{
m_callback.Error(p.Properties[NetPacket.PropType.ErrorReason]);