aboutsummaryrefslogtreecommitdiff
path: root/games/ufoai
diff options
context:
space:
mode:
Diffstat (limited to 'games/ufoai')
-rw-r--r--games/ufoai/README24
-rw-r--r--games/ufoai/icons/ufo/16.pngbin0 -> 707 bytes
-rw-r--r--games/ufoai/icons/ufo/256.pngbin0 -> 75257 bytes
-rw-r--r--games/ufoai/icons/ufo/32.pngbin0 -> 2039 bytes
-rw-r--r--games/ufoai/icons/ufo/48.pngbin0 -> 3897 bytes
-rw-r--r--games/ufoai/icons/ufo/64.pngbin0 -> 6600 bytes
-rw-r--r--games/ufoai/icons/ufoded/16.pngbin0 -> 797 bytes
-rw-r--r--games/ufoai/icons/ufoded/256.pngbin0 -> 81964 bytes
-rw-r--r--games/ufoai/icons/ufoded/32.pngbin0 -> 2406 bytes
-rw-r--r--games/ufoai/icons/ufoded/48.pngbin0 -> 4334 bytes
-rw-r--r--games/ufoai/icons/ufoded/64.pngbin0 -> 7818 bytes
-rw-r--r--games/ufoai/icons/uforadiant/16.pngbin0 -> 1299 bytes
-rw-r--r--games/ufoai/icons/uforadiant/32.pngbin0 -> 2728 bytes
-rw-r--r--games/ufoai/icons/uforadiant/48.pngbin0 -> 4942 bytes
-rw-r--r--games/ufoai/icons/uforadiant/64.pngbin0 -> 7523 bytes
-rw-r--r--games/ufoai/man/ufo.651
-rw-r--r--games/ufoai/man/ufo2map.6188
-rw-r--r--games/ufoai/man/ufoded.642
-rw-r--r--games/ufoai/man/ufomodel.650
-rw-r--r--games/ufoai/man/uforadiant.649
-rw-r--r--games/ufoai/man/ufoslicer.640
-rw-r--r--games/ufoai/mkicons.sh31
-rw-r--r--games/ufoai/patches/bug-949301-mxml.patch29
-rw-r--r--games/ufoai/patches/initialize-entityString.patch26
-rw-r--r--games/ufoai/patches/segfault-reactionfire-mode-bug-861979.patch36
-rw-r--r--games/ufoai/patches/series3
-rw-r--r--games/ufoai/slack-desc4
-rw-r--r--games/ufoai/ufoai.SlackBuild135
-rw-r--r--games/ufoai/ufoai.info6
29 files changed, 669 insertions, 45 deletions
diff --git a/games/ufoai/README b/games/ufoai/README
index 192f4d18fc8e6..59e931a6b9f69 100644
--- a/games/ufoai/README
+++ b/games/ufoai/README
@@ -1,4 +1,4 @@
-UFO: Alien Invasion
+ufoai (UFO: Alien Invasion)
This is a squad based tactical strategy game, heavily inspired by the
X-COM PC games, but with twist. Old veterans will appreciate how the
@@ -9,13 +9,19 @@ is not a remake or a sequel.
It runs on a modified Quake 2 game engine.
-If you want to try out the game editor (uforadiant), install gtksourceview
-before running this build.
+If you're going to install the package on a host whose CPU lacks
+streaming SIMD extensions, set SSE=no in the script's environment. To
+find out whether SSE is supported, try "grep sse /proc/cpuinfo". If
+you get no output, you don't have SSE.
-If you're going to install the package on a host whose CPU lacks streaming
-SIMD extensions, set SSE=no in the script's environment. To find out
-whether SSE is supported, try "grep sse /proc/cpuinfo". If you get no
-output, you don't have SSE.
+By default, ufoai is built with SDL2. If you'd prefer SDL1, run this
+script with SDL2=no in the environment.
-By default, ufoai is built with SDL1. If you'd prefer SDL2, install
-SDL2 and SDL2_ttf, then run this script with SDL2=yes in the environment.
+Optional *broken* stuff: The map editor for UFO:AI is called
+uforadiant. It's disabled by default because it's broken: it
+segfaults on startup on Slackware-current (October 2021) and the
+SlackBuild maintainer hasn't figured out why, yet. If you want
+to try uforadiant, install the optional dependencies gtkglext and
+gtksourceview, then build with RADIANT=yes in the environment. If you
+try this and uforadiant *doesn't* segfault for you, *please* contact
+the maintainer!
diff --git a/games/ufoai/icons/ufo/16.png b/games/ufoai/icons/ufo/16.png
new file mode 100644
index 0000000000000..4dac684395fc4
--- /dev/null
+++ b/games/ufoai/icons/ufo/16.png
Binary files differ
diff --git a/games/ufoai/icons/ufo/256.png b/games/ufoai/icons/ufo/256.png
new file mode 100644
index 0000000000000..6841287ee7fcf
--- /dev/null
+++ b/games/ufoai/icons/ufo/256.png
Binary files differ
diff --git a/games/ufoai/icons/ufo/32.png b/games/ufoai/icons/ufo/32.png
new file mode 100644
index 0000000000000..661da03275871
--- /dev/null
+++ b/games/ufoai/icons/ufo/32.png
Binary files differ
diff --git a/games/ufoai/icons/ufo/48.png b/games/ufoai/icons/ufo/48.png
new file mode 100644
index 0000000000000..abf22852525ae
--- /dev/null
+++ b/games/ufoai/icons/ufo/48.png
Binary files differ
diff --git a/games/ufoai/icons/ufo/64.png b/games/ufoai/icons/ufo/64.png
new file mode 100644
index 0000000000000..f923ef7ec7ac2
--- /dev/null
+++ b/games/ufoai/icons/ufo/64.png
Binary files differ
diff --git a/games/ufoai/icons/ufoded/16.png b/games/ufoai/icons/ufoded/16.png
new file mode 100644
index 0000000000000..1739be7e18bc3
--- /dev/null
+++ b/games/ufoai/icons/ufoded/16.png
Binary files differ
diff --git a/games/ufoai/icons/ufoded/256.png b/games/ufoai/icons/ufoded/256.png
new file mode 100644
index 0000000000000..5e318a9f01351
--- /dev/null
+++ b/games/ufoai/icons/ufoded/256.png
Binary files differ
diff --git a/games/ufoai/icons/ufoded/32.png b/games/ufoai/icons/ufoded/32.png
new file mode 100644
index 0000000000000..7e4b45e2a87b3
--- /dev/null
+++ b/games/ufoai/icons/ufoded/32.png
Binary files differ
diff --git a/games/ufoai/icons/ufoded/48.png b/games/ufoai/icons/ufoded/48.png
new file mode 100644
index 0000000000000..ebd83a0c052c9
--- /dev/null
+++ b/games/ufoai/icons/ufoded/48.png
Binary files differ
diff --git a/games/ufoai/icons/ufoded/64.png b/games/ufoai/icons/ufoded/64.png
new file mode 100644
index 0000000000000..67a5d63988a99
--- /dev/null
+++ b/games/ufoai/icons/ufoded/64.png
Binary files differ
diff --git a/games/ufoai/icons/uforadiant/16.png b/games/ufoai/icons/uforadiant/16.png
new file mode 100644
index 0000000000000..da67002fc4ab5
--- /dev/null
+++ b/games/ufoai/icons/uforadiant/16.png
Binary files differ
diff --git a/games/ufoai/icons/uforadiant/32.png b/games/ufoai/icons/uforadiant/32.png
new file mode 100644
index 0000000000000..7b9ba7abc1e70
--- /dev/null
+++ b/games/ufoai/icons/uforadiant/32.png
Binary files differ
diff --git a/games/ufoai/icons/uforadiant/48.png b/games/ufoai/icons/uforadiant/48.png
new file mode 100644
index 0000000000000..8cb95c15f560e
--- /dev/null
+++ b/games/ufoai/icons/uforadiant/48.png
Binary files differ
diff --git a/games/ufoai/icons/uforadiant/64.png b/games/ufoai/icons/uforadiant/64.png
new file mode 100644
index 0000000000000..c761edef8e641
--- /dev/null
+++ b/games/ufoai/icons/uforadiant/64.png
Binary files differ
diff --git a/games/ufoai/man/ufo.6 b/games/ufoai/man/ufo.6
new file mode 100644
index 0000000000000..8002578ef7923
--- /dev/null
+++ b/games/ufoai/man/ufo.6
@@ -0,0 +1,51 @@
+.\" This man page was written by Markus Koschany in August 2013. It is provided
+.\" under the GNU General Public License 2 or (at your option) any later version.
+.TH ufo 6 "October 2021" "ufoai-2.5" "SlackBuilds.org"
+.SH NAME
+ufo \- UFO: Alien Invasion client
+.SH SYNOPSIS
+.PP
+\fBufo\fR [\fB+<internal command> \fIoption\fR \fIvalue\fP] ...
+.SH DESCRIPTION
+\fBufo\fP is the client for the strategy game UFO: Alien Invasion (\fBufoai\fR).
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Display this help
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR
+Disable console output
+.TP
+\fB+<internal command>\fR
+Options passed by "+<internal command>" are the same as the in-game console understands. For the in-game console press SHIFT+ESC.
+Use the in-game \fBcvarlist\fR to get a list of all available options for the game.
+.SS Internal commands
+.TP
+\fBsnd\_init\fR
+Set this to 0 to start without sound\&.
+.TP
+\fBvid\_fullscreen\fR
+Set this to 1 to start in fullscreen mode\&.
+
+.SH "FILES"
+All data files are part of a pk3 file in \fI/usr/share/games/ufoai/base/\fR. You can extract them (pk3 files are just zip files)
+and place them in the home directory of the user running the game. Use the path \fI~/.ufoai/<VERSION>/base/\fR to place
+these files. The files that are not located in the pk3 files have a higher priority than the files that are stored in the pk3
+files. So you are able to replace any file you want like this. You can also add new maps and other game content to the \fIbase/\fR
+directory in your users home directory to be able to use new game content.
+.TP
+\fB~/.ufoai/<VERSION>/base/config.cfg\fR
+Game configuration\&.
+.TP
+\fBkeys.cfg\fR
+Game key bindings\&.
+.SH EXAMPLES
+.TP
+\fBufo +snd_init 0 +vid_fullscreen 1\fR
+Start ufo without sound and in fullscreen mode.
+.SH "SEE ALSO"
+.PP
+\fBufoded\fR(6)
+\fBufo2map\fR(6)
+\fBufomodel\fR(6)
+\fBufoslicer\fR(6)
diff --git a/games/ufoai/man/ufo2map.6 b/games/ufoai/man/ufo2map.6
new file mode 100644
index 0000000000000..21380c32f36cc
--- /dev/null
+++ b/games/ufoai/man/ufo2map.6
@@ -0,0 +1,188 @@
+.\" This man page was written by Markus Koschany in July 2013. It is provided
+.\" under the GNU General Public License 2 or (at your option) any later version.
+.TH ufo2map "6" "October 2021" "ufoai-2.5" "SlackBuilds.org"
+.SH NAME
+ufo2map \- UFO: Alien Invasion map compiler
+.SH SYNOPSIS
+.B ufo2map
+\fI<param1 <subparam1> <subparam2> <\fR...\fI>> <param2> <\fR...\fI> \fR[\fImap\fR]
+.SH DESCRIPTION
+This is the UFO: AI map compiler.
+.SH OPTIONS
+.SS "General options:"
+.TP
+\fB\-h\fR \fB\-\-help\fR
+: print (this) help and exit
+.TP
+\fB\-nice\fR <prio>
+: priority level [unix nice level from \fB\-20\fR to 19 where 19 is the lowest priority]
+.TP
+\fB\-nofootstep\fR
+: don't generate a footstep file
+.TP
+\fB\-tracefile\fR
+: generate two csv files describing the floors and walls found by the trace functions
+.TP
+\fB\-debugfile\fR (TODO)
+: generate a trace debug file. The client can load the file to highlight map obstructions
+.TP
+\fB\-stats\fR \fB\-\-statistics\fR
+: print statistics and quit. may be used with \fB\-check\fR or \fB\-fix\fR
+.TP
+\fB\-v\fR \fB\-\-verbosity\fR <int>
+: set verbosity. higher <int> gives more output
+if it is required, this should be the first option
+0 \- no stdout, 1 \- only check/fix messages, 2 \- (compile) only mapname
+2 \- (check/fix) mapname if findings, 4 \- normal output,
+5 \- extra output, 6 \- dump (a lot extra from BSPing)
+.TP
+\fB\-V\fR \fB\-\-version\fR
+: return Version and Revision level
+.TP
+\fB\-material\fR
+: generate a material (.mat) file, do not proceed to compilation
+.SS "Lighting options:"
+.TP
+\fB\-extra\fR
+: extra light samples
+.TP
+\fB\-nolighting\fR TYPE
+: don't perform the lighting calculations, where TYPE is one of day, night, all
+default is all
+.TP
+\fB\-quant\fR
+: lightquant \- lightmap resolution downscale (e.g. 4 = 1 << 4) (values between 1 and 6)
+.TP
+\fB\-scale\fR
+: global light scale factor
+.TP
+\fB\-saturation\fR
+: saturation factor (e.g. 1.5 \- default is 1.0)
+.TP
+\fB\-contrast\fR
+: contrast factor (e.g. 1.05, default is 1.0)
+.TP
+\fB\-t\fR \fB\-\-threads\fR
+: thread amount
+.SS "Binary space partitioning (BSPing) options:"
+.TP
+\fB\-block\fR <xl> <yl>
+:
+.HP
+\fB\-blocks\fR <xl> <yl> <xh> <yh>:
+.TP
+\fB\-subdivide\fR
+: subdivide brushes for better light effects (but higher polycount)
+.TP
+\fB\-surface\fR
+: surface light scaling (float value)
+.TP
+\fB\-entity\fR
+: entity light scaling (float value)
+.TP
+\fB\-fulldetail\fR
+: don't treat details (and trans surfaces) as details
+.TP
+\fB\-info\fR
+: print bsp file info
+.TP
+\fB\-micro\fR <float>
+: warn if a brush has a volume lower than the specified float.
+brushes are tested after CSG.
+.TP
+\fB\-nobackclip\fR
+: draw downward pointing faces. (so actors cannot see up through floors
+in first person view). default is to set SURF_NODRAW to downard faces.
+.TP
+\fB\-nocsg\fR
+:
+.TP
+\fB\-gamedir\fR
+: Add another game dir to the search directories
+.TP
+\fB\-nodetail\fR
+: skip detail brushes
+.TP
+\fB\-nomerge\fR
+: skip node face merging
+.TP
+\fB\-noprune\fR
+: don't prune (or cut) nodes
+.TP
+\fB\-noshare\fR
+:
+.TP
+\fB\-notjunc\fR
+:
+.TP
+\fB\-nowater\fR
+: skip water brushes in compilation
+.TP
+\fB\-noweld\fR
+:
+.TP
+\fB\-onlyents\fR
+: modify existing bsp file with entities from map file
+.TP
+\fB\-exportlightmaps\fR
+: write lightmaps into tga images
+.TP
+\fB\-verboseentities\fR
+: also be verbose about submodels (entities)
+.PP
+.SS Mapping options:
+.IP
+These options operate on map file only. No bsp file is created.
+Output prefixed by an asterisk (*) indicates operations that would change the map file.
+\fB\-check\fR : check source map, only print information.
+\fB\-fix\fR : same subparameters as \fB\-check\fR, changes the source map file.
+.IP
+subparameters for \fB\-check\fR and \fB\-fix\fR
+.TP
+all
+: performs all checks and fixes. This is the default.
+.TP
+bru brushes
+: includes 'lvl tex mfc mbr'. Performs all checks and fixes associated with brushes.
+.TP
+ent entities
+: performs all checks and fixes associated with entities.
+.TP
+con contained
+: checks for brushes contained entirely within other brushes. includes coincident duplicates.
+.TP
+isc intersection
+: report intersection between optimisable brushes from worldspawn and func_group entities
+.IP
+this is not included in all or bru as it is not always a bad thing
+.TP
+mbr microbrush <float>
+: test for brushes smaller than <float> unit^3. this is done without the csg
+.IP
+step, unlike the bsp \fB\-micro\fR option. default 1 unit^3.
+.TP
+lvl levelflags
+: if no levelflags for a brush or entity are set, all of them are set
+.TP
+flv filllevelflags
+: ensure set levelflag bits are uninterrupted
+.TP
+ndr nodraws
+: assigns SURF_NODRAW to hidden faces
+.TP
+tex textures
+: warns when no texture or error texture is assigned.
+.IP
+ensures special textures and content/surface flags are consistent.
+.TP
+mfc mixedfacecontents
+: ensures the contentflags are the same on each face of each brush.
+.TP
+zft zfighting
+: intersecting brushes with a common face: prevent textures shimmering together
+.SH "SEE ALSO"
+.PP
+\fBufo\fR(6)
+\fBufoded\fR(6)
+\fBufomodel\fR(6)
+\fBufoslicer\fR(6)
diff --git a/games/ufoai/man/ufoded.6 b/games/ufoai/man/ufoded.6
new file mode 100644
index 0000000000000..2a5389b4e7b03
--- /dev/null
+++ b/games/ufoai/man/ufoded.6
@@ -0,0 +1,42 @@
+.\" This man page was written by Markus Koschany in August 2013. It is provided
+.\" under the GNU General Public License 2 or (at your option) any later version.
+.TH ufoded 6 "October 2021" "ufoai-2.5" "SlackBuilds.org"
+.SH NAME
+ufoded \- UFO: Alien Invasion dedicated server
+.SH SYNOPSIS
+.PP
+\fBufoded\fR [\fB+<internal command> \fIoption\fR \fIvalue\fP] ...
+.SH DESCRIPTION
+\fBufoded\fP is the dedicated server for the strategy game UFO: Alien Invasion.
+.SH OPTIONS
+.TP
+\fB\-h\fR, \fB\-\-help\fR
+Display this help
+.TP
+\fB\-q\fR, \fB\-\-quiet\fR
+Disable console output
+.TP
+\fB+<internal command>\fR
+Options passed by "+<internal command>" are the same as the in-game console understands. For the in-game console press SHIFT+ESC.
+Use the in-game \fBcvarlist\fR to get a list of all available options for the game.
+.SH "FILES"
+All these files are part of a pk3 file in \fI/usr/share/games/ufoai/base/\fR. You can extract them (pk3 files are just zip files)
+and place them in the home directory of the user running the dedicated server. Use the path \fI~/.ufoai/<VERSION>/base/\fR to place
+these files. The files that are not located in the pk3 files have a higher priority than the files that are stored in the pk3
+files. So you are able to replace any file you want like this. You can also add new maps and other game content to the \fIbase/\fR
+directory in your users home directory to be able to use new content in the game.
+.TP
+\fBdedicated.cfg\fR
+Dedicated server config\&.
+.TP
+\fBautoexec.cfg\fR
+Commands that are executed when starting the dedicated server\&.
+.TP
+\fBmapcycle.txt\fR
+This defines the map cycle that the dedicated server will use\&.
+.SH SEE ALSO
+.PP
+\fBufo\fR(6)
+\fBufo2map\fR(6)
+\fBufomodel\fR(6)
+\fBufoslicer\fR(6)
diff --git a/games/ufoai/man/ufomodel.6 b/games/ufoai/man/ufomodel.6
new file mode 100644
index 0000000000000..88011e411d62d
--- /dev/null
+++ b/games/ufoai/man/ufomodel.6
@@ -0,0 +1,50 @@
+.\" This man page was written by Markus Koschany in July 2013. It is provided
+.\" under the GNU General Public License 2 or (at your option) any later version.
+.TH ufomodel "6" "October 2021" "ufoai-2.5" "SlackBuilds.org"
+.SH NAME
+ufomodel \- optimizer for model files
+.SH DESCRIPTION
+UFO: Alien invasion developer tool to modify and optimize model files.
+.SH OPTIONS
+.TP
+\fB\-mdx\fR
+generate mdx files
+.TP
+\fB\-skinfix\fR
+fix skins for md2 models
+.TP
+\fB\-glcmds\fR
+remove the unused glcmds from md2 models
+.TP
+\fB\-check\fR
+perform general checks for all the models
+.TP
+\fB\-skinedit\fR <filename>
+edit skin of a model
+.TP
+\fB\-skinnum\fR <filename>
+edit the skin numbers of a model
+.TP
+\fB\-info\fR <filename>
+show model information
+.TP
+\fB\-overwrite\fR
+overwrite existing mdx files
+.TP
+\fB\-s\fR <float>
+sets the smoothness value for normal\-smoothing (in the range \fB\-1\fR.0 to 1.0)
+.TP
+\fB\-f\fR <filename>
+build tangentspace for the specified model file
+.TP
+\fB\-v\fR \fB\-\-verbose\fR
+print debug messages
+.TP
+\fB\-h\fR \fB\-\-help\fR
+show this help screen
+.SH "SEE ALSO"
+.PP
+\fBufo\fR(6)
+\fBufoded\fR(6)
+\fBufo2map\fR(6)
+\fBufoslicer\fR(6)
diff --git a/games/ufoai/man/uforadiant.6 b/games/ufoai/man/uforadiant.6
new file mode 100644
index 0000000000000..7ddc3977e0570
--- /dev/null
+++ b/games/ufoai/man/uforadiant.6
@@ -0,0 +1,49 @@
+.TH UFORADIANT 6 "October 2021" "ufoai-2.5" "SlackBuilds.org"
+.SH NAME
+uforadiant \- UFO: Alien Invasion Mapeditor
+
+.SH SYNOPSIS
+.PP
+\fBuforadiant\fR
+
+.SH DESCRIPTION
+This manual page documents briefly the
+.B uforadiant
+command.
+.PP
+\fBuforadiant\fP is the map editor for the strategy game UFO: Alien Invasion.
+
+.SH OPTIONS
+.PP
+Options are passed to the gtk init function.
+
+.SH "FILES"
+.TP
+\fB~/.ufoai/radiant/settings.xml\fR
+Editor configuration\&.
+.TP
+\fB~/.ufoai/radiant/shortcuts.ini\fR
+Key bindings\&.
+.TP
+\fBbase/ufos/entities.ufo\fR
+This file is included in the 0ufos.pk3 in your system wide UFO:AI installation directory and defines the entities the editor can add to maps\&.
+
+.SH "SEE ALSO"
+.PP
+\fBufo\fR(6)
+
+.SH AUTHOR
+\fBuforadiant\fP was written by the UFO: Alien Invasion team and based on the GPLed release of GtkRadiant 1.5 by id Software.
+.PP
+This manual page was written by Florian Ludwig <dino@phidev.org>,
+for the Debian project (but may be used by others). It was
+modified slightly by B. Watson <yalhcru@gmail.com> for the SlackBuilds.org
+project.
+
+.SH "SEE ALSO"
+.PP
+\fBufo\fR(6)
+\fBufoded\fR(6)
+\fBufo2map\fR(6)
+\fBufomodel\fR(6)
+\fBufoslicer\fR(6)
diff --git a/games/ufoai/man/ufoslicer.6 b/games/ufoai/man/ufoslicer.6
new file mode 100644
index 0000000000000..95b34efcbd7b4
--- /dev/null
+++ b/games/ufoai/man/ufoslicer.6
@@ -0,0 +1,40 @@
+.\" This man page was written by Markus Koschany in July 2013. It is provided
+.\" under the GNU General Public License 2 or (at your option) any later version.
+.TH ufoslicer "6" "October 2021" "ufoai-2.5" "SlackBuilds.org"
+.SH NAME
+ufoslicer \- an UFO:AI map slicer
+.SH SYNOPSIS
+.B ufoslicer
+\fI\-t N \-s N \-c \-m bspfile\fR
+.SH DESCRIPTION
+.TP
+UFO Alien Invasion developer tool to slice map files.
+.SH OPTIONS
+.TP
+\fB\-t\fR N
+= use slice thickness of N units.
+.TP
+\fB\-s\fR N
+= use scale factor of N.
+.TP
+\fB\-c\fR
+= create a single contour map.
+.TP
+\fB\-m\fR
+= create multiple contour maps.
+.HP
+\fB\-h\fR|\-\-help = show this help screen.
+.PP
+.SH EXAMPLES
+ufoslicer \fB\-t\fR 64 \fB\-s\fR 8 maps/farm
+.PP
+The above command would slice the map "farm.bsp", moving by 64 units between slices and
+would create a 1/8th scale bitmap file.
+.PP
+The default for \fB\-t\fR is 64 units.
+.SH "SEE ALSO"
+.PP
+\fBufo\fR(6)
+\fBufoded\fR(6)
+\fBufo2map\fR(6)
+\fBufomodel\fR(6)
diff --git a/games/ufoai/mkicons.sh b/games/ufoai/mkicons.sh
new file mode 100644
index 0000000000000..a0c886f91a643
--- /dev/null
+++ b/games/ufoai/mkicons.sh
@@ -0,0 +1,31 @@
+#!/bin/sh
+
+# create PNG icons for ufoai.
+# requires icoutils and perl-rename from SBo.
+# this is a support script, not to be run from within the SlackBuild.
+# please do not remove this from git!
+
+SRC=${TMP:-/tmp}/SBo/ufoai-${VERSION:-2.5}
+
+mkdir -p icons
+cd icons
+for i in $SRC/build/projects/*.ico; do
+ name="$( basename $i .ico )"
+ mkdir -p $name
+ ( cd $name
+ icotool -x $i
+ rename.pl 's,.*_(\d+)x.*,$1.png,' *
+ )
+done
+
+# upstream doesn't ship 64x64 icons, let's make them.
+convert -resize 64x64 ufo/256.png ufo/64.png
+convert -resize 64x64 ufoded/256.png ufoded/64.png
+
+# the radiant icon is tiny, make a better one.
+mkdir -p uforadiant
+composite radiant/32.png ufo/64.png -geometry +16+28 uforadiant/64.png
+convert -resize 48x48 uforadiant/64.png uforadiant/48.png
+convert -resize 32x32 uforadiant/64.png uforadiant/32.png
+convert -resize 16x16 uforadiant/64.png uforadiant/16.png
+rm -rf radiant
diff --git a/games/ufoai/patches/bug-949301-mxml.patch b/games/ufoai/patches/bug-949301-mxml.patch
new file mode 100644
index 0000000000000..678a0b8e3bee3
--- /dev/null
+++ b/games/ufoai/patches/bug-949301-mxml.patch
@@ -0,0 +1,29 @@
+From: Markus Koschany <apo@debian.org>
+Date: Mon, 17 Feb 2020 22:49:06 +0100
+Subject: bug 949301 mxml
+
+Bug-Debian: https://bugs.debian.org/949301
+Origin: https://sourceforge.net/p/ufoai/code/ci/163073ab9527cdaa33d77a713b8e46ff462a2b5c/
+---
+ src/common/xml.cpp | 7 ++++++-
+ 1 file changed, 6 insertions(+), 1 deletion(-)
+
+diff --git a/src/common/xml.cpp b/src/common/xml.cpp
+index 1629c90..8323752 100644
+--- a/src/common/xml.cpp
++++ b/src/common/xml.cpp
+@@ -519,8 +519,13 @@ static mxml_type_t mxml_ufo_type_cb (xmlNode_t* node)
+ /* You can lookup attributes and/or use the
+ * element name, hierarchy, etc... */
+ const char* type = mxmlElementGetAttr(node, "type");
+- if (type == nullptr)
++ if (type == nullptr) {
++#ifdef MXML_MAJOR_VERSION
++ type = mxmlGetElement(node);
++#else
+ type = node->value.element.name;
++#endif
++ }
+
+ if (!strcmp(type, "int"))
+ return MXML_INTEGER;
diff --git a/games/ufoai/patches/initialize-entityString.patch b/games/ufoai/patches/initialize-entityString.patch
new file mode 100644
index 0000000000000..cdbf9e52bd96a
--- /dev/null
+++ b/games/ufoai/patches/initialize-entityString.patch
@@ -0,0 +1,26 @@
+From: Markus Koschany <apo@debian.org>
+Date: Tue, 25 Apr 2017 14:31:16 +0200
+Subject: initialize entityString
+
+Initialize entityString to avoid that ufo2map will randomly segfault when
+compiling the maps.
+
+Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=860680
+Forwarded: https://sourceforge.net/p/ufoai/code/ci/bae827ba025ff1d3a56b402c27aa84401914acc4/
+---
+ src/tools/ufo2map/map.cpp | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/tools/ufo2map/map.cpp b/src/tools/ufo2map/map.cpp
+index 47c49f3..f56c55e 100644
+--- a/src/tools/ufo2map/map.cpp
++++ b/src/tools/ufo2map/map.cpp
+@@ -1227,7 +1227,7 @@ void LoadMapFile (const char* filename)
+ /* Set the number of tiles to 1. This is fix for ufo2map right now. */
+ mapTiles.numTiles = 1;
+
+- char entityString[MAX_TOKEN_CHARS];
++ char entityString[MAX_TOKEN_CHARS] = "";
+ const char* ump = GetUMPName(filename);
+ if (ump != nullptr)
+ ParseUMP(ump, entityString, false);
diff --git a/games/ufoai/patches/segfault-reactionfire-mode-bug-861979.patch b/games/ufoai/patches/segfault-reactionfire-mode-bug-861979.patch
new file mode 100644
index 0000000000000..d8575fe169dce
--- /dev/null
+++ b/games/ufoai/patches/segfault-reactionfire-mode-bug-861979.patch
@@ -0,0 +1,36 @@
+From: Markus Koschany <apo@debian.org>
+Date: Sun, 7 May 2017 18:46:50 +0200
+Subject: segfault reactionfire mode bug 861979
+
+Forwarded: http://ufoai.org/forum/index.php/topic,9111.0.html
+Origin: https://sourceforge.net/p/ufoai/code/ci/9cad041f0931b1f49e0c70f32e351a7227f0d2ff/
+---
+ src/game/inv_shared.cpp | 7 ++-----
+ 1 file changed, 2 insertions(+), 5 deletions(-)
+
+diff --git a/src/game/inv_shared.cpp b/src/game/inv_shared.cpp
+index 708e708..e5a73a5 100644
+--- a/src/game/inv_shared.cpp
++++ b/src/game/inv_shared.cpp
+@@ -633,9 +633,6 @@ const fireDef_t* Item::getSlowestFireDef () const
+ */
+ const objDef_t* Item::getReactionFireWeaponType () const
+ {
+- if (!this)
+- return nullptr;
+-
+ if (def()) {
+ const fireDef_t* fd = getFiredefs();
+ if (fd && fd->reaction)
+@@ -999,9 +996,9 @@ Item* Inventory::findInContainer (const containerIndex_t contId, const Item* con
+ */
+ bool Inventory::holdsReactionFireWeapon () const
+ {
+- if (getRightHandContainer()->getReactionFireWeaponType())
++ if (getRightHandContainer() != nullptr && getRightHandContainer()->getReactionFireWeaponType())
+ return true;
+- if (getLeftHandContainer()->getReactionFireWeaponType())
++ if (getLeftHandContainer() != nullptr && getLeftHandContainer()->getReactionFireWeaponType())
+ return true;
+ return false;
+ }
diff --git a/games/ufoai/patches/series b/games/ufoai/patches/series
new file mode 100644
index 0000000000000..345b9b459ea06
--- /dev/null
+++ b/games/ufoai/patches/series
@@ -0,0 +1,3 @@
+initialize-entityString.patch
+segfault-reactionfire-mode-bug-861979.patch
+bug-949301-mxml.patch
diff --git a/games/ufoai/slack-desc b/games/ufoai/slack-desc
index ed917bb4df34d..e77f8f03dd717 100644
--- a/games/ufoai/slack-desc
+++ b/games/ufoai/slack-desc
@@ -14,6 +14,6 @@ ufoai: game captures the spirit of the UFO: Enemy Unknown, the first one in
ufoai: the X-COM series. It tries to combine military realism with science
ufoai: fiction with the weirdness of an alien invasion. The game, however,
ufoai: is not a remake or a sequel.
-ufoai: It runs on a modified Quake 2 game engine.
ufoai:
-ufoai: Homepage: http://ufoai.org
+ufoai: This package @INCLUDES@ uforadiant, the map editor.
+ufoai: This package was built with SDL @SDLVER@.
diff --git a/games/ufoai/ufoai.SlackBuild b/games/ufoai/ufoai.SlackBuild
index b1d5861f1078e..1a3ceef558bd4 100644
--- a/games/ufoai/ufoai.SlackBuild
+++ b/games/ufoai/ufoai.SlackBuild
@@ -2,7 +2,8 @@
# Slackware build script for ufoai
-# Written by Joze Zobec <jozze.zepl@gmail.com>
+# Written by Joze Zobec <email removed>
+# Now maintained by B. Watson <yalhcru@gmail.com>
# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY
# EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
@@ -15,8 +16,22 @@
# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-# 20170706 bkw:
-# - fix build on -current
+# 20211017 bkw: BUILD=3
+# - fix build on -current again:
+# - disable building with BFD.
+# - -std=c++11
+# - new-style icons.
+# - make .desktop files validate.
+# - get rid of useless 'memory' binary.
+# - document missing optional dep, gtkglext.
+# - patches from Debian that (hopefully) prevent segfaults.
+# - make the game default to running in a window, as there are
+# issues with fullscreen on -current with (at least) intel video.
+# - disable uforadiant by default, it segfaults on startup and
+# I haven't figured out why yet.
+# - slack-desc reflects builds options (sdl 1/2, uforadiant).
+
+# 20170706 bkw: fix build on -current
# 20151126 bkw:
# - fix build on systems that have SDL2 but not SDL2_ttf
@@ -36,7 +51,7 @@ cd $(dirname $0) ; CWD=$(pwd)
PRGNAM=ufoai
VERSION=${VERSION:-2.5}
-BUILD=${BUILD:-2}
+BUILD=${BUILD:-3}
TAG=${TAG:-_SBo}
PKGTYPE=${PKGTYPE:-tgz}
@@ -48,9 +63,6 @@ if [ -z "$ARCH" ]; then
esac
fi
-# If the variable PRINT_PACKAGE_NAME is set, then this script will report what
-# the name of the created package would be, and then exit. This information
-# could be useful to other scripts.
if [ ! -z "${PRINT_PACKAGE_NAME}" ]; then
echo "$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.$PKGTYPE"
exit 0
@@ -74,12 +86,14 @@ else
LIBDIRSUFFIX=""
fi
-# If gtksourceview is available build the radiant editor
-if pkg-config --exists gtksourceview-2.0 ; then
- radiant="--enable-uforadiant"
-else
- radiant="--disable-uforadiant"
-fi
+# If gtksourceview and gtkglext are installed and RADIANT=yes, build
+# the uforadiant editor.
+radiant="--disable-uforadiant"
+
+[ "${RADIANT:-no}" = "yes" ] && \
+ pkg-config --exists gtksourceview-2.0 && \
+ pkg-config --exists gtkglext-1.0 && \
+ radiant="--enable-uforadiant"
if [ "${SSE:-yes}" = "no" ]; then
sseopt="--disable-sse"
@@ -98,16 +112,35 @@ mv $PRGNAM-$VERSION-source $PRGNAM-$VERSION
cd $PRGNAM-$VERSION
tar xvf $CWD/$PRGNAM-$VERSION-data.tar
chown -R root:root .
-find -L . \
- \( -perm 777 -o -perm 775 -o -perm 750 -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 {} \;
+find -L . -perm /111 -a \! -perm 755 -a -exec chmod 755 {} \+ -o \
+ \! -perm /111 -a \! -perm 644 -a -exec chmod 644 {} \+
# 20170706 bkw: fix build with gcc7
echo 'CXXFLAGS += -Wno-narrowing' >> build/flags.mk
-[ "${SDL2:-no}" = "no" ] && EXTRAOPT="--disable-sdl2"
+# 20211017 bkw: apply patches from Debian's build 6.
+for i in $( cat $CWD/patches/series ); do
+ patch -p1 < $CWD/patches/$i
+done
+
+# 20211017 bkw: change the default from fullscreen to windowed. This
+# is helpful because on my hardware, at least, the game crashes when
+# it tries to to fullscreen... and takes the whole X server with it.
+# This is just the default; users can switch to fullscreen from
+# within the game if they want.
+sed -i '/"vid_fullscreen"/s,"1","0",' src/client/cl_video.cpp
+
+# 20211017 bkw: bfd gratuitous API changes. This disables bfd, which
+# means the game can't print a backtrace if it crashes. Since we
+# install the binaries stripped, the backtrace wouldn't have been
+# all that useful anyway.
+sed -i '/check_header.*bfd\.h/d' configure
+
+# 20211017 bkw: it ignores environment CXXFLAGS, and we need this, so:
+echo 'CXXFLAGS += -std=c++11' >> build/flags.mk
+
+# 20211017 bkw: leave this here, but default to yes.
+[ "${SDL2:-yes}" = "no" ] && EXTRAOPT="--disable-sdl2"
CFLAGS="$SLKCFLAGS" \
CXXFLAGS="$SLKCFLAGS" \
@@ -117,51 +150,91 @@ CXXFLAGS="$SLKCFLAGS" \
--datadir=/usr/share/games/$PRGNAM \
--enable-release \
$sseopt \
- --enable-memory \
+ --disable-memory \
+ --disable-testall \
--enable-ufo \
--enable-ufoded \
--enable-ufoslicer \
$EXTRAOPT \
$radiant
-make
+# Normally it's "make V=1" for verbose build, but here it's different.
+make Q=''
make lang
-make maps
-make pk3
-BINARIES=
+# We get "make: nothing to be done for..." for these 2.
+# make maps
+# make pk3
# Manual install: first the data...
mkdir -p $PKG/usr/share/games/$PRGNAM $PKG/usr/games
cp -a base $PKG/usr/share/games/$PRGNAM/
# ...then the binaries
-if [ "$radiant" = "--enable-uforadiant" ]; then
+if [ -x radiant/uforadiant ]; then
cp -a radiant $PKG/usr/share/games/$PRGNAM/
rm -f $PKG/usr/share/games/$PRGNAM/radiant/uforadiant
BINARIES="radiant/uforadiant"
fi
-BINARIES="$BINARIES ufo ufoded ufo2map ufomodel memory ufoslicer"
+BINARIES="$BINARIES ufo ufoded ufo2map ufomodel ufoslicer"
install -s -m0755 $BINARIES $PKG/usr/games/
-# .desktop files, icons and man pages...
+# 20211017 bkw: make the .desktop files validate
+sed -i -e 's,Application;,,' \
+ -e '/^Encoding/d' \
+ -e '/^Icon/s,\.xpm,,' \
+ debian/*.desktop
+sed -i '/^StartupNotify=false/d' debian/uforadiant.desktop
+
+# .desktop files, old-style icons
mkdir -p $PKG/usr/share/applications $PKG/usr/share/pixmaps $PKG/usr/man/man6
install -m 0644 debian/*.desktop $PKG/usr/share/applications/
install -m 0644 debian/*.xpm $PKG/usr/share/pixmaps/
-install -m 0644 debian/*.6 $PKG/usr/man/man6/
+
+# man pages taken from more recent debian (ufoai_2.5-6.debian.tar.xz) and
+# modified for this SlackBuild. For one thing, I made them all section 6.
+install -m 0644 $CWD/man/*.6 $PKG/usr/man/man6/
gzip $PKG/usr/man/man6/*.6
+ln -s ufo.6.gz $PKG/usr/man/man6/$PRGNAM.6.gz
+
+# new-style icons, created by mkicons.sh, q.v.
+for i in $CWD/icons/*; do
+ app="$( basename $i )"
+ if [ -e $PKG/usr/games/$app ]; then
+ for png in $CWD/icons/$app/*.png; do
+ px="$( basename "$png" .png )"
+ size=${px}x${px}
+ dir=$PKG/usr/share/icons/hicolor/$size/apps
+ mkdir -p $dir
+ cat $png > $dir/$app.png
+ done
+ fi
+done
# Get rid of uforadiant stuff if we don't have uforadiant
-[ "$radiant" = "" ] && rm $PKG/usr/share/applications/uforadiant.desktop \
- $PKG/usr/man/man6/uforadiant.6.gz $PKG/usr/share/pixmaps/uforadiant.xpm
+if [ -x radiant/uforadiant ]; then
+ INCLUDES="includes"
+ # This looks like it doesn't belong
+ rm -f $PKG/usr/share/games/$PRGNAM/radiant/prefabs/pipes.map
+else
+ INCLUDES="does NOT include"
+ rm $PKG/usr/share/applications/uforadiant.desktop \
+ $PKG/usr/man/man6/uforadiant.6.gz \
+ $PKG/usr/share/pixmaps/uforadiant.xpm
+fi
+
+SDLVER="1.2"
+ldd $PKG/usr/games/ufo | grep -q SDL2 && SDLVER="2.0"
mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION
cp -a LICENSES README COPYING $PKG/usr/doc/$PRGNAM-$VERSION
cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild
mkdir -p $PKG/install
-cat $CWD/slack-desc > $PKG/install/slack-desc
+sed -e "s,@INCLUDES@,$INCLUDES," \
+ -e "s,@SDLVER@,$SDLVER," \
+ $CWD/slack-desc > $PKG/install/slack-desc
cat $CWD/doinst.sh > $PKG/install/doinst.sh
cd $PKG
diff --git a/games/ufoai/ufoai.info b/games/ufoai/ufoai.info
index 8ae4ce4f24688..27468ac4be1b7 100644
--- a/games/ufoai/ufoai.info
+++ b/games/ufoai/ufoai.info
@@ -1,8 +1,8 @@
PRGNAM="ufoai"
VERSION="2.5"
-HOMEPAGE="http://ufoai.org"
-DOWNLOAD="http://downloads.sourceforge.net/ufoai/ufoai-2.5-source.tar.bz2 \
- http://downloads.sourceforge.net/ufoai/ufoai-2.5-data.tar"
+HOMEPAGE="https://ufoai.org"
+DOWNLOAD="https://downloads.sourceforge.net/ufoai/ufoai-2.5-source.tar.bz2 \
+ https://downloads.sourceforge.net/ufoai/ufoai-2.5-data.tar"
MD5SUM="01d13816e674ed87f5343366783f2697 \
2389eb26ed2c189008fd4586a0f5e067"
DOWNLOAD_x86_64=""