-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Packets 22 and 150 - Game Servers By ID - All (#45)
* Preliminary adding, it reads and sends as it should but no real data is sent, just enough to satisfy xfire awaiting something. * This packet deals with fetching all game server information based on Game ID. Added Inbound Packet GameServerFetchAll (22) ! This one sends a numerical attribute name. * It only expects a gameid. From there the server sends back GameServerSendAll packet. Added Outbound Packet GameServerSendAll (150) * Three attributes are sent: gameid, a list of gameips and a list of gameports (both iterates in sync). ! All three attributes are numerical. * I have added as such for future addition: It makes the lists but doesn't populate them and sends back the GameId sent by the client. * In my testing of using a list of hardcoded localhost servers results using Quake 3 and Half-Life 1.5 proved to work, as the base xfire client comes with server query tools built in. XFireMessageType and XFireMessageTypeFactory adds the packets to the lists as needed. MessageSerializer's GetAttributeName now includes GameServerFetchAll as it recieves attributes that aren't strings. I should fix this eventually, as some packets use bytes and others use strings.
- Loading branch information
Showing
5 changed files
with
62 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
19 changes: 19 additions & 0 deletions
19
src/PFire.Core/Protocol/Messages/Inbound/GameServerFetchAll.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,19 @@ | ||
using PFire.Core.Protocol.Messages.Outbound; | ||
using PFire.Core.Session; | ||
using System.Threading.Tasks; | ||
|
||
namespace PFire.Core.Protocol.Messages.Inbound | ||
{ | ||
internal sealed class GameServerFetchAll : XFireMessage | ||
{ | ||
public GameServerFetchAll() : base(XFireMessageType.GameServerFetchAll) { } | ||
|
||
[XMessageField(0x21)] | ||
public int GameId { get; set; } | ||
|
||
public override async Task Process(IXFireClient context) | ||
{ | ||
await context.SendAndProcessMessage(new GameServerSendAll(GameId)); | ||
} | ||
} | ||
} |
39 changes: 39 additions & 0 deletions
39
src/PFire.Core/Protocol/Messages/Outbound/GameServerSendAll.cs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,39 @@ | ||
using System; | ||
using System.Collections.Generic; | ||
using System.IO; | ||
using System.Linq; | ||
using System.Net; | ||
using System.Threading.Tasks; | ||
using PFire.Core.Session; | ||
|
||
namespace PFire.Core.Protocol.Messages.Outbound | ||
{ | ||
internal sealed class GameServerSendAll : XFireMessage | ||
{ | ||
public GameServerSendAll(int gameId) : base(XFireMessageType.GameServerSendAll) | ||
{ | ||
GameId = gameId; | ||
GameIps = new List<int>(); | ||
GamePorts = new List<int>(); | ||
} | ||
|
||
[XMessageField(0x21)] | ||
public int GameId { get; set; } | ||
|
||
[XMessageField(0x22)] | ||
public List<int> GameIps { get; set; } | ||
|
||
[XMessageField(0x23)] | ||
public List<int> GamePorts { get; set; } | ||
|
||
public override Task Process(IXFireClient context) | ||
{ | ||
//TODO: Have a Database of IPs and Ports that is fetched by gameid | ||
// Send back the GameId sent | ||
// Iterate that into Ips and Ports (unsigned ints on both) | ||
// If no hits, send with empty List<int>s regardless, because the client expects a response. | ||
|
||
return Task.CompletedTask; | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters