Fix tone helper drawn on wrong octave (#746)
* Add GetCurrentBeat() * Clamp tone helper to the octave of target note Prevent tone helper from being off by an octave
This commit is contained in:
1 parent
bdda564296
commit
68129ec451
3 files changed
+13
-6
No files matched your search
@@ -571,6 +571,11 @@ namespace Vocaluxe.Base
|
|||||||
return CGame.GetPoints();
|
return CGame.GetPoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int GetCurrentBeat()
|
||||||
|
{
|
||||||
|
return CGame.CurrentBeat;
|
||||||
|
}
|
||||||
|
|
||||||
public float GetMidRecordedBeat()
|
public float GetMidRecordedBeat()
|
||||||
{
|
{
|
||||||
return CGame.MidRecordedBeat;
|
return CGame.MidRecordedBeat;
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ namespace VocaluxeLib
|
|||||||
void SetNumPlayer(int numPlayer);
|
void SetNumPlayer(int numPlayer);
|
||||||
SPlayer[] GetPlayers();
|
SPlayer[] GetPlayers();
|
||||||
CPoints GetPoints();
|
CPoints GetPoints();
|
||||||
|
int GetCurrentBeat();
|
||||||
float GetMidRecordedBeat();
|
float GetMidRecordedBeat();
|
||||||
int GetRecordedBeat();
|
int GetRecordedBeat();
|
||||||
|
|
||||||
|
|||||||
@@ -102,7 +102,6 @@ namespace VocaluxeLib.Menu.SingNotes
|
|||||||
|
|
||||||
var color = new SColorF(_Color, _Color.A * Alpha);
|
var color = new SColorF(_Color, _Color.A * Alpha);
|
||||||
|
|
||||||
float baseLine = line.BaseLine;
|
|
||||||
foreach (CSongNote note in line.Notes)
|
foreach (CSongNote note in line.Notes)
|
||||||
{
|
{
|
||||||
if (note.Type != ENoteType.Freestyle)
|
if (note.Type != ENoteType.Freestyle)
|
||||||
@@ -115,7 +114,7 @@ namespace VocaluxeLib.Menu.SingNotes
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (CBase.Config.GetDrawToneHelper() == EOffOn.TR_CONFIG_ON)
|
if (CBase.Config.GetDrawToneHelper() == EOffOn.TR_CONFIG_ON)
|
||||||
_DrawToneHelper((int)baseLine, (CBase.Game.GetMidRecordedBeat() - line.FirstNoteBeat) / beats * Rect.W);
|
_DrawToneHelper(line, (CBase.Game.GetMidRecordedBeat() - line.FirstNoteBeat) / beats * Rect.W);
|
||||||
|
|
||||||
List<CSungLine> sungLines = CBase.Game.GetPlayers()[_Player].SungLines;
|
List<CSungLine> sungLines = CBase.Game.GetPlayers()[_Player].SungLines;
|
||||||
if (_CurrentLine >= 0 && _CurrentLine < sungLines.Count)
|
if (_CurrentLine >= 0 && _CurrentLine < sungLines.Count)
|
||||||
@@ -202,14 +201,16 @@ namespace VocaluxeLib.Menu.SingNotes
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void _DrawToneHelper(int baseLine, float offsetX)
|
private void _DrawToneHelper(CSongLine line, float offsetX)
|
||||||
{
|
{
|
||||||
int tonePlayer = CBase.Record.GetToneAbs(_Player);
|
int tonePlayer = CBase.Record.GetToneAbs(_Player);
|
||||||
|
int noteIndex = line.FindPreviousNote(CBase.Game.GetCurrentBeat()).Clamp(0,line.Notes.Count()-1);
|
||||||
|
int note = line.Notes[noteIndex].Tone;
|
||||||
|
|
||||||
while (tonePlayer - baseLine < 0)
|
while (tonePlayer - note < -6)
|
||||||
tonePlayer += 12;
|
tonePlayer += 12;
|
||||||
|
|
||||||
while (tonePlayer - baseLine > 12)
|
while (tonePlayer - note > 6)
|
||||||
tonePlayer -= 12;
|
tonePlayer -= 12;
|
||||||
|
|
||||||
if (offsetX < 0f)
|
if (offsetX < 0f)
|
||||||
@@ -220,7 +221,7 @@ namespace VocaluxeLib.Menu.SingNotes
|
|||||||
|
|
||||||
var drawRect = new SRectF(
|
var drawRect = new SRectF(
|
||||||
Rect.X - _NoteLineHeight + offsetX,
|
Rect.X - _NoteLineHeight + offsetX,
|
||||||
Rect.Y + _NoteLineHeight * (CBase.Settings.GetNumNoteLines() - 1 - (tonePlayer - baseLine) / 2f),
|
Rect.Y + _NoteLineHeight * (CBase.Settings.GetNumNoteLines() - 1 - (tonePlayer - line.BaseLine) / 2f),
|
||||||
_NoteLineHeight,
|
_NoteLineHeight,
|
||||||
_NoteLineHeight,
|
_NoteLineHeight,
|
||||||
Rect.Z
|
Rect.Z
|
||||||
|
|||||||
Reference in new issue
Block a user