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:
@@ -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 #
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user