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>
This commit is contained in:
parent
ae1f120181
commit
23cc276aaa
@ -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 \
|
||||
|
@ -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")
|
||||
|
237
gnu/packages/patches/barony-fix-textures.patch
Normal file
237
gnu/packages/patches/barony-fix-textures.patch
Normal file
@ -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;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user