mirror of
https://github.com/ppy/osu
synced 2025-02-21 13:07:18 +00:00
OnTeamSelected + async changes.
This commit is contained in:
parent
3ae55933c4
commit
04dd24b04b
@ -37,12 +37,12 @@ namespace osu.Game.Screens.Tournament
|
||||
|
||||
private ScrollingTeamContainer teamsContainer;
|
||||
private GroupsContainer groupsContainer;
|
||||
private SpriteText fullTeamNameText;
|
||||
|
||||
private List<Team> allTeams = new List<Team>();
|
||||
|
||||
private DrawingsConfigManager drawingsConfig;
|
||||
|
||||
private Task lastWriteOp;
|
||||
private Task writeOp;
|
||||
|
||||
private Storage storage;
|
||||
@ -61,7 +61,6 @@ namespace osu.Game.Screens.Tournament
|
||||
drawingsConfig = new DrawingsConfigManager(storage);
|
||||
|
||||
Container visualiserContainer;
|
||||
SpriteText st;
|
||||
|
||||
Children = new Drawable[]
|
||||
{
|
||||
@ -125,7 +124,7 @@ namespace osu.Game.Screens.Tournament
|
||||
RelativeSizeAxes = Axes.X,
|
||||
},
|
||||
// Scrolling team name
|
||||
st = new SpriteText()
|
||||
fullTeamNameText = new SpriteText()
|
||||
{
|
||||
Anchor = Anchor.Centre,
|
||||
Origin = Anchor.TopCentre,
|
||||
@ -242,42 +241,38 @@ namespace osu.Game.Screens.Tournament
|
||||
offset += (float)Math.PI / 6f;
|
||||
}
|
||||
|
||||
teamsContainer.OnSelected += t =>
|
||||
{
|
||||
groupsContainer.AddTeam(t.Team);
|
||||
|
||||
st.Text = t.Team.FullName;
|
||||
st.FadeIn(200);
|
||||
|
||||
writeResults(groupsContainer.ToStringRepresentation());
|
||||
};
|
||||
|
||||
teamsContainer.OnScrollStarted += () => st.FadeOut(200);
|
||||
teamsContainer.OnSelected += onTeamSelected;
|
||||
teamsContainer.OnScrollStarted += () => fullTeamNameText.FadeOut(200);
|
||||
|
||||
reset(true);
|
||||
}
|
||||
|
||||
private void onTeamSelected(Team team)
|
||||
{
|
||||
groupsContainer.AddTeam(team);
|
||||
|
||||
fullTeamNameText.Text = team.FullName;
|
||||
fullTeamNameText.FadeIn(200);
|
||||
|
||||
writeResults(groupsContainer.ToStringRepresentation());
|
||||
}
|
||||
|
||||
private void writeResults(string text)
|
||||
{
|
||||
lastWriteOp = writeOp;
|
||||
writeOp = Task.Run(async () =>
|
||||
Action writeAction = () =>
|
||||
{
|
||||
if (lastWriteOp != null)
|
||||
await lastWriteOp;
|
||||
|
||||
// Write to drawings_results
|
||||
try
|
||||
using (Stream stream = storage.GetStream(results_filename, FileAccess.Write, FileMode.Create))
|
||||
using (StreamWriter sw = new StreamWriter(stream))
|
||||
{
|
||||
using (Stream stream = storage.GetStream(results_filename, FileAccess.Write, FileMode.Create))
|
||||
using (StreamWriter sw = new StreamWriter(stream))
|
||||
{
|
||||
sw.Write(text);
|
||||
}
|
||||
sw.Write(text);
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
if (writeOp == null)
|
||||
writeOp = Task.Run(writeAction);
|
||||
else
|
||||
writeOp = writeOp.ContinueWith(t => { writeAction(); });
|
||||
}
|
||||
|
||||
private void reloadTeams()
|
||||
|
@ -25,7 +25,7 @@ namespace osu.Game.Screens.Tournament
|
||||
public class ScrollingTeamContainer : Container
|
||||
{
|
||||
public event Action OnScrollStarted;
|
||||
public event Action<ScrollingTeam> OnSelected;
|
||||
public event Action<Team> OnSelected;
|
||||
|
||||
private readonly List<Team> availableTeams = new List<Team>();
|
||||
|
||||
@ -136,7 +136,7 @@ namespace osu.Game.Screens.Tournament
|
||||
availableTeams.RemoveAll(at => at == st.Team);
|
||||
|
||||
st.Selected = true;
|
||||
OnSelected?.Invoke(st);
|
||||
OnSelected?.Invoke(st.Team);
|
||||
|
||||
delayedStateChangeDelegate = Delay(10000).Schedule(() => scrollState = ScrollState.Idle);
|
||||
break;
|
||||
|
Loading…
Reference in New Issue
Block a user