Merge branch 'master' into jgrpp

# Conflicts:
#	src/network/network.cpp
pull/135/head
Jonathan G Rennison 4 years ago
commit 8fb0b638fa

@ -960,6 +960,7 @@ STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE :{BIG_FONT}{BLAC
STR_NEWS_NEW_VEHICLE_TYPE :{BIG_FONT}{BLACK}{ENGINE}
STR_NEWS_NEW_VEHICLE_NOW_AVAILABLE_WITH_TYPE :{BLACK}Novi {STRING} je sada dostupan! - {ENGINE}
STR_NEWS_SHOW_VEHICLE_GROUP_TOOLTIP :{BLACK}Otvori prozor grupe fokusiran na grupu odabranog vozila
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO :{WHITE}{STATION} više ne prihvaća {STRING.aku}
STR_NEWS_STATION_NO_LONGER_ACCEPTS_CARGO_OR_CARGO :{WHITE}{STATION} više ne prihvaća {STRING.aku} ili {STRING.aku}
@ -1404,6 +1405,8 @@ STR_CONFIG_SETTING_POPULATION_IN_LABEL :Prikaži broj s
STR_CONFIG_SETTING_POPULATION_IN_LABEL_HELPTEXT :Prikaži broj stanovnika uz nazive gradova na karti
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS :Debljina linija u grafikonima: {STRING}
STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :Debljina linije u grafikonima. Tanja linija je preciznija za čitanje, deblja linija je lakša za vidjeti i boje su lakše za razabrati
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :Prikaži ime NewGRF-a u prozoru za izgradnju vozila: {STRING}
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :Dodaj redak u prozor izgradnje vozila koji će pokazati iz kojeg NewGRF-a dolazi odabrano vozilo.
STR_CONFIG_SETTING_LANDSCAPE :Krajolik: {STRING}
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :Tereni određuju osnovne scenarije za igru s različitim teretima i preduvjetima za rast gradova. NewGRF-ovi i Skripte Igre omogućavaju detaljnije kontrole i postavke.
@ -1641,6 +1644,10 @@ STR_CONFIG_SETTING_NEWS_MESSAGES_FULL :Sve
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR :Vijesti u boji pojavljuju se: {STRING}
STR_CONFIG_SETTING_COLOURED_NEWS_YEAR_HELPTEXT :Godina u kojoj će se novine početi izdavati u boji. Prije ove godine, koriste se crno/bijele novine
STR_CONFIG_SETTING_STARTING_YEAR :Početna godina: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR :Godina kraja bodovanja: {STRING}
STR_CONFIG_SETTING_ENDING_YEAR_HELPTEXT :Godina koje igra završava u smislu bodovanja. Na kraju ove godine, bilježe se bodovi kompanije i prikazuje se tablica najviših bodova ali igrači mogu nastaviti igru.{}Ako je ovo prije početne godine, tablica najviših bodova se nikada neće prikazati.
STR_CONFIG_SETTING_ENDING_YEAR_VALUE :{NUM}
STR_CONFIG_SETTING_ENDING_YEAR_ZERO :Nikada
STR_CONFIG_SETTING_SMOOTH_ECONOMY :Uključi stabilno gospodarstvo (više manjih izazova): {STRING}
STR_CONFIG_SETTING_SMOOTH_ECONOMY_HELPTEXT :Kada je uključeno, promjene u industrijskoj proizvodnji su češće ali u manjim rasponima. Ova postavka obično nema efekta ukoliko su industrije postavljene iz nekog NewGRF-a
STR_CONFIG_SETTING_ALLOW_SHARES :Dopusti kupovanje udjela u drugim tvrtkama: {STRING}
@ -2254,6 +2261,7 @@ STR_NETWORK_ERROR_WRONG_PASSWORD :{WHITE}Pogrešn
STR_NETWORK_ERROR_SERVER_FULL :{WHITE}Poslužitelj je pun
STR_NETWORK_ERROR_SERVER_BANNED :{WHITE}Zabranjen ti je pristup ovom poslužitelju
STR_NETWORK_ERROR_KICKED :{WHITE}Izbačen si iz igre
STR_NETWORK_ERROR_KICK_MESSAGE :{WHITE}Razlog: {STRING}
STR_NETWORK_ERROR_CHEATER :{WHITE}Na ovome poslužitelju varanje nije dopušteno
STR_NETWORK_ERROR_TOO_MANY_COMMANDS :{WHITE}Slali ste previše naredbi na server
STR_NETWORK_ERROR_TIMEOUT_PASSWORD :{WHITE}Trebalo vam je previše vremena za unošenje lozinke
@ -2313,6 +2321,7 @@ STR_NETWORK_MESSAGE_GIVE_MONEY :*** {STRING} je
STR_NETWORK_MESSAGE_GAVE_MONEY_AWAY :*** Dao si {1:STRING} {2:CURRENCY_LONG}
STR_NETWORK_MESSAGE_SERVER_SHUTDOWN :{WHITE}Poslužitelj je zatvorio sesiju
STR_NETWORK_MESSAGE_SERVER_REBOOT :{WHITE}Poslužitelj se ponovno pokreće...{}Molimo pričekajte...
STR_NETWORK_MESSAGE_KICKED :*** {STRING} je izbačen. Razlog: ({STRING})
# Content downloading window
STR_CONTENT_TITLE :{WHITE}Preuzimanje sadržaja
@ -3489,6 +3498,10 @@ STR_INDUSTRY_DIRECTORY_ITEM_PROD2 :{ORANGE}{INDUST
STR_INDUSTRY_DIRECTORY_ITEM_PROD3 :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING}
STR_INDUSTRY_DIRECTORY_ITEM_PRODMORE :{ORANGE}{INDUSTRY} {STRING}, {STRING}, {STRING} i {NUM} više...
STR_INDUSTRY_DIRECTORY_LIST_CAPTION :{BLACK}Imena industrija - za centriranje pogleda klikni na ime. Ctrl+klik otvara novi prozor sa lokacijom industrije
STR_INDUSTRY_DIRECTORY_ACCEPTED_CARGO_FILTER :{BLACK}Prihvaćeni teret: {SILVER}{STRING}
STR_INDUSTRY_DIRECTORY_PRODUCED_CARGO_FILTER :{BLACK}Proizvedeni teret: {SILVER}{STRING}
STR_INDUSTRY_DIRECTORY_FILTER_ALL_TYPES :Sve vrste tereta
STR_INDUSTRY_DIRECTORY_FILTER_NONE :Ništa
# Industry view
STR_INDUSTRY_VIEW_CAPTION :{WHITE}{INDUSTRY}
@ -4263,6 +4276,13 @@ STR_AI_LIST_ACCEPT_TOOLTIP :{BLACK}Odaberi
STR_AI_LIST_CANCEL :{BLACK}Odustani
STR_AI_LIST_CANCEL_TOOLTIP :{BLACK}Nemoj mijenjati skriptu
STR_SCREENSHOT_CAPTION :{WHITE}Napravi sliku zaslova
STR_SCREENSHOT_SCREENSHOT :{BLACK}Normalna snimka zaslona
STR_SCREENSHOT_ZOOMIN_SCREENSHOT :{BLACK}Maksimalno zumirana slika zaslona
STR_SCREENSHOT_DEFAULTZOOM_SCREENSHOT :{BLACK}Snimka ekrana sa zumom osnovne postavke
STR_SCREENSHOT_WORLD_SCREENSHOT :{BLACK}Slika cijele mape
STR_SCREENSHOT_HEIGHTMAP_SCREENSHOT :{BLACK}Slika visinske mape
STR_SCREENSHOT_MINIMAP_SCREENSHOT :{BLACK}Slika mini-mape
# AI Parameters
STR_AI_SETTINGS_CAPTION :{WHITE}{STRING} Parametri

@ -940,7 +940,8 @@ void NetworkGameLoop()
cp.reset(new CommandPacket());
int company;
cp->text.resize(MAX_CMD_TEXT_LENGTH);
int ret = sscanf(p, "date{%x; %x; %x}; company: %x; tile: %x (%*u x %*u); p1: %x; p2: %x; cmd: %x; \"%[^\"]\"", &next_date, &next_date_fract, &next_tick_skip_counter, &company, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, const_cast<char *>(cp->text.c_str()));
assert_compile(MAX_CMD_TEXT_LENGTH > 8192);
int ret = sscanf(p, "date{%x; %x; %x}; company: %x; tile: %x (%*u x %*u); p1: %x; p2: %x; cmd: %x; \"%8192[^\"]\"", &next_date, &next_date_fract, &next_tick_skip_counter, &company, &cp->tile, &cp->p1, &cp->p2, &cp->cmd, const_cast<char *>(cp->text.c_str()));
/* There are 9 pieces of data to read, however the last is a
* string that might or might not exist. Ignore it if that
* string misses because in 99% of the time it's not used. */

@ -44,6 +44,7 @@
const NewsItem *_statusbar_news_item = nullptr;
static uint MIN_NEWS_AMOUNT = 30; ///< preferred minimum amount of news messages
static uint MAX_NEWS_AMOUNT = 1 << 10; ///< Do not exceed this number of news messages
static uint _total_news = 0; ///< current number of news items
static NewsItem *_oldest_news = nullptr; ///< head of news items queue
NewsItem *_latest_news = nullptr; ///< tail of news items queue
@ -729,6 +730,50 @@ static void MoveToNextNewsItem()
}
}
/** Delete a news item from the queue */
static void DeleteNewsItem(NewsItem *ni)
{
/* Delete the news from the news queue. */
if (ni->prev != nullptr) {
ni->prev->next = ni->next;
} else {
assert(_oldest_news == ni);
_oldest_news = ni->next;
}
if (ni->next != nullptr) {
ni->next->prev = ni->prev;
} else {
assert(_latest_news == ni);
_latest_news = ni->prev;
}
_total_news--;
if (_forced_news == ni || _current_news == ni) {
/* When we're the current news, go to the previous item first;
* we just possibly made that the last news item. */
if (_current_news == ni) _current_news = ni->prev;
/* About to remove the currently forced item (shown as newspapers) ||
* about to remove the currently displayed item (newspapers) */
MoveToNextNewsItem();
}
if (_statusbar_news_item == ni) {
/* When we're the current news, go to the previous item first;
* we just possibly made that the last news item. */
_statusbar_news_item = ni->prev;
/* About to remove the currently displayed item (ticker, or just a reminder) */
MoveToNextTickerItem();
}
delete ni;
SetWindowDirty(WC_MESSAGE_HISTORY, 0);
}
/**
* Add a new newsitem to be shown.
* @param string String to display
@ -777,6 +822,11 @@ void AddNewsItem(StringID string, NewsType type, NewsFlag flags, NewsReferenceTy
ni->next = nullptr;
_latest_news = ni;
/* Keep the number of stored news items to a managable number */
if (_total_news > MAX_NEWS_AMOUNT) {
DeleteNewsItem(_oldest_news);
}
SetWindowDirty(WC_MESSAGE_HISTORY, 0);
}
@ -844,50 +894,6 @@ CommandCost CmdCustomNewsItem(TileIndex tile, DoCommandFlag flags, uint32 p1, ui
return CommandCost();
}
/** Delete a news item from the queue */
static void DeleteNewsItem(NewsItem *ni)
{
/* Delete the news from the news queue. */
if (ni->prev != nullptr) {
ni->prev->next = ni->next;
} else {
assert(_oldest_news == ni);
_oldest_news = ni->next;
}
if (ni->next != nullptr) {
ni->next->prev = ni->prev;
} else {
assert(_latest_news == ni);
_latest_news = ni->prev;
}
_total_news--;
if (_forced_news == ni || _current_news == ni) {
/* When we're the current news, go to the previous item first;
* we just possibly made that the last news item. */
if (_current_news == ni) _current_news = ni->prev;
/* About to remove the currently forced item (shown as newspapers) ||
* about to remove the currently displayed item (newspapers) */
MoveToNextNewsItem();
}
if (_statusbar_news_item == ni) {
/* When we're the current news, go to the previous item first;
* we just possibly made that the last news item. */
_statusbar_news_item = ni->prev;
/* About to remove the currently displayed item (ticker, or just a reminder) */
MoveToNextTickerItem();
}
delete ni;
SetWindowDirty(WC_MESSAGE_HISTORY, 0);
}
/**
* Delete a news item type about a vehicle.
* When the news item type is INVALID_STRING_ID all news about the vehicle gets deleted.

@ -27,11 +27,11 @@
/* static */ ScriptCompany::CompanyID ScriptCompany::ResolveCompanyID(ScriptCompany::CompanyID company)
{
if (company == COMPANY_SELF) {
if (!::Company::IsValidID((::CompanyID)_current_company)) return COMPANY_INVALID;
if (!::Company::IsValidID(_current_company)) return COMPANY_INVALID;
return (CompanyID)((byte)_current_company);
}
return ::Company::IsValidID((::CompanyID)company) ? company : COMPANY_INVALID;
return ::Company::IsValidID(company) ? company : COMPANY_INVALID;
}
/* static */ bool ScriptCompany::IsMine(ScriptCompany::CompanyID company)
@ -116,9 +116,9 @@
if (quarter > EARLIEST_QUARTER) return -1;
if (quarter == CURRENT_QUARTER) {
return ::Company::Get((::CompanyID)company)->cur_economy.income;
return ::Company::Get(company)->cur_economy.income;
}
return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].income;
return ::Company::Get(company)->old_economy[quarter - 1].income;
}
/* static */ Money ScriptCompany::GetQuarterlyExpenses(ScriptCompany::CompanyID company, uint32 quarter)
@ -128,9 +128,9 @@
if (quarter > EARLIEST_QUARTER) return -1;
if (quarter == CURRENT_QUARTER) {
return ::Company::Get((::CompanyID)company)->cur_economy.expenses;
return ::Company::Get(company)->cur_economy.expenses;
}
return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].expenses;
return ::Company::Get(company)->old_economy[quarter - 1].expenses;
}
/* static */ int32 ScriptCompany::GetQuarterlyCargoDelivered(ScriptCompany::CompanyID company, uint32 quarter)
@ -140,9 +140,9 @@
if (quarter > EARLIEST_QUARTER) return -1;
if (quarter == CURRENT_QUARTER) {
return ::Company::Get((::CompanyID)company)->cur_economy.delivered_cargo.GetSum<OverflowSafeInt<int32, INT32_MAX, INT32_MIN> >();
return ::Company::Get(company)->cur_economy.delivered_cargo.GetSum<OverflowSafeInt<int32, INT32_MAX, INT32_MIN> >();
}
return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].delivered_cargo.GetSum<OverflowSafeInt<int32, INT32_MAX, INT32_MIN> >();
return ::Company::Get(company)->old_economy[quarter - 1].delivered_cargo.GetSum<OverflowSafeInt<int32, INT32_MAX, INT32_MIN> >();
}
/* static */ int32 ScriptCompany::GetQuarterlyPerformanceRating(ScriptCompany::CompanyID company, uint32 quarter)
@ -152,7 +152,7 @@
if (quarter > EARLIEST_QUARTER) return -1;
if (quarter == CURRENT_QUARTER) return -1;
return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].performance_history;
return ::Company::Get(company)->old_economy[quarter - 1].performance_history;
}
/* static */ Money ScriptCompany::GetQuarterlyCompanyValue(ScriptCompany::CompanyID company, uint32 quarter)
@ -162,9 +162,9 @@
if (quarter > EARLIEST_QUARTER) return -1;
if (quarter == CURRENT_QUARTER) {
return ::CalculateCompanyValue(::Company::Get((::CompanyID)company));
return ::CalculateCompanyValue(::Company::Get(company));
}
return ::Company::Get((::CompanyID)company)->old_economy[quarter - 1].company_value;
return ::Company::Get(company)->old_economy[quarter - 1].company_value;
}
@ -173,7 +173,7 @@
company = ResolveCompanyID(company);
if (company == COMPANY_INVALID) return -1;
return ::Company::Get((CompanyID)company)->money;
return ::Company::Get(company)->money;
}
/* static */ Money ScriptCompany::GetLoanAmount()
@ -250,7 +250,7 @@
company = ResolveCompanyID(company);
if (company == COMPANY_INVALID) return INVALID_TILE;
TileIndex loc = ::Company::Get((CompanyID)company)->location_of_HQ;
TileIndex loc = ::Company::Get(company)->location_of_HQ;
return (loc == 0) ? INVALID_TILE : loc;
}
@ -264,7 +264,7 @@
company = ResolveCompanyID(company);
if (company == COMPANY_INVALID) return false;
return ::Company::Get((CompanyID)company)->settings.engine_renew;
return ::Company::Get(company)->settings.engine_renew;
}
/* static */ bool ScriptCompany::SetAutoRenewMonths(int16 months)
@ -277,7 +277,7 @@
company = ResolveCompanyID(company);
if (company == COMPANY_INVALID) return 0;
return ::Company::Get((CompanyID)company)->settings.engine_renew_months;
return ::Company::Get(company)->settings.engine_renew_months;
}
/* static */ bool ScriptCompany::SetAutoRenewMoney(Money money)
@ -292,7 +292,7 @@
company = ResolveCompanyID(company);
if (company == COMPANY_INVALID) return 0;
return ::Company::Get((CompanyID)company)->settings.engine_renew_money;
return ::Company::Get(company)->settings.engine_renew_money;
}
/* static */ bool ScriptCompany::SetPrimaryLiveryColour(LiveryScheme scheme, Colours colour)

@ -394,13 +394,10 @@ void Station::GetTileArea(TileArea *ta, StationType type) const
case STATION_DOCK:
case STATION_OILRIG:
*ta = this->docking_station;
break;
return;
default: NOT_REACHED();
}
ta->w = 1;
ta->h = 1;
}
/**

Loading…
Cancel
Save