Added short-song-game-mode. Game-Mode-Names are now translated.
This commit is contained in:
1 parent
992397d498
commit
a4f253bf67
14 files changed
+153
-26
No files matched your search
@@ -23,6 +23,7 @@
|
||||
<TR_GAMEMODE_NORMAL>Normal</TR_GAMEMODE_NORMAL>
|
||||
<TR_GAMEMODE_DUET>Duett</TR_GAMEMODE_DUET>
|
||||
<TR_GAMEMODE_MEDLEY>Medley</TR_GAMEMODE_MEDLEY>
|
||||
<TR_GAMEMODE_SHORTSONG>Kurz-Version</TR_GAMEMODE_SHORTSONG>
|
||||
<!--General: Ratings-->
|
||||
<TR_RATING_VOCAL_HERO>Vocal Hero</TR_RATING_VOCAL_HERO>
|
||||
<TR_RATING_SUPERSTAR>Superstar</TR_RATING_SUPERSTAR>
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
<TR_GAMEMODE_NORMAL>Normal</TR_GAMEMODE_NORMAL>
|
||||
<TR_GAMEMODE_DUET>Duet</TR_GAMEMODE_DUET>
|
||||
<TR_GAMEMODE_MEDLEY>Medley</TR_GAMEMODE_MEDLEY>
|
||||
<TR_GAMEMODE_SHORTSONG>Short version</TR_GAMEMODE_SHORTSONG>
|
||||
<!--General: Ratings-->
|
||||
<TR_RATING_VOCAL_HERO>Vocal Hero</TR_RATING_VOCAL_HERO>
|
||||
<TR_RATING_SUPERSTAR>Superstar</TR_RATING_SUPERSTAR>
|
||||
|
||||
@@ -112,15 +112,18 @@ namespace Vocaluxe.Base
|
||||
{
|
||||
switch (Mode)
|
||||
{
|
||||
case EGameMode.Normal:
|
||||
case EGameMode.TR_GAMEMODE_NORMAL:
|
||||
_GameMode = new CGameModeNormal();
|
||||
break;
|
||||
case EGameMode.Medley:
|
||||
case EGameMode.TR_GAMEMODE_MEDLEY:
|
||||
_GameMode = new CGameModeMedley();
|
||||
break;
|
||||
case EGameMode.Duet:
|
||||
case EGameMode.TR_GAMEMODE_DUET:
|
||||
_GameMode = new CGameModeDuet();
|
||||
break;
|
||||
case EGameMode.TR_GAMEMODE_SHORTSONG:
|
||||
_GameMode = new CGameModeShortSong();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -202,7 +202,7 @@ namespace Vocaluxe.GameModes
|
||||
{
|
||||
if (_ActualSong > -1)
|
||||
{
|
||||
_Points.SetPoints(_ActualSong, _Songs[_ActualSong].ID, Player, _GameMode == EGameMode.Medley, _GameMode == EGameMode.Duet);
|
||||
_Points.SetPoints(_ActualSong, _Songs[_ActualSong].ID, Player, _GameMode == EGameMode.TR_GAMEMODE_MEDLEY, _GameMode == EGameMode.TR_GAMEMODE_DUET);
|
||||
}
|
||||
_ActualSong++;
|
||||
}
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Vocaluxe.GameModes
|
||||
{
|
||||
base.Init();
|
||||
|
||||
_GameMode = EGameMode.Duet;
|
||||
_GameMode = EGameMode.TR_GAMEMODE_DUET;
|
||||
_Initialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -13,7 +13,7 @@ namespace Vocaluxe.GameModes
|
||||
{
|
||||
base.Init();
|
||||
|
||||
_GameMode = EGameMode.Medley;
|
||||
_GameMode = EGameMode.TR_GAMEMODE_MEDLEY;
|
||||
_Initialized = true;
|
||||
}
|
||||
|
||||
|
||||
@@ -10,7 +10,7 @@ namespace Vocaluxe.GameModes
|
||||
{
|
||||
base.Init();
|
||||
|
||||
_GameMode = EGameMode.Normal;
|
||||
_GameMode = EGameMode.TR_GAMEMODE_NORMAL;
|
||||
_Initialized = true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
|
||||
using Vocaluxe.Base;
|
||||
using Vocaluxe.Lib.Song;
|
||||
|
||||
namespace Vocaluxe.GameModes
|
||||
{
|
||||
class CGameModeShortSong : CGameMode
|
||||
{
|
||||
public override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
_GameMode = EGameMode.TR_GAMEMODE_SHORTSONG;
|
||||
_Initialized = true;
|
||||
}
|
||||
|
||||
protected override void SongManipulation(int SongIndex)
|
||||
{
|
||||
CSong song = _Songs[SongIndex];
|
||||
|
||||
song.Finish = CGame.GetTimeFromBeats(song.ShortEnd, song.BPM) + CSettings.DefaultMedleyFadeOutTime + song.Gap;
|
||||
|
||||
// set lines to medley mode
|
||||
song.Notes.SetMedley(song.Notes.GetLines(0).Line[0].FirstNoteBeat, song.ShortEnd);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,9 +9,10 @@ namespace Vocaluxe.GameModes
|
||||
{
|
||||
public enum EGameMode
|
||||
{
|
||||
Normal,
|
||||
Medley,
|
||||
Duet
|
||||
TR_GAMEMODE_NORMAL,
|
||||
TR_GAMEMODE_MEDLEY,
|
||||
TR_GAMEMODE_DUET,
|
||||
TR_GAMEMODE_SHORTSONG
|
||||
}
|
||||
|
||||
interface IGameMode
|
||||
|
||||
@@ -59,6 +59,8 @@ namespace Vocaluxe.Lib.Song
|
||||
public bool CalculateMedley = true;
|
||||
public float PreviewStart = 0f;
|
||||
|
||||
public int ShortEnd = 0;
|
||||
|
||||
public Encoding Encoding = Encoding.Default;
|
||||
public string Folder = String.Empty;
|
||||
public string FolderName = String.Empty;
|
||||
@@ -161,6 +163,8 @@ namespace Vocaluxe.Lib.Song
|
||||
this.CalculateMedley = song.CalculateMedley;
|
||||
this.PreviewStart = song.PreviewStart;
|
||||
|
||||
this.ShortEnd = song.ShortEnd;
|
||||
|
||||
this.Encoding = song.Encoding;
|
||||
this.Folder = song.Folder;
|
||||
this.FolderName = song.FolderName;
|
||||
@@ -652,6 +656,7 @@ namespace Vocaluxe.Lib.Song
|
||||
return false;
|
||||
}
|
||||
FindRefrain();
|
||||
FindShortEnd();
|
||||
_NotesLoaded = true;
|
||||
|
||||
return true;
|
||||
@@ -836,5 +841,88 @@ namespace Vocaluxe.Lib.Song
|
||||
this.PreviewStart = CGame.GetTimeFromBeats(this.Medley.StartBeat, this.BPM);
|
||||
}
|
||||
}
|
||||
|
||||
private void FindShortEnd(){
|
||||
CLines lines = this.Notes.GetLines(0);
|
||||
|
||||
if (lines.LineCount == 0)
|
||||
return;
|
||||
|
||||
// build sentences list
|
||||
List<string> sentences = new List<string>();
|
||||
foreach (CLine line in lines.Line)
|
||||
{
|
||||
if (line.Points != 0)
|
||||
sentences.Add(line.Lyrics);
|
||||
else
|
||||
sentences.Add(String.Empty);
|
||||
}
|
||||
|
||||
// find equal sentences series
|
||||
List<Series> series = new List<Series>();
|
||||
for (int i = 0; i < lines.LineCount - 1; i++)
|
||||
{
|
||||
for (int j = i + 1; j < lines.LineCount; j++)
|
||||
{
|
||||
if (sentences[i] == sentences[j] && sentences[i] != String.Empty)
|
||||
{
|
||||
Series tempSeries = new Series();
|
||||
tempSeries.start = i;
|
||||
tempSeries.end = i;
|
||||
|
||||
int max = 0;
|
||||
if (j + j - i - 1 > lines.LineCount - 1)
|
||||
max = lines.LineCount - 1 - j;
|
||||
else
|
||||
max = j - i - 1;
|
||||
|
||||
for (int k = 1; k <= max; k++)
|
||||
{
|
||||
if (sentences[i + k] == sentences[j + k] && sentences[i + k] != String.Empty)
|
||||
tempSeries.end = i + k;
|
||||
else
|
||||
break;
|
||||
}
|
||||
|
||||
tempSeries.length = tempSeries.end - tempSeries.start + 1;
|
||||
series.Add(tempSeries);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Calculate length of singing
|
||||
int stop = (lines.Line[lines.Line.Length - 1].LastNoteBeat - lines.Line[0].FirstNoteBeat) / 2;
|
||||
|
||||
//Check if stop is in series
|
||||
for (int i = 0; i < series.Count; i++)
|
||||
{
|
||||
if (lines.Line[series[i].start].FirstNoteBeat < stop && lines.Line[series[i].end].LastNoteBeat > stop)
|
||||
{
|
||||
if (stop < (lines.Line[series[i].start].FirstNoteBeat + ((lines.Line[series[i].end].LastNoteBeat - lines.Line[series[i].start].FirstNoteBeat) / 2)))
|
||||
{
|
||||
this.ShortEnd = lines.Line[series[i].start-1].LastNote.EndBeat;
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.ShortEnd = lines.Line[series[i].end].LastNote.EndBeat;
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
//Check if stop is in line
|
||||
for (int i = 0; i < lines.Line.Length; i++)
|
||||
{
|
||||
if (lines.Line[i].FirstNoteBeat < stop && lines.Line[i].LastNoteBeat > stop)
|
||||
{
|
||||
this.ShortEnd = lines.Line[i].LastNoteBeat;
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
ShortEnd = stop;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -214,9 +214,9 @@ namespace Vocaluxe.Screens
|
||||
if (SongNr >= 0 && CSongs.SongsLoaded)
|
||||
{
|
||||
if (Duet)
|
||||
CGame.SetGameMode(GameModes.EGameMode.Duet);
|
||||
CGame.SetGameMode(GameModes.EGameMode.TR_GAMEMODE_DUET);
|
||||
else
|
||||
CGame.SetGameMode(GameModes.EGameMode.Normal);
|
||||
CGame.SetGameMode(GameModes.EGameMode.TR_GAMEMODE_NORMAL);
|
||||
|
||||
CGame.Reset();
|
||||
CGame.ClearSongs();
|
||||
|
||||
@@ -250,15 +250,15 @@ namespace Vocaluxe.Screens
|
||||
|
||||
switch (CGame.GameMode)
|
||||
{
|
||||
case EGameMode.Normal:
|
||||
case EGameMode.TR_GAMEMODE_NORMAL:
|
||||
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_NORMAL";
|
||||
break;
|
||||
|
||||
case EGameMode.Medley:
|
||||
case EGameMode.TR_GAMEMODE_MEDLEY:
|
||||
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_MEDLEY";
|
||||
break;
|
||||
|
||||
case EGameMode.Duet:
|
||||
case EGameMode.TR_GAMEMODE_DUET:
|
||||
Texts[htTexts(TextSongMode)].Text = "TR_GAMEMODE_DUET";
|
||||
_IsDuet = true;
|
||||
break;
|
||||
|
||||
@@ -347,9 +347,9 @@ namespace Vocaluxe.Screens
|
||||
else
|
||||
{
|
||||
if (CSongs.VisibleSongs[SongNr].IsDuet)
|
||||
CGame.SetGameMode(GameModes.EGameMode.Duet);
|
||||
CGame.SetGameMode(GameModes.EGameMode.TR_GAMEMODE_DUET);
|
||||
else
|
||||
CGame.SetGameMode(GameModes.EGameMode.Normal);
|
||||
CGame.SetGameMode(GameModes.EGameMode.TR_GAMEMODE_NORMAL);
|
||||
}
|
||||
|
||||
CGame.Reset();
|
||||
@@ -366,7 +366,7 @@ namespace Vocaluxe.Screens
|
||||
if ((CSongs.Category >= 0) && (SongNr >= 0))
|
||||
{
|
||||
if (CSongs.VisibleSongs[SongNr].Medley.Source != EMedleySource.None)
|
||||
CGame.SetGameMode(GameModes.EGameMode.Medley);
|
||||
CGame.SetGameMode(GameModes.EGameMode.TR_GAMEMODE_MEDLEY);
|
||||
else
|
||||
return;
|
||||
|
||||
@@ -382,7 +382,7 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
CGame.Reset();
|
||||
CGame.ClearSongs();
|
||||
CGame.SetGameMode(GameModes.EGameMode.Normal);
|
||||
CGame.SetGameMode(GameModes.EGameMode.TR_GAMEMODE_NORMAL);
|
||||
|
||||
List<int> IDs = new List<int>();
|
||||
for (int i = 0; i < CSongs.AllSongs.Length; i++)
|
||||
@@ -409,7 +409,7 @@ namespace Vocaluxe.Screens
|
||||
{
|
||||
CGame.Reset();
|
||||
CGame.ClearSongs();
|
||||
CGame.SetGameMode(GameModes.EGameMode.Normal);
|
||||
CGame.SetGameMode(GameModes.EGameMode.TR_GAMEMODE_NORMAL);
|
||||
|
||||
List<int> IDs = new List<int>();
|
||||
for (int i = 0; i < CSongs.VisibleSongs.Length; i++)
|
||||
@@ -491,18 +491,20 @@ namespace Vocaluxe.Screens
|
||||
SelectSlides[htSelectSlides(SelectSlideOptionsMode)].Clear();
|
||||
if (!CSongs.VisibleSongs[SongMenus[htSongMenus(SongMenu)].GetSelectedSong()].IsDuet)
|
||||
{
|
||||
SelectSlides[htSelectSlides(SelectSlideOptionsMode)].AddValue(Enum.GetName(typeof(GameModes.EGameMode), GameModes.EGameMode.Normal));
|
||||
_AvailableGameModes.Add(GameModes.EGameMode.Normal);
|
||||
SelectSlides[htSelectSlides(SelectSlideOptionsMode)].AddValue(Enum.GetName(typeof(GameModes.EGameMode), GameModes.EGameMode.TR_GAMEMODE_NORMAL));
|
||||
_AvailableGameModes.Add(GameModes.EGameMode.TR_GAMEMODE_NORMAL);
|
||||
SelectSlides[htSelectSlides(SelectSlideOptionsMode)].AddValue(Enum.GetName(typeof(GameModes.EGameMode), GameModes.EGameMode.TR_GAMEMODE_SHORTSONG));
|
||||
_AvailableGameModes.Add(GameModes.EGameMode.TR_GAMEMODE_SHORTSONG);
|
||||
}
|
||||
if (CSongs.VisibleSongs[SongMenus[htSongMenus(SongMenu)].GetSelectedSong()].IsDuet)
|
||||
{
|
||||
SelectSlides[htSelectSlides(SelectSlideOptionsMode)].AddValue(Enum.GetName(typeof(GameModes.EGameMode), GameModes.EGameMode.Duet));
|
||||
_AvailableGameModes.Add(GameModes.EGameMode.Duet);
|
||||
SelectSlides[htSelectSlides(SelectSlideOptionsMode)].AddValue(Enum.GetName(typeof(GameModes.EGameMode), GameModes.EGameMode.TR_GAMEMODE_DUET));
|
||||
_AvailableGameModes.Add(GameModes.EGameMode.TR_GAMEMODE_DUET);
|
||||
}
|
||||
if (CSongs.VisibleSongs[SongMenus[htSongMenus(SongMenu)].GetSelectedSong()].Medley.Source != EMedleySource.None)
|
||||
{
|
||||
SelectSlides[htSelectSlides(SelectSlideOptionsMode)].AddValue(Enum.GetName(typeof(GameModes.EGameMode), GameModes.EGameMode.Medley));
|
||||
_AvailableGameModes.Add(GameModes.EGameMode.Medley);
|
||||
SelectSlides[htSelectSlides(SelectSlideOptionsMode)].AddValue(Enum.GetName(typeof(GameModes.EGameMode), GameModes.EGameMode.TR_GAMEMODE_MEDLEY));
|
||||
_AvailableGameModes.Add(GameModes.EGameMode.TR_GAMEMODE_MEDLEY);
|
||||
}
|
||||
SelectSlides[htSelectSlides(SelectSlideOptionsMode)].Visible = true;
|
||||
Buttons[htButtons(ButtonOptionsClose)].Visible = true;
|
||||
|
||||
@@ -135,6 +135,7 @@
|
||||
<Compile Include="GameModes\CGameModeDuet.cs" />
|
||||
<Compile Include="GameModes\CGameModeMedley.cs" />
|
||||
<Compile Include="GameModes\CGameModeNormal.cs" />
|
||||
<Compile Include="GameModes\CGameModeShortSong.cs" />
|
||||
<Compile Include="GameModes\IGameMode.cs" />
|
||||
<Compile Include="Lib\Draw\CDirect3D.cs">
|
||||
<SubType>Form</SubType>
|
||||
|
||||
Reference in new issue
Block a user