From 053d4f3bff97014bbf68b499302e93c6a9aea8b8 Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Thu, 18 Jun 2020 17:23:50 +0100 Subject: [PATCH 1/7] Fix: Thread unsafe use of SendPacket for PACKET_SERVER_MAP_SIZE NetworkTCPSocketHandler::SendPacket is not thread safe and may not be used concurrently from multiple threads without suitable locking --- src/network/network_server.cpp | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 36a15d3ae3..c82c51cfd4 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -153,6 +153,16 @@ struct PacketWriter : SaveFilter { this->current = nullptr; } + /** Prepend the current packet to the queue. */ + void PrependQueue() + { + if (this->current == nullptr) return; + + this->current->next = this->packets; + this->packets = this->current; + this->current = nullptr; + } + void Write(byte *buf, size_t size) override { /* We want to abort the saving when the socket is closed. */ @@ -193,9 +203,9 @@ struct PacketWriter : SaveFilter { this->AppendQueue(); /* Fast-track the size to the client. */ - Packet *p = new Packet(PACKET_SERVER_MAP_SIZE); - p->Send_uint32((uint32)this->total_size); - this->cs->NetworkTCPSocketHandler::SendPacket(p); + this->current = new Packet(PACKET_SERVER_MAP_SIZE); + this->current->Send_uint32((uint32)this->total_size); + this->PrependQueue(); } }; From c7e391da93e85ded007493711951e2263cfe39d6 Mon Sep 17 00:00:00 2001 From: TrevorShelton <54145769+TrevorShelton@users.noreply.github.com> Date: Sun, 28 Jun 2020 01:55:57 -0700 Subject: [PATCH 2/7] Change #8162: Conversion of Town Road, Impr. Error This changes the error when you attempt to convert a road owned by a town to another road, specifying that it's owned by the town rather than simply being incompatible. As the original poster of the issue pointed out, these seemed to be the only occurences of the incompatible road string, so now it's unused, but they would be left untouched in case of future use or since changing it to a different error would do the work of removing it then. If requested, it likely wouldn't be too difficult to remove the string entirely. --- src/road_cmd.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/road_cmd.cpp b/src/road_cmd.cpp index 29d7f69bd7..b8aee88d60 100644 --- a/src/road_cmd.cpp +++ b/src/road_cmd.cpp @@ -2399,7 +2399,8 @@ CommandCost CmdConvertRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 } if (rtt == RTT_ROAD && owner == OWNER_TOWN) { - error.MakeError(STR_ERROR_INCOMPATIBLE_ROAD); + error.MakeError(STR_ERROR_OWNED_BY); + GetNameOfOwner(OWNER_TOWN, tile); continue; } } @@ -2445,7 +2446,8 @@ CommandCost CmdConvertRoad(TileIndex tile, DoCommandFlag flags, uint32 p1, uint3 } if (rtt == RTT_ROAD && owner == OWNER_TOWN) { - error.MakeError(STR_ERROR_INCOMPATIBLE_ROAD); + error.MakeError(STR_ERROR_OWNED_BY); + GetNameOfOwner(OWNER_TOWN, tile); continue; } } From c39d62c245f51a67b6c212453777378d18bb9059 Mon Sep 17 00:00:00 2001 From: TrevorShelton <54145769+TrevorShelton@users.noreply.github.com> Date: Sun, 28 Jun 2020 03:02:36 -0700 Subject: [PATCH 3/7] Update: Disuse of STR_ERROR_INCOMPATIBLE_ROAD --- src/lang/afrikaans.txt | 1 - src/lang/basque.txt | 1 - src/lang/catalan.txt | 1 - src/lang/croatian.txt | 1 - src/lang/czech.txt | 1 - src/lang/danish.txt | 1 - src/lang/dutch.txt | 1 - src/lang/english.txt | 1 - src/lang/english_US.txt | 1 - src/lang/estonian.txt | 1 - src/lang/finnish.txt | 1 - src/lang/french.txt | 1 - src/lang/galician.txt | 1 - src/lang/hungarian.txt | 1 - src/lang/italian.txt | 1 - src/lang/korean.txt | 1 - src/lang/latvian.txt | 1 - src/lang/luxembourgish.txt | 1 - src/lang/norwegian_bokmal.txt | 1 - src/lang/polish.txt | 1 - src/lang/portuguese.txt | 1 - src/lang/russian.txt | 1 - src/lang/simplified_chinese.txt | 1 - src/lang/spanish.txt | 1 - src/lang/spanish_MX.txt | 1 - src/lang/swedish.txt | 1 - src/lang/ukrainian.txt | 1 - src/lang/vietnamese.txt | 1 - src/script/api/ai/ai_road.hpp.sq | 1 - src/script/api/game/game_road.hpp.sq | 1 - src/script/api/script_road.hpp | 2 +- 31 files changed, 1 insertion(+), 31 deletions(-) diff --git a/src/lang/afrikaans.txt b/src/lang/afrikaans.txt index 4fbca76b54..76648bbcec 100644 --- a/src/lang/afrikaans.txt +++ b/src/lang/afrikaans.txt @@ -4451,7 +4451,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}kan nie STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Kan nie tremtipe hier omskakel nie ... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Geen geskikte pad STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Geen geskikte tremweg nie -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... onverenigbare pad STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... onversoenbare tremweg # Waterway construction errors diff --git a/src/lang/basque.txt b/src/lang/basque.txt index f1d50f7839..ec593bd55b 100644 --- a/src/lang/basque.txt +++ b/src/lang/basque.txt @@ -4174,7 +4174,6 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Ezin da STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Ezin da hemen tranbiarik ezabatu... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... ez dago biderik STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... ez dago tranbia biderik -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... errepidea ez da bateragarria # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Ezin dira hemen urbideak eraiki... diff --git a/src/lang/catalan.txt b/src/lang/catalan.txt index 0f30221559..78a431ee39 100644 --- a/src/lang/catalan.txt +++ b/src/lang/catalan.txt @@ -4434,7 +4434,6 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Aquí no STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}No puc treure la via de tramvia d'aquí... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... no hi ha carretera STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... no hi ha via de tramvia -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... la carretera és incompatible. STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... El tipus de tramvia és incompatible. # Waterway construction errors diff --git a/src/lang/croatian.txt b/src/lang/croatian.txt index 0bf3fab71a..3592916ad6 100644 --- a/src/lang/croatian.txt +++ b/src/lang/croatian.txt @@ -4582,7 +4582,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Ovdje ni STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Ovdje nije moguće pretvoriti tramvajsku prugu... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Nema prikladne ceste STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Nema prikladne tramvajske pruge -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... nekompatibilna cesta STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... nekompatibilna tramvajska pruga # Waterway construction errors diff --git a/src/lang/czech.txt b/src/lang/czech.txt index 556245a529..e885a93f66 100644 --- a/src/lang/czech.txt +++ b/src/lang/czech.txt @@ -4579,7 +4579,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Zde nelz STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Zde nelze změnit druh tramvajové tratě... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Neexistuje vhodná silnice STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Neexistuje vhodná tramvajová trať -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... nevhodný druh silnice STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... nevhodný typ tramvajové tratě # Waterway construction errors diff --git a/src/lang/danish.txt b/src/lang/danish.txt index f240ff3a7f..895e6620a3 100644 --- a/src/lang/danish.txt +++ b/src/lang/danish.txt @@ -4486,7 +4486,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Kan ikke STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Kan ikke konvertere sporvejstype her... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Ingen passende vej STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Ingen egnet sporvej -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... inkompatibel vej STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... inkompatibel sporvej # Waterway construction errors diff --git a/src/lang/dutch.txt b/src/lang/dutch.txt index 5fa1fb4628..c2ddba6fd3 100644 --- a/src/lang/dutch.txt +++ b/src/lang/dutch.txt @@ -4486,7 +4486,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Kan wegt STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Kan tramtype hier niet converteren... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Geen geschikte weg STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Geen geschikt tramspoor -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... weg niet geschikt STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... treinspoor niet geschikt # Waterway construction errors diff --git a/src/lang/english.txt b/src/lang/english.txt index e478dc6e1c..a0b146c9bf 100644 --- a/src/lang/english.txt +++ b/src/lang/english.txt @@ -4486,7 +4486,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Can't co STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Can't convert tram type here... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}No suitable road STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}No suitable tramway -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... incompatible road STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... incompatible tramway # Waterway construction errors diff --git a/src/lang/english_US.txt b/src/lang/english_US.txt index d35b02b246..e770b4bf3b 100644 --- a/src/lang/english_US.txt +++ b/src/lang/english_US.txt @@ -4473,7 +4473,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Can't co STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Can't convert streetcar type here... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}No suitable road STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}No suitable streetcar line -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... incompatible road STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... incompatible streetcar line # Waterway construction errors diff --git a/src/lang/estonian.txt b/src/lang/estonian.txt index d96fd0fc0c..5f9b3e4455 100644 --- a/src/lang/estonian.txt +++ b/src/lang/estonian.txt @@ -4399,7 +4399,6 @@ STR_ERROR_CAN_T_REMOVE_ROAD_FROM :{WHITE}Siinset STR_ERROR_CAN_T_REMOVE_TRAMWAY_FROM :{WHITE}Siinset trammiteed ei saa lammutada... STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... siin pole autoteed STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... siin pole trammiteed -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... sobimatu tee # Waterway construction errors STR_ERROR_CAN_T_BUILD_CANALS :{WHITE}Siia ei saa kanaleid ehitada... diff --git a/src/lang/finnish.txt b/src/lang/finnish.txt index 52cabab66a..4780b8c9aa 100644 --- a/src/lang/finnish.txt +++ b/src/lang/finnish.txt @@ -4483,7 +4483,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Tien tyy STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Raitiotien tyyppiä ei voi muuntaa tässä... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Ei sopivaa tietä STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Ei sopivaa raitiotietä -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... yhteensopimaton tie STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... yhteensopimaton raitiotie # Waterway construction errors diff --git a/src/lang/french.txt b/src/lang/french.txt index 811fdeac8c..5ba67d4afb 100644 --- a/src/lang/french.txt +++ b/src/lang/french.txt @@ -4486,7 +4486,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Impossib STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Impossible de convertir le type de voie de tramway... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Aucune route convenable STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Aucune voie de tramway convenable -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... route incompatible STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... voie de tramway incompatible # Waterway construction errors diff --git a/src/lang/galician.txt b/src/lang/galician.txt index 9f1b0cf3d4..9185638ee4 100644 --- a/src/lang/galician.txt +++ b/src/lang/galician.txt @@ -4466,7 +4466,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Non se p STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Non se pode converter o tipo de tranvía aquí... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Estrada inválida STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Vía de tranvía inadecuada -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... estrada incompatíbel STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... tranvía incompatible # Waterway construction errors diff --git a/src/lang/hungarian.txt b/src/lang/hungarian.txt index 89f79ff21a..8a98f311e3 100644 --- a/src/lang/hungarian.txt +++ b/src/lang/hungarian.txt @@ -4549,7 +4549,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Nem lehe STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Nem lehet itt a villamospálya típusát átalakítani... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Nincs megfelelő út STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Nincs megfelelő villamospálya -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... nem kompatibilis az út STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... nem kompatibilis a villamospálya # Waterway construction errors diff --git a/src/lang/italian.txt b/src/lang/italian.txt index 2556c68304..ff593ff229 100644 --- a/src/lang/italian.txt +++ b/src/lang/italian.txt @@ -4515,7 +4515,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Impossib STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Impossibile convertire il tipo di tram qui... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Nessuna strada adatta STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Nessuna tranvia adatta -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... strada non compatibile STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... tranvia non compatibile # Waterway construction errors diff --git a/src/lang/korean.txt b/src/lang/korean.txt index 9823599b33..356193a01d 100644 --- a/src/lang/korean.txt +++ b/src/lang/korean.txt @@ -4487,7 +4487,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}이곳 STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}이곳의 전찻길을 바꿀 수 없습니다... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}적합한 도로가 없습니다 STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}적합한 전찻길이 없습니다 -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... 적합하지 않은 도로입니다 STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... 적합하지 않은 전찻길입니다 # Waterway construction errors diff --git a/src/lang/latvian.txt b/src/lang/latvian.txt index 821f065efe..66f2b1f547 100644 --- a/src/lang/latvian.txt +++ b/src/lang/latvian.txt @@ -4497,7 +4497,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Šeit ne STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Šeit nevar pārveidot tramvaja veidu... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Nav piemērota ceļa STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Nav piemērotu tramvaju -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... nesavietojams ceļš STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... nesavietojami tramvaji # Waterway construction errors diff --git a/src/lang/luxembourgish.txt b/src/lang/luxembourgish.txt index 0d23f442eb..81878c248f 100644 --- a/src/lang/luxembourgish.txt +++ b/src/lang/luxembourgish.txt @@ -4485,7 +4485,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Kann den STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Kann den Tramwaytyp hei net konvertéiren... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Keng geeegent Strooss STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Kee passenden Tramway -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... inkompatibel Strooss STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... inkompatiblen Tramway # Waterway construction errors diff --git a/src/lang/norwegian_bokmal.txt b/src/lang/norwegian_bokmal.txt index 27f6bb6264..8eac74055c 100644 --- a/src/lang/norwegian_bokmal.txt +++ b/src/lang/norwegian_bokmal.txt @@ -4461,7 +4461,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Kan ikke STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Kan ikke konvertere trikketype her... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Ingen passende vei STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Ingen passende trikkespor -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... inkompatibel vei STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... ingen passende trikkespor # Waterway construction errors diff --git a/src/lang/polish.txt b/src/lang/polish.txt index 257648067c..5c58ac7a7d 100644 --- a/src/lang/polish.txt +++ b/src/lang/polish.txt @@ -4872,7 +4872,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Nie moż STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Nie można zmienić typu torów tramwajowych w tym miejscu... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Brak właściwej drogi STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Brak właściwej linii tramwajowej -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... niekompatybilna droga STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... niekompatybilne tory tramwajowe # Waterway construction errors diff --git a/src/lang/portuguese.txt b/src/lang/portuguese.txt index d6666eaca2..ace5bb4c60 100644 --- a/src/lang/portuguese.txt +++ b/src/lang/portuguese.txt @@ -4449,7 +4449,6 @@ STR_ERROR_THERE_IS_NO_ROAD :{WHITE}... não STR_ERROR_THERE_IS_NO_TRAMWAY :{WHITE}... não há carris para eléctricos STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Não é possível converter aqui o tipo de estrada... STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Não é possível converter aqui o tipo de carril para eléctricos... -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... estrada não-compatível STR_ERROR_INCOMPATIBLE_TRAMWAY :Cisterna de bebida de cola # Waterway construction errors diff --git a/src/lang/russian.txt b/src/lang/russian.txt index 3d0a3bfed9..a2d3a8516a 100644 --- a/src/lang/russian.txt +++ b/src/lang/russian.txt @@ -4678,7 +4678,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Здес STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Невозможно сменить тип трамвайных рельсов... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Нет подходящего дорожного полотна STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Нет подходящих трамвайных путей -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... несовместимый тип дороги STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... несовместимый тип трамвайных путей # Waterway construction errors diff --git a/src/lang/simplified_chinese.txt b/src/lang/simplified_chinese.txt index 6d0161c314..b2ef0d07f3 100644 --- a/src/lang/simplified_chinese.txt +++ b/src/lang/simplified_chinese.txt @@ -4486,7 +4486,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}无法 STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}无法转换电车道类型 STR_ERROR_NO_SUITABLE_ROAD :{WHITE}没有合适的道路 STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}没有合适的电车道 -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... 不兼容的道路 STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... 不兼容的电车道 # Waterway construction errors diff --git a/src/lang/spanish.txt b/src/lang/spanish.txt index 0a2a34b880..d0e1a68755 100644 --- a/src/lang/spanish.txt +++ b/src/lang/spanish.txt @@ -4458,7 +4458,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}No es po STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}No se puede convertir el tipo de tranvía aquí... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}No hay carretera adecuada STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}No hay un tranvía adecuado -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... carretera incompatible STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... tranvía incompatible # Waterway construction errors diff --git a/src/lang/spanish_MX.txt b/src/lang/spanish_MX.txt index fcce72e0b2..8ccb46eea0 100644 --- a/src/lang/spanish_MX.txt +++ b/src/lang/spanish_MX.txt @@ -4487,7 +4487,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}No es po STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}No es posible transformar esta vía de tranvía... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Carretera no apta STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Tranvía no apto -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... carretera no compatible STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... tranvía no compatible # Waterway construction errors diff --git a/src/lang/swedish.txt b/src/lang/swedish.txt index 6c265b85ab..19da5154f7 100644 --- a/src/lang/swedish.txt +++ b/src/lang/swedish.txt @@ -4486,7 +4486,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Kan inte STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Kan inte konvertera spårvagnstyp här... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Ingen lämplig väg STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Ingen passande spårväg -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... oförenlig väg STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... oförenlig spårväg # Waterway construction errors diff --git a/src/lang/ukrainian.txt b/src/lang/ukrainian.txt index ecc43503ff..e104c2c69d 100644 --- a/src/lang/ukrainian.txt +++ b/src/lang/ukrainian.txt @@ -4597,7 +4597,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Тут STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Тут не можна перетворити тип трамваю ... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Немає підходящої дороги STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Немає підходящої трамвайної колії -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... несумісна дорога STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... несумісний трамвай # Waterway construction errors diff --git a/src/lang/vietnamese.txt b/src/lang/vietnamese.txt index 33d14a64d5..9e488ed866 100644 --- a/src/lang/vietnamese.txt +++ b/src/lang/vietnamese.txt @@ -4465,7 +4465,6 @@ STR_ERROR_CAN_T_CONVERT_ROAD :{WHITE}Không t STR_ERROR_CAN_T_CONVERT_TRAMWAY :{WHITE}Không thể chuyển đổi kiểu xe điện ở đây... STR_ERROR_NO_SUITABLE_ROAD :{WHITE}Không có đường ô-tô thích hợp STR_ERROR_NO_SUITABLE_TRAMWAY :{WHITE}Không có đường xe điện phù hợp -STR_ERROR_INCOMPATIBLE_ROAD :{WHITE}... đường không tương thích STR_ERROR_INCOMPATIBLE_TRAMWAY :{WHITE}... xe điện không phù hợp # Waterway construction errors diff --git a/src/script/api/ai/ai_road.hpp.sq b/src/script/api/ai/ai_road.hpp.sq index 99b1d1dd0b..b42c54801e 100644 --- a/src/script/api/ai/ai_road.hpp.sq +++ b/src/script/api/ai/ai_road.hpp.sq @@ -45,7 +45,6 @@ void SQAIRoad_Register(Squirrel *engine) ScriptError::RegisterErrorMap(STR_ERROR_CROSSING_DISALLOWED_ROAD, ScriptRoad::ERR_ROADTYPE_DISALLOWS_CROSSING); ScriptError::RegisterErrorMap(STR_ERROR_NO_SUITABLE_ROAD, ScriptRoad::ERR_UNSUITABLE_ROAD); ScriptError::RegisterErrorMap(STR_ERROR_NO_SUITABLE_TRAMWAY, ScriptRoad::ERR_UNSUITABLE_ROAD); - ScriptError::RegisterErrorMap(STR_ERROR_INCOMPATIBLE_ROAD, ScriptRoad::ERR_UNSUITABLE_ROAD); ScriptError::RegisterErrorMapString(ScriptRoad::ERR_ROAD_WORKS_IN_PROGRESS, "ERR_ROAD_WORKS_IN_PROGRESS"); ScriptError::RegisterErrorMapString(ScriptRoad::ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION, "ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION"); diff --git a/src/script/api/game/game_road.hpp.sq b/src/script/api/game/game_road.hpp.sq index 938dd5eabb..4398b21df4 100644 --- a/src/script/api/game/game_road.hpp.sq +++ b/src/script/api/game/game_road.hpp.sq @@ -45,7 +45,6 @@ void SQGSRoad_Register(Squirrel *engine) ScriptError::RegisterErrorMap(STR_ERROR_CROSSING_DISALLOWED_ROAD, ScriptRoad::ERR_ROADTYPE_DISALLOWS_CROSSING); ScriptError::RegisterErrorMap(STR_ERROR_NO_SUITABLE_ROAD, ScriptRoad::ERR_UNSUITABLE_ROAD); ScriptError::RegisterErrorMap(STR_ERROR_NO_SUITABLE_TRAMWAY, ScriptRoad::ERR_UNSUITABLE_ROAD); - ScriptError::RegisterErrorMap(STR_ERROR_INCOMPATIBLE_ROAD, ScriptRoad::ERR_UNSUITABLE_ROAD); ScriptError::RegisterErrorMapString(ScriptRoad::ERR_ROAD_WORKS_IN_PROGRESS, "ERR_ROAD_WORKS_IN_PROGRESS"); ScriptError::RegisterErrorMapString(ScriptRoad::ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION, "ERR_ROAD_DRIVE_THROUGH_WRONG_DIRECTION"); diff --git a/src/script/api/script_road.hpp b/src/script/api/script_road.hpp index 64b7833862..769c4a7728 100644 --- a/src/script/api/script_road.hpp +++ b/src/script/api/script_road.hpp @@ -42,7 +42,7 @@ public: ERR_ROADTYPE_DISALLOWS_CROSSING, // [STR_ERROR_CROSSING_DISALLOWED_ROAD] /** No suitable road could be found */ - ERR_UNSUITABLE_ROAD, // [STR_ERROR_NO_SUITABLE_ROAD, STR_ERROR_NO_SUITABLE_TRAMWAY, STR_ERROR_INCOMPATIBLE_ROAD] + ERR_UNSUITABLE_ROAD, // [STR_ERROR_NO_SUITABLE_ROAD, STR_ERROR_NO_SUITABLE_TRAMWAY] }; /** From 7d2db99bfdf915b81bbd02ecbdcbf20a6d0973c9 Mon Sep 17 00:00:00 2001 From: Abdurrahmaan Iqbal Date: Tue, 23 Jun 2020 20:50:41 +0100 Subject: [PATCH 4/7] Fix #7772: Show destination on mouseover when vehicle stopped (and not in depot) --- src/vehicle_gui.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/vehicle_gui.cpp b/src/vehicle_gui.cpp index 79ffffcf09..84ff890d15 100644 --- a/src/vehicle_gui.cpp +++ b/src/vehicle_gui.cpp @@ -2430,6 +2430,7 @@ private: SEL_DC_BASEPLANE = SEL_DC_GOTO_DEPOT, ///< First plane of the #WID_VV_SELECT_DEPOT_CLONE stacked widget. SEL_RT_BASEPLANE = SEL_RT_REFIT, ///< First plane of the #WID_VV_SELECT_REFIT_TURN stacked widget. }; + bool mouse_over_start_stop = false; /** * Display a plane in the window. @@ -2575,7 +2576,7 @@ public: str = STR_VEHICLE_STATUS_CRASHED; } else if (v->type != VEH_AIRCRAFT && v->breakdown_ctr == 1) { // check for aircraft necessary? str = STR_VEHICLE_STATUS_BROKEN_DOWN; - } else if (v->vehstatus & VS_STOPPED) { + } else if (v->vehstatus & VS_STOPPED && (!mouse_over_start_stop || v->IsStoppedInDepot())) { if (v->type == VEH_TRAIN) { if (v->cur_speed == 0) { if (Train::From(v)->gcache.cached_power == 0) { @@ -2731,6 +2732,15 @@ public: } } + void OnMouseOver(Point pt, int widget) override + { + bool start_stop = widget == WID_VV_START_STOP; + if (start_stop != mouse_over_start_stop) { + mouse_over_start_stop = start_stop; + this->SetWidgetDirty(WID_VV_START_STOP); + } + } + void OnResize() override { if (this->viewport != nullptr) { From c434387794ea208318f980d1e9a1d2a60764f9c3 Mon Sep 17 00:00:00 2001 From: frosch Date: Sat, 6 Jun 2020 22:01:34 +0200 Subject: [PATCH 5/7] Fix: Adjust .gitignore to CMake build system. --- .gitignore | 46 +--------------------------------------------- .hgignore | 34 ---------------------------------- 2 files changed, 1 insertion(+), 79 deletions(-) delete mode 100644 .hgignore diff --git a/.gitignore b/.gitignore index 156a9f7a66..dbb28c0f45 100644 --- a/.gitignore +++ b/.gitignore @@ -1,48 +1,4 @@ -bin/* -!bin/ai -bin/ai/* -!bin/ai/compat*.nut -!bin/ai/regression -!bin/data -bin/baseset/* -!bin/baseset/openttd.grf -!bin/baseset/opntitle.dat -!bin/baseset/orig_extra.grf -!bin/baseset/orig_*.obg -!bin/baseset/orig_*.obs -!bin/baseset/no_sound.obs -!bin/baseset/no_music.obm -!bin/baseset/orig_*.obm -!bin/game -bin/game/* -!bin/game/compat*.nut -!bin/scripts -bin/scripts/* -!bin/scripts/*.example -!bin/scripts/readme.txt - -bundle/* -bundles/* +/build docs/aidocs/* docs/gamedocs/* docs/source/* -media/openttd.desktop -media/openttd.desktop.install -projects/.vs -projects/Debug -projects/Release -projects/*.ncb -projects/*.suo -projects/*.sdf -projects/*.opensdf -projects/*.vcproj.*.user -projects/*.vcxproj.user -projects/*.VC.db -projects/*.VC.opendb - -/Makefile* -!/Makefile.msvc -/config.* -!/config.lib -!*.in -*.tmp diff --git a/.hgignore b/.hgignore deleted file mode 100644 index 03d99c6f29..0000000000 --- a/.hgignore +++ /dev/null @@ -1,34 +0,0 @@ -syntax: glob - -.svn -*.aps -bin/baseset/openttd.32.bmp -bin/lang/* -bin/openttd* -bin/*.cfg -bundle/* -bundles/* -config.cache* -config.log -config.pwd -docs/aidocs/* -docs/gamedocs/* -docs/source/* -.kdev4 -.kdev4/* -*.kdev4 -Makefile -Makefile.am -Makefile.bundle -media/openttd.desktop -media/openttd.desktop.install -objs/* -projects/.vs -projects/*.ncb -projects/*.suo -projects/*.sdf -projects/*.opensdf -projects/*.vcproj.*.user -projects/*.vcxproj.user -src/rev.cpp -src/os/windows/ottdres.rc From db0bf20fbbcdbe98c5c0fcac8c38c18cf9419fd1 Mon Sep 17 00:00:00 2001 From: glx22 Date: Sat, 6 Jun 2020 22:54:39 +0200 Subject: [PATCH 6/7] Fix: ignore more things --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index dbb28c0f45..1e68f57074 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,7 @@ +/.vs /build +CMakeSettings.json docs/aidocs/* docs/gamedocs/* docs/source/* +/out From 00eccbe298ad7f7d656e121ce58c2a6326dabe2f Mon Sep 17 00:00:00 2001 From: Michael Lutz Date: Sun, 5 Jul 2020 14:39:39 +0200 Subject: [PATCH 7/7] Add: [CMake] Source group definitions to create file filters in generated project files (like the old MSVC projects). --- CMakeLists.txt | 2 ++ cmake/MSVCFilters.cmake | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 cmake/MSVCFilters.cmake diff --git a/CMakeLists.txt b/CMakeLists.txt index 364236c86c..1400179ffa 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -131,6 +131,8 @@ include_directories(${CMAKE_SOURCE_DIR}/src) # Needed by everything that uses Squirrel include_directories(${CMAKE_SOURCE_DIR}/src/3rdparty/squirrel/include) +include(MSVCFilters) + include(CompileFlags) compile_flags() diff --git a/cmake/MSVCFilters.cmake b/cmake/MSVCFilters.cmake new file mode 100644 index 0000000000..14c7b2c351 --- /dev/null +++ b/cmake/MSVCFilters.cmake @@ -0,0 +1,37 @@ +# Add source group filters for use in generated projects. + +source_group("AI Core" REGULAR_EXPRESSION "src/ai/") +source_group("Blitters" REGULAR_EXPRESSION "src/blitter/") +source_group("Core Source Code" REGULAR_EXPRESSION "src/core/") +source_group("Game Core" REGULAR_EXPRESSION "src/game/") +source_group("MD5" REGULAR_EXPRESSION "src/3rdparty/md5/") +source_group("Misc" REGULAR_EXPRESSION "src/misc/") +source_group("Music" REGULAR_EXPRESSION "src/music/") +source_group("Network Core" REGULAR_EXPRESSION "src/network/core/") +source_group("Pathfinder" REGULAR_EXPRESSION "src/pathfinder/") +source_group("Save/Load handlers" REGULAR_EXPRESSION "src/saveload/") +source_group("Sound" REGULAR_EXPRESSION "src/sound/") +source_group("Sprite loaders" REGULAR_EXPRESSION "src/spriteloader/") +source_group("Squirrel" REGULAR_EXPRESSION "src/3rdparty/squirrel/squirrel/") +source_group("Tables" REGULAR_EXPRESSION "src/table/") +source_group("Video" REGULAR_EXPRESSION "src/video/") +source_group("Widgets" REGULAR_EXPRESSION "src/widgets/") +source_group("Windows files" REGULAR_EXPRESSION "src/os/windows/|\.rc$") + +# Last directive for each file wins, so make sure NPF/YAPF are after the generic pathfinder filter. +source_group("NPF" REGULAR_EXPRESSION "src/pathfinder/npf/") +source_group("YAPF" REGULAR_EXPRESSION "src/pathfinder/yapf/") + +source_group("Script" REGULAR_EXPRESSION "src/script/") +source_group("Script API Implementation" REGULAR_EXPRESSION "src/script/api/") +source_group("Script API" REGULAR_EXPRESSION "src/script/api/.*\.hpp$") +source_group("AI API" REGULAR_EXPRESSION "src/script/api/ai_") +source_group("Game API" REGULAR_EXPRESSION "src/script/api/game_") + +# Placed last to ensure any of the previous directory filters are overridden. +source_group("Command handlers" REGULAR_EXPRESSION "_cmd\.cpp$") +source_group("Drivers" REGULAR_EXPRESSION "_driver\.hpp$") +source_group("GUI Source Code" REGULAR_EXPRESSION "_gui\.cpp$") +source_group("Map Accessors" REGULAR_EXPRESSION "_map\.(cpp|h)$") +source_group("NewGRF" REGULAR_EXPRESSION "newgrf.*cpp$") +source_group("Squirrel headers" REGULAR_EXPRESSION "src/3rdparty/squirrel/squirrel/.*\.h$")