1
0
mirror of https://github.com/ppy/osu.git synced 2024-11-11 17:47:29 +08:00

Implement Play button, drop textures

This commit is contained in:
Drew DeVault 2016-10-21 10:52:52 -04:00
parent d3a857edb9
commit cfc920c9c1
2 changed files with 30 additions and 28 deletions

View File

@ -101,7 +101,7 @@ namespace osu.Game.GameModes.Play
BeatmapSelected?.Invoke(BeatmapSet, map);
}
public BeatmapGroup(BeatmapSetInfo beatmapSet, BeatmapResourceStore beatmapStore, TextureStore resources)
public BeatmapGroup(BeatmapSetInfo beatmapSet)
{
BeatmapSet = beatmapSet;
selectedBeatmap = beatmapSet.Beatmaps[0];
@ -118,7 +118,7 @@ namespace osu.Game.GameModes.Play
Direction = FlowDirection.VerticalOnly,
Children = new[]
{
setBox = new BeatmapSetBox(beatmapSet, beatmapStore, resources)
setBox = new BeatmapSetBox(beatmapSet)
{
RelativeSizeAxes = Axes.X,
Size = new Vector2(collapsedWidth, -1),
@ -164,15 +164,11 @@ namespace osu.Game.GameModes.Play
class BeatmapSetBox : AutoSizeContainer
{
private BeatmapSetInfo beatmapSet;
private BeatmapResourceStore beatmapStore;
private TextureStore resources;
private Sprite backgroundImage;
public BeatmapSetBox(BeatmapSetInfo beatmapSet, BeatmapResourceStore beatmapStore, TextureStore resources)
public BeatmapSetBox(BeatmapSetInfo beatmapSet)
{
this.beatmapSet = beatmapSet;
this.beatmapStore = beatmapStore;
this.resources = resources;
Masking = true;
CornerRadius = 5;
BorderThickness = 2;
@ -237,20 +233,6 @@ namespace osu.Game.GameModes.Play
}
};
}
public override void Load(Framework.BaseGame game)
{
base.Load(game);
if (beatmapSet.Metadata.BackgroundFile != null)
{
Task.Factory.StartNew(() =>
{
beatmapStore.AddBeatmap(beatmapSet);
var texture = resources.Get($@"{beatmapSet.BeatmapSetID}:{beatmapSet.Metadata.BackgroundFile}");
Scheduler.Add(() => backgroundImage.Texture = texture);
});
}
}
}
class DifficultyIcon : Container

View File

@ -27,8 +27,6 @@ namespace osu.Game.GameModes.Play
private BeatmapDatabase beatmaps;
private BeatmapSetInfo selectedBeatmapSet;
private BeatmapInfo selectedBeatmap;
private BeatmapResourceStore beatmapResources;
private TextureStore beatmapTextureResources;
// TODO: use currently selected track as bg
protected override BackgroundMode CreateBackground() => new BackgroundModeCustom(@"Backgrounds/bg4");
private ScrollContainer scrollContainer;
@ -62,7 +60,7 @@ namespace osu.Game.GameModes.Play
beatmapSet.Beatmaps.ForEach(b => beatmaps.GetChildren(b));
beatmapSet.Beatmaps = beatmapSet.Beatmaps.OrderBy(b => b.BaseDifficulty.OverallDifficulty)
.ToList();
var group = new BeatmapGroup(beatmapSet, beatmapResources, beatmapTextureResources);
var group = new BeatmapGroup(beatmapSet);
group.SetSelected += selectBeatmapSet;
group.BeatmapSelected += selectBeatmap;
setList.Add(group);
@ -121,6 +119,32 @@ namespace osu.Game.GameModes.Play
Spacing = new Vector2(0, 5),
}
}
},
new Container
{
RelativeSizeAxes = Axes.X,
Size = new Vector2(1, 50),
Anchor = Anchor.BottomCentre,
Origin = Anchor.BottomCentre,
Children = new Drawable[]
{
new Box
{
RelativeSizeAxes = Axes.Both,
Size = Vector2.One,
Colour = new Color4(0, 0, 0, 0.5f),
},
new Button
{
Anchor = Anchor.CentreRight,
Origin = Anchor.CentreRight,
RelativeSizeAxes = Axes.Y,
Size = new Vector2(100, 1),
Text = "Play",
Colour = new Color4(238, 51, 153, 255),
Action = () => Push(new Player { /*Beatmap = selectedBeatmap*/ }),
},
}
}
};
}
@ -139,8 +163,6 @@ namespace osu.Game.GameModes.Play
}
beatmaps = (game as OsuGameBase).Beatmaps;
beatmapTextureResources = new TextureStore(
new RawTextureLoaderStore(beatmapResources = new BeatmapResourceStore(beatmaps)));
beatmaps.BeatmapSetAdded += bset => Scheduler.Add(() => addBeatmapSet(bset));
addBeatmapSets();
var first = setList.Children.FirstOrDefault() as BeatmapGroup;
@ -157,8 +179,6 @@ namespace osu.Game.GameModes.Play
base.Dispose(isDisposing);
if (playMode != null)
playMode.ValueChanged -= PlayMode_ValueChanged;
if (beatmapResources != null)
beatmapResources.Dispose();
}
private void PlayMode_ValueChanged(object sender, EventArgs e)