mirror of
https://github.com/ppy/osu.git
synced 2025-02-16 03:42:54 +08:00
commit
52f6a09319
@ -1 +1 @@
|
|||||||
Subproject commit 99955eecba415328c3e2b4055afb10aeb8a4ceb9
|
Subproject commit f9627494e444d8b35eb20d418539ada15f258c4d
|
@ -69,6 +69,7 @@ namespace osu.Game.Beatmaps.Drawables
|
|||||||
},
|
},
|
||||||
triangles = new Triangles
|
triangles = new Triangles
|
||||||
{
|
{
|
||||||
|
TriangleScale = 2,
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
ColourLight = OsuColour.FromHex(@"3a7285"),
|
ColourLight = OsuColour.FromHex(@"3a7285"),
|
||||||
ColourDark = OsuColour.FromHex(@"123744")
|
ColourDark = OsuColour.FromHex(@"123744")
|
||||||
|
@ -11,6 +11,7 @@ using osu.Framework.Graphics.Textures;
|
|||||||
using osu.Framework.MathUtils;
|
using osu.Framework.MathUtils;
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
using OpenTK.Graphics;
|
using OpenTK.Graphics;
|
||||||
|
using System;
|
||||||
|
|
||||||
namespace osu.Game.Graphics.Backgrounds
|
namespace osu.Game.Graphics.Backgrounds
|
||||||
{
|
{
|
||||||
@ -34,7 +35,14 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private int aimTriangleCount => (int)((DrawWidth * DrawHeight) / 800 / triangleScale);
|
protected override void LoadComplete()
|
||||||
|
{
|
||||||
|
base.LoadComplete();
|
||||||
|
for (int i = 0; i < aimTriangleCount; i++)
|
||||||
|
addTriangle(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
private int aimTriangleCount => (int)(DrawWidth * DrawHeight * 0.002f / (triangleScale * triangleScale));
|
||||||
|
|
||||||
protected override void Update()
|
protected override void Update()
|
||||||
{
|
{
|
||||||
@ -42,20 +50,25 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
|
|
||||||
foreach (Drawable d in Children)
|
foreach (Drawable d in Children)
|
||||||
{
|
{
|
||||||
d.Position -= new Vector2(0, (float)(d.Scale.X * (50 / DrawHeight) * (Time.Elapsed / 880)) / triangleScale);
|
d.Position -= new Vector2(0, (float)(d.Scale.X * (50 / DrawHeight) * (Time.Elapsed / 950)) / triangleScale);
|
||||||
if (d.DrawPosition.Y + d.DrawSize.Y * d.Scale.Y < 0)
|
if (d.DrawPosition.Y + d.DrawSize.Y * d.Scale.Y < 0)
|
||||||
d.Expire();
|
d.Expire();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool useRandomX = Children.Count() < aimTriangleCount / 2;
|
|
||||||
while (Children.Count() < aimTriangleCount)
|
while (Children.Count() < aimTriangleCount)
|
||||||
addTriangle(useRandomX);
|
addTriangle(false);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected virtual Triangle CreateTriangle()
|
protected virtual Triangle CreateTriangle()
|
||||||
{
|
{
|
||||||
var scale = triangleScale * RNG.NextSingle() * 0.4f + 0.2f;
|
float stdDev = 0.16f;
|
||||||
|
float mean = 0.5f;
|
||||||
|
|
||||||
|
float u1 = 1 - RNG.NextSingle(); //uniform(0,1] random floats
|
||||||
|
float u2 = 1 - RNG.NextSingle();
|
||||||
|
float randStdNormal = (float)(Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(2.0 * Math.PI * u2)); //random normal(0,1)
|
||||||
|
var scale = Math.Max(triangleScale * (mean + stdDev * randStdNormal), 0.1f); //random normal(mean,stdDev^2)
|
||||||
|
|
||||||
const float size = 100;
|
const float size = 100;
|
||||||
|
|
||||||
return new Triangle
|
return new Triangle
|
||||||
@ -72,10 +85,11 @@ namespace osu.Game.Graphics.Backgrounds
|
|||||||
|
|
||||||
protected virtual Color4 GetTriangleShade() => Interpolation.ValueAt(RNG.NextSingle(), ColourDark, ColourLight, 0, 1);
|
protected virtual Color4 GetTriangleShade() => Interpolation.ValueAt(RNG.NextSingle(), ColourDark, ColourLight, 0, 1);
|
||||||
|
|
||||||
private void addTriangle(bool randomX)
|
private void addTriangle(bool randomY)
|
||||||
{
|
{
|
||||||
var sprite = CreateTriangle();
|
var sprite = CreateTriangle();
|
||||||
sprite.Position = new Vector2(RNG.NextSingle(), randomX ? RNG.NextSingle() : 1);
|
var triangleHeight = sprite.DrawHeight / DrawHeight;
|
||||||
|
sprite.Position = new Vector2(RNG.NextSingle(), randomY ? (RNG.NextSingle() * (1 + triangleHeight) - triangleHeight) : 1);
|
||||||
Add(sprite);
|
Add(sprite);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,6 +2,7 @@
|
|||||||
//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
//Licensed under the MIT Licence - https://raw.githubusercontent.com/ppy/osu/master/LICENCE
|
||||||
|
|
||||||
using OpenTK;
|
using OpenTK;
|
||||||
|
using OpenTK.Graphics;
|
||||||
using osu.Framework.Allocation;
|
using osu.Framework.Allocation;
|
||||||
using osu.Framework.Configuration;
|
using osu.Framework.Configuration;
|
||||||
using osu.Framework.Graphics;
|
using osu.Framework.Graphics;
|
||||||
@ -41,12 +42,13 @@ namespace osu.Game.Graphics.Cursor
|
|||||||
|
|
||||||
class OsuCursor : Container
|
class OsuCursor : Container
|
||||||
{
|
{
|
||||||
|
private Container cursorContainer;
|
||||||
private BindableDouble cursorScale;
|
private BindableDouble cursorScale;
|
||||||
private Sprite sprite;
|
|
||||||
public OsuCursor()
|
public OsuCursor()
|
||||||
{
|
{
|
||||||
Origin = Anchor.Centre;
|
Origin = Anchor.Centre;
|
||||||
AutoSizeAxes = Axes.Both;
|
Size = new Vector2(42);
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
@ -56,18 +58,64 @@ namespace osu.Game.Graphics.Cursor
|
|||||||
|
|
||||||
Children = new Drawable[]
|
Children = new Drawable[]
|
||||||
{
|
{
|
||||||
sprite = new Sprite
|
cursorContainer = new CircularContainer
|
||||||
{
|
{
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
Scale = new Vector2((float)cursorScale),
|
Scale = new Vector2((float)cursorScale),
|
||||||
Texture = textures.Get(@"Cursor/cursor")
|
Masking = true,
|
||||||
}
|
BorderThickness = Size.X / 6,
|
||||||
|
BorderColour = Color4.White,
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new Box
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Alpha = 0.01f,
|
||||||
|
},
|
||||||
|
new CircularContainer
|
||||||
|
{
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Masking = true,
|
||||||
|
BorderThickness = Size.X / 3,
|
||||||
|
BorderColour = Color4.White.Opacity(0.5f),
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new Box
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Alpha = 0.01f,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
new CircularContainer
|
||||||
|
{
|
||||||
|
Origin = Anchor.Centre,
|
||||||
|
Anchor = Anchor.Centre,
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Scale = new Vector2(0.1f),
|
||||||
|
Masking = true,
|
||||||
|
Children = new Drawable[]
|
||||||
|
{
|
||||||
|
new Box
|
||||||
|
{
|
||||||
|
RelativeSizeAxes = Axes.Both,
|
||||||
|
Colour = Color4.White,
|
||||||
|
},
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
cursorScale.ValueChanged += scaleChanged;
|
cursorScale.ValueChanged += scaleChanged;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void scaleChanged(object sender, EventArgs e)
|
private void scaleChanged(object sender, EventArgs e)
|
||||||
{
|
{
|
||||||
sprite.Scale = new Vector2((float)cursorScale);
|
cursorContainer.Scale = new Vector2((float)cursorScale);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
fill = new Box
|
fill = new Box
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Alpha = 0.01f, //todo: remove once we figure why containers aren't drawing at all times
|
Alpha = 0.01f,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -31,6 +31,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
leftBox = new Box
|
leftBox = new Box
|
||||||
{
|
{
|
||||||
Height = 2,
|
Height = 2,
|
||||||
|
EdgeSmoothness = new Vector2(0, 0.5f),
|
||||||
Position = new Vector2(2, 0),
|
Position = new Vector2(2, 0),
|
||||||
RelativeSizeAxes = Axes.None,
|
RelativeSizeAxes = Axes.None,
|
||||||
Anchor = Anchor.CentreLeft,
|
Anchor = Anchor.CentreLeft,
|
||||||
@ -39,6 +40,7 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
rightBox = new Box
|
rightBox = new Box
|
||||||
{
|
{
|
||||||
Height = 2,
|
Height = 2,
|
||||||
|
EdgeSmoothness = new Vector2(0, 0.5f),
|
||||||
Position = new Vector2(-2, 0),
|
Position = new Vector2(-2, 0),
|
||||||
RelativeSizeAxes = Axes.None,
|
RelativeSizeAxes = Axes.None,
|
||||||
Anchor = Anchor.CentreRight,
|
Anchor = Anchor.CentreRight,
|
||||||
@ -114,9 +116,9 @@ namespace osu.Game.Graphics.UserInterface
|
|||||||
return base.OnDrag(state);
|
return base.OnDrag(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
protected override void UpdateAfterChildren()
|
||||||
{
|
{
|
||||||
base.Update();
|
base.UpdateAfterChildren();
|
||||||
leftBox.Scale = new Vector2(MathHelper.Clamp(
|
leftBox.Scale = new Vector2(MathHelper.Clamp(
|
||||||
nub.DrawPosition.X - nub.DrawWidth / 2, 0, DrawWidth), 1);
|
nub.DrawPosition.X - nub.DrawWidth / 2, 0, DrawWidth), 1);
|
||||||
rightBox.Scale = new Vector2(MathHelper.Clamp(
|
rightBox.Scale = new Vector2(MathHelper.Clamp(
|
||||||
|
@ -48,8 +48,8 @@ namespace osu.Game.Overlays.Options
|
|||||||
},
|
},
|
||||||
slider = new OsuSliderBar<T>
|
slider = new OsuSliderBar<T>
|
||||||
{
|
{
|
||||||
Margin = new MarginPadding { Top = 5 },
|
Margin = new MarginPadding { Top = 5, Bottom = 5 },
|
||||||
RelativeSizeAxes = Axes.X,
|
RelativeSizeAxes = Axes.X
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -101,7 +101,7 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
tooltipContainer = new FlowContainer
|
tooltipContainer = new FlowContainer
|
||||||
{
|
{
|
||||||
Direction = FlowDirection.VerticalOnly,
|
Direction = FlowDirection.VerticalOnly,
|
||||||
AutoSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both, //stops us being considered in parent's autosize
|
||||||
Anchor = Anchor.BottomLeft,
|
Anchor = Anchor.BottomLeft,
|
||||||
Position = new Vector2(5, 5),
|
Position = new Vector2(5, 5),
|
||||||
Alpha = 0,
|
Alpha = 0,
|
||||||
@ -123,6 +123,7 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
};
|
};
|
||||||
|
|
||||||
RelativeSizeAxes = Axes.Y;
|
RelativeSizeAxes = Axes.Y;
|
||||||
|
AutoSizeAxes = Axes.X;
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
@ -131,14 +132,6 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
sampleClick = audio.Sample.Get(@"Menu/menuclick");
|
sampleClick = audio.Sample.Get(@"Menu/menuclick");
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override void Update()
|
|
||||||
{
|
|
||||||
base.Update();
|
|
||||||
|
|
||||||
//todo: find a way to avoid using this (autosize needs to be able to ignore certain drawables.. in this case the tooltip)
|
|
||||||
Size = new Vector2(Flow.DrawSize.X, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) => true;
|
protected override bool OnMouseDown(InputState state, MouseDownEventArgs args) => true;
|
||||||
|
|
||||||
protected override bool OnClick(InputState state)
|
protected override bool OnClick(InputState state)
|
||||||
@ -169,6 +162,7 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both;
|
RelativeSizeAxes = Axes.Both;
|
||||||
Masking = true;
|
Masking = true;
|
||||||
|
MaskingSmoothness = 0;
|
||||||
EdgeEffect = new EdgeEffect
|
EdgeEffect = new EdgeEffect
|
||||||
{
|
{
|
||||||
Type = EdgeEffectType.Shadow,
|
Type = EdgeEffectType.Shadow,
|
||||||
@ -186,7 +180,8 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
new Triangles
|
new Triangles
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Both,
|
RelativeSizeAxes = Axes.Both,
|
||||||
Alpha = 0.05f,
|
ColourLight = OsuColour.Gray(40),
|
||||||
|
ColourDark = OsuColour.Gray(20),
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ namespace osu.Game.Overlays.Toolbar
|
|||||||
public ToolbarUserArea()
|
public ToolbarUserArea()
|
||||||
{
|
{
|
||||||
RelativeSizeAxes = Axes.Y;
|
RelativeSizeAxes = Axes.Y;
|
||||||
|
AutoSizeAxes = Axes.X;
|
||||||
|
|
||||||
Children = new Drawable[] {
|
Children = new Drawable[] {
|
||||||
button = new ToolbarUserButton
|
button = new ToolbarUserButton
|
||||||
|
Loading…
Reference in New Issue
Block a user