From e59cec4b80ec8c6690c6aa5ccca3433ba877355b Mon Sep 17 00:00:00 2001 From: Erich Eckner Date: Fri, 1 Jan 2021 22:23:15 +0100 Subject: openttd-git: include chunnel.patch --- openttd-git/PKGBUILD | 8 ++- openttd-git/chunnel.patch | 173 ++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+), 3 deletions(-) create mode 100644 openttd-git/chunnel.patch (limited to 'openttd-git') diff --git a/openttd-git/PKGBUILD b/openttd-git/PKGBUILD index 63743310..ace2b346 100644 --- a/openttd-git/PKGBUILD +++ b/openttd-git/PKGBUILD @@ -2,7 +2,7 @@ pkgname=openttd-git pkgver=29778.7222bc581 _commit=${pkgver#*.} -pkgrel=1 +pkgrel=2 pkgdesc="A FOSS clone of Transport Tycoon Deluxe." arch=('x86_64' 'i686' 'pentium4') url="http://www.openttd.org" @@ -43,12 +43,14 @@ backup=() options=() source=( "${pkgname}::git://github.com/OpenTTD/OpenTTD.git#commit=${_commit}" + "chunnel.patch" "signaltunnel.patch" "sloped-stations.patch" "underground.patch" 'opntitle.dat' ) sha512sums=('SKIP' + 'a6cf640d876aa1e2d20ec9242a602bca8a3e2dfabe036b36bf71872d47ab06d668c24d175c54c5f6e54d3c135ebcbcf3c09b5d762fddceb15f2cc87baad9d76f' '497f395320edff647dd58c53abc451f706db9934fc847c95ecbbb33d519f67fe94ecd913e13bd7d770320370ea088b675e6583e8b59b69e2d3ee587a62ad2261' '11c87d30824bca5738e46c14422c622cdfe4d7e55a5b3a4fe5e77a0a14ceee742bfa8f6c0e8212e9b38c2a1d1db3a4f525c7a70a0b0ed03751dee2539d3da929' 'f18a389800e5641ebc55d4322089d97a851125ae6d19ff944d3648b3b603128fe0fcb7ba2210cbd13ac8a0839003144299c217b994bdc0bc5e601fbff63308d2' @@ -89,8 +91,8 @@ prepare() { s,"\${CMAKE_SOURCE_DIR}/\.git","/dev/does/not/exist", ' cmake/scripts/FindVersion.cmake -# for _p in "${srcdir}/"{signaltunnel,sloped-stations,underground}.patch; do - for _p in "${srcdir}/"{signaltunnel,underground}.patch; do +# for _p in "${srcdir}/"{signaltunnel,sloped-stations,underground,chunnel}.patch; do + for _p in "${srcdir}/"{signaltunnel,underground,chunnel}.patch; do >&2 echo "patching ${_p##*/} ..." patch -p1 -i "${_p}" >&2 echo "... ok" diff --git a/openttd-git/chunnel.patch b/openttd-git/chunnel.patch new file mode 100644 index 00000000..c26ea894 --- /dev/null +++ b/openttd-git/chunnel.patch @@ -0,0 +1,173 @@ +diff --git a/src/lang/english.txt b/src/lang/english.txt +index 8a79d87ea6..c6169a78ec 100644 +--- a/src/lang/english.txt ++++ b/src/lang/english.txt +@@ -2337,6 +2337,7 @@ STR_TRANSPARENT_BRIDGES_TOOLTIP :{BLACK}Toggle t + STR_TRANSPARENT_STRUCTURES_TOOLTIP :{BLACK}Toggle transparency for structures like lighthouses and antennas. Ctrl+Click to lock + STR_TRANSPARENT_CATENARY_TOOLTIP :{BLACK}Toggle transparency for catenary. Ctrl+Click to lock + STR_TRANSPARENT_LOADING_TOOLTIP :{BLACK}Toggle transparency for loading indicators. Ctrl+Click to lock ++STR_TRANSPARENT_TUNNELS_TOOLTIP :{BLACK}Toggle transparency for vehicles in tunnels. Ctrl+Click to lock. + STR_TRANSPARENT_INVISIBLE_TOOLTIP :{BLACK}Set objects invisible instead of transparent + + # Linkgraph legend window +diff --git a/src/table/misc_settings.ini b/src/table/misc_settings.ini +index edad848165..f0322ee359 100644 +--- a/src/table/misc_settings.ini ++++ b/src/table/misc_settings.ini +@@ -254,7 +254,7 @@ type = SLE_UINT + var = _transparency_opt + def = 0 + min = 0 +-max = 0x1FF ++max = 0x3FF + cat = SC_BASIC + + [SDTG_VAR] +@@ -263,7 +263,7 @@ type = SLE_UINT + var = _transparency_lock + def = 0 + min = 0 +-max = 0x1FF ++max = 0x3FF + cat = SC_BASIC + + [SDTG_VAR] +diff --git a/src/train_cmd.cpp b/src/train_cmd.cpp +index 5d02764b55..6438e18661 100644 +--- a/src/train_cmd.cpp ++++ b/src/train_cmd.cpp +@@ -3853,7 +3853,7 @@ static bool TrainLocoHandler(Train *v, bool mode) + } + + for (Train *u = v; u != nullptr; u = u->Next()) { +- if ((u->vehstatus & VS_HIDDEN) != 0) continue; ++ if (!u->IsDrawn()) continue; + + u->UpdateViewport(false, false); + } +diff --git a/src/transparency.h b/src/transparency.h +index 54ba24e933..08b13ca9b9 100644 +--- a/src/transparency.h ++++ b/src/transparency.h +@@ -29,6 +29,7 @@ enum TransparencyOption { + TO_STRUCTURES, ///< other objects such as transmitters and lighthouses + TO_CATENARY, ///< catenary + TO_LOADING, ///< loading indicators ++ TO_TUNNELS, ///< vehicles in tunnels + TO_END, + TO_INVALID, ///< Invalid transparency option + }; +diff --git a/src/transparency_gui.cpp b/src/transparency_gui.cpp +index 153dcb5d03..55ac1a75de 100644 +--- a/src/transparency_gui.cpp ++++ b/src/transparency_gui.cpp +@@ -50,7 +50,8 @@ public: + case WID_TT_BRIDGES: + case WID_TT_STRUCTURES: + case WID_TT_CATENARY: +- case WID_TT_LOADING: { ++ case WID_TT_LOADING: ++ case WID_TT_TUNNELS: { + uint i = widget - WID_TT_BEGIN; + if (HasBit(_transparency_lock, i)) DrawSprite(SPR_LOCK, PAL_NONE, r.left + 1, r.top + 1); + break; +@@ -58,6 +59,7 @@ public: + case WID_TT_BUTTONS: + for (uint i = WID_TT_BEGIN; i < WID_TT_END; i++) { + if (i == WID_TT_LOADING) continue; // Do not draw button for invisible loading indicators. ++ if (i == WID_TT_TUNNELS) continue; // Do not draw button for invisible vehicles in tunnels. + + const NWidgetBase *wi = this->GetWidget(i); + DrawFrameRect(wi->pos_x + 1, r.top + 2, wi->pos_x + wi->current_x - 2, r.bottom - 2, COLOUR_PALE_GREEN, +@@ -69,7 +71,7 @@ public: + + void OnClick(Point pt, int widget, int click_count) override + { +- if (widget >= WID_TT_BEGIN && widget < WID_TT_END) { ++ if (IsInsideMM(widget, WID_TT_BEGIN, WID_TT_END)) { + if (_ctrl_pressed) { + /* toggle the bit of the transparencies lock variable */ + ToggleTransparencyLock((TransparencyOption)(widget - WID_TT_BEGIN)); +@@ -139,6 +141,7 @@ static const NWidgetPart _nested_transparency_widgets[] = { + NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_STRUCTURES), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_TRANSMITTER, STR_TRANSPARENT_STRUCTURES_TOOLTIP), + NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_CATENARY), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_BUILD_X_ELRAIL, STR_TRANSPARENT_CATENARY_TOOLTIP), + NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_LOADING), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_TRAINLIST, STR_TRANSPARENT_LOADING_TOOLTIP), ++ NWidget(WWT_IMGBTN, COLOUR_DARK_GREEN, WID_TT_TUNNELS), SetMinimalSize(22, 22), SetFill(0, 1), SetDataTip(SPR_IMG_ROAD_TUNNEL, STR_TRANSPARENT_TUNNELS_TOOLTIP), + NWidget(WWT_PANEL, COLOUR_DARK_GREEN), SetFill(1, 1), EndContainer(), + EndContainer(), + /* Panel with 'invisibility' buttons. */ +diff --git a/src/vehicle.cpp b/src/vehicle.cpp +index 956b449602..abce02af64 100644 +--- a/src/vehicle.cpp ++++ b/src/vehicle.cpp +@@ -286,6 +286,14 @@ uint Vehicle::Crash(bool flooded) + return RandomRange(pass + 1); // Randomise deceased passengers. + } + ++bool Vehicle::IsDrawn() const ++{ ++ return !(this->vehstatus & VS_HIDDEN) || ++ (!IsTransparencySet(TO_TUNNELS) && ++ ((this->type == VEH_TRAIN && Train::From(this)->track == TRACK_BIT_WORMHOLE) || ++ (this->type == VEH_ROAD && RoadVehicle::From(this)->state == RVSB_WORMHOLE))); ++} ++ + + /** + * Displays a "NewGrf Bug" error message for a engine, and pauses the game if not networking. +@@ -1083,7 +1091,7 @@ static void DoDrawVehicle(const Vehicle *v) + if (v->vehstatus & VS_DEFPAL) pal = (v->vehstatus & VS_CRASHED) ? PALETTE_CRASH : GetVehiclePalette(v); + + /* Check whether the vehicle shall be transparent due to the game state */ +- bool shadowed = (v->vehstatus & VS_SHADOW) != 0; ++ bool shadowed = (v->vehstatus & (VS_SHADOW | VS_HIDDEN)) != 0; + + if (v->type == VEH_EFFECT) { + /* Check whether the vehicle shall be transparent/invisible due to GUI settings. +@@ -1141,7 +1149,7 @@ void ViewportAddVehicles(DrawPixelInfo *dpi) + + while (v != nullptr) { + if (LayerIndex(v->tile) == dpi->layer) +- if (!(v->vehstatus & VS_HIDDEN) && ++ if (v->IsDrawn() && + l <= v->coord.right && + t <= v->coord.bottom && + r >= v->coord.left && +@@ -1176,7 +1184,7 @@ Vehicle *CheckClickOnVehicle(const Viewport *vp, int x, int y) + y = ScaleByZoom(y, vp->zoom) + vp->virtual_top; + + for (Vehicle *v : Vehicle::Iterate()) { +- if ((v->vehstatus & (VS_HIDDEN | VS_UNCLICKABLE)) == 0 && ++ if (v->IsDrawn() && !(v->vehstatus & VS_UNCLICKABLE) && + x >= v->coord.left && x <= v->coord.right && + y >= v->coord.top && y <= v->coord.bottom) { + +diff --git a/src/vehicle_base.h b/src/vehicle_base.h +index 019c94a29a..2378b84473 100644 +--- a/src/vehicle_base.h ++++ b/src/vehicle_base.h +@@ -351,6 +351,12 @@ public: + + uint GetConsistTotalCapacity() const; + ++ /** ++ * Is this vehicle drawn? ++ * @return true if it is drawn ++ */ ++ bool IsDrawn() const; ++ + /** + * Marks the vehicles to be redrawn and updates cached variables + * +diff --git a/src/widgets/transparency_widget.h b/src/widgets/transparency_widget.h +index 2b096e733b..099d48a339 100644 +--- a/src/widgets/transparency_widget.h ++++ b/src/widgets/transparency_widget.h +@@ -23,6 +23,7 @@ enum TransparencyToolbarWidgets { + WID_TT_STRUCTURES, ///< Object structure transparency toggle button. + WID_TT_CATENARY, ///< Catenary transparency toggle button. + WID_TT_LOADING, ///< Loading indicators transparency toggle button. ++ WID_TT_TUNNELS, ///< Vehicles in tunnels toggle button. + WID_TT_END, ///< End of toggle buttons. + + /* Panel with buttons for invisibility */ -- cgit v1.2.3-54-g00ecf