diff --git a/Vocaluxe/Base/CConfig.cs b/Vocaluxe/Base/CConfig.cs index d3ce7901..1d5c114f 100644 --- a/Vocaluxe/Base/CConfig.cs +++ b/Vocaluxe/Base/CConfig.cs @@ -664,7 +664,6 @@ namespace Vocaluxe.Base //Check if there are inputs. if (Devices[dev].Inputs.Count >= 1) { - bool micfound = false; //Check if there is one or more channels if (Devices[dev].Inputs[0].Channels >= 1) { @@ -674,21 +673,16 @@ namespace Vocaluxe.Base MicConfig[0].InputName = Devices[dev].Inputs[0].Name; MicConfig[0].Channel = 1; - micfound = true; - } - if (Devices[dev].Inputs[0].Channels >= 2) - { - //Set this device to player 2 - MicConfig[1].DeviceName = Devices[dev].Name; - MicConfig[1].DeviceDriver = Devices[dev].Driver; - MicConfig[1].InputName = Devices[dev].Inputs[0].Name; - MicConfig[1].Channel = 2; + if (Devices[dev].Inputs[0].Channels >= 2) + { + //Set this device to player 2 + MicConfig[1].DeviceName = Devices[dev].Name; + MicConfig[1].DeviceDriver = Devices[dev].Driver; + MicConfig[1].InputName = Devices[dev].Inputs[0].Name; + MicConfig[1].Channel = 2; - micfound = true; - } - if (micfound) - { - return true; + return true; + } } } } @@ -820,17 +814,6 @@ namespace Vocaluxe.Base switch (param) { case "songfolder": - //Check if SongFolders from config.xml are saved - if (SongFolderOld.Count == 0) - { - SongFolderOld.Clear(); - SongFolderOld.AddRange(SongFolder); - SongFolder.Clear(); - } - //Add parameter-value to SongFolder - SongFolder.Add(value); - break; - case "songpath": //Check if SongFolders from config.xml are saved if (SongFolderOld.Count == 0) diff --git a/Vocaluxe/Base/CFont.cs b/Vocaluxe/Base/CFont.cs index d07ca4d1..73b50330 100644 --- a/Vocaluxe/Base/CFont.cs +++ b/Vocaluxe/Base/CFont.cs @@ -155,40 +155,18 @@ namespace Vocaluxe.Base class CFont:IDisposable { - private List _Glyphs; - private Hashtable _htGlyphs; + private Dictionary _Glyphs; private PrivateFontCollection fonts = null; private FontFamily family; private float SIZEh; public string FilePath; - - - public Font GetFont() - { - if (fonts == null) - { - fonts = new PrivateFontCollection(); - try - { - fonts.AddFontFile(FilePath); - family = fonts.Families[0]; - } - catch (Exception e) - { - CLog.LogError("Error opening font file " + FilePath + ": " + e.Message); - } - } - - return new Font(family, CFonts.Height, CFonts.GetFontStyle(), GraphicsUnit.Pixel); - } - + public CFont(string File) { FilePath = File; - - _Glyphs = new List(); - _htGlyphs = new Hashtable(); + + _Glyphs = new Dictionary(); switch (CConfig.TextureQuality) { @@ -213,74 +191,95 @@ namespace Vocaluxe.Base } } - public void DrawGlyph(char chr, float x, float y, float h, float z, SColorF color) + public Font GetFont() { - AddGlyph(chr); + if (fonts == null) + { + fonts = new PrivateFontCollection(); + try + { + fonts.AddFontFile(FilePath); + family = fonts.Families[0]; + } + catch (Exception e) + { + CLog.LogError("Error opening font file " + FilePath + ": " + e.Message); + } + } - CFonts.Height = h; - CGlyph glyph = _Glyphs[(int)_htGlyphs[chr]]; - float factor = h / glyph.Texture.height; - float d = glyph.SIZEh / 5f * factor; - CDraw.DrawTexture(glyph.Texture, new SRectF(x - d, y, glyph.Texture.width * factor, h, z), color); + return new Font(family, CFonts.Height, CFonts.GetFontStyle(), GraphicsUnit.Pixel); } - public void DrawGlyphReflection(char chr, float x, float y, float h, float z, SColorF color, float rspace, float rheight) + public void DrawGlyph(char chr, float x, float y, float h, float z, SColorF color) { - AddGlyph(chr); - - CFonts.Height = h; - CGlyph glyph = _Glyphs[(int)_htGlyphs[chr]]; - float factor = h / glyph.Texture.height; - float d = glyph.SIZEh / 5f * factor; - SRectF rect = new SRectF(x - d, y, glyph.Texture.width * factor, h, z); - CDraw.DrawTextureReflection(glyph.Texture, rect, color, rect, rspace, rheight); + STexture texture; + SRectF rect; + _GetGlyphTextureAndRect(chr, x, y, z, h, out texture, out rect); + CDraw.DrawTexture(texture, rect, color); } public void DrawGlyph(char chr, float x, float y, float h, float z, SColorF color, float begin, float end) + { + STexture texture; + SRectF rect; + _GetGlyphTextureAndRect(chr, x, y, z, h, out texture, out rect); + CDraw.DrawTexture(texture, rect, color, begin, end); + } + + public void DrawGlyphReflection(char chr, float x, float y, float h, float z, SColorF color, float rspace, float rheight) + { + STexture texture; + SRectF rect; + _GetGlyphTextureAndRect(chr, x, y, z, h, out texture, out rect); + CDraw.DrawTextureReflection(texture, rect, color, rect, rspace, rheight); + } + + private void _GetGlyphTextureAndRect(char chr, float x, float y, float z, float h, out STexture texture, out SRectF rect) { AddGlyph(chr); CFonts.Height = h; - CGlyph glyph = _Glyphs[(int)_htGlyphs[chr]]; - float factor = h / glyph.Texture.height; - float width = glyph.Texture.width * factor; + CGlyph glyph = _Glyphs[chr]; + texture = glyph.Texture; + float factor = h / texture.height; + float width = texture.width * factor; float d = glyph.SIZEh / 5f * factor; - - CDraw.DrawTexture(glyph.Texture, new SRectF(x - d, y, width, h, z), color, begin, end); + rect = new SRectF(x - d, y, width, h, z); } public float GetWidth(char chr) { AddGlyph(chr); - CGlyph glyph = _Glyphs[(int)_htGlyphs[chr]]; + CGlyph glyph = _Glyphs[chr]; float factor = CFonts.Height / glyph.Texture.height; return glyph.width * factor; } public float GetHeight(char chr) { + return CFonts.Height; + /*WTF??? AddGlyph(chr); - CGlyph glyph = _Glyphs[(int)_htGlyphs[chr]]; + CGlyph glyph = _Glyphs[chr]; float factor = CFonts.Height / glyph.Texture.height; - return glyph.Texture.height * factor; + return glyph.Texture.height * factor;*/ } public void AddGlyph(char chr) { - if (_htGlyphs.ContainsKey(chr)) + if (_Glyphs.ContainsKey(chr)) return; float h = CFonts.Height; - _Glyphs.Add(new CGlyph(chr, SIZEh)); - _htGlyphs.Add(chr, _Glyphs.Count - 1); + _Glyphs.Add(chr, new CGlyph(chr, SIZEh)); CFonts.Height = h; } public void UnloadAllGlyphs() { - foreach (CGlyph glyph in _Glyphs) + foreach (CGlyph glyph in _Glyphs.Values) { glyph.UnloadTexture(); } @@ -293,6 +292,7 @@ namespace Vocaluxe.Base { fonts.Dispose(); fonts = null; + UnloadAllGlyphs(); } GC.SuppressFinalize(this); } diff --git a/Vocaluxe/Base/CSettings.cs b/Vocaluxe/Base/CSettings.cs index c13bd022..03a759de 100644 --- a/Vocaluxe/Base/CSettings.cs +++ b/Vocaluxe/Base/CSettings.cs @@ -192,8 +192,7 @@ namespace Vocaluxe.Base foreach (string folder in Folders) { string path = Path.Combine(Environment.CurrentDirectory, folder); - if (!Directory.Exists(path)) - Directory.CreateDirectory(path); + CreateFolder(path); } } diff --git a/Vocaluxe/Lib/Draw/CDirect3D.cs b/Vocaluxe/Lib/Draw/CDirect3D.cs index a89d3a62..6e668219 100644 --- a/Vocaluxe/Lib/Draw/CDirect3D.cs +++ b/Vocaluxe/Lib/Draw/CDirect3D.cs @@ -27,7 +27,7 @@ namespace Vocaluxe.Lib.Draw private bool _Run; private Direct3D _D3D; - private Device _Device; + private Device _Device = null; private PresentParameters _PresentParameters; private bool _fullscreen = false; @@ -123,52 +123,37 @@ namespace Vocaluxe.Lib.Draw //Apply antialiasing and check if antialiasing mode is supported #region Antialiasing - int quality = 0; - if (CConfig.AAMode == EAntiAliasingModes.x0) + int quality = 1; + MultisampleType msType; + switch (CConfig.AAMode) { - _PresentParameters.Multisample = MultisampleType.None; - _PresentParameters.MultisampleQuality = quality; + case EAntiAliasingModes.x2: + msType = MultisampleType.TwoSamples; + break; + case EAntiAliasingModes.x4: + msType = MultisampleType.FourSamples; + break; + case EAntiAliasingModes.x8: + msType = MultisampleType.EightSamples; + break; + case EAntiAliasingModes.x16: + case EAntiAliasingModes.x32://x32 is not supported, fallback to x16 + msType = MultisampleType.SixteenSamples; + break; + default: + msType = MultisampleType.None; + break; } - else if (CConfig.AAMode == EAntiAliasingModes.x2) + + if (!_D3D.CheckDeviceMultisampleType(_D3D.Adapters.DefaultAdapter.Adapter, DeviceType.Hardware, _D3D.Adapters.DefaultAdapter.CurrentDisplayMode.Format, false, msType, out quality)) { - if (_D3D.CheckDeviceMultisampleType(_D3D.Adapters.DefaultAdapter.Adapter, DeviceType.Hardware, _D3D.Adapters.DefaultAdapter.CurrentDisplayMode.Format, false, MultisampleType.TwoSamples, out quality)) - { - _PresentParameters.Multisample = MultisampleType.TwoSamples; - _PresentParameters.MultisampleQuality = quality - 1; - } - else - CLog.LogError("[Direct3D] This AAMode is not supported by this device or driver, fallback to no AA"); - } - else if (CConfig.AAMode == EAntiAliasingModes.x4) - { - if (_D3D.CheckDeviceMultisampleType(_D3D.Adapters.DefaultAdapter.Adapter, DeviceType.Hardware, _D3D.Adapters.DefaultAdapter.CurrentDisplayMode.Format, false, MultisampleType.FourSamples, out quality)) - { - _PresentParameters.Multisample = MultisampleType.FourSamples; - _PresentParameters.MultisampleQuality = quality - 1; - } - else - CLog.LogError("[Direct3D] This AAMode is not supported by this device or driver, fallback to no AA"); - } - else if (CConfig.AAMode == EAntiAliasingModes.x8) - { - if (_D3D.CheckDeviceMultisampleType(_D3D.Adapters.DefaultAdapter.Adapter, DeviceType.Hardware, _D3D.Adapters.DefaultAdapter.CurrentDisplayMode.Format, false, MultisampleType.EightSamples, out quality)) - { - _PresentParameters.Multisample = MultisampleType.EightSamples; - _PresentParameters.MultisampleQuality = quality - 1; - } - else - CLog.LogError("[Direct3D] This AAMode is not supported by this device or driver, fallback to no AA"); - } - else if (CConfig.AAMode == EAntiAliasingModes.x16 || CConfig.AAMode == EAntiAliasingModes.x32) //x32 is not supported, fallback to x16 - { - if (_D3D.CheckDeviceMultisampleType(_D3D.Adapters.DefaultAdapter.Adapter, DeviceType.Hardware, _D3D.Adapters.DefaultAdapter.CurrentDisplayMode.Format, false, MultisampleType.SixteenSamples, out quality)) - { - _PresentParameters.Multisample = MultisampleType.SixteenSamples; - _PresentParameters.MultisampleQuality = quality - 1; - } - else - CLog.LogError("[Direct3D] This AAMode is not supported by this device or driver, fallback to no AA"); - } + CLog.LogError("[Direct3D] This AAMode is not supported by this device or driver, fallback to no AA"); + msType = MultisampleType.None; + quality = 1; + } + + _PresentParameters.Multisample = msType; + _PresentParameters.MultisampleQuality = quality - 1; #endregion Antialiasing //Apply the VSync configuration @@ -195,14 +180,6 @@ namespace Vocaluxe.Lib.Draw { _Device = new Device(_D3D, _D3D.Adapters.DefaultAdapter.Adapter, DeviceType.Hardware, Handle, flags, _PresentParameters); } - catch (Exception e) - { - MessageBox.Show("Something went wrong during device creating, please check if your DirectX redistributables " + - "and graphic card drivers are up to date. You can download the DirectX runtimes at http://www.microsoft.com/download/en/details.aspx?id=8109", - CSettings.sProgramName, MessageBoxButtons.OK, MessageBoxIcon.Error); - CLog.LogError(e.Message + " - Something went wrong during device creating, please check if your DirectX redistributables and grafic card drivers are up to date. You can download the DirectX runtimes at http://www.microsoft.com/download/en/details.aspx?id=8109"); - Environment.Exit(Environment.ExitCode); - } finally { if (_Device == null || _Device.Disposed) diff --git a/VocaluxeLib/Menu/CMenu.cs b/VocaluxeLib/Menu/CMenu.cs index 2f32f7c7..fb5bd244 100644 --- a/VocaluxeLib/Menu/CMenu.cs +++ b/VocaluxeLib/Menu/CMenu.cs @@ -220,16 +220,16 @@ namespace Vocaluxe.Menu { if (Elements != null) { - for (int i = 0; i < Elements.Length; i++) + foreach (string elName in Elements) { T Element = (T)Activator.CreateInstance(typeof(T), _PartyModeID); - if (Element.LoadTheme("//root/" + _ThemeName, _ThemeBackgrounds[i], xmlReader, SkinIndex)) + if (Element.LoadTheme("//root/" + _ThemeName, elName, xmlReader, SkinIndex)) { - MAddElement(Element, Elements[i]); + MAddElement(Element, elName); } else { - CBase.Log.LogError("Can't load " + typeof(T).Name.Substring(1) + " \"" + Elements[i] + "\" in screen " + _ThemeName); + CBase.Log.LogError("Can't load " + typeof(T).Name.Substring(1) + " \"" + elName + "\" in screen " + _ThemeName); } } } @@ -797,11 +797,7 @@ namespace Vocaluxe.Menu public virtual bool HandleInputThemeEditor(KeyEvent KeyEvent) { _UnsetHighlighted(_Selection); - if (KeyEvent.KeyPressed) - { - - } - else + if (!KeyEvent.KeyPressed) { switch (KeyEvent.Key) { @@ -1311,40 +1307,7 @@ namespace Vocaluxe.Menu private float _GetZValue(int interaction) { - switch (_Interactions[interaction].Type) - { - case EType.TButton: - return _Buttons[_Interactions[interaction].Num].Rect.Z; - - case EType.TSelectSlide: - return _SelectSlides[_Interactions[interaction].Num].Rect.Z; - - case EType.TStatic: - return _Statics[_Interactions[interaction].Num].Rect.Z; - - case EType.TText: - return _Texts[_Interactions[interaction].Num].Z; - - case EType.TSongMenu: - return _SongMenus[_Interactions[interaction].Num].Rect.Z; - - case EType.TLyric: - return _Lyrics[_Interactions[interaction].Num].Rect.Z; - - case EType.TNameSelection: - return _NameSelections[_Interactions[interaction].Num].Rect.Z; - - case EType.TEqualizer: - return _Equalizers[_Interactions[interaction].Num].Rect.Z; - - case EType.TPlaylist: - return _Playlists[_Interactions[interaction].Num].Rect.Z; - - case EType.TParticleEffect: - return _ParticleEffects[_Interactions[interaction].Num].Rect.Z; - } - - return CBase.Settings.GetZFar(); + return _GetZValue(_Interactions[interaction]); } private void _NextInteraction() @@ -2146,7 +2109,7 @@ namespace Vocaluxe.Menu // Statics CStatic stat = new CStatic(_PartyModeID); i = 1; - while (stat.LoadTheme("//root/" + _ThemeName, "Statics[" + i.ToString(), xmlReader, SkinIndex)) + while (stat.LoadTheme("//root/" + _ThemeName, "Static" + i.ToString(), xmlReader, SkinIndex)) { AddStatic(stat); stat = new CStatic(_PartyModeID); diff --git a/VocaluxeLib/Menu/CText.cs b/VocaluxeLib/Menu/CText.cs index 4e5f1e0a..ca81bd1b 100644 --- a/VocaluxeLib/Menu/CText.cs +++ b/VocaluxeLib/Menu/CText.cs @@ -642,17 +642,12 @@ namespace Vocaluxe.Menu return false; } - public void Draw() - { - Draw(false); - } - public void ForceDraw() { Draw(true); } - public void Draw(bool ForceDraw) + public void Draw(bool ForceDraw = false) { if (!ForceDraw && !Visible && CBase.Settings.GetGameState() != EGameState.EditTheme) return; diff --git a/VocaluxeLib/Menu/IMenu.cs b/VocaluxeLib/Menu/IMenu.cs index 331dd1f3..cb64b806 100644 --- a/VocaluxeLib/Menu/IMenu.cs +++ b/VocaluxeLib/Menu/IMenu.cs @@ -317,9 +317,6 @@ namespace Vocaluxe.Menu CPlaylistSong GetPlaylistSong(int PlaylistID, int SongIndex); } - public interface IPlaylists - { - } [Flags] public enum EModifier