diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index fc7b9c76dc..4aef738549 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -620,8 +620,7 @@ void ShowCostOrIncomeAnimation(int x, int y, int z, Money cost) cost = -cost; msg = STR_INCOME_FLOAT_INCOME; } - SetDParam(0, cost); - AddTextEffect(msg, pt.x, pt.y, DAY_TICKS, TE_RISING); + AddTextEffect(msg, pt.x, pt.y, DAY_TICKS, TE_RISING, cost); } /** @@ -638,17 +637,15 @@ void ShowFeederIncomeAnimation(int x, int y, int z, Money transfer, Money income Point pt = RemapCoords(x, y, z); - SetDParam(0, transfer); if (income == 0) { - AddTextEffect(STR_FEEDER, pt.x, pt.y, DAY_TICKS, TE_RISING); + AddTextEffect(STR_FEEDER, pt.x, pt.y, DAY_TICKS, TE_RISING, transfer); } else { StringID msg = STR_FEEDER_COST; if (income < 0) { income = -income; msg = STR_FEEDER_INCOME; } - SetDParam(1, income); - AddTextEffect(msg, pt.x, pt.y, DAY_TICKS, TE_RISING); + AddTextEffect(msg, pt.x, pt.y, DAY_TICKS, TE_RISING, transfer, income); } } @@ -667,8 +664,7 @@ TextEffectID ShowFillingPercent(int x, int y, int z, uint8 percent, StringID str assert(string != STR_NULL); - SetDParam(0, percent); - return AddTextEffect(string, pt.x, pt.y, 0, TE_STATIC); + return AddTextEffect(string, pt.x, pt.y, 0, TE_STATIC, percent); } /** @@ -680,8 +676,7 @@ void UpdateFillingPercent(TextEffectID te_id, uint8 percent, StringID string) { assert(string != STR_NULL); - SetDParam(0, percent); - UpdateTextEffect(te_id, string); + UpdateTextEffect(te_id, string, percent); } /** diff --git a/src/texteff.cpp b/src/texteff.cpp index ceae290d18..c2aef61e3e 100644 --- a/src/texteff.cpp +++ b/src/texteff.cpp @@ -42,7 +42,7 @@ struct TextEffect : public ViewportSign { }; /* Text Effects */ -TextEffectID AddTextEffect(StringID msg, int center, int y, uint8 duration, TextEffectMode mode) +TextEffectID AddTextEffect(StringID msg, int center, int y, uint8 duration, TextEffectMode mode, uint64 param1, uint64 param2) { if (_game_mode == GM_MENU) return INVALID_TE_ID; @@ -59,26 +59,30 @@ TextEffectID AddTextEffect(StringID msg, int center, int y, uint8 duration, Text /* Start defining this object */ te.string_id = msg; te.duration = duration; - te.params_1 = GetDParam(0); - te.params_2 = GetDParam(1); + te.params_1 = param1; + te.params_2 = param2; te.mode = mode; /* Make sure we only dirty the new area */ te.width_normal = 0; + SetDParam(0, param1); + SetDParam(1, param2); te.UpdatePosition(ZOOM_LVL_OUT_8X, center, y, msg); return i; } -void UpdateTextEffect(TextEffectID te_id, StringID msg) +void UpdateTextEffect(TextEffectID te_id, StringID msg, uint64 param1, uint64 param2) { /* Update details */ TextEffect *te = _text_effects.data() + te_id; - if (msg == te->string_id && GetDParam(0) == te->params_1) return; + if (msg == te->string_id && param1 == te->params_1) return; te->string_id = msg; - te->params_1 = GetDParam(0); - te->params_2 = GetDParam(1); + te->params_1 = param1; + te->params_2 = param2; + SetDParam(0, param1); + SetDParam(1, param2); te->UpdatePosition(ZOOM_LVL_OUT_8X, te->center, te->top, te->string_id, te->string_id - 1); } diff --git a/src/texteff.hpp b/src/texteff.hpp index 93e1f9fbc9..35bdf81c36 100644 --- a/src/texteff.hpp +++ b/src/texteff.hpp @@ -29,10 +29,10 @@ using TextEffectID = uint16_t; static const TextEffectID INVALID_TE_ID = UINT16_MAX; void MoveAllTextEffects(uint delta_ms); -TextEffectID AddTextEffect(StringID msg, int x, int y, uint8 duration, TextEffectMode mode); +TextEffectID AddTextEffect(StringID msg, int x, int y, uint8 duration, TextEffectMode mode, uint64 param1 = 0, uint64 param2 = 0); void InitTextEffects(); void DrawTextEffects(ViewportDrawerDynamic *vdd, DrawPixelInfo *dpi, bool load_transparent); -void UpdateTextEffect(TextEffectID effect_id, StringID msg); +void UpdateTextEffect(TextEffectID effect_id, StringID msg, uint64 param1 = 0, uint64 param2 = 0); void RemoveTextEffect(TextEffectID effect_id); void UpdateAllTextEffectVirtCoords();