changeset 14089:511acd6d8554 draft

(svn r18636) -Codechange: make TextEffect::duration a value in ticks instead of ticks * 8
author smatz <smatz@openttd.org>
date Fri, 25 Dec 2009 23:22:41 +0000
parents cc9b4f428e10
children ad7b9541cf58
files src/misc_gui.cpp src/texteff.cpp src/texteff.hpp
diffstat 3 files changed, 18 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/src/misc_gui.cpp
+++ b/src/misc_gui.cpp
@@ -722,7 +722,7 @@
 		msg = STR_INCOME_FLOAT_INCOME;
 	}
 	SetDParam(0, cost);
-	AddTextEffect(msg, pt.x, pt.y, 0x250, TE_RISING);
+	AddTextEffect(msg, pt.x, pt.y, DAY_TICKS, TE_RISING);
 }
 
 void ShowFeederIncomeAnimation(int x, int y, int z, Money cost)
@@ -730,7 +730,7 @@
 	Point pt = RemapCoords(x, y, z);
 
 	SetDParam(0, cost);
-	AddTextEffect(STR_FEEDER, pt.x, pt.y, 0x250, TE_RISING);
+	AddTextEffect(STR_FEEDER, pt.x, pt.y, DAY_TICKS, TE_RISING);
 }
 
 TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent, StringID string)
@@ -740,7 +740,7 @@
 	assert(string != STR_NULL);
 
 	SetDParam(0, percent);
-	return AddTextEffect(string, pt.x, pt.y, 0xFFFF, TE_STATIC);
+	return AddTextEffect(string, pt.x, pt.y, 0, TE_STATIC);
 }
 
 void UpdateFillingPercent(TextEffectID te_id, uint8 percent, StringID string)
--- a/src/texteff.cpp
+++ b/src/texteff.cpp
@@ -23,9 +23,9 @@
 
 /** Container for all information about a text effect */
 struct TextEffect : public ViewportSign{
+	uint64 params_1;     ///< DParam parameter
 	StringID string_id;  ///< String to draw for the text effect, if INVALID_STRING_ID then it's not valid
-	uint16 duration;     ///< How long the text effect should stay
-	uint64 params_1;     ///< DParam parameter
+	uint8 duration;      ///< How long the text effect should stay, in ticks (applies only when mode == TE_RISING)
 	TextEffectMode mode; ///< Type of text effect
 
 	/** Reset the text effect */
@@ -40,7 +40,7 @@
 static SmallVector<struct TextEffect, 32> _text_effects; ///< Text effects are stored there
 
 /* Text Effects */
-TextEffectID AddTextEffect(StringID msg, int center, int y, uint16 duration, TextEffectMode mode)
+TextEffectID AddTextEffect(StringID msg, int center, int y, uint8 duration, TextEffectMode mode)
 {
 	if (_game_mode == GM_MENU) return INVALID_TE_ID;
 
@@ -80,25 +80,21 @@
 	_text_effects[te_id].Reset();
 }
 
-static void MoveTextEffect(TextEffect *te)
-{
-	/* Never expire for duration of 0xFFFF */
-	if (te->duration == 0xFFFF) return;
-	if (te->duration < 8) {
-		te->Reset();
-	} else {
-		te->duration -= 8;
-		te->MarkDirty();
-		te->top--;
-		te->MarkDirty();
-	}
-}
-
 void MoveAllTextEffects()
 {
 	const TextEffect *end = _text_effects.End();
 	for (TextEffect *te = _text_effects.Begin(); te != end; te++) {
-		if (te->string_id != INVALID_STRING_ID && te->mode == TE_RISING) MoveTextEffect(te);
+		if (te->string_id == INVALID_STRING_ID) continue;
+		if (te->mode != TE_RISING) continue;
+
+		if (te->duration-- == 0) {
+			te->Reset();
+			continue;
+		}
+
+		te->MarkDirty();
+		te->top--;
+		te->MarkDirty();
 	}
 }
 
--- a/src/texteff.hpp
+++ b/src/texteff.hpp
@@ -27,7 +27,7 @@
 typedef uint16 TextEffectID;
 
 void MoveAllTextEffects();
-TextEffectID AddTextEffect(StringID msg, int x, int y, uint16 duration, TextEffectMode mode);
+TextEffectID AddTextEffect(StringID msg, int x, int y, uint8 duration, TextEffectMode mode);
 void InitTextEffects();
 void DrawTextEffects(DrawPixelInfo *dpi);
 void UpdateTextEffect(TextEffectID effect_id, StringID msg);