mirror of
https://github.com/osukey/osukey.git
synced 2025-08-07 00:23:59 +09:00
OnTeamSelected + async changes.
This commit is contained in:
@ -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()
|
||||||
|
@ -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;
|
||||||
|
Reference in New Issue
Block a user