#include "global.h" /* ----------------------------------------------------------------------------- Class: Combo Desc: See header. Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved. Chris Danford ----------------------------------------------------------------------------- */ #include "Combo.h" #include "ThemeManager.h" CachedThemeMetricF LABEL_X ("Combo","LabelX"); CachedThemeMetricF LABEL_Y ("Combo","LabelY"); CachedThemeMetricI LABEL_HORIZ_ALIGN ("Combo","LabelHorizAlign"); CachedThemeMetricI LABEL_VERT_ALIGN ("Combo","LabelVertAlign"); CachedThemeMetricF NUMBER_X ("Combo","NumberX"); CachedThemeMetricF NUMBER_Y ("Combo","NumberY"); CachedThemeMetricI NUMBER_HORIZ_ALIGN ("Combo","NumberHorizAlign"); CachedThemeMetricI NUMBER_VERT_ALIGN ("Combo","NumberVertAlign"); CachedThemeMetricI SHOW_COMBO_AT ("Combo","ShowComboAt"); CachedThemeMetricF NUMBER_MIN_ZOOM ("Combo","NumberMinZoom"); CachedThemeMetricF NUMBER_MAX_ZOOM ("Combo","NumberMaxZoom"); CachedThemeMetricF NUMBER_MAX_ZOOM_AT ("Combo","NumberMaxZoomAt"); CachedThemeMetricF PULSE_ZOOM ("Combo","PulseZoom"); CachedThemeMetricF C_TWEEN_SECONDS ("Combo","TweenSeconds"); Combo::Combo() { LABEL_X.Refresh(); LABEL_Y.Refresh(); LABEL_HORIZ_ALIGN.Refresh(); LABEL_VERT_ALIGN.Refresh(); NUMBER_X.Refresh(); NUMBER_Y.Refresh(); NUMBER_HORIZ_ALIGN.Refresh(); NUMBER_VERT_ALIGN.Refresh(); SHOW_COMBO_AT.Refresh(); NUMBER_MIN_ZOOM.Refresh(); NUMBER_MAX_ZOOM.Refresh(); NUMBER_MAX_ZOOM_AT.Refresh(); PULSE_ZOOM.Refresh(); C_TWEEN_SECONDS.Refresh(); m_sprCombo.Load( THEME->GetPathToG( "Combo label") ); m_sprCombo.EnableShadow( true ); m_sprCombo.StopAnimating(); m_sprCombo.SetXY( LABEL_X, LABEL_Y ); m_sprCombo.SetHorizAlign( (Actor::HorizAlign)(int)LABEL_HORIZ_ALIGN ); m_sprCombo.SetVertAlign( (Actor::VertAlign)(int)LABEL_VERT_ALIGN ); m_sprCombo.SetDiffuse( RageColor(1,1,1,0) ); // invisible this->AddChild( &m_sprCombo ); m_textComboNumber.LoadFromNumbers( THEME->GetPathToN("Combo") ); m_textComboNumber.EnableShadow( true ); m_textComboNumber.SetXY( NUMBER_X, NUMBER_Y ); m_textComboNumber.SetHorizAlign( (Actor::HorizAlign)(int)NUMBER_HORIZ_ALIGN ); m_textComboNumber.SetVertAlign( (Actor::VertAlign)(int)NUMBER_VERT_ALIGN ); m_textComboNumber.SetDiffuse( RageColor(1,1,1,0) ); // invisible this->AddChild( &m_textComboNumber ); } void Combo::SetCombo( int iCombo ) { if( iCombo >= (int)SHOW_COMBO_AT ) { m_textComboNumber.SetDiffuse( RageColor(1,1,1,1) ); // visible m_sprCombo.SetDiffuse( RageColor(1,1,1,1) ); // visible CString txt = ssprintf("%d", iCombo); /* Don't do anything if it's not changing. */ if(m_textComboNumber.GetText() == txt) return; m_textComboNumber.SetText( txt ); float fNumberZoom = SCALE(iCombo,0.f,(float)NUMBER_MAX_ZOOM_AT,(float)NUMBER_MIN_ZOOM,(float)NUMBER_MAX_ZOOM); CLAMP( fNumberZoom, (float)NUMBER_MIN_ZOOM, (float)NUMBER_MAX_ZOOM ); m_textComboNumber.StopTweening(); m_textComboNumber.SetZoom( fNumberZoom * (float)PULSE_ZOOM ); m_textComboNumber.BeginTweening( C_TWEEN_SECONDS ); m_textComboNumber.SetZoom( fNumberZoom ); m_sprCombo.StopTweening(); m_sprCombo.SetZoom( PULSE_ZOOM ); m_sprCombo.BeginTweening( C_TWEEN_SECONDS ); m_sprCombo.SetZoom( 1 ); } else { m_textComboNumber.SetDiffuse( RageColor(1,1,1,0) ); // invisible m_sprCombo.SetDiffuse( RageColor(1,1,1,0) ); // invisible } }