Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
27497c92ba | ||
|
|
076e86b643 | ||
|
|
d9a72132a0 | ||
|
|
23883e46b6 | ||
|
|
bfa9f8f791 | ||
|
|
e695203087 |
@@ -7,9 +7,9 @@
|
||||
<Nullable>enable</Nullable>
|
||||
<UseWindowsForms>true</UseWindowsForms>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Version>$(VersionPrefix)2.0.0</Version>
|
||||
<Version>$(VersionPrefix)2.1.6</Version>
|
||||
<AssemblyVersion>1.0.0.0</AssemblyVersion>
|
||||
<FileVersion>2.0.0</FileVersion>
|
||||
<FileVersion>2.1.6</FileVersion>
|
||||
<Company>Goatgarien</Company>
|
||||
<Copyright>2022</Copyright>
|
||||
<StartupObject>BAKKA_Editor.Program</StartupObject>
|
||||
|
||||
+76
-11
@@ -5,6 +5,7 @@ using System.Text;
|
||||
using System.Drawing.Drawing2D;
|
||||
using System.Threading.Tasks;
|
||||
using static System.Windows.Forms.VisualStyles.VisualStyleElement.TaskbarClock;
|
||||
using System.ComponentModel;
|
||||
|
||||
namespace BAKKA_Editor
|
||||
{
|
||||
@@ -77,15 +78,67 @@ namespace BAKKA_Editor
|
||||
//Convert hispeed to frames
|
||||
float displayFrames = 73.0f - ((Hispeed - 1.5f) * 10.0f);
|
||||
//Account for hispeed gimmick
|
||||
var LatestHispeedChange = chart.Gimmicks.Where(x => x.GimmickType == GimmickType.HiSpeedChange && CurrentMeasure >= x.Measure).LastOrDefault();
|
||||
if (LatestHispeedChange != null)
|
||||
List<Gimmick> HispeedChanges = new List<Gimmick>();
|
||||
Gimmick InitialSpeed = chart.Gimmicks.Where(x => x.GimmickType == GimmickType.HiSpeedChange && CurrentMeasure > x.Measure).LastOrDefault();
|
||||
//Add initial hispeed to list
|
||||
if (InitialSpeed == null)
|
||||
{
|
||||
displayFrames = displayFrames / (float)LatestHispeedChange.HiSpeed;
|
||||
InitialSpeed = new Gimmick();
|
||||
InitialSpeed.HiSpeed = 1.0;
|
||||
}
|
||||
//Add frame time to current time
|
||||
float EndTimeDisplay = chart.GetTime(new BeatInfo(CurrentMeasure)) + ((displayFrames / 60.0f) * 1000.0f);
|
||||
//convert time back to a measureDecimal
|
||||
BeatInfo EndMeasure = chart.GetBeat(EndTimeDisplay);
|
||||
HispeedChanges.Add(InitialSpeed);
|
||||
//add all hispeed changes to list that happen within the current total time to show notes
|
||||
float tempTotalTime = ((displayFrames / 60.0f) * 1000.0f);
|
||||
float currentTime = chart.GetTime(new BeatInfo(CurrentMeasure));
|
||||
float tempEndTime = currentTime + tempTotalTime;
|
||||
HispeedChanges.AddRange(chart.Gimmicks.Where(
|
||||
x => x.Measure >= CurrentMeasure
|
||||
&& chart.GetTime(new BeatInfo(x.Measure)) < tempEndTime
|
||||
&& x.GimmickType == GimmickType.HiSpeedChange).ToList());
|
||||
if (HispeedChanges.Count > 1)
|
||||
{
|
||||
for (int i = 0; i < HispeedChanges.Count; i++)
|
||||
{
|
||||
float timeDiff;
|
||||
float itemTime;
|
||||
float modifiedTime;
|
||||
if (chart.GetTime(HispeedChanges[i].BeatInfo) <= (tempTotalTime + currentTime))
|
||||
{
|
||||
if (i == 0)
|
||||
itemTime = currentTime;
|
||||
else
|
||||
itemTime = chart.GetTime(HispeedChanges[i].BeatInfo);
|
||||
if (i != HispeedChanges.Count - 1)
|
||||
{
|
||||
float tempTestITimeDiff = (currentTime + tempTotalTime) - itemTime;
|
||||
float tempTestIModifiedTime = (tempTestITimeDiff) / (float)(HispeedChanges[i].HiSpeed);
|
||||
if ((currentTime + tempTotalTime - tempTestITimeDiff + tempTestIModifiedTime) < chart.GetTime(HispeedChanges[i + 1].BeatInfo))
|
||||
{
|
||||
timeDiff = (currentTime + tempTotalTime) - itemTime;
|
||||
modifiedTime = timeDiff / (float)HispeedChanges[i].HiSpeed;
|
||||
}
|
||||
else
|
||||
{
|
||||
timeDiff = chart.GetTime(HispeedChanges[i + 1].BeatInfo) - itemTime;
|
||||
modifiedTime = timeDiff / (float)HispeedChanges[i].HiSpeed;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
timeDiff = (currentTime + tempTotalTime) - itemTime;
|
||||
modifiedTime = timeDiff / (float)HispeedChanges[i].HiSpeed;
|
||||
}
|
||||
tempTotalTime = tempTotalTime - timeDiff + modifiedTime;
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
tempTotalTime /= (float)HispeedChanges[0].HiSpeed;
|
||||
}
|
||||
//convert total time to total measure
|
||||
tempEndTime = currentTime + tempTotalTime;
|
||||
BeatInfo EndMeasure = chart.GetBeat(tempEndTime);
|
||||
return EndMeasure.MeasureDecimal - CurrentMeasure;
|
||||
}
|
||||
|
||||
@@ -94,8 +147,21 @@ namespace BAKKA_Editor
|
||||
// Scale from 0-1
|
||||
float objectTimeAsTime = chart.GetTime(new BeatInfo(objectTime));
|
||||
float currentTime = chart.GetTime(new BeatInfo(CurrentMeasure));
|
||||
float totalTimeDisplayed = chart.GetTime(new BeatInfo(CurrentMeasure + GetTotalMeasureShowNotes(chart))) - currentTime;
|
||||
float notescaleInit = 1 - ((objectTimeAsTime - currentTime) * (1 / totalTimeDisplayed));
|
||||
float EndTimeShowNotes = chart.GetTime(new BeatInfo(CurrentMeasure + GetTotalMeasureShowNotes(chart)));
|
||||
float notescaleInit;
|
||||
var LatestHispeedChange = chart.Gimmicks.Where(x => x.GimmickType == GimmickType.HiSpeedChange && CurrentMeasure >= x.Measure).LastOrDefault();
|
||||
if (LatestHispeedChange != null && LatestHispeedChange.HiSpeed < 0.0)
|
||||
{
|
||||
//Reverse
|
||||
notescaleInit = (objectTimeAsTime - currentTime) / (EndTimeShowNotes - currentTime);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Normal
|
||||
notescaleInit = 1 - ((objectTimeAsTime - currentTime) / (EndTimeShowNotes - currentTime));
|
||||
}
|
||||
//Scale math
|
||||
notescaleInit = 0.001f + (float)Math.Pow(notescaleInit, 3.0f) - (0.501f * (float)Math.Pow(notescaleInit, 2.0f)) + (0.5f * notescaleInit);
|
||||
return notescaleInit;
|
||||
}
|
||||
|
||||
@@ -103,8 +169,7 @@ namespace BAKKA_Editor
|
||||
{
|
||||
ArcInfo info = new();
|
||||
|
||||
float notescaleInit = GetNoteScaleFromMeasure(chart, objectTime);
|
||||
info.NoteScale = (float)Math.Pow(10.0f, notescaleInit) / 10.0f;
|
||||
info.NoteScale = GetNoteScaleFromMeasure(chart, objectTime);
|
||||
float scaledRectSize = DrawRect.Width * info.NoteScale;
|
||||
float scaledRadius = scaledRectSize / 2.0f;
|
||||
info.Rect = new RectangleF(
|
||||
|
||||
+5
@@ -96,6 +96,11 @@
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
this.initOffsetNumeric.Minimum = new decimal(new int[] {
|
||||
9999,
|
||||
0,
|
||||
0,
|
||||
-2147483648});
|
||||
this.initOffsetNumeric.Name = "initOffsetNumeric";
|
||||
this.initOffsetNumeric.Size = new System.Drawing.Size(100, 23);
|
||||
this.initOffsetNumeric.TabIndex = 26;
|
||||
|
||||
Generated
+4
-4
@@ -290,12 +290,12 @@
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.sizeTrackBar.Location = new System.Drawing.Point(50, 81);
|
||||
this.sizeTrackBar.Maximum = 60;
|
||||
this.sizeTrackBar.Minimum = 1;
|
||||
this.sizeTrackBar.Minimum = 4;
|
||||
this.sizeTrackBar.Name = "sizeTrackBar";
|
||||
this.sizeTrackBar.Size = new System.Drawing.Size(183, 45);
|
||||
this.sizeTrackBar.TabIndex = 5;
|
||||
this.sizeTrackBar.TickStyle = System.Windows.Forms.TickStyle.None;
|
||||
this.sizeTrackBar.Value = 1;
|
||||
this.sizeTrackBar.Value = 4;
|
||||
this.sizeTrackBar.ValueChanged += new System.EventHandler(this.sizeTrackBar_ValueChanged);
|
||||
//
|
||||
// sizeNumeric
|
||||
@@ -307,7 +307,7 @@
|
||||
0,
|
||||
0});
|
||||
this.sizeNumeric.Minimum = new decimal(new int[] {
|
||||
1,
|
||||
4,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
@@ -315,7 +315,7 @@
|
||||
this.sizeNumeric.Size = new System.Drawing.Size(38, 23);
|
||||
this.sizeNumeric.TabIndex = 4;
|
||||
this.sizeNumeric.Value = new decimal(new int[] {
|
||||
1,
|
||||
4,
|
||||
0,
|
||||
0,
|
||||
0});
|
||||
|
||||
@@ -130,6 +130,7 @@ namespace BAKKA_Editor
|
||||
showGimmicksInCircleViewToolStripMenuItem.Checked = userSettings.ViewSettings.ShowGimmicks;
|
||||
selectLastInsertedNoteToolStripMenuItem.Checked = userSettings.ViewSettings.SelectLastInsertedNote;
|
||||
visualHispeedNumeric.Value = (decimal)userSettings.ViewSettings.HispeedSetting;
|
||||
trackBarVolume.Value = userSettings.ViewSettings.Volume;
|
||||
autoSaveTimer.Interval = userSettings.SaveSettings.AutoSaveInterval * 60000;
|
||||
autoSaveTimer.Enabled = true;
|
||||
// Update hotkey labels
|
||||
@@ -354,6 +355,7 @@ namespace BAKKA_Editor
|
||||
userSettings.ViewSettings.ShowGimmicks = showGimmicksInCircleViewToolStripMenuItem.Checked;
|
||||
userSettings.ViewSettings.SelectLastInsertedNote = selectLastInsertedNoteToolStripMenuItem.Checked;
|
||||
userSettings.ViewSettings.HispeedSetting = circleView.Hispeed;
|
||||
userSettings.ViewSettings.Volume = trackBarVolume.Value;
|
||||
userSettings.SaveSettings.AutoSaveInterval = autoSaveTimer.Interval / 60000;
|
||||
//Update user settings.toml
|
||||
if (File.Exists("settings.toml"))
|
||||
@@ -363,43 +365,57 @@ namespace BAKKA_Editor
|
||||
private void SetSelectedObject(NoteType type)
|
||||
{
|
||||
currentNoteType = type;
|
||||
int minSize = 1;
|
||||
switch (type)
|
||||
{
|
||||
case NoteType.TouchNoBonus:
|
||||
updateLabel("Touch");
|
||||
minSize = 4;
|
||||
break;
|
||||
case NoteType.TouchBonus:
|
||||
updateLabel("Touch [Bonus]");
|
||||
minSize = 5;
|
||||
break;
|
||||
case NoteType.SnapRedNoBonus:
|
||||
updateLabel("Snap (R)");
|
||||
minSize = 6;
|
||||
break;
|
||||
case NoteType.SnapBlueNoBonus:
|
||||
updateLabel("Snap (B)");
|
||||
minSize = 6;
|
||||
break;
|
||||
case NoteType.SlideOrangeNoBonus:
|
||||
updateLabel("Slide (O)");
|
||||
minSize = 5;
|
||||
break;
|
||||
case NoteType.SlideOrangeBonus:
|
||||
updateLabel("Slide (O) [Bonus]");
|
||||
minSize = 7;
|
||||
break;
|
||||
case NoteType.SlideGreenNoBonus:
|
||||
updateLabel("Slide (G)");
|
||||
minSize = 5;
|
||||
break;
|
||||
case NoteType.SlideGreenBonus:
|
||||
updateLabel("Slide (G) [Bonus]");
|
||||
minSize = 7;
|
||||
break;
|
||||
case NoteType.HoldStartNoBonus:
|
||||
updateLabel("Hold Start");
|
||||
minSize = 2;
|
||||
break;
|
||||
case NoteType.HoldJoint:
|
||||
if (endHoldCheck.Checked)
|
||||
{
|
||||
updateLabel("Hold End");
|
||||
currentNoteType = NoteType.HoldEnd;
|
||||
minSize = 1;
|
||||
}
|
||||
else
|
||||
{
|
||||
updateLabel("Hold Middle");
|
||||
minSize = 0;
|
||||
}
|
||||
break;
|
||||
case NoteType.HoldEnd:
|
||||
endHoldCheck.Checked = true;
|
||||
@@ -412,6 +428,7 @@ namespace BAKKA_Editor
|
||||
updateLabel("Mask Add (Counter-Clockwise)");
|
||||
else
|
||||
updateLabel("Mask Add (From Center)");
|
||||
minSize = 1;
|
||||
break;
|
||||
case NoteType.MaskRemove:
|
||||
if (clockwiseMaskRadio.Checked)
|
||||
@@ -420,38 +437,53 @@ namespace BAKKA_Editor
|
||||
updateLabel("Mask Remove (Counter-Clockwise)");
|
||||
else
|
||||
updateLabel("Mask Remove (From Center)");
|
||||
minSize = 1;
|
||||
break;
|
||||
case NoteType.EndOfChart:
|
||||
updateLabel("End of Chart");
|
||||
minSize = 60;
|
||||
break;
|
||||
case NoteType.Chain:
|
||||
updateLabel("Chain");
|
||||
minSize = 4;
|
||||
break;
|
||||
case NoteType.TouchBonusFlair:
|
||||
updateLabel("Touch [R Note]");
|
||||
minSize = 6;
|
||||
break;
|
||||
case NoteType.SnapRedBonusFlair:
|
||||
updateLabel("Snap (R) [R Note]");
|
||||
minSize = 8;
|
||||
break;
|
||||
case NoteType.SnapBlueBonusFlair:
|
||||
updateLabel("Snap (B) [R Note]");
|
||||
minSize = 8;
|
||||
break;
|
||||
case NoteType.SlideOrangeBonusFlair:
|
||||
updateLabel("Slide (O) [R Note]");
|
||||
minSize = 10;
|
||||
break;
|
||||
case NoteType.SlideGreenBonusFlair:
|
||||
updateLabel("Slide (G) [R Note]");
|
||||
minSize = 10;
|
||||
break;
|
||||
case NoteType.HoldStartBonusFlair:
|
||||
updateLabel("Hold Start [R Note]");
|
||||
minSize = 8;
|
||||
break;
|
||||
case NoteType.ChainBonusFlair:
|
||||
updateLabel("Chain [R Note]");
|
||||
minSize = 10;
|
||||
break;
|
||||
default:
|
||||
updateLabel("None Selected");
|
||||
minSize = 1;
|
||||
break;
|
||||
}
|
||||
if (sizeNumeric.Value < minSize) sizeNumeric.Value = minSize;
|
||||
if (sizeTrackBar.Value < minSize) sizeTrackBar.Value = minSize;
|
||||
sizeNumeric.Minimum = minSize;
|
||||
sizeTrackBar.Minimum = minSize;
|
||||
circlePanel.Invalidate();
|
||||
}
|
||||
|
||||
@@ -599,7 +631,13 @@ namespace BAKKA_Editor
|
||||
}
|
||||
updateTime();
|
||||
if (currentSong != null && !IsSongPlaying() && valueTriggerEvent != EventSource.TrackBar)
|
||||
songTrackBar.Value = chart.GetTime(new BeatInfo((int)measureNumeric.Value, (int)beat1Numeric.Value * 1920 / (int)beat2Numeric.Value));
|
||||
{
|
||||
int time = chart.GetTime(new BeatInfo((int)measureNumeric.Value, (int)beat1Numeric.Value * 1920 / (int)beat2Numeric.Value));
|
||||
if (time < 0)
|
||||
songTrackBar.Value = 0;
|
||||
else
|
||||
songTrackBar.Value = time;
|
||||
}
|
||||
|
||||
valueTriggerEvent = EventSource.None;
|
||||
}
|
||||
@@ -1089,6 +1127,8 @@ namespace BAKKA_Editor
|
||||
return;
|
||||
}
|
||||
|
||||
int initialSize = (int)sizeNumeric.Value;
|
||||
|
||||
// X and Y are relative to the upper left of the panel
|
||||
float xCen = e.X - (circlePanel.Width / 2);
|
||||
float yCen = -(e.Y - (circlePanel.Height / 2));
|
||||
@@ -1098,25 +1138,29 @@ namespace BAKKA_Editor
|
||||
if (theta == circleView.mouseDownPos)
|
||||
{
|
||||
positionNumeric.Value = circleView.mouseDownPos;
|
||||
sizeNumeric.Value = 1;
|
||||
initialSize = 1;
|
||||
}
|
||||
else if ((theta > circleView.mouseDownPos || circleView.rolloverPos) && !circleView.rolloverNeg)
|
||||
{
|
||||
positionNumeric.Value = circleView.mouseDownPos;
|
||||
if (circleView.rolloverPos)
|
||||
sizeNumeric.Value = (int)Math.Min(theta + 60 - circleView.mouseDownPos + 1, 60);
|
||||
initialSize = (int)Math.Min(theta + 60 - circleView.mouseDownPos + 1, 60);
|
||||
else
|
||||
sizeNumeric.Value = theta - circleView.mouseDownPos + 1;
|
||||
initialSize = theta - circleView.mouseDownPos + 1;
|
||||
}
|
||||
else if (theta < circleView.mouseDownPos || circleView.rolloverNeg)
|
||||
{
|
||||
positionNumeric.Value = theta;
|
||||
if (circleView.rolloverNeg)
|
||||
sizeNumeric.Value = (int)Math.Min(circleView.mouseDownPos + 60 - theta + 1, 60);
|
||||
initialSize = (int)Math.Min(circleView.mouseDownPos + 60 - theta + 1, 60);
|
||||
else
|
||||
sizeNumeric.Value = circleView.mouseDownPos - theta + 1;
|
||||
initialSize = circleView.mouseDownPos - theta + 1;
|
||||
}
|
||||
|
||||
if (initialSize < sizeNumeric.Minimum) sizeNumeric.Value = sizeNumeric.Minimum;
|
||||
else if (initialSize > 60) sizeNumeric.Value = 60;
|
||||
else sizeNumeric.Value = initialSize;
|
||||
|
||||
circlePanel.Invalidate();
|
||||
}
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ namespace BAKKA_Editor
|
||||
public bool SelectLastInsertedNote { get; set; } = true;
|
||||
public bool ShowGimmicks { get; set; } = true;
|
||||
public float HispeedSetting { get; set; } = 1.5f;
|
||||
public int Volume { get; set; } = 100;
|
||||
}
|
||||
|
||||
internal class SaveSettings
|
||||
|
||||
Reference in New Issue
Block a user