This commit is contained in:
Ray Koopa 2019-01-21 20:09:53 +01:00
parent e4104b8309
commit cc84ed3d5f
9 changed files with 84 additions and 8 deletions

View File

@ -11,8 +11,11 @@ namespace Syroot.Worms.Mgame.GameServer
{ {
switch (packet.Data) switch (packet.Data)
{ {
case StartSingleGameQueryData startSingleGameQuery: case StartSingleGameQueryData startSingleGame:
HandleWwpaChannelCmdStartGame(startSingleGameQuery); HandleWwpaChannelCmdStartGame(startSingleGame);
break;
case Unknown6QueryData unknown6:
HandleWwpaChannelCmdUnknown6(unknown6);
break; break;
} }
} }
@ -75,5 +78,13 @@ namespace Syroot.Worms.Mgame.GameServer
} }
})); }));
} }
private void HandleWwpaChannelCmdUnknown6(Unknown6QueryData unknown6)
{
SendPacket(new CmdReply(new Unknown6ReplyData
{
Result = Unknown6Status.Disconnect
}));
}
} }
} }

View File

@ -52,7 +52,8 @@ namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel
internal enum Cmd : int internal enum Cmd : int
{ {
StartSingleGameQuery = 5 StartSingleGameQuery = 5,
Unknown6 = 6
} }
internal interface ICmdData internal interface ICmdData

View File

@ -13,7 +13,8 @@ namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel
private static readonly Dictionary<Cmd, Type> _queryClasses = new Dictionary<Cmd, Type> private static readonly Dictionary<Cmd, Type> _queryClasses = new Dictionary<Cmd, Type>
{ {
[Cmd.StartSingleGameQuery] = typeof(StartSingleGameQueryData) [Cmd.StartSingleGameQuery] = typeof(StartSingleGameQueryData),
[Cmd.Unknown6] = typeof(Unknown6QueryData)
}; };
// ---- METHODS (PROTECTED) ------------------------------------------------------------------------------------ // ---- METHODS (PROTECTED) ------------------------------------------------------------------------------------

View File

@ -13,7 +13,8 @@ namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel
private static readonly Dictionary<Cmd, Type> _replyClasses = new Dictionary<Cmd, Type> private static readonly Dictionary<Cmd, Type> _replyClasses = new Dictionary<Cmd, Type>
{ {
[Cmd.StartSingleGameQuery] = typeof(StartSingleGameReplyData) [Cmd.StartSingleGameQuery] = typeof(StartSingleGameReplyData),
[Cmd.Unknown6] = typeof(Unknown6ReplyData)
}; };
// ---- CONSTRUCTORS & DESTRUCTOR ------------------------------------------------------------------------------ // ---- CONSTRUCTORS & DESTRUCTOR ------------------------------------------------------------------------------

View File

@ -3,7 +3,7 @@
namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel
{ {
/// <summary> /// <summary>
/// Represents the <see cref="ChannelCmdQuery"/> client request for a <see cref="StartSingleGameReplyData"/>. /// Represents the <see cref="CmdQuery"/> client request for a <see cref="StartSingleGameReplyData"/>.
/// </summary> /// </summary>
internal class StartSingleGameQueryData : ICmdData internal class StartSingleGameQueryData : ICmdData
{ {

View File

@ -5,7 +5,7 @@ using Syroot.BinaryData.Memory;
namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel
{ {
/// <summary> /// <summary>
/// Represents the <see cref="ChannelCmdQuery"/> server response to a <see cref="StartSingleGameQueryData"/>. /// Represents the <see cref="CmdQuery"/> server response to a <see cref="StartSingleGameQueryData"/>.
/// </summary> /// </summary>
internal class StartSingleGameReplyData : ICmdData internal class StartSingleGameReplyData : ICmdData
{ {

View File

@ -0,0 +1,27 @@
using System.Net;
using Syroot.BinaryData.Memory;
namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel
{
/// <summary>
/// Represents the <see cref="ChannelCmdQuery"/> client request for a <see cref="Unknown6ReplyData"/>.
/// </summary>
internal class Unknown6QueryData : ICmdData
{
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
public int UnknownA { get; set; } // Always 1
public IPAddress ClientIP { get; set; }
// ---- METHODS (PUBLIC) ---------------------------------------------------------------------------------------
public void Load(ref SpanReader reader)
{
UnknownA = reader.ReadInt32();
ClientIP = IPAddress.Parse(reader.ReadString2());
}
public void Save(ref SpanWriter writer) { }
}
}

View File

@ -0,0 +1,35 @@
using System;
using Syroot.BinaryData.Memory;
namespace Syroot.Worms.Mgame.GameServer.Packets.WorldPartyAqua.Channel
{
/// <summary>
/// Represents the <see cref="CmdQuery"/> server response to a <see cref="Unknown6QueryData"/>.
/// </summary>
internal class Unknown6ReplyData : ICmdData
{
// ---- PROPERTIES ---------------------------------------------------------------------------------------------
public Unknown6Status Result { get; set; }
public ushort Port { get; set; } // Unknown2 = x + 6, Unknown3 = x
// ---- METHODS (PUBLIC) ---------------------------------------------------------------------------------------
public void Load(ref SpanReader reader) => throw new NotImplementedException();
public void Save(ref SpanWriter writer)
{
writer.WriteEnumSafe(Result);
if (Result != Unknown6Status.Disconnect)
writer.WriteUInt16(Port);
}
}
internal enum Unknown6Status : int
{
Unknown2 = 2,
Unknown3 = 3,
Disconnect = 4
}
}

View File

@ -1,7 +1,7 @@
namespace Syroot.Worms.Core namespace Syroot.Worms.Core
{ {
/// <summary> /// <summary>
/// Represents mathemtical helper utilities. /// Represents mathematical helper utilities.
/// </summary> /// </summary>
public static class Algebra public static class Algebra
{ {