diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml deleted file mode 100644 index 01c5b32fa..000000000 --- a/.gitlab-ci.yml +++ /dev/null @@ -1,131 +0,0 @@ ---- -# Pingus - A free Lemmings clone -# Copyright (C) 2018 Ingo Ruhnke -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -image: ubuntu:latest - -variables: - GIT_SUBMODULE_STRATEGY: recursive - -before_script: - - export DEBIAN_FRONTEND=noninteractive - - apt-get -qq update - - apt-get -qq -y install lsb-release - - lsb_release -a - - apt-get -qq -y install - clang-10 - clang-tidy-10 - g++-10 - cmake - build-essential - desktop-file-utils - appstream-util - libfmt-dev - libsigc++-2.0-dev - libc++-dev - libsdl2-dev - libsdl2-image-dev - libjsoncpp-dev - libpng-dev - libgtest-dev - libglm-dev - libopenal-dev - libmodplug-dev - libmpg123-dev - libvorbis-dev - libogg-dev - libopusfile-dev - libopus-dev - software-properties-common - flatpak - flatpak-builder - -.build_pingus_template: &build_pingus - stage: build - script: - - mkdir build - - cd build - - cmake .. - -DCMAKE_BUILD_TYPE=$BUILD_TYPE - -DWARNINGS=ON - -DWERROR=ON - -DBUILD_TESTS=ON - -DBUILD_EXTRA=ON - -DCLANG_TIDY=$CLANG_TIDY - -DCLANG_TIDY_EXE=/usr/bin/clang-tidy-10 - - make VERBOSE=1 - - make test VERBOSE=1 ARGS="-V" - -build:gcc:release: - <<: *build_pingus - variables: - CXX: "g++-10" - BUILD_TYPE: "Release" - CLANG_TIDY: "OFF" - -build:clang:release: - <<: *build_pingus - variables: - CXX: "clang++-10" - BUILD_TYPE: "Release" - CLANG_TIDY: "OFF" - -build:gcc:debug: - <<: *build_pingus - variables: - CXX: "g++-10" - BUILD_TYPE: "Debug" - CLANG_TIDY: "OFF" - -build:clang:debug: - <<: *build_pingus - variables: - CXX: "clang++-10" - BUILD_TYPE: "Debug" - CLANG_TIDY: "OFF" - -build:clang-tidy: - <<: *build_pingus - variables: - CXX: "clang++-10" - BUILD_TYPE: "Debug" - CLANG_TIDY: "ON" - -build:flatpak: - stage: build - script: - - flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo - - flatpak install -y flathub org.freedesktop.Platform//20.08 org.freedesktop.Sdk//20.08 - - flatpak-builder --repo=build-flatpak-repo/ build-flatpak/ org.seul.pingus.Pingus.json - - flatpak build-bundle build-flatpak-repo/ pingus.flatpak org.seul.pingus.Pingus - artifacts: - paths: - - pingus.flatpak - - build-flatpak-repo - -# pages: -# stage: deploy -# dependencies: -# - build:flatpak -# script: -# - mkdir public.tmp/ -# - mv -v build-flatpak-repo public.tmp/flatpakrepo -# - mv -v public.tmp public -# artifacts: -# paths: -# - public - -# EOF # diff --git a/.gitmodules b/.gitmodules deleted file mode 100644 index 3a6ecfd43..000000000 --- a/.gitmodules +++ /dev/null @@ -1,33 +0,0 @@ -[submodule "external/argpp"] - path = external/argpp - url = https://github.com/grumbel/argpp.git -[submodule "external/geomcpp"] - path = external/geomcpp - url = https://github.com/grumbel/geomcpp.git -[submodule "external/logmich"] - path = external/logmich - url = https://github.com/logmich/logmich.git -[submodule "external/priocpp"] - path = external/priocpp - url = https://github.com/grumbel/priocpp.git -[submodule "external/sexpcpp"] - path = external/sexpcpp - url = https://github.com/lispparser/sexp-cpp.git -[submodule "external/strutcpp"] - path = external/strutcpp - url = https://github.com/grumbel/strutcpp.git -[submodule "external/tinycmmc"] - path = external/tinycmmc - url = https://github.com/grumbel/tinycmmc.git -[submodule "external/tinygettext"] - path = external/tinygettext - url = https://github.com/tinygettext/tinygettext.git -[submodule "external/wstsound"] - path = external/wstsound - url = https://github.com/WindstilleTeam/wstsound.git -[submodule "external/xdgcpp"] - path = external/xdgcpp - url = https://github.com/grumbel/xdgcpp.git -[submodule "external/uitest"] - path = external/uitest - url = https://github.com/grumbel/uitest.git diff --git a/.travis.yml b/.travis.yml deleted file mode 100644 index eafe3db0d..000000000 --- a/.travis.yml +++ /dev/null @@ -1,100 +0,0 @@ -# Pingus - A free Lemmings clone -# Copyright (C) 2015 Ingo Ruhnke -# -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - -# Build file for https://travis-ci.org/ -# -# Configuration manual: -# http://docs.travis-ci.com/user/build-configuration/ -# -# Based on: -# https://github.com/supertuxkart/stk-code/blob/master/.travis.yml -# https://github.com/SuperTux/supertux/blob/master/.travis.yml - -language: cpp -dist: trusty -sudo: required - -compiler: - - gcc - - clang - -matrix: - fast_finish: true - exclude: - - compiler: gcc - os: osx - -os: - - linux - # - osx - -env: - global: - # The next declaration is the encrypted COVERITY_SCAN_TOKEN, created - # via the "travis encrypt" command using the project repo's public key - - secure: "CPJBu4r8RDmeP7G78ODyk+A/J3vxEFr4xpQE0zIDtdCHcQmv2NqjM88YVH5pRWK4vtpAFuDEzyw4ZGKwfmwK5zhg2nUubsf47WpQmQa0z9HLasjXATzWwXGggx7mzlKODpkkccBzXHDAqvLKTkKBeXdxwMKFCtSgEM+3MwEwW6g=" - matrix: - - BUILD_TYPE="Debug" - - BUILD_TYPE="Release" - -before_install: - - if [ "$CXX" = "g++" ]; then export CXX="g++-4.9" CC="gcc-4.9"; fi - - if [ "$CXX" == "clang++" ]; then export CXX="clang++-5.0"; fi - -script: - # Clean from previous Travis build - - git clean -f - # Then build: - - mkdir "build-$BUILD_TYPE" - - cd "build-$BUILD_TYPE" - - cmake .. -DCMAKE_BUILD_TYPE=$BUILD_TYPE -DWARNINGS=ON -DWERROR=ON -DBUILD_TESTS=ON -DBUILD_EXTRA=ON - - make VERBOSE=1 - - make VERBOSE=1 install DESTDIR=/tmp/pingus-${BUILD_TYPE} - - (cd .. && build-${BUILD_TYPE}/test_pingus) - -# The branch coverity_scan is used to trigger the start of a coverity -# scan, merge the latest development version into and push it to start -# the scan. -addons: - apt: - sources: - - ubuntu-toolchain-r-test - - llvm-toolchain-precise - packages: - - clang-5.0 - - g++-4.9 - - cmake - - build-essential - - libc++-dev - - libogg-dev - - libvorbis-dev - - libglew-dev - - libopenal-dev - - libboost-all-dev - - libsdl2-dev - - libsdl2-image-dev - - libsdl2-mixer-dev - - libjsoncpp-dev - coverity_scan: - project: - name: "Pingus/pingus" - description: "Build submitted via Travis CI" - notification_email: grumbel@gmail.com - build_command_prepend: "cmake . && make clean" - build_command: "make" - branch_pattern: coverity_scan - -# EOF # diff --git a/CMakeLists.txt b/CMakeLists.txt index b580b9eab..bab4b5feb 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -19,16 +19,12 @@ project(pingus VERSION 0.8.0) include(mk/cmake/TinyCMMC.cmake) -# FIXME: Move this into GetProjectVersion, get date from git -string(TIMESTAMP PROJECT_DATE "%Y-%m-%d" UTC) - find_package(PkgConfig REQUIRED) set(OpenGL_GL_PREFERENCE "LEGACY") find_package(OpenGL REQUIRED) pkg_search_module(SDL2 REQUIRED sdl2 IMPORTED_TARGET) pkg_search_module(SDL2IMAGE REQUIRED SDL2_image>=2.0.0 IMPORTED_TARGET) pkg_search_module(PNG REQUIRED libpng IMPORTED_TARGET) -pkg_search_module(JSONCPP REQUIRED jsoncpp IMPORTED_TARGET) pkg_search_module(SIGCXX REQUIRED sigc++-2.0 IMPORTED_TARGET) find_package(fmt REQUIRED) find_package(glm REQUIRED) @@ -104,7 +100,6 @@ target_link_libraries(libpingus PUBLIC PkgConfig::SDL2 PkgConfig::SDL2IMAGE PkgConfig::PNG - PkgConfig::JSONCPP PkgConfig::SIGCXX OpenGL::GL) @@ -210,14 +205,4 @@ install(FILES install(DIRECTORY data/icons/ DESTINATION ${CMAKE_INSTALL_DATADIR}/icons) -configure_file(pingus.appdata.xml.in ${CMAKE_CURRENT_BINARY_DIR}/pingus.appdata.xml) -install(FILES ${CMAKE_CURRENT_BINARY_DIR}/pingus.appdata.xml - DESTINATION ${CMAKE_INSTALL_DATADIR}/metainfo) - -if (BUILD_TESTS) - add_test(NAME pingus.appdata.xml - WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} - COMMAND appstream-util validate-relax ${CMAKE_CURRENT_BINARY_DIR}/pingus.appdata.xml) -endif(BUILD_TESTS) - # EOF # diff --git a/INSTALL.linux.md b/INSTALL.linux.md deleted file mode 100644 index ff72313c9..000000000 --- a/INSTALL.linux.md +++ /dev/null @@ -1,116 +0,0 @@ -Pingus Installation Guide for GNU/Linux -======================================= - -Requirements ------------- - -To compile Pingus you need: - -* [g++](http://gcc.gnu.org/) -* [SDL2](http://libsdl.org/) -* [SDL2_mixer](https://www.libsdl.org/projects/SDL_image/) -* [SDL2_image](https://www.libsdl.org/projects/SDL_mixer/) -* [libpng](http://libpng.org/) -* [cmake](http://cmake.org/) - -In most cases you will find all of these in your distribution and -there shouln't be a need to compile anything manually. - -In Ubuntu 20.04, 22.04 and Debian 10, 11 you can install everything by typing: - - sudo apt-get install \ - g++ \ - libsdl2-dev \ - libsdl2-mixer-dev \ - libsdl2-image-dev \ - libpng12-dev \ - libjsoncpp-dev \ - libsigc++-2.0-dev \ - libfmt-dev \ - libglm-dev \ - libopenal-dev \ - libopusfile-dev \ - libvorbis-dev \ - libmpg123-dev \ - libmodplug-dev \ - cmake - - -Compilation ------------ - -Pingus uses git submodules for some parts of the code. To initialize -those you can either run (when cloning the repository): - - git clone --recursive https://gitlab.com/pingus/pingus.git - -Or run the following on an existing clone: - - git submodule update --init --recursive - -To compile the code: - - mkdir -p build - cd build - cmake .. - make - -If you need to change the compiler or other build variables you can do -so with in the `cmake` step, e.g.: - - cmake .. -DCMAKE_BUILD_TYPE=Debug - -The following variables are available: - -* `-DCMAKE_BUILD_TYPE=Release` -* `-DCMAKE_BUILD_TYPE=Debug` -* `-DBUILD_TESTS=ON` -* `-DCMAKE_INSTALL_PREFIX:PATH=/usr` - - -Running -------- - -Once the compilation is successful you can run Pingus directly from -the top level directory of the source tree via: - - build/pingus - -There is no need to install Pingus. - -If you have a slow machine, starting Pingus with: - - build/pingus -g 640x480 --frame-skip 3 - -Might lead to a better playable game. If you want to run Pingus in a -larger resolution, you can do so with: - - build//pingus -g 1024x768 - -Fullscreen support is available via: - - build/pingus --fullscreen - -Available languages can be listed with: - - build/pingus --list-languages - -And used with: - - build/pingus --language de - - -Installation ------------- - -As mentioned above, you don't need to install Pingus to run it, if you -still want to do it, you can do so with: - - make install - -The `DESTDIR` and `PREFIX` can be configured as follows: - - make install DESTDIR=/tmp/pingus - - cmake .. -DCMAKE_INSTALL_PREFIX:PATH=/usr - diff --git a/INSTALL.macosx.md b/INSTALL.macosx.md deleted file mode 100644 index a12b43b8d..000000000 --- a/INSTALL.macosx.md +++ /dev/null @@ -1,69 +0,0 @@ -Pingus Installation Guide for Mac OS X -====================================== - -Disclaimer ----------- - -The following guide assumes that you use macports to install the requirements. -You can also do this the hard way by finding/compiling the stuff yourself, -but if you're capable of doing so you won't need this guide anyway. - -See http://code.google.com/p/pingus/wiki/MacOS_X_Compiling if you are adventurous or do not want to us macports. - -This guide was written on OS X 10.5 "Leopard", where XCode brings gcc-4.0. -Since that's too old gcc-4.4 is installed using macports and also referenced -in the Makefile.macosx. If you have a recent compiler, just skip these parts -and adapt the makefile. - - -Requirements ------------- - -First get and install macports from http://www.macports.org/ -Next use macports to install pingus' requirements by typing: - - sudo port install libsdl libsdl_image libsdl_mixer boost scons - sudo port install gcc44 - - -Compilation ------------ - -Once all libraries are in place, you can compile Pingus with just: - - make -f Makefile.macosx - - -Running -------- - -Once the compilation is successful you can run Pingus directly from -the top level directory of the source tree via: - - ./pingus - -For details about the command line options etc. see INSTALL.unix - - -Creating an application bundle ------------------------------- - -To make pingus feel at home on OS X you may want to create an application bundle. -The follwogin steps will create a Pingus.app that can be used and distributed like -any other Mac OS X application. - -First we need some little helper utilities - - sudo port install dylibbundler makeicns - -Now the application bundle can be build - - make -f Makefile.macosx bundle - - -Distribute ----------- - -To create a compressed package for distribution frun the following command: - - make -f Makefile.macosx package diff --git a/Info.plist b/Info.plist deleted file mode 100644 index 330a04c26..000000000 --- a/Info.plist +++ /dev/null @@ -1,17 +0,0 @@ - - - - - CFBundleDevelopmentRegion English - CFBundleInfoDictionaryVersion 6.0 - CFBundlePackageType APPL - CSResourcesFileMapped - - CFBundleName Pingus - CFBundleIconFile pingus.icns - CFBundleExecutable pingus - CFBundleVersion 0.7.6 - CFBundleShortVersionString 0.7.6 - - - \ No newline at end of file diff --git a/COPYING b/LICENSE.txt similarity index 99% rename from COPYING rename to LICENSE.txt index 94a9ed024..f288702d2 100644 --- a/COPYING +++ b/LICENSE.txt @@ -1,7 +1,7 @@ GNU GENERAL PUBLIC LICENSE Version 3, 29 June 2007 - Copyright (C) 2007 Free Software Foundation, Inc. + Copyright (C) 2007 Free Software Foundation, Inc. Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. @@ -645,7 +645,7 @@ the "copyright" line and a pointer to where the full notice is found. GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program. If not, see . + along with this program. If not, see . Also add information on how to contact you by electronic and paper mail. @@ -664,11 +664,11 @@ might be different; for a GUI interface, you would use an "about box". You should also get your employer (if you work as a programmer) or school, if any, to sign a "copyright disclaimer" for the program, if necessary. For more information on this, and how to apply and follow the GNU GPL, see -. +. The GNU General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Lesser General Public License instead of this License. But first, please read -. +. diff --git a/Makefile.macosx b/Makefile.macosx deleted file mode 100644 index e573476f2..000000000 --- a/Makefile.macosx +++ /dev/null @@ -1,79 +0,0 @@ -# this Makefile assumes that you have used macports to install all the depemdencies. - -# that is were macports is installed by default -PORTSDIR = /opt/local -CPPPATH = $(PORTSDIR)/include -LIBPATH = $(PORTSDIR)/lib -# note that the default compoler on OS X 10.5 is gcc-4.0.1, which can't handle -std=c++0x -# you can set this simply to "gcc" and "g++" if your default compiler is gcc-4.4 of higher. -CC = $(PORTSDIR)/bin/gcc-mp-4.4 -CXX = $(PORTSDIR)/bin/g++-mp-4.4 -# the default (BSD) "install" does not support the -D flag, so we're using macports GNU variant -INSTALL = ginstall - -# the portable application bundle -BUNDLE = Pingus.app - -# the volume name for the package (the filename ,*.dmg, will include the VERSION) -# NOTE: currently an initial size of 100M is used. This has to be increased as needed! -PACKAGE = Pingus -# these files are, beside the bundle, added to the package -PACKAGEDOCS = README NEWS COPYING AUTHORS - -build/pingus: - mkdir -p build - scons CPPPATH=$(CPPPATH) LIBPATH=$(LIBPATH) CXX=$(CXX) CC=$(CC) - ln -fs build/pingus - -build/pingus.icns: data/images/icons/pingus-icon.png - mkdir -p build - makeicns -in $< -out $@ - -bundle: install-exec install-data install-icon - -create-app-bundle: build/pingus.icns - mkdir -p $(BUNDLE)/Contents/MacOS - mkdir -p $(BUNDLE)/Contents/Resources - mkdir -p $(BUNDLE)/Contents/libs - echo "APPL" > $(BUNDLE)/Contents/PkgInfo - -install-icon: create-app-bundle build/pingus - install build/pingus.icns $(BUNDLE)/Contents/Resources - echo "CFBundleIconFilepingus.icns" > $(BUNDLE)/Contents/Info.plist - -install-exec: create-app-bundle build/pingus - install build/pingus $(BUNDLE)/Contents/MacOS - dylibbundler -b -x $(BUNDLE)/Contents/MacOS/pingus -od -d $(BUNDLE)/Contents/libs/ - -install-data: - for file in `( cd data ; find . \ - -type f -a \( \ - -name "*.png" -o \ - -name "*.jpg" -o \ - -name "*.wav" -o \ - -name "*.scm" -o \ - -name "*.font" -o \ - -name "*.story" -o \ - -name "*.credits" -o \ - -name "*.prefab" -o \ - -name "*.it" -o \ - -name "*.ogg" -o \ - -name "*.s3m" -o \ - -name "*.po" -o \ - -name "*.worldmap" -o \ - -name "*.res" -o \ - -name "*.pingus" -o \ - -name "*.levelset" -o \ - -name "*.sprite" \ - \) )`; do $(INSTALL) -D data/$$file $(BUNDLE)/Contents/Resources/$$file; done - -package: bundle - hdiutil create -size 100M -fs HFS+J -volname $(PACKAGE) $(PACKAGE)-tmp.dmg - hdiutil attach $(PACKAGE)-tmp.dmg -readwrite -mount required - cp -R -p $(BUNDLE) /Volumes/$(PACKAGE)/ - cp $(PACKAGEDOCS) /Volumes/$(PACKAGE) - hdiutil detach /Volumes/$(PACKAGE) -force - ./SLA-dmg.sh COPYING Pingus-tmp.dmg - hdiutil convert $(PACKAGE)-tmp.dmg -format UDZO -imagekey zlib-level=9 -o $(PACKAGE)-`cat VERSION`.dmg - rm $(PACKAGE)-tmp.dmg - diff --git a/README.md b/README.md index af04d34ee..de9183c3d 100644 --- a/README.md +++ b/README.md @@ -1,46 +1,130 @@ Pingus ====== +Guide your penguins to safety! Introduction ------------ -Pingus is a free Lemmings(tm) clone for GNU/Linux, Win32 and other -operating systems supported by SDL2. It is covered under the GPL, check -the file COPYING, for more information. - -See `INSTALL.linux.md` for instructions on how to compile and run Pingus -from source on GNU/Linux and `INSTALL.macosx.md` for MacOSX. +Pingus is a free, open-source puzzle game inspired by the classic Lemmings™ clone. It is available for GNU/Linux, Win32 and other +operating systems supported by SDL2. Pingus Challenges you to guide a group of penguins through various obstacles to reach the exit safely. The game features engaging graphics, a variety of levels, and a built in level editor for endless possibilities and fun. It is licensed under the GPLv3+. Information about the game, new versions and additional documentation can be found at the Pingus webpage: -* http://pingus.gitlab.io/ +* https://pingus.github.io/ + +Table of Contents +------------- + + Features + Installation + Linux + Windows + macOS + Building + Launching the Game + Game Controls + Community + Mailing Lists + Chat + Bug Reports + Contributing + License + +Features +-------- + + * Over 100 Challenging Levels: Navigate through a variety of levels with increasing difficulty. + * Level Editor: Create your own levels and share them with the community. + * Engaging Graphics: Enjoy cute and colorful graphics that bring the game to life. + * Sound Effects and Music: Immerse yourself in the game with delightful audio. + * Multilingual Support: Available in multiple languages. + * Cross-Platform: Play on Linux, Windows, and other systems supported by SDL2. + +Installation +-------- +Linux) +Pingus can be installed on Linux using the Nix package manager: + nix run github:pingus/pingus + +Alternatively, Pingus may be available in your distribution's repositories: + +Ubuntu/Debian: + sudo apt-get install pingus + +Fedora: + sudo dnf install pingus + +Arch Linux: + sudo pacman -S pingus + +Windows) + +Download the latest Windows installer from the Pingus Releases page or compile it on Linux using: + nix build github:pingus/pingus#packages.i686-windows.pingus-win32 + +macOS) +Currently, Pingus does not have an official macOS installer. You can compile it from source using the instructions below. + + +Building +-------- + +Pingus uses [Nix package manager](https://nixos.org/download/), to +automatically download, compile and run it in Linux: + + nix run github:pingus/pingus + +The Windows version can be compiled in Linux with: + + nix build github:pingus/pingus#packages.i686-windows.pingus-win32 + + +Launching the Game +----------- +After installation or building from source, you can launch Pingus from your application menu or by running the following command in the terminal: + pingus + +If you used Nix to run the game: + nix run github:pingus/pingus + +Game Controls +---------- +Action Key +Move cursor Mouse +Select/Deselect Left Mouse Button +Assign Action Left Mouse Button on penguin +Pause/Unpause Game P +Speed Up Game + (Plus key) +Slow Down Game - (Minus key) +Open In-Game Menu Esc +Move Map Move mouse to screen edge or use Arrow Keys +Zoom In Page Up +Zoom Out Page Down +Toggle Fullscreen F +Restart Level R +Exit Level E +Display Help H +Quit Game Ctrl + Q + +Can Change game controls in the settings menu. Mailing Lists ------------- -There are currently two mailing lists available: - -* pingus-devel - A list for discussing development issues, like level +* pingus-devel - https://lists.nongnu.org/mailman/listinfo/pingus-devel + A list for discussing development issues, like level creation or code changes, but might as well be used for user issues like how to solve levels and such -* pingus-cvs - Read-only list to which all CVS commits get submitted, - only intersting for developers in general - -For information on how to subscribe to any of these lists have a look -at: - -* http://pingus.gitlab.io/contact.html +Chat +---- -IRC ---- +* IRC: irc://irc.libera.chat:6667/#pingus -For a quick help you can try the IRC server irc.freenode.net:6667 and -the channel #pingus, you can sometimes find the project maintainer -(nick: grumbel) there. +* Matrix: https://matrix.to/#/#pingus:matrix.org Bug Reports @@ -49,13 +133,14 @@ Bug Reports Bug reports, new levels and feature requests can be submitted to the issue tracker at: -* https://gitlab.com/pingus/pingus/issues +* https://github.com/pingus/pingus/issues -Nightly Builds --------------- +Contributing +-------- -Experimental nightly builds for Linux are available via [FlatPak](https://flatpak.org/): +Contributions are welcome! Whether it's reporting bugs, creating levels, improving documentation, or contributing code, your help is appreciated. - sudo flatpak remote-add --no-gpg-verify pingus "https://gitlab.com/pingus/pingus/-/jobs/artifacts/master/raw/build-flatpak-repo?job=build:flatpak" - sudo flatpak install pingus org.pingus.Pingus + * Code Contributions: Fork the repository, make your changes, and submit a pull request. + * Level Creation: Use the built-in level editor and share your levels with the community. + * Translations: Help translate Pingus into other languages. diff --git a/SLA-dmg.sh b/SLA-dmg.sh deleted file mode 100755 index af268f322..000000000 --- a/SLA-dmg.sh +++ /dev/null @@ -1,73 +0,0 @@ -#!/bin/bash -# -# This script appends the text from Q3A_EULA.txt to a .dmg as a SLA resource -# -# usage is './SLA-dmg.sh /path/to/Q3A_EULA.txt /path/to/ioquake3.dmg' -# - -if [ "x$1" = "x" ] || [ "x$2" = "x" ]; then - echo "usage: ./SLA-dmg.sh /path/to/Q3A_EULA.txt /path/to/ioquake3.dmg" - exit 1; -fi - -if [ ! -r $1 ]; then - echo "$1 is not a readable Q3A_EULA.txt file" - exit 1; -fi -if [ ! -w $2 ]; then - echo "$2 is not writable .dmg file" - exit 1; -fi -touch tmp.r -if [ ! -w tmp.r ]; then - echo "Could not create temporary file tmp.r for writing" - exit 1; -fi - -echo " -data 'LPic' (5000) { - \$\"0002 0011 0003 0001 0000 0000 0002 0000\" - \$\"0008 0003 0000 0001 0004 0000 0004 0005\" - \$\"0000 000E 0006 0001 0005 0007 0000 0007\" - \$\"0008 0000 0047 0009 0000 0034 000A 0001\" - \$\"0035 000B 0001 0020 000C 0000 0011 000D\" - \$\"0000 005B 0004 0000 0033 000F 0001 000C\" - \$\"0010 0000 000B 000E 0000\" -}; - -data 'TEXT' (5002, \"English\") { -" > tmp.r - -sed -e 's/"/\\"/g' -e 's/\(.*\)$/"\1\\n"/g' $1 >> tmp.r - -echo " -}; - -resource 'STR#' (5002, \"English\") { - { - \"English\", - \"Agree\", - \"Disagree\", - \"Print\", - \"Save...\", - \"IMPORTANT - Read this License Agreement carefully before clicking on \" - \"the \\\"Agree\\\" button. By clicking on the \\\"Agree\\\" button, you agree \" - \"to be bound by the terms of the License Agreement.\", - \"Software License Agreement\", - \"This text cannot be saved. This disk may be full or locked, or the \" - \"file may be locked.\", - \"Unable to print. Make sure you have selected a printer.\" - } -}; -" >> tmp.r - -hdiutil convert -format UDCO -o tmp.dmg $2 || exit 1 -hdiutil unflatten tmp.dmg || exit 1 -/Developer/Tools/Rez /Developer/Headers/FlatCarbon/*.r tmp.r -a -o tmp.dmg \ - || exit 1 -hdiutil flatten tmp.dmg || exit 1 -hdiutil internet-enable -yes tmp.dmg || exit 1 -mv tmp.dmg $2 || (echo "Could not copy tmp.dmg to $2" && exit 1) -rm tmp.dmg -rm tmp.r -echo "SLA $1 successfully added to $2" diff --git a/bundle_mac.sh b/bundle_mac.sh deleted file mode 100755 index c0c1b265d..000000000 --- a/bundle_mac.sh +++ /dev/null @@ -1,38 +0,0 @@ -echo "* Removing any existing installation" -rm -rf ./Pingus.app -rm -rf ./Pingus-`cat VERSION`.dmg - -echo "* Creating skeleton" -mkdir -p ./Pingus.app/Contents/Resources -mkdir ./Pingus.app/Contents/MacOS -cp Info.plist ./Pingus.app/Contents/Info.plist -cp ./data/images/icons/pingus-icon.icns ./Pingus.app/Contents/Resources/pingus.icns - -echo "* Copying executable" -cp ./build/pingus ./Pingus.app/Contents/MacOS/pingus - -echo "* Copying data files" -cp -r ./data/* ./Pingus.app/Contents/Resources/ - -echo "* Bunling dependencies" -dylibbundler -od -b -x ./Pingus.app/Contents/MacOS/pingus -d ./Pingus.app/Contents/libs/ - -echo "* Creating DMG" - hdiutil create -size 100M -fs HFS+J -volname Pingus Pingus-tmp.dmg - hdiutil attach Pingus-tmp.dmg -readwrite -mount required - cp -R Pingus.app /Volumes/Pingus/ - cp README /Volumes/Pingus - cp AUTHORS /Volumes/Pingus - cp COPYING /Volumes/Pingus - cp NEWS /Volumes/Pingus - hdiutil detach /Volumes/Pingus -force -read -p "Do you run OSX 10.6 or earlier? (y/n)" RESPONSE - if [ "$RESPONSE" = y ] ; then - ./SLA-dmg.sh COPYING Pingus-tmp.dmg - elif [ "$RESPONSE" = n ] ; then - ./licenseDMG.py Pingus-tmp.dmg COPYING - else - echo "You did not make a valid selection!" - fi - hdiutil convert Pingus-tmp.dmg -format UDBZ -o Pingus-`cat VERSION`.dmg - rm Pingus-tmp.dmg diff --git a/external/argpp b/external/argpp deleted file mode 160000 index cbbf41f22..000000000 --- a/external/argpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cbbf41f228b986df9bdd898e7203e7988876404e diff --git a/external/geomcpp b/external/geomcpp deleted file mode 160000 index 290cda394..000000000 --- a/external/geomcpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 290cda394df7efe25094887327faf3e1d28c333d diff --git a/external/logmich b/external/logmich deleted file mode 160000 index c963f735d..000000000 --- a/external/logmich +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c963f735df02f1944cd8db4c86a4c45f6f923d2a diff --git a/external/priocpp b/external/priocpp deleted file mode 160000 index 58fc2c180..000000000 --- a/external/priocpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 58fc2c18003e738d274f7fb76f1177151ff2f3cb diff --git a/external/sexpcpp b/external/sexpcpp deleted file mode 160000 index c7137f1e0..000000000 --- a/external/sexpcpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c7137f1e0351b8e193ae9d48fb381157a1f8377e diff --git a/external/strutcpp b/external/strutcpp deleted file mode 160000 index 06e63e8fb..000000000 --- a/external/strutcpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 06e63e8fbfe103e51bebe82299b2dc83969fa794 diff --git a/external/tinycmmc b/external/tinycmmc deleted file mode 160000 index 43c75c534..000000000 --- a/external/tinycmmc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 43c75c5344979c5ad4c65233aa407e3ec6d92c03 diff --git a/external/tinygettext b/external/tinygettext deleted file mode 160000 index a23e9ef74..000000000 --- a/external/tinygettext +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a23e9ef7406b3c430ec088214a2a063b2e64c6fe diff --git a/external/uitest b/external/uitest deleted file mode 160000 index 6be34dc37..000000000 --- a/external/uitest +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6be34dc37b1877b366fb26a7f0fc461b102eaa34 diff --git a/external/wstsound b/external/wstsound deleted file mode 160000 index 9e692e7a4..000000000 --- a/external/wstsound +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 9e692e7a40e6d6d0409007085e8f6fd22438f447 diff --git a/external/xdgcpp b/external/xdgcpp deleted file mode 160000 index 569bf5b6d..000000000 --- a/external/xdgcpp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 569bf5b6df6092e92ce60bebb125b75b301185e4 diff --git a/flake.lock b/flake.lock index 037b958cb..fc88bebaf 100644 --- a/flake.lock +++ b/flake.lock @@ -11,11 +11,11 @@ ] }, "locked": { - "lastModified": 1660923972, - "narHash": "sha256-xkVYQOjJyHkhxCKVz5S8Xhy30WzzolG538JCVeu4kQw=", + "lastModified": 1712097214, + "narHash": "sha256-lXu+tuvZw8WnbNHMHzCMeSE93fLQEhSz+xLWkaJ1cCA=", "owner": "grumnix", "repo": "SDL2-win32", - "rev": "34f0919fec05bcdba1c97ec6425bf18b5ebe2b4d", + "rev": "123c65858c5259437469a06f20cec5944ea4bb4b", "type": "github" }, "original": { @@ -35,11 +35,11 @@ ] }, "locked": { - "lastModified": 1660924118, - "narHash": "sha256-ApDMg66R0fd0GL+CRfxCirIe1igilBRODcC3I6sdqfQ=", + "lastModified": 1712097214, + "narHash": "sha256-XOPvwQkey5ud2rz4f9WIuAya9uUk0oweBPfs/KmX3cA=", "owner": "grumnix", "repo": "SDL2_image-win32", - "rev": "3bf368bd9c3932cdaebc7886af641bc8566ede03", + "rev": "621836b1854237666d7f3ca9e1b55f000a1f3c8a", "type": "github" }, "original": { @@ -51,6 +51,7 @@ "SDL2_image_src": { "flake": false, "locked": { + "lastModified": 1561870399, "narHash": "sha256-GNKF/bhxZ9WxpNVqRQ3yFf/8yiQntLXOYnhn22Sy9k0=", "type": "tarball", "url": "https://www.libsdl.org/projects/SDL_image/release/SDL2_image-devel-2.0.5-mingw.tar.gz" @@ -63,6 +64,7 @@ "SDL2_src": { "flake": false, "locked": { + "lastModified": 1650910413, "narHash": "sha256-7F8KGZaY6R7tzv/+0gNNm1FvDyrY4Z4PPuzYu+3pvNM=", "type": "tarball", "url": "https://libsdl.org/release/SDL2-devel-2.0.22-mingw.tar.gz" @@ -100,12 +102,15 @@ } }, "flake-utils": { + "inputs": { + "systems": "systems" + }, "locked": { - "lastModified": 1659877975, - "narHash": "sha256-zllb8aq3YO3h8B/U0/J1WBgAL8EX5yWf5pMj3G0NAmc=", + "lastModified": 1710146030, + "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=", "owner": "numtide", "repo": "flake-utils", - "rev": "c0e246b9b83f637f4681389ecabcb2681b4f3af0", + "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a", "type": "github" }, "original": { @@ -116,9 +121,6 @@ }, "geomcpp": { "inputs": { - "flake-utils": [ - "flake-utils" - ], "nixpkgs": [ "nixpkgs" ], @@ -127,11 +129,11 @@ ] }, "locked": { - "lastModified": 1660561995, - "narHash": "sha256-z2d2nz8BKyPjudk619U0D8aiPrXTtasMoBOewYPRkCo=", + "lastModified": 1716729078, + "narHash": "sha256-c5CIQTRS8qmlTdZ2D1hNnht3gD9snuQaqOWDiLAkE2g=", "owner": "grumbel", "repo": "geomcpp", - "rev": "e166eb4514efb46b7f0b6eb6524c1b6cb1457a92", + "rev": "730b3d35bc4fcd5f68764239682d936bae192811", "type": "github" }, "original": { @@ -153,11 +155,11 @@ ] }, "locked": { - "lastModified": 1660923767, - "narHash": "sha256-diDVUqzXbGDS2OxNmkVQxKYeDlQAOcF3nNaMzaeCMAE=", + "lastModified": 1712097214, + "narHash": "sha256-4L8wi+A5eKevKcjxLMhXvvHpolUMAyaejjohJmPOSBE=", "owner": "grumnix", "repo": "libmodplug-win32", - "rev": "1f1e3c13c85ac605b58fddc556ff73b2b9e4eab3", + "rev": "34cd19009c09b43e1d9b7dea7e95142ff5a6d15e", "type": "github" }, "original": { @@ -169,6 +171,7 @@ "libmodplug_src": { "flake": false, "locked": { + "lastModified": 1493040202, "narHash": "sha256-jNHspgIcrv5AUEgq2MB4TSqbj//tTCXiOoSqYjShGkw=", "type": "tarball", "url": "https://downloads.sourceforge.net/project/modplug-xmms/libmodplug/0.8.9.0/libmodplug-0.8.9.0.tar.gz" @@ -191,11 +194,11 @@ ] }, "locked": { - "lastModified": 1660923789, - "narHash": "sha256-+DPxwLvI7MtJEeUUEn5xOHmZjttCuiJjZ+0bgxy3by0=", + "lastModified": 1716728441, + "narHash": "sha256-HjPNH3gJisG7+keqmWh2SsRRKn/+0yeLloaow78RpFU=", "owner": "grumnix", "repo": "libogg-win32", - "rev": "6cafd6a3608db0b47b8bcd3e8b0f1bda4c1f46f0", + "rev": "7ac1ded6d96c3924a0a7905b75af2af3ea0dfaa3", "type": "github" }, "original": { @@ -207,6 +210,7 @@ "libogg_src": { "flake": false, "locked": { + "lastModified": 1622776889, "narHash": "sha256-L8hFWoCh2VTdlsOq+cbP1eYAnciH70xlk1eSwr8YP5c=", "type": "tarball", "url": "https://downloads.xiph.org/releases/ogg/libogg-1.3.5.tar.gz" @@ -233,11 +237,11 @@ ] }, "locked": { - "lastModified": 1660923805, - "narHash": "sha256-oI59MRrNeI7ueYG04VfHvBEXm1UeVudjyUfNWLNxdt8=", + "lastModified": 1716728493, + "narHash": "sha256-Ooh0dv6uRegUdvbVovgmctj0oxhp9tQh56ZyCYVouNE=", "owner": "grumnix", "repo": "libvorbis-win32", - "rev": "1aabf677f7ec7ec5f29be2651f05e7163c0b1f2e", + "rev": "c7fc737798ad8eec2e8d0899d603fbe0cb2e9455", "type": "github" }, "original": { @@ -249,6 +253,7 @@ "libvorbis_src": { "flake": false, "locked": { + "lastModified": 1593843770, "narHash": "sha256-xXty8sK0hmJX7jQu5+CDBslNVQ0+dZaUrbp/12xVmy0=", "type": "tarball", "url": "https://downloads.xiph.org/releases/vorbis/libvorbis-1.3.7.tar.xz" @@ -260,9 +265,6 @@ }, "logmich": { "inputs": { - "flake-utils": [ - "flake-utils" - ], "nixpkgs": [ "nixpkgs" ], @@ -271,11 +273,11 @@ ] }, "locked": { - "lastModified": 1660503729, - "narHash": "sha256-NKVJPa8JMRWy5YPCdA/OrAdUDQHGPFPHpcz8arQ0oYg=", + "lastModified": 1716728859, + "narHash": "sha256-RgyLWkRBOCvuCmyvfG0WSDH6PzTEuE36RKcIrgef7eA=", "owner": "logmich", "repo": "logmich", - "rev": "22186da9b4a2fe7318cabcdf327f1b7693a50378", + "rev": "0cc475efc10c6786d1d805c997fab1d7da60252a", "type": "github" }, "original": { @@ -297,11 +299,11 @@ ] }, "locked": { - "lastModified": 1660923818, - "narHash": "sha256-BoxEFDJt0VbA1rZoYTjv1J+HF/aMZP4GcKa+5bhC3u4=", + "lastModified": 1716728685, + "narHash": "sha256-+oyZIT88pcIuWUW1jw69KpxEjvqU1QDtF3VV6hiTVAo=", "owner": "grumnix", "repo": "mpg123-win32", - "rev": "81f61824b806555d2d7f4c2229b987a3b2238c26", + "rev": "aead750a3614f02601f7e81f67751b9f64eeab07", "type": "github" }, "original": { @@ -313,27 +315,28 @@ "mpg123_src": { "flake": false, "locked": { - "narHash": "sha256-df+AH4sCwVj89IRKBCseDR+93LY8RPuGo/F0KtULEys=", + "lastModified": 1679225440, + "narHash": "sha256-OGSGPiIZbcBhovnX+rMquDECVT0myZDpJFxMYQMK4TM=", "type": "tarball", - "url": "https://downloads.sourceforge.net/project/mpg123/mpg123/1.30.2/mpg123-1.30.2.tar.bz2" + "url": "https://downloads.sourceforge.net/project/mpg123/mpg123/1.31.3/mpg123-1.31.3.tar.bz2" }, "original": { "type": "tarball", - "url": "https://downloads.sourceforge.net/project/mpg123/mpg123/1.30.2/mpg123-1.30.2.tar.bz2" + "url": "https://downloads.sourceforge.net/project/mpg123/mpg123/1.31.3/mpg123-1.31.3.tar.bz2" } }, "nixpkgs": { "locked": { - "lastModified": 1660749083, - "narHash": "sha256-GHLFMGH+r3OmI4tV0x/RtxN7DkHcH2ZOhK8uzQeSLiY=", + "lastModified": 1716542732, + "narHash": "sha256-0Y9fRr0CUqWT4KgBITmaGwlnNIGMYuydu2L8iLTfHU4=", "owner": "NixOS", "repo": "nixpkgs", - "rev": "a55a7db823959cf509d55325201f1864af4574b9", + "rev": "d12251ef6e8e6a46e05689eeccd595bdbd3c9e60", "type": "github" }, "original": { "owner": "NixOS", - "ref": "nixos-22.05", + "ref": "nixos-24.05", "repo": "nixpkgs", "type": "github" } @@ -351,11 +354,11 @@ ] }, "locked": { - "lastModified": 1660923864, - "narHash": "sha256-aDhqX8rBQQ5vQG/8xFx0yQYYcpWoPuylnCdWrrsuwLA=", + "lastModified": 1712097214, + "narHash": "sha256-cuiOE7lCr25PVRgrRZ0nlT9e07oXDh20e/Tc4XoUNcs=", "owner": "grumnix", "repo": "openal-soft-win32", - "rev": "0bf5853f9484fb7352a906d895fc34c809687626", + "rev": "cf2d13dc31a9cbeafcd871287ed82d8c634f0348", "type": "github" }, "original": { @@ -394,11 +397,11 @@ ] }, "locked": { - "lastModified": 1660923895, - "narHash": "sha256-6y5gWCTzoSb0BGsK+If79hoxV/4TFKmQ39aRsz1QL0E=", + "lastModified": 1716728603, + "narHash": "sha256-3+GUby3dHbQPdsBiGQlQ9XgNyZe1hORqbQpGUCzFm1E=", "owner": "grumnix", "repo": "opus-win32", - "rev": "c2ee58f8908bcc677ed854c548d3f662293e1cac", + "rev": "4530cd6280b2c239d8df717943fa0f63b1a3a650", "type": "github" }, "original": { @@ -410,6 +413,7 @@ "opus_src": { "flake": false, "locked": { + "lastModified": 1555106623, "narHash": "sha256-VyHmKoRXCJ0shVfUn6cX13b0fAXIQk0Z5NLZIfy8Gh4=", "type": "tarball", "url": "https://archive.mozilla.org/pub/opus/opus-1.3.1.tar.gz" @@ -440,11 +444,11 @@ ] }, "locked": { - "lastModified": 1660923918, - "narHash": "sha256-WU3SUyEwufVFygaUEL2u4gfkovW1vc2ueHhhji1jRtQ=", + "lastModified": 1716728646, + "narHash": "sha256-pCL8yrYE3EppKKrv8ORuCaWepm6eYmsYj3I1WoIxWDQ=", "owner": "grumnix", "repo": "opusfile-win32", - "rev": "7422707b6478d31e73450afa6e972fb106d346e1", + "rev": "c19b24efe82fd596016d7805e9206466c0b5744e", "type": "github" }, "original": { @@ -456,6 +460,7 @@ "opusfile_src": { "flake": false, "locked": { + "lastModified": 1593226173, "narHash": "sha256-UEoOyY9DM5lINTAHIfSRK5+o622pIK2ObQ00swIcM40=", "type": "tarball", "url": "https://downloads.xiph.org/releases/opus/opusfile-0.12.tar.gz" @@ -476,19 +481,17 @@ "nixpkgs": [ "nixpkgs" ], - "sexpcpp": [ - "sexpcpp" - ], + "sexpcpp": "sexpcpp", "tinycmmc": [ "tinycmmc" ] }, "locked": { - "lastModified": 1660504736, - "narHash": "sha256-t0BXpjsPjCXlh/XNXUVcMzvYgnROwYjwVsBTwT+Yhlc=", + "lastModified": 1716729881, + "narHash": "sha256-49nt9ehd6YJPKjQaqfJoiiriLge6ui0RuJI+YXt/j5A=", "owner": "grumbel", "repo": "priocpp", - "rev": "5dfa953ff0b099903c905a76ae9055aa9831ca97", + "rev": "214a0ff789d5c58e76d870fe2e75f98857991855", "type": "github" }, "original": { @@ -507,7 +510,6 @@ "logmich": "logmich", "nixpkgs": "nixpkgs", "priocpp": "priocpp", - "sexpcpp": "sexpcpp", "strutcpp": "strutcpp", "tinycmmc": "tinycmmc", "tinygettext": "tinygettext", @@ -519,21 +521,24 @@ "sexpcpp": { "inputs": { "flake-utils": [ + "priocpp", "flake-utils" ], "nixpkgs": [ + "priocpp", "nixpkgs" ], "tinycmmc": [ + "priocpp", "tinycmmc" ] }, "locked": { - "lastModified": 1660503231, - "narHash": "sha256-Bm+FIzO3iyK0NtZOeRVyhuFdPHon3VQUyrOjy3EHpCI=", + "lastModified": 1716729616, + "narHash": "sha256-P9NQI/H7zR2SGBghL7XsV4WM5e+yI1XNojLOuM7g5Fc=", "owner": "lispparser", "repo": "sexp-cpp", - "rev": "ade5eb3193500031dab0c2b180e4fd4fcb7bda26", + "rev": "4d8096c223d2f469ca6e407e793d20980f6aba76", "type": "github" }, "original": { @@ -552,11 +557,11 @@ ] }, "locked": { - "lastModified": 1660505409, - "narHash": "sha256-4juFaDnOhUKhIo8bNLeKEFeXQ+bw+iDQ0G22Qr9w7K0=", + "lastModified": 1716730715, + "narHash": "sha256-RwTHHC1S2rFnvkeF5SzvQtqCUpfOCLY/VeuUNjAmZFQ=", "owner": "grumbel", "repo": "strutcpp", - "rev": "4b00d49250db4e42e46068d5b4e42a2f8c5ccf51", + "rev": "108ac9bb4993d661187ac7add0863abc7ff2531f", "type": "github" }, "original": { @@ -565,6 +570,21 @@ "type": "github" } }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + }, "tinycmmc": { "inputs": { "flake-utils": [ @@ -575,11 +595,11 @@ ] }, "locked": { - "lastModified": 1660915337, - "narHash": "sha256-RUvBcVlsF0jleNeDGP2TtTYVozsx+7lJeOlQJ9vuYrk=", + "lastModified": 1701699760, + "narHash": "sha256-L0vwqcTQFOiFfRY90nBgDuUsVOYS0+S8BfVxFvaFBNM=", "owner": "grumbel", "repo": "tinycmmc", - "rev": "25af158259bc772a5393c6200c4ebfd0ec4e28d0", + "rev": "9a51e13802d930feb7261ba8876940659b258cb7", "type": "github" }, "original": { @@ -601,11 +621,11 @@ ] }, "locked": { - "lastModified": 1660505802, - "narHash": "sha256-rCneT/lpadOKDytVgY+6R1XwD8OrMTg7an4hBLhRl24=", + "lastModified": 1716730780, + "narHash": "sha256-sUm+Eet95i1JIRaUote7vvf8eS+QY7Vo9rSjNZnS4mM=", "owner": "tinygettext", "repo": "tinygettext", - "rev": "2fcecb76900fac852fd4006e4d49b0744b1031e1", + "rev": "2e25c91ddb6c180928a6a29d7091f0bdfe5a81bd", "type": "github" }, "original": { @@ -627,11 +647,11 @@ ] }, "locked": { - "lastModified": 1660505521, - "narHash": "sha256-ySgrHgwQO5itI1JgLtFMULPhYNipOYrGd/ECtxFbWO8=", + "lastModified": 1716730030, + "narHash": "sha256-xD2Ecs9hW3lcQW6RNcjVhGX/eor2RbCHHXohTafC9y0=", "owner": "grumbel", "repo": "uitest", - "rev": "c436b1b990a94d2d989966013e602fd8a621e43d", + "rev": "d845427140cbcbce99bb6c72919199ac5f033784", "type": "github" }, "original": { @@ -660,11 +680,11 @@ ] }, "locked": { - "lastModified": 1660924180, - "narHash": "sha256-9oElStrKrBZ8xalxoG/BsoGBIOgdKMOkgm8j2M3drQE=", + "lastModified": 1716728751, + "narHash": "sha256-YUEYUNb8eiQI1KeI0x7NigxZJ0eM7teienylpE19Zw0=", "owner": "WindstilleTeam", "repo": "wstsound", - "rev": "f1d641a80528240d5d7e60a2af1899d70fe2490e", + "rev": "289cae8dd2b1e75c447b063a6a4299bf139d4249", "type": "github" }, "original": { @@ -683,11 +703,11 @@ ] }, "locked": { - "lastModified": 1658512131, - "narHash": "sha256-F4D3HyaJ5djL8YzLl1tzIuum6HYirxERIsNYchBcxdU=", + "lastModified": 1716727866, + "narHash": "sha256-eujYRUw8UpDFgEvjHUPsJ/QJN+A+hzcebfgteM9kvXM=", "owner": "grumbel", "repo": "xdgcpp", - "rev": "569bf5b6df6092e92ce60bebb125b75b301185e4", + "rev": "e2c40c081e2ee2d315d1d0b3ae5981d5fd77260e", "type": "github" }, "original": { diff --git a/flake.nix b/flake.nix index 7517ddf13..691530033 100644 --- a/flake.nix +++ b/flake.nix @@ -2,7 +2,7 @@ description = "A free Lemmings clone with penguins"; inputs = { - nixpkgs.url = "github:NixOS/nixpkgs/nixos-22.05"; + nixpkgs.url = "github:NixOS/nixpkgs?ref=nixos-24.05"; flake-utils.url = "github:numtide/flake-utils"; tinycmmc.url = "github:grumbel/tinycmmc"; @@ -21,12 +21,10 @@ geomcpp.url = "github:grumbel/geomcpp"; geomcpp.inputs.nixpkgs.follows = "nixpkgs"; - geomcpp.inputs.flake-utils.follows = "flake-utils"; geomcpp.inputs.tinycmmc.follows = "tinycmmc"; logmich.url = "github:logmich/logmich"; logmich.inputs.nixpkgs.follows = "nixpkgs"; - logmich.inputs.flake-utils.follows = "flake-utils"; logmich.inputs.tinycmmc.follows = "tinycmmc"; priocpp.url = "github:grumbel/priocpp"; @@ -34,16 +32,9 @@ priocpp.inputs.flake-utils.follows = "flake-utils"; priocpp.inputs.tinycmmc.follows = "tinycmmc"; priocpp.inputs.logmich.follows = "logmich"; - priocpp.inputs.sexpcpp.follows = "sexpcpp"; - - sexpcpp.url = "github:lispparser/sexp-cpp"; - sexpcpp.inputs.nixpkgs.follows = "nixpkgs"; - sexpcpp.inputs.flake-utils.follows = "flake-utils"; - sexpcpp.inputs.tinycmmc.follows = "tinycmmc"; strutcpp.url = "github:grumbel/strutcpp"; strutcpp.inputs.nixpkgs.follows = "nixpkgs"; - strutcpp.inputs.flake-utils.follows = "flake-utils"; strutcpp.inputs.tinycmmc.follows = "tinycmmc"; tinygettext.url = "github:tinygettext/tinygettext"; @@ -54,7 +45,6 @@ xdgcpp.url = "github:grumbel/xdgcpp"; xdgcpp.inputs.nixpkgs.follows = "nixpkgs"; xdgcpp.inputs.flake-utils.follows = "flake-utils"; - xdgcpp.inputs.tinycmmc.follows = "tinycmmc"; wstsound.url = "github:WindstilleTeam/wstsound"; wstsound.inputs.nixpkgs.follows = "nixpkgs"; @@ -71,7 +61,7 @@ }; outputs = { self, nixpkgs, flake-utils, - tinycmmc, uitest, argpp, geomcpp, logmich, priocpp, sexpcpp, strutcpp, + tinycmmc, uitest, argpp, geomcpp, logmich, priocpp, strutcpp, tinygettext, xdgcpp, wstsound, SDL2-win32, SDL2_image-win32 }: tinycmmc.lib.eachSystemWithPkgs (pkgs: @@ -81,11 +71,12 @@ pingus = pkgs.callPackage ./pingus.nix { inherit self; + stdenv = pkgs.stdenv; + argpp = argpp.packages.${pkgs.system}.default; geomcpp = geomcpp.packages.${pkgs.system}.default; logmich = logmich.packages.${pkgs.system}.default; - priocpp = priocpp.packages.${pkgs.system}.default; - sexpcpp = sexpcpp.packages.${pkgs.system}.default; + priocpp = priocpp.packages.${pkgs.system}.priocpp-sexp; strutcpp = strutcpp.packages.${pkgs.system}.default; tinycmmc = tinycmmc.packages.${pkgs.system}.default; tinygettext = tinygettext.packages.${pkgs.system}.default; diff --git a/licenseDMG.py b/licenseDMG.py deleted file mode 100755 index c2f6fbf91..000000000 --- a/licenseDMG.py +++ /dev/null @@ -1,141 +0,0 @@ -#! /usr/bin/env python -""" -This script adds a license file to a DMG. Requires Xcode and a plain ascii text -license file. -Obviously only runs on a Mac. - -Copyright (C) 2011 Jared Hobbs - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. -""" -import os -import sys -import tempfile -import optparse - - -class Path(str): - def __enter__(self): - return self - - def __exit__(self, type, value, traceback): - os.unlink(self) - - -def mktemp(dir=None, suffix=''): - (fd, filename) = tempfile.mkstemp(dir=dir, suffix=suffix) - os.close(fd) - return Path(filename) - - -def main(options, args): - dmgFile, license = args - with mktemp('.') as tmpFile: - with open(tmpFile, 'w') as f: - f.write("""data 'LPic' (5000) { - $"0002 0011 0003 0001 0000 0000 0002 0000" - $"0000 000E 0006 0001 0005 0007 0000 0007" - $"0008 0000 0047 0009 0000 0034 000A 0001" - $"0035 000B 0001 0020 000C 0000 0011 000D" - $"0000 005B 0004 0000 0033 000F 0001 000C" - $"0010 0000 000B 000E 0000" -};\n\n""") - with open(license, 'r') as l: - f.write('data \'TEXT\' (5002, "English") {\n') - for line in l: - if len(line) < 1000: - f.write(' "' + line.strip().replace('"', '\\"') + - '\\n"\n') - else: - for liner in line.split('.'): - f.write(' "' + - liner.strip().replace('"', '\\"') + - '. \\n"\n') - f.write('};\n\n') - f.write("""resource 'STR#' (5002, "English") { - { - "English", - "Agree", - "Disagree", - "Print", - "Save...", - "IMPORTANT - By clicking on the \\"Agree\\" button, you agree " - "to be bound by the terms of the License Agreement.", - "Software License Agreement", - "This text cannot be saved. This disk may be full or locked, or the " - "file may be locked.", - "Unable to print. Make sure you have selected a printer." - } -};""") - os.system('/usr/bin/hdiutil unflatten -quiet "%s"' % dmgFile) - os.system('%s "%s/"*.r %s -a -o "%s"' % - (options.rez, options.flat_carbon, tmpFile, dmgFile)) - - os.system('/usr/bin/hdiutil flatten -quiet "%s"' % dmgFile) - if options.compression is not None: - os.system('cp %s %s.temp.dmg' % (dmgFile, dmgFile)) - os.remove(dmgFile) - if options.compression == "bz2": - os.system('hdiutil convert %s.temp.dmg -format UDBZ -o %s' % - (dmgFile, dmgFile)) - elif options.compression == "gz": - os.system('hdiutil convert %s.temp.dmg -format ' % dmgFile + - 'UDZO -imagekey zlib-devel=9 -o %s' % dmgFile) - os.remove('%s.temp.dmg' % dmgFile) - print "Successfully added license to '%s'" % dmgFile - -if __name__ == '__main__': - parser = optparse.OptionParser() - parser.set_usage("""%prog [OPTIONS] - This program adds a software license agreement to a DMG file. - It requires Xcode and a plain ascii text . - - See --help for more details.""") - parser.add_option( - '--rez', - '-r', - action='store', - default='/Applications/Xcode.app/Contents/Developer/Tools/Rez', - help='The path to the Rez tool. Defaults to %default' - ) - parser.add_option( - '--flat-carbon', - '-f', - action='store', - default='/Applications/Xcode.app/Contents/Developer/Platforms' - '/MacOSX.platform/Developer/SDKs/MacOSX10.7.sdk' - '/Developer/Headers/FlatCarbon', - help='The path to the FlatCarbon headers. Defaults to %default' - ) - parser.add_option( - '--compression', - '-c', - action='store', - choices=['bz2', 'gz'], - default=None, - help='Optionally compress dmg using specified compression type. ' - 'Choices are bz2 and gz.' - ) - options, args = parser.parse_args() - cond = len(args) != 2 or not os.path.exists(options.rez) \ - or not os.path.exists(options.flat_carbon) - if cond: - parser.print_usage() - sys.exit(1) - main(options, args) diff --git a/pingus.appdata.xml.in b/pingus.appdata.xml.in deleted file mode 100644 index 21183bfc5..000000000 --- a/pingus.appdata.xml.in +++ /dev/null @@ -1,47 +0,0 @@ - - - - org.seul.pingus.Pingus - CC0-1.0 - GPL-3.0+ - - mild - mild - mild - mild - - Pingus - Guide groups of penguins through various obstacles - -

- A 2d side scrolling puzzle game where you guide large groups of - little penguins through various obstacles and dangers using - their numerous talents. -

-

- A level editor is included to allow building your own levels and - numerous user contributed levels are included as well. -

-

- The game is heavily inspired by the classic Lemmings. -

-
- Ingo Ruhnke - grumbel@gmail.com - https://pingus.gitlab.io - https://gitlab.com/pingus/pingus/issues - - Game - LogicGame - - - http://pingus.gitlab.io/images/screen_0.7.0-1.jpg - http://pingus.gitlab.io/images/screen_0.7.0-2.jpg - http://pingus.gitlab.io/images/screen_0.7.0-3.jpg - http://pingus.gitlab.io/images/screen_0.7.0-4.jpg - http://pingus.gitlab.io/images/screen_0.7.0-5.jpg - - - - -
diff --git a/pingus.nix b/pingus.nix index 5a76d48b0..8652a30b0 100644 --- a/pingus.nix +++ b/pingus.nix @@ -11,14 +11,13 @@ , libsigcxx , makeWrapper , mesa -, pkgconfig +, pkg-config , mcfgthreads , argpp , geomcpp , logmich , priocpp -, sexpcpp , strutcpp , tinycmmc , tinygettext @@ -50,7 +49,7 @@ stdenv.mkDerivation { nativeBuildInputs = [ cmake - pkgconfig + pkg-config ] ++ (lib.optional (!stdenv.targetPlatform.isWindows) makeWrapper); postFixup = '' @@ -87,7 +86,6 @@ stdenv.mkDerivation { geomcpp logmich priocpp - sexpcpp strutcpp tinycmmc tinygettext diff --git a/src/editor/editor_screen.cpp b/src/editor/editor_screen.cpp index 206e985a3..b2526c4e3 100644 --- a/src/editor/editor_screen.cpp +++ b/src/editor/editor_screen.cpp @@ -17,6 +17,7 @@ #include "editor/editor_screen.hpp" +#include #include #include diff --git a/src/editor/file_dialog.cpp b/src/editor/file_dialog.cpp index ed3c56d0f..39838ca3b 100644 --- a/src/editor/file_dialog.cpp +++ b/src/editor/file_dialog.cpp @@ -16,6 +16,8 @@ #include "editor/file_dialog.hpp" +#include + #include #include "editor/button.hpp" diff --git a/src/editor/level_properties.cpp b/src/editor/level_properties.cpp index 11999a0d6..14f9c14e4 100644 --- a/src/editor/level_properties.cpp +++ b/src/editor/level_properties.cpp @@ -16,6 +16,8 @@ #include "editor/level_properties.hpp" +#include + #include #include #include diff --git a/src/editor/message_box.cpp b/src/editor/message_box.cpp index 5a8c6351f..a4fcb31e0 100644 --- a/src/editor/message_box.cpp +++ b/src/editor/message_box.cpp @@ -16,6 +16,8 @@ #include "editor/message_box.hpp" +#include + #include "editor/gui_style.hpp" #include "pingus/gettext.h" #include "pingus/fonts.hpp" diff --git a/src/editor/object_properties.cpp b/src/editor/object_properties.cpp index 49737d528..23fbe1999 100644 --- a/src/editor/object_properties.cpp +++ b/src/editor/object_properties.cpp @@ -16,6 +16,8 @@ #include "editor/object_properties.hpp" +#include + #include #include #include diff --git a/src/editor/object_selector.cpp b/src/editor/object_selector.cpp index 306ddf5c6..812e9ea92 100644 --- a/src/editor/object_selector.cpp +++ b/src/editor/object_selector.cpp @@ -16,6 +16,8 @@ #include "editor/object_selector.hpp" +#include + #include #include "editor/generic_level_obj.hpp" diff --git a/src/editor/viewport.cpp b/src/editor/viewport.cpp index 90bcf9b31..d31ac3a31 100644 --- a/src/editor/viewport.cpp +++ b/src/editor/viewport.cpp @@ -17,6 +17,8 @@ #include "editor/viewport.hpp" +#include + #include #include "editor/editor_level.hpp" diff --git a/src/fwd.hpp b/src/fwd.hpp index 8c627d7d3..49910790b 100644 --- a/src/fwd.hpp +++ b/src/fwd.hpp @@ -25,7 +25,6 @@ class ArmageddonButton; class BButton; class ButtonPanel; class CollisionMap; -class CommandLineOptions; class DemoPlayer; class DrawingContext; class FPSCounter; @@ -52,6 +51,7 @@ class SmallMap; class StoryScreenComponent; class WorldObj; class WorldObjAbstractFactory; +struct CommandLineOptions; } // namespace pingus namespace pingus::gui { diff --git a/src/pingus/screens/level_menu.cpp b/src/pingus/screens/level_menu.cpp index defd91567..a88861325 100644 --- a/src/pingus/screens/level_menu.cpp +++ b/src/pingus/screens/level_menu.cpp @@ -16,10 +16,10 @@ #include "pingus/screens/level_menu.hpp" -#include - +#include #include +#include #include #include "engine/display/display.hpp" diff --git a/src/pingus/screens/option_menu.cpp b/src/pingus/screens/option_menu.cpp index 8db507e4b..072b14729 100644 --- a/src/pingus/screens/option_menu.cpp +++ b/src/pingus/screens/option_menu.cpp @@ -16,6 +16,7 @@ #include "pingus/screens/option_menu.hpp" +#include #include #include diff --git a/src/util/pathname.hpp b/src/util/pathname.hpp index 544e1bfce..496cb0a28 100644 --- a/src/util/pathname.hpp +++ b/src/util/pathname.hpp @@ -17,6 +17,7 @@ #ifndef HEADER_PINGUS_UTIL_PATHNAME_HPP #define HEADER_PINGUS_UTIL_PATHNAME_HPP +#include #include #include #include