guix-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

04/45: gnu: Add barony.


From: guix-commits
Subject: 04/45: gnu: Add barony.
Date: Thu, 4 Aug 2022 06:07:06 -0400 (EDT)

civodul pushed a commit to branch master
in repository guix.

commit 23cc276aaa34f54fd045befd4097517c21b1b943
Author: Timotej Lazar <timotej.lazar@araneo.si>
AuthorDate: Sun Jun 26 08:54:39 2022 +0200

    gnu: Add barony.
    
    * gnu/packages/games.scm (barony): New variable.
    * gnu/packages/patches/barony-fix-textures.patch: New file.
    * gnu/local.mk (dist_patch_DATA): Add it.
    
    Signed-off-by: Ludovic Court├Ęs <ludo@gnu.org>
---
 gnu/local.mk                                   |   1 +
 gnu/packages/games.scm                         |  54 ++++++
 gnu/packages/patches/barony-fix-textures.patch | 237 +++++++++++++++++++++++++
 3 files changed, 292 insertions(+)

diff --git a/gnu/local.mk b/gnu/local.mk
index d273708ee4..2484320038 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -888,6 +888,7 @@ dist_patch_DATA =                                           
\
   %D%/packages/patches/awesome-4.3-fno-common.patch            \
   %D%/packages/patches/aws-c-auth-install-private-headers.patch        \
   %D%/packages/patches/azr3.patch                              \
+  %D%/packages/patches/barony-fix-textures.patch               \
   %D%/packages/patches/bash-completion-directories.patch       \
   %D%/packages/patches/bash-linux-pgrp-pipe.patch              \
   %D%/packages/patches/bastet-change-source-of-unordered_set.patch     \
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 7d2ba0344b..06084d1167 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -504,6 +504,60 @@ regret their insolence.")
     ;; BY-SA 4.0, and fonts to OFL1.1.
     (license (list license:gpl3+ license:cc-by-sa4.0 license:silofl1.1))))
 
+(define-public barony
+  (package
+    (name "barony")
+    (version "3.3.7")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/TurningWheel/Barony";)
+             (commit (string-append "v" version))))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "1y72k6zrqqhib3p05zkdklays2d218v51n87k7k68m0s7nnxa4vy"))
+       ;; Fix textures for SDL 2.0.14.
+       ;; See <https://github.com/TurningWheel/Barony/pull/582>.
+       (patches (search-patches "barony-fix-textures.patch"))))
+    (build-system cmake-build-system)
+    (arguments
+     '(#:configure-flags
+       (list "-DOPENAL_ENABLED=ON" ; enable sound
+             "-DEDITOR_EXE_NAME=barony-editor") ; instead of generic "editor"
+       #:tests? #f ; there are no tests
+       #:phases
+       (modify-phases %standard-phases
+         (add-before 'configure 'fix-installation
+           (lambda _
+             (substitute* "CMakeLists.txt"
+               (("\\$\\{CMAKE_CURRENT_BINARY_DIR\\}/lang")
+                "${CMAKE_SOURCE_DIR}/lang")))))))
+    (inputs
+     (list glu
+           libpng
+           libvorbis
+           openal
+           physfs
+           rapidjson
+           sdl2
+           sdl2-image
+           sdl2-net
+           sdl2-ttf
+           zlib))
+    (native-inputs
+     (list pkg-config))
+    (home-page "http://baronygame.com";)
+    (synopsis "3D first-person roguelike game")
+    (description
+     "Barony is a first-person roguelike role-playing game with cooperative
+play.  The player must descend a dark dungeon and destroy an undead lich while
+avoiding traps and fighting monsters.  The game features randomly generated
+dungeons, 13 character classes, hundreds of items and artifacts, and
+cooperative multiplayer for up to four players.  This package does @emph{not}
+provide the game assets.")
+    (license license:bsd-2)))
+
 (define-public bastet
   (package
     (name "bastet")
diff --git a/gnu/packages/patches/barony-fix-textures.patch 
b/gnu/packages/patches/barony-fix-textures.patch
new file mode 100644
index 0000000000..712f0d63c6
--- /dev/null
+++ b/gnu/packages/patches/barony-fix-textures.patch
@@ -0,0 +1,237 @@
+From: Sylvain <sylvain.becker@gmail.com>
+Date: Sat, 10 Apr 2021 21:33:29 +0200
+Subject: [PATCH] Fixed bug 580 - Use 'userdata' instead of 'refcount'
+ 'refcount' is a private SDL_Surface field
+
+---
+ src/draw.cpp    | 22 +++++++++++-----------
+ src/files.cpp   |  2 +-
+ src/opengl.cpp  | 26 +++++++++++++-------------
+ src/savepng.cpp |  2 +-
+ 4 files changed, 26 insertions(+), 26 deletions(-)
+
+diff --git a/src/draw.cpp b/src/draw.cpp
+index 08f95343f..4e62c751a 100644
+--- a/src/draw.cpp
++++ b/src/draw.cpp
+@@ -443,7 +443,7 @@ void drawImageRotatedAlpha( SDL_Surface* image, SDL_Rect* 
src, SDL_Rect* pos, re
+       }
+ 
+       // draw a textured quad
+-      glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++      glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+       glColor4f(1, 1, 1, alpha / 255.1);
+       glBegin(GL_QUADS);
+       glTexCoord2f(1.0 * ((real_t)src->x / image->w), 1.0 * ((real_t)src->y / 
image->h));
+@@ -492,7 +492,7 @@ void drawImageColor( SDL_Surface* image, SDL_Rect* src, 
SDL_Rect* pos, Uint32 co
+       }
+ 
+       // draw a textured quad
+-      glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++      glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+       real_t r = ((Uint8)(color >> mainsurface->format->Rshift)) / 255.f;
+       real_t g = ((Uint8)(color >> mainsurface->format->Gshift)) / 255.f;
+       real_t b = ((Uint8)(color >> mainsurface->format->Bshift)) / 255.f;
+@@ -546,7 +546,7 @@ void drawImageAlpha( SDL_Surface* image, SDL_Rect* src, 
SDL_Rect* pos, Uint8 alp
+       }
+ 
+       // draw a textured quad
+-      glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++      glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+       glColor4f(1, 1, 1, alpha / 255.1);
+       glPushMatrix();
+       glBegin(GL_QUADS);
+@@ -596,7 +596,7 @@ void drawImage( SDL_Surface* image, SDL_Rect* src, 
SDL_Rect* pos )
+       }
+ 
+       // draw a textured quad
+-      glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++      glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+       glColor4f(1, 1, 1, 1);
+       glPushMatrix();
+       glBegin(GL_QUADS);
+@@ -646,7 +646,7 @@ void drawImageRing(SDL_Surface* image, SDL_Rect* src, int 
radius, int thickness,
+       }
+ 
+       // draw a textured quad
+-      glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++      glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+       glColor4f(1, 1, 1, alpha / 255.f);
+       glPushMatrix();
+ 
+@@ -771,7 +771,7 @@ void drawImageScaled( SDL_Surface* image, SDL_Rect* src, 
SDL_Rect* pos )
+       }
+ 
+       // draw a textured quad
+-      glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++      glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+       glColor4f(1, 1, 1, 1);
+       glPushMatrix();
+       glBegin(GL_QUADS);
+@@ -826,7 +826,7 @@ void drawImageScaledPartial(SDL_Surface* image, SDL_Rect* 
src, SDL_Rect* pos, fl
+       }
+ 
+       // draw a textured quad
+-      glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++      glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+       glColor4f(1, 1, 1, 1);
+       glPushMatrix();
+       glBegin(GL_QUADS);
+@@ -889,7 +889,7 @@ void drawImageScaledColor(SDL_Surface* image, SDL_Rect* 
src, SDL_Rect* pos, Uint
+       }
+ 
+       // draw a textured quad
+-      glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++      glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+       real_t r = ((Uint8)(color >> mainsurface->format->Rshift)) / 255.f;
+       real_t g = ((Uint8)(color >> mainsurface->format->Gshift)) / 255.f;
+       real_t b = ((Uint8)(color >> mainsurface->format->Bshift)) / 255.f;
+@@ -985,7 +985,7 @@ void drawImageFancy( SDL_Surface* image, Uint32 color, 
real_t angle, SDL_Rect* s
+       }
+ 
+       // draw a textured quad
+-      glBindTexture(GL_TEXTURE_2D, texid[image->refcount]);
++      glBindTexture(GL_TEXTURE_2D, texid[(long int)image->userdata]);
+       real_t r = ((Uint8)(color >> mainsurface->format->Rshift)) / 255.f;
+       real_t g = ((Uint8)(color >> mainsurface->format->Gshift)) / 255.f;
+       real_t b = ((Uint8)(color >> mainsurface->format->Bshift)) / 255.f;
+@@ -2186,7 +2186,7 @@ void drawWindowFancy(int x1, int y1, int x2, int y2)
+       glVertex2f(x2 - 1, yres - y1 - 1);
+       glEnd();
+       glColor3f(.75, .75, .75);
+-      glBindTexture(GL_TEXTURE_2D, texid[fancyWindow_bmp->refcount]); // wood 
texture
++      glBindTexture(GL_TEXTURE_2D, texid[(long 
int)fancyWindow_bmp->userdata]); // wood texture
+       glBegin(GL_QUADS);
+       glTexCoord2f(0, 0);
+       glVertex2f(x1 + 2, yres - y1 - 2);
+@@ -2322,7 +2322,7 @@ SDL_Rect ttfPrintTextColor( TTF_Font* font, int x, int 
y, Uint32 color, bool out
+               SDL_BlitSurface(textSurf, NULL, surf, &pos);
+               // load the text outline surface as a GL texture
+               allsurfaces[imgref] = surf;
+-              allsurfaces[imgref]->refcount = imgref;
++              allsurfaces[imgref]->userdata = (void*) imgref;
+               glLoadTexture(allsurfaces[imgref], imgref);
+               imgref++;
+               // store the surface in the text surface cache
+diff --git a/src/files.cpp b/src/files.cpp
+index 2beb9a6b9..389ade6d1 100644
+--- a/src/files.cpp
++++ b/src/files.cpp
+@@ -591,7 +591,7 @@ SDL_Surface* loadImage(char const * const filename)
+ 
+       // load the new surface as a GL texture
+       allsurfaces[imgref] = newSurface;
+-      allsurfaces[imgref]->refcount = imgref + 1;
++      allsurfaces[imgref]->userdata = (void *)(imgref);
+       glLoadTexture(allsurfaces[imgref], imgref);
+ 
+       // free the translated surface
+diff --git a/src/opengl.cpp b/src/opengl.cpp
+index f5b81e77a..3ac225825 100644
+--- a/src/opengl.cpp
++++ b/src/opengl.cpp
+@@ -500,7 +500,7 @@ void glDrawSprite(view_t* camera, Entity* entity, int mode)
+       }
+       if ( mode == REALCOLORS )
+       {
+-              glBindTexture(GL_TEXTURE_2D, texid[sprite->refcount]);
++              glBindTexture(GL_TEXTURE_2D, texid[(long int)sprite->userdata]);
+       }
+       else
+       {
+@@ -586,7 +586,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, 
std::string text, int
+       //int x, y;
+       real_t s = 1;
+       SDL_Surface* image = sprites[0];
+-      GLuint textureId = texid[sprites[0]->refcount];
++      GLuint textureId = texid[(long int)sprites[0]->userdata];
+       char textToRetrieve[128];
+ 
+       if ( text.compare("") == 0 )
+@@ -603,7 +603,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, 
std::string text, int
+       textToRetrieve[std::min(static_cast<int>(strlen(text.c_str())), 22)] = 
'\0';
+       if ( (image = ttfTextHashRetrieve(ttfTextHash, textToRetrieve, ttf12, 
true)) != NULL )
+       {
+-              textureId = texid[image->refcount];
++              textureId = texid[(long int)image->userdata];
+       }
+       else
+       {
+@@ -627,7 +627,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, 
std::string text, int
+               SDL_BlitSurface(textSurf, NULL, image, &pos);
+               // load the text outline surface as a GL texture
+               allsurfaces[imgref] = image;
+-              allsurfaces[imgref]->refcount = imgref;
++              allsurfaces[imgref]->userdata = (void *)((long int)imgref);
+               glLoadTexture(allsurfaces[imgref], imgref);
+               imgref++;
+               // store the surface in the text surface cache
+@@ -635,7 +635,7 @@ void glDrawSpriteFromImage(view_t* camera, Entity* entity, 
std::string text, int
+               {
+                       printlog("warning: failed to store text outline surface 
with imgref %d\n", imgref - 1);
+               }
+-              textureId = texid[image->refcount];
++              textureId = texid[(long int)image->userdata];
+       }
+       // setup projection
+       glMatrixMode(GL_PROJECTION);
+@@ -864,7 +864,7 @@ void glDrawWorld(view_t* camera, int mode)
+ 
+               // first (higher) sky layer
+               glColor4f(1.f, 1.f, 1.f, .5);
+-              glBindTexture(GL_TEXTURE_2D, 
texid[tiles[cloudtile]->refcount]); // sky tile
++              glBindTexture(GL_TEXTURE_2D, texid[(long 
int)tiles[cloudtile]->userdata]); // sky tile
+               glBegin( GL_QUADS );
+               glTexCoord2f((real_t)(ticks % 60) / 60, (real_t)(ticks % 60) / 
60);
+               glVertex3f(-CLIPFAR * 16, 64, -CLIPFAR * 16);
+@@ -881,7 +881,7 @@ void glDrawWorld(view_t* camera, int mode)
+ 
+               // second (closer) sky layer
+               glColor4f(1.f, 1.f, 1.f, .5);
+-              glBindTexture(GL_TEXTURE_2D, 
texid[tiles[cloudtile]->refcount]); // sky tile
++              glBindTexture(GL_TEXTURE_2D, texid[(long 
int)tiles[cloudtile]->userdata]); // sky tile
+               glBegin( GL_QUADS );
+               glTexCoord2f((real_t)(ticks % 240) / 240, (real_t)(ticks % 240) 
/ 240);
+               glVertex3f(-CLIPFAR * 16, 32, -CLIPFAR * 16);
+@@ -954,13 +954,13 @@ void glDrawWorld(view_t* camera, int mode)
+                                               {
+                                                       if ( map.tiles[index] < 
0 || map.tiles[index] >= numtiles )
+                                                       {
+-                                                              new_tex = 
texid[sprites[0]->refcount];
+-                                                              
//glBindTexture(GL_TEXTURE_2D, texid[sprites[0]->refcount]);
++                                                              new_tex = 
texid[(long int)sprites[0]->userdata];
++                                                              
//glBindTexture(GL_TEXTURE_2D, texid[(long int)sprites[0]->userdata]);
+                                                       }
+                                                       else
+                                                       {
+-                                                              new_tex = 
texid[tiles[map.tiles[index]]->refcount];
+-                                                              
//glBindTexture(GL_TEXTURE_2D, texid[tiles[map.tiles[index]]->refcount]);
++                                                              new_tex = 
texid[(long int)tiles[map.tiles[index]]->userdata];
++                                                              
//glBindTexture(GL_TEXTURE_2D, texid[(long 
int)tiles[map.tiles[index]]->userdata]);
+                                                       }
+                                               }
+                                               else
+@@ -1282,8 +1282,8 @@ void glDrawWorld(view_t* camera, int mode)
+                                               // bind texture
+                                               if ( mode == REALCOLORS )
+                                               {
+-                                                      new_tex = 
texid[tiles[mapceilingtile]->refcount];
+-                                                      
//glBindTexture(GL_TEXTURE_2D, texid[tiles[50]->refcount]); // rock tile
++                                                      new_tex = texid[(long 
int)tiles[mapceilingtile]->userdata];
++                                                      
//glBindTexture(GL_TEXTURE_2D, texid[(long int)tiles[50]->userdata]); // rock 
tile
+                                                       if (cur_tex!=new_tex)
+                                                       {
+                                                               glEnd();
+diff --git a/src/savepng.cpp b/src/savepng.cpp
+index fa7a5d4e2..59e052a5c 100644
+--- a/src/savepng.cpp
++++ b/src/savepng.cpp
+@@ -59,7 +59,7 @@ SDL_Surface* SDL_PNGFormatAlpha(SDL_Surface* src)
+       /* NO-OP for images < 32bpp and 32bpp images that already have Alpha 
channel */
+       if (src->format->BitsPerPixel <= 24 || src->format->Amask)
+       {
+-              src->refcount++;
++              src->userdata = (void *)((long int) src->userdata + 1);
+               return src;
+       }
+ 



reply via email to

[Prev in Thread] Current Thread [Next in Thread]