Skip to content

Commit

Permalink
Merge branch 'master' into BreakTouch
Browse files Browse the repository at this point in the history
  • Loading branch information
LumpBloom7 committed Jun 14, 2024
2 parents 7c2f0b6 + eee3d57 commit bcd25ed
Show file tree
Hide file tree
Showing 90 changed files with 2,520 additions and 429 deletions.
2 changes: 1 addition & 1 deletion .vscode/launch.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"request": "launch",
"program": "dotnet",
"args": [
"${workspaceRoot}/osu.Game.Rulesets.Sentakki.Tests/bin/Debug/net6.0/osu.Game.Rulesets.Sentakki.Tests.dll"
"${workspaceRoot}/osu.Game.Rulesets.Sentakki.Tests/bin/Debug/net8.0/osu.Game.Rulesets.Sentakki.Tests.dll"
],
"cwd": "${workspaceRoot}",
"preLaunchTask": "Build",
Expand Down
20 changes: 15 additions & 5 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,20 +1,30 @@
![sentakki](assets/logov3.png)

# sentakki

---
[![.NET Core](https://github.com/LumpBloom7/sentakki/workflows/.NET%20Core/badge.svg)](https://github.com/LumpBloom7/sentakki/actions?query=workflow%3A%22.NET+Core%22)
[![CodeFactor](https://www.codefactor.io/repository/github/lumpbloom7/sentakki/badge)](https://www.codefactor.io/repository/github/lumpbloom7/sentakki)
[![Crowdin](https://badges.crowdin.net/sentakki/localized.svg)](https://crowdin.com/project/sentakki)
[![Discord Shield](https://discordapp.com/api/guilds/700619421466624050/widget.png?style=shield)](https://discord.gg/CQPNADu)

[![ko-fi](https://www.ko-fi.com/img/githubbutton_sm.svg)](https://ko-fi.com/E1E01N56M)

An attempt to recreate Sega's maimai within osu!lazer, while making it more flexible.
sentakki is a recreation of maimaiDX for use within osu, taking advantage of the longevity and the osu ecosystem for features such as multiplayer, beatmap listing, and leaderboards.

## Status

All the essential note types have been implemented. Features like editor is being developed on the side, since lazer doesn't support third party ruleset editors yet. PP/diff calc haven't been given considered yet, and it is currently open to ideas.

## Demo videos

These charts have been ported from maimaiDX, but conversions of osu!std charts are also supported.
|||
|:---:|:---:|
|<video src="https://github.com/LumpBloom7/sentakki/assets/12001167/20c5c1af-084b-478c-a8b3-2975c0672f42"/>|<video src="https://github.com/LumpBloom7/sentakki/assets/12001167/250ba2fe-e22f-48e8-8f64-aff91a7afe4b"/>|
|<video src="https://github.com/LumpBloom7/sentakki/assets/12001167/a0170ef2-9472-4008-8ca2-b813c335c897"/>|<video src="https://github.com/LumpBloom7/sentakki/assets/12001167/58e9c427-6e14-4e08-bec9-e3a2c00ca7de"/>|




## Trying the ruleset

Prebuilt binaries are provided for users who doesn't want to create a development environment. Releases are guaranteed to work with the latest version of lazer at the time of release.
Expand All @@ -32,7 +42,7 @@ Prebuilt binaries are provided for users who doesn't want to create a developmen

Some prerequisites are required before attempting to debug or develop:

* A desktop platform with the .NET 5 SDK or higher installed.
* A desktop platform with the .NET 8 SDK or higher installed.
* An IDE with support for C#, providing auto completion and syntax highlighting. I recommend using Visual Studio 2019 or Visual Studio Code.
* Other requirements are shared with osu!lazer and osu!framework

Expand All @@ -47,7 +57,7 @@ cd sentakki

To update the source code to the latest commit, run the following command inside the osu directory:

```she
```sh
git pull
```

Expand Down
33 changes: 0 additions & 33 deletions osu.Game.Rulesets.Sentakki.Tests/UI/TestSceneResumeOverlay.cs

This file was deleted.

2 changes: 1 addition & 1 deletion osu.Game.Rulesets.Sentakki.Tests/VisualTestRunner.cs
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ public static class VisualTestRunner
[STAThread]
public static int Main(string[] args)
{
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu", new HostOptions { BindIPC = true }))
using (DesktopGameHost host = Host.GetSuitableDesktopHost(@"osu"))
{
host.Run(new OsuTestBrowser());
return 0;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,17 +10,16 @@
<AssemblyName>osu.Game.Rulesets.Sentakki.Tests</AssemblyName>
</PropertyGroup>
<ItemGroup Label="Package References">
<PackageReference Include="Appveyor.TestLogger" Version="2.0.0"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0"/>
<PackageReference Include="NUnit" Version="3.13.3"/>
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.9.0"/>
<PackageReference Include="NUnit" Version="4.1.0"/>
<PackageReference Include="NUnit3TestAdapter" Version="4.5.0"/>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\osu.Game.Rulesets.Sentakki\osu.Game.Rulesets.Sentakki.csproj"/>
</ItemGroup>
<PropertyGroup Label="Project">
<OutputType>WinExe</OutputType>
<TargetFramework>net6.0</TargetFramework>
<TargetFramework>net8.0</TargetFramework>
<RootNamespace>osu.Game.Rulesets.Sentakki.Tests</RootNamespace>
</PropertyGroup>
</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ private SentakkiHitObject convertSlider(HitObject original)
},
Lane = lane.NormalizePath(),
StartTime = original.StartTime,
NodeSamples = nodeSamples,
Samples = nodeSamples.FirstOrDefault(),
Break = headBreak
};

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -310,7 +310,7 @@ private SentakkiHitObject createTouchNote(HitObject original)
},
Lane = noteLane,
StartTime = original.StartTime,
NodeSamples = samples,
Samples = samples.FirstOrDefault(),
Break = hasBreakHead
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ protected override void InitialiseDefaults()
SetDefault(SentakkiRulesetSettings.LaneInputMode, LaneInputMode.Button);
SetDefault(SentakkiRulesetSettings.SnakingSlideBody, true);
SetDefault(SentakkiRulesetSettings.DetailedJudgements, false);
SetDefault(SentakkiRulesetSettings.BreakSampleVolume, 1.0, 0.0, 1.0, 0.01);
}

public override TrackedSettings CreateTrackedSettings() => new TrackedSettings
Expand All @@ -50,6 +49,5 @@ public enum SentakkiRulesetSettings
LaneInputMode,
SnakingSlideBody,
DetailedJudgements,
BreakSampleVolume
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -20,5 +20,5 @@ public SentakkiJudgementResult(HitObject hitObject, Judgement judgement) : base(
}
}

public bool Critical { get; private set; }
public bool Critical { get; set; }
}
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ public static class SentakkiSettingsSubsectionStrings
/// <summary>
/// "Touch note fade-in speed"
/// </summary>
public static LocalisableString TouchNoteFadeInSpeed => new TranslatableString(getKey(@"touch_note_fade_in_speed"), @"Touch note fade-in speed");
public static LocalisableString TouchNoteEntrySpeed => new TranslatableString(getKey(@"touch_note_entry_speed"), @"Touch note entry speed");

/// <summary>
/// "Ring Opacity"
Expand All @@ -58,11 +58,6 @@ public static class SentakkiSettingsSubsectionStrings
public static LocalisableString LaneInputModeButton => new TranslatableString(getKey(@"lane_input_mode_button"), @"Button");
public static LocalisableString LaneInputModeSensor => new TranslatableString(getKey(@"lane_input_mode_sensor"), @"Sensor");

/// <summary>
/// "Break sample volume"
/// </summary>
public static LocalisableString BreakSampleVolume => new TranslatableString(getKey(@"break_sample_volume"), @"Break sample volume");

public static LocalisableString EntrySpeedTooltip(float speed, double time)
=> new TranslatableString(getKey(@"entry_speed_tooltip"), @"{0} ({1}ms)", speed > 10 ? Sonic : $"{speed:N2}", $"{time:N0}");

Expand Down
15 changes: 14 additions & 1 deletion osu.Game.Rulesets.Sentakki/Mods/SentakkiModHardRock.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,15 @@
using osu.Game.Configuration;
using osu.Game.Rulesets.Mods;
using osu.Game.Rulesets.Objects;
using osu.Game.Rulesets.Objects.Drawables;
using osu.Game.Rulesets.Scoring;
using osu.Game.Rulesets.Sentakki.Localisation.Mods;
using osu.Game.Rulesets.Sentakki.Objects.Drawables;
using osu.Game.Rulesets.Sentakki.Scoring;

namespace osu.Game.Rulesets.Sentakki.Mods
{
public class SentakkiModHardRock : ModHardRock, IApplicableToHitObject
public class SentakkiModHardRock : ModHardRock, IApplicableToHitObject, IApplicableToDrawableHitObject
{
public override double ScoreMultiplier => 1;

Expand All @@ -28,6 +30,9 @@ public override void ApplyToDifficulty(BeatmapDifficulty difficulty)
[SettingSource(typeof(SentakkiModHardRockStrings), nameof(SentakkiModHardRockStrings.MinimumResult), nameof(SentakkiModHardRockStrings.MinimumResultDescription))]
public Bindable<SentakkiHitResult> MinimumValidResult { get; } = new Bindable<SentakkiHitResult>(SentakkiHitResult.Good);

[SettingSource("Enable strict slider tracking")]
public Bindable<bool> StrictSliderTracking { get; } = new Bindable<bool>(false);

public void ApplyToHitObject(HitObject hitObject)
{
// Nested HitObjects should get the same treatment
Expand All @@ -41,6 +46,14 @@ public void ApplyToHitObject(HitObject hitObject)
shw.JudgementMode = JudgementMode.Value;
}

public void ApplyToDrawableHitObject(DrawableHitObject drawable)
{
if (drawable is not DrawableSlideCheckpoint slideCheckpoint)
return;

slideCheckpoint.StrictSliderTracking = StrictSliderTracking.Value;
}

public enum SentakkiHitResult
{
Good = 3,
Expand Down
1 change: 1 addition & 0 deletions osu.Game.Rulesets.Sentakki/Mods/SentakkiModRelax.cs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ public class SentakkiModRelax : Mod, IApplicableAfterBeatmapConversion
public override string Name => "Relax";

public override string Acronym => "RX";
public override ModType Type => ModType.DifficultyReduction;

public override LocalisableString Description => "All notes are EX notes, you've got nothing to prove!";

Expand Down
2 changes: 2 additions & 0 deletions osu.Game.Rulesets.Sentakki/Mods/SentakkiModTouchDevice.cs
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
using System;
using osu.Game.Rulesets.Mods;

namespace osu.Game.Rulesets.Sentakki.Mods;

public class SentakkiModTouchDevice : ModTouchDevice
{
public override Type[] IncompatibleMods => Array.Empty<Type>();
}
Loading

0 comments on commit bcd25ed

Please sign in to comment.