6 Commits
Author SHA1 Message Date
Goatgarien 27497c92ba update startup min size 2023-02-16 05:54:34 -08:00
Goatgarien 076e86b643 2.1.6 2023-02-16 05:51:55 -08:00
Goatgarien d9a72132a0 Enforce minimum note sizes 2023-02-16 05:40:58 -08:00
Goatgarien 23883e46b6 Funny version number update 2023-02-16 01:10:42 -08:00
Goatgarien bfa9f8f791 Save volume between launches 2023-02-16 01:06:40 -08:00
Goatgarien e695203087 I should chart instead of messing with this 2023-02-16 00:58:03 -08:00
6 changed files with 138 additions and 23 deletions
+2 -2
View File
@@ -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
View File
@@ -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
View File
@@ -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;
+4 -4
View File
@@ -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});
+50 -6
View File
@@ -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();
}
+1
View File
@@ -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