Added short-song-game-mode. Game-Mode-Names are now translated.

This commit is contained in:
Florian Kuepper committed 2012-06-17 13:37:18 +02:00
1 parent 992397d498
commit a4f253bf67
14 files changed
+153 -26

No files matched your search

+1
View File
@@ -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>
+1
View File
@@ -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>
+6 -3
View File
@@ -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;
}
+1 -1
View File
@@ -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++;
}
+1 -1
View File
@@ -10,7 +10,7 @@ namespace Vocaluxe.GameModes
{
base.Init();
_GameMode = EGameMode.Duet;
_GameMode = EGameMode.TR_GAMEMODE_DUET;
_Initialized = true;
}
}
+1 -1
View File
@@ -13,7 +13,7 @@ namespace Vocaluxe.GameModes
{
base.Init();
_GameMode = EGameMode.Medley;
_GameMode = EGameMode.TR_GAMEMODE_MEDLEY;
_Initialized = true;
}
+1 -1
View File
@@ -10,7 +10,7 @@ namespace Vocaluxe.GameModes
{
base.Init();
_GameMode = EGameMode.Normal;
_GameMode = EGameMode.TR_GAMEMODE_NORMAL;
_Initialized = true;
}
}
+30
View File
@@ -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);
}
}
}
+4 -3
View File
@@ -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
+88
View File
@@ -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();
+3 -3
View File
@@ -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;
+13 -11
View File
@@ -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;
+1
View File
@@ -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>