diff --git a/osu-framework b/osu-framework index 7022964256..34193c7f15 160000 --- a/osu-framework +++ b/osu-framework @@ -1 +1 @@ -Subproject commit 7022964256829c7fab596ce34ad70d09f6433bcf +Subproject commit 34193c7f15aba3520f73f8ca36c0fbc9cd3951d4 diff --git a/osu.Game/Beatmaps/Drawable/BeatmapGroup.cs b/osu.Game/Beatmaps/Drawables/BeatmapGroup.cs similarity index 91% rename from osu.Game/Beatmaps/Drawable/BeatmapGroup.cs rename to osu.Game/Beatmaps/Drawables/BeatmapGroup.cs index 348d8abb87..eed7e9369e 100644 --- a/osu.Game/Beatmaps/Drawable/BeatmapGroup.cs +++ b/osu.Game/Beatmaps/Drawables/BeatmapGroup.cs @@ -4,18 +4,11 @@ using System; using System.Collections.Generic; using System.Linq; -using System.Threading; -using System.Threading.Tasks; using osu.Framework; -using osu.Framework.Extensions.IEnumerableExtensions; using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Primitives; using osu.Game.Database; -using OpenTK; -using osu.Framework.Allocation; - -namespace osu.Game.Beatmaps.Drawable + +namespace osu.Game.Beatmaps.Drawables { class BeatmapGroup : IStateful { diff --git a/osu.Game/Beatmaps/Drawable/BeatmapPanel.cs b/osu.Game/Beatmaps/Drawables/BeatmapPanel.cs similarity index 98% rename from osu.Game/Beatmaps/Drawable/BeatmapPanel.cs rename to osu.Game/Beatmaps/Drawables/BeatmapPanel.cs index 920538f935..6de25a853b 100644 --- a/osu.Game/Beatmaps/Drawable/BeatmapPanel.cs +++ b/osu.Game/Beatmaps/Drawables/BeatmapPanel.cs @@ -3,6 +3,7 @@ using System; using osu.Framework.Graphics; +using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Sprites; @@ -11,9 +12,8 @@ using osu.Game.Graphics; using osu.Game.Graphics.UserInterface; using OpenTK; using OpenTK.Graphics; -using osu.Framework.Graphics.Colour; -namespace osu.Game.Beatmaps.Drawable +namespace osu.Game.Beatmaps.Drawables { class BeatmapPanel : Panel { diff --git a/osu.Game/Beatmaps/Drawable/BeatmapSetHeader.cs b/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs similarity index 96% rename from osu.Game/Beatmaps/Drawable/BeatmapSetHeader.cs rename to osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs index fb083451e7..709885d132 100644 --- a/osu.Game/Beatmaps/Drawable/BeatmapSetHeader.cs +++ b/osu.Game/Beatmaps/Drawables/BeatmapSetHeader.cs @@ -2,21 +2,19 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; +using osu.Framework.Allocation; +using osu.Framework.Configuration; using osu.Framework.Graphics; +using osu.Framework.Graphics.Colour; using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Sprites; -using osu.Game.Database; +using osu.Game.Configuration; using osu.Game.Graphics; using OpenTK; using OpenTK.Graphics; -using osu.Framework.Allocation; -using osu.Framework.Configuration; -using osu.Game.Configuration; -using osu.Framework.Graphics.Colour; -using osu.Framework; - -namespace osu.Game.Beatmaps.Drawable + +namespace osu.Game.Beatmaps.Drawables { class BeatmapSetHeader : Panel { @@ -31,7 +29,7 @@ namespace osu.Game.Beatmaps.Drawable this.beatmap = beatmap; Hidden = false; - Children = new Framework.Graphics.Drawable[] + Children = new Drawable[] { new PanelBackground(beatmap) { @@ -158,7 +156,6 @@ namespace osu.Game.Beatmaps.Drawable [BackgroundDependencyLoader] private void load(OsuGameBase game) { - //todo: masking check new BeatmapBackground(working) { Anchor = Anchor.Centre, diff --git a/osu.Game/Beatmaps/Drawable/DifficultyIcon.cs b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs similarity index 94% rename from osu.Game/Beatmaps/Drawable/DifficultyIcon.cs rename to osu.Game/Beatmaps/Drawables/DifficultyIcon.cs index aab1e27d3c..4bb02d53c4 100644 --- a/osu.Game/Beatmaps/Drawable/DifficultyIcon.cs +++ b/osu.Game/Beatmaps/Drawables/DifficultyIcon.cs @@ -1,13 +1,13 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Game.Graphics; -using OpenTK; -using OpenTK.Graphics; - -namespace osu.Game.Beatmaps.Drawable +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Game.Graphics; +using OpenTK; +using OpenTK.Graphics; + +namespace osu.Game.Beatmaps.Drawables { class DifficultyIcon : Container { diff --git a/osu.Game/Beatmaps/Drawable/Panel.cs b/osu.Game/Beatmaps/Drawables/Panel.cs similarity index 91% rename from osu.Game/Beatmaps/Drawable/Panel.cs rename to osu.Game/Beatmaps/Drawables/Panel.cs index fe633e4958..cef25d24a5 100644 --- a/osu.Game/Beatmaps/Drawable/Panel.cs +++ b/osu.Game/Beatmaps/Drawables/Panel.cs @@ -8,7 +8,7 @@ using osu.Framework.Input; using OpenTK; using OpenTK.Graphics; -namespace osu.Game.Beatmaps.Drawable +namespace osu.Game.Beatmaps.Drawables { class Panel : Container, IStateful { @@ -17,9 +17,9 @@ namespace osu.Game.Beatmaps.Drawable public bool Hidden = true; private Container nestedContainer; - protected override Container Content => nestedContainer; + protected override Container Content => nestedContainer; - public Panel() + protected Panel() { Height = MAX_HEIGHT; RelativeSizeAxes = Axes.X; diff --git a/osu.Game/Database/BeatmapDatabase.cs b/osu.Game/Database/BeatmapDatabase.cs index 619eacc90f..4bdfa1e275 100644 --- a/osu.Game/Database/BeatmapDatabase.cs +++ b/osu.Game/Database/BeatmapDatabase.cs @@ -144,7 +144,7 @@ namespace osu.Game.Database var beatmapSetInfo = Query().FirstOrDefault(s => s.BeatmapSetID == beatmapInfo.BeatmapSetID); //we need metadata - GetChildren(beatmapSetInfo, false); + GetChildren(beatmapSetInfo); if (beatmapSetInfo == null) throw new InvalidOperationException($@"Beatmap set {beatmapInfo.BeatmapSetID} is not in the local database."); @@ -181,7 +181,7 @@ namespace osu.Game.Database return connection.GetAllWithChildren(filter, recursive); } - public T GetChildren(T item, bool recursive = true) + public T GetChildren(T item, bool recursive = false) { if (item == null) return default(T); diff --git a/osu.Game/Graphics/Background/Background.cs b/osu.Game/Graphics/Backgrounds/Background.cs similarity index 71% rename from osu.Game/Graphics/Background/Background.cs rename to osu.Game/Graphics/Backgrounds/Background.cs index 4698557c96..368bb7d723 100644 --- a/osu.Game/Graphics/Background/Background.cs +++ b/osu.Game/Graphics/Backgrounds/Background.cs @@ -2,18 +2,15 @@ //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE using System; +using osu.Framework.Allocation; using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; using osu.Framework.Graphics.Sprites; -using osu.Game.Graphics.Containers; +using osu.Framework.Graphics.Textures; using OpenTK; using OpenTK.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework; -using System.Threading.Tasks; -using osu.Framework.Graphics.Textures; -using osu.Framework.Allocation; -namespace osu.Game.Graphics.Background +namespace osu.Game.Graphics.Backgrounds { public class Background : BufferedContainer { @@ -31,7 +28,8 @@ namespace osu.Game.Graphics.Background { Anchor = Anchor.Centre, Origin = Anchor.Centre, - Colour = Color4.DarkGray + Colour = Color4.DarkGray, + FillMode = FillMode.Fill, }); } @@ -41,11 +39,5 @@ namespace osu.Game.Graphics.Background if (!string.IsNullOrEmpty(textureName)) Sprite.Texture = textures.Get(textureName); } - - protected override void Update() - { - base.Update(); - Sprite.Scale = new Vector2(Math.Max(DrawSize.X / Sprite.DrawSize.X, DrawSize.Y / Sprite.DrawSize.Y)); - } } } diff --git a/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs b/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs index 26a8e7bf4f..364ef1c7aa 100644 --- a/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs +++ b/osu.Game/Graphics/UserInterface/Volume/VolumeControl.cs @@ -19,9 +19,6 @@ namespace osu.Game.Graphics.UserInterface.Volume private VolumeMeter volumeMeterMaster; - private FlowContainer content; - protected override Container Content => content; - private void volumeChanged(object sender, EventArgs e) { Show(); @@ -34,14 +31,23 @@ namespace osu.Game.Graphics.UserInterface.Volume Anchor = Anchor.BottomRight; Origin = Anchor.BottomRight; - AddInternal(content = new FlowContainer + Children = new Drawable[] { - AutoSizeAxes = Axes.Both, - Anchor = Anchor.BottomRight, - Origin = Anchor.BottomRight, - Margin = new MarginPadding { Left = 10, Right = 10, Top = 30, Bottom = 30 }, - Spacing = new Vector2(15, 0), - }); + new FlowContainer + { + AutoSizeAxes = Axes.Both, + Anchor = Anchor.BottomRight, + Origin = Anchor.BottomRight, + Margin = new MarginPadding { Left = 10, Right = 10, Top = 30, Bottom = 30 }, + Spacing = new Vector2(15, 0), + Children = new Drawable[] + { + volumeMeterMaster = new VolumeMeter("Master"), + volumeMeterEffect = new VolumeMeter("Effects"), + volumeMeterMusic = new VolumeMeter("Music") + } + } + }; } protected override void LoadComplete() @@ -52,12 +58,9 @@ namespace osu.Game.Graphics.UserInterface.Volume VolumeSample.ValueChanged += volumeChanged; VolumeTrack.ValueChanged += volumeChanged; - Add(new[] - { - volumeMeterMaster = new VolumeMeter("Master", VolumeGlobal), - new VolumeMeter("Effects", VolumeSample), - new VolumeMeter("Music", VolumeTrack) - }); + volumeMeterMaster.Bindable = VolumeGlobal; + volumeMeterEffect.Bindable = VolumeSample; + volumeMeterMusic.Bindable = VolumeTrack; } protected override void Dispose(bool isDisposing) @@ -81,6 +84,9 @@ namespace osu.Game.Graphics.UserInterface.Volume ScheduledDelegate popOutDelegate; + private VolumeMeter volumeMeterEffect; + private VolumeMeter volumeMeterMusic; + protected override void PopIn() { ClearTransformations(); diff --git a/osu.Game/Graphics/UserInterface/Volume/VolumeMeter.cs b/osu.Game/Graphics/UserInterface/Volume/VolumeMeter.cs index 4cba437883..f13019e72c 100644 --- a/osu.Game/Graphics/UserInterface/Volume/VolumeMeter.cs +++ b/osu.Game/Graphics/UserInterface/Volume/VolumeMeter.cs @@ -13,11 +13,10 @@ namespace osu.Game.Graphics.UserInterface.Volume internal class VolumeMeter : Container { private Box meterFill; - private BindableDouble volume; + public BindableDouble Bindable; - public VolumeMeter(string meterName, BindableDouble volume) + public VolumeMeter(string meterName) { - this.volume = volume; Size = new Vector2(40, 180); Children = new Drawable[] { @@ -65,10 +64,10 @@ namespace osu.Game.Graphics.UserInterface.Volume public double Volume { - get { return volume.Value; } + get { return Bindable.Value; } private set { - volume.Value = value; + Bindable.Value = value; updateFill(); } } diff --git a/osu.Game/Overlays/MusicController.cs b/osu.Game/Overlays/MusicController.cs index 1a3245e41c..27080c8db4 100644 --- a/osu.Game/Overlays/MusicController.cs +++ b/osu.Game/Overlays/MusicController.cs @@ -392,7 +392,8 @@ namespace osu.Game.Overlays { sprite = new Sprite { - Colour = new Color4(150, 150, 150, 255) + Colour = new Color4(150, 150, 150, 255), + FillMode = FillMode.Fill, }, new Box { @@ -410,12 +411,6 @@ namespace osu.Game.Overlays { sprite.Texture = beatmap?.Background ?? textures.Get(@"Backgrounds/bg4"); } - - protected override void LoadComplete() - { - base.LoadComplete(); - sprite.Scale = new Vector2(Math.Max(DrawSize.X / sprite.DrawSize.X, DrawSize.Y / sprite.DrawSize.Y)); - } } } } diff --git a/osu.Game/Overlays/ToolbarButton.cs b/osu.Game/Overlays/ToolbarButton.cs index 0a3f42fd5a..1d8bf51795 100644 --- a/osu.Game/Overlays/ToolbarButton.cs +++ b/osu.Game/Overlays/ToolbarButton.cs @@ -104,11 +104,13 @@ namespace osu.Game.Overlays { tooltip1 = new SpriteText { + Shadow = true, TextSize = 22, Font = @"Exo2.0-Bold", }, tooltip2 = new SpriteText { + Shadow = true, TextSize = 16 } } diff --git a/osu.Game/Screens/Backgrounds/BackgroundModeBeatmap.cs b/osu.Game/Screens/Backgrounds/BackgroundModeBeatmap.cs index e599198009..5e624658a1 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundModeBeatmap.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundModeBeatmap.cs @@ -5,7 +5,7 @@ using osu.Framework.Allocation; using OpenTK; using osu.Framework.Graphics.Transformations; using osu.Game.Beatmaps; -using osu.Game.Graphics.Background; +using osu.Game.Graphics.Backgrounds; namespace osu.Game.Screens.Backgrounds { diff --git a/osu.Game/Screens/Backgrounds/BackgroundModeCustom.cs b/osu.Game/Screens/Backgrounds/BackgroundModeCustom.cs index 9a2901ed63..e78816fdec 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundModeCustom.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundModeCustom.cs @@ -1,7 +1,7 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . //Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE -using osu.Game.Graphics.Background; +using osu.Game.Graphics.Backgrounds; namespace osu.Game.Screens.Backgrounds { diff --git a/osu.Game/Screens/Backgrounds/BackgroundModeDefault.cs b/osu.Game/Screens/Backgrounds/BackgroundModeDefault.cs index 8a7be3e03a..57442a0037 100644 --- a/osu.Game/Screens/Backgrounds/BackgroundModeDefault.cs +++ b/osu.Game/Screens/Backgrounds/BackgroundModeDefault.cs @@ -3,7 +3,7 @@ using osu.Framework; using osu.Framework.Allocation; -using osu.Game.Graphics.Background; +using osu.Game.Graphics.Backgrounds; namespace osu.Game.Screens.Backgrounds { diff --git a/osu.Game/Screens/Select/BeatmapInfoOverlay.cs b/osu.Game/Screens/Select/BeatmapInfoOverlay.cs index b00bc4cdde..810260001b 100644 --- a/osu.Game/Screens/Select/BeatmapInfoOverlay.cs +++ b/osu.Game/Screens/Select/BeatmapInfoOverlay.cs @@ -1,4 +1,5 @@ -using OpenTK; +using System; +using OpenTK; using OpenTK.Graphics; using osu.Framework.Graphics; using osu.Framework.Graphics.Containers; @@ -61,7 +62,7 @@ namespace osu.Game.Screens.Select Anchor = Anchor.Centre, Origin = Anchor.Centre, Texture = beatmap.Background, - Scale = new Vector2(1366 / beatmap.Background.Width * 0.6f), + FillMode = FillMode.Fill, }, }, }, diff --git a/osu.Game/Screens/Select/CarouselContainer.cs b/osu.Game/Screens/Select/CarouselContainer.cs index f072380e3c..f9cc18264a 100644 --- a/osu.Game/Screens/Select/CarouselContainer.cs +++ b/osu.Game/Screens/Select/CarouselContainer.cs @@ -1,17 +1,17 @@ //Copyright (c) 2007-2016 ppy Pty Ltd . -//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE - -using OpenTK; -using osu.Framework.Caching; -using osu.Framework.Graphics; -using osu.Framework.Graphics.Containers; -using osu.Framework.Graphics.Transformations; -using osu.Game.Beatmaps.Drawable; -using osu.Game.Database; -using System; -using System.Collections.Generic; -using System.Linq; - +//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE + +using OpenTK; +using osu.Framework.Caching; +using osu.Framework.Graphics; +using osu.Framework.Graphics.Containers; +using osu.Framework.Graphics.Transformations; +using osu.Game.Database; +using System; +using System.Collections.Generic; +using System.Linq; +using osu.Game.Beatmaps.Drawables; + namespace osu.Game.Screens.Select { class CarouselContainer : ScrollContainer diff --git a/osu.Game/Screens/Select/PlaySongSelect.cs b/osu.Game/Screens/Select/PlaySongSelect.cs index 1b96ec923d..604c4aae28 100644 --- a/osu.Game/Screens/Select/PlaySongSelect.cs +++ b/osu.Game/Screens/Select/PlaySongSelect.cs @@ -16,7 +16,6 @@ using osu.Framework.Graphics.Primitives; using osu.Framework.Graphics.Sprites; using osu.Framework.Graphics.UserInterface; using osu.Game.Beatmaps; -using osu.Game.Beatmaps.Drawable; using osu.Game.Database; using osu.Game.Modes; using osu.Game.Screens.Backgrounds; @@ -24,6 +23,8 @@ using OpenTK; using OpenTK.Graphics; using osu.Game.Screens.Play; using osu.Framework; +using osu.Game.Beatmaps.Drawables; +using osu.Game.Graphics.Containers; namespace osu.Game.Screens.Select { @@ -33,11 +34,10 @@ namespace osu.Game.Screens.Select private BeatmapDatabase database; protected override BackgroundMode CreateBackground() => new BackgroundModeBeatmap(Beatmap); - private CarouselContainer carousell; + private CarouselContainer carousel; private TrackManager trackManager; - private Container backgroundWedgesContainer; - private static readonly Vector2 wedged_container_size = new Vector2(700, 225); + private static readonly Vector2 wedged_container_size = new Vector2(0.5f, 225); private static readonly Vector2 wedged_container_shear = new Vector2(0.15f, 0); private static readonly Vector2 wedged_container_start_position = new Vector2(0, 50); private BeatmapInfoOverlay wedgedBeatmapInfoOverlay; @@ -45,46 +45,60 @@ namespace osu.Game.Screens.Select private static readonly Vector2 BACKGROUND_BLUR = new Vector2(20); private CancellationTokenSource initialAddSetsTask; + class WedgeBackground : Container + { + public WedgeBackground() + { + Children = new[] + { + new Box + { + RelativeSizeAxes = Axes.Both, + Size = new Vector2(1, 0.5f), + Colour = new Color4(0, 0, 0, 0.5f), + Shear = new Vector2(0.15f, 0), + EdgeSmoothness = new Vector2(2, 0), + }, + new Box + { + RelativeSizeAxes = Axes.Both, + RelativePositionAxes = Axes.Y, + Size = new Vector2(1, -0.5f), + Position = new Vector2(0, 1), + Colour = new Color4(0, 0, 0, 0.5f), + Shear = new Vector2(-0.15f, 0), + EdgeSmoothness = new Vector2(2, 0), + }, + }; + } + } + /// Optionally provide a database to use instead of the OsuGame one. public PlaySongSelect(BeatmapDatabase database = null) { this.database = database; - const float scrollWidth = 640; + const float carouselWidth = 640; const float bottomToolHeight = 50; Children = new Drawable[] { - backgroundWedgesContainer = new Container + new ParallaxContainer { + ParallaxAmount = 0.005f, RelativeSizeAxes = Axes.Both, - Size = Vector2.One, - Padding = new MarginPadding { Right = scrollWidth }, - Children = new[] + Children = new [] { - new Box + new WedgeBackground { RelativeSizeAxes = Axes.Both, - Size = new Vector2(1, 0.5f), - Colour = new Color4(0, 0, 0, 0.5f), - Shear = new Vector2(0.15f, 0), - EdgeSmoothness = new Vector2(2, 0), - }, - new Box - { - RelativeSizeAxes = Axes.Both, - RelativePositionAxes = Axes.Y, - Size = new Vector2(1, -0.5f), - Position = new Vector2(0, 1), - Colour = new Color4(0, 0, 0, 0.5f), - Shear = new Vector2(-0.15f, 0), - EdgeSmoothness = new Vector2(2, 0), + Padding = new MarginPadding { Right = carouselWidth * 0.76f }, }, } }, - carousell = new CarouselContainer + carousel = new CarouselContainer { RelativeSizeAxes = Axes.Y, - Size = new Vector2(scrollWidth, 1), + Size = new Vector2(carouselWidth, 1), Anchor = Anchor.CentreRight, Origin = Anchor.CentreRight, }, @@ -93,6 +107,7 @@ namespace osu.Game.Screens.Select Alpha = 0, Position = wedged_container_start_position, Size = wedged_container_size, + RelativeSizeAxes = Axes.X, Shear = wedged_container_shear, Margin = new MarginPadding { Top = 20, Right = 20, }, Masking = true, @@ -130,7 +145,7 @@ namespace osu.Game.Screens.Select Colour = new Color4(238, 51, 153, 255), Action = () => Push(new Player { - BeatmapInfo = carousell.SelectedGroup.SelectedPanel.Beatmap, + BeatmapInfo = carousel.SelectedGroup.SelectedPanel.Beatmap, PreferredPlayMode = playMode.Value }) }, @@ -242,7 +257,7 @@ namespace osu.Game.Screens.Select private void selectBeatmap(BeatmapInfo beatmap) { - carousell.SelectBeatmap(beatmap); + carousel.SelectBeatmap(beatmap); } /// @@ -286,15 +301,15 @@ namespace osu.Game.Screens.Select //this likely won't scale so well, but allows us to completely async the loading flow. Task.WhenAll(group.BeatmapPanels.Select(panel => panel.Preload(game))).ContinueWith(task => Schedule(delegate { - carousell.AddGroup(group); + carousel.AddGroup(group); if (Beatmap == null) - carousell.SelectBeatmap(beatmapSet.Beatmaps.First()); + carousel.SelectBeatmap(beatmapSet.Beatmaps.First()); else { var panel = group.BeatmapPanels.FirstOrDefault(p => p.Beatmap.Equals(Beatmap.BeatmapInfo)); if (panel != null) - carousell.SelectGroup(group, panel); + carousel.SelectGroup(group, panel); } })); } diff --git a/osu.Game/osu.Game.csproj b/osu.Game/osu.Game.csproj index fb19272a7d..9cb1535981 100644 --- a/osu.Game/osu.Game.csproj +++ b/osu.Game/osu.Game.csproj @@ -70,9 +70,9 @@ - - - + + + @@ -107,8 +107,8 @@ - - + + @@ -125,7 +125,7 @@ - +