Swing UI and other stuff (#903)

* 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
This commit is contained in:
Zeo 2024-05-07 19:13:51 -05:00 committed by GitHub
parent 4eb336d394
commit ae4a1d8757
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();
} }
} }