changed base handling in VocaluxeLib

This commit is contained in:
Alexander Eckart committed 2013-02-22 17:57:47 +01:00
1 parent 08658e20e3
commit b4f77d50b2
42 files changed
+801 -924

No files matched your search

+51 -53
View File
@@ -42,7 +42,6 @@ namespace Vocaluxe.Menu.SingNotes
public abstract class CSingNotes : ISingNotes, IMenuElement
{
protected int _PartyModeID;
private Basic _Base;
private SThemeSingBar _Theme;
private bool _ThemeLoaded;
@@ -63,10 +62,9 @@ namespace Vocaluxe.Menu.SingNotes
set { _BarPos = value; }
}
public CSingNotes(Basic Base, int PartyModeID)
public CSingNotes(int PartyModeID)
{
_PartyModeID = PartyModeID;
_Base = Base;
_Theme = new SThemeSingBar();
_ThemeLoaded = false;
@@ -96,10 +94,10 @@ namespace Vocaluxe.Menu.SingNotes
_ThemeLoaded &= xmlReader.GetValue(item + "/SkinToneHelper", ref _Theme.SkinToneHelperName, String.Empty);
_ThemeLoaded &= xmlReader.GetValue(item + "/SkinPerfectNoteStar", ref _Theme.SkinPerfectNoteStarName, String.Empty);
_BarPos = new SRectF[_Base.Settings.GetMaxNumPlayer(), _Base.Settings.GetMaxNumPlayer()];
for (int numplayer = 0; numplayer < _Base.Settings.GetMaxNumPlayer(); numplayer++)
_BarPos = new SRectF[CBase.Base.Settings.GetMaxNumPlayer(), CBase.Base.Settings.GetMaxNumPlayer()];
for (int numplayer = 0; numplayer < CBase.Base.Settings.GetMaxNumPlayer(); numplayer++)
{
for (int player = 0; player < _Base.Settings.GetMaxNumPlayer(); player++)
for (int player = 0; player < CBase.Base.Settings.GetMaxNumPlayer(); player++)
{
if (player <= numplayer)
{
@@ -160,9 +158,9 @@ namespace Vocaluxe.Menu.SingNotes
writer.WriteComment(" <P$N$X>, <P$N$Y>, <P$N$Z>, <P$N$W>, <P$N$H>");
writer.WriteComment(" position, width and height of note bars: first index = player number; second index = num players seen on screen");
writer.WriteStartElement("BarPositions");
for (int numplayer = 0; numplayer < _Base.Settings.GetMaxNumPlayer(); numplayer++)
for (int numplayer = 0; numplayer < CBase.Base.Settings.GetMaxNumPlayer(); numplayer++)
{
for (int player = 0; player < _Base.Settings.GetMaxNumPlayer(); player++)
for (int player = 0; player < CBase.Base.Settings.GetMaxNumPlayer(); player++)
{
if (player <= numplayer)
{
@@ -296,7 +294,7 @@ namespace Vocaluxe.Menu.SingNotes
CLine Line = _PlayerNotes[n].Lines[_PlayerNotes[n].LineNr];
if (_Base.Config.GetDrawNoteLines() == EOffOn.TR_CONFIG_ON)
if (CBase.Base.Config.GetDrawNoteLines() == EOffOn.TR_CONFIG_ON)
{
DrawNoteLines(_PlayerNotes[n].Rect, new SColorF(0.5f, 0.5f, 0.5f, 0.5f * _PlayerNotes[n].Alpha));
}
@@ -306,7 +304,7 @@ namespace Vocaluxe.Menu.SingNotes
float w = _PlayerNotes[n].Rect.W;
float h = _PlayerNotes[n].Rect.H;
float dh = h / _Base.Settings.GetNumNoteLines() * (2f - (int)_Base.Game.GetPlayer()[_PlayerNotes[n].PlayerNr].Difficulty) / 4f;
float dh = h / CBase.Base.Settings.GetNumNoteLines() * (2f - (int)CBase.Base.Game.GetPlayer()[_PlayerNotes[n].PlayerNr].Difficulty) / 4f;
float beats = Line.LastNoteBeat - Line.FirstNoteBeat + 1;
@@ -329,9 +327,9 @@ namespace Vocaluxe.Menu.SingNotes
SRectF rect = new SRectF(
_PlayerNotes[n].Rect.X + (note.StartBeat - Line.FirstNoteBeat) / beats * w,
_PlayerNotes[n].Rect.Y + (_Base.Settings.GetNumNoteLines() - 1 - (note.Tone - BaseLine)/2) / _Base.Settings.GetNumNoteLines() * h - dh,
_PlayerNotes[n].Rect.Y + (CBase.Base.Settings.GetNumNoteLines() - 1 - (note.Tone - BaseLine)/2) / CBase.Base.Settings.GetNumNoteLines() * h - dh,
width,
h / _Base.Settings.GetNumNoteLines() + 2 * dh,
h / CBase.Base.Settings.GetNumNoteLines() + 2 * dh,
_PlayerNotes[n].Rect.Z
);
@@ -346,9 +344,9 @@ namespace Vocaluxe.Menu.SingNotes
}
}
if (_Base.Config.GetDrawToneHelper() == EOffOn.TR_CONFIG_ON)
if (CBase.Base.Config.GetDrawToneHelper() == EOffOn.TR_CONFIG_ON)
{
DrawToneHelper(n, (int)BaseLine, (_Base.Game.GetMidBeatD() - Line.FirstNoteBeat) / beats * w);
DrawToneHelper(n, (int)BaseLine, (CBase.Base.Game.GetMidBeatD() - Line.FirstNoteBeat) / beats * w);
}
int i = 0;
@@ -367,7 +365,7 @@ namespace Vocaluxe.Menu.SingNotes
perfline.Draw();
}
if (SingLine == null || SingLine.Count == 0 || _Base.Game.GetPlayer()[Player].CurrentLine == -1 || SingLine.Count <= _Base.Game.GetPlayer()[Player].CurrentLine)
if (SingLine == null || SingLine.Count == 0 || CBase.Base.Game.GetPlayer()[Player].CurrentLine == -1 || SingLine.Count <= CBase.Base.Game.GetPlayer()[Player].CurrentLine)
{
foreach (CParticleEffect stars in _PlayerNotes[n].GoldenStars)
{
@@ -377,20 +375,20 @@ namespace Vocaluxe.Menu.SingNotes
return;
}
foreach (CNote note in SingLine[_Base.Game.GetPlayer()[Player].CurrentLine].Notes)
foreach (CNote note in SingLine[CBase.Base.Game.GetPlayer()[Player].CurrentLine].Notes)
{
if (note.StartBeat >= Line.FirstNoteBeat && note.EndBeat <= Line.LastNoteBeat)
{
float width = note.Duration / beats * w;
if (note.EndBeat == _Base.Game.GetCurrentBeatD())
width -= (1 - (_Base.Game.GetMidBeatD() - _Base.Game.GetCurrentBeatD())) / beats * w;
if (note.EndBeat == CBase.Base.Game.GetCurrentBeatD())
width -= (1 - (CBase.Base.Game.GetMidBeatD() - CBase.Base.Game.GetCurrentBeatD())) / beats * w;
SRectF rect = new SRectF(
_PlayerNotes[n].Rect.X + (note.StartBeat - Line.FirstNoteBeat) / beats * w,
_PlayerNotes[n].Rect.Y + (_Base.Settings.GetNumNoteLines() - 1 - (note.Tone - BaseLine)/2) / _Base.Settings.GetNumNoteLines() * h - dh,
_PlayerNotes[n].Rect.Y + (CBase.Base.Settings.GetNumNoteLines() - 1 - (note.Tone - BaseLine)/2) / CBase.Base.Settings.GetNumNoteLines() * h - dh,
width,
h / _Base.Settings.GetNumNoteLines() + 2 * dh,
h / CBase.Base.Settings.GetNumNoteLines() + 2 * dh,
_PlayerNotes[n].Rect.Z
);
@@ -400,14 +398,14 @@ namespace Vocaluxe.Menu.SingNotes
DrawNote(rect, color, f);
if (note.EndBeat >= _Base.Game.GetCurrentBeatD() && note.Hit && note.NoteType == ENoteType.Golden)
if (note.EndBeat >= CBase.Base.Game.GetCurrentBeatD() && note.Hit && note.NoteType == ENoteType.Golden)
{
SRectF re = new SRectF(rect);
re.W = (_Base.Game.GetMidBeatD() - note.StartBeat) / beats * w;
re.W = (CBase.Base.Game.GetMidBeatD() - note.StartBeat) / beats * w;
AddFlare(re, n);
}
if (note.Perfect && note.EndBeat < _Base.Game.GetCurrentBeatD())
if (note.Perfect && note.EndBeat < CBase.Base.Game.GetCurrentBeatD())
{
AddPerfectNote(rect, n);
note.Perfect = false;
@@ -415,13 +413,13 @@ namespace Vocaluxe.Menu.SingNotes
}
}
int currentLine = _Base.Game.GetPlayer()[Player].SingLine.Count - 1;
int currentLine = CBase.Base.Game.GetPlayer()[Player].SingLine.Count - 1;
if (currentLine > 0)
{
if (_Base.Game.GetPlayer()[Player].SingLine[currentLine - 1].PerfectLine)
if (CBase.Base.Game.GetPlayer()[Player].SingLine[currentLine - 1].PerfectLine)
{
AddPerfectLine(n);
_Base.Game.GetPlayer()[Player].SingLine[currentLine - 1].PerfectLine = false;
CBase.Base.Game.GetPlayer()[Player].SingLine[currentLine - 1].PerfectLine = false;
}
}
@@ -522,18 +520,18 @@ namespace Vocaluxe.Menu.SingNotes
Rect.Z
);
STexture NoteBegin = _Base.Theme.GetSkinTexture(_Theme.SkinLeftName, _PartyModeID);
STexture NoteMiddle = _Base.Theme.GetSkinTexture(_Theme.SkinMiddleName, _PartyModeID);
STexture NoteEnd = _Base.Theme.GetSkinTexture(_Theme.SkinRightName, _PartyModeID);
STexture NoteBegin = CBase.Base.Theme.GetSkinTexture(_Theme.SkinLeftName, _PartyModeID);
STexture NoteMiddle = CBase.Base.Theme.GetSkinTexture(_Theme.SkinMiddleName, _PartyModeID);
STexture NoteEnd = CBase.Base.Theme.GetSkinTexture(_Theme.SkinRightName, _PartyModeID);
float dx = NoteBegin.width * r.H / NoteBegin.height;
if (2 * dx > r.W)
dx = r.W / 2;
_Base.Drawing.DrawTexture(NoteBegin, new SRectF(r.X, r.Y, dx, r.H, r.Z), Color);
_Base.Drawing.DrawTexture(NoteMiddle, new SRectF(r.X + dx, r.Y, r.W - 2 * dx, r.H, r.Z), Color);
_Base.Drawing.DrawTexture(NoteEnd, new SRectF(r.X + r.W - dx, r.Y, dx, r.H, r.Z), Color);
CBase.Base.Drawing.DrawTexture(NoteBegin, new SRectF(r.X, r.Y, dx, r.H, r.Z), Color);
CBase.Base.Drawing.DrawTexture(NoteMiddle, new SRectF(r.X + dx, r.Y, r.W - 2 * dx, r.H, r.Z), Color);
CBase.Base.Drawing.DrawTexture(NoteEnd, new SRectF(r.X + r.W - dx, r.Y, dx, r.H, r.Z), Color);
}
private void DrawNoteBG(SRectF Rect, SColorF Color, float factor, Stopwatch Timer)
@@ -564,9 +562,9 @@ namespace Vocaluxe.Menu.SingNotes
Rect.Z
);
STexture NoteBackgroundBegin = _Base.Theme.GetSkinTexture(_Theme.SkinBackgroundLeftName, _PartyModeID);
STexture NoteBackgroundMiddle = _Base.Theme.GetSkinTexture(_Theme.SkinBackgroundMiddleName, _PartyModeID);
STexture NoteBackgroundEnd = _Base.Theme.GetSkinTexture(_Theme.SkinBackgroundRightName, _PartyModeID);
STexture NoteBackgroundBegin = CBase.Base.Theme.GetSkinTexture(_Theme.SkinBackgroundLeftName, _PartyModeID);
STexture NoteBackgroundMiddle = CBase.Base.Theme.GetSkinTexture(_Theme.SkinBackgroundMiddleName, _PartyModeID);
STexture NoteBackgroundEnd = CBase.Base.Theme.GetSkinTexture(_Theme.SkinBackgroundRightName, _PartyModeID);
float dx = NoteBackgroundBegin.width * r.H / NoteBackgroundBegin.height;
if (2 * dx > r.W)
@@ -574,17 +572,17 @@ namespace Vocaluxe.Menu.SingNotes
SColorF col = new SColorF(Color.R, Color.G, Color.B, Color.A * alpha);
_Base.Drawing.DrawTexture(NoteBackgroundBegin, new SRectF(r.X, r.Y, dx, r.H, r.Z), col);
_Base.Drawing.DrawTexture(NoteBackgroundMiddle, new SRectF(r.X + dx, r.Y, r.W - 2 * dx, r.H, r.Z), col);
_Base.Drawing.DrawTexture(NoteBackgroundEnd, new SRectF(r.X + r.W - dx, r.Y, dx, r.H, r.Z), col);
CBase.Base.Drawing.DrawTexture(NoteBackgroundBegin, new SRectF(r.X, r.Y, dx, r.H, r.Z), col);
CBase.Base.Drawing.DrawTexture(NoteBackgroundMiddle, new SRectF(r.X + dx, r.Y, r.W - 2 * dx, r.H, r.Z), col);
CBase.Base.Drawing.DrawTexture(NoteBackgroundEnd, new SRectF(r.X + r.W - dx, r.Y, dx, r.H, r.Z), col);
}
protected void DrawNoteLines(SRectF Rect, SColorF Color)
{
for (int i = 0; i < _Base.Settings.GetNumNoteLines() - 1; i++)
for (int i = 0; i < CBase.Base.Settings.GetNumNoteLines() - 1; i++)
{
float y = Rect.Y + Rect.H / _Base.Settings.GetNumNoteLines() * (i + 1);
_Base.Drawing.DrawColor(Color, new SRectF(Rect.X, y, Rect.W, 1, -1.0f));
float y = Rect.Y + Rect.H / CBase.Base.Settings.GetNumNoteLines() * (i + 1);
CBase.Base.Drawing.DrawColor(Color, new SRectF(Rect.X, y, Rect.W, 1, -1.0f));
}
}
@@ -614,7 +612,7 @@ namespace Vocaluxe.Menu.SingNotes
);
int numstars = (int)(r.W * 0.25f);
CParticleEffect stars = new CParticleEffect(_Base, _PartyModeID, numstars, new SColorF(1f, 1f, 0f, 1f), r, _Theme.SkinGoldenStarName, 20, EParticleType.Star);
CParticleEffect stars = new CParticleEffect(_PartyModeID, numstars, new SColorF(1f, 1f, 0f, 1f), r, _Theme.SkinGoldenStarName, 20, EParticleType.Star);
_PlayerNotes[n].GoldenStars.Add(stars);
}
}
@@ -642,7 +640,7 @@ namespace Vocaluxe.Menu.SingNotes
Rect.Z
);
CParticleEffect flares = new CParticleEffect(_Base, _PartyModeID, 15, new SColorF(1f, 1f, 1f, 1f), r, _Theme.SkinGoldenStarName, 20, EParticleType.Flare);
CParticleEffect flares = new CParticleEffect(_PartyModeID, 15, new SColorF(1f, 1f, 1f, 1f), r, _Theme.SkinGoldenStarName, 20, EParticleType.Flare);
_PlayerNotes[n].Flares.Add(flares);
}
@@ -669,7 +667,7 @@ namespace Vocaluxe.Menu.SingNotes
Rect.Z
);
STexture NoteBegin = _Base.Theme.GetSkinTexture(_Theme.SkinLeftName, _PartyModeID);
STexture NoteBegin = CBase.Base.Theme.GetSkinTexture(_Theme.SkinLeftName, _PartyModeID);
float dx = NoteBegin.width * r.H / NoteBegin.height;
if (2 * dx > r.W)
dx = r.W / 2;
@@ -682,19 +680,19 @@ namespace Vocaluxe.Menu.SingNotes
Rect.Z
);
CParticleEffect stars = new CParticleEffect(_Base, _PartyModeID, _Base.Game.GetRandom(2) + 1, new SColorF(1f, 1f, 1f, 1f), r, _Theme.SkinPerfectNoteStarName, 35, EParticleType.PerfNoteStar);
CParticleEffect stars = new CParticleEffect(_PartyModeID, CBase.Base.Game.GetRandom(2) + 1, new SColorF(1f, 1f, 1f, 1f), r, _Theme.SkinPerfectNoteStarName, 35, EParticleType.PerfNoteStar);
_PlayerNotes[n].PerfectNoteEffect.Add(stars);
}
private void AddPerfectLine(int n)
{
CParticleEffect twinkle = new CParticleEffect(_Base, _PartyModeID, 200, _PlayerNotes[n].Color, _PlayerNotes[n].Rect, _Theme.SkinGoldenStarName, 25, EParticleType.Twinkle);
CParticleEffect twinkle = new CParticleEffect(_PartyModeID, 200, _PlayerNotes[n].Color, _PlayerNotes[n].Rect, _Theme.SkinGoldenStarName, 25, EParticleType.Twinkle);
_PlayerNotes[n].PerfectLineTwinkle.Add(twinkle);
}
private void DrawToneHelper(int n, int BaseLine, float XOffset)
{
int TonePlayer = _Base.Record.GetToneAbs(_PlayerNotes[n].PlayerNr);
int TonePlayer = CBase.Base.Record.GetToneAbs(_PlayerNotes[n].PlayerNr);
SRectF Rect = _PlayerNotes[n].Rect;
@@ -710,10 +708,10 @@ namespace Vocaluxe.Menu.SingNotes
if (XOffset > Rect.W)
XOffset = Rect.W;
float dy = Rect.H / (_Base.Settings.GetNumNoteLines());
float dy = Rect.H / (CBase.Base.Settings.GetNumNoteLines());
SRectF rect = new SRectF(
Rect.X - dy + XOffset,
Rect.Y + dy * (_Base.Settings.GetNumNoteLines() - 1 - (TonePlayer - BaseLine) / 2f),
Rect.Y + dy * (CBase.Base.Settings.GetNumNoteLines() - 1 - (TonePlayer - BaseLine) / 2f),
dy,
dy,
Rect.Z
@@ -725,8 +723,8 @@ namespace Vocaluxe.Menu.SingNotes
_PlayerNotes[n].Color.B,
_PlayerNotes[n].Color.A * _PlayerNotes[n].Alpha);
STexture ToneHelper = _Base.Theme.GetSkinTexture(_Theme.SkinToneHelperName, _PartyModeID);
_Base.Drawing.DrawTexture(ToneHelper, rect, color);
STexture ToneHelper = CBase.Base.Theme.GetSkinTexture(_Theme.SkinToneHelperName, _PartyModeID);
CBase.Base.Drawing.DrawTexture(ToneHelper, rect, color);
while (TonePlayer - BaseLine < 12)
@@ -737,13 +735,13 @@ namespace Vocaluxe.Menu.SingNotes
rect = new SRectF(
Rect.X - dy + XOffset,
Rect.Y + dy * (_Base.Settings.GetNumNoteLines() - 1 - (TonePlayer - BaseLine) / 2f),
Rect.Y + dy * (CBase.Base.Settings.GetNumNoteLines() - 1 - (TonePlayer - BaseLine) / 2f),
dy,
dy,
Rect.Z
);
_Base.Drawing.DrawTexture(ToneHelper, rect, color);
CBase.Base.Drawing.DrawTexture(ToneHelper, rect, color);
}
#region ThemeEdit