243 lines
8.1 KiB
C#
243 lines
8.1 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
|
|
using Vocaluxe.Base;
|
|
using Vocaluxe.Menu;
|
|
|
|
|
|
namespace Vocaluxe.Screens
|
|
{
|
|
class CScreenOptionsTheme : CMenu
|
|
{
|
|
// Version number for theme files. Increment it, if you've changed something on the theme files!
|
|
const int ScreenVersion = 3;
|
|
|
|
private const string SelectSlideTheme = "SelectSlideTheme";
|
|
private const string SelectSlideSkin = "SelectSlideSkin";
|
|
private const string SelectSlideCover = "SelectSlideCover";
|
|
private const string SelectSlideNoteLines = "SelectSlideNoteLines";
|
|
private const string SelectSlideToneHelper = "SelectSlideToneHelper";
|
|
private const string SelectSlideTimerLook = "SelectSlideTimerLook";
|
|
private const string SelectSlideFadeInfo = "SelectSlideFadeInfo";
|
|
private const string SelectSlideCoverLoading = "SelectSlideCoverLoading";
|
|
|
|
private const string ButtonExit = "ButtonExit";
|
|
|
|
private int _OldCoverTheme;
|
|
private int _OldTheme;
|
|
private int _OldSkin;
|
|
|
|
private int _TempSkin;
|
|
|
|
public CScreenOptionsTheme()
|
|
{
|
|
Init();
|
|
}
|
|
|
|
protected override void Init()
|
|
{
|
|
base.Init();
|
|
|
|
_ThemeName = "ScreenOptionsTheme";
|
|
_ScreenVersion = ScreenVersion;
|
|
_ThemeButtons = new string[] { ButtonExit };
|
|
_ThemeSelectSlides = new string[] {
|
|
SelectSlideTheme,
|
|
SelectSlideSkin,
|
|
SelectSlideCover,
|
|
SelectSlideNoteLines,
|
|
SelectSlideToneHelper,
|
|
SelectSlideTimerLook,
|
|
SelectSlideFadeInfo,
|
|
SelectSlideCoverLoading
|
|
};
|
|
}
|
|
|
|
public override void LoadTheme()
|
|
{
|
|
base.LoadTheme();
|
|
|
|
SelectSlides[htSelectSlides(SelectSlideTheme)].AddValues(CTheme.ThemeNames);
|
|
SelectSlides[htSelectSlides(SelectSlideTheme)].Selection = CTheme.GetThemeIndex();
|
|
|
|
SelectSlides[htSelectSlides(SelectSlideSkin)].AddValues(CTheme.SkinNames);
|
|
SelectSlides[htSelectSlides(SelectSlideSkin)].Selection = CTheme.GetSkinIndex();
|
|
|
|
SelectSlides[htSelectSlides(SelectSlideCover)].AddValues(CCover.CoverThemes);
|
|
SelectSlides[htSelectSlides(SelectSlideCover)].Selection = CCover.GetCoverThemeIndex();
|
|
SelectSlides[htSelectSlides(SelectSlideNoteLines)].SetValues<EOffOn>((int)CConfig.DrawNoteLines);
|
|
SelectSlides[htSelectSlides(SelectSlideToneHelper)].SetValues<EOffOn>((int)CConfig.DrawToneHelper);
|
|
SelectSlides[htSelectSlides(SelectSlideTimerLook)].SetValues<ETimerLook>((int)CConfig.TimerLook);
|
|
SelectSlides[htSelectSlides(SelectSlideFadeInfo)].SetValues<EFadePlayerInfo>((int)CConfig.FadePlayerInfo);
|
|
SelectSlides[htSelectSlides(SelectSlideCoverLoading)].SetValues<ECoverLoading>((int)CConfig.CoverLoading);
|
|
}
|
|
|
|
public override bool HandleInput(KeyEvent KeyEvent)
|
|
{
|
|
base.HandleInput(KeyEvent);
|
|
|
|
if (KeyEvent.KeyPressed)
|
|
{
|
|
|
|
}
|
|
else
|
|
{
|
|
switch (KeyEvent.Key)
|
|
{
|
|
case Keys.Escape:
|
|
case Keys.Back:
|
|
Close();
|
|
break;
|
|
|
|
case Keys.Enter:
|
|
if (Buttons[htButtons(ButtonExit)].Selected)
|
|
{
|
|
Close();
|
|
}
|
|
break;
|
|
|
|
case Keys.Left:
|
|
OnChange();
|
|
break;
|
|
|
|
case Keys.Right:
|
|
OnChange();
|
|
break;
|
|
}
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public override bool HandleMouse(MouseEvent MouseEvent)
|
|
{
|
|
base.HandleMouse(MouseEvent);
|
|
|
|
if (MouseEvent.RB)
|
|
{
|
|
Close();
|
|
}
|
|
|
|
if (MouseEvent.LB && IsMouseOver(MouseEvent))
|
|
{
|
|
if (Buttons[htButtons(ButtonExit)].Selected)
|
|
{
|
|
Close();
|
|
}
|
|
else
|
|
OnChange();
|
|
}
|
|
return true;
|
|
}
|
|
|
|
public override void OnShow()
|
|
{
|
|
base.OnShow();
|
|
|
|
_OldCoverTheme = CCover.GetCoverThemeIndex();
|
|
_OldTheme = CTheme.GetThemeIndex();
|
|
_OldSkin = CTheme.GetSkinIndex();
|
|
_TempSkin = _OldSkin;
|
|
}
|
|
|
|
public override bool UpdateGame()
|
|
{
|
|
return true;
|
|
}
|
|
|
|
public override bool Draw()
|
|
{
|
|
base.Draw();
|
|
return true;
|
|
}
|
|
|
|
private void Close()
|
|
{
|
|
SaveConfig();
|
|
CGraphics.FadeTo(EScreens.ScreenOptions);
|
|
}
|
|
|
|
private void SaveConfig()
|
|
{
|
|
CConfig.Theme = CTheme.ThemeNames[SelectSlides[htSelectSlides(SelectSlideTheme)].Selection];
|
|
CConfig.Skin = CTheme.SkinNames[SelectSlides[htSelectSlides(SelectSlideSkin)].Selection];
|
|
CConfig.CoverTheme = CCover.CoverThemes[SelectSlides[htSelectSlides(SelectSlideCover)].Selection];
|
|
CConfig.DrawNoteLines = (EOffOn)SelectSlides[htSelectSlides(SelectSlideNoteLines)].Selection;
|
|
CConfig.DrawToneHelper = (EOffOn)SelectSlides[htSelectSlides(SelectSlideToneHelper)].Selection;
|
|
CConfig.TimerLook = (ETimerLook)SelectSlides[htSelectSlides(SelectSlideTimerLook)].Selection;
|
|
CConfig.FadePlayerInfo = (EFadePlayerInfo)SelectSlides[htSelectSlides(SelectSlideFadeInfo)].Selection;
|
|
CConfig.CoverLoading = (ECoverLoading)SelectSlides[htSelectSlides(SelectSlideCoverLoading)].Selection;
|
|
|
|
CConfig.SaveConfig();
|
|
|
|
if (_OldCoverTheme != SelectSlides[htSelectSlides(SelectSlideCover)].Selection)
|
|
{
|
|
CCover.ReloadCover();
|
|
CSongs.Sort(CConfig.SongSorting);
|
|
}
|
|
|
|
if (_OldTheme != SelectSlides[htSelectSlides(SelectSlideTheme)].Selection)
|
|
{
|
|
CConfig.Theme = CTheme.ThemeNames[SelectSlides[htSelectSlides(SelectSlideTheme)].Selection];
|
|
_OldTheme = SelectSlides[htSelectSlides(SelectSlideTheme)].Selection;
|
|
|
|
CTheme.UnloadSkins();
|
|
CFonts.UnloadThemeFonts(CConfig.Theme);
|
|
CTheme.ListSkins();
|
|
CConfig.Skin = CTheme.SkinNames[0];
|
|
_OldSkin = 0;
|
|
_TempSkin = _OldSkin;
|
|
|
|
CConfig.SaveConfig();
|
|
|
|
CTheme.LoadSkins();
|
|
CTheme.LoadTheme();
|
|
CGraphics.ReloadTheme();
|
|
return;
|
|
}
|
|
}
|
|
|
|
private void OnChange()
|
|
{
|
|
if (_OldTheme != SelectSlides[htSelectSlides(SelectSlideTheme)].Selection)
|
|
{
|
|
CConfig.Theme = CTheme.ThemeNames[SelectSlides[htSelectSlides(SelectSlideTheme)].Selection];
|
|
_OldTheme = SelectSlides[htSelectSlides(SelectSlideTheme)].Selection;
|
|
|
|
CTheme.UnloadSkins();
|
|
CFonts.UnloadThemeFonts(CConfig.Theme);
|
|
CTheme.ListSkins();
|
|
CConfig.Skin = CTheme.SkinNames[0];
|
|
_OldSkin = 0;
|
|
_TempSkin = _OldSkin;
|
|
|
|
CConfig.SaveConfig();
|
|
|
|
CTheme.LoadSkins();
|
|
CTheme.LoadTheme();
|
|
CGraphics.ReloadTheme();
|
|
|
|
OnShow();
|
|
OnShowFinish();
|
|
return;
|
|
}
|
|
|
|
if (_TempSkin != SelectSlides[htSelectSlides(SelectSlideSkin)].Selection)
|
|
{
|
|
_TempSkin = SelectSlides[htSelectSlides(SelectSlideSkin)].Selection;
|
|
|
|
PauseBG();
|
|
CConfig.Skin = CTheme.SkinNames[_TempSkin];
|
|
CGraphics.ReloadSkin();
|
|
ResumeBG();
|
|
}
|
|
}
|
|
|
|
private void AfterSkinReload()
|
|
{
|
|
_Active = true;
|
|
}
|
|
}
|
|
}
|