mirror of
https://github.com/osukey/osukey.git
synced 2025-05-29 17:37:23 +09:00
Automate picks and bans from IPC
This commit is contained in:
parent
5c84c3c0a8
commit
5da6f11a14
@ -7,10 +7,12 @@ using osu.Framework.Configuration;
|
|||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
using osu.Framework.Graphics.Containers;
|
using osu.Framework.Graphics.Containers;
|
||||||
using osu.Framework.Input.Events;
|
using osu.Framework.Input.Events;
|
||||||
|
using osu.Game.Beatmaps;
|
||||||
using osu.Game.Graphics.Sprites;
|
using osu.Game.Graphics.Sprites;
|
||||||
using osu.Game.Graphics.UserInterface;
|
using osu.Game.Graphics.UserInterface;
|
||||||
using osu.Game.Screens;
|
using osu.Game.Screens;
|
||||||
using osu.Game.Tournament.Components;
|
using osu.Game.Tournament.Components;
|
||||||
|
using osu.Game.Tournament.IPC;
|
||||||
using osu.Game.Tournament.Screens.Ladder.Components;
|
using osu.Game.Tournament.Screens.Ladder.Components;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Input;
|
using OpenTK.Input;
|
||||||
@ -23,6 +25,14 @@ namespace osu.Game.Tournament.Screens.MapPool
|
|||||||
|
|
||||||
private readonly Bindable<MatchPairing> currentMatch = new Bindable<MatchPairing>();
|
private readonly Bindable<MatchPairing> currentMatch = new Bindable<MatchPairing>();
|
||||||
|
|
||||||
|
private TeamColour pickColour;
|
||||||
|
private ChoiceType pickType;
|
||||||
|
|
||||||
|
private readonly TriangleButton buttonRedBan;
|
||||||
|
private readonly TriangleButton buttonBlueBan;
|
||||||
|
private readonly TriangleButton buttonRedPick;
|
||||||
|
private readonly TriangleButton buttonBluePick;
|
||||||
|
|
||||||
public MapPoolScreen()
|
public MapPoolScreen()
|
||||||
{
|
{
|
||||||
InternalChildren = new Drawable[]
|
InternalChildren = new Drawable[]
|
||||||
@ -71,13 +81,20 @@ namespace osu.Game.Tournament.Screens.MapPool
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private TeamColour pickColour;
|
[BackgroundDependencyLoader]
|
||||||
private ChoiceType pickType;
|
private void load(LadderInfo ladder, FileBasedIPC ipc)
|
||||||
|
{
|
||||||
|
currentMatch.BindValueChanged(matchChanged);
|
||||||
|
currentMatch.BindTo(ladder.CurrentMatch);
|
||||||
|
|
||||||
private readonly TriangleButton buttonRedBan;
|
ipc.Beatmap.BindValueChanged(beatmapChanged);
|
||||||
private readonly TriangleButton buttonBlueBan;
|
}
|
||||||
private readonly TriangleButton buttonRedPick;
|
|
||||||
private readonly TriangleButton buttonBluePick;
|
private void beatmapChanged(BeatmapInfo beatmap)
|
||||||
|
{
|
||||||
|
if (beatmap.OnlineBeatmapID != null)
|
||||||
|
addForBeatmap(beatmap.OnlineBeatmapID.Value);
|
||||||
|
}
|
||||||
|
|
||||||
private void setMode(TeamColour colour, ChoiceType choiceType)
|
private void setMode(TeamColour colour, ChoiceType choiceType)
|
||||||
{
|
{
|
||||||
@ -106,17 +123,8 @@ namespace osu.Game.Tournament.Screens.MapPool
|
|||||||
var map = maps.FirstOrDefault(m => m.ReceivePositionalInputAt(e.ScreenSpaceMousePosition));
|
var map = maps.FirstOrDefault(m => m.ReceivePositionalInputAt(e.ScreenSpaceMousePosition));
|
||||||
if (map != null)
|
if (map != null)
|
||||||
{
|
{
|
||||||
if (e.Button == MouseButton.Left)
|
if (e.Button == MouseButton.Left && map.Beatmap.OnlineBeatmapID != null)
|
||||||
{
|
addForBeatmap(map.Beatmap.OnlineBeatmapID.Value);
|
||||||
currentMatch.Value.PicksBans.Add(new BeatmapChoice
|
|
||||||
{
|
|
||||||
Team = pickColour,
|
|
||||||
Type = pickType,
|
|
||||||
BeatmapID = map.Beatmap.OnlineBeatmapID ?? -1
|
|
||||||
});
|
|
||||||
|
|
||||||
setNextMode();
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
var existing = currentMatch.Value.PicksBans.FirstOrDefault(p => p.BeatmapID == map.Beatmap.OnlineBeatmapID);
|
var existing = currentMatch.Value.PicksBans.FirstOrDefault(p => p.BeatmapID == map.Beatmap.OnlineBeatmapID);
|
||||||
@ -133,11 +141,24 @@ namespace osu.Game.Tournament.Screens.MapPool
|
|||||||
return base.OnMouseDown(e);
|
return base.OnMouseDown(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
private void addForBeatmap(int beatmapId)
|
||||||
private void load(LadderInfo ladder)
|
|
||||||
{
|
{
|
||||||
currentMatch.BindValueChanged(matchChanged);
|
if (currentMatch.Value.Grouping.Value.Beatmaps.All(b => b.BeatmapInfo.OnlineBeatmapID != beatmapId))
|
||||||
currentMatch.BindTo(ladder.CurrentMatch);
|
// don't attempt to add if the beatmap isn't in our pool
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (currentMatch.Value.PicksBans.Any(p => p.BeatmapID == beatmapId))
|
||||||
|
// don't attempt to add if already exists.
|
||||||
|
return;
|
||||||
|
|
||||||
|
currentMatch.Value.PicksBans.Add(new BeatmapChoice
|
||||||
|
{
|
||||||
|
Team = pickColour,
|
||||||
|
Type = pickType,
|
||||||
|
BeatmapID = beatmapId
|
||||||
|
});
|
||||||
|
|
||||||
|
setNextMode();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void matchChanged(MatchPairing match)
|
private void matchChanged(MatchPairing match)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user