diff --git a/Vocaluxe/Base/CDraw.cs b/Vocaluxe/Base/CDraw.cs index e468162e..8799b2cc 100644 --- a/Vocaluxe/Base/CDraw.cs +++ b/Vocaluxe/Base/CDraw.cs @@ -269,491 +269,4 @@ namespace Vocaluxe.Base return _Draw.TextureCount(); } } - - enum EParticeType - { - Twinkle, - Star, - Snow, - Flare, - PerfNoteStar - } - - class CParticle - { - #region private vars - private string _TextureName; - private STexture _Texture; - private SRectF _Rect; - private float _Size; - private SColorF _Color; - private float _Alpha; - private float _Angle; //0..360° - private float _MaxAge; //[s] - private float _Age; //[s] - private float _Vx; //movement speed in x-axis [pix/s] - private float _Vy; //movement speed in y-axis [pix/s] - private float _Vr; //rotation speed [rpm] - private float _Rotation; //start rotation 0..360° - private float _Vsize; //size changing speed: period [s] - private float _LastTime; - private EParticeType _Type; - - private Stopwatch _Timer; - #endregion private vars - - #region public vars - //public bool Visible; - public float Alpha2 = 1f; - - public float X - { - get { return _Rect.X; } - set { _Rect.X = value; } - } - - public float Y - { - get { return _Rect.Y; } - set { _Rect.Y = value; } - } - - public float Size - { - get { return _Size; } - set - { - _Rect.W = value; - _Rect.H = value; - _Size = value; - } - } - - public float Alpha - { - get { return _Alpha; } - set { _Alpha = value; } - } - - public SColorF Color - { - get { return _Color; } - set { _Color = value; } - } - - public bool IsAlive - { - get { return (_Age < _MaxAge || _MaxAge == 0f); } - } - #endregion public vars - - #region Constructors - public CParticle(string textureName, SColorF color, float x, float y, float size, float maxage, float z, float vx, float vy, float vr, float vsize, EParticeType type) - { - _TextureName = textureName; - _Texture = new STexture(-1); - _Color = color; - _Rect = new SRectF(x, y, size, size, z); - _Size = size; - _Alpha = 1f; - _Angle = 0f; - _Vx = vx; - _Vy = vy; - _Vr = vr; - _Vsize = vsize; - _LastTime = 0f; - _Type = type; - - _Timer = new Stopwatch(); - _Age = 0f; - _MaxAge = maxage; - _Rotation = (float)(CGame.Rand.NextDouble() * 360.0); - } - - public CParticle(STexture texture, SColorF color, float x, float y, float size, float maxage, float z, float vx, float vy, float vr, float vsize, EParticeType type) - { - _TextureName = String.Empty; - _Texture = texture; - _Color = color; - _Rect = new SRectF(x, y, size, size, z); - _Size = size; - _Alpha = 1f; - _Angle = 0f; - _Vx = vx; - _Vy = vy; - _Vr = vr; - _Vsize = vsize; - _LastTime = 0f; - _Type = type; - - _Timer = new Stopwatch(); - _Age = 0f; - _MaxAge = maxage; - _Rotation = (float)(CGame.Rand.NextDouble() * 360.0); - } - - #endregion Constructors - - public void Update() - { - if (!IsAlive) - return; - - if (!_Timer.IsRunning) - _Timer.Start(); - - float CurrentTime = _Timer.ElapsedMilliseconds / 1000f; - float timediff = CurrentTime - _LastTime; - - _Age = CurrentTime; - - // update alpha - if (_MaxAge > 0f) - { - switch (_Type) - { - case EParticeType.Twinkle: - _Alpha = 1f - _Age / _MaxAge; - break; - - case EParticeType.Star: - _Alpha = 1f - _Age / _MaxAge; - break; - - case EParticeType.Snow: - _Alpha = (float)Math.Sqrt((Math.Sin(_Age / _MaxAge * Math.PI * 2 - 0.5 * Math.PI) + 1) / 2); - break; - - case EParticeType.Flare: - _Alpha = 1f - _Age / _MaxAge; - break; - - case EParticeType.PerfNoteStar: - _Alpha = 1f - _Age / _MaxAge; - break; - - default: - break; - } - - } - - // update position - switch (_Type) - { - case EParticeType.Twinkle: - X += _Vx * timediff; - Y += _Vy * timediff; - break; - - case EParticeType.Star: - X += _Vx * timediff; - Y += _Vy * timediff; - break; - - case EParticeType.Snow: - int maxy = (int)Math.Round(CSettings.iRenderH - _Size * 0.4f); - - if (Math.Round(Y) < maxy) - { - float vdx = 0f; - if (_Vx != 0) - vdx = (float)Math.Sin(CurrentTime / _Vx * Math.PI); - - X += _Vx * timediff * (0.5f + vdx); - - Y += _Vy * timediff * (vdx * vdx / 2f + 0.5f); - if (Y >= maxy) - Y = maxy; - } - break; - - case EParticeType.Flare: - X += _Vx * timediff; - Y += _Vy * timediff; - break; - - case EParticeType.PerfNoteStar: - X += _Vx * timediff; - Y += _Vy * timediff; - break; - - default: - break; - } - - - // update size - if (_Vsize != 0f) - { - float size = _Size; - switch (_Type) - { - case EParticeType.Twinkle: - size = _Size * (1f - CurrentTime / _Vsize); - break; - - case EParticeType.Star: - size = _Size * (1f - CurrentTime / _Vsize); - break; - - case EParticeType.Snow: - size = _Size * (float)Math.Sqrt((Math.Sin(CurrentTime / _Vsize * Math.PI * 2 - 0.5 * Math.PI) + 1) / 2); - break; - - case EParticeType.Flare: - size = _Size * (1f - CurrentTime / _Vsize); - break; - - case EParticeType.PerfNoteStar: - size = _Size * (1f - CurrentTime / _Vsize); - break; - - default: - break; - } - - _Rect.X += (_Rect.W - size) / 2f; - _Rect.Y += (_Rect.H - size) / 2f; - _Rect.W = size; - _Rect.H = size; - } - - // update rotation - if (_Vr != 0f) - { - float r = CurrentTime * _Vr / 60f; - _Angle = _Rotation + 360f * (r - (float)Math.Floor(r)); - _Rect.Rotation = _Angle; - } - - _LastTime = CurrentTime; - } - - public void Pause() - { - _Timer.Stop(); - } - - public void Resume() - { - _Timer.Start(); - } - - public void Draw() - { - if (_TextureName != String.Empty) - CDraw.DrawTexture(CTheme.GetSkinTexture(_TextureName), _Rect, new SColorF(_Color.R, _Color.G, _Color.B, _Color.A * Alpha2 * _Alpha)); - else - CDraw.DrawTexture(_Texture, _Rect, new SColorF(_Color.R, _Color.G, _Color.B, _Color.A * Alpha2 * _Alpha)); - } - } - - class CParticleEffect - { - private List _Stars; - private string _TextureName; - private STexture _Texture; - private int _MaxNumber; - private SRectF _Area; - private SColorF _Color; - private float _Size; - private EParticeType _Type; - private Stopwatch _SpawnTimer; - private float _NextSpawnTime; - - public float Alpha = 1f; - - public bool IsAlive - { - get - { - return (_Stars.Count > 0 || !_SpawnTimer.IsRunning); - } - } - - public SRectF Area - { - get { return _Area; } - set { _Area = value; } - } - - public CParticleEffect(int MaxNumber, SColorF Color, SRectF Area, string TextureName, float Size, EParticeType Type) - { - _Stars = new List(); - _Area = Area; - _Color = Color; - _TextureName = TextureName; - _Texture = new STexture(-1); - _MaxNumber = MaxNumber; - _Size = Size; - _Type = Type; - _SpawnTimer = new Stopwatch(); - _NextSpawnTime = 0f; - } - - public CParticleEffect(int MaxNumber, SColorF Color, SRectF Area, STexture texture, float Size, EParticeType Type) - { - _Stars = new List(); - _Area = Area; - _Color = Color; - _TextureName = String.Empty; - _Texture = texture; - _MaxNumber = MaxNumber; - _Size = Size; - _Type = Type; - _SpawnTimer = new Stopwatch(); - _NextSpawnTime = 0f; - } - - public void Update() - { - bool DoSpawn = false; - if (!_SpawnTimer.IsRunning) - { - _SpawnTimer.Start(); - _NextSpawnTime = 0f; - DoSpawn = true; - } - - if (_SpawnTimer.ElapsedMilliseconds / 1000f > _NextSpawnTime && _NextSpawnTime >= 0f) - { - DoSpawn = true; - _SpawnTimer.Reset(); - _SpawnTimer.Start(); - } - - while (_Stars.Count < _MaxNumber && DoSpawn) - { - float size = CGame.Rand.Next((int)_Size / 2) + _Size / 2; - float lifetime = 0f; - float vx = 0f; - float vy = 0f; - float vr = 0f; - float vsize = 0f; - _NextSpawnTime = 0f; - - switch (_Type) - { - case EParticeType.Twinkle: - size = CGame.Rand.Next((int)_Size / 2) + _Size / 2; - lifetime = CGame.Rand.Next(500) / 1000f + 0.5f; - vx = -CGame.Rand.Next(10000) / 50f + 100f; - vy = -CGame.Rand.Next(10000) / 50f + 100f; - vr = -CGame.Rand.Next(500) / 100f + 2.5f; - vsize = lifetime * 2f; - break; - - case EParticeType.Star: - size = CGame.Rand.Next((int)_Size / 2) + _Size / 2; - lifetime = CGame.Rand.Next(1000) / 500f + 0.2f; - vx = -CGame.Rand.Next(1000) / 50f + 10f; - vy = -CGame.Rand.Next(1000) / 50f + 10f; - vr = -CGame.Rand.Next(500) / 100f + 2.5f; - vsize = lifetime * 2f; - break; - - case EParticeType.Snow: - size = CGame.Rand.Next((int)_Size / 2) + _Size / 2; - lifetime = CGame.Rand.Next(5000) / 50f + 10f; - vx = -CGame.Rand.Next(1000) / 50f + 10f; - vy = CGame.Rand.Next(1000) / 50f + Math.Abs(vx) + 10f; - vr = -CGame.Rand.Next(200) / 50f + 2f; - vsize = lifetime * 2f; - - _NextSpawnTime = lifetime / _MaxNumber; - DoSpawn = false; - break; - - case EParticeType.Flare: - size = CGame.Rand.Next((int)_Size / 2) + _Size / 2; - lifetime = CGame.Rand.Next(500) / 1000f + 0.1f; - vx = -CGame.Rand.Next(2000) / 50f; - vy = -CGame.Rand.Next(2000) / 50f + 20f; - vr = -CGame.Rand.Next(2000) / 50f + 20f; - vsize = lifetime * 2f; - break; - - case EParticeType.PerfNoteStar: - size = CGame.Rand.Next((int)_Size / 2) + _Size / 2; - lifetime = CGame.Rand.Next(1000) / 500f + 1.2f; - vx = 0f; - vy = 0f; - vr = CGame.Rand.Next(500) / 50f + 10f; - vsize = lifetime * 2f; - break; - - default: - break; - } - - int w = (int)(_Area.W - size / 4f); - int h = (int)(_Area.H - size / 4f); - - if (w < 0) - w = 0; - - if (h < 0) - h = 0; - - CParticle star; - if (_TextureName != String.Empty) - { - star = new CParticle(_TextureName, _Color, - CGame.Rand.Next(w) + _Area.X - size / 4f, - CGame.Rand.Next(h) + _Area.Y - size / 4f, - size, lifetime, _Area.Z, vx, vy, vr, vsize, _Type); - } - else - { - star = new CParticle(_Texture, _Color, - CGame.Rand.Next(w) + _Area.X - size / 4f, - CGame.Rand.Next(h) + _Area.Y - size / 4f, - size, lifetime, _Area.Z, vx, vy, vr, vsize, _Type); - } - - _Stars.Add(star); - } - - if (_Type == EParticeType.Flare || _Type == EParticeType.PerfNoteStar || _Type == EParticeType.Twinkle) - _NextSpawnTime = -1f; - - int i = 0; - while (i < _Stars.Count) - { - _Stars[i].Update(); - if (!_Stars[i].IsAlive) - { - _Stars.RemoveAt(i); - } - else - i++; - } - } - - public void Pause() - { - foreach (CParticle star in _Stars) - { - star.Pause(); - } - } - - public void Resume() - { - foreach (CParticle star in _Stars) - { - star.Resume(); - } - } - - public void Draw() - { - foreach (CParticle star in _Stars) - { - star.Alpha2 = Alpha; - star.Draw(); - } - } - } } diff --git a/Vocaluxe/Base/CMain.cs b/Vocaluxe/Base/CMain.cs index f226d8ff..e8aee56e 100644 --- a/Vocaluxe/Base/CMain.cs +++ b/Vocaluxe/Base/CMain.cs @@ -21,8 +21,9 @@ namespace Vocaluxe.Base public static ILanguage Language = new BLanguage(); public static IGame Game = new BGame(); public static IProfiles Profiles = new BProfiles(); + public static IRecording Record = new BRecord(); - public static Menu.Base Base = new Menu.Base(Config, Settings, Theme, Helper, Log, BackgroundMusic, Draw, Graphics, Fonts, Language, Game, Profiles); + public static Menu.Base Base = new Menu.Base(Config, Settings, Theme, Helper, Log, BackgroundMusic, Draw, Graphics, Fonts, Language, Game, Profiles, Record); } class BConfig : IConfig @@ -58,6 +59,16 @@ namespace Vocaluxe.Base { return CConfig.VideoBackgrounds; } + + public EOffOn GetDrawNoteLines() + { + return CConfig.DrawNoteLines; + } + + public EOffOn GetDrawToneHelper() + { + return CConfig.DrawToneHelper; + } } class BSettings : ISettings @@ -101,6 +112,16 @@ namespace Vocaluxe.Base { return CSettings.ToneMax; } + + public int GetNumNoteLines() + { + return CSettings.NumNoteLines; + } + + public int GetMaxNumPlayer() + { + return CSettings.MaxNumPlayer; + } } class BTheme : ITheme @@ -342,6 +363,26 @@ namespace Vocaluxe.Base { return CGame.Player; } + + public float GetMidBeatD() + { + return CGame.MidBeatD; + } + + public int GetCurrentBeatD() + { + return CGame.ActBeatD; + } + + public int GetRandom(int Max) + { + return CGame.Rand.Next(Max); + } + + public double GetRandomDouble() + { + return CGame.Rand.NextDouble(); + } } class BProfiles : IProfiles @@ -351,4 +392,12 @@ namespace Vocaluxe.Base return CProfiles.Profiles; } } + + class BRecord : IRecording + { + public int GetToneAbs(int PlayerNr) + { + return CSound.RecordGetToneAbs(PlayerNr); + } + } } diff --git a/Vocaluxe/Menu/CMenu.cs b/Vocaluxe/Menu/CMenu.cs index 0785ed63..396588ac 100644 --- a/Vocaluxe/Menu/CMenu.cs +++ b/Vocaluxe/Menu/CMenu.cs @@ -710,6 +710,11 @@ namespace Vocaluxe.Menu { return new CPlaylist(_Base); } + + public CParticleEffect GetNewParticleEffect(int MaxNumber, SColorF Color, SRectF Area, STexture Texture, float Size, EParticeType Type) + { + return new CParticleEffect(_Base, MaxNumber, Color, Area, Texture, Size, Type); + } #endregion Create Elements #region Get Arrays @@ -2331,9 +2336,10 @@ namespace Vocaluxe.Menu public ILanguage Language; public IGame Game; public IProfiles Profiles; + public IRecording Record; public Base(IConfig Config, ISettings Settings, ITheme Theme, IHelper Helper, ILog Log, IBackgroundMusic BackgroundMusic, - IDrawing Draw, IGraphics Graphics, IFonts Fonts, ILanguage Language, IGame Game, IProfiles Profiles) + IDrawing Draw, IGraphics Graphics, IFonts Fonts, ILanguage Language, IGame Game, IProfiles Profiles, IRecording Record) { this.Config = Config; this.Settings = Settings; @@ -2347,6 +2353,7 @@ namespace Vocaluxe.Menu this.Language = Language; this.Game = Game; this.Profiles = Profiles; + this.Record = Record; } } } diff --git a/Vocaluxe/Menu/IMenu.cs b/Vocaluxe/Menu/IMenu.cs index e86bd4c1..4a3555fd 100644 --- a/Vocaluxe/Menu/IMenu.cs +++ b/Vocaluxe/Menu/IMenu.cs @@ -51,6 +51,9 @@ namespace Vocaluxe.Menu EOffOn GetVideoBackgrounds(); ESongMenu GetSongMenuType(); + + EOffOn GetDrawNoteLines(); + EOffOn GetDrawToneHelper(); } public interface ISettings @@ -66,6 +69,9 @@ namespace Vocaluxe.Menu int GetToneMin(); int GetToneMax(); + + int GetNumNoteLines(); + int GetMaxNumPlayer(); } public interface ITheme @@ -154,6 +160,16 @@ namespace Vocaluxe.Menu { int GetNumPlayer(); SPlayer[] GetPlayer(); + float GetMidBeatD(); + int GetCurrentBeatD(); + + int GetRandom(int Max); + double GetRandomDouble(); + } + + public interface IRecording + { + int GetToneAbs(int PlayerNr); } public interface IProfiles diff --git a/Vocaluxe/Menu/SingNotes/CSingNotes.cs b/Vocaluxe/Menu/SingNotes/CSingNotes.cs index dc442671..3497663d 100644 --- a/Vocaluxe/Menu/SingNotes/CSingNotes.cs +++ b/Vocaluxe/Menu/SingNotes/CSingNotes.cs @@ -5,10 +5,6 @@ using System.Text; using System.Xml; using System.Xml.XPath; -using Vocaluxe.Base; -using Vocaluxe.Lib.Draw; -using Vocaluxe.Lib.Song; - namespace Vocaluxe.Menu.SingNotes { struct SPlayerNotes @@ -99,10 +95,10 @@ namespace Vocaluxe.Menu.SingNotes _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinToneHelper", navigator, ref _Theme.SkinToneHelperName, String.Empty); _ThemeLoaded &= CHelper.GetValueFromXML(item + "/SkinPerfectNoteStar", navigator, ref _Theme.SkinPerfectNoteStarName, String.Empty); - _BarPos = new SRectF[CSettings.MaxNumPlayer, CSettings.MaxNumPlayer]; - for (int numplayer = 0; numplayer < CSettings.MaxNumPlayer; numplayer++) + _BarPos = new SRectF[_Base.Settings.GetMaxNumPlayer(), _Base.Settings.GetMaxNumPlayer()]; + for (int numplayer = 0; numplayer < _Base.Settings.GetMaxNumPlayer(); numplayer++) { - for (int player = 0; player < CSettings.MaxNumPlayer; player++) + for (int player = 0; player < _Base.Settings.GetMaxNumPlayer(); player++) { if (player <= numplayer) { @@ -163,9 +159,9 @@ namespace Vocaluxe.Menu.SingNotes writer.WriteComment(" , , , , "); 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 < CSettings.MaxNumPlayer; numplayer++) + for (int numplayer = 0; numplayer < _Base.Settings.GetMaxNumPlayer(); numplayer++) { - for (int player = 0; player < CSettings.MaxNumPlayer; player++) + for (int player = 0; player < _Base.Settings.GetMaxNumPlayer(); player++) { if (player <= numplayer) { @@ -299,7 +295,7 @@ namespace Vocaluxe.Menu.SingNotes CLine Line = _PlayerNotes[n].Lines[_PlayerNotes[n].LineNr]; - if (CConfig.DrawNoteLines == EOffOn.TR_CONFIG_ON) + if (_Base.Config.GetDrawNoteLines() == EOffOn.TR_CONFIG_ON) { DrawNoteLines(_PlayerNotes[n].Rect, new SColorF(0.5f, 0.5f, 0.5f, 0.5f * _PlayerNotes[n].Alpha)); } @@ -309,7 +305,7 @@ namespace Vocaluxe.Menu.SingNotes float w = _PlayerNotes[n].Rect.W; float h = _PlayerNotes[n].Rect.H; - float dh = h / CSettings.NumNoteLines * (2f - (int)CGame.Player[_PlayerNotes[n].PlayerNr].Difficulty) / 4f; + float dh = h / _Base.Settings.GetNumNoteLines() * (2f - (int)_Base.Game.GetPlayer()[_PlayerNotes[n].PlayerNr].Difficulty) / 4f; float beats = Line.LastNoteBeat - Line.FirstNoteBeat + 1; @@ -332,9 +328,9 @@ namespace Vocaluxe.Menu.SingNotes SRectF rect = new SRectF( _PlayerNotes[n].Rect.X + (note.StartBeat - Line.FirstNoteBeat) / beats * w, - _PlayerNotes[n].Rect.Y + (CSettings.NumNoteLines - 1 - (note.Tone - BaseLine)/2) / CSettings.NumNoteLines * h - dh, + _PlayerNotes[n].Rect.Y + (_Base.Settings.GetNumNoteLines() - 1 - (note.Tone - BaseLine)/2) / _Base.Settings.GetNumNoteLines() * h - dh, width, - h / CSettings.NumNoteLines + 2 * dh, + h / _Base.Settings.GetNumNoteLines() + 2 * dh, _PlayerNotes[n].Rect.Z ); @@ -349,9 +345,9 @@ namespace Vocaluxe.Menu.SingNotes } } - if (CConfig.DrawToneHelper == EOffOn.TR_CONFIG_ON) + if (_Base.Config.GetDrawToneHelper() == EOffOn.TR_CONFIG_ON) { - DrawToneHelper(n, (int)BaseLine, (CGame.MidBeatD - Line.FirstNoteBeat) / beats * w); + DrawToneHelper(n, (int)BaseLine, (_Base.Game.GetMidBeatD() - Line.FirstNoteBeat) / beats * w); } int i = 0; @@ -371,7 +367,7 @@ namespace Vocaluxe.Menu.SingNotes perfline.Draw(); } - if (SingLine == null || SingLine.Count == 0 || CGame.Player[Player].CurrentLine == -1 || SingLine.Count <= CGame.Player[Player].CurrentLine) + if (SingLine == null || SingLine.Count == 0 || _Base.Game.GetPlayer()[Player].CurrentLine == -1 || SingLine.Count <= _Base.Game.GetPlayer()[Player].CurrentLine) { foreach (CParticleEffect stars in _PlayerNotes[n].GoldenStars) { @@ -382,20 +378,20 @@ namespace Vocaluxe.Menu.SingNotes return; } - foreach (CNote note in SingLine[CGame.Player[Player].CurrentLine].Notes) + foreach (CNote note in SingLine[_Base.Game.GetPlayer()[Player].CurrentLine].Notes) { if (note.StartBeat >= Line.FirstNoteBeat && note.EndBeat <= Line.LastNoteBeat) { float width = note.Duration / beats * w; - if (note.EndBeat == CGame.ActBeatD) - width -= (1 - (CGame.MidBeatD - CGame.ActBeatD)) / beats * w; + if (note.EndBeat == _Base.Game.GetCurrentBeatD()) + width -= (1 - (_Base.Game.GetMidBeatD() - _Base.Game.GetCurrentBeatD())) / beats * w; SRectF rect = new SRectF( _PlayerNotes[n].Rect.X + (note.StartBeat - Line.FirstNoteBeat) / beats * w, - _PlayerNotes[n].Rect.Y + (CSettings.NumNoteLines - 1 - (note.Tone - BaseLine)/2) / CSettings.NumNoteLines * h - dh, + _PlayerNotes[n].Rect.Y + (_Base.Settings.GetNumNoteLines() - 1 - (note.Tone - BaseLine)/2) / _Base.Settings.GetNumNoteLines() * h - dh, width, - h / CSettings.NumNoteLines + 2 * dh, + h / _Base.Settings.GetNumNoteLines() + 2 * dh, _PlayerNotes[n].Rect.Z ); @@ -405,14 +401,14 @@ namespace Vocaluxe.Menu.SingNotes DrawNote(rect, color, f); - if (note.EndBeat >= CGame.ActBeatD && note.Hit && note.NoteType == ENoteType.Golden) + if (note.EndBeat >= _Base.Game.GetCurrentBeatD() && note.Hit && note.NoteType == ENoteType.Golden) { SRectF re = new SRectF(rect); - re.W = (CGame.MidBeatD - note.StartBeat) / beats * w; + re.W = (_Base.Game.GetMidBeatD() - note.StartBeat) / beats * w; AddFlare(re, n); } - if (note.Perfect && note.EndBeat < CGame.ActBeatD) + if (note.Perfect && note.EndBeat < _Base.Game.GetCurrentBeatD()) { AddPerfectNote(rect, n); note.Perfect = false; @@ -420,13 +416,13 @@ namespace Vocaluxe.Menu.SingNotes } } - int currentLine = CGame.Player[Player].SingLine.Count - 1; + int currentLine = _Base.Game.GetPlayer()[Player].SingLine.Count - 1; if (currentLine > 0) { - if (CGame.Player[Player].SingLine[currentLine - 1].PerfectLine) + if (_Base.Game.GetPlayer()[Player].SingLine[currentLine - 1].PerfectLine) { AddPerfectLine(n); - CGame.Player[Player].SingLine[currentLine - 1].PerfectLine = false; + _Base.Game.GetPlayer()[Player].SingLine[currentLine - 1].PerfectLine = false; } } @@ -530,18 +526,18 @@ namespace Vocaluxe.Menu.SingNotes Rect.Z ); - STexture NoteBegin = CTheme.GetSkinTexture(_Theme.SkinLeftName); - STexture NoteMiddle = CTheme.GetSkinTexture(_Theme.SkinMiddleName); - STexture NoteEnd = CTheme.GetSkinTexture(_Theme.SkinRightName); + STexture NoteBegin = _Base.Theme.GetSkinTexture(_Theme.SkinLeftName); + STexture NoteMiddle = _Base.Theme.GetSkinTexture(_Theme.SkinMiddleName); + STexture NoteEnd = _Base.Theme.GetSkinTexture(_Theme.SkinRightName); float dx = NoteBegin.width * r.H / NoteBegin.height; if (2 * dx > r.W) dx = r.W / 2; - CDraw.DrawTexture(NoteBegin, new SRectF(r.X, r.Y, dx, r.H, r.Z), Color); - CDraw.DrawTexture(NoteMiddle, new SRectF(r.X + dx, r.Y, r.W - 2 * dx, r.H, r.Z), Color); - CDraw.DrawTexture(NoteEnd, new SRectF(r.X + r.W - dx, r.Y, dx, r.H, r.Z), Color); + _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); } private void DrawNoteBG(SRectF Rect, SColorF Color, float factor, Stopwatch Timer) @@ -572,9 +568,9 @@ namespace Vocaluxe.Menu.SingNotes Rect.Z ); - STexture NoteBackgroundBegin = CTheme.GetSkinTexture(_Theme.SkinBackgroundLeftName); - STexture NoteBackgroundMiddle = CTheme.GetSkinTexture(_Theme.SkinBackgroundMiddleName); - STexture NoteBackgroundEnd = CTheme.GetSkinTexture(_Theme.SkinBackgroundRightName); + STexture NoteBackgroundBegin = _Base.Theme.GetSkinTexture(_Theme.SkinBackgroundLeftName); + STexture NoteBackgroundMiddle = _Base.Theme.GetSkinTexture(_Theme.SkinBackgroundMiddleName); + STexture NoteBackgroundEnd = _Base.Theme.GetSkinTexture(_Theme.SkinBackgroundRightName); float dx = NoteBackgroundBegin.width * r.H / NoteBackgroundBegin.height; if (2 * dx > r.W) @@ -582,17 +578,17 @@ namespace Vocaluxe.Menu.SingNotes SColorF col = new SColorF(Color.R, Color.G, Color.B, Color.A * alpha); - CDraw.DrawTexture(NoteBackgroundBegin, new SRectF(r.X, r.Y, dx, r.H, r.Z), col); - CDraw.DrawTexture(NoteBackgroundMiddle, new SRectF(r.X + dx, r.Y, r.W - 2 * dx, r.H, r.Z), col); - CDraw.DrawTexture(NoteBackgroundEnd, new SRectF(r.X + r.W - dx, r.Y, dx, r.H, r.Z), col); + _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); } protected void DrawNoteLines(SRectF Rect, SColorF Color) { - for (int i = 0; i < CSettings.NumNoteLines - 1; i++) + for (int i = 0; i < _Base.Settings.GetNumNoteLines() - 1; i++) { - float y = Rect.Y + Rect.H / CSettings.NumNoteLines * (i + 1); - CDraw.DrawColor(Color, new SRectF(Rect.X, y, Rect.W, 1, -1.0f)); + 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)); } } @@ -622,7 +618,7 @@ namespace Vocaluxe.Menu.SingNotes ); int numstars = (int)(r.W * 0.25f); - CParticleEffect stars = new CParticleEffect(numstars, new SColorF(1f, 1f, 0f, 1f), r, _Theme.SkinGoldenStarName, 20, EParticeType.Star); + CParticleEffect stars = new CParticleEffect(_Base, numstars, new SColorF(1f, 1f, 0f, 1f), r, _Theme.SkinGoldenStarName, 20, EParticeType.Star); _PlayerNotes[n].GoldenStars.Add(stars); } } @@ -650,7 +646,7 @@ namespace Vocaluxe.Menu.SingNotes Rect.Z ); - CParticleEffect flares = new CParticleEffect(15, new SColorF(1f, 1f, 1f, 1f), r, _Theme.SkinGoldenStarName, 20, EParticeType.Flare); + CParticleEffect flares = new CParticleEffect(_Base, 15, new SColorF(1f, 1f, 1f, 1f), r, _Theme.SkinGoldenStarName, 20, EParticeType.Flare); _PlayerNotes[n].Flares.Add(flares); } @@ -677,7 +673,7 @@ namespace Vocaluxe.Menu.SingNotes Rect.Z ); - STexture NoteBegin = CTheme.GetSkinTexture(_Theme.SkinLeftName); + STexture NoteBegin = _Base.Theme.GetSkinTexture(_Theme.SkinLeftName); float dx = NoteBegin.width * r.H / NoteBegin.height; if (2 * dx > r.W) dx = r.W / 2; @@ -690,19 +686,19 @@ namespace Vocaluxe.Menu.SingNotes Rect.Z ); - CParticleEffect stars = new CParticleEffect(CGame.Rand.Next(2) + 1, new SColorF(1f, 1f, 1f, 1f), r, _Theme.SkinPerfectNoteStarName, 35, EParticeType.PerfNoteStar); + CParticleEffect stars = new CParticleEffect(_Base, _Base.Game.GetRandom(2) + 1, new SColorF(1f, 1f, 1f, 1f), r, _Theme.SkinPerfectNoteStarName, 35, EParticeType.PerfNoteStar); _PlayerNotes[n].PerfectNoteEffect.Add(stars); } private void AddPerfectLine(int n) { - CParticleEffect twinkle = new CParticleEffect(200, _PlayerNotes[n].Color, _PlayerNotes[n].Rect, _Theme.SkinGoldenStarName, 25, EParticeType.Twinkle); + CParticleEffect twinkle = new CParticleEffect(_Base, 200, _PlayerNotes[n].Color, _PlayerNotes[n].Rect, _Theme.SkinGoldenStarName, 25, EParticeType.Twinkle); _PlayerNotes[n].PerfectLineTwinkle.Add(twinkle); } private void DrawToneHelper(int n, int BaseLine, float XOffset) { - int TonePlayer = CSound.RecordGetToneAbs(_PlayerNotes[n].PlayerNr); + int TonePlayer = _Base.Record.GetToneAbs(_PlayerNotes[n].PlayerNr); SRectF Rect = _PlayerNotes[n].Rect; @@ -718,10 +714,10 @@ namespace Vocaluxe.Menu.SingNotes if (XOffset > Rect.W) XOffset = Rect.W; - float dy = Rect.H / (CSettings.NumNoteLines); + float dy = Rect.H / (_Base.Settings.GetNumNoteLines()); SRectF rect = new SRectF( Rect.X - dy + XOffset, - Rect.Y + dy * (CSettings.NumNoteLines - 1 - (TonePlayer - BaseLine) / 2f), + Rect.Y + dy * (_Base.Settings.GetNumNoteLines() - 1 - (TonePlayer - BaseLine) / 2f), dy, dy, Rect.Z @@ -733,8 +729,8 @@ namespace Vocaluxe.Menu.SingNotes _PlayerNotes[n].Color.B, _PlayerNotes[n].Color.A * _PlayerNotes[n].Alpha); - STexture ToneHelper = CTheme.GetSkinTexture(_Theme.SkinToneHelperName); - CDraw.DrawTexture(ToneHelper, rect, color); + STexture ToneHelper = _Base.Theme.GetSkinTexture(_Theme.SkinToneHelperName); + _Base.Drawing.DrawTexture(ToneHelper, rect, color); while (TonePlayer - BaseLine < 12) @@ -745,13 +741,13 @@ namespace Vocaluxe.Menu.SingNotes rect = new SRectF( Rect.X - dy + XOffset, - Rect.Y + dy * (CSettings.NumNoteLines - 1 - (TonePlayer - BaseLine) / 2f), + Rect.Y + dy * (_Base.Settings.GetNumNoteLines() - 1 - (TonePlayer - BaseLine) / 2f), dy, dy, Rect.Z ); - CDraw.DrawTexture(ToneHelper, rect, color); + _Base.Drawing.DrawTexture(ToneHelper, rect, color); } #region ThemeEdit diff --git a/Vocaluxe/Menu/SingNotes/ISingNotes.cs b/Vocaluxe/Menu/SingNotes/ISingNotes.cs index e9a113f4..a3abb720 100644 --- a/Vocaluxe/Menu/SingNotes/ISingNotes.cs +++ b/Vocaluxe/Menu/SingNotes/ISingNotes.cs @@ -2,9 +2,6 @@ using System.Collections.Generic; using System.Text; -using Vocaluxe.Lib.Draw; -using Vocaluxe.Lib.Song; - namespace Vocaluxe.Menu.SingNotes { interface ISingNotes diff --git a/Vocaluxe/Menu/SongMenu/CSongMenuDreidel.cs b/Vocaluxe/Menu/SongMenu/CSongMenuDreidel.cs index cb54d99e..33a506db 100644 --- a/Vocaluxe/Menu/SongMenu/CSongMenuDreidel.cs +++ b/Vocaluxe/Menu/SongMenu/CSongMenuDreidel.cs @@ -4,10 +4,6 @@ using System.Drawing; using System.Text; using System.Windows.Forms; -using Vocaluxe.Base; -using Vocaluxe.Lib.Draw; -using Vocaluxe.Lib.Song; - namespace Vocaluxe.Menu.SongMenu { class CSongMenuDreidel : CSongMenuFramework diff --git a/Vocaluxe/Screens/CScreenCredits.cs b/Vocaluxe/Screens/CScreenCredits.cs index e8a07386..95171afd 100644 --- a/Vocaluxe/Screens/CScreenCredits.cs +++ b/Vocaluxe/Screens/CScreenCredits.cs @@ -243,8 +243,8 @@ namespace Vocaluxe.Screens //Little stars for logo int numstars = (int)(logo.Rect.W * 0.25f / 2f); - starsRed = new CParticleEffect(numstars, new SColorF(1, 0, 0, 1), new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1), _TexPerfectNoteStar, 35, EParticeType.Star); - starsBlue = new CParticleEffect(numstars, new SColorF(0.149f, 0.415f, 0.819f, 1), new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1), _TexPerfectNoteStar, 35, EParticeType.Star); + starsRed = GetNewParticleEffect(numstars, new SColorF(1, 0, 0, 1), new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1), _TexPerfectNoteStar, 35, EParticeType.Star); + starsBlue = GetNewParticleEffect(numstars, new SColorF(0.149f, 0.415f, 0.819f, 1), new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1), _TexPerfectNoteStar, 35, EParticeType.Star); //Credit names _CreditNames = new List(); @@ -254,7 +254,7 @@ namespace Vocaluxe.Screens CCreditName CreditEntryBrunzel = new CCreditName(); CreditEntryBrunzel.image = GetNewStatic(_TexNameBrunzel, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 400, 120, -4)); CreditEntryBrunzel.particleRect = new SRectF(CreditEntryBrunzel.image.Rect.X + 342, CreditEntryBrunzel.image.Rect.Y + 4, 30, 30, -5); - CreditEntryBrunzel.particle = new CParticleEffect(8, new SColorF(1, 0, 0, 1), CreditEntryBrunzel.particleRect, _TexPerfectNoteStar, 35, EParticeType.Star); + CreditEntryBrunzel.particle = GetNewParticleEffect(8, new SColorF(1, 0, 0, 1), CreditEntryBrunzel.particleRect, _TexPerfectNoteStar, 35, EParticeType.Star); CreditEntryBrunzel.active = true; CreditEntryBrunzel.direction = EDirection.Left; _CreditNames.Add(CreditEntryBrunzel); @@ -263,7 +263,7 @@ namespace Vocaluxe.Screens CCreditName CreditEntryDarkice = new CCreditName(); CreditEntryDarkice.image = GetNewStatic(_TexNameDarkice, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 400, 120, -4)); CreditEntryDarkice.particleRect = new SRectF(CreditEntryDarkice.image.Rect.X + 242, CreditEntryDarkice.image.Rect.Y + 23, 30, 30, -5); - CreditEntryDarkice.particle = new CParticleEffect(8, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryDarkice.particleRect, _TexPerfectNoteStar, 35, EParticeType.Star); + CreditEntryDarkice.particle = GetNewParticleEffect(8, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryDarkice.particleRect, _TexPerfectNoteStar, 35, EParticeType.Star); CreditEntryDarkice.active = true; CreditEntryDarkice.direction = EDirection.Right; _CreditNames.Add(CreditEntryDarkice); @@ -272,7 +272,7 @@ namespace Vocaluxe.Screens CCreditName CreditEntryFlokuep = new CCreditName(); CreditEntryFlokuep.image = GetNewStatic(_TexNameFlokuep, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 400, 120, -4)); CreditEntryFlokuep.particleRect = new SRectF(CreditEntryFlokuep.image.Rect.X + 141, CreditEntryFlokuep.image.Rect.Y - 2, 30, 30, -5); - CreditEntryFlokuep.particle = new CParticleEffect(8, new SColorF(1, 0, 0, 1), CreditEntryFlokuep.particleRect, _TexPerfectNoteStar, 35, EParticeType.Star); + CreditEntryFlokuep.particle = GetNewParticleEffect(8, new SColorF(1, 0, 0, 1), CreditEntryFlokuep.particleRect, _TexPerfectNoteStar, 35, EParticeType.Star); CreditEntryFlokuep.active = true; CreditEntryFlokuep.direction = EDirection.Left; _CreditNames.Add(CreditEntryFlokuep); @@ -281,7 +281,7 @@ namespace Vocaluxe.Screens CCreditName CreditEntryBohning = new CCreditName(); CreditEntryBohning.image = GetNewStatic(_TexNameBohning, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 350, 110, -4)); CreditEntryBohning.particleRect = new SRectF(CreditEntryBohning.image.Rect.X + 172, CreditEntryBohning.image.Rect.Y + 16, 10, 10, -5); - CreditEntryBohning.particle = new CParticleEffect(4, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryBohning.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); + CreditEntryBohning.particle = GetNewParticleEffect(4, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryBohning.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); CreditEntryBohning.active = true; CreditEntryBohning.direction = EDirection.Right; _CreditNames.Add(CreditEntryBohning); @@ -290,7 +290,7 @@ namespace Vocaluxe.Screens CCreditName CreditEntryMesand = new CCreditName(); CreditEntryMesand.image = GetNewStatic(_TexNameMesand, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 350, 110, -4)); CreditEntryMesand.particleRect = new SRectF(CreditEntryMesand.image.Rect.X + 240, CreditEntryMesand.image.Rect.Y - 2, 10, 10, -5); - CreditEntryMesand.particle = new CParticleEffect(4, new SColorF(1, 0, 0, 1), CreditEntryMesand.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); + CreditEntryMesand.particle = GetNewParticleEffect(4, new SColorF(1, 0, 0, 1), CreditEntryMesand.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); CreditEntryMesand.active = true; CreditEntryMesand.direction = EDirection.Left; _CreditNames.Add(CreditEntryMesand); @@ -299,7 +299,7 @@ namespace Vocaluxe.Screens CCreditName CreditEntryBabene03 = new CCreditName(); CreditEntryBabene03.image = GetNewStatic(_TexNameBabene03, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 350, 110, -4)); CreditEntryBabene03.particleRect = new SRectF(CreditEntryBabene03.image.Rect.X + 7, CreditEntryBabene03.image.Rect.Y + 4, 10, 10, -5); - CreditEntryBabene03.particle = new CParticleEffect(4, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryBabene03.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); + CreditEntryBabene03.particle = GetNewParticleEffect(4, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryBabene03.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); CreditEntryBabene03.active = true; CreditEntryBabene03.direction = EDirection.Right; _CreditNames.Add(CreditEntryBabene03); @@ -308,7 +308,7 @@ namespace Vocaluxe.Screens CCreditName CreditEntrypantero = new CCreditName(); CreditEntrypantero.image = GetNewStatic(_TexNamePantero, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 350, 110, -4)); CreditEntrypantero.particleRect = new SRectF(CreditEntrypantero.image.Rect.X + 140, CreditEntrypantero.image.Rect.Y + 15, 10, 10, -5); - CreditEntrypantero.particle = new CParticleEffect(4, new SColorF(1, 0, 0, 1), CreditEntrypantero.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); + CreditEntrypantero.particle = GetNewParticleEffect(4, new SColorF(1, 0, 0, 1), CreditEntrypantero.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); CreditEntrypantero.active = true; CreditEntrypantero.direction = EDirection.Left; _CreditNames.Add(CreditEntrypantero); @@ -317,7 +317,7 @@ namespace Vocaluxe.Screens CCreditName CreditEntryPinky007 = new CCreditName(); CreditEntryPinky007.image = GetNewStatic(_TexNamePinky007, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 350, 110, -4)); CreditEntryPinky007.particleRect = new SRectF(CreditEntryPinky007.image.Rect.X + 42, CreditEntryPinky007.image.Rect.Y + 15, 10, 10, -5); - CreditEntryPinky007.particle = new CParticleEffect(4, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryPinky007.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); + CreditEntryPinky007.particle = GetNewParticleEffect(4, new SColorF(0.149f, 0.415f, 0.819f, 1), CreditEntryPinky007.particleRect, _TexPerfectNoteStar, 25, EParticeType.Star); CreditEntryPinky007.active = true; CreditEntryPinky007.direction = EDirection.Right; _CreditNames.Add(CreditEntryPinky007); diff --git a/Vocaluxe/Vocaluxe.csproj b/Vocaluxe/Vocaluxe.csproj index 552fbb74..cd0d81f3 100644 --- a/Vocaluxe/Vocaluxe.csproj +++ b/Vocaluxe/Vocaluxe.csproj @@ -208,6 +208,7 @@ +