Files
2026-07-23 18:21:43 -07:00

81 lines
2.6 KiB
C#

using LiteDB;
using static DeluxeBackend.Enums;
namespace DeluxeBackend.Models
{
public class RoomInstance
{
[BsonId]
public long Id { get; set; }
public required string PhotonRegion { get; set; } = "eu";
public required string PhotonRoom { get; set; }
public RoomInstanceType InstanceType { get; set; } = RoomInstanceType.Private;
[BsonRef("subrooms")]
public required SubRoom SubRoom { get; set; }
public long EventId { get; set; } = -1;
public string Name { get; set; } = string.Empty;
public bool Private { get; set; } = true;
public bool GameInProgress { get; set; } = false;
public MatchmakingPolicyType MatchmakingPolicy { get; set; } = MatchmakingPolicyType.Default;
public DateTime CreatedAt { get; set; } = DateTime.MinValue;
[BsonIgnore]
public Dictionary<string, object?> ToDictionary()
{
#pragma warning disable CS8601 // Possible null reference assignment.
Dictionary<string, object?> data = new()
{
["roomInstanceId"] = Id,
["roomId"] = SubRoom.Room.Id,
["subRoomId"] = SubRoom.Id,
["location"] = SubRoom.LocationId,
["roomInstanceType"] = (int)InstanceType,
["maxCapacity"] = SubRoom.MaxPlayers,
["isFull"] = false,
["isPrivate"] = Private,
["isInProgress"] = GameInProgress,
//["voiceServerId"] = "test-voice-5",
//["voiceAuthId"] = "",
["matchmakingPolicy"] = (int)MatchmakingPolicy
};
if (EventId != -1)
{
data["eventId"] = EventId;
}
string roomName = string.IsNullOrWhiteSpace(SubRoom.Room.Name)
? $"UnknownRoom-{SubRoom.Room.Id}"
: SubRoom.Room.Name;
string name = $"^{roomName}";
if (InstanceType == RoomInstanceType.Dormroom)
{
if (SubRoom.Room.Creator != null) {
if (string.IsNullOrEmpty(SubRoom.Room.Creator.Username))
{
name = $"Can't find room creator username :(";
}
else
{
name = $"@{SubRoom.Room.Creator.Username}'s Dorm";
}
}
else
{
name = $"Can't find room creator :(";
}
}
data["name"] = name;
return data;
#pragma warning restore CS8601
}
}
}