Swing UI and other stuff (#908)

* no more "new section"

""

* Change Swing Labels

0% > 50%
100% > 75%

* math :(

@minenice55 please help me thank you :))))))))))

* i have no idea what im doing

* Done!

- added presets
- fixed bugs
- should have 100% compatibility
- also documented the weird-ass setup

---------

Co-authored-by: Zeo <67521686+ThatZeoGal@users.noreply.github.com>
This commit is contained in:
minenice55 2024-05-08 12:08:45 -04:00 committed by GitHub
parent 1c6c3f2fda
commit 771b78e85b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
3 changed files with 1251 additions and 115 deletions

File diff suppressed because it is too large Load diff

View file

@ -243,7 +243,7 @@ namespace HeavenStudio.Editor.Track
if (create) if (create)
{ {
RiqEntity sectionC = GameManager.instance.Beatmap.AddNewSectionMarker(Timeline.instance.MousePos2BeatSnap, "New Section"); RiqEntity sectionC = GameManager.instance.Beatmap.AddNewSectionMarker(Timeline.instance.MousePos2BeatSnap, "");
sectionC.CreateProperty("startPerfect", false); sectionC.CreateProperty("startPerfect", false);
sectionC.CreateProperty("weight", 1f); sectionC.CreateProperty("weight", 1f);

View file

@ -51,7 +51,7 @@ public class TempoDialog : Dialog
deleteButton.gameObject.SetActive(!tempoObj.first); deleteButton.gameObject.SetActive(!tempoObj.first);
tempoInput.text = tempoObj.chartEntity["tempo"].ToString("F"); tempoInput.text = tempoObj.chartEntity["tempo"].ToString("F");
swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F"); swingInput.text = (tempoObj.chartEntity["swing"] * 100 + 50).ToString("F");
swingSlider.value = tempoObj.chartEntity["swing"]; swingSlider.value = tempoObj.chartEntity["swing"];
swingDivisionToggle.isOn = tempoObj.chartEntity["swingDivision"] != 1f; swingDivisionToggle.isOn = tempoObj.chartEntity["swingDivision"] != 1f;
@ -97,24 +97,81 @@ public class TempoDialog : Dialog
} }
} }
public void RefreshSwingUI()
{
swingInput.text = (tempoObj.chartEntity["swing"] * 100 + 50).ToString("F");
swingSlider.value = tempoObj.chartEntity["swing"];
}
public void SwingSliderUpdate() public void SwingSliderUpdate()
{ {
if (tempoObj != null) if (tempoObj != null)
{ {
tempoObj.SetSwing(System.MathF.Round(swingSlider.value, 4)); tempoObj.SetSwing(System.MathF.Round(swingSlider.value, 4));
swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F"); RefreshSwingUI();
swingSlider.value = tempoObj.chartEntity["swing"];
} }
} }
public void SetSwing() public void SwingManualUpdate()
{ {
if (tempoObj != null) if (tempoObj != null)
{ {
float swing = float.Parse(swingInput.text); float swing = float.Parse(swingInput.text);
tempoObj.SetSwing(swing * 0.25f / 100f); tempoObj.SetSwing(swing / 100f - 0.5f);
swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F"); RefreshSwingUI();
swingSlider.value = tempoObj.chartEntity["swing"]; }
}
/*
a note for future reference:
all stored swing values (like ones in remix.json) are the SWING RATIO - 0.5
for example, a swing ratio of 50% would be 0.5 - 0.5 = 0
and a ratio of 66.67% would be 0.6667 - 0.5 = 0.1667
you put that final value into tempoObj.SetSwing() to set it,
hence why the above functions use that weird formula and the below functions set it directly
in addition, you can get the swing ratio (as a percentage) from this value by
multiplying the value by 100, then adding 50
this is really stupid lol
minenice why didnt you write any of this down lmao - zeo
*/
public void SetStraightSwing()
{
if (tempoObj != null)
{
tempoObj.SetSwing(0f);
RefreshSwingUI();
}
}
public void SetLightSwing()
{
if (tempoObj != null)
{
tempoObj.SetSwing(0.1f);
RefreshSwingUI();
}
}
public void SetNormalSwing()
{
if (tempoObj != null)
{
tempoObj.SetSwing(0.1667f);
RefreshSwingUI();
}
}
public void SetHeavySwing()
{
if (tempoObj != null)
{
tempoObj.SetSwing(0.25f);
RefreshSwingUI();
} }
} }