Merge branch 'master' into jgrpp

# Conflicts:
#	src/lang/czech.txt
#	src/order_backup.h
#	src/settings_internal.h
#	src/string.cpp
#	src/viewport.cpp
This commit is contained in:
Jonathan G Rennison
2023-02-04 11:37:45 +00:00
28 changed files with 115 additions and 96 deletions

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -85,18 +85,16 @@
PerformanceMeasurer framerate((PerformanceElement)(PFE_AI0 + c->index)); PerformanceMeasurer framerate((PerformanceElement)(PFE_AI0 + c->index));
cur_company.Change(c->index); cur_company.Change(c->index);
c->ai_instance->GameLoop(); 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 { } else {
PerformanceMeasurer::SetInactive((PerformanceElement)(PFE_AI0 + c->index)); PerformanceMeasurer::SetInactive((PerformanceElement)(PFE_AI0 + c->index));
} }
} }
cur_company.Restore(); 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() /* static */ uint AI::GetTick()

View File

@@ -18,7 +18,6 @@
class Blitter_40bppAnim : public Blitter_32bppOptimized { class Blitter_40bppAnim : public Blitter_32bppOptimized {
public: public:
// void *MoveTo(void *video, int x, int y) override;
void SetPixel(void *video, int x, int y, uint8 colour) 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 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; void SetRect(void *video, int x, int y, const uint8 *colours, uint lines, uint width, uint pitch) override;

View File

@@ -295,7 +295,7 @@ bool FiosFileScanner::AddFile(const std::string &filename, size_t basepath_lengt
std::string ext = filename.substr(sep); std::string ext = filename.substr(sep);
char fios_title[64]; 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)); FiosType type = this->callback_proc(this->fop, filename, ext.c_str(), fios_title, lastof(fios_title));
if (type == FIOS_TYPE_INVALID) return false; if (type == FIOS_TYPE_INVALID) return false;

View File

@@ -469,7 +469,7 @@ STR_SCENEDIT_TOOLBAR_TOWN_GENERATION :{BLACK}Generov
STR_SCENEDIT_TOOLBAR_INDUSTRY_GENERATION :{BLACK}Generování průmyslu 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_ROAD_CONSTRUCTION :{BLACK}Výstavba silniční sítě
STR_SCENEDIT_TOOLBAR_TRAM_CONSTRUCTION :{BLACK}Výstavba tramvajové tratě 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_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_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 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 :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_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_MANUAL :manuální
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :nerovnoměrný STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :nerovnoměrný
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC_EQ :nerovnoměrný (rovnoměrné rozložení) 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_ASYMMETRIC_NEAREST :nerovnoměrný (nejbližší)
STR_CONFIG_SETTING_DISTRIBUTION_SYMMETRIC :rovnoměrný 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 :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_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. 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_RAIL_BRIDGE_CAPTION :{WHITE}Zvolit železniční most
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Zvolit silnič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_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_SUSPENSION_STEEL :Zavěšený, ocelový
STR_BRIDGE_NAME_GIRDER_STEEL :Trámový, ocelový STR_BRIDGE_NAME_GIRDER_STEEL :Trámový, ocelový
STR_BRIDGE_NAME_CANTILEVER_STEEL :Konzolový, 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_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_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 :{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_BUTTON :{BLACK}Náhodné stromy
STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Umístit stromy náhodně po krajině STR_TREES_RANDOM_TREES_TOOLTIP :{BLACK}Umístit stromy náhodně po krajině
STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normální STR_TREES_MODE_NORMAL_BUTTON :{BLACK}Normální

View File

@@ -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_RAIL_BRIDGE_CAPTION :{WHITE}Selecteer type spoorbrug
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Selecteer type wegbrug 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_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_SUSPENSION_STEEL :Hangend, staal
STR_BRIDGE_NAME_GIRDER_STEEL :Ligger, staal STR_BRIDGE_NAME_GIRDER_STEEL :Ligger, staal
STR_BRIDGE_NAME_CANTILEVER_STEEL :Vrijdragend, staal STR_BRIDGE_NAME_CANTILEVER_STEEL :Vrijdragend, staal

View File

@@ -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_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 :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 :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 :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 :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 ###length 3
STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuel STR_CONFIG_SETTING_DISTRIBUTION_MANUAL :manuel
STR_CONFIG_SETTING_DISTRIBUTION_ASYMMETRIC :asymétrique 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_RAIL_BRIDGE_CAPTION :{WHITE}Choisir un pont ferroviaire
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}Choisir un pont routier 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_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_SUSPENSION_STEEL :Suspendu en acier
STR_BRIDGE_NAME_GIRDER_STEEL :À poutres en acier STR_BRIDGE_NAME_GIRDER_STEEL :À poutres en acier
STR_BRIDGE_NAME_CANTILEVER_STEEL :Porte-à-faux en acier STR_BRIDGE_NAME_CANTILEVER_STEEL :Porte-à-faux en acier

View File

@@ -204,7 +204,11 @@ STR_UNITS_POWER_IMPERIAL :{COMMA}英馬
STR_UNITS_POWER_METRIC :{COMMA}仏馬力 STR_UNITS_POWER_METRIC :{COMMA}仏馬力
STR_UNITS_POWER_SI :{COMMA}kW 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_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_POWER_SI_TO_WEIGHT_SI :{DECIMAL}{NBSP}W/kg
STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t STR_UNITS_WEIGHT_SHORT_IMPERIAL :{COMMA}t
@@ -402,6 +406,8 @@ STR_SCENEDIT_FILE_MENU_QUIT :OpenTTDを終
###length 15 ###length 15
STR_SETTINGS_MENU_GAME_OPTIONS :ゲームオプション設定 STR_SETTINGS_MENU_GAME_OPTIONS :ゲームオプション設定
STR_SETTINGS_MENU_CONFIG_SETTINGS_TREE :設定 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_NEWGRF_SETTINGS :NewGRFの設定
STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :透過表示設定 STR_SETTINGS_MENU_TRANSPARENCY_OPTIONS :透過表示設定
STR_SETTINGS_MENU_TOWN_NAMES_DISPLAYED :街名を表示 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_FRAME :{BLACK}インターフェイスのサイズ
STR_GAME_OPTIONS_GUI_SCALE_TOOLTIP :{BLACK}スライダーをドラッグでインターフェースの大きさを調整できます。Ctrl押しながらで微調整できます。
STR_GAME_OPTIONS_GUI_SCALE_AUTO :{BLACK}サイズを自動調整 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}グラフィクス 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 :購入可能な車両の一覧の詳細部分に NewGRF 名を表示する: {STRING}
STR_CONFIG_SETTING_SHOW_NEWGRF_NAME_HELPTEXT :購入可能な車両の一覧の詳細部分に由来する NewGRF を表示します 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 :地形: {STRING}
STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :地形は様々な貨物と街の成長要件に関する基礎的なゲームプレイシナリオを定義します。NewGRFとゲームスクリプトによってより効果的なコントロールが可能になります。 STR_CONFIG_SETTING_LANDSCAPE_HELPTEXT :地形は様々な貨物と街の成長要件に関する基礎的なゲームプレイシナリオを定義します。NewGRFとゲームスクリプトによってより効果的なコントロールが可能になります。
@@ -1511,6 +1523,8 @@ STR_CONFIG_SETTING_SMALLMAP_LAND_COLOUR_VIOLET :青紫
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :貨物の流れのオーバーレイに使用される配色を設定します。 STR_CONFIG_SETTING_LINKGRAPH_COLOURS_HELPTEXT :貨物の流れのオーバーレイに使用される配色を設定します。
###length 4 ###length 4
STR_CONFIG_SETTING_LINKGRAPH_COLOURS_GREEN_TO_BLUE :緑から青 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 :ビューポートのスクロール挙動: {STRING}
STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :マップのスクロール挙動 STR_CONFIG_SETTING_SCROLLMODE_HELPTEXT :マップのスクロール挙動
@@ -2059,6 +2073,7 @@ STR_INTRO_HIGHSCORE :{BLACK}ハイ
STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}設定 STR_INTRO_CONFIG_SETTINGS_TREE :{BLACK}設定
STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRFの設定 STR_INTRO_NEWGRF_SETTINGS :{BLACK}NewGRFの設定
STR_INTRO_ONLINE_CONTENT :{BLACK}オンラインコンテンツの確認 STR_INTRO_ONLINE_CONTENT :{BLACK}オンラインコンテンツの確認
STR_INTRO_AI_SETTINGS :{BLACK}AI設定
STR_INTRO_QUIT :{BLACK}終了 STR_INTRO_QUIT :{BLACK}終了
STR_INTRO_TOOLTIP_NEW_GAME :{BLACK}新規ゲームを開始します。Ctrlクリックで地形生成設定をスキップします 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}供給過多 STR_LINKGRAPH_LEGEND_OVERLOADED :{TINY_FONT}{BLACK}供給過多
# Linkgraph tooltip # Linkgraph tooltip
STR_LINKGRAPH_STATS_TOOLTIP_TIME_EXTENSION :{}平均移動時間: {NUM}{NBSP}日
# Base for station construction window(s) # Base for station construction window(s)
STR_STATION_BUILD_COVERAGE_AREA_TITLE :{BLACK}集荷範囲のハイライト 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_RAIL_BRIDGE_CAPTION :{WHITE}鉄道橋建設
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}道路橋建設 STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}道路橋建設
STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}建設したい橋の種類をクリックしてください STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}建設したい橋の種類をクリックしてください
STR_SELECT_BRIDGE_INFO_NAME :{GOLD}{STRING}
STR_BRIDGE_NAME_SUSPENSION_STEEL :吊橋(S造) STR_BRIDGE_NAME_SUSPENSION_STEEL :吊橋(S造)
STR_BRIDGE_NAME_GIRDER_STEEL :桁橋(S造) STR_BRIDGE_NAME_GIRDER_STEEL :桁橋(S造)
STR_BRIDGE_NAME_CANTILEVER_STEEL :カンチレバートラス橋(S造) STR_BRIDGE_NAME_CANTILEVER_STEEL :カンチレバートラス橋(S造)
@@ -3136,6 +3153,7 @@ STR_MAPGEN_SMOOTHNESS :{BLACK}地形
STR_MAPGEN_VARIETY :{BLACK}地形の地域性: STR_MAPGEN_VARIETY :{BLACK}地形の地域性:
STR_MAPGEN_GENERATE :{WHITE}作成 STR_MAPGEN_GENERATE :{WHITE}作成
STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}NewGRFの設定を表示 STR_MAPGEN_NEWGRF_SETTINGS_TOOLTIP :{BLACK}NewGRFの設定を表示
STR_MAPGEN_AI_SETTINGS :{BLACK}AI設定
STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}AI設定を表示 STR_MAPGEN_AI_SETTINGS_TOOLTIP :{BLACK}AI設定を表示
STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}ゲームスクリプトの設定を表示 STR_MAPGEN_GS_SETTINGS_TOOLTIP :{BLACK}ゲームスクリプトの設定を表示
@@ -3707,6 +3725,9 @@ STR_FINANCES_CAPTION :{WHITE}{COMPANY
STR_FINANCES_YEAR :{WHITE}{NUM} STR_FINANCES_YEAR :{WHITE}{NUM}
###length 3 ###length 3
STR_FINANCES_REVENUE_TITLE :{WHITE}収益
STR_FINANCES_OPERATING_EXPENSES_TITLE :{WHITE}営業費
STR_FINANCES_CAPITAL_EXPENSES_TITLE :{WHITE}資本的支出
###length 13 ###length 13
@@ -3716,10 +3737,12 @@ STR_FINANCES_SECTION_TRAIN_RUNNING_COSTS :{GOLD}列車運
STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}車両運用費 STR_FINANCES_SECTION_ROAD_VEHICLE_RUNNING_COSTS :{GOLD}車両運用費
STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}航空機運用費 STR_FINANCES_SECTION_AIRCRAFT_RUNNING_COSTS :{GOLD}航空機運用費
STR_FINANCES_SECTION_SHIP_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_LOAN_INTEREST :{GOLD}借入金利息
STR_FINANCES_SECTION_OTHER :{GOLD}その他 STR_FINANCES_SECTION_OTHER :{GOLD}その他
STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG} STR_FINANCES_NEGATIVE_INCOME :{BLACK}-{CURRENCY_LONG}
STR_FINANCES_ZERO_INCOME :{CURRENCY_LONG}
STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG} STR_FINANCES_POSITIVE_INCOME :{BLACK}+{CURRENCY_LONG}
STR_FINANCES_PROFIT :{WHITE}利益 STR_FINANCES_PROFIT :{WHITE}利益
STR_FINANCES_BANK_BALANCE_TITLE :{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_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 :{WHITE}利用できる輸送機器が全くなくなります
STR_ERROR_NO_VEHICLES_AVAILABLE_AT_ALL_EXPLANATION :{WHITE}NewGRFの設定を変更してください 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_COPY_SHARE_ORDER :{WHITE}この輸送機器は指令されたいずれの停留施設にも辿り着けません
STR_ERROR_CAN_T_ADD_ORDER :{WHITE}この輸送機器はその停留施設に辿り着けません STR_ERROR_CAN_T_ADD_ORDER :{WHITE}この輸送機器はその停留施設に辿り着けません
STR_ERROR_CAN_T_ADD_ORDER_SHARED :{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_SHARE_ORDER_LIST :{WHITE}指令リストを共有できません
STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}指令リストの共有を解除できません STR_ERROR_CAN_T_STOP_SHARING_ORDER_LIST :{WHITE}指令リストの共有を解除できません

View File

@@ -3618,6 +3618,10 @@ STR_ERROR_INVALID_SIGNAL :{WHITE}非法
STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}选择铁道桥 STR_SELECT_RAIL_BRIDGE_CAPTION :{WHITE}选择铁道桥
STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}选择公路桥梁 STR_SELECT_ROAD_BRIDGE_CAPTION :{WHITE}选择公路桥梁
STR_SELECT_BRIDGE_SELECTION_TOOLTIP :{BLACK}选择桥梁 - 点击选择喜欢的桥梁进行建设 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_SUSPENSION_STEEL :钢制悬索
STR_BRIDGE_NAME_GIRDER_STEEL :钢制桁桥 STR_BRIDGE_NAME_GIRDER_STEEL :钢制桁桥
STR_BRIDGE_NAME_CANTILEVER_STEEL :钢制悬臂 STR_BRIDGE_NAME_CANTILEVER_STEEL :钢制悬臂

View File

@@ -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_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_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_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_SUSPENSION_STEEL :Cầu treo thép
STR_BRIDGE_NAME_GIRDER_STEEL :Cầu dầm 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 STR_BRIDGE_NAME_CANTILEVER_STEEL :Cầu dầm chìa thép

View File

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

View File

@@ -125,12 +125,6 @@ public:
return m_pT == nullptr; 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 */ /** assign pointer w/o incrementing ref count */
inline void Attach(Tcls *pT) inline void Attach(Tcls *pT)
{ {

View File

@@ -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_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_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_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_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_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) 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_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_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 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' 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_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_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_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_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_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) 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)

View File

@@ -128,7 +128,7 @@ private:
public: public:
TCPConnecter() {}; 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(); virtual ~TCPConnecter();
/** /**

View File

@@ -29,7 +29,7 @@ static std::vector<TCPConnecter *> _tcp_connecters;
* @param default_port If not indicated in connection_string, what port to use. * @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. * @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), bind_address(bind_address),
family(family) family(family)
{ {

View File

@@ -197,7 +197,7 @@ protected:
uint16 max_offset; ///< what is the length of the original entity's array of specs 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 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; } virtual bool CheckValidNewID(uint16 testid) { return true; }
public: public:

View File

@@ -395,7 +395,7 @@ protected:
/* entered railway station /* entered railway station
* get platform length */ * get platform length */
uint length = BaseStation::GetByTile(m_new_tile)->GetPlatformLength(m_new_tile, TrackdirToExitdir(m_old_td)); 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; m_tiles_skipped = length - 1;
/* move to the platform end */ /* move to the platform end */
TileIndexDiff diff = TileOffsByDiagDir(m_exitdir); TileIndexDiff diff = TileOffsByDiagDir(m_exitdir);

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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