Handle colors as Lua expressions, like int/float/bool metrics: "{1,1,1,1}"

instead of "1,1,1,1".
This commit is contained in:
Glenn Maynard
2006-09-22 02:35:42 +00:00
parent 6c398cf49d
commit 141f48b032
2 changed files with 92 additions and 70 deletions
+65 -65
View File
@@ -564,9 +564,9 @@ PrevScreen=@ScreenTitleBranch()
NextScreen=ScreenGameplayBranch NextScreen=ScreenGameplayBranch
Fallback=ScreenNetSelectMusic Fallback=ScreenNetSelectMusic
Class=ScreenNetRoom Class=ScreenNetRoom
OpenRoomColor=1.0,1.0,1.0,1.0 OpenRoomColor=color(1.0,1.0,1.0,1.0)
PasswdRoomColor=1.0,0.5,0.5,1.0 PasswdRoomColor=color(1.0,0.5,0.5,1.0)
InGameRoomColor=1.0,0.1,0.1,1.0 InGameRoomColor=color(1.0,0.1,0.1,1.0)
RoomWheelX=SCREEN_CENTER_X+160 RoomWheelX=SCREEN_CENTER_X+160
RoomWheelY=SCREEN_CENTER_Y+4 RoomWheelY=SCREEN_CENTER_Y+4
RoomWheelOnCommand= RoomWheelOnCommand=
@@ -602,14 +602,14 @@ ChatInputBoxOnCommand=addx,-SCREEN_WIDTH*0.6;bounceend,0.5;addx,SCREEN_WIDTH*0.6
ChatInputBoxOffCommand=bouncebegin,0.5;addx,-SCREEN_WIDTH*0.6 ChatInputBoxOffCommand=bouncebegin,0.5;addx,-SCREEN_WIDTH*0.6
ChatInputBoxWidth=310 ChatInputBoxWidth=310
ChatInputBoxHeight=60 ChatInputBoxHeight=60
ChatInputBoxColor=0.5,0.5,1.0,0.7 //transparent cyan ChatInputBoxColor=color(0.5,0.5,1.0,0.7) //transparent cyan
ChatOutputBoxY=SCREEN_CENTER_Y-27 ChatOutputBoxY=SCREEN_CENTER_Y-27
ChatOutputBoxX=SCREEN_CENTER_X-157 ChatOutputBoxX=SCREEN_CENTER_X-157
ChatOutputBoxOnCommand=diffusealpha,0;linear,0.5;diffusealpha,1 ChatOutputBoxOnCommand=diffusealpha,0;linear,0.5;diffusealpha,1
ChatOutputBoxOffCommand=diffusealpha,1;linear,0.5;diffusealpha,0;zoomx,0.0;zoomy,0.0 ChatOutputBoxOffCommand=diffusealpha,1;linear,0.5;diffusealpha,0;zoomx,0.0;zoomy,0.0
ChatOutputBoxWidth=310 ChatOutputBoxWidth=310
ChatOutputBoxHeight=210 ChatOutputBoxHeight=210
ChatOutputBoxColor=1.0,0.5,0.5,0.7 //transparent reddish ChatOutputBoxColor=color(1.0,0.5,0.5,0.7) //transparent reddish
ChatInputY=SCREEN_CENTER_Y+110 ChatInputY=SCREEN_CENTER_Y+110
ChatInputX=SCREEN_CENTER_X-307 ChatInputX=SCREEN_CENTER_X-307
ChatInputOnCommand=zoomx,0.0;zoomy,0.0;diffusealpha,0;linear,0.5;diffusealpha,0.8;zoomx,0.5;zoomy,0.5 ChatInputOnCommand=zoomx,0.0;zoomy,0.0;diffusealpha,0;linear,0.5;diffusealpha,0.8;zoomx,0.5;zoomy,0.5
@@ -656,7 +656,7 @@ DifficultyIconP2Y=SCREEN_CENTER_Y+185
DifficultyIconP2X=SCREEN_CENTER_X+20 DifficultyIconP2X=SCREEN_CENTER_X+20
DifficultyIconP2OnCommand=shadowlength,2;zoomx,0;zoomy,0;linear,0.5;zoomx,1.0;zoomy,1.0 DifficultyIconP2OnCommand=shadowlength,2;zoomx,0;zoomy,0;linear,0.5;zoomx,1.0;zoomy,1.0
DifficultyIconP2OffCommand=linear,0.5;zoomx,0.0;zoomy,0.0;shadowlength,0 DifficultyIconP2OffCommand=linear,0.5;zoomx,0.0;zoomy,0.0;shadowlength,0
DiffBGColor=0.7,0.7,0.7,0.7 DiffBGColor=color(0.7,0.7,0.7,0.7)
DiffBGWidth=0 DiffBGWidth=0
DiffBGHeight=0 DiffBGHeight=0
DiffBGY=SCREEN_CENTER_Y+160 DiffBGY=SCREEN_CENTER_Y+160
@@ -935,7 +935,7 @@ LyricsReverseY=SCREEN_CENTER_Y-140
# This is used if one player is in reverse and the other isn't. # This is used if one player is in reverse and the other isn't.
LyricsOneReverseX=SCREEN_CENTER_X+0 LyricsOneReverseX=SCREEN_CENTER_X+0
LyricsOneReverseY=SCREEN_CENTER_Y-205 LyricsOneReverseY=SCREEN_CENTER_Y-205
LyricsDefaultColor=0,1,0,1 LyricsDefaultColor=color(0,1,0,1)
ActiveAttackListP1X= ActiveAttackListP1X=
ActiveAttackListP1Y= ActiveAttackListP1Y=
ActiveAttackListP1OnCommand=hidden,1 ActiveAttackListP1OnCommand=hidden,1
@@ -2140,17 +2140,17 @@ HighlightSortOnCommand=accelerate,0.2;addx,-SCREEN_WIDTH/2
HighlightSortOffCommand=decelerate,0.2;addx,SCREEN_WIDTH/2 HighlightSortOffCommand=decelerate,0.2;addx,SCREEN_WIDTH/2
WheelItemOnDelayOffset=0.04 WheelItemOnDelayOffset=0.04
WheelItemOffDelayOffset=0.04 WheelItemOffDelayOffset=0.04
WheelItemLockedColor=0,0,0,0.5 WheelItemLockedColor=color(0,0,0,0.5)
NumSectionColors=7 NumSectionColors=7
SectionColor1=0.8,0.1,0.6,1 // pink SectionColor1=color(0.8,0.1,0.6,1) // pink
SectionColor2=0.6,0.4,0.8,1 // purple SectionColor2=color(0.6,0.4,0.8,1) // purple
SectionColor3=0.0,0.4,0.8,1 // sky blue SectionColor3=color(0.0,0.4,0.8,1) // sky blue
SectionColor4=0.0,0.6,0.6,1 // sea green SectionColor4=color(0.0,0.6,0.6,1) // sea green
SectionColor5=0.1,0.7,0.3,1 // green SectionColor5=color(0.1,0.7,0.3,1) // green
SectionColor6=0.8,0.6,0.0,1 // orange SectionColor6=color(0.8,0.6,0.0,1) // orange
SectionColor7=1.0,0.3,0.3,1 // light red SectionColor7=color(1.0,0.3,0.3,1) // light red
SongRealExtraColor=0.9,0.9,0,1 // yellow SongRealExtraColor=color(0.9,0.9,0,1) // yellow
SortMenuColor=1,1,0,1 SortMenuColor=color(1,1,0,1)
ShowRoulette=true ShowRoulette=true
ShowRandom=true ShowRandom=true
ShowPortal=true ShowPortal=true
@@ -2175,7 +2175,7 @@ ChoiceHardMeter=sort,HardMeter
Fallback=MusicWheel Fallback=MusicWheel
RoomWheelItemStartOnCommand= RoomWheelItemStartOnCommand=
RoomWheelItemFinishOnCommand= RoomWheelItemFinishOnCommand=
CreateRoomColor=0.0,0.8,0.3,1.0 CreateRoomColor=color(0.0,0.8,0.3,1.0)
[RoomInfoDisplay] [RoomInfoDisplay]
RoomInfoDisplayOnCommand=diffuse,1.0,1.0,1.0,1.0;x,SCREEN_WIDTH+130;y,250;bounceend,0.5;x,SCREEN_WIDTH-160 RoomInfoDisplayOnCommand=diffuse,1.0,1.0,1.0,1.0;x,SCREEN_WIDTH+130;y,250;bounceend,0.5;x,SCREEN_WIDTH-160
@@ -2421,9 +2421,9 @@ ItemsLongRowSharedX=SCREEN_CENTER_X+20
ItemsOnCommand=zoom,0.5 ItemsOnCommand=zoom,0.5
ItemGainFocusCommand= ItemGainFocusCommand=
ItemLoseFocusCommand= ItemLoseFocusCommand=
ColorSelected=1,1,1,1 ColorSelected=color(1,1,1,1)
ColorNotSelected=0.5,0.5,0.5,1 ColorNotSelected=color(0.5,0.5,0.5,1)
ColorDisabled=0.1,0.1,0.1,1 ColorDisabled=color(0.1,0.1,0.1,1)
CapitalizeAllOptionNames=false CapitalizeAllOptionNames=false
TweenSeconds=0.3 TweenSeconds=0.3
@@ -2571,7 +2571,7 @@ WebOffCommand=diffusealpha,1.0;linear,0.6;diffusealpha,0.0
NumLinksShow=8 NumLinksShow=8
WebSelY=SCREEN_CENTER_Y+10 WebSelY=SCREEN_CENTER_Y+10
WebSelX=SCREEN_WIDTH*3.0/4.0 WebSelX=SCREEN_WIDTH*3.0/4.0
WebSelColor=0.9,0.9,0.9,0.4 WebSelColor=color(0.9,0.9,0.9,0.4)
WebSelOnCommand=diffusealpha,0.0;linear,1.0;diffusealpha,1.0 WebSelOnCommand=diffusealpha,0.0;linear,1.0;diffusealpha,1.0
WebSelOffCommand=diffusealpha,1.0;linear,0.6;diffusealpha,0.0 WebSelOffCommand=diffusealpha,1.0;linear,0.6;diffusealpha,0.0
WebURLY=SCREEN_HEIGHT-40 WebURLY=SCREEN_HEIGHT-40
@@ -2599,28 +2599,28 @@ Fallback=ScreenWithMenuElements
WarmUpSeconds=0.25 WarmUpSeconds=0.25
[BitmapText] [BitmapText]
RainbowColor1=1.0,0.0,0.4,1 // red RainbowColor1=color(1.0,0.0,0.4,1) // red
RainbowColor2=0.8,0.2,0.6,1 // pink RainbowColor2=color(0.8,0.2,0.6,1) // pink
RainbowColor3=0.4,0.3,0.5,1 // purple RainbowColor3=color(0.4,0.3,0.5,1) // purple
RainbowColor4=0.2,0.6,1.0,1 // sky blue RainbowColor4=color(0.2,0.6,1.0,1) // sky blue
RainbowColor5=0.2,0.8,0.8,1 // sea green RainbowColor5=color(0.2,0.8,0.8,1) // sea green
RainbowColor6=0.2,0.8,0.4,1 // green RainbowColor6=color(0.2,0.8,0.4,1) // green
RainbowColor7=1.0,0.8,0.2,1 // orange RainbowColor7=color(1.0,0.8,0.2,1) // orange
[SongManager] [SongManager]
NumSongGroupColors=7 NumSongGroupColors=7
SongGroupColor1=0.8,0.1,0.6,1 // pink SongGroupColor1=color(0.8,0.1,0.6,1) // pink
SongGroupColor2=0.6,0.4,0.8,1 // purple SongGroupColor2=color(0.6,0.4,0.8,1) // purple
SongGroupColor3=0.0,0.4,0.8,1 // sky blue SongGroupColor3=color(0.0,0.4,0.8,1) // sky blue
SongGroupColor4=0.0,0.6,0.6,1 // sea green SongGroupColor4=color(0.0,0.6,0.6,1) // sea green
SongGroupColor5=0.1,0.7,0.3,1 // green SongGroupColor5=color(0.1,0.7,0.3,1) // green
SongGroupColor6=0.8,0.6,0.0,1 // orange SongGroupColor6=color(0.8,0.6,0.0,1) // orange
SongGroupColor7=1.0,0.3,0.3,1 // light red SongGroupColor7=color(1.0,0.3,0.3,1) // light red
NumCourseGroupColors=1 NumCourseGroupColors=1
UseUnlockColor=false UseUnlockColor=false
UnlockColor=1,0.5,0,1 UnlockColor=color(1,0.5,0,1)
CourseGroupColor1=1,1,1,1 CourseGroupColor1=color(1,1,1,1)
ExtraColor=1.0,0.0,0.0,1.0 // red ExtraColor=color(1.0,0.0,0.0,1.0) // red
ExtraColorMeter=10 ExtraColorMeter=10
UsePreferredSortColor=false UsePreferredSortColor=false
MoveUnlocksToBottomOfPreferredSort=false MoveUnlocksToBottomOfPreferredSort=false
@@ -2724,9 +2724,9 @@ AvoidMineCommand=
HitMineCommand= HitMineCommand=
[BPMDisplay] [BPMDisplay]
NormalColor=1.0,1.0,1.0,1 // white NormalColor=color(1.0,1.0,1.0,1) // white
ChangeColor=1.0,0.5,0.0,1 // orange ChangeColor=color(1.0,0.5,0.0,1) // orange
ExtraColor=0.7,0.0,0.0,1 // dark red ExtraColor=color(0.7,0.0,0.0,1) // dark red
Cycle=true Cycle=true
NoBPMText=... NoBPMText=...
Separator=- Separator=-
@@ -2799,12 +2799,12 @@ LabelPostDelayOnCommand=linear,0.1;glow,1,1,1,1;accelerate,0.3;zoom,1;diffuse,1,
[GrooveGraph] [GrooveGraph]
EdgeWidth= EdgeWidth=
BeginnerColor=0,0,0,0 BeginnerColor=color(0,0,0,0)
EasyColor=0,0,0,0 EasyColor=color(0,0,0,0)
MediumColor=0,0,0,0 MediumColor=color(0,0,0,0)
HardColor=0,0,0,0 HardColor=color(0,0,0,0)
ChallengeColor=0,0,0,0 ChallengeColor=color(0,0,0,0)
EditColor=0,0,0,0 EditColor=color(0,0,0,0)
ShowStream= ShowStream=
ShowVoltage= ShowVoltage=
ShowAir= ShowAir=
@@ -3304,11 +3304,11 @@ RowSpacingX=0
RowSpacingY=60 RowSpacingY=60
ColSpacingX=0 ColSpacingX=0
ColSpacingY=0 ColSpacingY=0
StepsTypeColor1=0.6,0.6,1,1 StepsTypeColor1=color(0.6,0.6,1,1)
StepsTypeColor2=1,0.3,0.3,1 StepsTypeColor2=color(1,0.3,0.3,1)
StepsTypeColor3=0.3,1,0.3,1 StepsTypeColor3=color(0.3,1,0.3,1)
StepsTypeColor4=1.0,1,1.0,1 StepsTypeColor4=color(1.0,1,1.0,1)
StepsTypeColor5=1.0,1,1.0,1 StepsTypeColor5=color(1.0,1,1.0,1)
SongScoreRowsToDraw=6 SongScoreRowsToDraw=6
SongScoreSecondsPerRow=0.4 SongScoreSecondsPerRow=0.4
ManualScrolling=false ManualScrolling=false
@@ -4222,12 +4222,12 @@ WriteSimpleValues=true
TapsAndHolds=true TapsAndHolds=true
[Course] [Course]
SortPreferredColor=1,1,1,1 //Preferred is both for when courses are in preferred sort, or are autogen SortPreferredColor=color(1,1,1,1) //Preferred is both for when courses are in preferred sort, or are autogen
SortLevel1Color=1,0,0,1 SortLevel1Color=color(1,0,0,1)
SortLevel2Color=1,1,0,1 SortLevel2Color=color(1,1,0,1)
SortLevel3Color=1,0.5,0,1 SortLevel3Color=color(1,0.5,0,1)
SortLevel4Color=1,1,0,1 SortLevel4Color=color(1,1,0,1)
SortLevel5Color=0,1,0,1 SortLevel5Color=color(0,1,0,1)
[Inventory] [Inventory]
ItemUseRateSeconds=0 ItemUseRateSeconds=0
@@ -4268,15 +4268,15 @@ ItemsLongRowP1X=SCREEN_CENTER_X-60
ItemsLongRowP2X=SCREEN_CENTER_X+100 ItemsLongRowP2X=SCREEN_CENTER_X+100
ItemsLongRowSharedX=SCREEN_CENTER_X+150 ItemsLongRowSharedX=SCREEN_CENTER_X+150
ItemsOnCommand=zoom,0.5 ItemsOnCommand=zoom,0.5
ColorSelected=0.5,1,0.5,1 ColorSelected=color(0.5,1,0.5,1)
ColorNotSelected=1,1,1,1 ColorNotSelected=color(1,1,1,1)
ColorDisabled=0.5,0.5,0.5,1 ColorDisabled=color(0.5,0.5,0.5,1)
CapitalizeAllOptionNames=false CapitalizeAllOptionNames=false
TweenSeconds=0 TweenSeconds=0
[ScreenMiniMenuEditHelp] [ScreenMiniMenuEditHelp]
Fallback=ScreenMiniMenu Fallback=ScreenMiniMenu
ColorDisabled=1,1,1,1 ColorDisabled=color(1,1,1,1)
[ScreenMiniMenuMainMenu] [ScreenMiniMenuMainMenu]
Fallback=ScreenMiniMenu Fallback=ScreenMiniMenu
@@ -4387,8 +4387,8 @@ TitleGainFocusCommand=diffuseshift;EffectColor1,0.3,0.3,0.3,1;EffectColor2,1.3,1
TitleLoseFocusCommand=stopeffect TitleLoseFocusCommand=stopeffect
ItemsStartX=0 ItemsStartX=0
LineHighlightX=0 LineHighlightX=0
ColorSelected=1,1,1,1 ColorSelected=color(1,1,1,1)
ColorNotSelected=0.7,0.7,0.7,1 ColorNotSelected=color(0.7,0.7,0.7,1)
[ScreenJukebox DifficultyMeterP1] [ScreenJukebox DifficultyMeterP1]
Fallback=ScreenGameplay DifficultyMeterP1 Fallback=ScreenGameplay DifficultyMeterP1
+27 -5
View File
@@ -935,17 +935,39 @@ bool ThemeManager::GetMetricB( const RString &sClassName, const RString &sValueN
return LuaHelpers::RunExpressionB( sValue ); return LuaHelpers::RunExpressionB( sValue );
} }
static RageColor RunExpressionC( const RString &sExpr )
{
Lua *L = LUA->Get();
LuaReference val;
if( !val.SetFromExpression(sExpr) )
{
LUA->Release( L );
return RageColor();
}
val.PushSelf( L );
if( lua_type(L, -1) != LUA_TTABLE )
RageException::Throw( "Color expression: \"%s\" did not return a table", sExpr.c_str() );
RageColor result;
result.FromStack( L, -1 );
lua_pop( L, 1 );
LUA->Release(L);
return result;
}
RageColor ThemeManager::GetMetricC( const RString &sClassName, const RString &sValueName ) RageColor ThemeManager::GetMetricC( const RString &sClassName, const RString &sValueName )
{ {
RString sValue = GetMetricRaw( g_pLoadedThemeData->iniMetrics, sClassName, sValueName ); RString sValue = GetMetricRaw( g_pLoadedThemeData->iniMetrics, sClassName, sValueName );
LuaHelpers::RunAtExpressionS( sValue ); LuaHelpers::RunAtExpressionS( sValue );
RageColor ret(1,1,1,1); LuaHelpers::PrepareExpression( sValue );
if( !ret.FromString(sValue) )
LOG->UserLog( RageLog::LogType_ThemeMetric, sClassName + "::" + sValueName, return RunExpressionC( sValue );
"has an invalid color value \"%s\".", sValue.c_str() );
return ret;
} }
#if !defined(SMPACKAGE) #if !defined(SMPACKAGE)