Grid overview for profile screen (#858)

* Add Profile Grid

* Add Profile Grid

* Add Profile Grid

* Add Profile Grid

* Version 4

* Add Profile Grid

* Add Profile Grid

* Add Profile Grid

* Fix Out of Bounds Index & Player Selector Cursor

* Add Profile Grid

* Fix Out of Bounds Index & Player Selector Cursor
This commit is contained in:
Edi316 authored and GitHub committed 2026-04-26 20:50:15 +02:00
1 parent 9dac6d9b19
commit 76d26239bd
4 files changed
+283 -128

No files matched your search

@@ -1,4 +1,8 @@
ScreenProfiles ScreenProfiles
++++++++++
Version 4:
Add: <NameSelection>
++++++++++ ++++++++++
Version 3: Version 3:
Rename: <SelectSlideGuestProfile> to <SelectSlideUserRole> Rename: <SelectSlideGuestProfile> to <SelectSlideUserRole>
@@ -7,4 +11,4 @@ Rename: <SelectSlideGuestProfile> to <SelectSlideUserRole>
Version 2: Version 2:
Add: <ButtonDiscardSnapshot>, <ButtonSaveSnapshot>, <ButtonWebcam>, <ButtonTakeSnapshot> Add: <ButtonDiscardSnapshot>, <ButtonSaveSnapshot>, <ButtonWebcam>, <ButtonTakeSnapshot>
++++++++++ ++++++++++
@@ -2,7 +2,7 @@
<Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <Screen xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Informations> <Informations>
<ScreenName>ScreenProfiles</ScreenName> <ScreenName>ScreenProfiles</ScreenName>
<ScreenVersion>3</ScreenVersion> <ScreenVersion>4</ScreenVersion>
</Informations> </Informations>
<Backgrounds> <Backgrounds>
<Background Name="Background1"> <Background Name="Background1">
@@ -29,7 +29,7 @@
<Skin /> <Skin />
<Color Name="Visible" /> <Color Name="Visible" />
<Rect> <Rect>
<X>1147.5</X> <X>1340</X>
<Y>150</Y> <Y>150</Y>
<W>240</W> <W>240</W>
<H>240</H> <H>240</H>
@@ -53,11 +53,11 @@
<Text>TR_SCREENPROFILES_PROFILES</Text> <Text>TR_SCREENPROFILES_PROFILES</Text>
</Text> </Text>
<Text Name="TextPlayerName"> <Text Name="TextPlayerName">
<X>112.5</X> <X>730</X>
<Y>430.5</Y> <Y>435.5</Y>
<Z>0</Z> <Z>0</Z>
<H>40.5</H> <H>40.5</H>
<MaxW>0</MaxW> <MaxW>295</MaxW>
<Color Name="TextColor" /> <Color Name="TextColor" />
<SelColor Name="TextSelColor" /> <SelColor Name="TextSelColor" />
<Align>Left</Align> <Align>Left</Align>
@@ -67,11 +67,11 @@
<Text>TR_SCREENPROFILES_PLAYERNAME</Text> <Text>TR_SCREENPROFILES_PLAYERNAME</Text>
</Text> </Text>
<Text Name="TextGameDifficulty"> <Text Name="TextGameDifficulty">
<X>112.5</X> <X>730</X>
<Y>520.5</Y> <Y>525.5</Y>
<Z>0</Z> <Z>0</Z>
<H>40.5</H> <H>40.5</H>
<MaxW>0</MaxW> <MaxW>295</MaxW>
<Color Name="TextColor" /> <Color Name="TextColor" />
<SelColor Name="TextSelColor" /> <SelColor Name="TextSelColor" />
<Align>Left</Align> <Align>Left</Align>
@@ -81,11 +81,11 @@
<Text>TR_SCREENPROFILES_GAMEDIFFICULTY</Text> <Text>TR_SCREENPROFILES_GAMEDIFFICULTY</Text>
</Text> </Text>
<Text Name="TextAvatar"> <Text Name="TextAvatar">
<X>112.5</X> <X>730</X>
<Y>610.5</Y> <Y>615.5</Y>
<Z>0</Z> <Z>0</Z>
<H>40.5</H> <H>40.5</H>
<MaxW>0</MaxW> <MaxW>295</MaxW>
<Color Name="TextColor" /> <Color Name="TextColor" />
<SelColor Name="TextSelColor" /> <SelColor Name="TextSelColor" />
<Align>Left</Align> <Align>Left</Align>
@@ -95,11 +95,11 @@
<Text>TR_SCREENPROFILES_AVATAR</Text> <Text>TR_SCREENPROFILES_AVATAR</Text>
</Text> </Text>
<Text Name="TextUserrole"> <Text Name="TextUserrole">
<X>112.5</X> <X>730</X>
<Y>700.5</Y> <Y>705.5</Y>
<Z>0</Z> <Z>0</Z>
<H>40.5</H> <H>40.5</H>
<MaxW>0</MaxW> <MaxW>295</MaxW>
<Color Name="TextColor" /> <Color Name="TextColor" />
<SelColor Name="TextSelColor" /> <SelColor Name="TextSelColor" />
<Align>Left</Align> <Align>Left</Align>
@@ -109,11 +109,11 @@
<Text>TR_SCREENPROFILES_USERROLE</Text> <Text>TR_SCREENPROFILES_USERROLE</Text>
</Text> </Text>
<Text Name="TextActive"> <Text Name="TextActive">
<X>112.5</X> <X>730</X>
<Y>790.5</Y> <Y>795.5</Y>
<Z>0</Z> <Z>0</Z>
<H>40.5</H> <H>40.5</H>
<MaxW>0</MaxW> <MaxW>295</MaxW>
<Color Name="TextColor" /> <Color Name="TextColor" />
<SelColor Name="TextSelColor" /> <SelColor Name="TextSelColor" />
<Align>Left</Align> <Align>Left</Align>
@@ -128,20 +128,20 @@
<Skin /> <Skin />
<SkinSelected>SelectSlide</SkinSelected> <SkinSelected>SelectSlide</SkinSelected>
<Rect> <Rect>
<X>750</X> <X>1040</X>
<Y>420</Y> <Y>420</Y>
<W>1072.5</W> <W>840</W>
<H>75</H> <H>75</H>
<Z>0</Z> <Z>0</Z>
</Rect> </Rect>
<Color Name="SelectSlideColor" /> <Color Name="SelectSlideColor" />
<SelColor Name="SelectSlideSelColor" /> <SelColor Name="SelectSlideSelColor" />
<Text Name="Text"> <Text Name="Text">
<X>532.5</X> <X>420</X>
<Y>15</Y> <Y>5</Y>
<Z>0</Z> <Z>0</Z>
<H>60</H> <H>60</H>
<MaxW>1053</MaxW> <MaxW>800</MaxW>
<Color Name="ButtonTextSelColor" /> <Color Name="ButtonTextSelColor" />
<SelColor Name="ButtonTextSelColor" /> <SelColor Name="ButtonTextSelColor" />
<Align>Center</Align> <Align>Center</Align>
@@ -155,7 +155,7 @@
<Skin>Button</Skin> <Skin>Button</Skin>
<SkinSelected>Button</SkinSelected> <SkinSelected>Button</SkinSelected>
<Rect> <Rect>
<X>112.5</X> <X>50</X>
<Y>900</Y> <Y>900</Y>
<W>225</W> <W>225</W>
<H>75</H> <H>75</H>
@@ -190,7 +190,7 @@
<Skin>Button</Skin> <Skin>Button</Skin>
<SkinSelected>Button</SkinSelected> <SkinSelected>Button</SkinSelected>
<Rect> <Rect>
<X>682.5</X> <X>1050</X>
<Y>900</Y> <Y>900</Y>
<W>225</W> <W>225</W>
<H>75</H> <H>75</H>
@@ -225,7 +225,7 @@
<Skin>Button</Skin> <Skin>Button</Skin>
<SkinSelected>Button</SkinSelected> <SkinSelected>Button</SkinSelected>
<Rect> <Rect>
<X>997.5</X> <X>1347.5</X>
<Y>900</Y> <Y>900</Y>
<W>225</W> <W>225</W>
<H>75</H> <H>75</H>
@@ -260,7 +260,7 @@
<Skin>Button</Skin> <Skin>Button</Skin>
<SkinSelected>Button</SkinSelected> <SkinSelected>Button</SkinSelected>
<Rect> <Rect>
<X>1312.5</X> <X>1645</X>
<Y>900</Y> <Y>900</Y>
<W>225</W> <W>225</W>
<H>75</H> <H>75</H>
@@ -295,7 +295,7 @@
<Skin>Button</Skin> <Skin>Button</Skin>
<SkinSelected>Button</SkinSelected> <SkinSelected>Button</SkinSelected>
<Rect> <Rect>
<X>1627.5</X> <X>752.5</X>
<Y>900</Y> <Y>900</Y>
<W>225</W> <W>225</W>
<H>75</H> <H>75</H>
@@ -330,7 +330,7 @@
<Skin>Button</Skin> <Skin>Button</Skin>
<SkinSelected>Button</SkinSelected> <SkinSelected>Button</SkinSelected>
<Rect> <Rect>
<X>1147.5</X> <X>1340</X>
<Y>270</Y> <Y>270</Y>
<W>240</W> <W>240</W>
<H>75</H> <H>75</H>
@@ -357,7 +357,7 @@
<Skin>Button</Skin> <Skin>Button</Skin>
<SkinSelected>Button</SkinSelected> <SkinSelected>Button</SkinSelected>
<Rect> <Rect>
<X>1147.5</X> <X>1340</X>
<Y>195</Y> <Y>195</Y>
<W>240</W> <W>240</W>
<H>75</H> <H>75</H>
@@ -384,7 +384,7 @@
<Skin>Button</Skin> <Skin>Button</Skin>
<SkinSelected>Button</SkinSelected> <SkinSelected>Button</SkinSelected>
<Rect> <Rect>
<X>1627.5</X> <X>752.5</X>
<Y>900</Y> <Y>900</Y>
<W>225</W> <W>225</W>
<H>75</H> <H>75</H>
@@ -427,21 +427,21 @@
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected> <SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected> <SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<Rect> <Rect>
<X>750</X> <X>1040</X>
<Y>217.5</Y> <Y>217.5</Y>
<W>1072.5</W> <W>840</W>
<H>120</H> <H>120</H>
<Z>0</Z> <Z>0</Z>
</Rect> </Rect>
<RectArrowLeft> <RectArrowLeft>
<X>757.5</X> <X>1050</X>
<Y>247.5</Y> <Y>247.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
<Z>0</Z> <Z>0</Z>
</RectArrowLeft> </RectArrowLeft>
<RectArrowRight> <RectArrowRight>
<X>1755</X> <X>1810</X>
<Y>247.5</Y> <Y>247.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
@@ -454,9 +454,9 @@
<TextColor Name="TextColorAlpha" /> <TextColor Name="TextColorAlpha" />
<TextSelColor Name="TextSelColor" /> <TextSelColor Name="TextSelColor" />
<TextH>40.5</TextH> <TextH>40.5</TextH>
<TextRelativeX>75</TextRelativeX> <TextRelativeX>65</TextRelativeX>
<TextRelativeY>0</TextRelativeY> <TextRelativeY>0</TextRelativeY>
<TextMaxW>328.8</TextMaxW> <TextMaxW>630</TextMaxW>
<TextFont>Outline</TextFont> <TextFont>Outline</TextFont>
<TextStyle>Bold</TextStyle> <TextStyle>Bold</TextStyle>
<NumVisible>0</NumVisible> <NumVisible>0</NumVisible>
@@ -469,21 +469,21 @@
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected> <SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected> <SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<Rect> <Rect>
<X>750</X> <X>1040</X>
<Y>510</Y> <Y>510</Y>
<W>1072.5</W> <W>840</W>
<H>75</H> <H>75</H>
<Z>0</Z> <Z>0</Z>
</Rect> </Rect>
<RectArrowLeft> <RectArrowLeft>
<X>757.5</X> <X>1050</X>
<Y>517.5</Y> <Y>517.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
<Z>0</Z> <Z>0</Z>
</RectArrowLeft> </RectArrowLeft>
<RectArrowRight> <RectArrowRight>
<X>1755</X> <X>1810</X>
<Y>517.5</Y> <Y>517.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
@@ -496,9 +496,9 @@
<TextColor Name="TextColorAlpha" /> <TextColor Name="TextColorAlpha" />
<TextSelColor Name="TextSelColor" /> <TextSelColor Name="TextSelColor" />
<TextH>40.5</TextH> <TextH>40.5</TextH>
<TextRelativeX>75</TextRelativeX> <TextRelativeX>65</TextRelativeX>
<TextRelativeY>0</TextRelativeY> <TextRelativeY>0</TextRelativeY>
<TextMaxW>313.01</TextMaxW> <TextMaxW>630</TextMaxW>
<TextFont>Outline</TextFont> <TextFont>Outline</TextFont>
<TextStyle>Bold</TextStyle> <TextStyle>Bold</TextStyle>
<NumVisible>1</NumVisible> <NumVisible>1</NumVisible>
@@ -511,21 +511,21 @@
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected> <SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected> <SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<Rect> <Rect>
<X>750</X> <X>1040</X>
<Y>600</Y> <Y>600</Y>
<W>1072.5</W> <W>840</W>
<H>75</H> <H>75</H>
<Z>0</Z> <Z>0</Z>
</Rect> </Rect>
<RectArrowLeft> <RectArrowLeft>
<X>757.5</X> <X>1050</X>
<Y>607.5</Y> <Y>607.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
<Z>0</Z> <Z>0</Z>
</RectArrowLeft> </RectArrowLeft>
<RectArrowRight> <RectArrowRight>
<X>1755</X> <X>1810</X>
<Y>607.5</Y> <Y>607.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
@@ -538,9 +538,9 @@
<TextColor Name="TextColorAlpha" /> <TextColor Name="TextColorAlpha" />
<TextSelColor Name="TextSelColor" /> <TextSelColor Name="TextSelColor" />
<TextH>40.5</TextH> <TextH>40.5</TextH>
<TextRelativeX>75</TextRelativeX> <TextRelativeX>65</TextRelativeX>
<TextRelativeY>0</TextRelativeY> <TextRelativeY>0</TextRelativeY>
<TextMaxW>313.01</TextMaxW> <TextMaxW>630</TextMaxW>
<TextFont>Outline</TextFont> <TextFont>Outline</TextFont>
<TextStyle>Bold</TextStyle> <TextStyle>Bold</TextStyle>
<NumVisible>1</NumVisible> <NumVisible>1</NumVisible>
@@ -553,21 +553,21 @@
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected> <SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected> <SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<Rect> <Rect>
<X>750</X> <X>1040</X>
<Y>690</Y> <Y>690</Y>
<W>1072.5</W> <W>840</W>
<H>75</H> <H>75</H>
<Z>0</Z> <Z>0</Z>
</Rect> </Rect>
<RectArrowLeft> <RectArrowLeft>
<X>757.5</X> <X>1050</X>
<Y>697.5</Y> <Y>697.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
<Z>0</Z> <Z>0</Z>
</RectArrowLeft> </RectArrowLeft>
<RectArrowRight> <RectArrowRight>
<X>1755</X> <X>1810</X>
<Y>697.5</Y> <Y>697.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
@@ -580,9 +580,9 @@
<TextColor Name="TextColorAlpha" /> <TextColor Name="TextColorAlpha" />
<TextSelColor Name="TextSelColor" /> <TextSelColor Name="TextSelColor" />
<TextH>40.5</TextH> <TextH>40.5</TextH>
<TextRelativeX>75</TextRelativeX> <TextRelativeX>65</TextRelativeX>
<TextRelativeY>0</TextRelativeY> <TextRelativeY>0</TextRelativeY>
<TextMaxW>469.5</TextMaxW> <TextMaxW>630</TextMaxW>
<TextFont>Outline</TextFont> <TextFont>Outline</TextFont>
<TextStyle>Bold</TextStyle> <TextStyle>Bold</TextStyle>
<NumVisible>1</NumVisible> <NumVisible>1</NumVisible>
@@ -595,21 +595,21 @@
<SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected> <SkinArrowLeftSelected>SelectSlideArrowLeft</SkinArrowLeftSelected>
<SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected> <SkinArrowRightSelected>SelectSlideArrowRight</SkinArrowRightSelected>
<Rect> <Rect>
<X>750</X> <X>1040</X>
<Y>780</Y> <Y>780</Y>
<W>1072.5</W> <W>840</W>
<H>75</H> <H>75</H>
<Z>0</Z> <Z>0</Z>
</Rect> </Rect>
<RectArrowLeft> <RectArrowLeft>
<X>757.5</X> <X>1050</X>
<Y>787.5</Y> <Y>787.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
<Z>0</Z> <Z>0</Z>
</RectArrowLeft> </RectArrowLeft>
<RectArrowRight> <RectArrowRight>
<X>1755</X> <X>1810</X>
<Y>787.5</Y> <Y>787.5</Y>
<W>60</W> <W>60</W>
<H>60</H> <H>60</H>
@@ -622,16 +622,44 @@
<TextColor Name="TextColorAlpha" /> <TextColor Name="TextColorAlpha" />
<TextSelColor Name="TextSelColor" /> <TextSelColor Name="TextSelColor" />
<TextH>40.5</TextH> <TextH>40.5</TextH>
<TextRelativeX>75</TextRelativeX> <TextRelativeX>65</TextRelativeX>
<TextRelativeY>0</TextRelativeY> <TextRelativeY>0</TextRelativeY>
<TextMaxW>469.5</TextMaxW> <TextMaxW>630</TextMaxW>
<TextFont>Outline</TextFont> <TextFont>Outline</TextFont>
<TextStyle>Bold</TextStyle> <TextStyle>Bold</TextStyle>
<NumVisible>1</NumVisible> <NumVisible>1</NumVisible>
</SelectSlide> </SelectSlide>
</SelectSlides> </SelectSlides>
<SingNotes /> <SingNotes />
<NameSelections /> <NameSelections>
<NameSelection Name="NameSelection">
<Rect>
<X>50</X>
<Y>195</Y>
<W>1230</W>
<H>540</H>
<Z>0</Z>
</Rect>
<SkinEmptyTile>PlayerTile</SkinEmptyTile>
<ColorEmptyTile Name="EmptyTileColor" />
<SkinTileSelected>PlayerSelector</SkinTileSelected>
<Tiles>
<W>150</W>
<H>150</H>
<NumW>4</NumW>
<NumH>4</NumH>
<SpaceW>10</SpaceW>
<SpaceH>10</SpaceH>
<Name>
<Space>-20</Space>
<H>25.5</H>
<Font>Outline</Font>
<Style>Bold</Style>
<Color Name="TextColor" />
</Name>
</Tiles>
</NameSelection>
</NameSelections>
<Equalizers /> <Equalizers />
<Playlists /> <Playlists />
<ParticleEffects /> <ParticleEffects />
+89 -4
View File
@@ -1,4 +1,4 @@
#region license #region license
// This file is part of Vocaluxe. // This file is part of Vocaluxe.
// //
// Vocaluxe is free software: you can redistribute it and/or modify // Vocaluxe is free software: you can redistribute it and/or modify
@@ -41,7 +41,7 @@ namespace Vocaluxe.Screens
// Version number for theme files. Increment it, if you've changed something on the theme files! // Version number for theme files. Increment it, if you've changed something on the theme files!
protected override int _ScreenVersion protected override int _ScreenVersion
{ {
get { return 3; } get { return 4; }
} }
private const string _SelectSlideProfiles = "SelectSlideProfiles"; private const string _SelectSlideProfiles = "SelectSlideProfiles";
@@ -58,10 +58,11 @@ namespace Vocaluxe.Screens
private const string _ButtonSaveSnapshot = "ButtonSaveSnapshot"; private const string _ButtonSaveSnapshot = "ButtonSaveSnapshot";
private const string _ButtonDiscardSnapshot = "ButtonDiscardSnapshot"; private const string _ButtonDiscardSnapshot = "ButtonDiscardSnapshot";
private const string _ButtonTakeSnapshot = "ButtonTakeSnapshot"; private const string _ButtonTakeSnapshot = "ButtonTakeSnapshot";
private const string _NameSelection = "NameSelection";
private const string _StaticAvatar = "StaticAvatar"; private const string _StaticAvatar = "StaticAvatar";
private bool _ProfilesChanged; private bool _ProfilesChanged;
private bool _AvatarsChanged; private bool _AvatarsChanged;
private bool _SelectingKeyboardActive;
private Dictionary<int, Guid> _SelectSlideGuids = new Dictionary<int, Guid>(); private Dictionary<int, Guid> _SelectSlideGuids = new Dictionary<int, Guid>();
@@ -78,10 +79,12 @@ namespace Vocaluxe.Screens
{_ButtonPlayerName, _ButtonExit, _ButtonSave, _ButtonNew, _ButtonDelete, _ButtonWebcam, _ButtonSaveSnapshot, _ButtonDiscardSnapshot, _ButtonTakeSnapshot}; {_ButtonPlayerName, _ButtonExit, _ButtonSave, _ButtonNew, _ButtonDelete, _ButtonWebcam, _ButtonSaveSnapshot, _ButtonDiscardSnapshot, _ButtonTakeSnapshot};
_ThemeSelectSlides = new string[] {_SelectSlideProfiles, _SelectSlideDifficulty, _SelectSlideAvatars, _SelectSlideUserRole, _SelectSlideActive}; _ThemeSelectSlides = new string[] {_SelectSlideProfiles, _SelectSlideDifficulty, _SelectSlideAvatars, _SelectSlideUserRole, _SelectSlideActive};
_ThemeStatics = new string[] {_StaticAvatar}; _ThemeStatics = new string[] {_StaticAvatar};
_ThemeNameSelections = new string[] { _NameSelection };
_EditMode = EEditMode.None; _EditMode = EEditMode.None;
_ProfilesChanged = false; _ProfilesChanged = false;
_AvatarsChanged = false; _AvatarsChanged = false;
_SelectingKeyboardActive = false;
CProfiles.AddProfileChangedCallback(_OnProfileChanged); CProfiles.AddProfileChangedCallback(_OnProfileChanged);
} }
@@ -101,6 +104,46 @@ namespace Vocaluxe.Screens
public override bool HandleInput(SKeyEvent keyEvent) public override bool HandleInput(SKeyEvent keyEvent)
{ {
if (_SelectingKeyboardActive)
{
switch (keyEvent.Key)
{
case Keys.Left:
case Keys.Right:
case Keys.Up:
case Keys.Down:
_NameSelections[_NameSelection].HandleInput(keyEvent);
return true;
case Keys.Enter:
if (_NameSelections[_NameSelection].SelectedID != Guid.Empty)
_SelectProfileById(_NameSelections[_NameSelection].SelectedID);
_NameSelections[_NameSelection].FastSelection(false, -1);
_SelectingKeyboardActive = false;
_SelectElement(_Buttons[_ButtonPlayerName]);
return true;
case Keys.Escape:
case Keys.Back:
_NameSelections[_NameSelection].FastSelection(false, -1);
_SelectingKeyboardActive = false;
_SelectElement(_Buttons[_ButtonExit]);
return true;
}
}
if (_EditMode == EEditMode.None && keyEvent.Key == Keys.Up && _Buttons[_ButtonExit].Selected)
{
if (CProfiles.NumProfiles <= 0)
return true;
_SelectingKeyboardActive = true;
_NameSelections[_NameSelection].Init();
_NameSelections[_NameSelection].UpdateList();
_NameSelections[_NameSelection].FastSelection(true, 1);
}
if (_EditMode == EEditMode.None) if (_EditMode == EEditMode.None)
base.HandleInput(keyEvent); base.HandleInput(keyEvent);
@@ -199,6 +242,15 @@ namespace Vocaluxe.Screens
if (_EditMode == EEditMode.None) if (_EditMode == EEditMode.None)
base.HandleMouse(mouseEvent); base.HandleMouse(mouseEvent);
_NameSelections[_NameSelection].HandleMouse(mouseEvent);
if (mouseEvent.LB && _NameSelections[_NameSelection].IsOverTile(mouseEvent))
{
Guid profileId = _NameSelections[_NameSelection].TilePlayerID(mouseEvent);
_SelectProfileById(profileId);
return true;
}
if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent)) if (mouseEvent.LB && _IsMouseOverCurSelection(mouseEvent))
{ {
if (_Buttons[_ButtonExit].Selected) if (_Buttons[_ButtonExit].Selected)
@@ -250,16 +302,29 @@ namespace Vocaluxe.Screens
if (mouseEvent.RB) if (mouseEvent.RB)
CGraphics.FadeTo(EScreen.Main); CGraphics.FadeTo(EScreen.Main);
if (mouseEvent.Wheel != 0 && CHelper.IsInBounds(_NameSelections[_NameSelection].Rect, mouseEvent))
{
int offset = _NameSelections[_NameSelection].Offset + mouseEvent.Wheel;
_NameSelections[_NameSelection].UpdateList(offset);
}
return true; return true;
} }
public override bool UpdateGame() public override bool UpdateGame()
{ {
if (_AvatarsChanged) if (_AvatarsChanged)
{
_LoadAvatars(true); _LoadAvatars(true);
_NameSelections[_NameSelection].UpdateList();
}
if (_ProfilesChanged) if (_ProfilesChanged)
{
_LoadProfiles(true); _LoadProfiles(true);
_NameSelections[_NameSelection].UpdateList();
}
if (_SelectSlides[_SelectSlideProfiles].Selection > -1) if (_SelectSlides[_SelectSlideProfiles].Selection > -1)
{ {
@@ -291,6 +356,7 @@ namespace Vocaluxe.Screens
public override void OnShow() public override void OnShow()
{ {
base.OnShow(); base.OnShow();
_NameSelections[_NameSelection].Init();
_LoadAvatars(false); _LoadAvatars(false);
_LoadProfiles(false); _LoadProfiles(false);
UpdateGame(); UpdateGame();
@@ -300,6 +366,7 @@ namespace Vocaluxe.Screens
{ {
base.OnClose(); base.OnClose();
_EditMode = EEditMode.None; _EditMode = EEditMode.None;
_SelectingKeyboardActive = false;
_OnDiscardSnapshot(); _OnDiscardSnapshot();
} }
@@ -368,6 +435,7 @@ namespace Vocaluxe.Screens
int id = CProfiles.NewAvatar(file); int id = CProfiles.NewAvatar(file);
CProfiles.SetAvatar(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag), id); CProfiles.SetAvatar(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag), id);
_LoadAvatars(false); _LoadAvatars(false);
_NameSelections[_NameSelection].UpdateList();
_SelectElement(_Buttons[_ButtonSave]); _SelectElement(_Buttons[_ButtonSave]);
} }
@@ -400,6 +468,7 @@ namespace Vocaluxe.Screens
CProfiles.SetAvatar(id, _SelectSlides[_SelectSlideAvatars].SelectedTag); CProfiles.SetAvatar(id, _SelectSlides[_SelectSlideAvatars].SelectedTag);
_NameSelections[_NameSelection].UpdateList();
_SelectElement(_Buttons[_ButtonPlayerName]); _SelectElement(_Buttons[_ButtonPlayerName]);
_EditMode = EEditMode.PlayerName; _EditMode = EEditMode.PlayerName;
} }
@@ -408,6 +477,8 @@ namespace Vocaluxe.Screens
{ {
_EditMode = EEditMode.None; _EditMode = EEditMode.None;
CProfiles.SaveProfiles(); CProfiles.SaveProfiles();
_LoadProfiles(true);
_NameSelections[_NameSelection].UpdateList();
} }
private void _DeleteProfile() private void _DeleteProfile()
@@ -416,6 +487,7 @@ namespace Vocaluxe.Screens
CProfiles.DeleteProfile(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag)); CProfiles.DeleteProfile(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag));
_SelectSlideGuids.Remove(_SelectSlides[_SelectSlideProfiles].SelectedTag); _SelectSlideGuids.Remove(_SelectSlides[_SelectSlideProfiles].SelectedTag);
_NameSelections[_NameSelection].UpdateList();
int selection = _SelectSlides[_SelectSlideProfiles].Selection; int selection = _SelectSlides[_SelectSlideProfiles].Selection;
if (_SelectSlides[_SelectSlideProfiles].NumValues - 1 > selection) if (_SelectSlides[_SelectSlideProfiles].NumValues - 1 > selection)
@@ -462,7 +534,10 @@ namespace Vocaluxe.Screens
} }
if (_EditMode == EEditMode.PlayerName) if (_EditMode == EEditMode.PlayerName)
{
CProfiles.SetPlayerName(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag), name); CProfiles.SetPlayerName(_GetIdFromTag(_SelectSlides[_SelectSlideProfiles].SelectedTag), name);
_NameSelections[_NameSelection].UpdateList();
}
} }
_ProfilesChanged = false; _ProfilesChanged = false;
} }
@@ -489,6 +564,16 @@ namespace Vocaluxe.Screens
_AvatarsChanged = false; _AvatarsChanged = false;
} }
private void _SelectProfileById(Guid profileId)
{
if (profileId == Guid.Empty)
return;
KeyValuePair<int, Guid> entry = _SelectSlideGuids.FirstOrDefault(x => x.Value.Equals(profileId));
if (_SelectSlideGuids.ContainsKey(entry.Key))
_SelectSlides[_SelectSlideProfiles].SelectedTag = entry.Key;
}
private Guid _GetIdFromTag(int tag) private Guid _GetIdFromTag(int tag)
{ {
if (tag == -1 || !_SelectSlideGuids.ContainsKey(tag)) if (tag == -1 || !_SelectSlideGuids.ContainsKey(tag))
@@ -497,4 +582,4 @@ namespace Vocaluxe.Screens
return _SelectSlideGuids[tag]; return _SelectSlideGuids[tag];
} }
} }
} }
+100 -62
View File
@@ -142,14 +142,17 @@ namespace VocaluxeLib.Menu
{ {
_UsedProfiles.Clear(); _UsedProfiles.Clear();
_PrepareTiles(); _PrepareTiles();
_PlayerSelector = new CStatic(_PartyModeID, _TextureTileSelected, new SColorF(), new SRectF(0, 0, _Theme.Tiles.W + 6, _Theme.Tiles.H + 6, Rect.Z - 0.5f)) _PlayerSelector = new CStatic(_PartyModeID, _TextureTileSelected, new SColorF(), new SRectF(0, 0, _Theme.Tiles.W + 10, _Theme.Tiles.H + 10, Rect.Z - 0.5f))
{ {
Visible = false Visible = true
}; };
_UpdateVisibleProfiles(); _UpdateVisibleProfiles();
UpdateList(0); UpdateList(0);
_ActualSelection = _Tiles.FindIndex(t => t.ProfileID != Guid.Empty);
SelectedID = _ActualSelection >= 0 ? _Tiles[_ActualSelection].ProfileID : Guid.Empty;
} }
public void Draw() public void Draw()
@@ -181,69 +184,104 @@ namespace VocaluxeLib.Menu
public void HandleInput(SKeyEvent kevent) public void HandleInput(SKeyEvent kevent)
{ {
switch (kevent.Key) if (_Tiles.Count == 0 || _VisibleProfiles.Count == 0)
{ {
case Keys.Right: _ActualSelection = -1;
if (_ActualSelection + 1 < _Tiles.Count) SelectedID = Guid.Empty;
{ return;
if (_Tiles[_ActualSelection + 1].ProfileID != Guid.Empty) }
_ActualSelection++;
}
else
{
int offset = Offset;
UpdateList(Offset + 1);
if (offset != Offset)
_ActualSelection -= _Theme.Tiles.NumW - 1;
}
break;
case Keys.Left: if (_ActualSelection < 0 || _ActualSelection >= _Tiles.Count || _Tiles[_ActualSelection].ProfileID == Guid.Empty)
if (_ActualSelection - 1 > -1) {
_ActualSelection--; _ActualSelection = _Tiles.FindIndex(t => t.ProfileID != Guid.Empty);
else if (Offset > 0) if (_ActualSelection < 0)
{ {
UpdateList(Offset - 1); SelectedID = Guid.Empty;
_ActualSelection += _Theme.Tiles.NumW - 1; return;
} }
break; }
switch (kevent.Key)
{
case Keys.Right:
if (_ActualSelection + 1 < _Tiles.Count)
{
if (_Tiles[_ActualSelection + 1].ProfileID != Guid.Empty)
_ActualSelection++;
}
else
{
int oldOffset = Offset;
UpdateList(Offset + 1);
if (oldOffset != Offset)
_ActualSelection = Math.Max(0, _ActualSelection - (_Theme.Tiles.NumW - 1));
}
break;
case Keys.Up: case Keys.Left:
if (_ActualSelection - _Theme.Tiles.NumW > -1) if (_ActualSelection - 1 >= 0)
_ActualSelection -= _Theme.Tiles.NumW; {
else if (Offset > 0) _ActualSelection--;
{ }
UpdateList(Offset - 1); else if (Offset > 0)
} {
break; UpdateList(Offset - 1);
_ActualSelection = Math.Min(_Tiles.Count - 1, _ActualSelection + (_Theme.Tiles.NumW - 1));
while (_ActualSelection >= 0 && _Tiles[_ActualSelection].ProfileID == Guid.Empty)
_ActualSelection--;
}
break;
case Keys.Down: case Keys.Up:
if (_ActualSelection + _Theme.Tiles.NumW < _Tiles.Count) if (_ActualSelection - _Theme.Tiles.NumW >= 0)
{ {
if (_Tiles[_ActualSelection + _Theme.Tiles.NumW].ProfileID != Guid.Empty) _ActualSelection -= _Theme.Tiles.NumW;
_ActualSelection += _Theme.Tiles.NumW; }
} else if (Offset > 0)
else {
{ int currentColumn = _ActualSelection % _Theme.Tiles.NumW;
int offset = Offset; UpdateList(Offset - 1);
UpdateList(Offset + 1); _ActualSelection = currentColumn;
} if (_ActualSelection >= _Tiles.Count)
if (_Tiles[_ActualSelection].ProfileID == Guid.Empty) _ActualSelection = _Tiles.Count - 1;
{ while (_ActualSelection >= 0 && _Tiles[_ActualSelection].ProfileID == Guid.Empty)
_ActualSelection = _Tiles.Count - _Theme.Tiles.NumW; _ActualSelection--;
while(_Tiles[_ActualSelection + 1].ProfileID != Guid.Empty) }
{ break;
_ActualSelection++;
}
}
break;
}
if (Offset * _Theme.Tiles.NumW + _ActualSelection < _VisibleProfiles.Count) case Keys.Down:
SelectedID = _VisibleProfiles.ElementAt(Offset * _Theme.Tiles.NumW + _ActualSelection); if (_ActualSelection + _Theme.Tiles.NumW < _Tiles.Count &&
else _Tiles[_ActualSelection + _Theme.Tiles.NumW].ProfileID != Guid.Empty)
SelectedID = Guid.Empty; {
} _ActualSelection += _Theme.Tiles.NumW;
}
else
{
int oldOffset = Offset;
int currentColumn = _ActualSelection % _Theme.Tiles.NumW;
UpdateList(Offset + 1);
if (oldOffset != Offset)
{
_ActualSelection = currentColumn;
while (_ActualSelection < _Tiles.Count && _Tiles[_ActualSelection].ProfileID == Guid.Empty)
_ActualSelection++;
if (_ActualSelection >= _Tiles.Count || _Tiles[_ActualSelection].ProfileID == Guid.Empty)
_ActualSelection = _Tiles.FindLastIndex(t => t.ProfileID != Guid.Empty);
}
}
break;
}
if (_ActualSelection >= 0 && _ActualSelection < _Tiles.Count && _Tiles[_ActualSelection].ProfileID != Guid.Empty)
{
SelectedID = _Tiles[_ActualSelection].ProfileID;
}
else
{
SelectedID = Guid.Empty;
}
}
public void HandleMouse(SMouseEvent mevent) public void HandleMouse(SMouseEvent mevent)
{ {