aboutsummaryrefslogtreecommitdiff
path: root/games/einstein
diff options
context:
space:
mode:
Diffstat (limited to 'games/einstein')
-rw-r--r--games/einstein/README4
-rw-r--r--games/einstein/doinst.sh3
-rw-r--r--games/einstein/einstein.SlackBuild62
-rw-r--r--games/einstein/einstein.desktop10
-rw-r--r--games/einstein/einstein.info8
-rw-r--r--games/einstein/einstein.pngbin0 -> 914 bytes
-rw-r--r--games/einstein/patches/01_sdl.diff108
-rw-r--r--games/einstein/patches/02_prefix.diff11
-rw-r--r--games/einstein/patches/06_srand.diff11
-rw-r--r--games/einstein/patches/07_long.diff31
-rw-r--r--games/einstein/patches/09_colors.diff22
-rw-r--r--games/einstein/slack-desc19
12 files changed, 289 insertions, 0 deletions
diff --git a/games/einstein/README b/games/einstein/README
new file mode 100644
index 0000000000000..c5e89afb57cd9
--- /dev/null
+++ b/games/einstein/README
@@ -0,0 +1,4 @@
+Einstein puzzle is a free cross-platform open source remake of old
+DOS game Sherlock which was inspired by Albert Einstein's puzzle.
+Einstein said that only those with an intelligence quotient of 98
+percentile and higher should be able to solve it.
diff --git a/games/einstein/doinst.sh b/games/einstein/doinst.sh
new file mode 100644
index 0000000000000..3857649f506a8
--- /dev/null
+++ b/games/einstein/doinst.sh
@@ -0,0 +1,3 @@
+if [ -x /usr/bin/update-desktop-database ]; then
+ /usr/bin/update-desktop-database -q usr/share/applications &> /dev/null
+fi
diff --git a/games/einstein/einstein.SlackBuild b/games/einstein/einstein.SlackBuild
new file mode 100644
index 0000000000000..b3a53e319d311
--- /dev/null
+++ b/games/einstein/einstein.SlackBuild
@@ -0,0 +1,62 @@
+#!/bin/sh
+
+# Slackware build script for einstein
+# Written by Erik Hanson erik@slackbuilds.org
+
+PRGNAM=einstein
+VERSION=2.0
+ARCH=${ARCH:-i486}
+BUILD=${BUILD:-1}
+TAG=${TAG:-_SBo}
+
+CWD=$(pwd)
+TMP=${TMP:-/tmp/SBo}
+PKG=$TMP/package-$PRGNAM
+OUTPUT=${OUTPUT:-/tmp}
+
+if [ "$ARCH" = "i486" ]; then
+ SLKCFLAGS="-O2 -march=i486 -mtune=i686"
+elif [ "$ARCH" = "i686" ]; then
+ SLKCFLAGS="-O2 -march=i686 -mtune=i686"
+fi
+
+set -eu
+
+rm -rf $PKG
+mkdir -p $TMP $PKG $OUTPUT
+cd $TMP
+rm -rf $PRGNAM-$VERSION
+tar xvf $CWD/$PRGNAM-$VERSION-src.tar.gz
+cd $PRGNAM-$VERSION
+chown -R root:root .
+find . \
+ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \
+ -exec chmod 755 {} \; -o \
+ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \
+ -exec chmod 644 {} \;
+
+# Some patches from debian.
+for PATCH in $CWD/patches/*.diff ; do
+ patch -p0 < $PATCH
+done
+
+# Build
+make PREFIX="/usr" OPTIMIZE="$SLKCFLAGS"
+
+# Install
+install -D -s -m 0755 einstein $PKG/usr/games/einstein
+install -D einstein.res $PKG/usr/share/einstein/res/einstein.res
+install -D $CWD/einstein.desktop $PKG/usr/share/applications/einstein.desktop
+install -D $CWD/einstein.png $PKG/usr/share/pixmaps/einstein.png
+
+mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
+cp -a README $CWD/patches $PKG/usr/doc/$PRGNAM-$VERSION
+cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
+chown -R root:root $PKG/usr/doc/$PRGNAM-$VERSION
+
+mkdir -p $PKG/install
+cat $CWD/slack-desc > $PKG/install/slack-desc
+cat $CWD/doinst.sh > $PKG/install/doinst.sh
+
+cd $PKG
+/sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.tgz
diff --git a/games/einstein/einstein.desktop b/games/einstein/einstein.desktop
new file mode 100644
index 0000000000000..6352d18bcf97c
--- /dev/null
+++ b/games/einstein/einstein.desktop
@@ -0,0 +1,10 @@
+[Desktop Entry]
+Version=1.0
+Name=Einstein
+Comment="Puzzle game inspired by Einstein's puzzle"
+Exec=einstein
+Icon=einstein
+Terminal=false
+Type=Application
+Categories=Game;LogicGame;
+StartupNotify=false
diff --git a/games/einstein/einstein.info b/games/einstein/einstein.info
new file mode 100644
index 0000000000000..70c44e12ae6eb
--- /dev/null
+++ b/games/einstein/einstein.info
@@ -0,0 +1,8 @@
+PRGNAM="einstein"
+VERSION="2.0"
+HOMEPAGE="http://games.flowix.com/en/index.html"
+DOWNLOAD="http://games.flowix.com/files/einstein/einstein-2.0-src.tar.gz"
+MD5SUM="c1d98e761c10af63f03462ead625f80c"
+MAINTAINER="Erik Hanson"
+EMAIL="erik@slackbuilds.org"
+APPROVED="rworkman"
diff --git a/games/einstein/einstein.png b/games/einstein/einstein.png
new file mode 100644
index 0000000000000..529c8195673e5
--- /dev/null
+++ b/games/einstein/einstein.png
Binary files differ
diff --git a/games/einstein/patches/01_sdl.diff b/games/einstein/patches/01_sdl.diff
new file mode 100644
index 0000000000000..480a1a519d91f
--- /dev/null
+++ b/games/einstein/patches/01_sdl.diff
@@ -0,0 +1,108 @@
+diff -ruN ../orig/einstein-2.0.dfsg.2/font.h ./font.h
+--- ../orig/einstein-2.0.dfsg.2/font.h 2005-08-16 00:33:17.000000000 +0200
++++ ./font.h 2007-08-31 10:00:33.000000000 +0200
+@@ -3,7 +3,7 @@
+
+
+ #include <string>
+-#include <SDL_ttf.h>
++#include <SDL/SDL_ttf.h>
+
+
+ class Font
+diff -ruN ../orig/einstein-2.0.dfsg.2/iconset.h ./iconset.h
+--- ../orig/einstein-2.0.dfsg.2/iconset.h 2005-08-14 04:40:58.000000000 +0200
++++ ./iconset.h 2007-08-31 09:51:37.000000000 +0200
+@@ -2,7 +2,7 @@
+ #define __ICONSET_H__
+
+
+-#include <SDL.h>
++#include <SDL/SDL.h>
+
+
+ class IconSet
+diff -ruN ../orig/einstein-2.0.dfsg.2/main.cpp ./main.cpp
+--- ../orig/einstein-2.0.dfsg.2/main.cpp 2007-08-31 08:42:16.000000000 +0200
++++ ./main.cpp 2007-08-31 10:06:07.000000000 +0200
+@@ -1,8 +1,8 @@
+ #include <stdlib.h>
+ #include <iostream>
+-#include <SDL.h>
+-#include <SDL_main.h>
+-#include <SDL_ttf.h>
++#include <SDL/SDL.h>
++#include <SDL/SDL_main.h>
++#include <SDL/SDL_ttf.h>
+ #include "main.h"
+ #include "utils.h"
+ #include "storage.h"
+diff -ruN ../orig/einstein-2.0.dfsg.2/screen.cpp ./screen.cpp
+--- ../orig/einstein-2.0.dfsg.2/screen.cpp 2005-09-24 07:17:30.000000000 +0200
++++ ./screen.cpp 2007-08-31 09:52:07.000000000 +0200
+@@ -1,4 +1,4 @@
+-#include <SDL.h>
++#include <SDL/SDL.h>
+ #include "screen.h"
+ #include "exceptions.h"
+ #include "unicode.h"
+diff -ruN ../orig/einstein-2.0.dfsg.2/screen.h ./screen.h
+--- ../orig/einstein-2.0.dfsg.2/screen.h 2005-09-24 07:08:44.000000000 +0200
++++ ./screen.h 2007-08-31 09:52:26.000000000 +0200
+@@ -2,7 +2,7 @@
+ #define __SCREEN_H__
+
+
+-#include "SDL.h"
++#include "SDL/SDL.h"
+ #include <vector>
+ #include <list>
+
+diff -ruN ../orig/einstein-2.0.dfsg.2/sound.cpp ./sound.cpp
+--- ../orig/einstein-2.0.dfsg.2/sound.cpp 2005-09-24 08:32:07.000000000 +0200
++++ ./sound.cpp 2007-08-31 10:07:35.000000000 +0200
+@@ -1,7 +1,7 @@
+ #include "sound.h"
+
+ #include <iostream>
+-#include <SDL_events.h>
++#include <SDL/SDL_events.h>
+ #include "resources.h"
+
+
+diff -ruN ../orig/einstein-2.0.dfsg.2/sound.h ./sound.h
+--- ../orig/einstein-2.0.dfsg.2/sound.h 2005-09-24 08:24:20.000000000 +0200
++++ ./sound.h 2007-08-31 10:01:28.000000000 +0200
+@@ -4,7 +4,7 @@
+
+ #include <string>
+ #include <map>
+-#include <SDL_mixer.h>
++#include <SDL/SDL_mixer.h>
+
+
+ class Sound
+diff -ruN ../orig/einstein-2.0.dfsg.2/utils.h ./utils.h
+--- ../orig/einstein-2.0.dfsg.2/utils.h 2005-08-14 04:40:58.000000000 +0200
++++ ./utils.h 2007-08-31 09:52:39.000000000 +0200
+@@ -1,7 +1,7 @@
+ #ifndef __UTILS_H__
+ #define __UTILS_H__
+
+-#include <SDL.h>
++#include <SDL/SDL.h>
+ #include <string>
+ #ifdef WIN32
+ #include <sys/time.h>
+diff -ruN ../orig/einstein-2.0.dfsg.2/widgets.h ./widgets.h
+--- ../orig/einstein-2.0.dfsg.2/widgets.h 2005-09-24 08:11:11.000000000 +0200
++++ ./widgets.h 2007-08-31 09:59:58.000000000 +0200
+@@ -4,7 +4,7 @@
+ #include <string>
+ #include <list>
+ #include <set>
+-#include <SDL.h>
++#include <SDL/SDL.h>
+ #include "font.h"
+
+
diff --git a/games/einstein/patches/02_prefix.diff b/games/einstein/patches/02_prefix.diff
new file mode 100644
index 0000000000000..3ba7833bb2478
--- /dev/null
+++ b/games/einstein/patches/02_prefix.diff
@@ -0,0 +1,11 @@
+--- ../orig/einstein-2.0.dfsg.2/main.cpp 2007-08-31 08:42:16.000000000 +0200
++++ main.cpp 2007-08-31 10:39:20.000000000 +0200
+@@ -70,7 +70,7 @@
+ #ifdef __APPLE__
+ dirs.push_back(getResourcesPath(selfPath));
+ #else
+- dirs.push_back(PREFIX L"/share/einstein/res");
++ dirs.push_back("/usr" L"/share/einstein/res");
+ dirs.push_back(fromMbcs(getenv("HOME")) + L"/.einstein/res");
+ #endif
+ #endif
diff --git a/games/einstein/patches/06_srand.diff b/games/einstein/patches/06_srand.diff
new file mode 100644
index 0000000000000..fff82848bd4c7
--- /dev/null
+++ b/games/einstein/patches/06_srand.diff
@@ -0,0 +1,11 @@
+--- ../orig/einstein-2.0/puzgen.cpp 2005-08-14 04:40:58.000000000 +0200
++++ puzgen.cpp 2007-08-31 08:42:16.000000000 +0200
+@@ -313,6 +313,8 @@
+
+ void genPuzzle(SolvedPuzzle &puzzle, Rules &rules)
+ {
++ srand(time(NULL));
++
+ for (int i = 0; i < PUZZLE_SIZE; i++) {
+ for (int j = 0; j < PUZZLE_SIZE; j++)
+ puzzle[i][j] = j + 1;
diff --git a/games/einstein/patches/07_long.diff b/games/einstein/patches/07_long.diff
new file mode 100644
index 0000000000000..76a35c42880ed
--- /dev/null
+++ b/games/einstein/patches/07_long.diff
@@ -0,0 +1,31 @@
+--- ../orig/einstein-2.0/formatter.cpp 2005-08-14 04:40:58.000000000 +0200
++++ formatter.cpp 2007-08-31 08:42:16.000000000 +0200
+@@ -58,7 +58,7 @@
+ if ((c.type == INT_ARG) || (c.type == STRING_ARG) ||
+ (c.type == FLOAT_ARG) || (c.type == DOUBLE_ARG))
+ {
+- int no = (int)c.data;
++ long no = (long)c.data;
+ args[no - 1] = c.type;
+ }
+ }
+@@ -123,7 +123,7 @@
+ std::wstring Formatter::format(std::vector<ArgValue*> &argValues) const
+ {
+ std::wstring s;
+- int no;
++ long no;
+
+ for (int i = 0; i < commandsCnt; i++) {
+ Command *cmd = &commands[i];
+@@ -135,8 +135,8 @@
+
+ case STRING_ARG:
+ case INT_ARG:
+- no = (int)cmd->data - 1;
+- if (no < (int)argValues.size())
++ no = (long)cmd->data - 1;
++ if (no < (long)argValues.size())
+ s += argValues[no]->format(cmd);
+ break;
+
diff --git a/games/einstein/patches/09_colors.diff b/games/einstein/patches/09_colors.diff
new file mode 100644
index 0000000000000..5f1ddcebc36c6
--- /dev/null
+++ b/games/einstein/patches/09_colors.diff
@@ -0,0 +1,22 @@
+--- ../orig/einstein-2.0.dfsg.2/descr.cpp 2007-08-31 11:02:45.000000000 +0200
++++ descr.cpp 2007-08-31 13:48:19.000000000 +0200
+@@ -11,6 +11,7 @@
+ #include "convert.h"
+ #include "utils.h"
+ #include "tokenizer.h"
++#include "storage.h"
+
+
+ #define WIDTH 600
+@@ -259,7 +260,10 @@
+ {
+ if (0 < line.length()) {
+ page->add(new Label(&font, offsetX, offsetY + curPosY,
+- 255,255,255, line, false));
++ getStorage()->get(L"text_red", 0),
++ getStorage()->get(L"text_green", 0),
++ getStorage()->get(L"text_blue", 100),
++ line, false));
+ line.clear();
+ curPosY += 10 + charHeight;
+ lineWidth = 0;
diff --git a/games/einstein/slack-desc b/games/einstein/slack-desc
new file mode 100644
index 0000000000000..0357ab377c054
--- /dev/null
+++ b/games/einstein/slack-desc
@@ -0,0 +1,19 @@
+# HOW TO EDIT THIS FILE:
+# The "handy ruler" below makes it easier to edit a package description. Line
+# up the first '|' above the ':' following the base package name, and the '|'
+# on the right side marks the last column you can put a character in. You must
+# make exactly 11 lines for the formatting to be correct. It's also
+# customary to leave one space after the ':'.
+
+ |-----handy-ruler-----------------------------------------------------|
+einstein: Einstein (Puzzle game inspired by Einstein's puzzle)
+einstein:
+einstein: Einstein puzzle is a free cross-platform open source remake of old
+einstein: DOS game Sherlock which was inspired by Albert Einstein's puzzle.
+einstein: Einstein said that only those with an intelligence quotient of 98
+einstein: percentile and higher should be able to solve it.
+einstein:
+einstein:
+einstein:
+einstein:
+einstein: