Added names and animations to credits-screen. Still some work to do...

This commit is contained in:
Florian Kuepper committed 2012-03-03 20:34:56 +01:00
1 parent d45043dfbd
commit 110551ad05
3 files changed
+221 -8

No files matched your search

Binary file not shown.
+9
View File
@@ -38,6 +38,15 @@ namespace Vocaluxe.Base
InitHighscoreDB();
InitCoverDB();
InitCreditsRessourcesDB();
/**
AddImageToCreditsDB("C:\\Users\\Florian\\Desktop\\Credit-Ressources\\brunzel.png");
AddImageToCreditsDB("C:\\Users\\Florian\\Desktop\\Credit-Ressources\\bohning.png");
AddImageToCreditsDB("C:\\Users\\Florian\\Desktop\\Credit-Ressources\\babene03.png");
AddImageToCreditsDB("C:\\Users\\Florian\\Desktop\\Credit-Ressources\\Darkice.png");
AddImageToCreditsDB("C:\\Users\\Florian\\Desktop\\Credit-Ressources\\flokuep.png");
AddImageToCreditsDB("C:\\Users\\Florian\\Desktop\\Credit-Ressources\\mesand.png");
*/
}
#region Highscores
+212 -8
View File
@@ -9,6 +9,23 @@ using Vocaluxe.Base;
using Vocaluxe.Lib.Draw;
using Vocaluxe.Menu;
enum EDirection
{
Left,
Right,
Up
}
class CCreditName
{
public CStatic image;
public CParticleEffect particle;
public SRectF particleRect;
public EDirection direction;
public float StartTimeUp;
public bool active;
}
namespace Vocaluxe.Screens
{
class CScreenCredits :CMenu
@@ -16,8 +33,15 @@ namespace Vocaluxe.Screens
// Version number for theme files. Increment it, if you've changed something on the theme files!
const int ScreenVersion = 1;
private CStatic logo;
private CStatic logo;
private CParticleEffect starsRed;
private CParticleEffect starsBlue;
private List<CCreditName> _CreditNames;
private Stopwatch LogoTimer;
private Stopwatch CreditsTimer;
public CScreenCredits()
{
Init();
@@ -30,10 +54,8 @@ namespace Vocaluxe.Screens
_ThemeName = "ScreenCredits";
_ScreenVersion = ScreenVersion;
STexture tex = new STexture();
CDataBase.GetCreditsRessource("Logo.png", ref tex);
logo = new CStatic(tex, new SColorF(1,1,1,1), new SRectF(140,140,tex.width, tex.height, -1));
LogoTimer = new Stopwatch();
CreditsTimer = new Stopwatch();
}
public override bool HandleInput(KeyEvent KeyEvent)
@@ -81,14 +103,100 @@ namespace Vocaluxe.Screens
public override bool UpdateGame()
{
animation();
return true;
}
public override void OnShow()
{
base.OnShow();
STexture tex = new STexture();
STexture particleTex = new STexture();
//Vocaluxe-Logo
CDataBase.GetCreditsRessource("Logo_voc.png", ref tex);
logo = new CStatic(tex, new SColorF(1, 1, 1, 1), new SRectF((CSettings.iRenderW - tex.width)/2, -270 , tex.width, tex.height, -2));
//Little stars for logo
CDataBase.GetCreditsRessource("PerfectNoteStar.png", ref particleTex);
int numstars = (int)(logo.Rect.W * 0.25f /2f);
starsRed = new CParticleEffect(numstars, new SColorF(1, 0, 0, 1), new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1), particleTex, 35, EParticeType.Star);
starsBlue = new CParticleEffect(numstars, new SColorF(0, 0, 1, 1), new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1), particleTex, 35, EParticeType.Star);
//Credit names
_CreditNames = new List<CCreditName>();
CCreditName CreditEntry = new CCreditName();
//brunzel
CDataBase.GetCreditsRessource("brunzel.png", ref tex);
CCreditName CreditEntryBrunzel = new CCreditName();
CreditEntryBrunzel.image = new CStatic(tex, new SColorF(1,1,1,1), new SRectF(-450, 580, 400, 120, -3));
CreditEntryBrunzel.particleRect = new SRectF(CreditEntryBrunzel.image.Rect.X + 342, CreditEntryBrunzel.image.Rect.Y + 4, 30, 30, -4);
CreditEntryBrunzel.particle = new CParticleEffect(8, new SColorF(1, 0, 0, 1), CreditEntryBrunzel.particleRect, particleTex, 35, EParticeType.Star);
CreditEntryBrunzel.active = true;
CreditEntryBrunzel.direction = EDirection.Left;
_CreditNames.Add(CreditEntryBrunzel);
//Darkice
CDataBase.GetCreditsRessource("Darkice.png", ref tex);
CCreditName CreditEntryDarkice = new CCreditName();
CreditEntryDarkice.image = new CStatic(tex, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 400, 120, -3));
CreditEntryDarkice.particleRect = new SRectF(CreditEntryDarkice.image.Rect.X + 242, CreditEntryDarkice.image.Rect.Y + 23, 30, 30, -4);
CreditEntryDarkice.particle = new CParticleEffect(8, new SColorF(0, 0, 1, 1), CreditEntryDarkice.particleRect, particleTex, 35, EParticeType.Star);
CreditEntryDarkice.active = true;
CreditEntryDarkice.direction = EDirection.Right;
_CreditNames.Add(CreditEntryDarkice);
//flokuep
CDataBase.GetCreditsRessource("flokuep.png", ref tex);
CCreditName CreditEntryFlokuep = new CCreditName();
CreditEntryFlokuep.image = new CStatic(tex, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 400, 120, -3));
CreditEntryFlokuep.particleRect = new SRectF(CreditEntryFlokuep.image.Rect.X + 141, CreditEntryFlokuep.image.Rect.Y-2, 30, 30, -4);
CreditEntryFlokuep.particle = new CParticleEffect(8, new SColorF(1, 0, 0, 1), CreditEntryFlokuep.particleRect, particleTex, 35, EParticeType.Star);
CreditEntryFlokuep.active = true;
CreditEntryFlokuep.direction = EDirection.Left;
_CreditNames.Add(CreditEntryFlokuep);
//bohning
CDataBase.GetCreditsRessource("bohning.png", ref tex);
CCreditName CreditEntryBohning = new CCreditName();
CreditEntryBohning.image = new CStatic(tex, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 350, 110, -3));
CreditEntryBohning.particleRect = new SRectF(CreditEntryBohning.image.Rect.X + 172, CreditEntryBohning.image.Rect.Y + 16, 10, 10, -4);
CreditEntryBohning.particle = new CParticleEffect(4, new SColorF(0, 0, 1, 1), CreditEntryBohning.particleRect, particleTex, 25, EParticeType.Star);
CreditEntryBohning.active = true;
CreditEntryBohning.direction = EDirection.Right;
_CreditNames.Add(CreditEntryBohning);
//mesand
CDataBase.GetCreditsRessource("mesand.png", ref tex);
CCreditName CreditEntryMesand = new CCreditName();
CreditEntryMesand.image = new CStatic(tex, new SColorF(1, 1, 1, 1), new SRectF(-450, 580, 350, 110, -3));
CreditEntryMesand.particleRect = new SRectF(CreditEntryMesand.image.Rect.X + 240, CreditEntryMesand.image.Rect.Y - 2, 10, 10, -4);
CreditEntryMesand.particle = new CParticleEffect(4, new SColorF(1, 0, 0, 1), CreditEntryMesand.particleRect, particleTex, 25, EParticeType.Star);
CreditEntryMesand.active = true;
CreditEntryMesand.direction = EDirection.Left;
_CreditNames.Add(CreditEntryMesand);
//babene03
CDataBase.GetCreditsRessource("babene03.png", ref tex);
CCreditName CreditEntryBabene03 = new CCreditName();
CreditEntryBabene03.image = new CStatic(tex, new SColorF(1, 1, 1, 1), new SRectF(CSettings.iRenderW, 580, 350, 110, -3));
CreditEntryBabene03.particleRect = new SRectF(CreditEntryBabene03.image.Rect.X + 7, CreditEntryBabene03.image.Rect.Y + 4, 10, 10, -4);
CreditEntryBabene03.particle = new CParticleEffect(4, new SColorF(0, 0, 1, 1), CreditEntryBabene03.particleRect, particleTex, 25, EParticeType.Star);
CreditEntryBabene03.active = true;
CreditEntryBabene03.direction = EDirection.Right;
_CreditNames.Add(CreditEntryBabene03);
//CreditEntry.image = new CStatic(tex, new SColorF(1, 1, 1, 1), new SRectF(0, 0, 350, 110, -3));
}
public override void OnShowFinish()
{
base.OnShowFinish();
LogoTimer.Start();
}
public override bool Draw()
@@ -96,10 +204,106 @@ namespace Vocaluxe.Screens
base.Draw();
//Draw white background
CDraw.DrawColor(new SColorF(1, 1, 1, 1), new SRectF(0, 0, 1280, 720, 0));
CDraw.DrawColor(new SColorF(1, 1, 1, 1), new SRectF(0, 0, CSettings.iRenderW, CSettings.iRenderH, 0));
//Draw stars
starsBlue.Update();
starsBlue.Draw();
starsRed.Update();
starsRed.Draw();
logo.Draw();
//Draw credit-entries
for (int i = 0; i < _CreditNames.Count; i++)
{
_CreditNames[i].image.Draw();
_CreditNames[i].particle.Update();
_CreditNames[i].particle.Draw();
}
return true;
}
private void animation()
{
if (LogoTimer.IsRunning)
{
logo.Rect.Y = -270 + (270f / 3000f) * LogoTimer.ElapsedMilliseconds;
SRectF rect = new SRectF(logo.Rect.X, logo.Rect.Y, logo.Rect.W, logo.Rect.H, -1);
starsRed.Area = rect;
starsBlue.Area = rect;
if (LogoTimer.ElapsedMilliseconds >= 2000 && !CreditsTimer.IsRunning)
{
CreditsTimer.Start();
}
if (LogoTimer.ElapsedMilliseconds >= 3000)
{
LogoTimer.Stop();
LogoTimer.Reset();
}
}
if (CreditsTimer.IsRunning)
{
for (int i = 0; i < _CreditNames.Count; i++)
{
if (_CreditNames[i].active)
{
switch (_CreditNames[i].direction)
{
case EDirection.Left:
if (i * 4000f <= CreditsTimer.ElapsedMilliseconds)
{
float xOld = _CreditNames[i].image.Rect.X;
_CreditNames[i].image.Rect.X = -450 + (((CSettings.iRenderW - _CreditNames[i].image.Rect.W) / 2)/3000f) * (CreditsTimer.ElapsedMilliseconds-(i*4000f));
_CreditNames[i].particleRect.X += (_CreditNames[i].image.Rect.X - xOld);
_CreditNames[i].particle.Area = _CreditNames[i].particleRect;
//Check if name is in middle of screen and should go up
if (_CreditNames[i].image.Rect.X >= (CSettings.iRenderW - _CreditNames[i].image.Rect.W) / 2)
{
_CreditNames[i].direction = EDirection.Up;
_CreditNames[i].StartTimeUp = CreditsTimer.ElapsedMilliseconds;
}
}
break;
case EDirection.Right:
if (i * 4000f <= CreditsTimer.ElapsedMilliseconds)
{
float xOld = _CreditNames[i].image.Rect.X;
_CreditNames[i].image.Rect.X = CSettings.iRenderW - (((CSettings.iRenderW - _CreditNames[i].image.Rect.W) / 2) / 3000f) * (CreditsTimer.ElapsedMilliseconds - (i * 4000f));
_CreditNames[i].particleRect.X -= (xOld - _CreditNames[i].image.Rect.X);
_CreditNames[i].particle.Area = _CreditNames[i].particleRect;
//Check if name is in middle of screen and should go up
if (_CreditNames[i].image.Rect.X <= (CSettings.iRenderW - _CreditNames[i].image.Rect.W) / 2 )
{
_CreditNames[i].direction = EDirection.Up;
_CreditNames[i].StartTimeUp = CreditsTimer.ElapsedMilliseconds;
}
}
break;
case EDirection.Up:
float yOld = _CreditNames[i].image.Rect.Y;
_CreditNames[i].image.Rect.Y = 580 - (270f / 3000f) * (CreditsTimer.ElapsedMilliseconds - _CreditNames[i].StartTimeUp);
_CreditNames[i].particleRect.Y -= (yOld - _CreditNames[i].image.Rect.Y);
_CreditNames[i].particle.Area = _CreditNames[i].particleRect;
if (_CreditNames[i].image.Rect.Y <= 270f)
{
_CreditNames[i].active = false;
}
break;
}
}
}
}
}
}
}