-
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 21 and 149 - Fetch Friend Favorite Game Server List (#46)
* 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 and Friend Favorites. Added Inbound Packet GameServerFetchFriendsFavorites (21) * It only expects a gameid. From there the server sends back GameServerSendFriendsFavorites packet. (Weirdly enough, this one uses the string "gameid" unlike the All packet.) Added Outbound Packet GameServerSendFriendsFavorites (149) * Four attributes are sent: gameid, a list of gameips and a list of gameports (both iterates in sync), list of a list of ints for FriendIds. * 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. * The FriendIds nested list is a weird one, only ever used again in FriendofFriends. I had to make a list of userids and then put it inside of FriendIds. I don't know why they designed it as such, as vanilla xfire doesn't use this information at all it seems... XFireMessageType and XFireMessageTypeFactory adds the packets to the lists as needed.
- Loading branch information
Showing
4 changed files
with
68 additions
and
0 deletions.
There are no files selected for viewing
19 changes: 19 additions & 0 deletions
19
src/PFire.Core/Protocol/Messages/Inbound/GameServerFetchFriendsFavorites.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 GameServerFetchFriendsFavorites : XFireMessage | ||
{ | ||
public GameServerFetchFriendsFavorites() : base(XFireMessageType.GameServerFetchFriendsFavorites) { } | ||
|
||
[XMessageField("gameid")] | ||
public int GameId { get; set; } | ||
|
||
public override async Task Process(IXFireClient context) | ||
{ | ||
await context.SendAndProcessMessage(new GameServerSendFriendsFavorites(GameId)); | ||
} | ||
} | ||
} |
46 changes: 46 additions & 0 deletions
46
src/PFire.Core/Protocol/Messages/Outbound/GameServerSendFriendsFavorites.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,46 @@ | ||
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 GameServerSendFriendsFavorites : XFireMessage | ||
{ | ||
public GameServerSendFriendsFavorites(int gameId) : base(XFireMessageType.GameServerSendFriendsFavorites) | ||
{ | ||
GameId = gameId; | ||
GameIps = new List<int>(); | ||
GamePorts = new List<int>(); | ||
FriendIds = new List<List<int>>(); | ||
} | ||
|
||
[XMessageField("gameid")] | ||
public int GameId { get; set; } | ||
|
||
[XMessageField("gip")] | ||
public List<int> GameIps { get; set; } | ||
|
||
[XMessageField("gport")] | ||
public List<int> GamePorts { get; set; } | ||
|
||
[XMessageField("friends")] | ||
public List<List<int>> FriendIds { get; set; } | ||
|
||
public override Task Process(IXFireClient context) | ||
{ | ||
//TODO: Have a Database of IPs and Ports, with a user id who favorited it that is fetched by gameid | ||
// Probably reads from the favorites database based on userid and gameid. | ||
// | ||
// You will need to start off processing with making a new temporary List<int> to put inside of FriendIds to satisfy the nested list need, this will hold the userid who favorited the server. | ||
// Start off with sending back the GameId sent | ||
// Iterate that list of favorites into Ips and Ports (unsigned ints on both) and your new userid List<List> | ||
// If no hits, send GameIps and GamePorts with empty List<int>s, for FriendIds send back an empty List<List<int>> 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