Compare commits

...

14 commits

Author SHA1 Message Date
Yamagi
3a1863f625 Update the CHANGELOG. 2025-04-02 11:22:25 +02:00
Yamagi
c7a4b27bf6 Fix (potential) problematic use cases of qboolean.
xatrix had only one potential problematic use case, putting an int into
qboolean. It would have worked if qboolean is a bool, but better do it
right. No functional change intended.
2025-03-15 17:58:12 +01:00
Yamagi
8878216828 Fix build with C23 by reusing the predefined bool type. 2025-03-01 12:48:49 +01:00
Yamagi
dcc5a1f616 Follow yquake2 and don't force a C standard in Makefile and CMakeLists.
This reverts 869b18c.
2025-03-01 12:47:50 +01:00
Yamagi
869b18c329 Force C standard to gnu99 in cmake builds.
The Makefiles forces gnu99 since ages. Additionally gcc15 started to
default to C23 and our code doesn't (yet) build with it. Reported in
issue #20.
2025-02-22 11:29:42 +01:00
Yamagi
0a7e3c9c78 Add a Win64 workflow file. 2025-02-09 11:34:53 +01:00
Yamagi
693e82ffa4 Add a Linux/aarch64 workflow file. 2025-02-09 11:34:17 +01:00
Yamagi
b9cac9410e Rename the Linux/x86_64 workflow file.
This is a preparation of an upcoming Linux/aarch64 build. While here
switch back to Ubuntu 22.04 as builder, we should use the same Ubuntu
version everywhere.
2025-02-09 11:33:45 +01:00
Yamagi
787de54da5 Update CI to use 4 CPUs on Linux and Windows. 2025-02-09 10:55:51 +01:00
Yamagi
6a2d5125f6 There's no need to run brew upgrade. 2024-08-12 18:21:51 +02:00
Yamagi
b8a45290a2 Add CI workflows for Linux, MacOS and Windows.
This is equivalent to the CI workflows added to the yquake2 main
repository. The workflows are triggered on commit, for new pull
requests and when the pull request branch is updated. The CI is
mostly for providing users with up to date test builds.
2024-08-12 18:03:50 +02:00
Yamagi
38cc7813dd Modernize the README.
Convert to markdown and follow the same style as the yquake2 main
repository. Use it's resources were appropriate.
2024-08-12 18:01:46 +02:00
Yamagi
a5f933ba03 Update CHANGELOG for 1.10. 2023-11-04 14:08:05 +01:00
Yamagi
95852c466c Normalize arm64 to aarch 64 on not MacOS and Windows.
This makes sure that 64 bit and 32 bit aren't endig up as `arm`, making
it possible to load 32 bit savegames on 64 bit binaries and vise versa.
This is a theoretical issue with ctf, because the mod doesn't support
savegames.

For MacOS just use what the system calls itself.

Closes #18.
2023-11-04 14:05:02 +01:00
11 changed files with 346 additions and 38 deletions

45
.github/workflows/linux_aarch64.yml vendored Normal file
View file

@ -0,0 +1,45 @@
name: Testbuild for Linux (aarch64)
run-name: testbuild_linux_aarch64
on:
push:
branches:
- 'master'
pull_request:
types:
- edited
- opened
- synchronize
concurrency:
# Cancel concurrent workflows for the same PR or commit hash.
group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}}
cancel-in-progress: true
jobs:
build_ubuntu_aarch64:
runs-on: ubuntu-22.04-arm
strategy:
fail-fast: false
matrix:
include:
- env: ubuntu
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Build
run: |
# Public runners come with 4 CPUs.
make -j4
- name: Create testbuild package
run: |
# Create release directory tree
mkdir -p publish/quake2-ctf-linux_aarch64-${{github.sha}}/misc/docs
# Copy release assets
cp -r release/* publish/quake2-ctf-linux_aarch64-${{github.sha}}/
# Copy misc assets
cp LICENSE publish/quake2-ctf-linux_aarch64-${{github.sha}}/misc/docs/LICENSE.txt
cp README.md publish/quake2-ctf-linux_aarch64-${{github.sha}}/misc/docs/README.txt
- name: Upload testbuild package
uses: actions/upload-artifact@v4
with:
name: quake2-ctf-linux_aarch64-${{github.sha}}
path: publish/
if-no-files-found: error

45
.github/workflows/linux_x86_64.yml vendored Normal file
View file

@ -0,0 +1,45 @@
name: Testbuild for Linux (x86_64)
run-name: testbuild_linux_x86_64
on:
push:
branches:
- 'master'
pull_request:
types:
- edited
- opened
- synchronize
concurrency:
# Cancel concurrent workflows for the same PR or commit hash.
group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}}
cancel-in-progress: true
jobs:
build_ubuntu_x86_64:
runs-on: ubuntu-22.04
strategy:
fail-fast: false
matrix:
include:
- env: ubuntu
steps:
- name: Check out repository code
uses: actions/checkout@v4
- name: Build
run: |
# Public runners come with 4 CPUs.
make -j4
- name: Create testbuild package
run: |
# Create release directory tree
mkdir -p publish/quake2-ctf-linux_x86_64-${{github.sha}}/misc/docs
# Copy release assets
cp -r release/* publish/quake2-ctf-linux_x86_64-${{github.sha}}/
# Copy misc assets
cp LICENSE publish/quake2-ctf-linux_x86_64-${{github.sha}}/misc/docs/LICENSE.txt
cp README.md publish/quake2-ctf-linux_x86_64-${{github.sha}}/misc/docs/README.txt
- name: Upload testbuild package
uses: actions/upload-artifact@v4
with:
name: quake2-ctf-linux_x86_64-${{github.sha}}
path: publish/
if-no-files-found: error

49
.github/workflows/macos.yml vendored Normal file
View file

@ -0,0 +1,49 @@
name: Testbuild for MacOS
run-name: testbuild_macos
on:
push:
branches:
- 'master'
pull_request:
types:
- edited
- opened
- synchronize
concurrency:
# Cancel concurrent workflows for the same PR or commit hash.
group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}}
cancel-in-progress: true
jobs:
build_macos_aarch64:
runs-on: macos-latest
strategy:
fail-fast: false
matrix:
include:
- env: macos
steps:
- name: Install build dependencies
run: |
brew update
brew install make
- name: Check out repository code
uses: actions/checkout@v4
- name: Build
run: |
# Public runners come with 3 CPUs.
gmake -j3
- name: Create testbuild package
run: |
# Create release directory tree
mkdir -p publish/quake2-ctf-macos-${{github.sha}}/misc/docs
# Copy release assets
cp -r release/* publish/quake2-ctf-macos-${{github.sha}}/
# Copy misc assets
cp LICENSE publish/quake2-ctf-macos-${{github.sha}}/misc/docs/LICENSE.txt
cp README.md publish/quake2-ctf-macos-${{github.sha}}/misc/docs/README.txt
- name: Upload testbuild package
uses: actions/upload-artifact@v4
with:
name: quake2-ctf-macos-${{github.sha}}
path: publish/
if-no-files-found: error

56
.github/workflows/win32.yml vendored Normal file
View file

@ -0,0 +1,56 @@
name: Testbuild for Win32
run-name: testbuild_win32
on:
push:
branches:
- 'master'
pull_request:
types:
- edited
- opened
- synchronize
concurrency:
# Cancel concurrent workflows for the same PR or commit hash.
group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}}
cancel-in-progress: true
jobs:
build_mingw_x86_32:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
- { sys: mingw32, env: i686 }
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.sys}}
update: true
install: >-
git
make
mingw-w64-${{matrix.env}}-gcc
mingw-w64-${{matrix.env}}-make
- name: Check out repository code
uses: actions/checkout@v4
- name: Build
shell: msys2 {0}
run: |
# Public runners come with 4 CPUs.
make -j4
- name: Create testbuild package
shell: msys2 {0}
run: |
# Create release directory tree
mkdir -p publish/quake2-ctf-win32-${{github.sha}}/misc/docs
# Copy release assets
cp -r release/* publish/quake2-ctf-win32-${{github.sha}}/
# Copy misc assets
cp LICENSE publish/quake2-ctf-win32-${{github.sha}}/misc/docs/LICENSE.txt
cp README.md publish/quake2-ctf-win32-${{github.sha}}/misc/docs/README.txt
- name: Upload testbuild package
uses: actions/upload-artifact@v4
with:
name: quake2-ctf-win32-${{github.sha}}
path: publish/
if-no-files-found: error

56
.github/workflows/win64.yml vendored Normal file
View file

@ -0,0 +1,56 @@
name: Testbuild for Win64
run-name: testbuild_win64
on:
push:
branches:
- 'master'
pull_request:
types:
- edited
- opened
- synchronize
concurrency:
# Cancel concurrent workflows for the same PR or commit hash.
group: ${{github.workflow}}-${{github.event_name == 'pull_request' && github.head_ref || github.sha}}
cancel-in-progress: true
jobs:
build_mingw_x86_64:
runs-on: windows-latest
strategy:
fail-fast: false
matrix:
include:
- { sys: mingw64, env: x86_64 }
steps:
- uses: msys2/setup-msys2@v2
with:
msystem: ${{matrix.sys}}
update: true
install: >-
git
make
mingw-w64-${{matrix.env}}-gcc
mingw-w64-${{matrix.env}}-make
- name: Check out repository code
uses: actions/checkout@v4
- name: Build
shell: msys2 {0}
run: |
# Public runners come with 4 CPUs.
make -j4
- name: Create testbuild package
shell: msys2 {0}
run: |
# Create release directory tree
mkdir -p publish/quake2-ctf-win64-${{github.sha}}/misc/docs
# Copy release assets
cp -r release/* publish/quake2-ctf-win64-${{github.sha}}/
# Copy misc assets
cp LICENSE publish/quake2-ctf-win64-${{github.sha}}/misc/docs/LICENSE.txt
cp README.md publish/quake2-ctf-win64-${{github.sha}}/misc/docs/README.txt
- name: Upload testbuild package
uses: actions/upload-artifact@v4
with:
name: quake2-ctf-win64-${{github.sha}}
path: publish/
if-no-files-found: error

View file

@ -1,4 +1,10 @@
Three Wave Capture The Flag 1.07 to 1.09
Three Wave Capture The Flag 1.10 to 1.11
- Fix build in C23 mode.
Three Wave Capture The Flag 1.09 to 1.10
- Fix build on ARM Macs.
Three Wave Capture The Flag 1.08 to 1.09
- Several small bugfixes.
Three Wave Capture The Flag 1.07 to 1.08

View file

@ -47,8 +47,12 @@ YQ2_ARCH ?= $(PROCESSOR_ARCHITECTURE)
endif
endif # windows but MINGW_CHOST not defined
else
ifneq ($(YQ2_OSTYPE), Darwin)
# Normalize some abiguous YQ2_ARCH strings
YQ2_ARCH ?= $(shell uname -m | sed -e 's/i.86/i386/' -e 's/amd64/x86_64/' -e 's/^arm.*/arm/')
YQ2_ARCH ?= $(shell uname -m | sed -e 's/i.86/i386/' -e 's/amd64/x86_64/' -e 's/arm64/aarch64/' -e 's/^arm.*/arm/')
else
YQ2_ARCH ?= $(shell uname -m)
endif
endif
# On Windows / MinGW $(CC) is undefined by default.
@ -84,7 +88,7 @@ endif
# to get it there...
# -fwrapv for defined integer wrapping. MSVC6 did this
# and the game code requires it.
override CFLAGS += -std=gnu99 -fno-strict-aliasing -fwrapv
override CFLAGS += -fno-strict-aliasing -fwrapv
# -MMD to generate header dependencies. Unsupported by
# the Clang shipped with OS X.

32
README
View file

@ -1,32 +0,0 @@
This is a 64 bit clean and bugfixed version of id Software's Quake II
addon pack "Capture The Flag", developed by David 'Zoid' Kirsch. Hundred
of type errors and strange constructs were fixed, thus this version
should run much more stable than the old SDK version. While it may work
with every Quake II client, the "Yamagi Quake II" client is highly
recommended. For more Information visit http://www.yamagi.org/quake2.
Installation for FreeBSD, Linux and OpenBSD:
--------------------------------------------
1. Type "make" or "gmake" to compile the game.so.
2. Copy release/game.so to the ctf/ subfolder of your Quake II
installation. The CTF gamedata is part of the 3.20 point release.
3. Start the game with "./quake2 +set game ctf".
Installation for OS X:
----------------------
1. Copy game.dll from the zip-archive to ctf/.
2. Start the game with "quake2 +set game ctf"
If you want to compile 'ctf' for OS X from source, please take a look at
the "Installation" section of the README of the Yamagi Quake II client.
In the same file the integration into an app-bundle is explained.
Installation for Windows:
-------------------------
1. Copy the game.dll to the ctf\ subfolder of your Quake II
installation. The CTF gamedata is part of the 3.20 point release.
2. Start the game with "quake2.exe +set game ctf".
If you want to compile 'ctf' for Windows from source, please take a
look at the "Installation" section of the README of the Yamagi Quake
II client. There's descripted how to setup the build environment.

66
README.md Normal file
View file

@ -0,0 +1,66 @@
# Three Wave Capture The Flag for Yamagi Quake II
Three Wave Capture The Flag for Yamagi Quake II is a bugfixed version of
the official CTF addon for Quake II. It's based upon the Quake II source
code release and and is licensed under GPL version 2:
* [LICENSE](https://github.com/yquake2/ctf/blob/master/LICENSE)
Several bugs were fixed. The addon is intended to be used with Yamagi
Quake II, but it's also fully backward compatible with the last Quake II
pointrelease 3.20 and may work with other source ports.
Officially supported operating systems are:
* FreeBSD
* Linux
* Windows
Beside theses Three Wave Capture The Flag for Yamagi Quake II has
community support for MacOS and most other unixoid operating systems,
including NetBSD, OpenBSD and Solaris.
## Development
Three Wave Capture The Flag for Yamagi Quake II is a community driven
project and lives from community involvement. Please report bugs in our
issue tracker:
* [Issue Tracker](https://github.com/yquake2/ctf/issues)
We are always open to code contributions, no matter if they are small
bugfixes or bigger features. However, Yamagi Quake II is a conservative
project with big focus on stability and backward compatibility. We don't
accept breaking changes. When in doubt please open an issue and ask if a
contribution in welcome before putting too much work into it. Open a
pull request to submit code:
* [Pull Requests](https://github.com/yquake2/ctf/pulls)
Also have a look at our contributors guide:
* [Contributors Guide](https://github.com/yquake2/yquake2/blob/master/doc/080_contributing.md)
## Documentation
Yamagi Quake II has rather extensive documentation covering all relevant
areas from installation and configuration to package building. Have a
look at the documentation index:
* [Documentation Index](https://github.com/yquake2/yquake2/blob/master/doc/010_index.md)
## Releases
Three Wave Capture The Flag for Yamagi Quake II releases at an irregular
schedule. The official releases with source code tarballs and prebuild
Windows binaries can be found at the homepage:
* [Homepage](https://www.yamagi.org/quake2/)
Our CI builds **unsupported** Linux, MacOS and Windows binaries at every
commit. The artifacts can be found here:
* [Github Actions](https://github.com/yquake2/ctf/actions)

View file

@ -168,11 +168,11 @@ SV_FilterPacket(char *from)
{
if ((in & ipfilters[i].mask) == ipfilters[i].compare)
{
return (int)filterban->value;
return (filterban->value != 0);
}
}
return (int)!filterban->value;
return (filterban->value == 0);
}
void

View file

@ -36,8 +36,21 @@
#include <stdlib.h>
#include <time.h>
typedef unsigned char byte;
#if defined(__STDC_VERSION__) && __STDC_VERSION__ >= 202000L // C23 or newer
typedef bool qboolean;
#else
#ifdef true
#undef true
#endif
#ifdef false
#undef false
#endif
typedef enum {false, true} qboolean;
#endif
typedef unsigned char byte;
#ifndef NULL
#define NULL ((void *)0)