Merge pull request #910 from RHeavenStudio/cherry-pick-release_1_patches-771b78e85bd570bbaeb6cb6337c77cfbc8541b76

Swing UI and other stuff
This commit is contained in:
minenice55 2024-05-08 16:12:39 +00:00 committed by GitHub
commit 544c4b7058
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();
} }
} }