mirror of
https://github.com/osukey/osukey.git
synced 2025-05-30 01:47:30 +09:00
Merge branch 'master' into user-profile/update-cover
This commit is contained in:
commit
68a9d945b9
11
.github/workflows/ci.yml
vendored
11
.github/workflows/ci.yml
vendored
@ -121,21 +121,12 @@ jobs:
|
|||||||
|
|
||||||
build-only-ios:
|
build-only-ios:
|
||||||
name: Build only (iOS)
|
name: Build only (iOS)
|
||||||
# change to macos-latest once GitHub finishes migrating all repositories to macOS 12.
|
runs-on: macos-latest
|
||||||
runs-on: macos-12
|
|
||||||
timeout-minutes: 60
|
timeout-minutes: 60
|
||||||
steps:
|
steps:
|
||||||
- name: Checkout
|
- name: Checkout
|
||||||
uses: actions/checkout@v2
|
uses: actions/checkout@v2
|
||||||
|
|
||||||
# see https://github.com/actions/runner-images/issues/6771#issuecomment-1354713617
|
|
||||||
# remove once all workflow VMs use Xcode 14.1
|
|
||||||
- name: Set Xcode Version
|
|
||||||
shell: bash
|
|
||||||
run: |
|
|
||||||
sudo xcode-select -s "/Applications/Xcode_14.1.app"
|
|
||||||
echo "MD_APPLE_SDK_ROOT=/Applications/Xcode_14.1.app" >> $GITHUB_ENV
|
|
||||||
|
|
||||||
- name: Install .NET 6.0.x
|
- name: Install .NET 6.0.x
|
||||||
uses: actions/setup-dotnet@v1
|
uses: actions/setup-dotnet@v1
|
||||||
with:
|
with:
|
||||||
|
@ -1,7 +1,6 @@
|
|||||||
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
// Copyright (c) ppy Pty Ltd <contact@ppy.sh>. Licensed under the MIT Licence.
|
||||||
// See the LICENCE file in the repository root for full licence text.
|
// See the LICENCE file in the repository root for full licence text.
|
||||||
|
|
||||||
using System.Diagnostics;
|
|
||||||
using osu.Game.Rulesets.Mods;
|
using osu.Game.Rulesets.Mods;
|
||||||
using osu.Game.Rulesets.Taiko.Objects;
|
using osu.Game.Rulesets.Taiko.Objects;
|
||||||
using osu.Game.Rulesets.Taiko.UI;
|
using osu.Game.Rulesets.Taiko.UI;
|
||||||
@ -9,30 +8,15 @@ using osu.Game.Rulesets.UI;
|
|||||||
|
|
||||||
namespace osu.Game.Rulesets.Taiko.Mods
|
namespace osu.Game.Rulesets.Taiko.Mods
|
||||||
{
|
{
|
||||||
public class TaikoModClassic : ModClassic, IApplicableToDrawableRuleset<TaikoHitObject>, IUpdatableByPlayfield
|
public class TaikoModClassic : ModClassic, IApplicableToDrawableRuleset<TaikoHitObject>
|
||||||
{
|
{
|
||||||
private DrawableTaikoRuleset? drawableTaikoRuleset;
|
|
||||||
|
|
||||||
public void ApplyToDrawableRuleset(DrawableRuleset<TaikoHitObject> drawableRuleset)
|
public void ApplyToDrawableRuleset(DrawableRuleset<TaikoHitObject> drawableRuleset)
|
||||||
{
|
{
|
||||||
drawableTaikoRuleset = (DrawableTaikoRuleset)drawableRuleset;
|
var drawableTaikoRuleset = (DrawableTaikoRuleset)drawableRuleset;
|
||||||
drawableTaikoRuleset.LockPlayfieldMaxAspect.Value = false;
|
drawableTaikoRuleset.LockPlayfieldMaxAspect.Value = false;
|
||||||
|
|
||||||
var playfield = (TaikoPlayfield)drawableRuleset.Playfield;
|
var playfield = (TaikoPlayfield)drawableRuleset.Playfield;
|
||||||
playfield.ClassicHitTargetPosition.Value = true;
|
playfield.ClassicHitTargetPosition.Value = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void Update(Playfield playfield)
|
|
||||||
{
|
|
||||||
Debug.Assert(drawableTaikoRuleset != null);
|
|
||||||
|
|
||||||
// Classic taiko scrolls at a constant 100px per 1000ms. More notes become visible as the playfield is lengthened.
|
|
||||||
const float scroll_rate = 10;
|
|
||||||
|
|
||||||
// Since the time range will depend on a positional value, it is referenced to the x480 pixel space.
|
|
||||||
float ratio = drawableTaikoRuleset.DrawHeight / 480;
|
|
||||||
|
|
||||||
drawableTaikoRuleset.TimeRange.Value = (playfield.HitObjectContainer.DrawWidth / ratio) * scroll_rate;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -43,7 +43,6 @@ namespace osu.Game.Rulesets.Taiko.UI
|
|||||||
: base(ruleset, beatmap, mods)
|
: base(ruleset, beatmap, mods)
|
||||||
{
|
{
|
||||||
Direction.Value = ScrollingDirection.Left;
|
Direction.Value = ScrollingDirection.Left;
|
||||||
TimeRange.Value = 7000;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
[BackgroundDependencyLoader]
|
[BackgroundDependencyLoader]
|
||||||
@ -60,6 +59,19 @@ namespace osu.Game.Rulesets.Taiko.UI
|
|||||||
KeyBindingInputManager.Add(new DrumTouchInputArea());
|
KeyBindingInputManager.Add(new DrumTouchInputArea());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected override void Update()
|
||||||
|
{
|
||||||
|
base.Update();
|
||||||
|
|
||||||
|
// Taiko scrolls at a constant 100px per 1000ms. More notes become visible as the playfield is lengthened.
|
||||||
|
const float scroll_rate = 10;
|
||||||
|
|
||||||
|
// Since the time range will depend on a positional value, it is referenced to the x480 pixel space.
|
||||||
|
float ratio = DrawHeight / 480;
|
||||||
|
|
||||||
|
TimeRange.Value = (Playfield.HitObjectContainer.DrawWidth / ratio) * scroll_rate;
|
||||||
|
}
|
||||||
|
|
||||||
protected override void UpdateAfterChildren()
|
protected override void UpdateAfterChildren()
|
||||||
{
|
{
|
||||||
base.UpdateAfterChildren();
|
base.UpdateAfterChildren();
|
||||||
|
@ -123,7 +123,7 @@ needs_cleanup: true
|
|||||||
AddStep("Add absolute image", () =>
|
AddStep("Add absolute image", () =>
|
||||||
{
|
{
|
||||||
markdownContainer.CurrentPath = "https://dev.ppy.sh";
|
markdownContainer.CurrentPath = "https://dev.ppy.sh";
|
||||||
markdownContainer.Text = "";
|
markdownContainer.Text = "";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -133,7 +133,7 @@ needs_cleanup: true
|
|||||||
AddStep("Add relative image", () =>
|
AddStep("Add relative image", () =>
|
||||||
{
|
{
|
||||||
markdownContainer.CurrentPath = "https://dev.ppy.sh/wiki/Interface/";
|
markdownContainer.CurrentPath = "https://dev.ppy.sh/wiki/Interface/";
|
||||||
markdownContainer.Text = "";
|
markdownContainer.Text = "";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -145,7 +145,7 @@ needs_cleanup: true
|
|||||||
markdownContainer.CurrentPath = "https://dev.ppy.sh/wiki/Interface/";
|
markdownContainer.CurrentPath = "https://dev.ppy.sh/wiki/Interface/";
|
||||||
markdownContainer.Text = @"Line before image
|
markdownContainer.Text = @"Line before image
|
||||||
|
|
||||||

|

|
||||||
|
|
||||||
Line after image";
|
Line after image";
|
||||||
});
|
});
|
||||||
@ -170,12 +170,12 @@ Line after image";
|
|||||||
markdownContainer.Text = @"
|
markdownContainer.Text = @"
|
||||||
| Image | Name | Effect |
|
| Image | Name | Effect |
|
||||||
| :-: | :-: | :-- |
|
| :-: | :-: | :-- |
|
||||||
|  | 300 | A possible score when tapping a hit circle precisely on time, completing a Slider and keeping the cursor over every tick, or completing a Spinner with the Spinner Metre full. A score of 300 appears in an blue score by default. Scoring nothing except 300s in a beatmap will award the player with the SS or SSH grade. |
|
|  | 300 | A possible score when tapping a hit circle precisely on time, completing a Slider and keeping the cursor over every tick, or completing a Spinner with the Spinner Metre full. A score of 300 appears in an blue score by default. Scoring nothing except 300s in a beatmap will award the player with the SS or SSH grade. |
|
||||||
|  | (激) Geki | A term from Ouendan, called Elite Beat! in EBA. Appears when playing the last element in a combo in which the player has scored only 300s. Getting a Geki will give a sizable boost to the Life Bar. By default, it is blue. |
|
|  | (激) Geki | A term from Ouendan, called Elite Beat! in EBA. Appears when playing the last element in a combo in which the player has scored only 300s. Getting a Geki will give a sizable boost to the Life Bar. By default, it is blue. |
|
||||||
|  | 100 | A possible score one can get when tapping a Hit Object slightly late or early, completing a Slider and missing a number of ticks, or completing a Spinner with the Spinner Meter almost full. A score of 100 appears in a green score by default. When very skilled players test a beatmap and they get a lot of 100s, this may mean that the beatmap does not have correct timing. |
|
|  | 100 | A possible score one can get when tapping a Hit Object slightly late or early, completing a Slider and missing a number of ticks, or completing a Spinner with the Spinner Meter almost full. A score of 100 appears in a green score by default. When very skilled players test a beatmap and they get a lot of 100s, this may mean that the beatmap does not have correct timing. |
|
||||||
|   | (喝) Katu or Katsu | A term from Ouendan, called Beat! in EBA. Appears when playing the last element in a combo in which the player has scored at least one 100, but no 50s or misses. Getting a Katu will give a small boost to the Life Bar. By default, it is coloured green or blue depending on whether the Katu itself is a 100 or a 300. |
|
|   | (喝) Katu or Katsu | A term from Ouendan, called Beat! in EBA. Appears when playing the last element in a combo in which the player has scored at least one 100, but no 50s or misses. Getting a Katu will give a small boost to the Life Bar. By default, it is coloured green or blue depending on whether the Katu itself is a 100 or a 300. |
|
||||||
|  | 50 | A possible score one can get when tapping a hit circle rather early or late but not early or late enough to cause a miss, completing a Slider and missing a lot of ticks, or completing a Spinner with the Spinner Metre close to full. A score of 50 appears in a orange score by default. Scoring a 50 in a combo will prevent the appearance of a Katu or a Geki at the combo's end. |
|
|  | 50 | A possible score one can get when tapping a hit circle rather early or late but not early or late enough to cause a miss, completing a Slider and missing a lot of ticks, or completing a Spinner with the Spinner Metre close to full. A score of 50 appears in a orange score by default. Scoring a 50 in a combo will prevent the appearance of a Katu or a Geki at the combo's end. |
|
||||||
|  | Miss | A possible score one can get when not tapping a hit circle or too early (based on OD and AR, it may *shake* instead), not tapping or holding the Slider at least once, or completing a Spinner with low Spinner Metre fill. Scoring a Miss will reset the current combo to 0 and will prevent the appearance of a Katu or a Geki at the combo's end. |
|
|  | Miss | A possible score one can get when not tapping a hit circle or too early (based on OD and AR, it may *shake* instead), not tapping or holding the Slider at least once, or completing a Spinner with low Spinner Metre fill. Scoring a Miss will reset the current combo to 0 and will prevent the appearance of a Katu or a Geki at the combo's end. |
|
||||||
";
|
";
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -186,7 +186,7 @@ Line after image";
|
|||||||
AddStep("Add image", () =>
|
AddStep("Add image", () =>
|
||||||
{
|
{
|
||||||
markdownContainer.CurrentPath = "https://dev.ppy.sh/wiki/osu!_Program_Files/";
|
markdownContainer.CurrentPath = "https://dev.ppy.sh/wiki/osu!_Program_Files/";
|
||||||
markdownContainer.Text = "";
|
markdownContainer.Text = "";
|
||||||
});
|
});
|
||||||
|
|
||||||
AddUntilStep("Wait image to load", () => markdownContainer.ChildrenOfType<DelayedLoadWrapper>().First().DelayedLoadCompleted);
|
AddUntilStep("Wait image to load", () => markdownContainer.ChildrenOfType<DelayedLoadWrapper>().First().DelayedLoadCompleted);
|
||||||
@ -270,6 +270,30 @@ Phasellus eu nunc nec ligula semper fringilla. Aliquam magna neque, placerat sed
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Test]
|
||||||
|
public void TestCodeSyntax()
|
||||||
|
{
|
||||||
|
AddStep("set content", () =>
|
||||||
|
{
|
||||||
|
markdownContainer.Text = @"
|
||||||
|
This is a paragraph containing `inline code` synatax.
|
||||||
|
Oh wow I do love the `WikiMarkdownContainer`, it is very cool!
|
||||||
|
|
||||||
|
This is a line before the fenced code block:
|
||||||
|
```csharp
|
||||||
|
public class WikiMarkdownContainer : MarkdownContainer
|
||||||
|
{
|
||||||
|
public WikiMarkdownContainer()
|
||||||
|
{
|
||||||
|
this.foo = bar;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
This is a line after the fenced code block!
|
||||||
|
";
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
private partial class TestMarkdownContainer : WikiMarkdownContainer
|
private partial class TestMarkdownContainer : WikiMarkdownContainer
|
||||||
{
|
{
|
||||||
public LinkInline Link;
|
public LinkInline Link;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user