mirror of
https://github.com/ppy/osu.git
synced 2024-12-15 12:42:54 +08:00
Add + set ended room status
This commit is contained in:
parent
bfbd7e5106
commit
1e71c5c9c4
@ -7,6 +7,7 @@ using NUnit.Framework;
|
|||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Game.Beatmaps;
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Online.Multiplayer;
|
using osu.Game.Online.Multiplayer;
|
||||||
|
using osu.Game.Online.Multiplayer.RoomStatuses;
|
||||||
using osu.Game.Rulesets;
|
using osu.Game.Rulesets;
|
||||||
using osu.Game.Screens.Multi.Match.Components;
|
using osu.Game.Screens.Multi.Match.Components;
|
||||||
|
|
||||||
|
50
osu.Game.Tests/Visual/TestCaseRoomStatus.cs
Normal file
50
osu.Game.Tests/Visual/TestCaseRoomStatus.cs
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using osu.Framework.Graphics;
|
||||||
|
using osu.Framework.Graphics.Containers;
|
||||||
|
using osu.Game.Online.Multiplayer;
|
||||||
|
using osu.Game.Online.Multiplayer.RoomStatuses;
|
||||||
|
using osu.Game.Screens.Multi.Lounge.Components;
|
||||||
|
|
||||||
|
namespace osu.Game.Tests.Visual
|
||||||
|
{
|
||||||
|
public class TestCaseRoomStatus : OsuTestCase
|
||||||
|
{
|
||||||
|
public override IReadOnlyList<Type> RequiredTypes => new[]
|
||||||
|
{
|
||||||
|
typeof(RoomStatusEnded),
|
||||||
|
typeof(RoomStatusOpen),
|
||||||
|
typeof(RoomStatusPlaying)
|
||||||
|
};
|
||||||
|
|
||||||
|
public TestCaseRoomStatus()
|
||||||
|
{
|
||||||
|
Child = new FillFlowContainer
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Width = 0.5f,
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new DrawableRoom(new Room
|
||||||
|
{
|
||||||
|
Name = { Value = "Room 1" },
|
||||||
|
Status = { Value = new RoomStatusOpen() }
|
||||||
|
}),
|
||||||
|
new DrawableRoom(new Room
|
||||||
|
{
|
||||||
|
Name = { Value = "Room 2" },
|
||||||
|
Status = { Value = new RoomStatusPlaying() }
|
||||||
|
}),
|
||||||
|
new DrawableRoom(new Room
|
||||||
|
{
|
||||||
|
Name = { Value = "Room 3" },
|
||||||
|
Status = { Value = new RoomStatusEnded() }
|
||||||
|
}),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -7,6 +7,7 @@ using System.Linq;
|
|||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using osu.Framework.Configuration;
|
using osu.Framework.Configuration;
|
||||||
using osu.Game.Online.Multiplayer.GameTypes;
|
using osu.Game.Online.Multiplayer.GameTypes;
|
||||||
|
using osu.Game.Online.Multiplayer.RoomStatuses;
|
||||||
using osu.Game.Users;
|
using osu.Game.Users;
|
||||||
|
|
||||||
namespace osu.Game.Online.Multiplayer
|
namespace osu.Game.Online.Multiplayer
|
||||||
@ -100,6 +101,9 @@ namespace osu.Game.Online.Multiplayer
|
|||||||
Participants.Value = other.Participants.Value.ToArray();
|
Participants.Value = other.Participants.Value.ToArray();
|
||||||
EndDate.Value = other.EndDate;
|
EndDate.Value = other.EndDate;
|
||||||
|
|
||||||
|
if (DateTimeOffset.Now >= EndDate.Value)
|
||||||
|
Status.Value = new RoomStatusEnded();
|
||||||
|
|
||||||
// Todo: Temporary, should only remove/add new items (requires framework changes)
|
// Todo: Temporary, should only remove/add new items (requires framework changes)
|
||||||
if (Playlist.Count == 0)
|
if (Playlist.Count == 0)
|
||||||
Playlist.AddRange(other.Playlist);
|
Playlist.AddRange(other.Playlist);
|
||||||
|
@ -11,16 +11,4 @@ namespace osu.Game.Online.Multiplayer
|
|||||||
public abstract string Message { get; }
|
public abstract string Message { get; }
|
||||||
public abstract Color4 GetAppropriateColour(OsuColour colours);
|
public abstract Color4 GetAppropriateColour(OsuColour colours);
|
||||||
}
|
}
|
||||||
|
|
||||||
public class RoomStatusOpen : RoomStatus
|
|
||||||
{
|
|
||||||
public override string Message => @"Welcoming Players";
|
|
||||||
public override Color4 GetAppropriateColour(OsuColour colours) => colours.GreenLight;
|
|
||||||
}
|
|
||||||
|
|
||||||
public class RoomStatusPlaying : RoomStatus
|
|
||||||
{
|
|
||||||
public override string Message => @"Now Playing";
|
|
||||||
public override Color4 GetAppropriateColour(OsuColour colours) => colours.Purple;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
14
osu.Game/Online/Multiplayer/RoomStatuses/RoomStatusEnded.cs
Normal file
14
osu.Game/Online/Multiplayer/RoomStatuses/RoomStatusEnded.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Graphics;
|
||||||
|
using osuTK.Graphics;
|
||||||
|
|
||||||
|
namespace osu.Game.Online.Multiplayer.RoomStatuses
|
||||||
|
{
|
||||||
|
public class RoomStatusEnded : RoomStatus
|
||||||
|
{
|
||||||
|
public override string Message => @"Ended";
|
||||||
|
public override Color4 GetAppropriateColour(OsuColour colours) => colours.YellowDarker;
|
||||||
|
}
|
||||||
|
}
|
14
osu.Game/Online/Multiplayer/RoomStatuses/RoomStatusOpen.cs
Normal file
14
osu.Game/Online/Multiplayer/RoomStatuses/RoomStatusOpen.cs
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Graphics;
|
||||||
|
using osuTK.Graphics;
|
||||||
|
|
||||||
|
namespace osu.Game.Online.Multiplayer.RoomStatuses
|
||||||
|
{
|
||||||
|
public class RoomStatusOpen : RoomStatus
|
||||||
|
{
|
||||||
|
public override string Message => @"Welcoming Players";
|
||||||
|
public override Color4 GetAppropriateColour(OsuColour colours) => colours.GreenLight;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,14 @@
|
|||||||
|
// Copyright (c) 2007-2018 ppy Pty Ltd <contact@ppy.sh>.
|
||||||
|
// Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
|
using osu.Game.Graphics;
|
||||||
|
using osuTK.Graphics;
|
||||||
|
|
||||||
|
namespace osu.Game.Online.Multiplayer.RoomStatuses
|
||||||
|
{
|
||||||
|
public class RoomStatusPlaying : RoomStatus
|
||||||
|
{
|
||||||
|
public override string Message => @"Now Playing";
|
||||||
|
public override Color4 GetAppropriateColour(OsuColour colours) => colours.Purple;
|
||||||
|
}
|
||||||
|
}
|
@ -155,7 +155,6 @@ namespace osu.Game.Screens.Multi
|
|||||||
foreach (var pi in remote.Playlist)
|
foreach (var pi in remote.Playlist)
|
||||||
pi.MapObjects(beatmaps, rulesets);
|
pi.MapObjects(beatmaps, rulesets);
|
||||||
|
|
||||||
if (local != remote)
|
|
||||||
local.CopyFrom(remote);
|
local.CopyFrom(remote);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user