GNU bug report logs - #56230
[PATCH] gnu: Add barony.

Previous Next

Package: guix-patches;

Reported by: Timotej Lazar <timotej.lazar <at> araneo.si>

Date: Sun, 26 Jun 2022 06:56:02 UTC

Severity: normal

Tags: patch

Done: Ludovic Courtès <ludo <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 56230 in the body.
You can then email your comments to 56230 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#56230; Package guix-patches. (Sun, 26 Jun 2022 06:56:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Timotej Lazar <timotej.lazar <at> araneo.si>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Sun, 26 Jun 2022 06:56:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Timotej Lazar <timotej.lazar <at> araneo.si>
To: guix-patches <at> gnu.org
Cc: Timotej Lazar <timotej.lazar <at> araneo.si>
Subject: [PATCH] gnu: Add barony.
Date: Sun, 26 Jun 2022 08:54:39 +0200
* gnu/packages/games.scm (barony): New variable.
* gnu/packages/patches/barony-fix-textures.patch: New file.
* gnu/local.mk (dist_patch_DATA): Add it.
---
 gnu/local.mk                                  |   1 +
 gnu/packages/games.scm                        |  54 ++++
 .../patches/barony-fix-textures.patch         | 237 ++++++++++++++++++
 3 files changed, 292 insertions(+)
 create mode 100644 gnu/packages/patches/barony-fix-textures.patch

diff --git a/gnu/local.mk b/gnu/local.mk
index 353b91cfd2..4f3174d4aa 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -885,6 +885,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 8e6ab03530..d6fe5f215c 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -503,6 +503,60 @@ (define-public astromenace
     ;; 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.git")
+             (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
+     "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 <at> 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;
+ 	}
+ 
-- 
2.36.1





Reply sent to Ludovic Courtès <ludo <at> gnu.org>:
You have taken responsibility. (Thu, 04 Aug 2022 09:25:02 GMT) Full text and rfc822 format available.

Notification sent to Timotej Lazar <timotej.lazar <at> araneo.si>:
bug acknowledged by developer. (Thu, 04 Aug 2022 09:25:02 GMT) Full text and rfc822 format available.

Message #10 received at 56230-done <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Timotej Lazar <timotej.lazar <at> araneo.si>
Cc: 56230-done <at> debbugs.gnu.org
Subject: Re: bug#56230: [PATCH] gnu: Add barony.
Date: Thu, 04 Aug 2022 11:24:43 +0200
Hi Timotej,

Timotej Lazar <timotej.lazar <at> araneo.si> skribis:

> * gnu/packages/games.scm (barony): New variable.
> * gnu/packages/patches/barony-fix-textures.patch: New file.
> * gnu/local.mk (dist_patch_DATA): Add it.

Finally applied, thanks!

Ludo’.




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Thu, 01 Sep 2022 11:24:08 GMT) Full text and rfc822 format available.

This bug report was last modified 1 year and 250 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.