Merging chat branch with rudimentary chat functionality

This commit is contained in:
spoogemonster
2011-05-15 16:29:20 +00:00
9 changed files with 111 additions and 12 deletions

View File

@@ -24,11 +24,8 @@ namespace SS3D.Modules.UI
get;
}
public TextBox chatTextbox
{
private set;
get;
}
public TextBox chatTextbox;
public GUI chatGUI
{
@@ -136,7 +133,7 @@ namespace SS3D.Modules.UI
chatGUI.ZOrder = 10;
}
void chatTextbox_Submit(object sender, ValueEventArgs<string> e)
public void chatTextbox_Submit(object sender, ValueEventArgs<string> e)
{
AddLine(e.Data);
}

View File

@@ -33,4 +33,4 @@ using System.Runtime.InteropServices;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion( "0.1.*" )]
[assembly: AssemblyFileVersion( "0.1.*" )]
[assembly: AssemblyFileVersion( "0.1" )]

View File

@@ -9,6 +9,7 @@ using SS3D.Modules.Map;
using SS3D.Modules.Items;
using SS3D.Modules.Mobs;
using SS3D.Modules.Network;
using SS3D.Modules.UI;
using SS3D_shared;
@@ -35,6 +36,9 @@ namespace SS3D.States
private ItemManager itemManager;
private MobManager mobManager;
private GUI guiGameScreen;
private Chatbox gameChat;
private ushort defaultChannel;
#region Mouse/Camera stuff
private DateTime lastRMBClick = DateTime.Now;
@@ -55,6 +59,8 @@ namespace SS3D.States
mEngine = _mgr.Engine;
mStateMgr = _mgr;
mEngine.mMiyagiSystem.GUIManager.DisposeAllGUIs();
map = new Map(mEngine);
itemManager = new ItemManager(mEngine, map, mEngine.mNetworkMgr);
mobManager = new MobManager(mEngine, map, mEngine.mNetworkMgr);
@@ -63,14 +69,24 @@ namespace SS3D.States
mEngine.mNetworkMgr.MessageArrived += new NetworkMsgHandler(mNetworkMgr_MessageArrived);
gameChat = new Chatbox("gameChat");
mEngine.mMiyagiSystem.GUIManager.GUIs.Add(gameChat.chatGUI);
gameChat.chatPanel.ResizeMode = Miyagi.UI.ResizeModes.None;
gameChat.chatPanel.Movable = false;
defaultChannel = 1;
gameChat.chatTextbox.Submit += new EventHandler<ValueEventArgs<string>>(chatTextbox_Submit);
gameChat.chatTextbox.Submit -= new EventHandler<ValueEventArgs<string>>(gameChat.chatTextbox_Submit);
mEngine.mNetworkMgr.SetMap(map);
mEngine.mNetworkMgr.RequestMap();
mEngine.mMiyagiSystem.GUIManager.DisposeAllGUIs();
return true;
}
private void SetUp()
{
mEngine.SceneMgr.ShadowTextureSelfShadow = true;
@@ -129,6 +145,9 @@ namespace SS3D.States
case NetMessage.SendMap:
RecieveMap(msg);
break;
case NetMessage.ChatMessage:
HandleChatMessage(msg);
break;
default:
break;
}
@@ -167,6 +186,31 @@ namespace SS3D.States
map.ChangeTile(x, z, newTile);
}
private void HandleChatMessage(NetIncomingMessage msg)
{
ushort channel = msg.ReadUInt16();
string text = msg.ReadString();
string message = "(" + channel.ToString() + "):" + text;
gameChat.AddLine(message);
}
private void SendChatMessage(string text)
{
NetOutgoingMessage message = mEngine.mNetworkMgr.netClient.CreateMessage();
message.Write((byte)NetMessage.ChatMessage);
message.Write(defaultChannel);
message.Write(text);
mEngine.mNetworkMgr.SendMessage(message, NetDeliveryMethod.ReliableUnordered);
}
void chatTextbox_Submit(object sender, ValueEventArgs<string> e)
{
SendChatMessage(e.Data);
}
#endregion
#region Input

View File

@@ -12,7 +12,8 @@ public enum NetMessage
SendMap,
ChangeTile,
ItemMessage, // It's something the item system needs to handle
MobMessage
MobMessage,
ChatMessage
}
public enum ItemMessage
@@ -39,4 +40,5 @@ public enum ClientStatus
{
Lobby = 0,
Game
}
}

View File

@@ -33,4 +33,4 @@ using System.Runtime.InteropServices;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.1.*")]
[assembly: AssemblyFileVersion("0.1.*")]
[assembly: AssemblyFileVersion("0.1")]

View File

@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Lidgren.Network;
using SS3D_shared;
using SS3D_shared.HelperClasses;
using SS3d_server.Modules.Mobs;
namespace SS3d_server.Modules.Chat
{
class ChatManager
{
private SS3DNetserver netServer;
private MobManager mobManager;
public ChatManager(SS3DNetserver _netServer, MobManager _mobManager)
{
netServer = _netServer;
}
public void HandleNetMessage(NetIncomingMessage message)
{
//Read the chat message and pass it on
ushort channel = message.ReadUInt16();
string text = message.ReadString();
string name = netServer.clientList[message.SenderConnection].playerName;
SendChatMessage(channel, text, name);
}
private void SendChatMessage(ushort channel, string text, string name)
{
string fullmsg = name + ": " + text;
NetOutgoingMessage message = netServer.netServer.CreateMessage();
message.Write((byte)NetMessage.ChatMessage);
message.Write(channel);
message.Write(fullmsg);
netServer.SendMessageToAll(message);
}
}
}

View File

@@ -33,4 +33,4 @@ using System.Runtime.InteropServices;
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("0.1.*")]
[assembly: AssemblyFileVersion("0.1.*")]
[assembly: AssemblyFileVersion("0.1")]

View File

@@ -7,6 +7,7 @@ using SS3d_server.Modules.Client;
using SS3d_server.Modules.Map;
using SS3d_server.Modules.Items;
using SS3d_server.Modules.Mobs;
using SS3d_server.Modules.Chat;
using Lidgren.Network;
using SS3D_shared;
@@ -21,6 +22,7 @@ namespace SS3d_server
Map map;
ItemManager itemManager;
MobManager mobManager;
ChatManager chatManager;
bool active = false;
@@ -42,6 +44,8 @@ namespace SS3d_server
itemManager = new ItemManager(this, map);
mobManager = new MobManager(this, map);
chatManager = new ChatManager(this, mobManager);
}
public bool Start()
@@ -246,6 +250,9 @@ namespace SS3d_server
case NetMessage.MobMessage:
mobManager.HandleNetMessage(msg);
break;
case NetMessage.ChatMessage:
chatManager.HandleNetMessage(msg);
break;
default:
break;
}

View File

@@ -82,6 +82,7 @@
</ItemGroup>
<ItemGroup>
<Compile Include="Helper Classes\Point.cs" />
<Compile Include="Modules\Chat\ChatManager.cs" />
<Compile Include="Modules\Client\Client.cs" />
<Compile Include="Modules\Items\ItemManager.cs" />
<Compile Include="Modules\Map\Map.cs" />