diff --git a/README.md b/README.md index c3afc20..8e66a0e 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,5 @@ # openarena +An open-source content package for Quake III Arena licensed under the GPL, effectively creating a free stand-alone game. +Warning: this game was rated appropriate for an adult audience. + diff --git a/menudef.h b/menudef.h new file mode 100644 index 0000000..7bb7b0a --- /dev/null +++ b/menudef.h @@ -0,0 +1,308 @@ +/* +=========================================================================== +Copyright (C) 1999-2005 Id Software, Inc. + +This file is part of Quake III Arena source code. + +Quake III Arena source code is free software; you can redistribute it +and/or modify it under the terms of the GNU General Public License as +published by the Free Software Foundation; either version 2 of the License, +or (at your option) any later version. + +Quake III Arena source code is distributed in the hope that it will be +useful, but WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +GNU General Public License for more details. + +You should have received a copy of the GNU General Public License +along with Foobar; if not, write to the Free Software +Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +=========================================================================== +*/ + +#define ITEM_TYPE_TEXT 0 // simple text +#define ITEM_TYPE_BUTTON 1 // button, basically text with a border +#define ITEM_TYPE_RADIOBUTTON 2 // toggle button, may be grouped +#define ITEM_TYPE_CHECKBOX 3 // check box +#define ITEM_TYPE_EDITFIELD 4 // editable text, associated with a cvar +#define ITEM_TYPE_COMBO 5 // drop down list +#define ITEM_TYPE_LISTBOX 6 // scrollable list +#define ITEM_TYPE_MODEL 7 // model +#define ITEM_TYPE_OWNERDRAW 8 // owner draw, name specs what it is +#define ITEM_TYPE_NUMERICFIELD 9 // editable text, associated with a cvar +#define ITEM_TYPE_SLIDER 10 // mouse speed, volume, etc. +#define ITEM_TYPE_YESNO 11 // yes no cvar setting +#define ITEM_TYPE_MULTI 12 // multiple list setting, enumerated +#define ITEM_TYPE_BIND 13 // multiple list setting, enumerated + +#define ITEM_ALIGN_LEFT 0 // left alignment +#define ITEM_ALIGN_CENTER 1 // center alignment +#define ITEM_ALIGN_RIGHT 2 // right alignment + +#define ITEM_TEXTSTYLE_NORMAL 0 // normal text +#define ITEM_TEXTSTYLE_BLINK 1 // fast blinking +#define ITEM_TEXTSTYLE_PULSE 2 // slow pulsing +#define ITEM_TEXTSTYLE_SHADOWED 3 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINED 4 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_OUTLINESHADOWED 5 // drop shadow ( need a color for this ) +#define ITEM_TEXTSTYLE_SHADOWEDMORE 6 // drop shadow ( need a color for this ) + +#define WINDOW_BORDER_NONE 0 // no border +#define WINDOW_BORDER_FULL 1 // full border based on border color ( single pixel ) +#define WINDOW_BORDER_HORZ 2 // horizontal borders only +#define WINDOW_BORDER_VERT 3 // vertical borders only +#define WINDOW_BORDER_KCGRADIENT 4 // horizontal border using the gradient bars + +#define WINDOW_STYLE_EMPTY 0 // no background +#define WINDOW_STYLE_FILLED 1 // filled with background color +#define WINDOW_STYLE_GRADIENT 2 // gradient bar based on background color +#define WINDOW_STYLE_SHADER 3 // gradient bar based on background color +#define WINDOW_STYLE_TEAMCOLOR 4 // team color +#define WINDOW_STYLE_CINEMATIC 5 // cinematic + +#define MENU_TRUE 1 // uh.. true +#define MENU_FALSE 0 // and false + +#define HUD_VERTICAL 0x00 +#define HUD_HORIZONTAL 0x01 + +// list box element types +#define LISTBOX_TEXT 0x00 +#define LISTBOX_IMAGE 0x01 + +// list feeders +#define FEEDER_HEADS 0x00 // model heads +#define FEEDER_MAPS 0x01 // text maps based on game type +#define FEEDER_SERVERS 0x02 // servers +#define FEEDER_CLANS 0x03 // clan names +#define FEEDER_ALLMAPS 0x04 // all maps available, in graphic format +#define FEEDER_REDTEAM_LIST 0x05 // red team members +#define FEEDER_BLUETEAM_LIST 0x06 // blue team members +#define FEEDER_PLAYER_LIST 0x07 // players +#define FEEDER_TEAM_LIST 0x08 // team members for team voting +#define FEEDER_MODS 0x09 // team members for team voting +#define FEEDER_DEMOS 0x0a // team members for team voting +#define FEEDER_SCOREBOARD 0x0b // team members for team voting +#define FEEDER_Q3HEADS 0x0c // model heads +#define FEEDER_SERVERSTATUS 0x0d // server status +#define FEEDER_FINDPLAYER 0x0e // find player +#define FEEDER_CINEMATICS 0x0f // cinematics + +// display flags +#define CG_SHOW_BLUE_TEAM_HAS_REDFLAG 0x00000001 +#define CG_SHOW_RED_TEAM_HAS_BLUEFLAG 0x00000002 +#define CG_SHOW_ANYTEAMGAME 0x00000004 +#define CG_SHOW_HARVESTER 0x00000008 +#define CG_SHOW_ONEFLAG 0x00000010 +#define CG_SHOW_CTF 0x00000020 +#define CG_SHOW_OBELISK 0x00000040 +#define CG_SHOW_HEALTHCRITICAL 0x00000080 +#define CG_SHOW_SINGLEPLAYER 0x00000100 +#define CG_SHOW_TOURNAMENT 0x00000200 +#define CG_SHOW_DURINGINCOMINGVOICE 0x00000400 +#define CG_SHOW_IF_PLAYER_HAS_FLAG 0x00000800 +#define CG_SHOW_LANPLAYONLY 0x00001000 +#define CG_SHOW_MINED 0x00002000 +#define CG_SHOW_HEALTHOK 0x00004000 +#define CG_SHOW_TEAMINFO 0x00008000 +#define CG_SHOW_NOTEAMINFO 0x00010000 +#define CG_SHOW_OTHERTEAMHASFLAG 0x00020000 +#define CG_SHOW_YOURTEAMHASENEMYFLAG 0x00040000 +#define CG_SHOW_ANYNONTEAMGAME 0x00080000 +#define CG_SHOW_2DONLY 0x10000000 + + +#define UI_SHOW_LEADER 0x00000001 +#define UI_SHOW_NOTLEADER 0x00000002 +#define UI_SHOW_FAVORITESERVERS 0x00000004 +#define UI_SHOW_ANYNONTEAMGAME 0x00000008 +#define UI_SHOW_ANYTEAMGAME 0x00000010 +#define UI_SHOW_NEWHIGHSCORE 0x00000020 +#define UI_SHOW_DEMOAVAILABLE 0x00000040 +#define UI_SHOW_NEWBESTTIME 0x00000080 +#define UI_SHOW_FFA 0x00000100 +#define UI_SHOW_NOTFFA 0x00000200 +#define UI_SHOW_NETANYNONTEAMGAME 0x00000400 +#define UI_SHOW_NETANYTEAMGAME 0x00000800 +#define UI_SHOW_NOTFAVORITESERVERS 0x00001000 + + + + +// owner draw types +// ideally these should be done outside of this file but +// this makes it much easier for the macro expansion to +// convert them for the designers ( from the .menu files ) +#define CG_OWNERDRAW_BASE 1 +#define CG_PLAYER_ARMOR_ICON 1 +#define CG_PLAYER_ARMOR_VALUE 2 +#define CG_PLAYER_HEAD 3 +#define CG_PLAYER_HEALTH 4 +#define CG_PLAYER_AMMO_ICON 5 +#define CG_PLAYER_AMMO_VALUE 6 +#define CG_SELECTEDPLAYER_HEAD 7 +#define CG_SELECTEDPLAYER_NAME 8 +#define CG_SELECTEDPLAYER_LOCATION 9 +#define CG_SELECTEDPLAYER_STATUS 10 +#define CG_SELECTEDPLAYER_WEAPON 11 +#define CG_SELECTEDPLAYER_POWERUP 12 + +#define CG_FLAGCARRIER_HEAD 13 +#define CG_FLAGCARRIER_NAME 14 +#define CG_FLAGCARRIER_LOCATION 15 +#define CG_FLAGCARRIER_STATUS 16 +#define CG_FLAGCARRIER_WEAPON 17 +#define CG_FLAGCARRIER_POWERUP 18 + +#define CG_PLAYER_ITEM 19 +#define CG_PLAYER_SCORE 20 + +#define CG_BLUE_FLAGHEAD 21 +#define CG_BLUE_FLAGSTATUS 22 +#define CG_BLUE_FLAGNAME 23 +#define CG_RED_FLAGHEAD 24 +#define CG_RED_FLAGSTATUS 25 +#define CG_RED_FLAGNAME 26 + +#define CG_BLUE_SCORE 27 +#define CG_RED_SCORE 28 +#define CG_RED_NAME 29 +#define CG_BLUE_NAME 30 +#define CG_HARVESTER_SKULLS 31 // only shows in harvester +#define CG_ONEFLAG_STATUS 32 // only shows in one flag +#define CG_PLAYER_LOCATION 33 +#define CG_TEAM_COLOR 34 +#define CG_CTF_POWERUP 35 + +#define CG_AREA_POWERUP 36 +#define CG_AREA_LAGOMETER 37 // painted with old system +#define CG_PLAYER_HASFLAG 38 +#define CG_GAME_TYPE 39 // not done + +#define CG_SELECTEDPLAYER_ARMOR 40 +#define CG_SELECTEDPLAYER_HEALTH 41 +#define CG_PLAYER_STATUS 42 +#define CG_FRAGGED_MSG 43 // painted with old system +#define CG_PROXMINED_MSG 44 // painted with old system +#define CG_AREA_FPSINFO 45 // painted with old system +#define CG_AREA_SYSTEMCHAT 46 // painted with old system +#define CG_AREA_TEAMCHAT 47 // painted with old system +#define CG_AREA_CHAT 48 // painted with old system +#define CG_GAME_STATUS 49 +#define CG_KILLER 50 +#define CG_PLAYER_ARMOR_ICON2D 51 +#define CG_PLAYER_AMMO_ICON2D 52 +#define CG_ACCURACY 53 +#define CG_ASSISTS 54 +#define CG_DEFEND 55 +#define CG_EXCELLENT 56 +#define CG_IMPRESSIVE 57 +#define CG_PERFECT 58 +#define CG_GAUNTLET 59 +#define CG_SPECTATORS 60 +#define CG_TEAMINFO 61 +#define CG_VOICE_HEAD 62 +#define CG_VOICE_NAME 63 +#define CG_PLAYER_HASFLAG2D 64 +#define CG_HARVESTER_SKULLS2D 65 // only shows in harvester +#define CG_CAPFRAGLIMIT 66 +#define CG_1STPLACE 67 +#define CG_2NDPLACE 68 +#define CG_CAPTURES 69 + + + + +#define UI_OWNERDRAW_BASE 200 +#define UI_HANDICAP 200 +#define UI_EFFECTS 201 +#define UI_PLAYERMODEL 202 +#define UI_CLANNAME 203 +#define UI_CLANLOGO 204 +#define UI_GAMETYPE 205 +#define UI_MAPPREVIEW 206 +#define UI_SKILL 207 +#define UI_BLUETEAMNAME 208 +#define UI_REDTEAMNAME 209 +#define UI_BLUETEAM1 210 +#define UI_BLUETEAM2 211 +#define UI_BLUETEAM3 212 +#define UI_BLUETEAM4 213 +#define UI_BLUETEAM5 214 +#define UI_REDTEAM1 215 +#define UI_REDTEAM2 216 +#define UI_REDTEAM3 217 +#define UI_REDTEAM4 218 +#define UI_REDTEAM5 219 +#define UI_NETSOURCE 220 +#define UI_NETMAPPREVIEW 221 +#define UI_NETFILTER 222 +#define UI_TIER 223 +#define UI_OPPONENTMODEL 224 +#define UI_TIERMAP1 225 +#define UI_TIERMAP2 226 +#define UI_TIERMAP3 227 +#define UI_PLAYERLOGO 228 +#define UI_OPPONENTLOGO 229 +#define UI_PLAYERLOGO_METAL 230 +#define UI_OPPONENTLOGO_METAL 231 +#define UI_PLAYERLOGO_NAME 232 +#define UI_OPPONENTLOGO_NAME 233 +#define UI_TIER_MAPNAME 234 +#define UI_TIER_GAMETYPE 235 +#define UI_ALLMAPS_SELECTION 236 +#define UI_OPPONENT_NAME 237 +#define UI_VOTE_KICK 238 +#define UI_BOTNAME 239 +#define UI_BOTSKILL 240 +#define UI_REDBLUE 241 +#define UI_CROSSHAIR 242 +#define UI_SELECTEDPLAYER 243 +#define UI_MAPCINEMATIC 244 +#define UI_NETGAMETYPE 245 +#define UI_NETMAPCINEMATIC 246 +#define UI_SERVERREFRESHDATE 247 +#define UI_SERVERMOTD 248 +#define UI_GLINFO 249 +#define UI_KEYBINDSTATUS 250 +#define UI_CLANCINEMATIC 251 +#define UI_MAP_TIMETOBEAT 252 +#define UI_JOINGAMETYPE 253 +#define UI_PREVIEWCINEMATIC 254 +#define UI_STARTMAPCINEMATIC 255 +#define UI_MAPS_SELECTION 256 + +#define VOICECHAT_GETFLAG "getflag" // command someone to get the flag +#define VOICECHAT_OFFENSE "offense" // command someone to go on offense +#define VOICECHAT_DEFEND "defend" // command someone to go on defense +#define VOICECHAT_DEFENDFLAG "defendflag" // command someone to defend the flag +#define VOICECHAT_PATROL "patrol" // command someone to go on patrol (roam) +#define VOICECHAT_CAMP "camp" // command someone to camp (we don't have sounds for this one) +#define VOICECHAT_FOLLOWME "followme" // command someone to follow you +#define VOICECHAT_RETURNFLAG "returnflag" // command someone to return our flag +#define VOICECHAT_FOLLOWFLAGCARRIER "followflagcarrier" // command someone to follow the flag carrier +#define VOICECHAT_YES "yes" // yes, affirmative, etc. +#define VOICECHAT_NO "no" // no, negative, etc. +#define VOICECHAT_ONGETFLAG "ongetflag" // I'm getting the flag +#define VOICECHAT_ONOFFENSE "onoffense" // I'm on offense +#define VOICECHAT_ONDEFENSE "ondefense" // I'm on defense +#define VOICECHAT_ONPATROL "onpatrol" // I'm on patrol (roaming) +#define VOICECHAT_ONCAMPING "oncamp" // I'm camping somewhere +#define VOICECHAT_ONFOLLOW "onfollow" // I'm following +#define VOICECHAT_ONFOLLOWCARRIER "onfollowcarrier" // I'm following the flag carrier +#define VOICECHAT_ONRETURNFLAG "onreturnflag" // I'm returning our flag +#define VOICECHAT_INPOSITION "inposition" // I'm in position +#define VOICECHAT_IHAVEFLAG "ihaveflag" // I have the flag +#define VOICECHAT_BASEATTACK "baseattack" // the base is under attack +#define VOICECHAT_ENEMYHASFLAG "enemyhasflag" // the enemy has our flag (CTF) +#define VOICECHAT_STARTLEADER "startleader" // I'm the leader +#define VOICECHAT_STOPLEADER "stopleader" // I resign leadership +#define VOICECHAT_TRASH "trash" // lots of trash talk +#define VOICECHAT_WHOISLEADER "whoisleader" // who is the team leader +#define VOICECHAT_WANTONDEFENSE "wantondefense" // I want to be on defense +#define VOICECHAT_WANTONOFFENSE "wantonoffense" // I want to be on offense +#define VOICECHAT_KILLINSULT "kill_insult" // I just killed you +#define VOICECHAT_TAUNT "taunt" // I want to taunt you +#define VOICECHAT_DEATHINSULT "death_insult" // you just killed me +#define VOICECHAT_KILLGAUNTLET "kill_gauntlet" // I just killed you with the gauntlet +#define VOICECHAT_PRAISE "praise" // you did something good diff --git a/oachanges.diff b/oachanges.diff new file mode 100644 index 0000000..42b8539 --- /dev/null +++ b/oachanges.diff @@ -0,0 +1,196 @@ +Index: q3_ui/ui_mods.c +=================================================================== +--- q3_ui/ui_mods.c (revision 1107) ++++ q3_ui/ui_mods.c (working copy) +@@ -161,7 +161,7 @@ + + // always start off with baseq3 + s_mods.list.numitems = 1; +- s_mods.list.itemnames[0] = s_mods.descriptionList[0] = "Quake III Arena"; ++ s_mods.list.itemnames[0] = s_mods.descriptionList[0] = "OpenArena"; + s_mods.fs_gameList[0] = ""; + + numdirs = trap_FS_GetFileList( "$modlist", "", dirlist, sizeof(dirlist) ); +Index: server/sv_ccmds.c +=================================================================== +--- server/sv_ccmds.c (revision 1107) ++++ server/sv_ccmds.c (working copy) +@@ -430,6 +430,12 @@ + return; + } + ++ if(strlen(AUTHORIZE_SERVER_NAME) < 1) ++ { ++ Com_Printf("Ban function disabled due to lack of authorizing server.\n"); ++ return; ++ } ++ + // look up the authorize server's IP + if ( !svs.authorizeAddress.ip[0] && svs.authorizeAddress.type != NA_BAD ) { + Com_Printf( "Resolving %s\n", AUTHORIZE_SERVER_NAME ); +@@ -484,6 +490,12 @@ + return; + } + ++ if(strlen(AUTHORIZE_SERVER_NAME) < 1) ++ { ++ Com_Printf("Ban function disabled due to lack of authorizing server.\n"); ++ return; ++ } ++ + // look up the authorize server's IP + if ( !svs.authorizeAddress.ip[0] && svs.authorizeAddress.type != NA_BAD ) { + Com_Printf( "Resolving %s\n", AUTHORIZE_SERVER_NAME ); +Index: server/sv_client.c +=================================================================== +--- server/sv_client.c (revision 1107) ++++ server/sv_client.c (working copy) +@@ -88,6 +88,15 @@ + return; + } + ++ // if there's no authorize server defined, just let them in ++ if(strlen(AUTHORIZE_SERVER_NAME) < 1) ++ { ++ Com_Printf("Not authorizing client due to lack of auth server\n"); ++ challenge->pingTime = svs.time; ++ NET_OutOfBandPrint( NS_SERVER, from, "challengeResponse %i", challenge->challenge ); ++ return; ++ } ++ + // look up the authorize server's IP + if ( !svs.authorizeAddress.ip[0] && svs.authorizeAddress.type != NA_BAD ) { + Com_Printf( "Resolving %s\n", AUTHORIZE_SERVER_NAME ); +Index: qcommon/q_shared.h +=================================================================== +--- qcommon/q_shared.h (revision 1107) ++++ qcommon/q_shared.h (working copy) +@@ -26,17 +26,17 @@ + // q_shared.h -- included first by ALL program modules. + // A user mod should never modify this file + +-#define Q3_VERSION "ioQ3 1.33" ++#define Q3_VERSION "ioQ3 1.33+oa" + #ifndef SVN_VERSION + #define SVN_VERSION Q3_VERSION + #endif +-#define CLIENT_WINDOW_TITLE "ioquake3" +-#define CLIENT_WINDOW_ICON "ioq3" +-#define CONSOLE_WINDOW_TITLE "ioquake3 console" +-#define CONSOLE_WINDOW_ICON "ioq3 console" ++#define CLIENT_WINDOW_TITLE "OpenArena" ++#define CLIENT_WINDOW_ICON "OpenArena" ++#define CONSOLE_WINDOW_TITLE "OpenArena console" ++#define CONSOLE_WINDOW_ICON "OpenArena console" + // 1.32 released 7-10-2002 + +-#define BASEGAME "baseq3" ++#define BASEGAME "baseoa" + + #define MAX_TEAMNAME 32 +Index: client/cl_main.c +=================================================================== +--- client/cl_main.c (revision 1107) ++++ client/cl_main.c (working copy) +@@ -3582,7 +3582,7 @@ + */ + qboolean CL_CDKeyValidate( const char *key, const char *checksum ) { +- char ch; ++/* char ch; + byte sum; + char chs[3]; + int i, len; +@@ -3636,8 +3636,8 @@ + if (!checksum) { + return qtrue; + } +- +- return qfalse; ++*/ ++ return qtrue; + } +Index: qcommon/files.c +=================================================================== +--- qcommon/files.c (revision 1107) ++++ qcommon/files.c (working copy) +@@ -2900,6 +2900,7 @@ + */ + static void FS_CheckPak0( void ) + { ++/* + searchpath_t *path; + qboolean founddemo = qfalse; + unsigned foundPak = 0; +@@ -2972,6 +2973,7 @@ + || !Q_stricmp( fs_gamedirvar->string, "missionpack" )) + Com_Error(ERR_FATAL, "\n*** you need to install Quake III Arena in order to play ***"); + } ++*/ + } + + /* +@@ -3383,7 +3385,7 @@ + // try to start up normally + FS_Startup( BASEGAME ); + +- FS_CheckPak0( ); ++ // FS_CheckPak0( ); + + // if we can't find default.cfg, assume that the paths are + // busted and error out now, rather than getting an unreadable +Index: qcommon/qcommon.h +=================================================================== +--- qcommon/qcommon.h (revision 1107) ++++ qcommon/qcommon.h (working copy) +@@ -236,10 +236,10 @@ + #define UPDATE_SERVER_NAME "update.quake3arena.com" + // override on command line, config files etc. + #ifndef MASTER_SERVER_NAME +-#define MASTER_SERVER_NAME "master.quake3arena.com" ++#define MASTER_SERVER_NAME "dpmaster.deathmask.net" + #endif + #ifndef AUTHORIZE_SERVER_NAME +-#define AUTHORIZE_SERVER_NAME "authorize.quake3arena.com" ++#define AUTHORIZE_SERVER_NAME "" + #endif + + #define PORT_MASTER 27950 +Index: ui/ui_main.c +=================================================================== +--- ui/ui_main.c (revision 1107) ++++ ui/ui_main.c (working copy) +@@ -64,7 +64,7 @@ + + static const serverFilter_t serverFilters[] = { + {"All", "" }, +- {"Quake 3 Arena", "" }, ++ {"OpenArena", "" }, + {"Team Arena", "missionpack" }, + {"Rocket Arena", "arena" }, + {"Alliance", "alliance20" }, +Index: client/snd_dma.c +=================================================================== +--- client/snd_dma.c (revision 1107) ++++ client/snd_dma.c (working copy) +@@ -364,7 +364,7 @@ + Com_Memset( s_knownSfx, 0, sizeof( s_knownSfx ) ); + Com_Memset(sfxHash, 0, sizeof(sfx_t *)*LOOP_HASH); + +- S_Base_RegisterSound("sound/feedback/hit.wav", qfalse); // changed to a sound in baseq3 ++ S_Base_RegisterSound("sound/misc/silence.wav", qfalse); // changed to a sound in baseq3 + } + } + +Index: client/snd_openal.c +=================================================================== +--- client/snd_openal.c (revision 1107) ++++ client/snd_openal.c (working copy) +@@ -384,7 +384,7 @@ + numSfx = 0; + + // Load the default sound, and lock it +- default_sfx = S_AL_BufferFind("sound/feedback/hit.wav"); ++ default_sfx = S_AL_BufferFind("sound/misc/silence.wav"); + S_AL_BufferUse(default_sfx); + knownSfx[default_sfx].isLocked = qtrue; + diff --git a/openarena-runner.sh b/openarena-runner.sh new file mode 100644 index 0000000..4ceacb0 --- /dev/null +++ b/openarena-runner.sh @@ -0,0 +1,23 @@ +#!/usr/bin/env bash + +arch=$(uname -m) +if [ "$arch" == 'x86_64' ]; then + arch="x86_64" +else + arch="i386" +fi + +file=`basename "$0"` +if [ "$file" == 'openarena' ]; then + file='openarena' +else + file='oa_ded' +fi +cd '/usr/share/openarena' + +# Comment by syrjala +# openarena-runner.sh should pass on the command line options. I just banged my +# head against the wall for a while trying to figure out why my command line +# options didn't do anything. +# So, here it is +"./${file}.${arch}" $@ diff --git a/openarena.desktop b/openarena.desktop new file mode 100644 index 0000000..cb6ff15 --- /dev/null +++ b/openarena.desktop @@ -0,0 +1,10 @@ +[Desktop Entry] +Encoding=UTF-8 +Categories=Application;Game;ArcadeGame +Name=openarena +GenericName=First-person shooter game +GenericName[it]=Gioco sparatutto in prima persona +Exec=openarena +Terminal=0 +Type=Application +Icon=/usr/share/pixmaps/openarena.ico diff --git a/openarena.ico b/openarena.ico new file mode 100644 index 0000000..ad4d2f1 Binary files /dev/null and b/openarena.ico differ diff --git a/openarena.spec b/openarena.spec new file mode 100644 index 0000000..cb0d2f9 --- /dev/null +++ b/openarena.spec @@ -0,0 +1,127 @@ +%define pkgver %(echo %version | tr -d . ) +Name: openarena +Version: 0.8.8 +Release: 2mamba +Summary: An open-source content package for Quake III Arena licensed under the GPL +Group: Graphical Desktop/Applications/Games +Vendor: openmamba +Distribution: openmamba +Packager: Silvan Calarco +URL: http://openarena.ws +Source: http://download.tuxfamily.net/openarena/rel/%{pkgver}/openarena-%{version}.zip +Source1: http://openarena.ws/svn/source/ioq3-src-oa.tar.bz2 +Source2: http://download.tuxfamily.org/openarena/rel/077/oa077-patch.zip +Source3: http://www.openarena.ws/svn/source/ui/menudef.h +Source4: openarena.ico +Source5: openarena.desktop +Source6: openarena-runner.sh +Patch0: oachanges.diff +License: GPL +## AUTOBUILDREQ-BEGIN +BuildRequires: glibc-devel +BuildRequires: libSDL-devel +BuildRequires: libglvnd-devel +BuildRequires: libogg-devel +BuildRequires: libvorbis-devel +## AUTOBUILDREQ-END +ExclusiveArch: x86_64 %{ix86} + +%description +An open-source content package for Quake III Arena licensed under the GPL, effectively creating a free stand-alone game. +Warning: this game was rated appropriate for an adult audience. + +%debug_package + +%prep +%setup -q +#-a1 +rm *.dll *.exe +rm -rf __MACOSX *.app + +:<< _OLD +#rm ioq* -f +rm *.dll -f +rm openarena.exe +cp %{SOURCE3} code/ui/menudef.h +mkdir ui +cp %{SOURCE3} ui/menudef.h +cd .. +#unzip -qqo %{SOURCE2} + +%build +#% make USE_CURL_DLOPEN=0 + +%install +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" +install -d \ + %{buildroot}%{_bindir} \ + %{buildroot}%{_datadir}/openarena \ + %{buildroot}%{_datadir}/pixmaps \ + %{buildroot}%{_datadir}/applications + +cp -a * %{buildroot}%{_datadir}/openarena/ +#make copyfiles COPYDIR=%{buildroot}/opt/ioquake3 +#cp -a baseoa %{buildroot}/opt/ioquake3 +cp %{SOURCE4} %{buildroot}%{_datadir}/pixmaps/openarena.ico +cp %{SOURCE5} %{buildroot}%{_datadir}/applications/openarena.desktop +install -D -m0755 %{SOURCE6} %{buildroot}%{_datadir}/openarena/openarena-runner.sh +ln -s %{_datadir}/openarena/openarena-runner.sh %{buildroot}%{_bindir}/openarena +ln -s %{_datadir}/openarena/openarena-runner.sh %{buildroot}%{_bindir}/openarena-server + +%ifarch x86_64 +rm -f %{buildroot}%{_datadir}/openarena/*.i386 +%endif +%ifarch %{ix86} +rm -f %{buildroot}%{_datadir}/openarena/*.x86_64 +%endif + +%clean +[ "%{buildroot}" != / ] && rm -rf "%{buildroot}" + +%files +%defattr(0755,root,root) +%{_bindir}/openarena +%{_bindir}/openarena-server +%dir %{_datadir}/openarena +%{_datadir}/openarena/CHANGES +%{_datadir}/openarena/COPYING +%{_datadir}/openarena/CREDITS +%{_datadir}/openarena/LINUXNOTES +%{_datadir}/openarena/README +%{_datadir}/openarena/WENEED +%dir %{_datadir}/openarena/baseoa +%{_datadir}/openarena/baseoa/*.pk3 +%dir %{_datadir}/openarena/missionpack +%{_datadir}/openarena/missionpack/*.pk3 +%{_datadir}/openarena/oa_ded.* +%{_datadir}/openarena/openarena-runner.sh +%{_datadir}/openarena/openarena.* +%{_datadir}/openarena/readme_*.txt +%{_datadir}/applications/openarena.desktop +%{_datadir}/pixmaps/openarena.ico +%doc COPYING + +%changelog +* Mon May 10 2021 Silvan Calarco 0.8.8-2mamba +- rebuilt with debug package and x86_64 target + +* Fri Apr 06 2012 Ercole 'ercolinux' Carpanetto 0.8.8-1mamba +- update to 0.8.8 + +* Thu Apr 16 2009 Silvan Calarco 0.8.1-3mamba +- automatic rebuild by autodist + +* Fri Dec 12 2008 Silvan Calarco 0.8.1-2mamba +- ... add a changelog entry + +* Thu Dec 11 2008 Silvan Calarco 0.8.1-1mamba +- automatic update by autodist + +* Sat Jul 05 2008 Silvan Calarco 0.7.7-2mamba +- fix files permission: don't set all to 775 + +* Thu Jul 03 2008 Ercole 'ercolinux' Carpanetto 0.7.7-1mamba +- update to 0.7.7 + +* Fri Nov 16 2007 Silvan Calarco 0.7.0-1mamba +- package created by autospec