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 minenice55
parent e794f8032d
commit 99bfcc113b
3 changed files with 1249 additions and 113 deletions

File diff suppressed because it is too large Load diff

View file

@ -243,7 +243,7 @@ namespace HeavenStudio.Editor.Track
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("weight", 1f);

View file

@ -51,7 +51,7 @@ public class TempoDialog : Dialog
deleteButton.gameObject.SetActive(!tempoObj.first);
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"];
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()
{
if (tempoObj != null)
{
tempoObj.SetSwing(System.MathF.Round(swingSlider.value, 4));
swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F");
swingSlider.value = tempoObj.chartEntity["swing"];
RefreshSwingUI();
}
}
public void SetSwing()
public void SwingManualUpdate()
{
if (tempoObj != null)
{
float swing = float.Parse(swingInput.text);
tempoObj.SetSwing(swing * 0.25f / 100f);
swingInput.text = (tempoObj.chartEntity["swing"] * 400).ToString("F");
swingSlider.value = tempoObj.chartEntity["swing"];
tempoObj.SetSwing(swing / 100f - 0.5f);
RefreshSwingUI();
}
}
/*
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();
}
}