mirror of
https://github.com/LBPUnion/ProjectLighthouse.git
synced 2025-05-05 18:22:27 +00:00
Add platform matching to rooms
This commit is contained in:
parent
3f29934628
commit
41dde8eed2
6 changed files with 18 additions and 12 deletions
|
@ -141,7 +141,7 @@ public class LoginController : ControllerBase
|
||||||
await this.database.SaveChangesAsync();
|
await this.database.SaveChangesAsync();
|
||||||
|
|
||||||
// Create a new room on LBP2/3/Vita
|
// Create a new room on LBP2/3/Vita
|
||||||
if (token.GameVersion != GameVersion.LittleBigPlanet1) RoomHelper.CreateRoom(user, token.GameVersion);
|
if (token.GameVersion != GameVersion.LittleBigPlanet1) RoomHelper.CreateRoom(user, token.GameVersion, token.Platform);
|
||||||
|
|
||||||
return this.Ok
|
return this.Ok
|
||||||
(
|
(
|
||||||
|
|
|
@ -81,7 +81,7 @@ public class MatchController : ControllerBase
|
||||||
if (matchData is UpdateMyPlayerData playerData)
|
if (matchData is UpdateMyPlayerData playerData)
|
||||||
{
|
{
|
||||||
MatchHelper.SetUserLocation(user.UserId, gameToken.UserLocation);
|
MatchHelper.SetUserLocation(user.UserId, gameToken.UserLocation);
|
||||||
Room? room = RoomHelper.FindRoomByUser(user, gameToken.GameVersion, true);
|
Room? room = RoomHelper.FindRoomByUser(user, gameToken.GameVersion, gameToken.Platform, true);
|
||||||
|
|
||||||
if (playerData.RoomState != null)
|
if (playerData.RoomState != null)
|
||||||
if (room != null && Equals(room.Host, user))
|
if (room != null && Equals(room.Host, user))
|
||||||
|
@ -90,7 +90,7 @@ public class MatchController : ControllerBase
|
||||||
|
|
||||||
if (matchData is FindBestRoom && MatchHelper.UserLocations.Count > 1)
|
if (matchData is FindBestRoom && MatchHelper.UserLocations.Count > 1)
|
||||||
{
|
{
|
||||||
FindBestRoomResponse? response = RoomHelper.FindBestRoom(user, gameToken.GameVersion, gameToken.UserLocation);
|
FindBestRoomResponse? response = RoomHelper.FindBestRoom(user, gameToken.GameVersion, gameToken.Platform, gameToken.UserLocation);
|
||||||
|
|
||||||
if (response == null) return this.NotFound();
|
if (response == null) return this.NotFound();
|
||||||
|
|
||||||
|
@ -112,7 +112,7 @@ public class MatchController : ControllerBase
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create a new one as requested
|
// Create a new one as requested
|
||||||
RoomHelper.CreateRoom(users, gameToken.GameVersion, createRoom.RoomSlot);
|
RoomHelper.CreateRoom(users, gameToken.GameVersion, gameToken.Platform, createRoom.RoomSlot);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (matchData is UpdatePlayersInRoom updatePlayersInRoom)
|
if (matchData is UpdatePlayersInRoom updatePlayersInRoom)
|
||||||
|
|
|
@ -26,7 +26,7 @@ public class RoomVisualizerController : ControllerBase
|
||||||
return this.NotFound();
|
return this.NotFound();
|
||||||
#else
|
#else
|
||||||
List<User> users = await this.database.Users.OrderByDescending(_ => EF.Functions.Random()).Take(2).ToListAsync();
|
List<User> users = await this.database.Users.OrderByDescending(_ => EF.Functions.Random()).Take(2).ToListAsync();
|
||||||
RoomHelper.CreateRoom(users, GameVersion.LittleBigPlanet2);
|
RoomHelper.CreateRoom(users, GameVersion.LittleBigPlanet2, Platform.PS3);
|
||||||
|
|
||||||
foreach (User user in users)
|
foreach (User user in users)
|
||||||
{
|
{
|
||||||
|
|
|
@ -42,7 +42,7 @@ public class RoomHelper
|
||||||
|
|
||||||
internal static int RoomIdIncrement => roomIdIncrement++;
|
internal static int RoomIdIncrement => roomIdIncrement++;
|
||||||
|
|
||||||
public static FindBestRoomResponse? FindBestRoom(User? user, GameVersion roomVersion, string? location)
|
public static FindBestRoomResponse? FindBestRoom(User? user, GameVersion roomVersion, Platform? platform, string? location)
|
||||||
{
|
{
|
||||||
if (roomVersion == GameVersion.LittleBigPlanet1 || roomVersion == GameVersion.LittleBigPlanetPSP)
|
if (roomVersion == GameVersion.LittleBigPlanet1 || roomVersion == GameVersion.LittleBigPlanetPSP)
|
||||||
{
|
{
|
||||||
|
@ -60,6 +60,7 @@ public class RoomHelper
|
||||||
}
|
}
|
||||||
|
|
||||||
rooms = rooms.Where(r => r.RoomVersion == roomVersion).ToList();
|
rooms = rooms.Where(r => r.RoomVersion == roomVersion).ToList();
|
||||||
|
if (platform != null) rooms = rooms.Where(r => r.RoomPlatform == platform).ToList();
|
||||||
|
|
||||||
foreach (Room room in rooms)
|
foreach (Room room in rooms)
|
||||||
// Look for rooms looking for players before moving on to rooms that are idle.
|
// Look for rooms looking for players before moving on to rooms that are idle.
|
||||||
|
@ -133,7 +134,7 @@ public class RoomHelper
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Room CreateRoom(User user, GameVersion roomVersion, RoomSlot? slot = null)
|
public static Room CreateRoom(User user, GameVersion roomVersion, Platform roomPlatform, RoomSlot? slot = null)
|
||||||
=> CreateRoom
|
=> CreateRoom
|
||||||
(
|
(
|
||||||
new List<User>
|
new List<User>
|
||||||
|
@ -141,9 +142,10 @@ public class RoomHelper
|
||||||
user,
|
user,
|
||||||
},
|
},
|
||||||
roomVersion,
|
roomVersion,
|
||||||
|
roomPlatform,
|
||||||
slot
|
slot
|
||||||
);
|
);
|
||||||
public static Room CreateRoom(List<User> users, GameVersion roomVersion, RoomSlot? slot = null)
|
public static Room CreateRoom(List<User> users, GameVersion roomVersion, Platform roomPlatform, RoomSlot? slot = null)
|
||||||
{
|
{
|
||||||
Room room = new()
|
Room room = new()
|
||||||
{
|
{
|
||||||
|
@ -152,6 +154,7 @@ public class RoomHelper
|
||||||
State = RoomState.Idle,
|
State = RoomState.Idle,
|
||||||
Slot = slot ?? PodSlot,
|
Slot = slot ?? PodSlot,
|
||||||
RoomVersion = roomVersion,
|
RoomVersion = roomVersion,
|
||||||
|
RoomPlatform = roomPlatform,
|
||||||
};
|
};
|
||||||
|
|
||||||
CleanupRooms(room.Host, room);
|
CleanupRooms(room.Host, room);
|
||||||
|
@ -161,13 +164,13 @@ public class RoomHelper
|
||||||
return room;
|
return room;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Room? FindRoomByUser(User user, GameVersion roomVersion, bool createIfDoesNotExist = false)
|
public static Room? FindRoomByUser(User user, GameVersion roomVersion, Platform roomPlatform, bool createIfDoesNotExist = false)
|
||||||
{
|
{
|
||||||
lock(Rooms)
|
lock(Rooms)
|
||||||
foreach (Room room in Rooms.Where(room => room.Players.Any(player => user == player)))
|
foreach (Room room in Rooms.Where(room => room.Players.Any(player => user == player)))
|
||||||
return room;
|
return room;
|
||||||
|
|
||||||
return createIfDoesNotExist ? CreateRoom(user, roomVersion) : null;
|
return createIfDoesNotExist ? CreateRoom(user, roomVersion, roomPlatform) : null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Room? FindRoomByUserId(int userId)
|
public static Room? FindRoomByUserId(int userId)
|
||||||
|
|
|
@ -52,7 +52,7 @@
|
||||||
{
|
{
|
||||||
if (version == GameVersion.LittleBigPlanet1 || version == GameVersion.LittleBigPlanetPSP || version == GameVersion.Unknown) continue;
|
if (version == GameVersion.LittleBigPlanet1 || version == GameVersion.LittleBigPlanetPSP || version == GameVersion.Unknown) continue;
|
||||||
|
|
||||||
FindBestRoomResponse? response = RoomHelper.FindBestRoom(null, version, null);
|
FindBestRoomResponse? response = RoomHelper.FindBestRoom(null, version, null, null);
|
||||||
string text = response == null ? "No room found." : "Room " + response.RoomId;
|
string text = response == null ? "No room found." : "Room " + response.RoomId;
|
||||||
|
|
||||||
<p><b>Best room for @version.ToPrettyString()</b>: @text</p>
|
<p><b>Best room for @version.ToPrettyString()</b>: @text</p>
|
||||||
|
@ -72,7 +72,7 @@
|
||||||
<b>You are currently in this room.</b>
|
<b>You are currently in this room.</b>
|
||||||
</p>
|
</p>
|
||||||
}
|
}
|
||||||
<p>@room.Players.Count players, state is @room.State, version is @room.RoomVersion.ToPrettyString()</p>
|
<p>@room.Players.Count players, state is @room.State, version is @room.RoomVersion.ToPrettyString()on paltform @room.RoomPlatform</p>
|
||||||
<p>Slot type: @room.Slot.SlotType, slot id: @room.Slot.SlotId</p>
|
<p>Slot type: @room.Slot.SlotType, slot id: @room.Slot.SlotId</p>
|
||||||
@foreach (User player in room.Players)
|
@foreach (User player in room.Players)
|
||||||
{
|
{
|
||||||
|
|
|
@ -15,6 +15,9 @@ public class Room
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public GameVersion RoomVersion { get; set; }
|
public GameVersion RoomVersion { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public Platform RoomPlatform { get; set; }
|
||||||
|
|
||||||
public RoomSlot Slot { get; set; }
|
public RoomSlot Slot { get; set; }
|
||||||
public RoomState State { get; set; }
|
public RoomState State { get; set; }
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue