OpenTTD Source 20260621-master-g720d10536d
currency.cpp File Reference

Support for different currencies. More...

#include "stdafx.h"
#include "core/bitmath_func.hpp"
#include "currency_func.h"
#include "news_func.h"
#include "settings_type.h"
#include "string_type.h"
#include "strings_func.h"
#include "timer/timer.h"
#include "timer/timer_game_calendar.h"
#include "table/strings.h"
#include "safeguards.h"

Go to the source code of this file.

Functions

uint8_t GetNewgrfCurrencyIdConverted (uint8_t grfcurr_id)
 Will return the ottd's index correspondence to the ttdpatch's id.
Currencies GetMaskOfAllowedCurrencies ()
 get a mask of the allowed currencies depending on the year
void ResetCurrencies (bool preserve_custom)
 Will fill _currency_specs array with default values from origin_currency_specs Called only from newgrf.cpp and settings.cpp.

Variables

static const std::array< CurrencySpec, CURRENCY_ENDorigin_currency_specs
 The original currency specifications.
std::array< CurrencySpec, CURRENCY_END_currency_specs
 Array of currencies used by the system.
const uint8_t TTDPatch_To_OTTDIndex []
 This array represent the position of OpenTTD's currencies, compared to TTDPatch's ones.
static const IntervalTimer< TimerGameCalendar_check_switch_to_euro ({TimerGameCalendar::Trigger::Year, TimerGameCalendar::Priority::None}, [](auto) { if(_currency_specs[_settings_game.locale.currency].to_euro !=CF_NOEURO &&_currency_specs[_settings_game.locale.currency].to_euro !=CF_ISEURO &&TimerGameCalendar::year >=_currency_specs[_settings_game.locale.currency].to_euro) { _settings_game.locale.currency=2;AddNewsItem(GetEncodedString(STR_NEWS_EURO_INTRODUCTION), NewsType::Economy, NewsStyle::Normal, {});} })
 Verify if the currency chosen by the user is about to be converted to Euro.

Detailed Description

Support for different currencies.

Definition in file currency.cpp.

Function Documentation

◆ GetMaskOfAllowedCurrencies()

Currencies GetMaskOfAllowedCurrencies ( )

get a mask of the allowed currencies depending on the year

Returns
mask of currencies

Definition at line 128 of file currency.cpp.

References _currency_specs, CF_ISEURO, CF_NOEURO, CURRENCY_CUSTOM, CURRENCY_END, BaseBitSet< Timpl, Tvalue_type, Tstorage, Tmask >::Set(), and TimerGameCalendar::year.

Referenced by GameOptionsWindow::BuildDropDownList().

◆ GetNewgrfCurrencyIdConverted()

uint8_t GetNewgrfCurrencyIdConverted ( uint8_t grfcurr_id)

Will return the ottd's index correspondence to the ttdpatch's id.

If the id is bigger than the array, it is a grf written for ottd, thus returning the same id. Only called from newgrf.cpp

Parameters
grfcurr_idcurrency id coming from newgrf
Returns
the corrected index

Definition at line 119 of file currency.cpp.

References lengthof, and TTDPatch_To_OTTDIndex.

Referenced by GlobalVarChangeInfo().

◆ ResetCurrencies()

void ResetCurrencies ( bool preserve_custom)

Will fill _currency_specs array with default values from origin_currency_specs Called only from newgrf.cpp and settings.cpp.

Parameters
preserve_customwill not reset custom currency

Definition at line 162 of file currency.cpp.

References _currency_specs, CURRENCY_CUSTOM, CURRENCY_END, and origin_currency_specs.

Referenced by LoadFromConfig(), and ResetNewGRFData().

Variable Documentation

◆ _currency_specs

◆ origin_currency_specs

const std::array<CurrencySpec, CURRENCY_END> origin_currency_specs
static

The original currency specifications.

Definition at line 30 of file currency.cpp.

Referenced by ResetCurrencies().

◆ TTDPatch_To_OTTDIndex

const uint8_t TTDPatch_To_OTTDIndex[]
Initial value:
=
{
}
@ CURRENCY_GBP
British Pound.
@ CURRENCY_ESP
Spanish Peseta.
@ CURRENCY_FRF
French Franc.
@ CURRENCY_SEK
Swedish Krona.
@ CURRENCY_GRD
Greek Drachma.
@ CURRENCY_JPY
Japanese Yen.
@ CURRENCY_DKK
Danish Krona.
@ CURRENCY_ATS
Austrian Schilling.
@ CURRENCY_USD
US Dollar.
@ CURRENCY_EUR
Euro.
@ CURRENCY_FIM
Finish Markka.
@ CURRENCY_DEM
Deutsche Mark.
@ CURRENCY_BEF
Belgian Franc.
@ CURRENCY_ITL
Italian Lira.
@ CURRENCY_PLN
Polish Zloty.
@ CURRENCY_RUR
Russian Rouble.
@ CURRENCY_CHF
Swiss Franc.
@ CURRENCY_NLG
Dutch Gulden.
@ CURRENCY_HUF
Hungarian Forint.

This array represent the position of OpenTTD's currencies, compared to TTDPatch's ones.

When a grf sends currencies, they are based on the order defined by TTDPatch. So, we must reindex them to our own order.

Definition at line 88 of file currency.cpp.

Referenced by GetNewgrfCurrencyIdConverted().