use LuaThreadVariable

This commit is contained in:
Glenn Maynard
2006-11-02 05:42:47 +00:00
parent 592c27996d
commit 524b2418c7
13 changed files with 36 additions and 43 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
<ActorFrame><children>
<AutoActor
File="File1"
File="Var 'File1'"
OnCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y"
/>
</children></ActorFrame>
@@ -1,6 +1,6 @@
<ActorFrame><children>
<AutoActor File="File1" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="File1" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="File1" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="File1" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
</children></ActorFrame>
@@ -1,6 +1,6 @@
<ActorFrame><children>
<AutoActor File="File1" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="File2" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="File2" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="File1" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="Var 'File2'" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="Var 'File2'" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
</children></ActorFrame>
@@ -1,6 +1,6 @@
<ActorFrame><children>
<AutoActor File="File1" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="File1" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;zoomx,self:GetZoomX()*-1" />
<AutoActor File="File1" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;zoomy,self:GetZoomY()*-1" />
<AutoActor File="File1" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;zoomx,self:GetZoomX()*-1;zoomy,self:GetZoomY()*-1" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(1,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;zoomx,self:GetZoomX()*-1" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(1,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;zoomy,self:GetZoomY()*-1" />
<AutoActor File="Var 'File1'" OnCommand="x,scale(3,0,4,SCREEN_LEFT,SCREEN_RIGHT);y,scale(3,0,4,SCREEN_TOP,SCREEN_BOTTOM);zoomtowidth,SCREEN_WIDTH/2;zoomtoheight,SCREEN_HEIGHT/2;zoomx,self:GetZoomX()*-1;zoomy,self:GetZoomY()*-1" />
</children></ActorFrame>
@@ -1,12 +1,12 @@
<ActorFrame><children>
<Layer
Type="@Sprite"
InitCommand="%function(self) self:LoadBackground( GAMESTATE:GetCurrentSong():GetBackgroundPath() ) self.Color = Color1 end"
InitCommand="%function(self) self:LoadBackground( GAMESTATE:GetCurrentSong():GetBackgroundPath() ) self.Color = Var 'Color1' end"
OnCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;ZoomToWidth,SCREEN_WIDTH;ZoomToHeight,SCREEN_HEIGHT;diffuse,color(self.Color)"
/>
<Layer
File="File1"
InitCommand="%function(self) self:pause(); self.Color = Color2; end"
File="Var 'File1'"
InitCommand="%function(self) self:pause(); self.Color = Var 'Color2'; end"
OnCommand="blend,add;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;ZoomToWidth,SCREEN_WIDTH;ZoomToHeight,SCREEN_HEIGHT;diffuse,color(self.Color)"
GainFocusCommand="Play"
LoseFocusCommand="Pause"
@@ -1,6 +1,6 @@
<ActorFrame><children>
<AutoActor
File="File1"
File="Var 'File1'"
OnCommand="scale_or_crop_background;loop,0"
/>
</children></ActorFrame>
@@ -1,7 +1,7 @@
<ActorFrame><children>
<Layer
File="File1"
InitCommand="%function(self) self.Color = Color1; end"
File="Var 'File1'"
InitCommand="%function(self) self.Color = Var 'Color1'; end"
OnCommand="scale_or_crop_background;diffuse,color(self.Color)"
GainFocusCommand="Play"
LoseFocusCommand="Pause"
@@ -1,8 +1,8 @@
<!-- Align left when cropping to 4:3. Avoid this; it's not compatible with PS2 movie pre-rendering. -->
<ActorFrame><children>
<Layer
File="File1"
InitCommand="%function(self) self.Color = Color1; end"
File="Var 'File1'"
InitCommand="%function(self) self.Color = Var 'Color1'; end"
OnCommand="horizalign,left;scaletocover,0,0,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,color(self.Color)"
GainFocusCommand="Play"
LoseFocusCommand="Pause"
@@ -1,6 +1,6 @@
<ActorFrame><children>
<AutoActor
File="File1"
File="Var 'File1'"
OnCommand="scale_or_crop_background;Pause"
/>
</children></ActorFrame>
@@ -1,6 +1,6 @@
<ActorFrame><children>
<AutoActor
File="File1"
File="Var 'File1'"
OnCommand="scale_or_crop_background;position,0"
/>
</children></ActorFrame>
+1 -1
View File
@@ -1,4 +1,4 @@
<ActorFrame><children>
<!-- upper left corner -->
<AutoActor File="File1" />
<AutoActor File="Var 'File1'" />
</children></ActorFrame>
+8 -16
View File
@@ -295,12 +295,13 @@ bool BackgroundImpl::Layer::CreateBackground( const Song *pSong, const Backgroun
vector<RString> vsResolved;
vsResolved.resize( vsToResolve.size() );
vector<LuaThreadVariable *> vsResolvedRef;
vsResolvedRef.resize( vsToResolve.size() );
for( unsigned i=0; i<vsToResolve.size(); i++ )
{
const RString &sToResolve = vsToResolve[i];
LUA->UnsetGlobal( ssprintf("File%d",i+1) ); // clear
if( sToResolve.empty() )
{
if( i == 0 )
@@ -341,7 +342,7 @@ bool BackgroundImpl::Layer::CreateBackground( const Song *pSong, const Backgroun
ASSERT( !sResolved.empty() );
LUA->SetGlobal( ssprintf("File%d",i+1), sResolved );
vsResolvedRef[i] = new LuaThreadVariable( ssprintf("File%d",i+1), sResolved );
}
RString sEffect = bd.m_sEffect;
@@ -369,8 +370,8 @@ bool BackgroundImpl::Layer::CreateBackground( const Song *pSong, const Backgroun
// Set Lua color globals
LUA->SetGlobal( "Color1", bd.m_sColor1.empty() ? RString("1,1,1,1") : bd.m_sColor1 );
LUA->SetGlobal( "Color2", bd.m_sColor2.empty() ? RString("1,1,1,1") : bd.m_sColor2 );
LuaThreadVariable sColor1( "Color1", bd.m_sColor1.empty() ? RString("1,1,1,1") : bd.m_sColor1 );
LuaThreadVariable sColor2( "Color2", bd.m_sColor2.empty() ? RString("1,1,1,1") : bd.m_sColor2 );
// Resolve the effect file.
@@ -403,10 +404,8 @@ bool BackgroundImpl::Layer::CreateBackground( const Song *pSong, const Backgroun
ASSERT( pActor );
m_BGAnimations[bd] = pActor;
for( unsigned i=0; i<vsResolved.size(); i++ )
LUA->UnsetGlobal( ssprintf("File%d",i+1) );
LUA->UnsetGlobal( "Color1" );
LUA->UnsetGlobal( "Color2" );
for( unsigned i=0; i<vsResolvedRef.size(); i++ )
delete vsResolvedRef[i];
return true;
}
@@ -805,17 +804,10 @@ void BackgroundImpl::Layer::UpdateCurBGChange( const Song *pSong, float fLastMus
m_pCurrentBGA->SetUpdateRate( change.m_fRate );
// Set Lua color globals before calling Init and On
LUA->SetGlobal( "Color1", change.m_def.m_sColor1.empty() ? RString("1,1,1,1") : change.m_def.m_sColor1 );
LUA->SetGlobal( "Color2", change.m_def.m_sColor2.empty() ? RString("1,1,1,1") : change.m_def.m_sColor2 );
m_pCurrentBGA->InitState();
m_pCurrentBGA->PlayCommand( "On" );
m_pCurrentBGA->PlayCommand( "GainFocus" );
LUA->UnsetGlobal( "Color1" );
LUA->UnsetGlobal( "Color2" );
/* How much time of this BGA have we skipped? (This happens with SetSeconds.) */
const float fStartSecond = pSong->m_Timing.GetElapsedTimeFromBeat( change.m_fStartBeat );
+4 -3
View File
@@ -124,9 +124,10 @@ namespace ScreenManagerUtil
g_ScreenStack.push_back( ls );
/* Set the name of the loading screen. */
LUA->SetGlobal( "LoadingScreen", ls.m_pScreen->GetName() );
ls.m_pScreen->BeginScreen();
LUA->UnsetGlobal( "LoadingScreen" );
{
LuaThreadVariable var( "LoadingScreen", ls.m_pScreen->GetName() );
ls.m_pScreen->BeginScreen();
}
SCREENMAN->RefreshCreditsMessages();