aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicola Smaniotto <smaniotto.nicola@gmail.com>2021-11-08 13:07:43 +0100
committerNicola Smaniotto <smaniotto.nicola@gmail.com>2021-11-08 13:08:18 +0100
commit6fea813162aac21d7794396946e56e33475981bd (patch)
tree7578fee494223637054b899605f18c709a6ed356 /games-arcade
parentnet-libs/telepathy-haze: new package (diff)
downloadguru-6fea813162aac21d7794396946e56e33475981bd.tar.gz
guru-6fea813162aac21d7794396946e56e33475981bd.tar.bz2
guru-6fea813162aac21d7794396946e56e33475981bd.zip
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@gmail.com>
Diffstat (limited to 'games-arcade')
-rw-r--r--games-arcade/SpaceCadetPinball/Manifest1
-rw-r--r--games-arcade/SpaceCadetPinball/SpaceCadetPinball-2.0.ebuild37
-rw-r--r--games-arcade/SpaceCadetPinball/files/SpaceCadetPinball-2.0-respect-XDG_DATA_HOME.patch98
-rw-r--r--games-arcade/SpaceCadetPinball/metadata.xml8
4 files changed, 144 insertions, 0 deletions
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>