1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2026-01-31 10:45:16 +01:00

Show guest money effects with high precision

This commit is contained in:
Ted John
2017-06-05 21:18:14 +01:00
parent b9e9b8320f
commit 30585ea2a9
5 changed files with 28 additions and 20 deletions

View File

@@ -4370,6 +4370,8 @@ STR_6058 :Mute
STR_6059 :{RIGHTGUILLEMET}
STR_6060 :Show guest purchases as animation
STR_6061 :{SMALLFONT}{BLACK}Show animated money effect{NEWLINE}when guests make purchases.
STR_6062 :{OUTLINE}{GREEN}+ {CURRENCY2DP}
STR_6063 :{OUTLINE}{RED}- {CURRENCY2DP}
#############
# Scenarios #

View File

@@ -3723,6 +3723,8 @@ enum {
STR_SHOW_GUEST_PURCHASES = 6060,
STR_SHOW_GUEST_PURCHASES_TIP = 6061,
STR_MONEY_EFFECT_RECEIVE_HIGHP = 6062,
STR_MONEY_EFFECT_SPEND_HIGHP = 6063,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
STR_COUNT = 32768

View File

@@ -55,15 +55,9 @@ void misc_paint(rct_sprite *misc, sint32 imageDirection)
return;
}
rct_money_effect moneyEffect = misc->money_effect;
money32 amount = moneyEffect.value;
rct_string_id stringId = STR_MONEY_EFFECT_RECEIVE;
if (amount < 0) {
amount = -amount;
stringId = STR_MONEY_EFFECT_SPEND;
}
sub_685EBC(amount, stringId, moneyEffect.y, moneyEffect.z, (sint8 *) &money_wave[moneyEffect.wiggle % 22], moneyEffect.offset_x, get_current_rotation());
rct_money_effect * moneyEffect = &misc->money_effect;
rct_string_id stringId = money_effect_get_string_id(moneyEffect);
sub_685EBC(moneyEffect->value, stringId, moneyEffect->y, moneyEffect->z, (sint8 *) &money_wave[moneyEffect->wiggle % 22], moneyEffect->offset_x, get_current_rotation());
break;
}

View File

@@ -32,16 +32,12 @@ static const rct_xy16 _moneyEffectMoveOffset[] = {
*/
void money_effect_create_at(money32 value, sint32 x, sint32 y, sint32 z, bool vertical)
{
rct_money_effect *moneyEffect;
rct_string_id stringId;
char buffer[128];
moneyEffect = (rct_money_effect*)create_sprite(2);
rct_money_effect * moneyEffect = (rct_money_effect *)create_sprite(2);
if (moneyEffect == NULL)
return;
moneyEffect->value = value;
moneyEffect->vertical = vertical;
moneyEffect->vertical = (vertical ? 1 : 0);
moneyEffect->var_14 = 64;
moneyEffect->var_09 = 20;
moneyEffect->var_15 = 30;
@@ -51,12 +47,11 @@ void money_effect_create_at(money32 value, sint32 x, sint32 y, sint32 z, bool ve
moneyEffect->num_movements = 0;
moneyEffect->move_delay = 0;
stringId = 1388;
if (value < 0) {
value *= -1;
stringId = 1399;
}
// Construct string to display
rct_string_id stringId = money_effect_get_string_id(moneyEffect);
char buffer[128];
format_string(buffer, 128, stringId, &value);
gCurrentFontSpriteBase = FONT_SPRITE_BASE_MEDIUM;
moneyEffect->offset_x = -(gfx_get_string_width(buffer) / 2);
moneyEffect->wiggle = 0;
@@ -130,3 +125,17 @@ void money_effect_update(rct_money_effect *moneyEffect)
sprite_remove((rct_sprite*)moneyEffect);
}
rct_string_id money_effect_get_string_id(const rct_money_effect * sprite)
{
bool vertical = (sprite->vertical != 0);
rct_string_id spentStringId = vertical ? STR_MONEY_EFFECT_SPEND_HIGHP : STR_MONEY_EFFECT_SPEND;
rct_string_id receiveStringId = vertical ? STR_MONEY_EFFECT_RECEIVE_HIGHP : STR_MONEY_EFFECT_RECEIVE;
rct_string_id stringId = receiveStringId;
money32 value = sprite->value;
if (value < 0) {
value *= -1;
stringId = spentStringId;
}
return stringId;
}

View File

@@ -463,6 +463,7 @@ uint32 duck_get_frame_image(const rct_duck * duck, sint32 direction);
void money_effect_create(money32 value);
void money_effect_create_at(money32 value, sint32 x, sint32 y, sint32 z, bool vertical);
void money_effect_update(rct_money_effect *moneyEffect);
rct_string_id money_effect_get_string_id(const rct_money_effect * sprite);
///////////////////////////////////////////////////////////////
// Crash particles