mirror of
https://github.com/ppy/osu.git
synced 2025-02-21 23:47:21 +08:00
Make Room.Category
non-bindable
This commit is contained in:
parent
8694f7e1cc
commit
bde7b8e610
@ -50,7 +50,7 @@ namespace osu.Game.Tests.Visual.DailyChallenge
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
EndDate = { Value = DateTimeOffset.Now.AddHours(12) },
|
EndDate = { Value = DateTimeOffset.Now.AddHours(12) },
|
||||||
Category = { Value = RoomCategory.DailyChallenge }
|
Category = RoomCategory.DailyChallenge
|
||||||
};
|
};
|
||||||
|
|
||||||
AddStep("add room", () => API.Perform(new CreateRoomRequest(room)));
|
AddStep("add room", () => API.Perform(new CreateRoomRequest(room)));
|
||||||
@ -73,7 +73,7 @@ namespace osu.Game.Tests.Visual.DailyChallenge
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
EndDate = { Value = DateTimeOffset.Now.AddHours(12) },
|
EndDate = { Value = DateTimeOffset.Now.AddHours(12) },
|
||||||
Category = { Value = RoomCategory.DailyChallenge }
|
Category = RoomCategory.DailyChallenge
|
||||||
};
|
};
|
||||||
|
|
||||||
AddStep("add room", () => API.Perform(new CreateRoomRequest(room)));
|
AddStep("add room", () => API.Perform(new CreateRoomRequest(room)));
|
||||||
@ -102,7 +102,7 @@ namespace osu.Game.Tests.Visual.DailyChallenge
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
EndDate = { Value = DateTimeOffset.Now.AddHours(12) },
|
EndDate = { Value = DateTimeOffset.Now.AddHours(12) },
|
||||||
Category = { Value = RoomCategory.DailyChallenge }
|
Category = RoomCategory.DailyChallenge
|
||||||
};
|
};
|
||||||
|
|
||||||
AddStep("add room", () => API.Perform(new CreateRoomRequest(room)));
|
AddStep("add room", () => API.Perform(new CreateRoomRequest(room)));
|
||||||
|
@ -80,7 +80,7 @@ namespace osu.Game.Tests.Visual.DailyChallenge
|
|||||||
},
|
},
|
||||||
StartDate = { Value = DateTimeOffset.Now },
|
StartDate = { Value = DateTimeOffset.Now },
|
||||||
EndDate = { Value = DateTimeOffset.Now.AddHours(24) },
|
EndDate = { Value = DateTimeOffset.Now.AddHours(24) },
|
||||||
Category = { Value = RoomCategory.DailyChallenge }
|
Category = RoomCategory.DailyChallenge
|
||||||
}));
|
}));
|
||||||
});
|
});
|
||||||
AddStep("signal client", () => metadataClient.DailyChallengeUpdated(new DailyChallengeInfo { RoomID = roomId }));
|
AddStep("signal client", () => metadataClient.DailyChallengeUpdated(new DailyChallengeInfo { RoomID = roomId }));
|
||||||
|
@ -110,13 +110,13 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
{
|
{
|
||||||
Name = "Spotlight room",
|
Name = "Spotlight room",
|
||||||
Status = { Value = new RoomStatusOpen() },
|
Status = { Value = new RoomStatusOpen() },
|
||||||
Category = { Value = RoomCategory.Spotlight },
|
Category = RoomCategory.Spotlight,
|
||||||
}),
|
}),
|
||||||
createLoungeRoom(new Room
|
createLoungeRoom(new Room
|
||||||
{
|
{
|
||||||
Name = "Featured artist room",
|
Name = "Featured artist room",
|
||||||
Status = { Value = new RoomStatusOpen() },
|
Status = { Value = new RoomStatusOpen() },
|
||||||
Category = { Value = RoomCategory.FeaturedArtist },
|
Category = RoomCategory.FeaturedArtist,
|
||||||
}),
|
}),
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -55,20 +55,20 @@ namespace osu.Game.Tests.Visual.Multiplayer
|
|||||||
AddAssert("has 5 rooms", () => container.Rooms.Count == 5);
|
AddAssert("has 5 rooms", () => container.Rooms.Count == 5);
|
||||||
|
|
||||||
AddAssert("all spotlights at top", () => container.Rooms
|
AddAssert("all spotlights at top", () => container.Rooms
|
||||||
.SkipWhile(r => r.Room.Category.Value == RoomCategory.Spotlight)
|
.SkipWhile(r => r.Room.Category == RoomCategory.Spotlight)
|
||||||
.All(r => r.Room.Category.Value == RoomCategory.Normal));
|
.All(r => r.Room.Category == RoomCategory.Normal));
|
||||||
|
|
||||||
AddStep("remove first room", () => RoomManager.RemoveRoom(RoomManager.Rooms.First(r => r.RoomID == 0)));
|
AddStep("remove first room", () => RoomManager.RemoveRoom(RoomManager.Rooms.First(r => r.RoomID == 0)));
|
||||||
AddAssert("has 4 rooms", () => container.Rooms.Count == 4);
|
AddAssert("has 4 rooms", () => container.Rooms.Count == 4);
|
||||||
AddAssert("first room removed", () => container.Rooms.All(r => r.Room.RoomID != 0));
|
AddAssert("first room removed", () => container.Rooms.All(r => r.Room.RoomID != 0));
|
||||||
|
|
||||||
AddStep("select first room", () => container.Rooms.First().TriggerClick());
|
AddStep("select first room", () => container.Rooms.First().TriggerClick());
|
||||||
AddAssert("first spotlight selected", () => checkRoomSelected(RoomManager.Rooms.First(r => r.Category.Value == RoomCategory.Spotlight)));
|
AddAssert("first spotlight selected", () => checkRoomSelected(RoomManager.Rooms.First(r => r.Category == RoomCategory.Spotlight)));
|
||||||
|
|
||||||
AddStep("remove last room", () => RoomManager.RemoveRoom(RoomManager.Rooms.MinBy(r => r.RoomID)));
|
AddStep("remove last room", () => RoomManager.RemoveRoom(RoomManager.Rooms.MinBy(r => r.RoomID)));
|
||||||
AddAssert("first spotlight still selected", () => checkRoomSelected(RoomManager.Rooms.First(r => r.Category.Value == RoomCategory.Spotlight)));
|
AddAssert("first spotlight still selected", () => checkRoomSelected(RoomManager.Rooms.First(r => r.Category == RoomCategory.Spotlight)));
|
||||||
|
|
||||||
AddStep("remove spotlight room", () => RoomManager.RemoveRoom(RoomManager.Rooms.Single(r => r.Category.Value == RoomCategory.Spotlight)));
|
AddStep("remove spotlight room", () => RoomManager.RemoveRoom(RoomManager.Rooms.Single(r => r.Category == RoomCategory.Spotlight)));
|
||||||
AddAssert("selection vacated", () => checkRoomSelected(null));
|
AddAssert("selection vacated", () => checkRoomSelected(null));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -39,12 +39,24 @@ namespace osu.Game.Online.Rooms
|
|||||||
set => SetField(ref name, value);
|
set => SetField(ref name, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The room host. Will be <c>null</c> while the room has not yet been created.
|
||||||
|
/// </summary>
|
||||||
public APIUser? Host
|
public APIUser? Host
|
||||||
{
|
{
|
||||||
get => host;
|
get => host;
|
||||||
set => SetField(ref host, value);
|
set => SetField(ref host, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// The room category.
|
||||||
|
/// </summary>
|
||||||
|
public RoomCategory Category
|
||||||
|
{
|
||||||
|
get => category;
|
||||||
|
set => SetField(ref category, value);
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Represents the current item selected within the room.
|
/// Represents the current item selected within the room.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@ -66,6 +78,10 @@ namespace osu.Game.Online.Rooms
|
|||||||
[JsonProperty("host")]
|
[JsonProperty("host")]
|
||||||
private APIUser? host;
|
private APIUser? host;
|
||||||
|
|
||||||
|
[JsonProperty("category")]
|
||||||
|
[JsonConverter(typeof(SnakeCaseStringEnumConverter))]
|
||||||
|
private RoomCategory category;
|
||||||
|
|
||||||
[JsonProperty("current_playlist_item")]
|
[JsonProperty("current_playlist_item")]
|
||||||
private PlaylistItem? currentPlaylistItem;
|
private PlaylistItem? currentPlaylistItem;
|
||||||
|
|
||||||
@ -85,18 +101,6 @@ namespace osu.Game.Online.Rooms
|
|||||||
[Cached]
|
[Cached]
|
||||||
public readonly Bindable<RoomDifficultyRange> DifficultyRange = new Bindable<RoomDifficultyRange>();
|
public readonly Bindable<RoomDifficultyRange> DifficultyRange = new Bindable<RoomDifficultyRange>();
|
||||||
|
|
||||||
[Cached]
|
|
||||||
public readonly Bindable<RoomCategory> Category = new Bindable<RoomCategory>();
|
|
||||||
|
|
||||||
// Todo: osu-framework bug (https://github.com/ppy/osu-framework/issues/4106)
|
|
||||||
[JsonProperty("category")]
|
|
||||||
[JsonConverter(typeof(SnakeCaseStringEnumConverter))]
|
|
||||||
private RoomCategory category
|
|
||||||
{
|
|
||||||
get => Category.Value;
|
|
||||||
set => Category.Value = value;
|
|
||||||
}
|
|
||||||
|
|
||||||
[Cached]
|
[Cached]
|
||||||
public readonly Bindable<int?> MaxAttempts = new Bindable<int?>();
|
public readonly Bindable<int?> MaxAttempts = new Bindable<int?>();
|
||||||
|
|
||||||
@ -220,7 +224,7 @@ namespace osu.Game.Online.Rooms
|
|||||||
RoomID = other.RoomID;
|
RoomID = other.RoomID;
|
||||||
Name = other.Name;
|
Name = other.Name;
|
||||||
|
|
||||||
Category.Value = other.Category.Value;
|
Category = other.Category;
|
||||||
|
|
||||||
if (other.Host != null && Host?.Id != other.Host.Id)
|
if (other.Host != null && Host?.Id != other.Host.Id)
|
||||||
Host = other.Host;
|
Host = other.Host;
|
||||||
|
@ -51,7 +51,7 @@ namespace osu.Game.Screens.OnlinePlay.Components
|
|||||||
|
|
||||||
req.Success += result =>
|
req.Success += result =>
|
||||||
{
|
{
|
||||||
result = result.Where(r => r.Category.Value != RoomCategory.DailyChallenge).ToList();
|
result = result.Where(r => r.Category != RoomCategory.DailyChallenge).ToList();
|
||||||
|
|
||||||
foreach (var existing in RoomManager.Rooms.ToArray())
|
foreach (var existing in RoomManager.Rooms.ToArray())
|
||||||
{
|
{
|
||||||
|
@ -1,8 +1,6 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
#nullable disable
|
|
||||||
|
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Bindables;
|
using osu.Framework.Bindables;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
@ -17,13 +15,13 @@ namespace osu.Game.Screens.OnlinePlay.Components
|
|||||||
private readonly double transitionDuration;
|
private readonly double transitionDuration;
|
||||||
|
|
||||||
[Resolved(typeof(Room), nameof(Room.Status))]
|
[Resolved(typeof(Room), nameof(Room.Status))]
|
||||||
private Bindable<RoomStatus> status { get; set; }
|
private Bindable<RoomStatus> status { get; set; } = null!;
|
||||||
|
|
||||||
[Resolved(typeof(Room), nameof(Room.Category))]
|
private readonly Room room;
|
||||||
private Bindable<RoomCategory> category { get; set; }
|
|
||||||
|
|
||||||
public StatusColouredContainer(double transitionDuration = 100)
|
public StatusColouredContainer(Room room, double transitionDuration = 100)
|
||||||
{
|
{
|
||||||
|
this.room = room;
|
||||||
this.transitionDuration = transitionDuration;
|
this.transitionDuration = transitionDuration;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -32,7 +30,7 @@ namespace osu.Game.Screens.OnlinePlay.Components
|
|||||||
{
|
{
|
||||||
status.BindValueChanged(s =>
|
status.BindValueChanged(s =>
|
||||||
{
|
{
|
||||||
this.FadeColour(colours.ForRoomCategory(category.Value) ?? s.NewValue.GetAppropriateColour(colours), transitionDuration);
|
this.FadeColour(colours.ForRoomCategory(room.Category) ?? s.NewValue.GetAppropriateColour(colours), transitionDuration);
|
||||||
}, true);
|
}, true);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -164,7 +164,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
Anchor = Anchor.CentreLeft,
|
Anchor = Anchor.CentreLeft,
|
||||||
Origin = Anchor.CentreLeft
|
Origin = Anchor.CentreLeft
|
||||||
},
|
},
|
||||||
specialCategoryPill = new RoomSpecialCategoryPill
|
specialCategoryPill = new RoomSpecialCategoryPill(Room)
|
||||||
{
|
{
|
||||||
Anchor = Anchor.CentreLeft,
|
Anchor = Anchor.CentreLeft,
|
||||||
Origin = Anchor.CentreLeft
|
Origin = Anchor.CentreLeft
|
||||||
@ -259,15 +259,6 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
|
|
||||||
wrapper.FadeInFromZero(200);
|
wrapper.FadeInFromZero(200);
|
||||||
|
|
||||||
roomCategory.BindTo(Room.Category);
|
|
||||||
roomCategory.BindValueChanged(c =>
|
|
||||||
{
|
|
||||||
if (c.NewValue > RoomCategory.Normal)
|
|
||||||
specialCategoryPill.Show();
|
|
||||||
else
|
|
||||||
specialCategoryPill.Hide();
|
|
||||||
}, true);
|
|
||||||
|
|
||||||
roomType.BindTo(Room.Type);
|
roomType.BindTo(Room.Type);
|
||||||
roomType.BindValueChanged(t =>
|
roomType.BindValueChanged(t =>
|
||||||
{
|
{
|
||||||
@ -278,6 +269,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
hasPassword.BindValueChanged(v => passwordIcon.Alpha = v.NewValue ? 1 : 0, true);
|
hasPassword.BindValueChanged(v => passwordIcon.Alpha = v.NewValue ? 1 : 0, true);
|
||||||
|
|
||||||
updateRoomName();
|
updateRoomName();
|
||||||
|
updateRoomCategory();
|
||||||
};
|
};
|
||||||
|
|
||||||
SelectedItem.BindValueChanged(item => background.Beatmap.Value = item.NewValue?.Beatmap, true);
|
SelectedItem.BindValueChanged(item => background.Beatmap.Value = item.NewValue?.Beatmap, true);
|
||||||
@ -285,8 +277,16 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
|
|
||||||
private void onRoomPropertyChanged(object? sender, PropertyChangedEventArgs e)
|
private void onRoomPropertyChanged(object? sender, PropertyChangedEventArgs e)
|
||||||
{
|
{
|
||||||
if (e.PropertyName == nameof(Room.Name))
|
switch (e.PropertyName)
|
||||||
updateRoomName();
|
{
|
||||||
|
case nameof(Room.Name):
|
||||||
|
updateRoomName();
|
||||||
|
break;
|
||||||
|
|
||||||
|
case nameof(Room.Category):
|
||||||
|
updateRoomCategory();
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateRoomName()
|
private void updateRoomName()
|
||||||
@ -295,6 +295,14 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
roomName.Text = Room.Name;
|
roomName.Text = Room.Name;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateRoomCategory()
|
||||||
|
{
|
||||||
|
if (Room.Category > RoomCategory.Normal)
|
||||||
|
specialCategoryPill?.Show();
|
||||||
|
else
|
||||||
|
specialCategoryPill?.Hide();
|
||||||
|
}
|
||||||
|
|
||||||
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
protected override IReadOnlyDependencyContainer CreateChildDependencies(IReadOnlyDependencyContainer parent)
|
||||||
{
|
{
|
||||||
return new CachedModelDependencyContainer<Room>(base.CreateChildDependencies(parent))
|
return new CachedModelDependencyContainer<Room>(base.CreateChildDependencies(parent))
|
||||||
|
@ -1,21 +1,30 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
|
using System.ComponentModel;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Extensions;
|
using osu.Framework.Extensions;
|
||||||
using osu.Framework.Graphics.Sprites;
|
using osu.Framework.Graphics.Sprites;
|
||||||
using osu.Game.Graphics;
|
using osu.Game.Graphics;
|
||||||
|
using osu.Game.Online.Rooms;
|
||||||
using osuTK.Graphics;
|
using osuTK.Graphics;
|
||||||
|
|
||||||
namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
||||||
{
|
{
|
||||||
public partial class RoomSpecialCategoryPill : OnlinePlayPill
|
public partial class RoomSpecialCategoryPill : OnlinePlayPill
|
||||||
{
|
{
|
||||||
|
private readonly Room room;
|
||||||
|
|
||||||
[Resolved]
|
[Resolved]
|
||||||
private OsuColour colours { get; set; } = null!;
|
private OsuColour colours { get; set; } = null!;
|
||||||
|
|
||||||
protected override FontUsage Font => base.Font.With(weight: FontWeight.SemiBold);
|
protected override FontUsage Font => base.Font.With(weight: FontWeight.SemiBold);
|
||||||
|
|
||||||
|
public RoomSpecialCategoryPill(Room room)
|
||||||
|
{
|
||||||
|
this.room = room;
|
||||||
|
}
|
||||||
|
|
||||||
protected override void LoadComplete()
|
protected override void LoadComplete()
|
||||||
{
|
{
|
||||||
base.LoadComplete();
|
base.LoadComplete();
|
||||||
@ -23,11 +32,26 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
Pill.Background.Alpha = 1;
|
Pill.Background.Alpha = 1;
|
||||||
TextFlow.Colour = Color4.Black;
|
TextFlow.Colour = Color4.Black;
|
||||||
|
|
||||||
Category.BindValueChanged(c =>
|
room.PropertyChanged += onRoomPropertyChanged;
|
||||||
{
|
updateRoomCategory();
|
||||||
TextFlow.Text = c.NewValue.GetLocalisableDescription();
|
}
|
||||||
Pill.Background.Colour = colours.ForRoomCategory(c.NewValue) ?? colours.Pink;
|
|
||||||
}, true);
|
private void onRoomPropertyChanged(object? sender, PropertyChangedEventArgs e)
|
||||||
|
{
|
||||||
|
if (e.PropertyName == nameof(Room.Category))
|
||||||
|
updateRoomCategory();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void updateRoomCategory()
|
||||||
|
{
|
||||||
|
TextFlow.Text = room.Category.GetLocalisableDescription();
|
||||||
|
Pill.Background.Colour = colours.ForRoomCategory(room.Category) ?? colours.Pink;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override void Dispose(bool isDisposing)
|
||||||
|
{
|
||||||
|
base.Dispose(isDisposing);
|
||||||
|
room.PropertyChanged -= onRoomPropertyChanged;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -169,7 +169,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge.Components
|
|||||||
{
|
{
|
||||||
foreach (var room in roomFlow)
|
foreach (var room in roomFlow)
|
||||||
{
|
{
|
||||||
roomFlow.SetLayoutPosition(room, room.Room.Category.Value > RoomCategory.Normal
|
roomFlow.SetLayoutPosition(room, room.Room.Category > RoomCategory.Normal
|
||||||
// Always show spotlight playlists at the top of the listing.
|
// Always show spotlight playlists at the top of the listing.
|
||||||
? float.MinValue
|
? float.MinValue
|
||||||
: -(room.Room.RoomID ?? 0));
|
: -(room.Room.RoomID ?? 0));
|
||||||
|
@ -66,7 +66,7 @@ namespace osu.Game.Screens.OnlinePlay.Lounge
|
|||||||
|
|
||||||
AddRangeInternal(new Drawable[]
|
AddRangeInternal(new Drawable[]
|
||||||
{
|
{
|
||||||
new StatusColouredContainer(transition_duration)
|
new StatusColouredContainer(Room, transition_duration)
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Child = selectionBox = new Container
|
Child = selectionBox = new Container
|
||||||
|
@ -31,9 +31,6 @@ namespace osu.Game.Screens.OnlinePlay
|
|||||||
[Resolved(typeof(Room))]
|
[Resolved(typeof(Room))]
|
||||||
protected Bindable<Room.RoomDifficultyRange> DifficultyRange { get; private set; } = null!;
|
protected Bindable<Room.RoomDifficultyRange> DifficultyRange { get; private set; } = null!;
|
||||||
|
|
||||||
[Resolved(typeof(Room))]
|
|
||||||
protected Bindable<RoomCategory> Category { get; private set; } = null!;
|
|
||||||
|
|
||||||
[Resolved(typeof(Room))]
|
[Resolved(typeof(Room))]
|
||||||
protected BindableList<APIUser> RecentParticipants { get; private set; } = null!;
|
protected BindableList<APIUser> RecentParticipants { get; private set; } = null!;
|
||||||
|
|
||||||
|
@ -35,7 +35,7 @@ namespace osu.Game.Tests.Visual.OnlinePlay
|
|||||||
Name = $@"Room {currentRoomId}",
|
Name = $@"Room {currentRoomId}",
|
||||||
Host = new APIUser { Username = @"Host" },
|
Host = new APIUser { Username = @"Host" },
|
||||||
EndDate = { Value = DateTimeOffset.Now + TimeSpan.FromSeconds(10) },
|
EndDate = { Value = DateTimeOffset.Now + TimeSpan.FromSeconds(10) },
|
||||||
Category = { Value = withSpotlightRooms && i % 2 == 0 ? RoomCategory.Spotlight : RoomCategory.Normal },
|
Category = withSpotlightRooms && i % 2 == 0 ? RoomCategory.Spotlight : RoomCategory.Normal,
|
||||||
};
|
};
|
||||||
|
|
||||||
if (withPassword)
|
if (withPassword)
|
||||||
|
Loading…
Reference in New Issue
Block a user