Merge branch 'master' into jgrpp

# Conflicts:
#	src/lang/czech.txt
#	src/order_backup.h
#	src/settings_internal.h
#	src/string.cpp
#	src/viewport.cpp
pull/484/head
Jonathan G Rennison 1 year ago
commit ff0e779680

@ -607,7 +607,6 @@ public:
switch(_token)
{
case TK_STRING_LITERAL: {
//SQObjectPtr id(SQString::Create(_ss(_vm), _lex._svalue,_lex._longstr.size()-1));
_fs->AddInstruction(_OP_LOAD, _fs->PushTarget(), _fs->GetConstant(_fs->CreateString(_lex._svalue,_lex._longstr.size()-1)));
Lex();
}
@ -840,7 +839,6 @@ public:
unsigned char flags = (hasattrs?NEW_SLOT_ATTRIBUTES_FLAG:0)|(isstatic?NEW_SLOT_STATIC_FLAG:0);
SQInteger table = _fs->TopTarget(); //<<BECAUSE OF THIS NO COMMON EMIT FUNC IS POSSIBLE
_fs->AddInstruction(_OP_NEWSLOTA, flags, table, key, val);
//_fs->PopTarget();
}
if(separator == ',') //hack recognizes a table from the separator
_fs->SetIntructionParam(tpos, 1, nkeys);
@ -1053,7 +1051,6 @@ public:
if(tonextcondjmp != -1)
_fs->SetIntructionParam(tonextcondjmp, 1, _fs->GetCurrentPos() - tonextcondjmp);
if(_token == TK_DEFAULT) {
// _fs->AddLineInfos(_lex._currentline, _lineinfo);
Lex(); Expect(':');
SQInteger stacksize = _fs->GetStackSize();
_last_stacksize = _fs->GetStackSize();
@ -1167,11 +1164,6 @@ public:
}
SQTable *enums = _table(_ss(_vm)->_consts);
SQObjectPtr strongid = id;
/*SQObjectPtr dummy;
if(enums->Get(strongid,dummy)) {
dummy.Null(); strongid.Null();
Error("enumeration already exists");
}*/
enums->NewSlot(SQObjectPtr(strongid),SQObjectPtr(table));
strongid.Null();
Lex();
@ -1318,7 +1310,6 @@ public:
funcstate->AddLineInfos(_lex._prevtoken == '\n'?_lex._lasttokenline:_lex._currentline, _lineinfo, true);
funcstate->AddInstruction(_OP_RETURN, -1);
funcstate->SetStackSize(0);
//_fs->->_stacksize = _fs->_stacksize;
SQFunctionProto *func = funcstate->BuildProto();
#ifdef _DEBUG_DUMP
funcstate->Dump(func);

@ -177,7 +177,6 @@ SQInteger SQLexer::Lex()
else if ( CUR_CHAR == '-' ) { NEXT(); RETURN_TOKEN(TK_NEWSLOT); }
else if ( CUR_CHAR == '<' ) { NEXT(); RETURN_TOKEN(TK_SHIFTL); }
else if ( CUR_CHAR == '/' ) { NEXT(); RETURN_TOKEN(TK_ATTR_OPEN); }
//else if ( CUR_CHAR == '[' ) { NEXT(); ReadMultilineString(); RETURN_TOKEN(TK_STRING_LITERAL); }
else { RETURN_TOKEN('<') }
case '>':
NEXT();

@ -453,7 +453,7 @@ void RefTable::Resize(SQUnsignedInteger size)
[[maybe_unused]] SQUnsignedInteger nfound = 0;
for(SQUnsignedInteger n = 0; n < oldnumofslots; n++) {
if(type(t->obj) != OT_NULL) {
//add back;
//add back
assert(t->refs != 0);
RefNode *nn = Add(::HashObj(t->obj)&(_numofslots-1),t->obj);
nn->refs = t->refs;

@ -140,7 +140,6 @@ void SQVM::Finalize()
SQVM::~SQVM()
{
Finalize();
//sq_free(_callsstack,_alloccallsstacksize*sizeof(CallInfo));
REMOVE_FROM_CHAIN(&_ss(this)->_gc_chain,this);
}
@ -712,7 +711,6 @@ bool SQVM::Execute(SQObjectPtr &closure, SQInteger target, SQInteger nargs, SQIn
return false;
}
if (_funcproto(_closure(temp_reg)->_function)->_bgenerator) {
//SQFunctionProto *f = _funcproto(_closure(temp_reg)->_function);
SQGenerator *gen = SQGenerator::Create(_ss(this), _closure(temp_reg));
_GUARD(gen->Yield(this));
Return(1, ci->_target, temp_reg);
@ -747,8 +745,10 @@ exception_restore:
if (ShouldSuspend()) { _suspended = SQTrue; _suspended_traps = traps; return true; }
const SQInstruction &_i_ = *ci->_ip++;
//dumpstack(_stackbase);
//printf("%s %d %d %d %d\n",g_InstrDesc[_i_.op].name,arg0,arg1,arg2,arg3);
#ifdef _DEBUG_DUMP
dumpstack(_stackbase);
printf("%s %d %d %d %d\n",g_InstrDesc[_i_.op].name,arg0,arg1,arg2,arg3);
#endif
switch(_i_.op)
{
case _OP_LINE:
@ -1053,7 +1053,9 @@ common_call:
exception_trap:
{
SQObjectPtr currerror = _lasterror;
// dumpstack(_stackbase);
#ifdef _DEBUG_DUMP
dumpstack(_stackbase);
#endif
SQInteger n = 0;
SQInteger last_top = _top;
if(ci) {

@ -36,7 +36,6 @@ struct SQVM : public CHAINABLE_OBJ
};
struct CallInfo{
//CallInfo() { _generator._type = OT_NULL;}
SQInstruction *_ip;
SQObjectPtr *_literals;
SQObjectPtr _closure;

@ -85,18 +85,16 @@
PerformanceMeasurer framerate((PerformanceElement)(PFE_AI0 + c->index));
cur_company.Change(c->index);
c->ai_instance->GameLoop();
/* Occasionally collect garbage; every 255 ticks do one company.
* Effectively collecting garbage once every two months per AI. */
if ((AI::frame_counter & 255) == 0 && (CompanyID)GB(AI::frame_counter, 8, 4) == c->index) {
c->ai_instance->CollectGarbage();
}
} else {
PerformanceMeasurer::SetInactive((PerformanceElement)(PFE_AI0 + c->index));
}
}
cur_company.Restore();
/* Occasionally collect garbage; every 255 ticks do one company.
* Effectively collecting garbage once every two months per AI. */
if ((AI::frame_counter & 255) == 0) {
CompanyID cid = (CompanyID)GB(AI::frame_counter, 8, 4);
if (Company::IsValidAiID(cid)) Company::Get(cid)->ai_instance->CollectGarbage();
}
}
/* static */ uint AI::GetTick()

@ -18,7 +18,6 @@
class Blitter_40bppAnim : public Blitter_32bppOptimized {
public:
// void *MoveTo(void *video, int x, int y) override;
void SetPixel(void *video, int x, int y, uint8 colour) override;
void SetPixel32(void *video, int x, int y, uint8 colour, uint32 colour32) override;
void SetRect(void *video, int x, int y, const uint8 *colours, uint lines, uint width, uint pitch) override;

@ -295,7 +295,7 @@ bool FiosFileScanner::AddFile(const std::string &filename, size_t basepath_lengt
std::string ext = filename.substr(sep);
char fios_title[64];
fios_title[0] = '\0'; // reset the title;
fios_title[0] = '\0'; // reset the title
FiosType type = this->callback_proc(this->fop, filename, ext.c_str(), fios_title, lastof(fios_title));
if (type == FIOS_TYPE_INVALID) return false;

@ -469,7 +469,7 @@ STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generov
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generování průmyslu
STR_SCENEDIT_TOOLBAR_ROAD_CONSTRUCTION :{BLACK}Výstavba silniční sítě
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Výstavba tramvajové tratě
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Vysadit stromy. Shift zobrazí odhad ceny
STR_SCENEDIT_TOOLBAR_PLANT_TREES :{BLACK}Vysadit stromy. Ctrl vybírá území úhlopříčně. Shift zobrazí odhad ceny
STR_SCENEDIT_TOOLBAR_PLACE_SIGN :{BLACK}Umístit popisek
STR_SCENEDIT_TOOLBAR_PLACE_OBJECT :{BLACK}Umisťte objekt. Pro zobrazení odhadu ceny podrž Shift. Ctrl vybírá oblast diagonálně
STR_SCENEDIT_TOOLBAR_PLACE_HOUSE :{BLACK}Umístit dům
@ -2213,20 +2213,22 @@ STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Čas vyhrazený
STR_CONFIG_SETTING_LINKGRAPH_NOT_DAYLENGTH_SCALED :Neupravovat měřítko dnů distribučního grafu podle faktoru délky dne: {STRING}
STR_CONFIG_SETTING_LINKGRAPH_NOT_DAYLENGTH_SCALED_HELPTEXT :Pokud je zapnuto, interval přepočtu distribučního grafu a čas jsou v jednotkách původních dnů, namísto kalendářních dnů naškálovaných podle délky dne.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Mód distribuce pro cestující: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství cestujících chce cestovat ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný" znamená, že libovolné množství cestujících může cestovat v jakémkoliv směru. "Manuální" znamená, že zde nebude žádná automatická distribuce pro cestující.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Mód distribuce pro poštu: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství pošty bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný" znamená, že libovolné množství pošty může být odesláno v jakémkoli směru. "Manuální" znamená, že zde nebude žádná automatická distribuce pro poštu.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Mód distribuce pro náklady pancéřových vozů: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Pancéřované vozy převážejí ceniny v mírném, diamanty v subtropickém nebo zlato v subarktickém klimatu. Nové grafiky však toho mohou změnit. "Rovnoměrný" znamená, že téměř stejné množství nákladu bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný" znamená, že libovolná množství nákladu mohou být odeslána v jakémkoliv směru. "Manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu. Je doporučeno nastavit "nerovnoměrný" nebo "manuální" při hraní v subarktickém klimatu, neboť banky neposílají do dolů žádné zlato. Pro mírné a subtropické klima můžeš nastavit "rovnoměrné", neboť banky odesílají zpět do původní banky nějaký náklad cenin.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Módy distribuce pro ostatní třídy nákladu: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Nerovnoměrný" znamená, že libovolná množství nákladu mohou být odeslána v jakémkoli směru. "manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu.
###length 5
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuální
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :nerovnoměrný
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC_EQ :nerovnoměrný (rovnoměrné rozložení)
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC_NEAREST :nerovnoměrný (nejbližší)
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :rovnoměrný
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Mód distribuce pro cestující: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství cestujících chce cestovat ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolné množství cestujících může cestovat v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro cestující.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Mód distribuce pro poštu: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství pošty bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolné množství pošty může být odesláno v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro poštu.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Mód distribuce pro náklady pancéřových vozů: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :Pancéřované vozy převážejí ceniny v mírném, diamanty v subtropickém nebo zlato v subarktickém klimatu. Nové grafiky však toho mohou změnit. "Rovnoměrný" znamená, že téměř stejné množství nákladu bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství nákladu mohou být odeslána v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu. Je doporučeno nastavit "nerovnoměrný" nebo "manuální" při hraní v subarktickém klimatu, neboť banky neposílají do dolů žádné zlato. Pro mírné a subtropické klima můžeš nastavit "rovnoměrné", neboť banky odesílají zpět do původní banky nějaký náklad cenin.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Módy distribuce pro ostatní třídy nákladu: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Rovnoměrný" znamená, že téměř stejné množství nákladu bude odesláno ze stanice A do stanice B, jako ze stanice B do A. "Nerovnoměrný znamená", že libovolná množství nákladu mohou být odeslána v jakýchkoliv směrech. "manuální" znamená, že zde nebude žádná automatická distribuce pro tyto druhy nákladu. Pravděpodobně chceš nastavit "nerovnoměrná" nebo "manuální"."
STR_CONFIG_SETTING_DISTRIBUTION_PER_CARGO :Přepsat mód distribuce pro tento náklad: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PER_CARGO_PARAM :Přepsat mód distribuce pro {STRING}: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PER_CARGO_HELPTEXT :"výchozí" znamená, že režim distribuce je výchozí pro třídu tohoto nákladu. "symetrický" znamená, že zhruba ze stejného počtu nákladu půjde ze stanice A do stanice B jako z B do A. "asymetrický" znamená, že libovolné množství nákladu lze odeslat v obou směrech. "manuální" znamená, že u tohoto nákladu nedojde k žádné automatické distribuci.
@ -3326,6 +3328,10 @@ STR_ERROR_INVALID_SIGNAL :{WHITE}Neplatn
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Zvolit železniční most
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Zvolit silniční most
STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Výběr mostů - staví se kliknutím na obrázek mostu
STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY}
STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG}
STR_BRIDGE_NAME_SUSPENSION_STEEL :Zavěšený, ocelový
STR_BRIDGE_NAME_GIRDER_STEEL :Trámový, ocelový
STR_BRIDGE_NAME_CANTILEVER_STEEL :Konzolový, ocelový
@ -3446,7 +3452,7 @@ STR_OBJECT_CLASS_TRNS :Vysílače
STR_PLANT_TREE_CAPTION :{WHITE}Stromy
STR_PLANT_TREE_TOOLTIP :{BLACK}Zvol druh stromu na vysazení. Pokud se na políčku už nějaký strom nachází, přidá se k němu několik různých druhů bez ohledu na výběr druhu
STR_TREES_RANDOM_TYPE :{BLACK}Různé stromy
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Umístit nahodné stromy. Stisknutý Shift pro zobrazení odhadu ceny
STR_TREES_RANDOM_TYPE_TOOLTIP :{BLACK}Umístit nahodné stromy. Ctrl vybírá území úhlopříčně. Stisknutý Shift pro zobrazení odhadu ceny
STR_TREES_RANDOM_TREES_BUTTON :{BLACK}Náhodné stromy
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Umístit stromy náhodně po krajině
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normální

@ -2712,6 +2712,10 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Dichthei
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Selecteer type spoorbrug
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selecteer type wegbrug
STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Brugkeuze - klik op de gewenste brug om die te bouwen
STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY}
STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG}
STR_BRIDGE_NAME_SUSPENSION_STEEL :Hangend, staal
STR_BRIDGE_NAME_GIRDER_STEEL :Ligger, staal
STR_BRIDGE_NAME_CANTILEVER_STEEL :Vrijdragend, staal

@ -1938,13 +1938,13 @@ STR_CONFIG_SETTING_LINKGRAPH_TIME :Prendre {STRING
STR_CONFIG_SETTING_LINKGRAPH_TIME_HELPTEXT :Durée maximale (en jours) du recalcul d'une composante du graphe. À chaque itération, un thread est initié, qui a une durée maximale définie par ce réglage. Plus celui-ci est court, plus la probabilité que le thread ne termine pas sa tâche à temps est élevée. Le jeu s'interrompt alors jusqu'à la fin du recalcul ("lag"). Plus le réglage est long, et moins rapidement la distribution sera réactualisée en cas de changement de routes.
STR_CONFIG_SETTING_DISTRIBUTION_PAX :Type de distribution pour les passagers{NBSP}: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"symétrique" signifie qu'autant de passagers iront d'une station A vers une station B, que de la station B vers la station A. "asymétrique" signifie qu'un nombre arbitraire de passagers peut être envoyé dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour les passagers.
STR_CONFIG_SETTING_DISTRIBUTION_PAX_HELPTEXT :"Symétrique" signifie qu'autant de passagers iront d'une station A vers une station B, que de la station B vers la station A. "Asymétrique" signifie qu'un nombre arbitraire de passagers peut être envoyé dans les deux directions. "Manuel" signifie qu'aucune distribution n'est mise en place pour les passagers.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL :Type de distribution pour le courrier{NBSP}: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"symétrique" signifie qu'autant de courrier ira d'une station A vers une station B, que de la station B vers la station A. "asymétrique" signifie qu'une quantité arbitraire de courrier peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour le courrier.
STR_CONFIG_SETTING_DISTRIBUTION_MAIL_HELPTEXT :"Symétrique" signifie qu'autant de courrier ira d'une station A vers une station B, que de la station B vers la station A. "Asymétrique" signifie qu'une quantité arbitraire de courrier peut être envoyée dans les deux directions. "Manuel" signifie qu'aucune distribution n'est mise en place pour le courrier.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED :Type de distribution pour les cargaisons de classe ARMOURED{NBSP}: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La classe de cargaison ARMOURED contient des biens de valeur dans les climats tempéré, des diamants dans le climat subtropical, et de l'or dans le climat subarctique. Les NewGRFs peuvent changer ça. "symétrique" signifie qu'autant de ces cargaisons iront d'une station A vers une station B, que de la station B vers la station A. "asymétrique" signifie qu'une quantité arbitraire de ces cargaisons peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour ces cargaisons. Il est conseillé de choisir "asymétrique" ou "manuel" dans le climat subarctique, car les banques n'enverront pas d'or en retour vers les mines d'or. Dans les climats tempéré et subtropical, on peut choisir aussi "symétrique", car les banques peuvent renvoyer en retour des biens de valeurs aux banques qui en envoient à l'origine.
STR_CONFIG_SETTING_DISTRIBUTION_ARMOURED_HELPTEXT :La classe de cargaison ARMOURED contient des biens de valeur dans les climats tempéré, des diamants dans le climat subtropical, et de l'or dans le climat subarctique. Les NewGRFs peuvent changer ça. "Symétrique" signifie qu'autant de ces cargaisons iront d'une station A vers une station B, que de la station B vers la station A. "Asymétrique" signifie qu'une quantité arbitraire de ces cargaisons peut être envoyée dans les deux directions. "Manuel" signifie qu'aucune distribution n'est mise en place pour ces cargaisons. Il est conseillé de choisir "asymétrique" ou "manuel" dans les climats subarctique ou subtropical, car les banques ne font que recevoir des marchandises dans ces climats. Dans le climat tempéré, on peut choisir aussi "symétrique", car les banques peuvent renvoyer en retour des biens de valeurs aux banques qui en envoient à l'origine.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT :Type de distribution pour les autres classes de cargaison{NBSP}: {STRING}
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"asymétrique" signifie qu'une quantité arbitraire de cargaison peut être envoyée dans les deux directions. "manuel" signifie qu'aucune distribution n'est mise en place pour la cargaison.
STR_CONFIG_SETTING_DISTRIBUTION_DEFAULT_HELPTEXT :"Asymétrique" signifie qu'une quantité arbitraire de cargaison peut être envoyée dans les deux directions. "Manuel" signifie qu'aucune distribution n'est mise en place pour la cargaison.
###length 3
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuel
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymétrique
@ -2713,6 +2713,10 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Augmente
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Choisir un pont ferroviaire
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Choisir un pont routier
STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Sélection de pont - Cliquer sur le type de pont désiré pour le construire.
STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY}
STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG}
STR_BRIDGE_NAME_SUSPENSION_STEEL :Suspendu en acier
STR_BRIDGE_NAME_GIRDER_STEEL :À poutres en acier
STR_BRIDGE_NAME_CANTILEVER_STEEL :Porte-à-faux en acier

@ -204,7 +204,11 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}英馬
STR_UNITS_POWER_METRIC :{COMMA}仏馬力
STR_UNITS_POWER_SI :{COMMA}kW
STR_UNITS_POWER_METRIC_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}hp/t
STR_UNITS_POWER_METRIC_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}hp/t
STR_UNITS_POWER_METRIC_TO_WEIGHT_SI :{DECIMAL}{NBSP}hp/Mg
STR_UNITS_POWER_SI_TO_WEIGHT_IMPERIAL :{DECIMAL}{NBSP}kW/t
STR_UNITS_POWER_SI_TO_WEIGHT_METRIC :{DECIMAL}{NBSP}kW/t
STR_UNITS_POWER_SI_TO_WEIGHT_SI :{DECIMAL}{NBSP}W/kg
STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t
@ -402,6 +406,8 @@ STR_SCENEDIT_FILE_MENU_QUIT :OpenTTDを終
###length 15
STR_SETTINGS_MENU_GAME_OPTIONS :ゲームオプション設定
STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :設定
STR_SETTINGS_MENU_AI_SETTINGS :AI設定
STR_SETTINGS_MENU_GAMESCRIPT_SETTINGS :ゲームスクリプト設定
STR_SETTINGS_MENU_NEWGRF_SETTINGS :NewGRFの設定
STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :透過表示設定
STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :街名を表示
@ -1011,9 +1017,14 @@ STR_GAME_OPTIONS_VIDEO_VSYNC_TOOLTIP :{BLACK}ここ
STR_GAME_OPTIONS_GUI_SCALE_FRAME :{BLACK}インターフェイスのサイズ
STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}スライダーをドラッグでインターフェースの大きさを調整できます。Ctrl押しながらで微調整できます。
STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}サイズを自動調整
STR_GAME_OPTIONS_GUI_SCALE_BEVELS :{BLACK}ベベルのスケール
STR_GAME_OPTIONS_GUI_SCALE_2X :2x
STR_GAME_OPTIONS_GUI_SCALE_3X :3x
STR_GAME_OPTIONS_GUI_SCALE_4X :4x
STR_GAME_OPTIONS_GRAPHICS :{BLACK}グラフィクス
@ -1424,6 +1435,7 @@ STR_CONFIG_SETTING_GRAPH_LINE_THICKNESS_HELPTEXT :グラフ画面
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME :購入可能な車両の一覧の詳細部分に NewGRF 名を表示する: {STRING}
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :購入可能な車両の一覧の詳細部分に由来する NewGRF を表示します
STR_CONFIG_SETTING_SHOW_CARGO_IN_LISTS_HELPTEXT :有効にすると車両リスト内で車両の積載可能な貨物が上に表示されます
STR_CONFIG_SETTING_LANDSCAPE :地形: {STRING}
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :地形は様々な貨物と街の成長要件に関する基礎的なゲームプレイシナリオを定義します。NewGRFとゲームスクリプトによってより効果的なコントロールが可能になります。
@ -1511,6 +1523,8 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :青紫
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :貨物の流れのオーバーレイに使用される配色を設定します。
###length 4
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :緑から青
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREY_TO_RED :灰色から赤
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREYSCALE :グレイスケール
STR_CONFIG_SETTING_SCROLLMODE :ビューポートのスクロール挙動: {STRING}
STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :マップのスクロール挙動
@ -2059,6 +2073,7 @@ STR_INTRO_HIGHSCORE :{BLACK}ハイ
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}設定
STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRFの設定
STR_INTRO_ONLINE_CONTENT :{BLACK}オンラインコンテンツの確認
STR_INTRO_AI_SETTINGS :{BLACK}AI設定
STR_INTRO_QUIT :{BLACK}終了
STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}新規ゲームを開始します。Ctrlクリックで地形生成設定をスキップします
@ -2590,6 +2605,7 @@ STR_LINKGRAPH_LEGEND_SATURATED :{TINY_FONT}{BLA
STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}供給過多
# Linkgraph tooltip
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}平均移動時間: {NUM}{NBSP}日
# Base for station construction window(s)
STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}集荷範囲のハイライト
@ -2682,6 +2698,7 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}ドラ
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}鉄道橋建設
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}道路橋建設
STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}建設したい橋の種類をクリックしてください
STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING}
STR_BRIDGE_NAME_SUSPENSION_STEEL :吊橋(S造)
STR_BRIDGE_NAME_GIRDER_STEEL :桁橋(S造)
STR_BRIDGE_NAME_CANTILEVER_STEEL :カンチレバートラス橋(S造)
@ -3136,6 +3153,7 @@ STR_MAPGEN_SMOOTHNESS :{BLACK}地形
STR_MAPGEN_VARIETY :{BLACK}地形の地域性:
STR_MAPGEN_GENERATE :{WHITE}作成
STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}NewGRFの設定を表示
STR_MAPGEN_AI_SETTINGS :{BLACK}AI設定
STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}AI設定を表示
STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}ゲームスクリプトの設定を表示
@ -3707,6 +3725,9 @@ STR_FINANCES_CAPTION :{WHITE}{COMPANY
STR_FINANCES_YEAR :{WHITE}{NUM}
###length 3
STR_FINANCES_REVENUE_TITLE :{WHITE}収益
STR_FINANCES_OPERATING_EXPENSES_TITLE :{WHITE}営業費
STR_FINANCES_CAPITAL_EXPENSES_TITLE :{WHITE}資本的支出
###length 13
@ -3716,10 +3737,12 @@ STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}列車運
STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}車両運用費
STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}航空機運用費
STR_FINANCES_SECTION_SHIP_RUNNING_COSTS :{GOLD}船舶運用費
STR_FINANCES_SECTION_SHIP_REVENUE :{GOLD}船舶
STR_FINANCES_SECTION_LOAN_INTEREST :{GOLD}借入金利息
STR_FINANCES_SECTION_OTHER :{GOLD}その他
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
STR_FINANCES_ZERO_INCOME :{CURRENCY_LONG}
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
STR_FINANCES_PROFIT :{WHITE}利益
STR_FINANCES_BANK_BALANCE_TITLE :{WHITE}預金残高
@ -5097,6 +5120,7 @@ STR_ERROR_CAN_T_CHANGE_SERVICING :{WHITE}点検
STR_ERROR_VEHICLE_IS_DESTROYED :{WHITE}輸送機器が破壊されます
STR_ERROR_CAN_T_CLONE_VEHICLE_LIST :{WHITE}... 全車両が同一ではありません
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL :{WHITE}利用できる輸送機器が全くなくなります
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}NewGRFの設定を変更してください
@ -5124,6 +5148,8 @@ STR_ERROR_CAN_T_SKIP_TO_ORDER :{WHITE}選択
STR_ERROR_CAN_T_COPY_SHARE_ORDER :{WHITE}この輸送機器は指令されたいずれの停留施設にも辿り着けません
STR_ERROR_CAN_T_ADD_ORDER :{WHITE}この輸送機器はその停留施設に辿り着けません
STR_ERROR_CAN_T_ADD_ORDER_SHARED :{WHITE}指令を共有している輸送機器がその停留施設に辿り着けません
STR_ERROR_CAN_T_COPY_ORDER_VEHICLE_LIST :{WHITE}... すべての車両の指令が同じではありません
STR_ERROR_CAN_T_SHARE_ORDER_VEHICLE_LIST :{WHITE}... すべての車両の指令が共有されていません
STR_ERROR_CAN_T_SHARE_ORDER_LIST :{WHITE}指令リストを共有できません
STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}指令リストの共有を解除できません

@ -3618,6 +3618,10 @@ STR_ERROR_INVALID_SIGNAL :{WHITE}非法
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}选择铁道桥
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}选择公路桥梁
STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}选择桥梁 - 点击选择喜欢的桥梁进行建设
STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY}
STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG}
STR_BRIDGE_NAME_SUSPENSION_STEEL :钢制悬索
STR_BRIDGE_NAME_GIRDER_STEEL :钢制桁桥
STR_BRIDGE_NAME_CANTILEVER_STEEL :钢制悬臂

@ -2712,6 +2712,10 @@ STR_BUILD_SIGNAL_DRAG_SIGNALS_DENSITY_INCREASE_TOOLTIP :{BLACK}Tăng m
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}Chọn Loại Cầu Tàu Hỏa
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Chọn Loại Cầu Đường Bộ
STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}Chọn cầu - chọn loại cầu bạn muốn xây dựng
STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED :{GOLD}{STRING},{} {VELOCITY}
STR_SELECT_BRIDGE_INFO_NAME_COST :{GOLD}{0:STRING},{} {WHITE}{2:CURRENCY_LONG}
STR_SELECT_BRIDGE_INFO_NAME_MAX_SPEED_COST :{GOLD}{STRING},{} {VELOCITY} {WHITE}{CURRENCY_LONG}
STR_BRIDGE_NAME_SUSPENSION_STEEL :Cầu treo thép
STR_BRIDGE_NAME_GIRDER_STEEL :Cầu dầm thép
STR_BRIDGE_NAME_CANTILEVER_STEEL :Cầu dầm chìa thép

@ -14,7 +14,7 @@ typedef uint16 LinkGraphID;
static const LinkGraphID INVALID_LINK_GRAPH = UINT16_MAX;
typedef uint16 LinkGraphJobID;
static const LinkGraphID INVALID_LINK_GRAPH_JOB = UINT16_MAX;
static const LinkGraphJobID INVALID_LINK_GRAPH_JOB = UINT16_MAX;
typedef uint16 NodeID;
static const NodeID INVALID_NODE = UINT16_MAX;

@ -125,12 +125,6 @@ public:
return m_pT == nullptr;
}
/** another way how to test for nullptr value */
//inline bool operator == (const CCountedPtr &sp) const {return m_pT == sp.m_pT;}
/** yet another way how to test for nullptr value */
//inline bool operator != (const CCountedPtr &sp) const {return m_pT != sp.m_pT;}
/** assign pointer w/o incrementing ref count */
inline void Attach(Tcls *pT)
{

@ -24,7 +24,6 @@ static const uint16 NETWORK_COORDINATOR_SERVER_PORT = 3976; ///< The d
static const uint16 NETWORK_STUN_SERVER_PORT = 3975; ///< The default port of the STUN server (TCP)
static const uint16 NETWORK_TURN_SERVER_PORT = 3974; ///< The default port of the TURN server (TCP)
static const uint16 NETWORK_CONTENT_SERVER_PORT = 3978; ///< The default port of the content server (TCP)
static const uint16 NETWORK_CONTENT_MIRROR_PORT = 80; ///< The default port of the content mirror (TCP)
static const uint16 NETWORK_DEFAULT_PORT = 3979; ///< The default port of the game server (TCP & UDP)
static const uint16 NETWORK_ADMIN_PORT = 3977; ///< The default port for admin network
static const uint16 NETWORK_DEFAULT_DEBUGLOG_PORT = 3982; ///< The default port debug-log is sent to (TCP)
@ -50,7 +49,6 @@ static const uint16 COMPAT_MTU = 1460; ///< Numbe
static const byte NETWORK_GAME_ADMIN_VERSION = 1; ///< What version of the admin network do we use?
static const byte NETWORK_GAME_INFO_VERSION = 6; ///< What version of game-info do we use?
static const byte NETWORK_COMPANY_INFO_VERSION = 6; ///< What version of company info is this?
static const byte NETWORK_COORDINATOR_VERSION = 6; ///< What version of game-coordinator-protocol do we use?
static const uint NETWORK_NAME_LENGTH = 80; ///< The maximum length of the server name and map name, in bytes including '\0'
@ -61,7 +59,6 @@ static const uint NETWORK_SERVER_ID_LENGTH = 33; ///< The m
static const uint NETWORK_REVISION_LENGTH = 33; ///< The maximum length of the revision, in bytes including '\0'
static const uint NETWORK_LONG_REVISION_LENGTH = 64; ///< The maximum length of the revision, in bytes including '\0'
static const uint NETWORK_PASSWORD_LENGTH = 33; ///< The maximum length of the password, in bytes including '\0' (must be >= NETWORK_SERVER_ID_LENGTH)
static const uint NETWORK_CLIENTS_LENGTH = 200; ///< The maximum length for the list of clients that controls a company, in bytes including '\0'
static const uint NETWORK_CLIENT_NAME_LENGTH = 25; ///< The maximum length of a client's name, in bytes including '\0'
static const uint NETWORK_RCONCOMMAND_LENGTH = 500; ///< The maximum length of a rconsole command, in bytes including '\0'
static const uint NETWORK_GAMESCRIPT_JSON_LENGTH = COMPAT_MTU - 3; ///< The maximum length of a gamescript json string, in bytes including '\0'. Must not be longer than COMPAT_MTU including header (3 bytes)

@ -128,7 +128,7 @@ private:
public:
TCPConnecter() {};
TCPConnecter(const std::string &connection_string, uint16 default_port, NetworkAddress bind_address = {}, int family = AF_UNSPEC);
TCPConnecter(const std::string &connection_string, uint16 default_port, const NetworkAddress &bind_address = {}, int family = AF_UNSPEC);
virtual ~TCPConnecter();
/**

@ -29,7 +29,7 @@ static std::vector<TCPConnecter *> _tcp_connecters;
* @param default_port If not indicated in connection_string, what port to use.
* @param bind_address The local bind address to use. Defaults to letting the OS find one.
*/
TCPConnecter::TCPConnecter(const std::string &connection_string, uint16 default_port, NetworkAddress bind_address, int family) :
TCPConnecter::TCPConnecter(const std::string &connection_string, uint16 default_port, const NetworkAddress &bind_address, int family) :
bind_address(bind_address),
family(family)
{

@ -197,7 +197,7 @@ protected:
uint16 max_offset; ///< what is the length of the original entity's array of specs
uint16 max_entities; ///< what is the amount of entities, old and new summed
uint16 invalid_id; ///< ID used to detected invalid entities;
uint16 invalid_id; ///< ID used to detected invalid entities
virtual bool CheckValidNewID(uint16 testid) { return true; }
public:

@ -395,7 +395,7 @@ protected:
/* entered railway station
* get platform length */
uint length = BaseStation::GetByTile(m_new_tile)->GetPlatformLength(m_new_tile, TrackdirToExitdir(m_old_td));
/* how big step we must do to get to the last platform tile; */
/* how big step we must do to get to the last platform tile? */
m_tiles_skipped = length - 1;
/* move to the platform end */
TileIndexDiff diff = TileOffsByDiagDir(m_exitdir);

@ -23,8 +23,6 @@
#include "../../tile_type.h"
#include "../../track_type.h"
//#define AYSTAR_DEBUG
/** Return status of #AyStar methods. */
enum AystarStatus {
AYSTAR_FOUND_END_NODE, ///< An end node was found.

@ -295,7 +295,6 @@ static Vehicle *CountShipProc(Vehicle *v, void *data)
static int32 NPFWaterPathCost(AyStar *as, AyStarNode *current, OpenListNode *parent)
{
/* TileIndex tile = current->tile; */
int32 cost = 0;
Trackdir trackdir = current->direction;
@ -1113,7 +1112,6 @@ void InitializeNPF()
}
_npf_aystar.loops_per_tick = 0;
_npf_aystar.max_path_cost = 0;
//_npf_aystar.max_search_nodes = 0;
/* We will limit the number of nodes for now, until we have a better
* solution to really fix performance */
_npf_aystar.max_search_nodes = _settings_game.pf.npf.npf_max_search_nodes;

@ -110,7 +110,7 @@ struct SettingsXref {
/** Properties of config file settings. */
struct SettingDesc {
struct XrefContructorTag {};
SettingDesc(SaveLoad save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name) :
SettingDesc(const SaveLoad &save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name) :
name(name), flags(flags), guiproc(guiproc), startup(startup), save(save), patx_name(patx_name) {}
SettingDesc(XrefContructorTag tag, SaveLoad save, SettingsXref xref) :
name(nullptr), flags(SF_NONE), guiproc(nullptr), startup(false), save(save), patx_name(nullptr), xref(xref) {}
@ -187,7 +187,7 @@ struct IntSettingDesc : SettingDesc {
*/
typedef void PostChangeCallback(int32 value);
IntSettingDesc(SaveLoad save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name, int32 def,
IntSettingDesc(const SaveLoad &save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name, int32 def,
int32 min, uint32 max, int32 interval, StringID str, StringID str_help, StringID str_val,
SettingCategory cat, PreChangeCheck pre_check, PostChangeCallback post_callback, const SettingDescEnumEntry *enumlist) :
SettingDesc(save, name, flags, guiproc, startup, patx_name), def(def), min(min), max(max), interval(interval),
@ -231,7 +231,7 @@ private:
/** Boolean setting. */
struct BoolSettingDesc : IntSettingDesc {
BoolSettingDesc(SaveLoad save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name, bool def,
BoolSettingDesc(const SaveLoad &save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name, bool def,
StringID str, StringID str_help, StringID str_val, SettingCategory cat,
PreChangeCheck pre_check, PostChangeCallback post_callback) :
IntSettingDesc(save, name, flags, guiproc, startup, patx_name, def, 0, 1, 0, str, str_help, str_val, cat, pre_check, post_callback, nullptr) {}
@ -246,7 +246,7 @@ struct BoolSettingDesc : IntSettingDesc {
struct OneOfManySettingDesc : IntSettingDesc {
typedef size_t OnConvert(const char *value); ///< callback prototype for conversion error
OneOfManySettingDesc(SaveLoad save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name,
OneOfManySettingDesc(const SaveLoad &save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name,
int32 def, int32 max, StringID str, StringID str_help, StringID str_val, SettingCategory cat,
PreChangeCheck pre_check, PostChangeCallback post_callback,
std::initializer_list<const char *> many, OnConvert *many_cnvt) :
@ -269,7 +269,7 @@ struct OneOfManySettingDesc : IntSettingDesc {
/** Many of many setting. */
struct ManyOfManySettingDesc : OneOfManySettingDesc {
ManyOfManySettingDesc(SaveLoad save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name,
ManyOfManySettingDesc(const SaveLoad &save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name,
int32 def, StringID str, StringID str_help, StringID str_val, SettingCategory cat,
PreChangeCheck pre_check, PostChangeCallback post_callback,
std::initializer_list<const char *> many, OnConvert *many_cnvt) :
@ -298,7 +298,7 @@ struct StringSettingDesc : SettingDesc {
*/
typedef void PostChangeCallback(const std::string &value);
StringSettingDesc(SaveLoad save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name, const char *def,
StringSettingDesc(const SaveLoad &save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name, const char *def,
uint32 max_length, PreChangeCheck pre_check, PostChangeCallback post_callback) :
SettingDesc(save, name, flags, guiproc, startup, patx_name), def(def == nullptr ? "" : def), max_length(max_length),
pre_check(pre_check), post_callback(post_callback) {}
@ -324,7 +324,7 @@ private:
/** List/array settings. */
struct ListSettingDesc : SettingDesc {
ListSettingDesc(SaveLoad save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name, const char *def) :
ListSettingDesc(const SaveLoad &save, const char *name, SettingFlag flags, OnGuiCtrl *guiproc, bool startup, const char *patx_name, const char *def) :
SettingDesc(save, name, flags, guiproc, startup, patx_name), def(def) {}
virtual ~ListSettingDesc() {}
@ -337,7 +337,7 @@ struct ListSettingDesc : SettingDesc {
/** Placeholder for settings that have been removed, but might still linger in the savegame. */
struct NullSettingDesc : SettingDesc {
NullSettingDesc(SaveLoad save) :
NullSettingDesc(const SaveLoad &save) :
SettingDesc(save, "", SF_NOT_IN_CONFIG, nullptr, false, nullptr) {}
virtual ~NullSettingDesc() {}
@ -348,7 +348,7 @@ struct NullSettingDesc : SettingDesc {
/** Setting cross-reference type. */
struct XrefSettingDesc : SettingDesc {
XrefSettingDesc(SaveLoad save, SettingsXref xref) :
XrefSettingDesc(const SaveLoad &save, SettingsXref xref) :
SettingDesc(SettingDesc::XrefContructorTag(), save, xref) {}
virtual ~XrefSettingDesc() {}

@ -727,7 +727,6 @@ size_t Utf8Decode(WChar *c, const char *s)
}
}
/* DEBUG(misc, 1, "[utf8] invalid UTF-8 sequence"); */
*c = '?';
return 1;
}
@ -763,7 +762,6 @@ inline size_t Utf8Encode(T buf, WChar c)
return 4;
}
/* DEBUG(misc, 1, "[utf8] can't UTF-8 encode value 0x%X", c); */
*buf = '?';
return 1;
}

@ -40,8 +40,8 @@ DECLARE_ENUM_AS_BIT_SET(VehicleEnterTileStatus)
/** Tile information, used while rendering the tile */
struct TileInfo {
uint x; ///< X position of the tile in unit coordinates
uint y; ///< Y position of the tile in unit coordinates
int x; ///< X position of the tile in unit coordinates
int y; ///< Y position of the tile in unit coordinates
Slope tileh; ///< Slope of the tile
TileIndex tile; ///< Tile index
int z; ///< Height

@ -48,16 +48,16 @@ private:
GLuint remap_program; ///< Shader program for blending and rendering a RGBA + remap texture.
GLint remap_sprite_loc; ///< Uniform location for sprite parameters.
GLint remap_screen_loc; ///< Uniform location for screen size;
GLint remap_zoom_loc; ///< Uniform location for sprite zoom;
GLint remap_rgb_loc; ///< Uniform location for RGB mode flag;
GLint remap_screen_loc; ///< Uniform location for screen size.
GLint remap_zoom_loc; ///< Uniform location for sprite zoom.
GLint remap_rgb_loc; ///< Uniform location for RGB mode flag.
GLuint sprite_program; ///< Shader program for blending and rendering a sprite to the video buffer.
GLint sprite_sprite_loc; ///< Uniform location for sprite parameters.
GLint sprite_screen_loc; ///< Uniform location for screen size;
GLint sprite_zoom_loc; ///< Uniform location for sprite zoom;
GLint sprite_rgb_loc; ///< Uniform location for RGB mode flag;
GLint sprite_crash_loc; ///< Uniform location for crash remap mode flag;
GLint sprite_screen_loc; ///< Uniform location for screen size.
GLint sprite_zoom_loc; ///< Uniform location for sprite zoom.
GLint sprite_rgb_loc; ///< Uniform location for RGB mode flag.
GLint sprite_crash_loc; ///< Uniform location for crash remap mode flag.
LRUCache<SpriteID, Sprite> cursor_cache; ///< Cache of encoded cursor sprites.
PaletteID last_sprite_pal = (PaletteID)-1; ///< Last uploaded remap palette.

@ -375,7 +375,7 @@ std::vector<DrawnPathRouteTileLine> _vp_route_paths_last_mark_dirty;
static void MarkRoutePathsDirty(const std::vector<DrawnPathRouteTileLine> &lines);
TileHighlightData _thd;
static TileInfo *_cur_ti;
static TileInfo _cur_ti;
bool _draw_bounding_boxes = false;
bool _draw_dirty_blocks = false;
std::atomic<uint> _dirty_block_colour;
@ -978,7 +978,7 @@ void DrawGroundSpriteAt(SpriteID image, PaletteID pal, int32 x, int32 y, int z,
Point pt = RemapCoords(x, y, z);
AddChildSpriteToFoundation(image, pal, sub, _vd.foundation_part, pt.x + extra_offs_x * ZOOM_LVL_BASE, pt.y + extra_offs_y * ZOOM_LVL_BASE);
} else {
AddTileSpriteToDraw(image, pal, _cur_ti->x + x, _cur_ti->y + y, _cur_ti->z + z, sub, extra_offs_x * ZOOM_LVL_BASE, extra_offs_y * ZOOM_LVL_BASE);
AddTileSpriteToDraw(image, pal, _cur_ti.x + x, _cur_ti.y + y, _cur_ti.z + z, sub, extra_offs_x * ZOOM_LVL_BASE, extra_offs_y * ZOOM_LVL_BASE);
}
}
@ -1684,26 +1684,24 @@ static void ViewportAddLandscape()
dbg_assert(row == tilecoord.y + tilecoord.x);
TileType tile_type;
TileInfo tile_info;
_cur_ti = &tile_info;
tile_info.x = tilecoord.x * TILE_SIZE; // FIXME tile_info should use signed integers
tile_info.y = tilecoord.y * TILE_SIZE;
_cur_ti.x = tilecoord.x * TILE_SIZE;
_cur_ti.y = tilecoord.y * TILE_SIZE;
if (IsInsideBS(tilecoord.x, 0, MapSizeX()) && IsInsideBS(tilecoord.y, 0, MapSizeY())) {
/* This includes the south border at MapMaxX / MapMaxY. When terraforming we still draw tile selections there. */
tile_info.tile = TileXY(tilecoord.x, tilecoord.y);
tile_type = GetTileType(tile_info.tile);
_cur_ti.tile = TileXY(tilecoord.x, tilecoord.y);
tile_type = GetTileType(_cur_ti.tile);
} else {
tile_info.tile = INVALID_TILE;
_cur_ti.tile = INVALID_TILE;
tile_type = MP_VOID;
}
if (tile_type != MP_VOID) {
/* We are inside the map => paint landscape. */
tile_info.tileh = GetTilePixelSlope(tile_info.tile, &tile_info.z);
_cur_ti.tileh = GetTilePixelSlope(_cur_ti.tile, &_cur_ti.z);
} else {
/* We are outside the map => paint black. */
tile_info.tileh = GetTilePixelSlopeOutsideMap(tilecoord.x, tilecoord.y, &tile_info.z);
_cur_ti.tileh = GetTilePixelSlopeOutsideMap(tilecoord.x, tilecoord.y, &_cur_ti.z);
}
int viewport_y = GetViewportY(tilecoord);
@ -1722,10 +1720,10 @@ static void ViewportAddLandscape()
/* Is tile with buildings visible? */
if (min_visible_height < MAX_TILE_EXTENT_TOP) tile_visible = true;
if (IsBridgeAbove(tile_info.tile)) {
if (IsBridgeAbove(_cur_ti.tile)) {
/* Is the bridge visible? */
TileIndex bridge_tile = GetNorthernBridgeEnd(tile_info.tile);
int bridge_height = ZOOM_LVL_BASE * (GetBridgePixelHeight(bridge_tile) - TilePixelHeight(tile_info.tile));
TileIndex bridge_tile = GetNorthernBridgeEnd(_cur_ti.tile);
int bridge_height = ZOOM_LVL_BASE * (GetBridgePixelHeight(bridge_tile) - TilePixelHeight(_cur_ti.tile));
if (min_visible_height < bridge_height + MAX_TILE_EXTENT_TOP) tile_visible = true;
}
@ -1747,10 +1745,10 @@ static void ViewportAddLandscape()
_vd.last_foundation_child[1] = nullptr;
bool no_ground_tiles = min_visible_height > 0;
_tile_type_procs[tile_type]->draw_tile_proc(&tile_info, { min_visible_height, no_ground_tiles });
if (tile_info.tile != INVALID_TILE && min_visible_height <= 0) {
DrawTileSelection(&tile_info);
DrawTileZoning(&tile_info);
_tile_type_procs[tile_type]->draw_tile_proc(&_cur_ti, { min_visible_height, no_ground_tiles });
if (_cur_ti.tile != INVALID_TILE && min_visible_height <= 0) {
DrawTileSelection(&_cur_ti);
DrawTileZoning(&_cur_ti);
}
}
}

Loading…
Cancel
Save