new interaction handling for playlist (there are still some minor bugs)

This commit is contained in:
Alexander Eckart committed 2012-08-12 22:55:50 +02:00
1 parent 8cbc0a1ae6
commit 6f2fe5f1a7
20 files changed
+360 -104

No files matched your search

+1 -1
View File
@@ -741,7 +741,7 @@
<Y>80</Y> <Y>80</Y>
<W>295</W> <W>295</W>
<H>460</H> <H>460</H>
<Z>-1,00</Z> <Z>-0,90</Z>
<EntryHeight>50,00</EntryHeight> <EntryHeight>50,00</EntryHeight>
<SkinBackground>CoverTile</SkinBackground> <SkinBackground>CoverTile</SkinBackground>
<SkinBackgroundSelected>CoverTile</SkinBackgroundSelected> <SkinBackgroundSelected>CoverTile</SkinBackgroundSelected>
+6 -6
View File
@@ -13,10 +13,10 @@ namespace Vocaluxe.Base
static class CPlaylists static class CPlaylists
{ {
private static List<CPlaylist> _Playlists; private static List<CPlaylistFile> _Playlists;
private static CHelper Helper = new CHelper(); private static CHelper Helper = new CHelper();
public static CPlaylist[] Playlists public static CPlaylistFile[] Playlists
{ {
get { return _Playlists.ToArray(); } get { return _Playlists.ToArray(); }
} }
@@ -46,13 +46,13 @@ namespace Vocaluxe.Base
public static void LoadPlaylists() public static void LoadPlaylists()
{ {
_Playlists = new List<CPlaylist>(); _Playlists = new List<CPlaylistFile>();
List<string> files = new List<string>(); List<string> files = new List<string>();
files.AddRange(Helper.ListFiles(CSettings.sFolderPlaylists, "*.xml", true, true)); files.AddRange(Helper.ListFiles(CSettings.sFolderPlaylists, "*.xml", true, true));
foreach (string file in files) foreach (string file in files)
{ {
CPlaylist playlist = new CPlaylist(file); CPlaylistFile playlist = new CPlaylistFile(file);
_Playlists.Add(playlist); _Playlists.Add(playlist);
} }
@@ -66,7 +66,7 @@ namespace Vocaluxe.Base
_Playlists.Sort(CompareByPlaylistName); _Playlists.Sort(CompareByPlaylistName);
} }
private static int CompareByPlaylistName(CPlaylist a, CPlaylist b) private static int CompareByPlaylistName(CPlaylistFile a, CPlaylistFile b)
{ {
return String.Compare(a.PlaylistName, b.PlaylistName); return String.Compare(a.PlaylistName, b.PlaylistName);
} }
@@ -98,7 +98,7 @@ namespace Vocaluxe.Base
public static int NewPlaylist() public static int NewPlaylist()
{ {
CPlaylist pl = new CPlaylist(); CPlaylistFile pl = new CPlaylistFile();
pl.PlaylistName = "New Playlist"; pl.PlaylistName = "New Playlist";
_Playlists.Add(pl); _Playlists.Add(pl);
return (_Playlists.Count - 1); return (_Playlists.Count - 1);
@@ -29,7 +29,7 @@ namespace Vocaluxe.Lib.Playlist
} }
} }
public class CPlaylist public class CPlaylistFile
{ {
private static XmlWriterSettings _settings = new XmlWriterSettings(); private static XmlWriterSettings _settings = new XmlWriterSettings();
private static CHelper Helper = new CHelper(); private static CHelper Helper = new CHelper();
@@ -38,14 +38,14 @@ namespace Vocaluxe.Lib.Playlist
public string PlaylistFile; public string PlaylistFile;
public List<CPlaylistSong> Songs = new List<CPlaylistSong>(); public List<CPlaylistSong> Songs = new List<CPlaylistSong>();
public CPlaylist() public CPlaylistFile()
{ {
Init(); Init();
PlaylistName = string.Empty; PlaylistName = string.Empty;
PlaylistFile = string.Empty; PlaylistFile = string.Empty;
} }
public CPlaylist(string file) public CPlaylistFile(string file)
{ {
Init(); Init();
PlaylistFile = file; PlaylistFile = file;
+5
View File
@@ -38,6 +38,11 @@ namespace Vocaluxe.Menu
public SColorF Color; public SColorF Color;
public string GetThemeName()
{
return _Theme.Name;
}
#region Constructors #region Constructors
public CBackground() public CBackground()
{ {
+5
View File
@@ -55,6 +55,11 @@ namespace Vocaluxe.Menu
} }
public bool Visible; public bool Visible;
public string GetThemeName()
{
return _Theme.Name;
}
public CButton() public CButton()
{ {
_Theme = new SThemeButton(); _Theme = new SThemeButton();
+5
View File
@@ -47,6 +47,11 @@ namespace Vocaluxe.Menu
public bool Visible; public bool Visible;
public bool ScreenHandles; public bool ScreenHandles;
public string GetThemeName()
{
return _Theme.Name;
}
private float[] _Bars; private float[] _Bars;
public CEqualizer() public CEqualizer()
+5
View File
@@ -47,6 +47,11 @@ namespace Vocaluxe.Menu
private float _Alpha = 1f; private float _Alpha = 1f;
public string GetThemeName()
{
return _Theme.Name;
}
public SRectF Rect public SRectF Rect
{ {
get { return new SRectF(_X, _Y, _MaxW, _H, _Z); } get { return new SRectF(_X, _Y, _MaxW, _H, _Z); }
+2 -4
View File
@@ -879,8 +879,7 @@ namespace Vocaluxe.Menu
{ {
if (_Interactions.Count > 0 && _Interactions[_Selection].Type == EType.TSelectSlide && KeyEvent.Mod != Modifier.Shift) if (_Interactions.Count > 0 && _Interactions[_Selection].Type == EType.TSelectSlide && KeyEvent.Mod != Modifier.Shift)
KeyEvent.Handled = PrevElement(); KeyEvent.Handled = PrevElement();
else
if (!KeyEvent.Handled)
KeyEvent.Handled = _NextInteraction(KeyEvent); KeyEvent.Handled = _NextInteraction(KeyEvent);
} }
@@ -888,8 +887,7 @@ namespace Vocaluxe.Menu
{ {
if (_Interactions.Count > 0 && _Interactions[_Selection].Type == EType.TSelectSlide && KeyEvent.Mod != Modifier.Shift) if (_Interactions.Count > 0 && _Interactions[_Selection].Type == EType.TSelectSlide && KeyEvent.Mod != Modifier.Shift)
KeyEvent.Handled = NextElement(); KeyEvent.Handled = NextElement();
else
if (!KeyEvent.Handled)
KeyEvent.Handled = _NextInteraction(KeyEvent); KeyEvent.Handled = _NextInteraction(KeyEvent);
} }
+5
View File
@@ -49,6 +49,11 @@ namespace Vocaluxe.Menu
private SThemeNameSelection _Theme; private SThemeNameSelection _Theme;
private bool _ThemeLoaded; private bool _ThemeLoaded;
public string GetThemeName()
{
return _Theme.Name;
}
public bool Selected = false; public bool Selected = false;
public bool Visible = true; public bool Visible = true;
+234 -88
View File
@@ -8,6 +8,7 @@ using System.Windows.Forms;
using Vocaluxe.Base; using Vocaluxe.Base;
using Vocaluxe.Lib.Draw; using Vocaluxe.Lib.Draw;
using Vocaluxe.Lib.Song;
using Vocaluxe.GameModes; using Vocaluxe.GameModes;
namespace Vocaluxe.Menu namespace Vocaluxe.Menu
@@ -69,6 +70,13 @@ namespace Vocaluxe.Menu
private SThemePlaylist _Theme; private SThemePlaylist _Theme;
private bool _ThemeLoaded; private bool _ThemeLoaded;
public string GetThemeName()
{
return _Theme.Name;
}
private CObjectInteractions _Interactions;
private List<PlaylistElement> PlaylistElements; private List<PlaylistElement> PlaylistElements;
private List<PlaylistElementContent> PlaylistElementContents; private List<PlaylistElementContent> PlaylistElementContents;
@@ -85,6 +93,7 @@ namespace Vocaluxe.Menu
set set
{ {
_Selected = value; _Selected = value;
_Interactions.Active = value;
if (CurrentPlaylistElement == -1 && _Selected && PlaylistElementContents.Count > 0) if (CurrentPlaylistElement == -1 && _Selected && PlaylistElementContents.Count > 0)
{ {
CurrentPlaylistElement = 0; CurrentPlaylistElement = 0;
@@ -122,13 +131,26 @@ namespace Vocaluxe.Menu
PlaylistElements = new List<PlaylistElement>(); PlaylistElements = new List<PlaylistElement>();
PlaylistElementContents = new List<PlaylistElementContent>(); PlaylistElementContents = new List<PlaylistElementContent>();
_Interactions = new CObjectInteractions();
Visible = false; Visible = false;
Selected = false; Selected = false;
} }
public void Init() public void Init()
{ {
PrepareList(); PrepareList();
_Interactions.AddText(_Theme.Text1);
_Interactions.AddText(_Theme.Text2);
_Interactions.AddText(_Theme.Text3);
_Interactions.AddText(_Theme.TextPlaylistHeader);
_Interactions.AddStatic(_Theme.StaticCover);
_Interactions.AddStatic(_Theme.StaticPlaylistFooter);
_Interactions.AddStatic(_Theme.StaticPlaylistHeader);
_Interactions.AddButton(_Theme.ButtonPlaylistClose);
_Interactions.AddButton(_Theme.ButtonPlaylistDelete);
_Interactions.AddButton(_Theme.ButtonPlaylistSave);
_Interactions.AddButton(_Theme.ButtonPlaylistSing);
} }
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
@@ -290,20 +312,14 @@ namespace Vocaluxe.Menu
PlaylistElements[i].Background.Texture = CTheme.GetSkinTexture(_Theme.TextureBackgroundName); PlaylistElements[i].Background.Texture = CTheme.GetSkinTexture(_Theme.TextureBackgroundName);
PlaylistElements[i].Background.Color = BackgroundColor; PlaylistElements[i].Background.Color = BackgroundColor;
} }
PlaylistElements[i].Background.Draw();
PlaylistElements[i].Cover.Draw();
PlaylistElements[i].Text1.Draw();
PlaylistElements[i].Text2.Draw();
PlaylistElements[i].Text3.Draw();
PlaylistElements[i].SelectSlide.Draw();
} }
_Theme.ButtonPlaylistSing.Draw();
_Theme.ButtonPlaylistSave.Draw(); _Interactions.Draw();
_Theme.ButtonPlaylistDelete.Draw(); }
_Theme.ButtonPlaylistClose.Draw();
_Theme.StaticPlaylistHeader.Draw(); public bool IsMouseOver(MouseEvent MouseEvent)
_Theme.StaticPlaylistFooter.Draw(); {
_Theme.TextPlaylistHeader.Draw(); return CHelper.IsInBounds(Rect, MouseEvent.X, MouseEvent.Y) || _Interactions.IsMouseOver(MouseEvent);
} }
public void UnloadTextures() public void UnloadTextures()
@@ -329,34 +345,77 @@ namespace Vocaluxe.Menu
LoadTextures(); LoadTextures();
} }
public bool HandleInput(KeyEvent kevent) public bool HandleInput(KeyEvent KeyEvent)
{ {
if (Selected) if (Selected)
{ {
switch (kevent.Key) int PrevPlaylistElement = CurrentPlaylistElement;
int CurrPlaylistElement = -1;
//_Interactions.HandleInput(KeyEvent);
for (int i = 0; i < PlaylistElements.Count; i++)
{
//Hover for playlist-element
if (PlaylistElementContents.Count - 1 >= i && PlaylistElements[i].SelectSlide.Selected)
CurrPlaylistElement = i;
}
switch (KeyEvent.Key)
{ {
case Keys.Up: case Keys.Up:
if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0) if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0)
{ {
CurrentPlaylistElement = 0; _Interactions.HandleInput(KeyEvent);
SetSelectionToLastEntry();
return true;
}
else if (CurrentPlaylistElement == 0 || PlaylistElementContents.Count == 0 || KeyEvent.ModSHIFT)
{
CurrentPlaylistElement = -1;
ActiveHover = CurrentPlaylistElement; ActiveHover = CurrentPlaylistElement;
_Interactions.SetInteractionToSelectSlide(PlaylistElements[0].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true; return true;
} }
else if (CurrentPlaylistElement - 1 > 0) else if (CurrentPlaylistElement - 1 > 0)
{ {
CurrentPlaylistElement--; _Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
ActiveHover = CurrentPlaylistElement; _Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true; return true;
} }
else if (CurrentPlaylistElement - 1 == 0) else if (CurrentPlaylistElement - 1 == 0)
{ {
CurrentPlaylistElement--;
if (Offset > 0) if (Offset > 0)
{ {
Offset--; Offset--;
Update(); Update();
} }
ActiveHover = CurrentPlaylistElement;
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true; return true;
} }
return false; return false;
@@ -364,28 +423,63 @@ namespace Vocaluxe.Menu
case Keys.Down: case Keys.Down:
if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0) if (CurrentPlaylistElement == -1 && PlaylistElementContents.Count > 0)
{ {
CurrentPlaylistElement = 0; _Interactions.HandleInput(KeyEvent);
ActiveHover = CurrentPlaylistElement; SetSelectionToFirstEntry();
return true; return true;
} }
else if (CurrentPlaylistElement + 1 < PlaylistElements.Count) else if (CurrentPlaylistElement == PlaylistElements.Count -1 || PlaylistElementContents.Count == 0 || KeyEvent.ModSHIFT)
{ {
if (PlaylistElements[CurrentPlaylistElement + 1].Content != -1) CurrentPlaylistElement = -1;
ActiveHover = CurrentPlaylistElement;
int sel = PlaylistElementContents.Count - 1;
if (sel > PlaylistElements.Count - 1)
sel = PlaylistElements.Count - 1;
_Interactions.SetInteractionToSelectSlide(PlaylistElements[sel].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{ {
CurrentPlaylistElement++; CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement; ActiveHover = CurrentPlaylistElement;
return true;
} }
return true;
} }
else if (CurrentPlaylistElement + 1 >= PlaylistElements.Count && CurrentPlaylistElement + Offset + 1 < PlaylistElementContents.Count) else if (CurrentPlaylistElement + 1 < PlaylistElements.Count - 1)
{
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
}
else if (CurrentPlaylistElement + 1 >= PlaylistElements.Count - 1 && CurrentPlaylistElement + Offset + 1 < PlaylistElementContents.Count)
{ {
if (PlaylistElementContents[CurrentPlaylistElement + Offset + 1].SongID != -1) if (PlaylistElementContents[CurrentPlaylistElement + Offset + 1].SongID != -1)
{ {
Offset++; Offset++;
Update(); Update();
ActiveHover = CurrentPlaylistElement;
return true;
} }
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
_Interactions.HandleInput(KeyEvent);
int selection = GetSelectedSelectionNr();
if (selection != -1 && PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
return true;
} }
return false; return false;
@@ -394,6 +488,8 @@ namespace Vocaluxe.Menu
{ {
CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[CurrentPlaylistElement].Content); CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[CurrentPlaylistElement].Content);
UpdatePlaylist(); UpdatePlaylist();
if (CurrentPlaylistElement != -1)
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
return true; return true;
} }
return false; return false;
@@ -420,6 +516,7 @@ namespace Vocaluxe.Menu
Offset--; Offset--;
} }
UpdatePlaylist(); UpdatePlaylist();
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
return true; return true;
} }
break; break;
@@ -438,28 +535,27 @@ namespace Vocaluxe.Menu
Offset++; Offset++;
} }
UpdatePlaylist(); UpdatePlaylist();
_Interactions.SetInteractionToSelectSlide(PlaylistElements[CurrentPlaylistElement].SelectSlide);
return true; return true;
} }
break; break;
case Keys.Left: case Keys.Left:
_Interactions.HandleInput(KeyEvent);
if (CurrentPlaylistElement != -1) if (CurrentPlaylistElement != -1)
{ {
int oldValue = PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection; CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
PlaylistElements[CurrentPlaylistElement].SelectSlide.PrevValue(); UpdatePlaylist();
if (oldValue != PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection)
CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
return true; return true;
} }
return false; return false;
case Keys.Right: case Keys.Right:
_Interactions.HandleInput(KeyEvent);
if (CurrentPlaylistElement != -1) if (CurrentPlaylistElement != -1)
{ {
int oldValue = PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection; CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
PlaylistElements[CurrentPlaylistElement].SelectSlide.NextValue(); UpdatePlaylist();
if (oldValue != PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection)
CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
return true; return true;
} }
return false; return false;
@@ -468,72 +564,117 @@ namespace Vocaluxe.Menu
return false; return false;
} }
public bool HandleMouse(MouseEvent mevent) private void SetSelectionToLastEntry()
{ {
if (CHelper.IsInBounds(Rect, mevent) && Visible) if (PlaylistElementContents.Count == 0)
return;
int selection = GetSelectedSelectionNr();
if (selection == -1)
return;
int off = PlaylistElementContents.Count - PlaylistElements.Count;
if (off >= 0)
{ {
if (mevent.Wheel > 0) Offset = off;
Update();
}
if (PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
}
private void SetSelectionToFirstEntry()
{
if (PlaylistElementContents.Count == 0)
return;
int selection = GetSelectedSelectionNr();
if (selection == -1)
return;
Offset = 0;
Update();
if (PlaylistElementContents.Count > selection)
{
CurrentPlaylistElement = selection;
ActiveHover = CurrentPlaylistElement;
}
}
private int GetSelectedSelectionNr()
{
for (int i = 0; i < PlaylistElements.Count; i++)
{
if (PlaylistElements[i].SelectSlide.Selected)
return i;
}
return -1;
}
public bool HandleMouse(MouseEvent MouseEvent)
{
_Interactions.HandleMouse(MouseEvent);
if (CHelper.IsInBounds(Rect, MouseEvent) && Visible)
{
if (MouseEvent.Wheel > 0)
{ {
if (PlaylistElements.Count + Offset + mevent.Wheel <= PlaylistElementContents.Count) if (PlaylistElements.Count + Offset + MouseEvent.Wheel <= PlaylistElementContents.Count)
{ {
Offset = Offset + mevent.Wheel; Offset += MouseEvent.Wheel;
Update(); Update();
return true; return true;
} }
return true; return true;
} }
else if (mevent.Wheel < 0) else if (MouseEvent.Wheel < 0)
{ {
if (Offset + mevent.Wheel >= 0) if (Offset + MouseEvent.Wheel >= 0)
{ {
Offset = Offset + mevent.Wheel; Offset += MouseEvent.Wheel;
Update(); Update();
return true; return true;
} }
} }
if (mevent.LB)
if (MouseEvent.LB)
{ {
if (CurrentPlaylistElement != -1) if (CurrentPlaylistElement != -1)
{ {
int oldValue = PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection; CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
PlaylistElements[CurrentPlaylistElement].SelectSlide.ProcessMouseLBClick(mevent.X, mevent.Y); UpdatePlaylist();
if (oldValue != PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection)
CPlaylists.Playlists[ActivePlaylistID].Songs[CurrentPlaylistElement + Offset].GameMode = PlaylistElementContents[CurrentPlaylistElement + Offset].Modes[PlaylistElements[CurrentPlaylistElement].SelectSlide.Selection];
return true; return true;
} }
} }
for (int i = 0; i < PlaylistElements.Count; i++) for (int i = 0; i < PlaylistElements.Count; i++)
{ {
//Hover for playlist-element //Hover for playlist-element
if (PlaylistElementContents.Count - 1 >= i && CHelper.IsInBounds(PlaylistElements[i].Background.Rect, mevent)) if (PlaylistElementContents.Count - 1 >= i && CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent))
{ {
PlaylistElements[i].Background.Texture = CTheme.GetSkinTexture(_Theme.STextureBackgroundName);
PlaylistElements[i].Background.Color = BackgroundSColor;
ActiveHover = i; ActiveHover = i;
CurrentPlaylistElement = i; CurrentPlaylistElement = i;
} }
else
{
PlaylistElements[i].Background.Texture = CTheme.GetSkinTexture(_Theme.TextureBackgroundName);
PlaylistElements[i].Background.Color = BackgroundColor;
}
//Hover for SelectSlide-Arrow
PlaylistElements[i].SelectSlide.ProcessMouseMove(mevent.X, mevent.Y);
//Delete Entry with RB //Delete Entry with RB
if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, mevent) && mevent.RB && PlaylistElements[i].Content != -1) if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.RB && PlaylistElements[i].Content != -1)
{ {
CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[i].Content); CPlaylists.Playlists[ActivePlaylistID].DeleteSong(PlaylistElements[i].Content);
UpdatePlaylist(); UpdatePlaylist();
return true; return true;
} }
//Change order with holding LB //Change order with holding LB
else if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, mevent) && mevent.LBH && PlaylistElements[i].Content != -1 && !changeOrder) else if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.LBH && PlaylistElements[i].Content != -1 && !changeOrder)
{ {
changeOrder = true; changeOrder = true;
CurrentPlaylistElement = i; CurrentPlaylistElement = i;
} }
else if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, mevent) && mevent.LBH && PlaylistElements[i].Content != -1 && changeOrder) else if (CHelper.IsInBounds(PlaylistElements[i].Background.Rect, MouseEvent) && MouseEvent.LBH && PlaylistElements[i].Content != -1 && changeOrder)
{ {
/* /*
if (PlaylistElements.Count < CurrentPlaylistElement + 1) if (PlaylistElements.Count < CurrentPlaylistElement + 1)
@@ -560,25 +701,21 @@ namespace Vocaluxe.Menu
if (ActivePlaylistID > -1) if (ActivePlaylistID > -1)
{ {
_Theme.ButtonPlaylistClose.ProcessMouseMove(mevent.X, mevent.Y); if (MouseEvent.LB)
_Theme.ButtonPlaylistSing.ProcessMouseMove(mevent.X, mevent.Y);
_Theme.ButtonPlaylistSave.ProcessMouseMove(mevent.X, mevent.Y);
_Theme.ButtonPlaylistDelete.ProcessMouseMove(mevent.X, mevent.Y);
if (mevent.LB)
{ {
if (CHelper.IsInBounds(_Theme.ButtonPlaylistClose.Rect, mevent)) if (_Theme.ButtonPlaylistClose.Selected)
{ {
ClosePlaylist(); ClosePlaylist();
} }
else if (CHelper.IsInBounds(_Theme.ButtonPlaylistSing.Rect, mevent)) else if (_Theme.ButtonPlaylistSing.Selected)
{ {
StartPlaylistSongs(); StartPlaylistSongs();
} }
else if (CHelper.IsInBounds(_Theme.ButtonPlaylistSave.Rect, mevent)) else if (_Theme.ButtonPlaylistSave.Selected)
{ {
CPlaylists.SavePlaylist(ActivePlaylistID); CPlaylists.SavePlaylist(ActivePlaylistID);
} }
else if (CHelper.IsInBounds(_Theme.ButtonPlaylistDelete.Rect, mevent)) else if (_Theme.ButtonPlaylistDelete.Selected)
{ {
CPlaylists.DeletePlaylist(ActivePlaylistID); CPlaylists.DeletePlaylist(ActivePlaylistID);
ClosePlaylist(); ClosePlaylist();
@@ -599,12 +736,20 @@ namespace Vocaluxe.Menu
en.Text1 = new CText(Rect.X + _Theme.Text1.X, Rect.Y + _Theme.Text1.Y + (i * _Theme.EntryHeight), _Theme.Text1.Z, _Theme.Text1.Height, _Theme.Text1.MaxWidth, _Theme.Text1.Align, _Theme.Text1.Style, _Theme.Text1.Fon, _Theme.Text1.Color, "", _Theme.Text1.ReflectionSpace, _Theme.Text1.ReflectionHeight); en.Text1 = new CText(Rect.X + _Theme.Text1.X, Rect.Y + _Theme.Text1.Y + (i * _Theme.EntryHeight), _Theme.Text1.Z, _Theme.Text1.Height, _Theme.Text1.MaxWidth, _Theme.Text1.Align, _Theme.Text1.Style, _Theme.Text1.Fon, _Theme.Text1.Color, "", _Theme.Text1.ReflectionSpace, _Theme.Text1.ReflectionHeight);
en.Text2 = new CText(Rect.X + _Theme.Text2.X, Rect.Y + _Theme.Text2.Y + (i * _Theme.EntryHeight), _Theme.Text2.Z, _Theme.Text2.Height, _Theme.Text2.MaxWidth, _Theme.Text2.Align, _Theme.Text2.Style, _Theme.Text2.Fon, _Theme.Text2.Color, "", _Theme.Text2.ReflectionSpace, _Theme.Text2.ReflectionHeight); en.Text2 = new CText(Rect.X + _Theme.Text2.X, Rect.Y + _Theme.Text2.Y + (i * _Theme.EntryHeight), _Theme.Text2.Z, _Theme.Text2.Height, _Theme.Text2.MaxWidth, _Theme.Text2.Align, _Theme.Text2.Style, _Theme.Text2.Fon, _Theme.Text2.Color, "", _Theme.Text2.ReflectionSpace, _Theme.Text2.ReflectionHeight);
en.Text3 = new CText(Rect.X + _Theme.Text3.X, Rect.Y + _Theme.Text3.Y + (i * _Theme.EntryHeight), _Theme.Text3.Z, _Theme.Text3.Height, _Theme.Text3.MaxWidth, _Theme.Text3.Align, _Theme.Text3.Style, _Theme.Text3.Fon, _Theme.Text3.Color, "", _Theme.Text3.ReflectionSpace, _Theme.Text3.ReflectionHeight); en.Text3 = new CText(Rect.X + _Theme.Text3.X, Rect.Y + _Theme.Text3.Y + (i * _Theme.EntryHeight), _Theme.Text3.Z, _Theme.Text3.Height, _Theme.Text3.MaxWidth, _Theme.Text3.Align, _Theme.Text3.Style, _Theme.Text3.Fon, _Theme.Text3.Color, "", _Theme.Text3.ReflectionSpace, _Theme.Text3.ReflectionHeight);
en.SelectSlide = (CSelectSlide)_Theme.SelectSlideGameMode.Clone();
en.SelectSlide = new CSelectSlide(_Theme.SelectSlideGameMode);
en.SelectSlide.Rect = new SRectF(Rect.X + _Theme.SelectSlideGameMode.Rect.X, Rect.Y + _Theme.SelectSlideGameMode.Rect.Y + (i * _Theme.EntryHeight), _Theme.SelectSlideGameMode.Rect.W, _Theme.SelectSlideGameMode.Rect.H, _Theme.SelectSlideGameMode.Rect.Z); en.SelectSlide.Rect = new SRectF(Rect.X + _Theme.SelectSlideGameMode.Rect.X, Rect.Y + _Theme.SelectSlideGameMode.Rect.Y + (i * _Theme.EntryHeight), _Theme.SelectSlideGameMode.Rect.W, _Theme.SelectSlideGameMode.Rect.H, _Theme.SelectSlideGameMode.Rect.Z);
en.SelectSlide.RectArrowLeft = new SRectF(Rect.X + _Theme.SelectSlideGameMode.RectArrowLeft.X, Rect.Y + _Theme.SelectSlideGameMode.RectArrowLeft.Y + (i * _Theme.EntryHeight), _Theme.SelectSlideGameMode.RectArrowLeft.W, _Theme.SelectSlideGameMode.RectArrowLeft.H, _Theme.SelectSlideGameMode.RectArrowLeft.Z); en.SelectSlide.RectArrowLeft = new SRectF(Rect.X + _Theme.SelectSlideGameMode.RectArrowLeft.X, Rect.Y + _Theme.SelectSlideGameMode.RectArrowLeft.Y + (i * _Theme.EntryHeight), _Theme.SelectSlideGameMode.RectArrowLeft.W, _Theme.SelectSlideGameMode.RectArrowLeft.H, _Theme.SelectSlideGameMode.RectArrowLeft.Z);
en.SelectSlide.RectArrowRight = new SRectF(Rect.X + _Theme.SelectSlideGameMode.RectArrowRight.X, Rect.Y + _Theme.SelectSlideGameMode.RectArrowRight.Y + (i * _Theme.EntryHeight), _Theme.SelectSlideGameMode.RectArrowRight.W, _Theme.SelectSlideGameMode.RectArrowRight.H, _Theme.SelectSlideGameMode.RectArrowRight.Z); en.SelectSlide.RectArrowRight = new SRectF(Rect.X + _Theme.SelectSlideGameMode.RectArrowRight.X, Rect.Y + _Theme.SelectSlideGameMode.RectArrowRight.Y + (i * _Theme.EntryHeight), _Theme.SelectSlideGameMode.RectArrowRight.W, _Theme.SelectSlideGameMode.RectArrowRight.H, _Theme.SelectSlideGameMode.RectArrowRight.Z);
en.Content = -1; en.Content = -1;
PlaylistElements.Add(en); PlaylistElements.Add(en);
_Interactions.AddSelectSlide(en.SelectSlide);
_Interactions.AddText(en.Text1);
_Interactions.AddText(en.Text2);
_Interactions.AddText(en.Text3);
_Interactions.AddStatic(en.Background);
_Interactions.AddStatic(en.Cover);
} }
} }
@@ -637,7 +782,7 @@ namespace Vocaluxe.Menu
{ {
PlaylistElementContent pec = new PlaylistElementContent(); PlaylistElementContent pec = new PlaylistElementContent();
pec.SongID = CPlaylists.Playlists[ActivePlaylistID].Songs[i].SongID; pec.SongID = CPlaylists.Playlists[ActivePlaylistID].Songs[i].SongID;
pec.Modes = CSongs.AllSongs[CPlaylists.Playlists[ActivePlaylistID].Songs[i].SongID].AvailableGameModes; pec.Modes = CSongs.AllSongs[pec.SongID].AvailableGameModes;
pec.Mode = CPlaylists.Playlists[ActivePlaylistID].Songs[i].GameMode; pec.Mode = CPlaylists.Playlists[ActivePlaylistID].Songs[i].GameMode;
PlaylistElementContents.Add(pec); PlaylistElementContents.Add(pec);
} }
@@ -679,30 +824,31 @@ namespace Vocaluxe.Menu
int e = 0 + Offset; int e = 0 + Offset;
for (int i = 0; i < PlaylistElements.Count; i++ ) for (int i = 0; i < PlaylistElements.Count; i++ )
{ {
if (e < PlaylistElementContents.Count) if (e + i < PlaylistElementContents.Count)
{ {
PlaylistElements[i].Content = e; PlaylistElements[i].Content = e+i;
PlaylistElements[i].Background.Visible = true; PlaylistElements[i].Background.Visible = true;
PlaylistElements[i].Cover.Visible = true; PlaylistElements[i].Cover.Visible = true;
PlaylistElements[i].SelectSlide.Visible = true; PlaylistElements[i].SelectSlide.Visible = true;
PlaylistElements[i].Text1.Visible = true; PlaylistElements[i].Text1.Visible = true;
PlaylistElements[i].Text2.Visible = true; PlaylistElements[i].Text2.Visible = true;
PlaylistElements[i].Text3.Visible = true; PlaylistElements[i].Text3.Visible = true;
PlaylistElements[i].Cover.Texture = CSongs.GetSong(PlaylistElementContents[e].SongID).CoverTextureSmall; PlaylistElementContent pec = PlaylistElementContents[e + i];
string t1 = _Theme.Text1.Text.Replace("%a", CSongs.GetSong(PlaylistElementContents[e].SongID).Artist).Replace("%t", CSongs.GetSong(PlaylistElementContents[e].SongID).Title); CSong song = CSongs.GetSong(pec.SongID);
string t2 = _Theme.Text2.Text.Replace("%a", CSongs.GetSong(PlaylistElementContents[e].SongID).Artist).Replace("%t", CSongs.GetSong(PlaylistElementContents[e].SongID).Title); PlaylistElements[i].Cover.Texture = song.CoverTextureSmall;
string t3 = _Theme.Text3.Text.Replace("%a", CSongs.GetSong(PlaylistElementContents[e].SongID).Artist).Replace("%t", CSongs.GetSong(PlaylistElementContents[e].SongID).Title); string t1 = _Theme.Text1.Text.Replace("%a", song.Artist).Replace("%t", song.Title);
string t2 = _Theme.Text2.Text.Replace("%a", song.Artist).Replace("%t", song.Title);
string t3 = _Theme.Text3.Text.Replace("%a", song.Artist).Replace("%t", song.Title);
PlaylistElements[i].Text1.Text = t1; PlaylistElements[i].Text1.Text = t1;
PlaylistElements[i].Text2.Text = t2; PlaylistElements[i].Text2.Text = t2;
PlaylistElements[i].Text3.Text = t3; PlaylistElements[i].Text3.Text = t3;
PlaylistElements[i].SelectSlide.Clear(); PlaylistElements[i].SelectSlide.Clear();
for (int g = 0; g < PlaylistElementContents[e].Modes.Length; g++) for (int g = 0; g < pec.Modes.Length; g++)
{ {
PlaylistElements[i].SelectSlide.AddValue(Enum.GetName(typeof(GameModes.EGameMode), PlaylistElementContents[e].Modes[g])); PlaylistElements[i].SelectSlide.AddValue(Enum.GetName(typeof(GameModes.EGameMode), pec.Modes[g]));
if (PlaylistElementContents[e].Modes[g] == PlaylistElementContents[e].Mode) if (pec.Modes[g] == pec.Mode)
PlaylistElements[i].SelectSlide.SetSelectionByValueIndex(g); PlaylistElements[i].SelectSlide.SetSelectionByValueIndex(g);
} }
e++;
} }
else else
{ {
+55
View File
@@ -43,6 +43,11 @@ namespace Vocaluxe.Menu
private SThemeSelectSlide _Theme; private SThemeSelectSlide _Theme;
private bool _ThemeLoaded; private bool _ThemeLoaded;
public string GetThemeName()
{
return _Theme.Name;
}
public SRectF Rect; public SRectF Rect;
public SRectF RectArrowLeft; public SRectF RectArrowLeft;
public SRectF RectArrowRight; public SRectF RectArrowRight;
@@ -159,6 +164,56 @@ namespace Vocaluxe.Menu
_ValueNames = new List<string>(); _ValueNames = new List<string>();
} }
public CSelectSlide(CSelectSlide slide)
{
_Theme = new SThemeSelectSlide();
_Theme.TextureArrowLeftName = slide._Theme.TextureArrowLeftName;
_Theme.TextureArrowRightName = slide._Theme.TextureArrowRightName;
_Theme.STextureName = slide._Theme.STextureName;
_Theme.STextureArrowLeftName = slide._Theme.STextureArrowLeftName;
_Theme.STextureArrowRightName = slide._Theme.STextureArrowRightName;
_Theme.HTextureName = slide._Theme.HTextureName;
_Theme.ColorName = slide._Theme.ColorName;
_Theme.SColorName = slide._Theme.SColorName;
_Theme.HColorName = slide._Theme.HColorName;
_Theme.ArrowColorName = slide._Theme.ArrowColorName;
_Theme.SArrowColorName = slide._Theme.SArrowColorName;
_Theme.TextColorName = slide._Theme.TextColorName;
_Theme.STextColorName = slide._Theme.STextColorName;
_Theme.TextFont = slide._Theme.TextFont;
_Theme.TextStyle = slide._Theme.TextStyle;
_ThemeLoaded = false;
Rect = new SRectF(slide.Rect);
RectArrowLeft = new SRectF(slide.RectArrowLeft);
RectArrowRight = new SRectF(slide.RectArrowRight);
Color = new SColorF(slide.Color);
SColor = new SColorF(slide.SColor);
ColorArrow = new SColorF(slide.ColorArrow);
SColorArrow = new SColorF(slide.SColorArrow);
TextColor = new SColorF(slide.TextColor);
STextColor = new SColorF(slide.STextColor);
TextH = slide.TextH;
MaxW = slide.MaxW;
_Selected = false;
_Textures = new List<STexture>();
_ValueIndexes = new List<int>();
_ValueNames = new List<string>();
_NumVisible = slide._NumVisible;
}
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
{ {
string item = XmlPath + "/" + ElementName; string item = XmlPath + "/" + ElementName;
+5
View File
@@ -22,6 +22,11 @@ namespace Vocaluxe.Menu
private SThemeStatic _Theme; private SThemeStatic _Theme;
private bool _ThemeLoaded; private bool _ThemeLoaded;
public string GetThemeName()
{
return _Theme.Name;
}
private STexture _Texture; private STexture _Texture;
public STexture Texture public STexture Texture
{ {
+6
View File
@@ -41,6 +41,12 @@ namespace Vocaluxe.Menu
{ {
private SThemeText _Theme; private SThemeText _Theme;
private bool _ThemeLoaded; private bool _ThemeLoaded;
public string GetThemeName()
{
return _Theme.Name;
}
private bool _ButtonText; private bool _ButtonText;
private bool _PositionNeedsUpdate = true; private bool _PositionNeedsUpdate = true;
+1
View File
@@ -8,6 +8,7 @@ namespace Vocaluxe.Menu
{ {
interface IMenuElement interface IMenuElement
{ {
string GetThemeName();
bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex); bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex);
bool SaveTheme(XmlWriter writer); bool SaveTheme(XmlWriter writer);
+5
View File
@@ -75,6 +75,11 @@ namespace Vocaluxe.Menu.SingNotes
_ActID = 0; _ActID = 0;
} }
public string GetThemeName()
{
return _Theme.Name;
}
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
{ {
string item = XmlPath + "/" + ElementName; string item = XmlPath + "/" + ElementName;
+5
View File
@@ -141,6 +141,11 @@ namespace Vocaluxe.Menu.SongMenu
#endregion ISongMenu #endregion ISongMenu
#region IMenuElement #region IMenuElement
public string GetThemeName()
{
return _SongMenu.GetThemeName();
}
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
{ {
return _SongMenu.LoadTheme(XmlPath, ElementName, navigator, SkinIndex); return _SongMenu.LoadTheme(XmlPath, ElementName, navigator, SkinIndex);
@@ -249,6 +249,11 @@ namespace Vocaluxe.Menu.SongMenu
_ThemeLoaded = false; _ThemeLoaded = false;
} }
public string GetThemeName()
{
return _Theme.Name;
}
public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex) public bool LoadTheme(string XmlPath, string ElementName, XPathNavigator navigator, int SkinIndex)
{ {
string item = XmlPath + "/" + ElementName; string item = XmlPath + "/" + ElementName;
@@ -692,6 +692,7 @@ namespace Vocaluxe.Menu.SongMenu
} }
} }
_Rect = _Theme.songMenuTileBoard.TileRectSmall;
_ScrollRect = new SRectF(0, 0, CSettings.iRenderW, CSettings.iRenderH, _Theme.songMenuTileBoard.TileRectSmall.Z); _ScrollRect = new SRectF(0, 0, CSettings.iRenderW, CSettings.iRenderH, _Theme.songMenuTileBoard.TileRectSmall.Z);
} }
else else
@@ -717,6 +718,7 @@ namespace Vocaluxe.Menu.SongMenu
} }
} }
_Rect = _Theme.songMenuTileBoard.TileRect;
_ScrollRect = new SRectF(0, 0, CSettings.iRenderW, CSettings.iRenderH, _Theme.songMenuTileBoard.TileRect.Z); _ScrollRect = new SRectF(0, 0, CSettings.iRenderW, CSettings.iRenderH, _Theme.songMenuTileBoard.TileRect.Z);
} }
+3 -1
View File
@@ -269,7 +269,7 @@ namespace Vocaluxe.Screens
{ {
base.HandleMouse(MouseEvent); base.HandleMouse(MouseEvent);
if (CHelper.IsInBounds(Playlists[htPlaylists(Playlist)].Rect, MouseEvent.X, MouseEvent.Y)) if (Playlists[htPlaylists(Playlist)].IsMouseOver(MouseEvent))
{ {
_PlaylistActive = true; _PlaylistActive = true;
Playlists[htPlaylists(Playlist)].Selected = _PlaylistActive; Playlists[htPlaylists(Playlist)].Selected = _PlaylistActive;
@@ -377,8 +377,10 @@ namespace Vocaluxe.Screens
public override bool UpdateGame() public override bool UpdateGame()
{ {
SongMenus[htSongMenus(SongMenu)].Update(); SongMenus[htSongMenus(SongMenu)].Update();
if (SongMenus[htSongMenus(SongMenu)].IsSmallView()) if (SongMenus[htSongMenus(SongMenu)].IsSmallView())
CheckPlaylist(); CheckPlaylist();
Texts[htTexts(TextCategory)].Text = CSongs.GetActualCategoryName(); Texts[htTexts(TextCategory)].Text = CSongs.GetActualCategoryName();
if (CSongs.Category > -1 || CConfig.Tabs == EOffOn.TR_CONFIG_OFF) if (CSongs.Category > -1 || CConfig.Tabs == EOffOn.TR_CONFIG_OFF)
+2 -1
View File
@@ -189,7 +189,7 @@
<Compile Include="Lib\Draw\COpenGL.cs"> <Compile Include="Lib\Draw\COpenGL.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
<Compile Include="Lib\Playlist\CPlaylist.cs" /> <Compile Include="Lib\Playlist\CPlaylistFile.cs" />
<Compile Include="Lib\Song\CNotes.cs" /> <Compile Include="Lib\Song\CNotes.cs" />
<Compile Include="Lib\Song\CSong.cs" /> <Compile Include="Lib\Song\CSong.cs" />
<Compile Include="Lib\Sound\CDirectSoundRecord.cs" /> <Compile Include="Lib\Sound\CDirectSoundRecord.cs" />
@@ -215,6 +215,7 @@
<Compile Include="Menu\CLyric.cs" /> <Compile Include="Menu\CLyric.cs" />
<Compile Include="Menu\CMenu.cs" /> <Compile Include="Menu\CMenu.cs" />
<Compile Include="Menu\CInteraction.cs" /> <Compile Include="Menu\CInteraction.cs" />
<Compile Include="Menu\CObjectInteractions.cs" />
<Compile Include="Menu\CPlaylist.cs" /> <Compile Include="Menu\CPlaylist.cs" />
<Compile Include="Menu\CSelectSlide.cs" /> <Compile Include="Menu\CSelectSlide.cs" />
<Compile Include="Menu\CStatic.cs" /> <Compile Include="Menu\CStatic.cs" />