From 1f844d6627429acb6a15e0bf30659b9962f82a30 Mon Sep 17 00:00:00 2001 From: Kyzentun Date: Sat, 1 Nov 2014 13:30:41 -0600 Subject: [PATCH] Fixed coloring and cropping of RollingNumbers during tweens. --- Docs/Changelog_sm5.txt | 4 ++++ src/RollingNumbers.cpp | 33 ++++++++++++++++++++------------- src/RollingNumbers.h | 2 ++ 3 files changed, 26 insertions(+), 13 deletions(-) diff --git a/Docs/Changelog_sm5.txt b/Docs/Changelog_sm5.txt index 8dc574e629..bd36d4a91c 100644 --- a/Docs/Changelog_sm5.txt +++ b/Docs/Changelog_sm5.txt @@ -4,6 +4,10 @@ The StepMania 5 Changelog covers all post-sm-ssc changes. For a list of changes from StepMania 4 alpha 5 to sm-ssc v1.2.5, see Changelog_sm-ssc.txt. ________________________________________________________________________________ +2014/11/01 +---------- +* [RollingNumbers] Cropping and color during tweens fixed. + 2014/10/23 ---------- * [Global] approach, multiapproach, lerp, and lerp_color lua functions added. diff --git a/src/RollingNumbers.cpp b/src/RollingNumbers.cpp index f267ed87b3..5e8c6389ac 100644 --- a/src/RollingNumbers.cpp +++ b/src/RollingNumbers.cpp @@ -25,10 +25,25 @@ void RollingNumbers::Load( const RString &sMetricsGroup ) UpdateText(); } +void RollingNumbers::DrawPart(RageColor const& diffuse, RageColor const& stroke, + float crop_left, float crop_right) +{ + for(int i= 0; i < 4; ++i) + { + m_pTempState->diffuse[i]= diffuse; + } + SetStrokeColor(stroke); + m_pTempState->crop.left= crop_left; + m_pTempState->crop.right= crop_right; + BitmapText::DrawPrimitives(); +} + void RollingNumbers::DrawPrimitives() { RageColor c_orig = this->GetDiffuse(); RageColor c2_orig = this->GetStrokeColor(); + float original_crop_left= m_pTempState->crop.left; + float original_crop_right= m_pTempState->crop.right; RageColor c = this->GetDiffuse(); c *= LEADING_ZERO_MULTIPLY_COLOR; @@ -53,21 +68,13 @@ void RollingNumbers::DrawPrimitives() float f = i / (float)s.length(); // draw leading part - SetDiffuse( c ); - SetStrokeColor( c2 ); - SetCropLeft( 0 ); - SetCropRight( 1-f ); - BitmapText::DrawPrimitives(); - + DrawPart(c, c2, max(0, original_crop_left), max(1-f, original_crop_right)); // draw regular color part - SetDiffuse( c_orig ); - SetStrokeColor( c2_orig ); - SetCropLeft( f ); - SetCropRight( 0 ); - BitmapText::DrawPrimitives(); + DrawPart(c_orig, c2_orig, max(f, original_crop_left), + max(0, original_crop_right)); - SetCropLeft( 0 ); - SetCropRight( 0 ); + m_pTempState->crop.left= original_crop_left; + m_pTempState->crop.right= original_crop_right; } void RollingNumbers::Update( float fDeltaTime ) diff --git a/src/RollingNumbers.h b/src/RollingNumbers.h index 56f04fc2e3..6b1130c412 100644 --- a/src/RollingNumbers.h +++ b/src/RollingNumbers.h @@ -13,6 +13,8 @@ public: void Load( const RString &sMetricsGroup ); virtual RollingNumbers *Copy() const; + void DrawPart(RageColor const& diffuse, RageColor const& stroke, + float crop_left, float crop_right); virtual void DrawPrimitives(); virtual void Update( float fDeltaTime );