OnTeamSelected + async changes.

This commit is contained in:
smoogipooo
2017-03-03 14:51:19 +09:00
parent 3ae55933c4
commit 04dd24b04b
2 changed files with 26 additions and 31 deletions

View File

@ -37,12 +37,12 @@ namespace osu.Game.Screens.Tournament
private ScrollingTeamContainer teamsContainer; private ScrollingTeamContainer teamsContainer;
private GroupsContainer groupsContainer; private GroupsContainer groupsContainer;
private SpriteText fullTeamNameText;
private List<Team> allTeams = new List<Team>(); private List<Team> allTeams = new List<Team>();
private DrawingsConfigManager drawingsConfig; private DrawingsConfigManager drawingsConfig;
private Task lastWriteOp;
private Task writeOp; private Task writeOp;
private Storage storage; private Storage storage;
@ -61,7 +61,6 @@ namespace osu.Game.Screens.Tournament
drawingsConfig = new DrawingsConfigManager(storage); drawingsConfig = new DrawingsConfigManager(storage);
Container visualiserContainer; Container visualiserContainer;
SpriteText st;
Children = new Drawable[] Children = new Drawable[]
{ {
@ -125,7 +124,7 @@ namespace osu.Game.Screens.Tournament
RelativeSizeAxes = Axes.X, RelativeSizeAxes = Axes.X,
}, },
// Scrolling team name // Scrolling team name
st = new SpriteText() fullTeamNameText = new SpriteText()
{ {
Anchor = Anchor.Centre, Anchor = Anchor.Centre,
Origin = Anchor.TopCentre, Origin = Anchor.TopCentre,
@ -242,42 +241,38 @@ namespace osu.Game.Screens.Tournament
offset += (float)Math.PI / 6f; offset += (float)Math.PI / 6f;
} }
teamsContainer.OnSelected += t => teamsContainer.OnSelected += onTeamSelected;
{ teamsContainer.OnScrollStarted += () => fullTeamNameText.FadeOut(200);
groupsContainer.AddTeam(t.Team);
st.Text = t.Team.FullName;
st.FadeIn(200);
writeResults(groupsContainer.ToStringRepresentation());
};
teamsContainer.OnScrollStarted += () => st.FadeOut(200);
reset(true); 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) private void writeResults(string text)
{ {
lastWriteOp = writeOp; Action writeAction = () =>
writeOp = Task.Run(async () =>
{ {
if (lastWriteOp != null)
await lastWriteOp;
// Write to drawings_results // 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)) sw.Write(text);
using (StreamWriter sw = new StreamWriter(stream))
{
sw.Write(text);
}
} }
catch };
{
} if (writeOp == null)
}); writeOp = Task.Run(writeAction);
else
writeOp = writeOp.ContinueWith(t => { writeAction(); });
} }
private void reloadTeams() private void reloadTeams()

View File

@ -25,7 +25,7 @@ namespace osu.Game.Screens.Tournament
public class ScrollingTeamContainer : Container public class ScrollingTeamContainer : Container
{ {
public event Action OnScrollStarted; public event Action OnScrollStarted;
public event Action<ScrollingTeam> OnSelected; public event Action<Team> OnSelected;
private readonly List<Team> availableTeams = new List<Team>(); private readonly List<Team> availableTeams = new List<Team>();
@ -136,7 +136,7 @@ namespace osu.Game.Screens.Tournament
availableTeams.RemoveAll(at => at == st.Team); availableTeams.RemoveAll(at => at == st.Team);
st.Selected = true; st.Selected = true;
OnSelected?.Invoke(st); OnSelected?.Invoke(st.Team);
delayedStateChangeDelegate = Delay(10000).Schedule(() => scrollState = ScrollState.Idle); delayedStateChangeDelegate = Delay(10000).Schedule(() => scrollState = ScrollState.Idle);
break; break;