diff --git a/src/command.cpp b/src/command.cpp index b3ab032192..a5d8cda91a 100644 --- a/src/command.cpp +++ b/src/command.cpp @@ -868,7 +868,7 @@ bool DoCommandPEx(TileIndex tile, uint32 p1, uint32 p2, uint64 p3, uint32 cmd, C } } else if (estimate_only) { ShowEstimatedCostOrIncome(res.GetCost(), x, y); - } else if (!only_sending && res.GetCost() != 0 && tile != 0 && IsLocalCompany() && _game_mode != GM_EDITOR) { + } else if (!only_sending && res.GetCost() != 0 && tile != 0 && IsLocalCompany() && _game_mode != GM_EDITOR && HasBit(_extra_display_opt, XDO_SHOW_MONEY_TEXT_EFFECTS)) { /* Only show the cost animation when we did actually * execute the command, i.e. we're not sending it to * the server, when it has cost the local company diff --git a/src/economy.cpp b/src/economy.cpp index 06b44f515a..205d8830e3 100644 --- a/src/economy.cpp +++ b/src/economy.cpp @@ -1221,12 +1221,14 @@ CargoPayment::~CargoPayment() SndPlayVehicleFx(SND_14_CASHTILL, this->front); } - if (this->visual_transfer != 0) { - ShowFeederIncomeAnimation(this->front->x_pos, this->front->y_pos, - this->front->z_pos, this->visual_transfer, -this->visual_profit); - } else if (this->visual_profit != 0) { - ShowCostOrIncomeAnimation(this->front->x_pos, this->front->y_pos, - this->front->z_pos, -this->visual_profit); + if (HasBit(_extra_display_opt, XDO_SHOW_MONEY_TEXT_EFFECTS)) { + if (this->visual_transfer != 0) { + ShowFeederIncomeAnimation(this->front->x_pos, this->front->y_pos, + this->front->z_pos, this->visual_transfer, -this->visual_profit); + } else if (this->visual_profit != 0) { + ShowCostOrIncomeAnimation(this->front->x_pos, this->front->y_pos, + this->front->z_pos, -this->visual_profit); + } } cur_company.Restore(); diff --git a/src/lang/english.txt b/src/lang/english.txt index 6c56c9c164..6a843ab153 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -396,6 +396,7 @@ STR_SETTINGS_MENU_FULL_ANIMATION :Full animation STR_SETTINGS_MENU_FULL_DETAIL :Full detail STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS :Transparent buildings STR_SETTINGS_MENU_TRANSPARENT_SIGNS :Transparent signs +STR_SETTINGS_MENU_MONEY_TEXT_EFFECTS :Income/cost texts displayed ############ range ends here ############ range for file menu starts diff --git a/src/misc_gui.cpp b/src/misc_gui.cpp index a438bbbf37..a3411f35a2 100644 --- a/src/misc_gui.cpp +++ b/src/misc_gui.cpp @@ -621,6 +621,8 @@ void ShowEstimatedCostOrIncome(Money cost, int x, int y) */ void ShowCostOrIncomeAnimation(int x, int y, int z, Money cost) { + if (!HasBit(_extra_display_opt, XDO_SHOW_MONEY_TEXT_EFFECTS)) return; + Point pt = RemapCoords(x, y, z); StringID msg = STR_INCOME_FLOAT_COST; @@ -642,6 +644,8 @@ void ShowCostOrIncomeAnimation(int x, int y, int z, Money cost) */ void ShowFeederIncomeAnimation(int x, int y, int z, Money transfer, Money income) { + if (!HasBit(_extra_display_opt, XDO_SHOW_MONEY_TEXT_EFFECTS)) return; + Point pt = RemapCoords(x, y, z); SetDParam(0, transfer); diff --git a/src/openttd.h b/src/openttd.h index bff0e77045..1a2dae1bff 100644 --- a/src/openttd.h +++ b/src/openttd.h @@ -48,6 +48,11 @@ enum DisplayOptions { DO_SHOW_COMPETITOR_SIGNS = 7, ///< Display signs, station names and waypoint names of opponent companies. Buoys and oilrig-stations are always shown, even if this option is turned off. }; +/** Extra Display Options */ +enum ExtraDisplayOptions { + XDO_SHOW_MONEY_TEXT_EFFECTS = 0, ///< Display money text effects. +}; + extern GameMode _game_mode; extern SwitchMode _switch_mode; extern bool _exit_game; diff --git a/src/table/misc_settings.ini b/src/table/misc_settings.ini index 1878d01aba..1a7a731343 100644 --- a/src/table/misc_settings.ini +++ b/src/table/misc_settings.ini @@ -46,6 +46,13 @@ var = _display_opt def = (1 << DO_SHOW_TOWN_NAMES | 1 << DO_SHOW_STATION_NAMES | 1 << DO_SHOW_SIGNS | 1 << DO_FULL_ANIMATION | 1 << DO_FULL_DETAIL | 1 << DO_SHOW_WAYPOINT_NAMES | 1 << DO_SHOW_COMPETITOR_SIGNS) full = ""SHOW_TOWN_NAMES|SHOW_STATION_NAMES|SHOW_SIGNS|FULL_ANIMATION||FULL_DETAIL|WAYPOINTS|SHOW_COMPETITOR_SIGNS"" +[SDTG_MMANY] +name = ""extra_display_opt"" +type = SLE_UINT8 +var = _extra_display_opt +def = (1 << XDO_SHOW_MONEY_TEXT_EFFECTS) +full = ""SHOW_MONEY_TEXT_EFFECTS"" + [SDTG_BOOL] name = ""fullscreen"" var = _fullscreen diff --git a/src/toolbar_gui.cpp b/src/toolbar_gui.cpp index ed0cdc9d06..a3e316736a 100644 --- a/src/toolbar_gui.cpp +++ b/src/toolbar_gui.cpp @@ -314,6 +314,7 @@ enum OptionMenuEntries { OME_FULL_DETAILS, OME_TRANSPARENTBUILDINGS, OME_SHOW_STATIONSIGNS, + OME_SHOW_MONEYTEXT, }; /** @@ -344,6 +345,7 @@ static CallBackFunction ToolbarOptionsClick(Window *w) list.emplace_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_FULL_DETAIL, OME_FULL_DETAILS, false, HasBit(_display_opt, DO_FULL_DETAIL))); list.emplace_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_TRANSPARENT_BUILDINGS, OME_TRANSPARENTBUILDINGS, false, IsTransparencySet(TO_HOUSES))); list.emplace_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_TRANSPARENT_SIGNS, OME_SHOW_STATIONSIGNS, false, IsTransparencySet(TO_SIGNS))); + list.emplace_back(new DropDownListCheckedItem(STR_SETTINGS_MENU_MONEY_TEXT_EFFECTS, OME_SHOW_MONEYTEXT, false, HasBit(_extra_display_opt, XDO_SHOW_MONEY_TEXT_EFFECTS))); ShowDropDownList(w, std::move(list), 0, WID_TN_SETTINGS, 140, true, true); if (_settings_client.sound.click_beep) SndPlayFx(SND_15_BEEP); @@ -378,6 +380,7 @@ static CallBackFunction MenuClickSettings(int index) case OME_FULL_DETAILS: ToggleBit(_display_opt, DO_FULL_DETAIL); break; case OME_TRANSPARENTBUILDINGS: ToggleTransparency(TO_HOUSES); break; case OME_SHOW_STATIONSIGNS: ToggleTransparency(TO_SIGNS); break; + case OME_SHOW_MONEYTEXT: ToggleBit(_extra_display_opt, XDO_SHOW_MONEY_TEXT_EFFECTS); break; } MarkWholeScreenDirty(); return CBF_NONE; diff --git a/src/transparency.h b/src/transparency.h index 1d52b42e73..f6591cb96c 100644 --- a/src/transparency.h +++ b/src/transparency.h @@ -39,6 +39,7 @@ extern TransparencyOptionBits _transparency_opt; extern TransparencyOptionBits _transparency_lock; extern TransparencyOptionBits _invisibility_opt; extern byte _display_opt; +extern byte _extra_display_opt; /** * Check if the transparency option bit is set diff --git a/src/transparency_gui.cpp b/src/transparency_gui.cpp index fa790e450f..326a325e9e 100644 --- a/src/transparency_gui.cpp +++ b/src/transparency_gui.cpp @@ -24,6 +24,7 @@ TransparencyOptionBits _transparency_opt; ///< The bits that should be transpar TransparencyOptionBits _transparency_lock; ///< Prevent these bits from flipping with X. TransparencyOptionBits _invisibility_opt; ///< The bits that should be invisible. byte _display_opt; ///< What do we want to draw/do? +byte _extra_display_opt; class TransparenciesWindow : public Window {