1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-19 15:23:22 +08:00
osu-lazer/osu.Game.Tournament/Screens/Drawings/Components/Group.cs

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

122 lines
3.1 KiB
C#
Raw Normal View History

// 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.
2018-04-13 17:19:50 +08:00
2022-06-17 15:37:17 +08:00
#nullable disable
2017-03-03 19:27:53 +08:00
using System.Collections.Generic;
using System.Linq;
using System.Text;
2017-02-27 13:19:07 +08:00
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
using osu.Framework.Graphics.Shapes;
2019-03-04 11:06:41 +08:00
using osu.Game.Graphics;
2019-06-18 13:51:48 +08:00
using osu.Game.Tournament.Models;
2018-11-20 15:51:59 +08:00
using osuTK;
using osuTK.Graphics;
2018-04-13 17:19:50 +08:00
namespace osu.Game.Tournament.Screens.Drawings.Components
2017-02-27 13:19:07 +08:00
{
public class Group : Container
{
2017-03-03 14:59:33 +08:00
public readonly string GroupName;
2018-04-13 17:19:50 +08:00
public int TeamsCount { get; private set; }
2018-04-13 17:19:50 +08:00
private readonly FlowContainer<GroupTeam> teams;
2018-04-13 17:19:50 +08:00
private readonly List<GroupTeam> allTeams = new List<GroupTeam>();
2018-04-13 17:19:50 +08:00
2017-02-27 13:19:07 +08:00
public Group(string name)
{
GroupName = name;
2018-04-13 17:19:50 +08:00
2017-02-27 13:19:07 +08:00
Size = new Vector2(176, 128);
2018-04-13 17:19:50 +08:00
2017-02-27 13:19:07 +08:00
Masking = true;
CornerRadius = 4;
2018-04-13 17:19:50 +08:00
2017-02-27 13:19:07 +08:00
Children = new Drawable[]
{
2017-03-03 19:27:53 +08:00
new Box
2017-02-27 13:19:07 +08:00
{
RelativeSizeAxes = Axes.Both,
Colour = new Color4(54, 54, 54, 255)
},
// Group name
new TournamentSpriteText
2017-02-27 13:19:07 +08:00
{
Anchor = Anchor.TopCentre,
Origin = Anchor.TopCentre,
2018-04-13 17:19:50 +08:00
2017-02-27 13:19:07 +08:00
Position = new Vector2(0, 7f),
2018-04-13 17:19:50 +08:00
2018-07-24 20:42:06 +08:00
Text = $"GROUP {name.ToUpperInvariant()}",
Font = OsuFont.Torus.With(weight: FontWeight.Bold, size: 8),
2017-02-27 13:19:07 +08:00
Colour = new Color4(255, 204, 34, 255),
},
2017-03-03 19:27:53 +08:00
teams = new FillFlowContainer<GroupTeam>
2017-02-27 13:19:07 +08:00
{
RelativeSizeAxes = Axes.Both,
2018-04-13 17:19:50 +08:00
Spacing = new Vector2(6f, 22),
2018-04-13 17:19:50 +08:00
2017-03-03 19:27:53 +08:00
Margin = new MarginPadding
2017-02-27 13:19:07 +08:00
{
Top = 21f,
Bottom = 7f,
2017-02-27 13:19:07 +08:00
Left = 7f,
Right = 7f
}
2017-02-27 13:19:07 +08:00
}
};
}
2018-04-13 17:19:50 +08:00
public void AddTeam(TournamentTeam team)
2017-02-27 13:19:07 +08:00
{
2017-05-02 13:21:22 +08:00
GroupTeam gt = new GroupTeam(team);
2018-04-13 17:19:50 +08:00
if (TeamsCount < 8)
2017-02-27 13:19:07 +08:00
{
teams.Add(gt);
allTeams.Add(gt);
2018-04-13 17:19:50 +08:00
TeamsCount++;
2017-02-27 13:19:07 +08:00
}
}
2018-04-13 17:19:50 +08:00
public bool ContainsTeam(string fullName)
{
return allTeams.Any(t => t.Team.FullName.Value == fullName);
}
2018-04-13 17:19:50 +08:00
public bool RemoveTeam(TournamentTeam team)
2017-02-27 13:19:07 +08:00
{
allTeams.RemoveAll(gt => gt.Team == team);
2018-04-13 17:19:50 +08:00
if (teams.RemoveAll(gt => gt.Team == team, true) > 0)
2017-02-27 14:02:38 +08:00
{
TeamsCount--;
2017-02-27 14:02:38 +08:00
return true;
}
2018-04-13 17:19:50 +08:00
2017-02-27 14:02:38 +08:00
return false;
}
2018-04-13 17:19:50 +08:00
2017-02-27 14:02:38 +08:00
public void ClearTeams()
{
allTeams.Clear();
teams.Clear();
2018-04-13 17:19:50 +08:00
TeamsCount = 0;
2017-02-27 13:19:07 +08:00
}
2018-04-13 17:19:50 +08:00
2017-03-03 19:42:22 +08:00
public string GetStringRepresentation()
{
StringBuilder sb = new StringBuilder();
foreach (GroupTeam gt in allTeams)
sb.AppendLine(gt.Team.FullName.Value);
return sb.ToString();
}
2017-02-27 13:19:07 +08:00
}
}