summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErich Eckner <git@eckner.net>2021-01-01 22:23:15 +0100
committerErich Eckner <git@eckner.net>2021-01-01 22:23:15 +0100
commite59cec4b80ec8c6690c6aa5ccca3433ba877355b (patch)
tree751395c83857dd031c7161f85c627955f7cae242
parent7457f877adfb51bcc1b1b7a3186b3398c9bbfb93 (diff)
downloadarchlinuxewe-e59cec4b80ec8c6690c6aa5ccca3433ba877355b.tar.xz
openttd-git: include chunnel.patch
-rw-r--r--openttd-git/PKGBUILD8
-rw-r--r--openttd-git/chunnel.patch173
2 files changed, 178 insertions, 3 deletions
diff --git a/openttd-git/PKGBUILD b/openttd-git/PKGBUILD
index 637433107..ace2b3463 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 000000000..c26ea894f
--- /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<NWidgetBase>(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 */