public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/proj/guru:master commit in: games-arcade/SpaceCadetPinball/files/, games-arcade/SpaceCadetPinball/
@ 2021-11-08 13:02 Andrew Ammerlaan
  0 siblings, 0 replies; only message in thread
From: Andrew Ammerlaan @ 2021-11-08 13:02 UTC (permalink / raw
  To: gentoo-commits

commit:     6fea813162aac21d7794396946e56e33475981bd
Author:     Nicola Smaniotto <smaniotto.nicola <AT> gmail <DOT> com>
AuthorDate: Mon Nov  8 12:07:43 2021 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Mon Nov  8 12:08:18 2021 +0000
URL:        https://gitweb.gentoo.org/repo/proj/guru.git/commit/?id=6fea8131

games-arcade/SpaceCadetPinball: new package (2.0)

The patch enables loading files from user-writeable directories.

Package-Manager: Portage-3.0.28, Repoman-3.0.3
Signed-off-by: Nicola Smaniotto <smaniotto.nicola <AT> gmail.com>

 games-arcade/SpaceCadetPinball/Manifest            |  1 +
 .../SpaceCadetPinball/SpaceCadetPinball-2.0.ebuild | 37 ++++++++
 ...aceCadetPinball-2.0-respect-XDG_DATA_HOME.patch | 98 ++++++++++++++++++++++
 games-arcade/SpaceCadetPinball/metadata.xml        |  8 ++
 4 files changed, 144 insertions(+)

diff --git a/games-arcade/SpaceCadetPinball/Manifest b/games-arcade/SpaceCadetPinball/Manifest
new file mode 100644
index 000000000..ae7dcfd5f
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/Manifest
@@ -0,0 +1 @@
+DIST SpaceCadetPinball-2.0.tar.gz 933826 BLAKE2B b4a079ca856ebf315202eaae59a825d4c7022acfff7f38907ffd750f0e146da6d7c4f03286ef5c59ee5e3c725d938e30c2aad2f7269d9f18e8ae8f6807af80e1 SHA512 29b3f886d6ec6507c12a59b0c2877cbb51c54eee0163d0537588bb1e0fa0eb08b530d5684e8753598a823430559d5b3b9490be40ca9a3310043dac71912994c7

diff --git a/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.ebuild b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.ebuild
new file mode 100644
index 000000000..af9bc3d8d
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.ebuild
@@ -0,0 +1,37 @@
+# Copyright 1999-2021 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=8
+
+inherit cmake
+
+DESCRIPTION="Decompilation of 3D Pinball for Windows - Space Cadet"
+HOMEPAGE="https://github.com/k4zmu2a/SpaceCadetPinball"
+SRC_URI="https://github.com/k4zmu2a/${PN}/archive/refs/tags/Release_${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="0"
+KEYWORDS="~amd64"
+
+DEPEND="
+	media-libs/libsdl2
+	media-libs/sdl2-mixer[midi]
+"
+RDEPEND="${DEPEND}"
+
+PATCHES=(
+	"${FILESDIR}"/"${P}"-respect-XDG_DATA_HOME.patch
+)
+
+S="${WORKDIR}/${PN}-Release_${PV}"
+
+src_install(){
+	dobin "${S}/bin/${PN}"
+}
+
+pkg_postinst(){
+	ewarn "This game is distributed without the data files."
+	ewarn "To play, copy the original DAT and SOUND files from a Windows or"
+	ewarn 'Full Tilt! installation and place them in $XDG_DATA_HOME/'"${PN}/"
+	ewarn "(usually: ~/.local/share/${PN}/)"
+}

diff --git a/games-arcade/SpaceCadetPinball/files/SpaceCadetPinball-2.0-respect-XDG_DATA_HOME.patch b/games-arcade/SpaceCadetPinball/files/SpaceCadetPinball-2.0-respect-XDG_DATA_HOME.patch
new file mode 100644
index 000000000..eed02d4c3
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/files/SpaceCadetPinball-2.0-respect-XDG_DATA_HOME.patch
@@ -0,0 +1,98 @@
+Enables support for loading the data files from outside the executable folder,
+respecting the user $XDG_DATA_HOME variable if set.
+Backport of commit ecdf802d68f9852150ac92f9737426c340fb64a3 by k4zmu2a.
+Patch by Nicola Smaniotto.
+
+diff --git a/SpaceCadetPinball/pb.cpp b/SpaceCadetPinball/pb.cpp
+index 284ef7e..9fa7fb2 100644
+--- a/SpaceCadetPinball/pb.cpp
++++ b/SpaceCadetPinball/pb.cpp
+@@ -39,6 +39,8 @@ int pb::init()
+ {
+ 	float projMat[12], zMin = 0, zScaler = 0;
+ 
++	if (winmain::DatFileName.empty())
++		return 1;
+ 	auto dataFilePath = pinball::make_path_name(winmain::DatFileName);
+ 	record_table = partman::load_records(dataFilePath.c_str(), FullTiltMode);
+ 
+diff --git a/SpaceCadetPinball/winmain.cpp b/SpaceCadetPinball/winmain.cpp
+index 1b9a4c6..5e4fa9c 100644
+--- a/SpaceCadetPinball/winmain.cpp
++++ b/SpaceCadetPinball/winmain.cpp
+@@ -36,7 +36,7 @@ bool winmain::ShowSpriteViewer = false;
+ bool winmain::LaunchBallEnabled = true;
+ bool winmain::HighScoresEnabled = true;
+ bool winmain::DemoActive = false;
+-char* winmain::BasePath;
++std::string winmain::BasePath;
+ int winmain::MainMenuHeight = 0;
+ std::string winmain::FpsDetails;
+ double winmain::UpdateToFrameRatio;
+@@ -58,19 +58,44 @@ int winmain::WinMain(LPCSTR lpCmdLine)
+ 		SDL_ShowSimpleMessageBox(SDL_MESSAGEBOX_ERROR, "Could not initialize SDL2", SDL_GetError(), nullptr);
+ 		return 1;
+ 	}
+-	BasePath = SDL_GetBasePath();
+ 
+ 	pinball::quickFlag = strstr(lpCmdLine, "-quick") != nullptr;
+-	DatFileName = options::get_string("Pinball Data", pinball::get_rc_string(168, 0));
+ 
+-	/*Check for full tilt .dat file and switch to it automatically*/
+-	auto cadetFilePath = pinball::make_path_name("CADET.DAT");
+-	auto cadetDat = fopen(cadetFilePath.c_str(), "r");
+-	if (cadetDat)
++	// Search for game data in: game folder, user folder
++	// Game data test order: CADET.DAT, PINBALL.DAT
++	char* dataSearchPaths[2]
+ 	{
+-		fclose(cadetDat);
+-		DatFileName = "CADET.DAT";
+-		pb::FullTiltMode = true;
++		 SDL_GetBasePath(),
++		 SDL_GetPrefPath(nullptr, "SpaceCadetPinball")
++	};
++	std::string datFileNames[2]
++	{
++		"CADET.DAT",
++		options::get_string("Pinball Data", pinball::get_rc_string(168, 0))
++	};
++	for (auto path : dataSearchPaths)
++	{
++		if (DatFileName.empty() && path)
++		{
++			BasePath = path;
++			for (int i = 0; i < 2; i++)
++			{
++				auto datFileName = datFileNames[i];
++				auto datFilePath = pinball::make_path_name(datFileName);
++				auto datFile = fopen(datFilePath.c_str(), "r");
++				if (datFile)
++				{
++					fclose(datFile);
++					DatFileName = datFileName;
++					if (i == 0)
++						pb::FullTiltMode = true;
++					printf("Loading game from: %s\n", datFilePath.c_str());
++					break;
++				}
++			}
++		}
++
++		SDL_free(path);
+ 	}
+ 
+ 	// SDL window
+diff --git a/SpaceCadetPinball/winmain.h b/SpaceCadetPinball/winmain.h
+index eb32410..485232f 100644
+--- a/SpaceCadetPinball/winmain.h
++++ b/SpaceCadetPinball/winmain.h
+@@ -48,7 +48,7 @@ public:
+ 	static bool LaunchBallEnabled;
+ 	static bool HighScoresEnabled;
+ 	static bool DemoActive;
+-	static char* BasePath;
++	static std::string BasePath;
+ 	static int MainMenuHeight;
+ 
+ 	static int WinMain(LPCSTR lpCmdLine);

diff --git a/games-arcade/SpaceCadetPinball/metadata.xml b/games-arcade/SpaceCadetPinball/metadata.xml
new file mode 100644
index 000000000..cbe3c6a53
--- /dev/null
+++ b/games-arcade/SpaceCadetPinball/metadata.xml
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM 'http://www.gentoo.org/dtd/metadata.dtd'>
+<pkgmetadata>
+	<maintainer type="person">
+		<email>smaniotto.nicola@gmail.com</email>
+		<name>Nicola Smaniotto</name>
+	</maintainer>
+</pkgmetadata>


^ permalink raw reply related	[flat|nested] only message in thread

only message in thread, other threads:[~2021-11-08 13:02 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-11-08 13:02 [gentoo-commits] repo/proj/guru:master commit in: games-arcade/SpaceCadetPinball/files/, games-arcade/SpaceCadetPinball/ Andrew Ammerlaan

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox