basic support for scrolling song list in screenunlock (oops, forgot the important files)
This commit is contained in:
@@ -18,6 +18,7 @@
|
|||||||
#include "UnlockSystem.h"
|
#include "UnlockSystem.h"
|
||||||
#include "SongManager.h"
|
#include "SongManager.h"
|
||||||
#include "ActorUtil.h"
|
#include "ActorUtil.h"
|
||||||
|
#include "Song.h"
|
||||||
|
|
||||||
ScreenUnlock::ScreenUnlock() : ScreenAttract("ScreenUnlock")
|
ScreenUnlock::ScreenUnlock() : ScreenAttract("ScreenUnlock")
|
||||||
{
|
{
|
||||||
@@ -62,6 +63,68 @@ ScreenUnlock::ScreenUnlock() : ScreenAttract("ScreenUnlock")
|
|||||||
this->AddChild(&Unlocks[i]);
|
this->AddChild(&Unlocks[i]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// scrolling text
|
||||||
|
if (THEME->GetMetricI("ScreenUnlock", "UnlockTextScroll") != 0)
|
||||||
|
{
|
||||||
|
int NumberUnlocks = THEME->GetMetricF("ScreenUnlock", "NumUnlocks");
|
||||||
|
float ScrollingTextX = THEME->GetMetricF("ScreenUnlock", "UnlockTextScrollX");
|
||||||
|
float ScrollingTextStartY = THEME->GetMetricF("ScreenUnlock", "UnlockTextScrollStartY");
|
||||||
|
float ScrollingTextEndY = THEME->GetMetricF("ScreenUnlock", "UnlockTextScrollEndY");
|
||||||
|
float ScrollingTextZoom = THEME->GetMetricF("ScreenUnlock", "UnlockTextScrollZoom");
|
||||||
|
float ScrollingTextRows = THEME->GetMetricF("ScreenUnlock", "UnlockTextScrollRows");
|
||||||
|
float MaxWidth = THEME->GetMetricF("ScreenUnlock", "UnlockTextScrollMaxWidth");
|
||||||
|
|
||||||
|
float SecondsToScroll = THEME->GetMetricF("ScreenUnlock", "TimeToDisplay");
|
||||||
|
if (SecondsToScroll > 2) SecondsToScroll--;
|
||||||
|
|
||||||
|
const float SECS_PER_CYCLE = (float)SecondsToScroll/(ScrollingTextRows + NumberUnlocks);
|
||||||
|
|
||||||
|
for(int i = 1; i <= NumberUnlocks; i++)
|
||||||
|
{
|
||||||
|
item[i].LoadFromFont( THEME->GetPathToF("_shared2") );
|
||||||
|
item[i].SetHorizAlign( Actor::align_left );
|
||||||
|
|
||||||
|
CString SongText = THEME->GetMetric("ScreenUnlock",
|
||||||
|
ssprintf("Unlock%dSong", i));
|
||||||
|
|
||||||
|
SongText.MakeUpper();
|
||||||
|
SongEntry *pSong = GAMESTATE->m_pUnlockingSys->FindSong(SongText);
|
||||||
|
|
||||||
|
if (pSong != NULL && pSong->ActualSong != NULL)
|
||||||
|
{
|
||||||
|
LOG->Trace("Entry %d, pointer=%d", i, (int)pSong);
|
||||||
|
SongText = pSong->ActualSong->GetFullDisplayTitle();
|
||||||
|
}
|
||||||
|
else if (pSong == NULL) // song is not in library
|
||||||
|
item[i].Command("Diffuse,0,1,0,1");
|
||||||
|
else // song is mistyped
|
||||||
|
item[i].Command("Diffuse,1,0,0,1");
|
||||||
|
|
||||||
|
BreakLine(SongText);
|
||||||
|
|
||||||
|
item[i].SetZoom(ScrollingTextZoom);
|
||||||
|
item[i].SetTextMaxWidth(MaxWidth, SongText );
|
||||||
|
|
||||||
|
if (pSong->isLocked)
|
||||||
|
{
|
||||||
|
item[i].SetText("????????");
|
||||||
|
item[i].SetZoom(ScrollingTextZoom * 1.99);
|
||||||
|
}
|
||||||
|
|
||||||
|
item[i].SetXY(ScrollingTextX, ScrollingTextStartY);
|
||||||
|
|
||||||
|
CString commands;
|
||||||
|
|
||||||
|
commands = ssprintf("diffusealpha,0;sleep,%f;linear,0.5;diffusealpha,1;linear,%f;y,%f;linear,0.5;diffusealpha,0", SECS_PER_CYCLE * (i - 1), SECS_PER_CYCLE * (ScrollingTextRows), ScrollingTextEndY);
|
||||||
|
|
||||||
|
LOG->Trace("Updated text %d: %s", i, SongText.c_str() );
|
||||||
|
|
||||||
|
item[i].Command(commands);
|
||||||
|
this->AddChild(&item[i]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
PointsUntilNextUnlock.SetName( "PointsDisplay" );
|
PointsUntilNextUnlock.SetName( "PointsDisplay" );
|
||||||
|
|
||||||
if (PointDisplay == "DP" || PointDisplay == "Dance")
|
if (PointDisplay == "DP" || PointDisplay == "Dance")
|
||||||
@@ -82,3 +145,16 @@ ScreenUnlock::ScreenUnlock() : ScreenAttract("ScreenUnlock")
|
|||||||
this->PostScreenMessage( SM_BeginFadingOut,
|
this->PostScreenMessage( SM_BeginFadingOut,
|
||||||
THEME->GetMetricF("ScreenUnlock", "TimeToDisplay") );
|
THEME->GetMetricF("ScreenUnlock", "TimeToDisplay") );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void ScreenUnlock::BreakLine(CString& line)
|
||||||
|
{
|
||||||
|
for(unsigned i = 1; i < line.GetLength(); i++)
|
||||||
|
if (line[i] == '~' || line[i] == '(')
|
||||||
|
if (line[i-1] == ' ')
|
||||||
|
{
|
||||||
|
line[i-1] = '\n';
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -25,4 +25,7 @@ public:
|
|||||||
protected:
|
protected:
|
||||||
BitmapText PointsUntilNextUnlock;
|
BitmapText PointsUntilNextUnlock;
|
||||||
Sprite Unlocks[NUM_UNLOCKS]; // support 30 unlocks right now
|
Sprite Unlocks[NUM_UNLOCKS]; // support 30 unlocks right now
|
||||||
|
BitmapText item[NUM_UNLOCKS]; // for scrolling text
|
||||||
|
|
||||||
|
void BreakLine(CString& line); // used in scrollingtext
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user