mirror of
https://github.com/space-wizards/RobustToolbox.git
synced 2026-02-14 19:29:36 +01:00
Merging chat branch with rudimentary chat functionality
This commit is contained in:
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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" )]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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")]
|
||||
|
||||
48
SS3d_server/Modules/Chat/ChatManager.cs
Normal file
48
SS3d_server/Modules/Chat/ChatManager.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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")]
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user