(svn r25075) -Codechange: Allow for more than 32 currencies

This commit is contained in:
planetmaker 2013-03-09 16:24:43 +00:00
parent bd301e8475
commit fae3cbae9f
3 changed files with 8 additions and 6 deletions

View File

@ -10,6 +10,8 @@
/** @file currency.cpp Support for different currencies. */
#include "stdafx.h"
#include "core/bitmath_func.hpp"
#include "currency.h"
#include "news_func.h"
#include "settings_type.h"
@ -107,9 +109,9 @@ byte GetNewgrfCurrencyIdConverted(byte grfcurr_id)
* get a mask of the allowed currencies depending on the year
* @return mask of currencies
*/
uint GetMaskOfAllowedCurrencies()
uint64 GetMaskOfAllowedCurrencies()
{
uint mask = 0;
uint64 mask = 0LL;
uint i;
for (i = 0; i < CURRENCY_END; i++) {
@ -117,9 +119,9 @@ uint GetMaskOfAllowedCurrencies()
if (to_euro != CF_NOEURO && to_euro != CF_ISEURO && _cur_year >= to_euro) continue;
if (to_euro == CF_ISEURO && _cur_year < 2000) continue;
mask |= (1 << i);
SetBit(mask, i);
}
mask |= (1 << CURRENCY_CUSTOM); // always allow custom currency
SetBit(mask, CURRENCY_CUSTOM); // always allow custom currency
return mask;
}

View File

@ -85,7 +85,7 @@ extern CurrencySpec _currency_specs[CURRENCY_END];
#define _custom_currency (_currency_specs[CURRENCY_CUSTOM])
#define _currency ((const CurrencySpec*)&_currency_specs[GetGameSettings().locale.currency])
uint GetMaskOfAllowedCurrencies();
uint64 GetMaskOfAllowedCurrencies();
void CheckSwitchToEuro();
void ResetCurrencies(bool preserve_custom = true);
StringID *BuildCurrencyDropdown();

View File

@ -189,7 +189,7 @@ struct GameOptionsWindow : Window {
list = new DropDownList();
*selected_index = this->opt->locale.currency;
StringID *items = BuildCurrencyDropdown();
uint disabled = _game_mode == GM_MENU ? 0 : ~GetMaskOfAllowedCurrencies();
uint64 disabled = _game_mode == GM_MENU ? 0LL : ~GetMaskOfAllowedCurrencies();
/* Add non-custom currencies; sorted naturally */
for (uint i = 0; i < CURRENCY_END; items++, i++) {