games/assaultcube: Update to 1.3.0.2

Submitter becomes maintainer, already maintainer of several ports.

The PORT_ENET option no longer compiles, so remove it. The MASTER server option
is also currently broken, but players playing the game or running a dedicated
server should not need to run it, so disable this option for now.

While here, pet linters.

ChangeLog: https://assault.cubers.net/docs/history.html

 * the server sends messages so you know what data was used for shuffeling
   (random < match < vita)
 * switching to spectator only incurs respawn delay, not suicide/teamkill
 * the overview spectator can now see the flags in tilted-model or radar-like
   ways through overviewflags setting
 * connect protocol waits for authentication with the masterserver before
   connecting
 * register connect protocol script for linux

PR:		269505
Reported by:	kevinz5000@gmail.com (maintainer)
This commit is contained in:
Kevin Zheng 2023-02-13 14:15:41 +01:00 committed by Fernando Apesteguía
parent c0c0b1bc86
commit 3c8ea1caee
6 changed files with 27 additions and 344 deletions

View file

@ -1,12 +1,9 @@
PORTNAME= assaultcube
PORTVERSION= 1.2.0.2
PORTREVISION= 7
PORTVERSION= 1.3.0.2
CATEGORIES= games
MASTER_SITES= SF/actiongame/AssaultCube%20Version%20${PORTVERSION}
DISTNAME= AssaultCube_v${PORTVERSION}
MAINTAINER= ports@FreeBSD.org
COMMENT= Total conversion of the FPS game called Cube
MAINTAINER= kevinz5000@gmail.com
COMMENT= Free, multiplayer, first-person shooter game based on the CUBE engine
WWW= https://assault.cubers.net/
LICENSE= ACUBE CUBE MIT OTHER
@ -22,42 +19,43 @@ LICENSE_PERMS_CUBE= dist-mirror dist-sell pkg-mirror pkg-sell auto-accept
LICENSE_PERMS_OTHER= dist-mirror pkg-mirror auto-accept
USES= gmake tar:bzip2
USE_GITHUB= yes
GH_ACCOUNT= assaultcube
GH_PROJECT= AC
GH_TAGNAME= v1.3.0.2
LDFLAGS_i386= -Wl,-znotext
WRKSRC= ${WRKDIR}/AssaultCube_v${PORTVERSION}
BUILD_WRKSRC= ${WRKSRC}/source/src
SUB_FILES= ${PLIST_FILES:Mbin/*:T}
BUILD_WRKSRC= ${WRKSRC}/source/src
PORTDATA= config packages scripts
PORTDOCS= *
PLIST_DIRS= ${DATADIR}/packages/maps/servermaps/incoming
PORTDATA= config packages
OPTIONS_DEFINE= DOCS PORT_ENET
OPTIONS_MULTI= BUILD
OPTIONS_MULTI_BUILD= CLIENT DEDICATED MASTER
OPTIONS_DEFAULT= CLIENT DEDICATED
OPTIONS_MULTI= BUILD
OPTIONS_MULTI_BUILD= CLIENT DEDICATED #MASTER is currently broken
CLIENT_DESC= Build client
CLIENT_USES= compiler:c++11-lang gettext-runtime gl openal:al sdl \
xorg
CLIENT_USE= GL=gl SDL=image,sdl XORG=x11
DEDICATED_DESC= Build dedicated server
CLIENT_LIB_DEPENDS= libvorbisfile.so:audio/libvorbis \
libcurl.so:ftp/curl
CLIENT_USES= compiler:c++11-lang desktop-file-utils gettext-runtime gl openal:al sdl \
xorg
CLIENT_USE= GL=gl SDL=sdl2,image2 XORG=x11
CLIENT_ALL_TARGET= client
CLIENT_DESKTOP_ENTRIES= "AssaultCube" "${COMMENT}" \
"${PREFIX}/share/pixmaps/${PORTNAME}.png" "${PORTNAME}_client" \
"${PORTNAME}" "${PORTNAME}_client" \
"Game;" false
CLIENT_PLIST_FILES= bin/${PORTNAME}_client libexec/${PORTNAME}_client \
share/pixmaps/${PORTNAME}.png
DEDICATED_DESC= Build dedicated server
DEDICATED_ALL_TARGET= server
DEDICATED_PLIST_FILES= bin/${PORTNAME}_server libexec/${PORTNAME}_server
MASTER_DESC= Build master server
MASTER_ALL_TARGET= master
MASTER_PLIST_FILES= bin/${PORTNAME}_master libexec/${PORTNAME}_master
PORT_ENET_DESC= Use libenet from net/enet
PORT_ENET_CONFIGURE_OFF= --enable-shared=no --enable-static=yes
PORT_ENET_LIB_DEPENDS= libenet.so:net/enet
PORT_ENET_VARS_OFF= GNU_CONFIGURE=yes CONFIGURE_WRKSRC="${WRKSRC}/source/enet"
#MASTER_DESC= Build master server
#MASTER_ALL_TARGET= master
#MASTER_PLIST_FILES= bin/${PORTNAME}_master libexec/${PORTNAME}_master
post-patch: .SILENT
${REINPLACE_CMD} -e '/^CXXFLAGS=/d ; /^CXX=/d ; /^CLIENT_PCH/d ; \
@ -69,20 +67,11 @@ post-patch: .SILENT
/^SERVER_LIBS=/s|$$| $$(LDFLAGS) -L$$(LOCALBASE)/lib|' \
${BUILD_WRKSRC}/Makefile
post-patch-PORT_ENET-on:
@${REINPLACE_CMD} -i '.port_enet.bak' -e 's/libenet // ; \
s|-I\.\./enet/include|| ; \
s|-L\.\./enet/\.libs||' \
${BUILD_WRKSRC}/Makefile
do-install:
(cd ${WRKSRC} && ${COPYTREE_SHARE} "${PORTDATA}" ${STAGEDIR}${DATADIR})
do-install-DOCS-on:
(cd ${WRKSRC}/docs && ${COPYTREE_SHARE} . ${STAGEDIR}${DOCSDIR})
do-install-CLIENT-on:
${INSTALL_DATA} ${WRKSRC}/docs/images/icon.png \
${INSTALL_DATA} ${WRKSRC}/packages/misc/icon.png \
${STAGEDIR}${PREFIX}/share/pixmaps/${PORTNAME}.png
.for f in client master server

View file

@ -1,2 +1,3 @@
SHA256 (AssaultCube_v1.2.0.2.tar.bz2) = 77ac41bdf07f6d74367e29089c2ee34da5ef53fdf979d7dfad58c3edce5f0717
SIZE (AssaultCube_v1.2.0.2.tar.bz2) = 52975325
TIMESTAMP = 1676156238
SHA256 (assaultcube-AC-1.3.0.2-v1.3.0.2_GH0.tar.gz) = 05f21db1f20ee5cc8f83c2cd4e8746f16224654343959f29a4902859479e2dec
SIZE (assaultcube-AC-1.3.0.2-v1.3.0.2_GH0.tar.gz) = 51034819

View file

@ -1,259 +0,0 @@
# Origin: https://github.com/assaultcube/AC/commit/6e4b23734f115888ce73907a85739ec833a333fd
# Subject: fix clang warnings
# Origin: https://github.com/assaultcube/AC/commit/752950989b4e286459ca9aee3d61a868d7b20fa4
# Subject: fix some errors and warnings for GCC 6
--- source/src/bot/bot_waypoint.cpp.orig 2013-11-10 18:50:03 UTC
+++ source/src/bot/bot_waypoint.cpp
@@ -848,7 +848,7 @@ void CWaypointClass::DeleteWaypoint(vec
if (!pWP)
{
- conoutf("Error: Couldn´t find near waypoint");
+ conoutf("Error: Couldn't find near waypoint");
return;
}
@@ -1221,7 +1221,7 @@ void CWaypointClass::CalcCost(node_s *pN
flCost += (1.0f-flFraction)*0.5f;
}
- if ((abs(a) > 4) || (abs(b) > 4)) continue;
+ if ((iabs(a) > 4) || (iabs(b) > 4)) continue;
vec from = to;
to.z -= (JUMP_HEIGHT - 1.0f);
@@ -1249,7 +1249,7 @@ void CWaypointClass::CalcCost(node_s *pN
flCost += (1.0f-flFraction)*0.5f;
}
- if ((abs(a) > 4) || (abs(b) > 4)) continue;
+ if ((iabs(a) > 4) || (iabs(b) > 4)) continue;
vec from = to;
to.z -= (JUMP_HEIGHT - 1.0f);
@@ -1671,12 +1671,12 @@ node_s *CWaypointClass::GetNearestTrigge
void CWaypointClass::GetNodeIndexes(const vec &v_origin, short *i, short *j)
{
// Function code by cheesy and PMB
- //*i = abs((int)((int)(v_origin.x + (2*ssize)) / SECTOR_SIZE));
- //*j = abs((int)((int)(v_origin.y + (2*ssize)) / SECTOR_SIZE));
+ //*i = iabs((int)((int)(v_origin.x + (2*ssize)) / SECTOR_SIZE));
+ //*j = iabs((int)((int)(v_origin.y + (2*ssize)) / SECTOR_SIZE));
//*i = (int)((v_origin.x) / ssize * MAX_MAP_GRIDS);
//*j = (int)((v_origin.y) / ssize * MAX_MAP_GRIDS);
- *i = abs((int)((v_origin.x) / MAX_MAP_GRIDS));
- *j = abs((int)((v_origin.y) / MAX_MAP_GRIDS));
+ *i = iabs((int)((v_origin.x) / MAX_MAP_GRIDS));
+ *j = iabs((int)((v_origin.y) / MAX_MAP_GRIDS));
if (*i > MAX_MAP_GRIDS - 1)
*i = MAX_MAP_GRIDS - 1;
--- source/src/command.cpp.orig 2013-11-09 18:48:58 UTC
+++ source/src/command.cpp
@@ -497,7 +497,7 @@ char *executeret(const char *p)
if(lc<=seer_t1.length())
{
int dt = seer_t1[seer_index] - seer_t1[lc];
- if(abs(dt)<2)
+ if(iabs(dt)<2)
{
conoutf("SCRIPT EXECUTION warning [%d:%s]", &p, p);
seer_t2.add(seer_t1[seer_index]);
--- source/src/command.h.orig 2013-10-22 18:57:19 UTC
+++ source/src/command.h
@@ -86,6 +86,7 @@ enum { IEXC_CORE = 0, IEXC_CFG, IEXC_PRO
#define VARNP(name, global, min, cur, max) int global = variable(#name, min, cur, max, &global, NULL, true)
#define VARF(name, min, cur, max, body) extern int name; void var_##name() { body; } int name = variable(#name, min, cur, max, &name, var_##name, false)
#define VARFP(name, min, cur, max, body) extern int name; void var_##name() { body; } int name = variable(#name, min, cur, max, &name, var_##name, true)
+#define VARNFP(name, global, min, cur, max, body) extern int global; void var_##name() { body; } int global = variable(#name, min, cur, max, &global, var_##name, true)
#define FVARP(name, min, cur, max) float name = fvariable(#name, min, cur, max, &name, NULL, true)
#define FVAR(name, min, cur, max) float name = fvariable(#name, min, cur, max, &name, NULL, false)
--- source/src/crypto.cpp.orig 2013-10-09 08:27:37 UTC
+++ source/src/crypto.cpp
@@ -763,7 +763,7 @@ bool hashstring(const char *str, char *r
const char *genpwdhash(const char *name, const char *pwd, int salt)
{
static string temp;
- formatstring(temp)("%s %d %s %s %d", pwd, salt, name, pwd, abs(PROTOCOL_VERSION));
+ formatstring(temp)("%s %d %s %s %d", pwd, salt, name, pwd, iabs(PROTOCOL_VERSION));
tiger::hashval hash;
tiger::hash((uchar *)temp, (int)strlen(temp), hash);
formatstring(temp)("%llx %llx %llx", hash.chunks[0], hash.chunks[1], hash.chunks[2]);
--- source/src/editing.cpp.orig 2013-10-22 18:57:16 UTC
+++ source/src/editing.cpp
@@ -126,11 +126,11 @@ void checkselections()
void makesel(bool isnew)
{
block &cursel = sels.last(); //RR 10/12/12 - FIXEME, error checking should happen with "isnew", not here checking if it really is new.
- if(isnew || sels.length() == 0) addselection(min(lastx, cx), min(lasty, cy), abs(lastx-cx)+1, abs(lasty-cy)+1, max(lasth, ch));
+ if(isnew || sels.length() == 0) addselection(min(lastx, cx), min(lasty, cy), iabs(lastx-cx)+1, iabs(lasty-cy)+1, max(lasth, ch));
else
{
cursel.x = min(lastx, cx); cursel.y = min(lasty, cy);
- cursel.xs = abs(lastx-cx)+1; cursel.ys = abs(lasty-cy)+1;
+ cursel.xs = iabs(lastx-cx)+1; cursel.ys = iabs(lasty-cy)+1;
cursel.h = max(lasth, ch);
correctsel(cursel);
}
@@ -645,7 +645,7 @@ void movemap(int xo, int yo, int zo) //
}
if(xo || yo)
{
- block b = { max(-xo, 0), max(-yo, 0), ssize - abs(xo), ssize - abs(yo) }, *cp = blockcopy(b);
+ block b = { max(-xo, 0), max(-yo, 0), ssize - iabs(xo), ssize - iabs(yo) }, *cp = blockcopy(b);
cp->x = max(xo, 0);
cp->y = max(yo, 0);
blockpaste(*cp);
--- source/src/entity.h.orig 2013-10-22 18:57:16 UTC
+++ source/src/entity.h
@@ -540,7 +540,7 @@ public:
{
const int maxskin[2] = { 4, 6 };
t = team_base(t < 0 ? team : t);
- nextskin[t] = abs(s) % maxskin[t];
+ nextskin[t] = iabs(s) % maxskin[t];
}
};
--- source/src/main.cpp.orig 2013-10-29 09:33:15 UTC
+++ source/src/main.cpp
@@ -513,11 +513,11 @@ void setresdata(char *s, enet_uint32 c)
COMMANDF(screenres, "ii", (int *w, int *h) { screenres(*w, *h); });
static int curgamma = 100;
-VARFP(gamma, 30, 100, 300,
+VARNFP(gamma, vgamma, 30, 100, 300,
{
- if(gamma == curgamma) return;
- curgamma = gamma;
- float f = gamma/100.0f;
+ if(vgamma == curgamma) return;
+ curgamma = vgamma;
+ float f = vgamma/100.0f;
if(SDL_SetGamma(f,f,f)==-1) conoutf("Could not set gamma: %s", SDL_GetError());
});
--- source/src/platform.h.orig 2013-10-22 18:57:19 UTC
+++ source/src/platform.h
@@ -2,14 +2,6 @@
#ifdef _FORTIFY_SOURCE
#undef _FORTIFY_SOURCE
#endif
-
- #define gamma __gamma
-#endif
-
-#include <math.h>
-
-#ifdef __GNUC__
- #undef gamma
#endif
#include <string.h>
@@ -19,6 +11,7 @@
#include <ctype.h>
#include <time.h>
#include <limits.h>
+#include <math.h>
#ifdef __GNUC__
#include <new>
#include <signal.h>
--- source/src/rendercubes.cpp.orig 2013-10-22 18:57:16 UTC
+++ source/src/rendercubes.cpp
@@ -202,9 +202,9 @@ void render_flat(int wtex, int x, int y,
else // continue strip
{
int lighterr = lighterror*2;
- if((abs(ol1r-l3->r)<lighterr && abs(ol2r-l4->r)<lighterr // skip vertices if light values are close enough
- && abs(ol1g-l3->g)<lighterr && abs(ol2g-l4->g)<lighterr
- && abs(ol1b-l3->b)<lighterr && abs(ol2b-l4->b)<lighterr) || !wtex)
+ if((iabs(ol1r-l3->r)<lighterr && iabs(ol2r-l4->r)<lighterr // skip vertices if light values are close enough
+ && iabs(ol1g-l3->g)<lighterr && iabs(ol2g-l4->g)<lighterr
+ && iabs(ol1b-l3->b)<lighterr && iabs(ol2b-l4->b)<lighterr) || !wtex)
{
verts.setsize(verts.length()-2);
nquads--;
@@ -361,7 +361,7 @@ void render_square(int wtex, float floor
{
int lighterr = lighterror*2;
if((!hf && !ohf)
- && ((abs(ol1r-l2->r)<lighterr && abs(ol1g-l2->g)<lighterr && abs(ol1b-l2->b)<lighterr) || !wtex)) // skip vertices if light values are close enough
+ && ((iabs(ol1r-l2->r)<lighterr && iabs(ol1g-l2->g)<lighterr && iabs(ol1b-l2->b)<lighterr) || !wtex)) // skip vertices if light values are close enough
{
verts.setsize(verts.length()-2);
nquads--;
--- source/src/rendertext.cpp.orig 2013-10-22 18:57:16 UTC
+++ source/src/rendertext.cpp
@@ -330,7 +330,7 @@ static void text_color(char c, char *sta
if(c=='r') c = stack[(sp > 0) ? --sp : sp]; // restore color
else if(c == 'b') { if(allowblinkingtext && !ignoreblinkingbit) stack[sp] *= -1; } // blinking text - only if allowed
else stack[sp] = c;
- switch(abs(stack[sp]))
+ switch(iabs(stack[sp]))
{
case '0': color = bvec( 2, 255, 128 ); break; // green: player talk
case '1': color = bvec( 96, 160, 255 ); break; // blue: team chat
@@ -380,7 +380,7 @@ static void text_color(char c, char *sta
//default: color = bvec( 255, 255, 255 ); break;
}
int b = (int) (sinf(lastmillis / 200.0f) * 115.0f);
- b = stack[sp] > 0 ? 100 : min(abs(b), 100);
+ b = stack[sp] > 0 ? 100 : min(iabs(b), 100);
glColor4ub(color.x, color.y, color.z, (a * b) / 100);
}
}
--- source/src/tools.h.orig 2013-10-22 18:57:19 UTC
+++ source/src/tools.h
@@ -54,8 +54,7 @@ static inline T min(T a, T b)
{
return a < b ? a : b;
}
-
-static inline float round(float x) { return floor(x + 0.5f); }
+inline int iabs(int n) { return labs(n); }
#define clamp(a,b,c) (max(b, min(a, c)))
#define rnd(x) ((int)(randomMT()&0xFFFFFF)%(x))
--- source/src/world.cpp.orig 2013-10-22 18:57:19 UTC
+++ source/src/world.cpp
@@ -79,9 +79,9 @@ void remip(const block &b, int level)
|| o[i]->ceil!=o[3]->ceil
|| o[i]->ftex!=o[3]->ftex
|| o[i]->ctex!=o[3]->ctex
- || abs(o[i+1]->r-o[0]->r)>lighterr // perfect mip even if light is not exactly equal
- || abs(o[i+1]->g-o[0]->g)>lighterr
- || abs(o[i+1]->b-o[0]->b)>lighterr
+ || iabs(o[i+1]->r-o[0]->r)>lighterr // perfect mip even if light is not exactly equal
+ || iabs(o[i+1]->g-o[0]->g)>lighterr
+ || iabs(o[i+1]->b-o[0]->b)>lighterr
|| o[i]->utex!=o[3]->utex
|| o[i]->wtex!=o[3]->wtex) goto c;
}
--- source/src/worldrender.cpp.orig 2013-10-09 08:27:37 UTC
+++ source/src/worldrender.cpp
@@ -270,10 +270,10 @@ void distlod(int &low, int &high, int an
void render_world(float vx, float vy, float vh, float changelod, int yaw, int pitch, float fov, float fovy, int w, int h)
{
loopi(LARGEST_FACTOR) stats[i] = 0;
- min_lod = minimap || (player1->isspectating() && player1->spectatemode == SM_OVERVIEW) ? MAX_LOD : MIN_LOD+abs(pitch)/12;
+ min_lod = minimap || (player1->isspectating() && player1->spectatemode == SM_OVERVIEW) ? MAX_LOD : MIN_LOD+iabs(pitch)/12;
yaw = 360-yaw;
float widef = fov/75.0f;
- int cdist = abs(yaw%90-45);
+ int cdist = iabs(yaw%90-45);
if(cdist<7) // hack to avoid popup at high fovs at 45 yaw
{
min_lod = max(min_lod, (int)(MIN_LOD+(10-cdist)/1.0f*widef)); // less if lod worked better
--- source/src/zip.cpp.orig 2013-10-22 18:57:19 UTC
+++ source/src/zip.cpp
@@ -550,7 +550,7 @@ struct zipstream : stream
bool extractzipfile(ziparchive *a, zipfile *f, const char *name)
{
zipstream *s = new zipstream;
- FILE *target;
+ FILE *target = NULL;
defformatstring(fname)("%s", findfile(name, "wb"));
preparedir(fname);
bool error = false;

View file

@ -1,20 +0,0 @@
--- source/enet/unix.c.orig 2013-10-22 18:57:22 UTC
+++ source/enet/unix.c
@@ -97,7 +97,7 @@ enet_address_set_host (ENetAddress * add
char buffer [2048];
int errnum;
-#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
gethostbyname_r (name, & hostData, buffer, sizeof (buffer), & hostEntry, & errnum);
#else
hostEntry = gethostbyname_r (name, & hostData, buffer, sizeof (buffer), & errnum);
@@ -150,7 +150,7 @@ enet_address_get_host (const ENetAddress
in.s_addr = address -> host;
-#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__)
+#if defined(linux) || defined(__linux) || defined(__linux__) || defined(__FreeBSD__) || defined(__FreeBSD_kernel__) || defined(__DragonFly__)
gethostbyaddr_r ((char *) & in, sizeof (struct in_addr), AF_INET, & hostData, buffer, sizeof (buffer), & hostEntry, & errnum);
#else
hostEntry = gethostbyaddr_r ((char *) & in, sizeof (struct in_addr), AF_INET, & hostData, buffer, sizeof (buffer), & errnum);

View file

@ -1,17 +0,0 @@
--- source/src/console.h.orig 2013-10-09 08:27:31 UTC
+++ source/src/console.h
@@ -127,7 +127,7 @@
}
};
-/** WIP ALERT */
+/** WIP ALERT *//*
struct textinputbuffer_wip
{
string buf;
@@ -257,4 +257,4 @@
return false;
}
};
-
+*/

View file

@ -1,11 +0,0 @@
--- source/src/master.cpp.orig 2013-10-09 08:27:37 UTC
+++ source/src/master.cpp
@@ -510,7 +510,7 @@
authreq &a = c.authreqs.add();
a.reqtime = servtime;
a.id = id;
- uint seed[3] = { starttime, servtime, randomMT() };
+ uint seed[3] = { (uint)starttime, servtime, randomMT() };
static vector<char> buf;
buf.setsize(0);
a.answer = genchallenge(u->pubkey, seed, sizeof(seed), buf);