diff options
author | Nicola Smaniotto <smaniotto.nicola@gmail.com> | 2021-11-08 13:07:43 +0100 |
---|---|---|
committer | Nicola Smaniotto <smaniotto.nicola@gmail.com> | 2021-11-08 13:08:18 +0100 |
commit | 6fea813162aac21d7794396946e56e33475981bd (patch) | |
tree | 7578fee494223637054b899605f18c709a6ed356 /games-arcade | |
parent | net-libs/telepathy-haze: new package (diff) | |
download | guru-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')
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> |