use LuaThreadVariable
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
<ActorFrame><children>
|
<ActorFrame><children>
|
||||||
<AutoActor
|
<AutoActor
|
||||||
File="File1"
|
File="Var 'File1'"
|
||||||
OnCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y"
|
OnCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y"
|
||||||
/>
|
/>
|
||||||
</children></ActorFrame>
|
</children></ActorFrame>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<ActorFrame><children>
|
<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="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="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(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="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="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(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>
|
</children></ActorFrame>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<ActorFrame><children>
|
<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="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="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(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="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="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(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>
|
</children></ActorFrame>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<ActorFrame><children>
|
<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="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="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(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="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="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(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>
|
</children></ActorFrame>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<ActorFrame><children>
|
<ActorFrame><children>
|
||||||
<Layer
|
<Layer
|
||||||
Type="@Sprite"
|
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)"
|
OnCommand="x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;ZoomToWidth,SCREEN_WIDTH;ZoomToHeight,SCREEN_HEIGHT;diffuse,color(self.Color)"
|
||||||
/>
|
/>
|
||||||
<Layer
|
<Layer
|
||||||
File="File1"
|
File="Var 'File1'"
|
||||||
InitCommand="%function(self) self:pause(); self.Color = Color2; end"
|
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)"
|
OnCommand="blend,add;x,SCREEN_CENTER_X;y,SCREEN_CENTER_Y;ZoomToWidth,SCREEN_WIDTH;ZoomToHeight,SCREEN_HEIGHT;diffuse,color(self.Color)"
|
||||||
GainFocusCommand="Play"
|
GainFocusCommand="Play"
|
||||||
LoseFocusCommand="Pause"
|
LoseFocusCommand="Pause"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<ActorFrame><children>
|
<ActorFrame><children>
|
||||||
<AutoActor
|
<AutoActor
|
||||||
File="File1"
|
File="Var 'File1'"
|
||||||
OnCommand="scale_or_crop_background;loop,0"
|
OnCommand="scale_or_crop_background;loop,0"
|
||||||
/>
|
/>
|
||||||
</children></ActorFrame>
|
</children></ActorFrame>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<ActorFrame><children>
|
<ActorFrame><children>
|
||||||
<Layer
|
<Layer
|
||||||
File="File1"
|
File="Var 'File1'"
|
||||||
InitCommand="%function(self) self.Color = Color1; end"
|
InitCommand="%function(self) self.Color = Var 'Color1'; end"
|
||||||
OnCommand="scale_or_crop_background;diffuse,color(self.Color)"
|
OnCommand="scale_or_crop_background;diffuse,color(self.Color)"
|
||||||
GainFocusCommand="Play"
|
GainFocusCommand="Play"
|
||||||
LoseFocusCommand="Pause"
|
LoseFocusCommand="Pause"
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
<!-- Align left when cropping to 4:3. Avoid this; it's not compatible with PS2 movie pre-rendering. -->
|
<!-- Align left when cropping to 4:3. Avoid this; it's not compatible with PS2 movie pre-rendering. -->
|
||||||
<ActorFrame><children>
|
<ActorFrame><children>
|
||||||
<Layer
|
<Layer
|
||||||
File="File1"
|
File="Var 'File1'"
|
||||||
InitCommand="%function(self) self.Color = Color1; end"
|
InitCommand="%function(self) self.Color = Var 'Color1'; end"
|
||||||
OnCommand="horizalign,left;scaletocover,0,0,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,color(self.Color)"
|
OnCommand="horizalign,left;scaletocover,0,0,SCREEN_WIDTH,SCREEN_HEIGHT;diffuse,color(self.Color)"
|
||||||
GainFocusCommand="Play"
|
GainFocusCommand="Play"
|
||||||
LoseFocusCommand="Pause"
|
LoseFocusCommand="Pause"
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<ActorFrame><children>
|
<ActorFrame><children>
|
||||||
<AutoActor
|
<AutoActor
|
||||||
File="File1"
|
File="Var 'File1'"
|
||||||
OnCommand="scale_or_crop_background;Pause"
|
OnCommand="scale_or_crop_background;Pause"
|
||||||
/>
|
/>
|
||||||
</children></ActorFrame>
|
</children></ActorFrame>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
<ActorFrame><children>
|
<ActorFrame><children>
|
||||||
<AutoActor
|
<AutoActor
|
||||||
File="File1"
|
File="Var 'File1'"
|
||||||
OnCommand="scale_or_crop_background;position,0"
|
OnCommand="scale_or_crop_background;position,0"
|
||||||
/>
|
/>
|
||||||
</children></ActorFrame>
|
</children></ActorFrame>
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
<ActorFrame><children>
|
<ActorFrame><children>
|
||||||
<!-- upper left corner -->
|
<!-- upper left corner -->
|
||||||
<AutoActor File="File1" />
|
<AutoActor File="Var 'File1'" />
|
||||||
</children></ActorFrame>
|
</children></ActorFrame>
|
||||||
|
|||||||
@@ -295,12 +295,13 @@ bool BackgroundImpl::Layer::CreateBackground( const Song *pSong, const Backgroun
|
|||||||
|
|
||||||
vector<RString> vsResolved;
|
vector<RString> vsResolved;
|
||||||
vsResolved.resize( vsToResolve.size() );
|
vsResolved.resize( vsToResolve.size() );
|
||||||
|
vector<LuaThreadVariable *> vsResolvedRef;
|
||||||
|
vsResolvedRef.resize( vsToResolve.size() );
|
||||||
|
|
||||||
for( unsigned i=0; i<vsToResolve.size(); i++ )
|
for( unsigned i=0; i<vsToResolve.size(); i++ )
|
||||||
{
|
{
|
||||||
const RString &sToResolve = vsToResolve[i];
|
const RString &sToResolve = vsToResolve[i];
|
||||||
|
|
||||||
LUA->UnsetGlobal( ssprintf("File%d",i+1) ); // clear
|
|
||||||
|
|
||||||
if( sToResolve.empty() )
|
if( sToResolve.empty() )
|
||||||
{
|
{
|
||||||
if( i == 0 )
|
if( i == 0 )
|
||||||
@@ -341,7 +342,7 @@ bool BackgroundImpl::Layer::CreateBackground( const Song *pSong, const Backgroun
|
|||||||
|
|
||||||
ASSERT( !sResolved.empty() );
|
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;
|
RString sEffect = bd.m_sEffect;
|
||||||
@@ -369,8 +370,8 @@ bool BackgroundImpl::Layer::CreateBackground( const Song *pSong, const Backgroun
|
|||||||
|
|
||||||
|
|
||||||
// Set Lua color globals
|
// Set Lua color globals
|
||||||
LUA->SetGlobal( "Color1", bd.m_sColor1.empty() ? RString("1,1,1,1") : bd.m_sColor1 );
|
LuaThreadVariable sColor1( "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 sColor2( "Color2", bd.m_sColor2.empty() ? RString("1,1,1,1") : bd.m_sColor2 );
|
||||||
|
|
||||||
|
|
||||||
// Resolve the effect file.
|
// Resolve the effect file.
|
||||||
@@ -403,10 +404,8 @@ bool BackgroundImpl::Layer::CreateBackground( const Song *pSong, const Backgroun
|
|||||||
ASSERT( pActor );
|
ASSERT( pActor );
|
||||||
m_BGAnimations[bd] = pActor;
|
m_BGAnimations[bd] = pActor;
|
||||||
|
|
||||||
for( unsigned i=0; i<vsResolved.size(); i++ )
|
for( unsigned i=0; i<vsResolvedRef.size(); i++ )
|
||||||
LUA->UnsetGlobal( ssprintf("File%d",i+1) );
|
delete vsResolvedRef[i];
|
||||||
LUA->UnsetGlobal( "Color1" );
|
|
||||||
LUA->UnsetGlobal( "Color2" );
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@@ -805,17 +804,10 @@ void BackgroundImpl::Layer::UpdateCurBGChange( const Song *pSong, float fLastMus
|
|||||||
|
|
||||||
m_pCurrentBGA->SetUpdateRate( change.m_fRate );
|
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->InitState();
|
||||||
m_pCurrentBGA->PlayCommand( "On" );
|
m_pCurrentBGA->PlayCommand( "On" );
|
||||||
m_pCurrentBGA->PlayCommand( "GainFocus" );
|
m_pCurrentBGA->PlayCommand( "GainFocus" );
|
||||||
|
|
||||||
LUA->UnsetGlobal( "Color1" );
|
|
||||||
LUA->UnsetGlobal( "Color2" );
|
|
||||||
|
|
||||||
/* How much time of this BGA have we skipped? (This happens with SetSeconds.) */
|
/* How much time of this BGA have we skipped? (This happens with SetSeconds.) */
|
||||||
const float fStartSecond = pSong->m_Timing.GetElapsedTimeFromBeat( change.m_fStartBeat );
|
const float fStartSecond = pSong->m_Timing.GetElapsedTimeFromBeat( change.m_fStartBeat );
|
||||||
|
|
||||||
|
|||||||
@@ -124,9 +124,10 @@ namespace ScreenManagerUtil
|
|||||||
g_ScreenStack.push_back( ls );
|
g_ScreenStack.push_back( ls );
|
||||||
|
|
||||||
/* Set the name of the loading screen. */
|
/* Set the name of the loading screen. */
|
||||||
LUA->SetGlobal( "LoadingScreen", ls.m_pScreen->GetName() );
|
{
|
||||||
ls.m_pScreen->BeginScreen();
|
LuaThreadVariable var( "LoadingScreen", ls.m_pScreen->GetName() );
|
||||||
LUA->UnsetGlobal( "LoadingScreen" );
|
ls.m_pScreen->BeginScreen();
|
||||||
|
}
|
||||||
|
|
||||||
SCREENMAN->RefreshCreditsMessages();
|
SCREENMAN->RefreshCreditsMessages();
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user