initial commit
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
using System.Threading;
|
||||
using System.Windows.Forms;
|
||||
using Crysome.Common.Network;
|
||||
using Crysome.Common.Network.Packets;
|
||||
|
||||
namespace Crysome.Client.Handlers;
|
||||
|
||||
public static class ChatHandlers
|
||||
{
|
||||
private static CrysomeClient _client;
|
||||
|
||||
private static ChatForm _form;
|
||||
|
||||
private static Thread _uiThread;
|
||||
|
||||
private static readonly object _lock = new object();
|
||||
|
||||
public static void HandleChatMessage(CrysomeClient client, IPacket packet)
|
||||
{
|
||||
//IL_0001: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0007: Expected O, but got Unknown
|
||||
ChatMessagePacket val = (ChatMessagePacket)packet;
|
||||
if (string.IsNullOrEmpty(val.Message))
|
||||
{
|
||||
return;
|
||||
}
|
||||
_client = client;
|
||||
EnsureForm();
|
||||
try
|
||||
{
|
||||
_form?.AddMessage("Server", val.Message);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
internal static void OnFormClosed()
|
||||
{
|
||||
lock (_lock)
|
||||
{
|
||||
_form = null;
|
||||
}
|
||||
}
|
||||
|
||||
private static void EnsureForm()
|
||||
{
|
||||
lock (_lock)
|
||||
{
|
||||
if (_form == null || _form.IsDisposed)
|
||||
{
|
||||
_form = new ChatForm(SendToServer);
|
||||
_uiThread = new Thread((ThreadStart)delegate
|
||||
{
|
||||
Application.EnableVisualStyles();
|
||||
Application.SetCompatibleTextRenderingDefault(defaultValue: false);
|
||||
Application.Run(_form);
|
||||
})
|
||||
{
|
||||
IsBackground = true
|
||||
};
|
||||
_uiThread.SetApartmentState(ApartmentState.STA);
|
||||
_uiThread.Start();
|
||||
while (_form == null || !_form.IsHandleCreated)
|
||||
{
|
||||
Thread.Sleep(50);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static void SendToServer(string msg)
|
||||
{
|
||||
//IL_0019: Unknown result type (might be due to invalid IL or missing references)
|
||||
//IL_0023: Expected O, but got Unknown
|
||||
try
|
||||
{
|
||||
CrysomeClient client = _client;
|
||||
if (client != null && client.IsConnected)
|
||||
{
|
||||
_client.SendPacket((IPacket)new ChatMessagePacket(msg));
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user