diff -Nru alien-arena-7.53+dfsg/aclocal.m4 alien-arena-7.66+dfsg/aclocal.m4 --- alien-arena-7.53+dfsg/aclocal.m4 2011-12-27 05:05:14.000000000 +0000 +++ alien-arena-7.66+dfsg/aclocal.m4 2013-08-27 20:18:18.000000000 +0000 @@ -1,7 +1,7 @@ -# generated automatically by aclocal 1.11.1 -*- Autoconf -*- +# generated automatically by aclocal 1.14 -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -11,15 +11,16 @@ # even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl -m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.68],, -[m4_warning([this file was generated for autoconf 2.68. +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. You have another version of autoconf. It may work, but is not guaranteed to. If you have problems, you may need to regenerate the build system entirely. -To do so, use the procedure documented by the package, typically `autoreconf'.])]) +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) -# Copyright (C) 2002, 2003, 2005, 2006, 2007, 2008 Free Software Foundation, Inc. +# Copyright (C) 2002-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -31,10 +32,10 @@ # generated from the m4 files accompanying Automake X.Y. # (This private macro should not be called outside this file.) AC_DEFUN([AM_AUTOMAKE_VERSION], -[am__api_version='1.11' +[am__api_version='1.14' dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to dnl require some minimum version. Point them to the right macro. -m4_if([$1], [1.11.1], [], +m4_if([$1], [1.14], [], [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl ]) @@ -50,22 +51,22 @@ # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. # This function is AC_REQUIREd by AM_INIT_AUTOMAKE. AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], -[AM_AUTOMAKE_VERSION([1.11.1])dnl +[AM_AUTOMAKE_VERSION([1.14])dnl m4_ifndef([AC_AUTOCONF_VERSION], [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) # AM_AUX_DIR_EXPAND -*- Autoconf -*- -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets -# $ac_aux_dir to `$srcdir/foo'. In other projects, it is set to -# `$srcdir', `$srcdir/..', or `$srcdir/../..'. +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. # # Of course, Automake must honor this variable whenever it calls a # tool from the auxiliary directory. The problem is that $srcdir (and @@ -84,7 +85,7 @@ # # The reason of the latter failure is that $top_srcdir and $ac_aux_dir # are both prefixed by $srcdir. In an in-source build this is usually -# harmless because $srcdir is `.', but things will broke when you +# harmless because $srcdir is '.', but things will broke when you # start a VPATH build or use an absolute $srcdir. # # So we could use something similar to $top_srcdir/$ac_aux_dir/missing, @@ -110,14 +111,12 @@ # AM_COND_IF -*- Autoconf -*- -# Copyright (C) 2008 Free Software Foundation, Inc. +# Copyright (C) 2008-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # _AM_COND_IF # _AM_COND_ELSE # _AM_COND_ENDIF @@ -127,18 +126,17 @@ m4_define([_AM_COND_ELSE]) m4_define([_AM_COND_ENDIF]) - # AM_COND_IF(COND, [IF-TRUE], [IF-FALSE]) # --------------------------------------- -# If the shell condition matching COND is true, execute IF-TRUE, -# otherwise execute IF-FALSE. Allow automake to learn about conditional -# instantiating macros (the AC_CONFIG_FOOS). +# If the shell condition COND is true, execute IF-TRUE, otherwise execute +# IF-FALSE. Allow automake to learn about conditional instantiating macros +# (the AC_CONFIG_FOOS). AC_DEFUN([AM_COND_IF], [m4_ifndef([_AM_COND_VALUE_$1], [m4_fatal([$0: no such condition "$1"])])dnl _AM_COND_IF([$1])dnl -if _AM_COND_VALUE_$1; then - m4_default([$2], [:]) +if test -z "$$1_TRUE"; then : + m4_n([$2])[]dnl m4_ifval([$3], [_AM_COND_ELSE([$1])dnl else @@ -150,22 +148,19 @@ # AM_CONDITIONAL -*- Autoconf -*- -# Copyright (C) 1997, 2000, 2001, 2003, 2004, 2005, 2006, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 9 - # AM_CONDITIONAL(NAME, SHELL-CONDITION) # ------------------------------------- # Define a conditional. AC_DEFUN([AM_CONDITIONAL], -[AC_PREREQ(2.52)dnl - ifelse([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], - [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl AC_SUBST([$1_TRUE])dnl AC_SUBST([$1_FALSE])dnl _AM_SUBST_NOTMAKE([$1_TRUE])dnl @@ -184,16 +179,14 @@ Usually this means the macro was only invoked conditionally.]]) fi])]) -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2009 -# Free Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 10 -# There are a few dirty hacks below to avoid letting `AC_PROG_CC' be +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be # written in clear, in which case automake, when reading aclocal.m4, # will think it sees a *use*, and therefore will trigger all it's # C support machinery. Also note that it means that autoscan, seeing @@ -203,7 +196,7 @@ # _AM_DEPENDENCIES(NAME) # ---------------------- # See how the compiler implements dependency checking. -# NAME is "CC", "CXX", "GCJ", or "OBJC". +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". # We try a few techniques and use that to set a single cache variable. # # We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was @@ -216,12 +209,13 @@ AC_REQUIRE([AM_MAKE_INCLUDE])dnl AC_REQUIRE([AM_DEP_TRACK])dnl -ifelse([$1], CC, [depcc="$CC" am_compiler_list=], - [$1], CXX, [depcc="$CXX" am_compiler_list=], - [$1], OBJC, [depcc="$OBJC" am_compiler_list='gcc3 gcc'], - [$1], UPC, [depcc="$UPC" am_compiler_list=], - [$1], GCJ, [depcc="$GCJ" am_compiler_list='gcc3 gcc'], - [depcc="$$1" am_compiler_list=]) +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) AC_CACHE_CHECK([dependency style of $depcc], [am_cv_$1_dependencies_compiler_type], @@ -229,8 +223,9 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -269,16 +264,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -287,16 +282,16 @@ test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -344,7 +339,7 @@ # AM_SET_DEPDIR # ------------- # Choose a directory name for dependency files. -# This macro is AC_REQUIREd in _AM_DEPENDENCIES +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. AC_DEFUN([AM_SET_DEPDIR], [AC_REQUIRE([AM_SET_LEADING_DOT])dnl AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl @@ -354,34 +349,39 @@ # AM_DEP_TRACK # ------------ AC_DEFUN([AM_DEP_TRACK], -[AC_ARG_ENABLE(dependency-tracking, -[ --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors]) +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' + am__nodep='_no' fi AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) AC_SUBST([AMDEPBACKSLASH])dnl _AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl ]) # Generate code to set up dependency tracking. -*- Autoconf -*- -# Copyright (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -#serial 5 # _AM_OUTPUT_DEPENDENCY_COMMANDS # ------------------------------ AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], [{ - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -394,7 +394,7 @@ # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but + # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -406,21 +406,19 @@ continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. + # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`AS_DIRNAME(["$file"])` @@ -438,7 +436,7 @@ # This macro should only be invoked once -- use via AC_REQUIRE. # # This code is only required when automatic dependency tracking -# is enabled. FIXME. This creates each `.P' file that we will +# is enabled. FIXME. This creates each '.P' file that we will # need in order to bootstrap the dependency handling code. AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], [AC_CONFIG_COMMANDS([depfiles], @@ -448,18 +446,21 @@ # Do all the work for Automake. -*- Autoconf -*- -# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, -# 2005, 2006, 2008, 2009 Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 16 - # This macro actually does too much. Some checks are only needed if # your package does certain things. But this isn't really a big deal. +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) # AM_INIT_AUTOMAKE([OPTIONS]) # ----------------------------------------------- @@ -472,7 +473,7 @@ # arguments mandatory, and then we can depend on a new Autoconf # release and drop the old call support. AC_DEFUN([AM_INIT_AUTOMAKE], -[AC_PREREQ([2.62])dnl +[AC_PREREQ([2.65])dnl dnl Autoconf wants to disallow AM_ names. We explicitly allow dnl the ones we care about. m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl @@ -501,31 +502,40 @@ # Define the identity of the package. dnl Distinguish between old-style and new-style calls. m4_ifval([$2], -[m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl AC_SUBST([PACKAGE], [$1])dnl AC_SUBST([VERSION], [$2])], [_AM_SET_OPTIONS([$1])dnl dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. -m4_if(m4_ifdef([AC_PACKAGE_NAME], 1)m4_ifdef([AC_PACKAGE_VERSION], 1), 11,, +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, [m4_fatal([AC_INIT should be called with package and version arguments])])dnl AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl _AM_IF_OPTION([no-define],, -[AC_DEFINE_UNQUOTED(PACKAGE, "$PACKAGE", [Name of package]) - AC_DEFINE_UNQUOTED(VERSION, "$VERSION", [Version number of package])])dnl +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl # Some tools Automake needs. AC_REQUIRE([AM_SANITY_CHECK])dnl AC_REQUIRE([AC_ARG_PROGRAM])dnl -AM_MISSING_PROG(ACLOCAL, aclocal-${am__api_version}) -AM_MISSING_PROG(AUTOCONF, autoconf) -AM_MISSING_PROG(AUTOMAKE, automake-${am__api_version}) -AM_MISSING_PROG(AUTOHEADER, autoheader) -AM_MISSING_PROG(MAKEINFO, makeinfo) +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) AC_REQUIRE([AM_PROG_INSTALL_SH])dnl AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl -AC_REQUIRE([AM_PROG_MKDIR_P])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) # We need awk for the "check" target. The system "awk" is bad on # some platforms. AC_REQUIRE([AC_PROG_AWK])dnl @@ -536,34 +546,78 @@ [_AM_PROG_TAR([v7])])]) _AM_IF_OPTION([no-dependencies],, [AC_PROVIDE_IFELSE([AC_PROG_CC], - [_AM_DEPENDENCIES(CC)], - [define([AC_PROG_CC], - defn([AC_PROG_CC])[_AM_DEPENDENCIES(CC)])])dnl + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl AC_PROVIDE_IFELSE([AC_PROG_CXX], - [_AM_DEPENDENCIES(CXX)], - [define([AC_PROG_CXX], - defn([AC_PROG_CXX])[_AM_DEPENDENCIES(CXX)])])dnl + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl AC_PROVIDE_IFELSE([AC_PROG_OBJC], - [_AM_DEPENDENCIES(OBJC)], - [define([AC_PROG_OBJC], - defn([AC_PROG_OBJC])[_AM_DEPENDENCIES(OBJC)])])dnl + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl ]) -_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl -dnl The `parallel-tests' driver may need to know about EXEEXT, so add the -dnl `am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This macro -dnl is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. AC_CONFIG_COMMANDS_PRE(dnl [m4_provide_if([_AM_COMPILER_EXEEXT], [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl -]) -dnl Hook into `_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further dnl mangled by Autoconf and run in a shell conditional statement. m4_define([_AC_COMPILER_EXEEXT], m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) - # When config.status generates a header, we must update the stamp-h file. # This file resides in the same directory as the config header # that is generated. The stamp files are numbered to have different names. @@ -585,7 +639,7 @@ done echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) -# Copyright (C) 2001, 2003, 2005, 2008 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -604,16 +658,14 @@ install_sh="\${SHELL} $am_aux_dir/install-sh" esac fi -AC_SUBST(install_sh)]) +AC_SUBST([install_sh])]) -# Copyright (C) 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2003-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # Check whether the underlying file-system supports filenames # with a leading dot. For instance MS-DOS doesn't. AC_DEFUN([AM_SET_LEADING_DOT], @@ -630,20 +682,17 @@ # Add --enable-maintainer-mode option to configure. -*- Autoconf -*- # From Jim Meyering -# Copyright (C) 1996, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 - # AM_MAINTAINER_MODE([DEFAULT-MODE]) # ---------------------------------- # Control maintainer-specific portions of Makefiles. -# Default is to disable them, unless `enable' is passed literally. -# For symmetry, `disable' may be passed as well. Anyway, the user +# Default is to disable them, unless 'enable' is passed literally. +# For symmetry, 'disable' may be passed as well. Anyway, the user # can override the default with the --enable/--disable switch. AC_DEFUN([AM_MAINTAINER_MODE], [m4_case(m4_default([$1], [disable]), @@ -651,13 +700,14 @@ [disable], [m4_define([am_maintainer_other], [enable])], [m4_define([am_maintainer_other], [enable]) m4_warn([syntax], [unexpected argument to AM@&t@_MAINTAINER_MODE: $1])]) -AC_MSG_CHECKING([whether to am_maintainer_other maintainer-specific portions of Makefiles]) +AC_MSG_CHECKING([whether to enable maintainer-specific portions of Makefiles]) dnl maintainer-mode's default is 'disable' unless 'enable' is passed AC_ARG_ENABLE([maintainer-mode], -[ --][am_maintainer_other][-maintainer-mode am_maintainer_other make rules and dependencies not useful - (and sometimes confusing) to the casual installer], - [USE_MAINTAINER_MODE=$enableval], - [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) + [AS_HELP_STRING([--]am_maintainer_other[-maintainer-mode], + am_maintainer_other[ make rules and dependencies not useful + (and sometimes confusing) to the casual installer])], + [USE_MAINTAINER_MODE=$enableval], + [USE_MAINTAINER_MODE=]m4_if(am_maintainer_other, [enable], [no], [yes])) AC_MSG_RESULT([$USE_MAINTAINER_MODE]) AM_CONDITIONAL([MAINTAINER_MODE], [test $USE_MAINTAINER_MODE = yes]) MAINT=$MAINTAINER_MODE_TRUE @@ -665,18 +715,14 @@ ] ) -AU_DEFUN([jm_MAINTAINER_MODE], [AM_MAINTAINER_MODE]) - # Check to see how 'make' treats includes. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2009 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 - # AM_MAKE_INCLUDE() # ----------------- # Check to see how make treats includes. @@ -694,7 +740,7 @@ _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. +# Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -719,52 +765,14 @@ rm -f confinc confmf ]) -# Copyright (C) 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# serial 6 - -# AM_PROG_CC_C_O -# -------------- -# Like AC_PROG_CC_C_O, but changed for automake. -AC_DEFUN([AM_PROG_CC_C_O], -[AC_REQUIRE([AC_PROG_CC_C_O])dnl -AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl -AC_REQUIRE_AUX_FILE([compile])dnl -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $[2] | sed ['s/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/']` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi -dnl Make sure AC_PROG_CC is never called again, or it will override our -dnl setting of CC. -m4_define([AC_PROG_CC], - [m4_fatal([AC_PROG_CC cannot be called after AM_PROG_CC_C_O])]) -]) - # Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- -# Copyright (C) 1997, 1999, 2000, 2001, 2003, 2004, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 1997-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 6 - # AM_MISSING_PROG(NAME, PROGRAM) # ------------------------------ AC_DEFUN([AM_MISSING_PROG], @@ -772,11 +780,10 @@ $1=${$1-"${am_missing_run}$2"} AC_SUBST($1)]) - # AM_MISSING_HAS_RUN # ------------------ -# Define MISSING if not defined so far and test if it supports --run. -# If it does, set am_missing_run to use it, otherwise, to nothing. +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. AC_DEFUN([AM_MISSING_HAS_RUN], [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl AC_REQUIRE_AUX_FILE([missing])dnl @@ -789,63 +796,35 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - AC_MSG_WARN([`missing' script is too old or missing]) + AC_MSG_WARN(['missing' script is too old or missing]) fi ]) -# Copyright (C) 2003, 2004, 2005, 2006 Free Software Foundation, Inc. -# -# This file is free software; the Free Software Foundation -# gives unlimited permission to copy and/or distribute it, -# with or without modifications, as long as this notice is preserved. - -# AM_PROG_MKDIR_P -# --------------- -# Check for `mkdir -p'. -AC_DEFUN([AM_PROG_MKDIR_P], -[AC_PREREQ([2.60])dnl -AC_REQUIRE([AC_PROG_MKDIR_P])dnl -dnl Automake 1.8 to 1.9.6 used to define mkdir_p. We now use MKDIR_P, -dnl while keeping a definition of mkdir_p for backward compatibility. -dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile. -dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of -dnl Makefile.ins that do not define MKDIR_P, so we do our own -dnl adjustment using top_builddir (which is defined more often than -dnl MKDIR_P). -AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl -case $mkdir_p in - [[\\/$]]* | ?:[[\\/]]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac -]) - # Helper functions for option handling. -*- Autoconf -*- -# Copyright (C) 2001, 2002, 2003, 2005, 2008 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 4 - # _AM_MANGLE_OPTION(NAME) # ----------------------- AC_DEFUN([_AM_MANGLE_OPTION], [[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) # _AM_SET_OPTION(NAME) -# ------------------------------ +# -------------------- # Set option NAME. Presently that only means defining a flag for this option. AC_DEFUN([_AM_SET_OPTION], -[m4_define(_AM_MANGLE_OPTION([$1]), 1)]) +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) # _AM_SET_OPTIONS(OPTIONS) -# ---------------------------------- +# ------------------------ # OPTIONS is a space-separated list of Automake options. AC_DEFUN([_AM_SET_OPTIONS], [m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) @@ -856,24 +835,82 @@ AC_DEFUN([_AM_IF_OPTION], [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) -# Check to make sure that the build environment is sane. -*- Autoconf -*- +# Copyright (C) 1999-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) -# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005, 2008 -# Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 5 +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. # AM_SANITY_CHECK # --------------- AC_DEFUN([AM_SANITY_CHECK], [AC_MSG_CHECKING([whether build environment is sane]) -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -884,32 +921,40 @@ esac case $srcdir in *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) - AC_MSG_ERROR([unsafe srcdir value: `$srcdir']);; + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$[*]" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$[*]" != "X $srcdir/configure conftest.file" \ - && test "$[*]" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken -alias in your environment]) - fi - + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$[2]" = conftest.file ) then @@ -919,36 +964,85 @@ AC_MSG_ERROR([newly created file is older than distributed files! Check your system clock]) fi -AC_MSG_RESULT(yes)]) +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) -# Copyright (C) 2009 Free Software Foundation, Inc. +# Copyright (C) 2009-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 1 - # AM_SILENT_RULES([DEFAULT]) # -------------------------- # Enable less verbose build rules; with the default set to DEFAULT -# (`yes' being less verbose, `no' or empty being verbose). +# ("yes" being less verbose, "no" or empty being verbose). AC_DEFUN([AM_SILENT_RULES], -[AC_ARG_ENABLE([silent-rules], -[ --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0')]) -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl AC_SUBST([AM_DEFAULT_VERBOSITY])dnl AM_BACKSLASH='\' AC_SUBST([AM_BACKSLASH])dnl _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl ]) -# Copyright (C) 2001, 2003, 2005 Free Software Foundation, Inc. +# Copyright (C) 2001-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, @@ -956,34 +1050,32 @@ # AM_PROG_INSTALL_STRIP # --------------------- -# One issue with vendor `install' (even GNU) is that you can't +# One issue with vendor 'install' (even GNU) is that you can't # specify the program used to strip binaries. This is especially # annoying in cross-compiling environments, where the build's strip # is unlikely to handle the host's binaries. # Fortunately install-sh will honor a STRIPPROG variable, so we -# always use install-sh in `make install-strip', and initialize +# always use install-sh in "make install-strip", and initialize # STRIPPROG with the value of the STRIP variable (set by the user). AC_DEFUN([AM_PROG_INSTALL_STRIP], [AC_REQUIRE([AM_PROG_INSTALL_SH])dnl -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. -dnl Don't test for $cross_compiling = yes, because it might be `maybe'. +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. if test "$cross_compiling" != no; then AC_CHECK_TOOL([STRIP], [strip], :) fi INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" AC_SUBST([INSTALL_STRIP_PROGRAM])]) -# Copyright (C) 2006, 2008 Free Software Foundation, Inc. +# Copyright (C) 2006-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # _AM_SUBST_NOTMAKE(VARIABLE) # --------------------------- # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. @@ -991,24 +1083,22 @@ AC_DEFUN([_AM_SUBST_NOTMAKE]) # AM_SUBST_NOTMAKE(VARIABLE) -# --------------------------- +# -------------------------- # Public sister of _AM_SUBST_NOTMAKE. AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) # Check how to create a tarball. -*- Autoconf -*- -# Copyright (C) 2004, 2005 Free Software Foundation, Inc. +# Copyright (C) 2004-2013 Free Software Foundation, Inc. # # This file is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. -# serial 2 - # _AM_PROG_TAR(FORMAT) # -------------------- # Check how to create a tarball in format FORMAT. -# FORMAT should be one of `v7', `ustar', or `pax'. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. # # Substitute a variable $(am__tar) that is a command # writing to stdout a FORMAT-tarball containing the directory @@ -1018,79 +1108,119 @@ # Substitute a variable $(am__untar) that extract such # a tarball read from stdin. # $(am__untar) < result.tar +# AC_DEFUN([_AM_PROG_TAR], -[# Always define AMTAR for backward compatibility. -AM_MISSING_PROG([AMTAR], [tar]) -m4_if([$1], [v7], - [am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -'], - [m4_case([$1], [ustar],, [pax],, - [m4_fatal([Unknown tar format])]) -AC_MSG_CHECKING([how to create a $1 tar archive]) -# Loop over all known methods to create a tar archive until one works. +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. _am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' -_am_tools=${am_cv_prog_tar_$1-$_am_tools} -# Do not fold the above two line into one, because Tru64 sh and -# Solaris sh will not grok spaces in the rhs of `-'. -for _am_tool in $_am_tools -do - case $_am_tool in - gnutar) - for _am_tar in tar gnutar gtar; - do - AM_RUN_LOG([$_am_tar --version]) && break - done - am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' - am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' - am__untar="$_am_tar -xf -" - ;; - plaintar) - # Must skip GNU tar: if it does not support --format= it doesn't create - # ustar tarball either. - (tar --version) >/dev/null 2>&1 && continue - am__tar='tar chf - "$$tardir"' - am__tar_='tar chf - "$tardir"' - am__untar='tar xf -' - ;; - pax) - am__tar='pax -L -x $1 -w "$$tardir"' - am__tar_='pax -L -x $1 -w "$tardir"' - am__untar='pax -r' - ;; - cpio) - am__tar='find "$$tardir" -print | cpio -o -H $1 -L' - am__tar_='find "$tardir" -print | cpio -o -H $1 -L' - am__untar='cpio -i -H $1 -d' - ;; - none) - am__tar=false - am__tar_=false - am__untar=false - ;; - esac - # If the value was cached, stop now. We just wanted to have am__tar - # and am__untar set. - test -n "${am_cv_prog_tar_$1}" && break +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], - # tar/untar a dummy directory, and stop if the command works - rm -rf conftest.dir - mkdir conftest.dir - echo GrepMe > conftest.dir/file - AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done rm -rf conftest.dir - if test -s conftest.tar; then - AM_RUN_LOG([$am__untar /dev/null 2>&1 && break - fi -done -rm -rf conftest.dir -AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) -AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + AC_SUBST([am__tar]) AC_SUBST([am__untar]) ]) # _AM_PROG_TAR m4_include([m4/ax_append_flag.m4]) +m4_include([m4/ax_expand_prefix.m4]) m4_include([m4/ax_pthread.m4]) m4_include([m4/pkg.m4]) Binary files /tmp/kKuSGmoAkX/alien-arena-7.53+dfsg/alienarena.png and /tmp/zag_nDUnG7/alien-arena-7.66+dfsg/alienarena.png differ diff -Nru alien-arena-7.53+dfsg/config/compile alien-arena-7.66+dfsg/config/compile --- alien-arena-7.53+dfsg/config/compile 2010-06-08 00:37:58.000000000 +0000 +++ alien-arena-7.66+dfsg/config/compile 2013-08-27 20:18:20.000000000 +0000 @@ -1,10 +1,9 @@ #! /bin/sh -# Wrapper for compilers which do not understand `-c -o'. +# Wrapper for compilers which do not understand '-c -o'. -scriptversion=2009-10-06.20; # UTC +scriptversion=2012-10-14.11; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009 Free Software -# Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # Written by Tom Tromey . # # This program is free software; you can redistribute it and/or modify @@ -29,21 +28,224 @@ # bugs to or send patches to # . +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + case $1 in '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 + echo "$0: No command. Try '$0 --help' for more information." 1>&2 exit 1; ;; -h | --h*) cat <<\EOF Usage: compile [--help] [--version] PROGRAM [ARGS] -Wrapper for compilers which do not understand `-c -o'. -Remove `-o dest.o' from ARGS, run PROGRAM with the remaining +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining arguments, and rename the output as expected. If you are trying to build a whole package this is not the -right script to run: please start by reading the file `INSTALL'. +right script to run: please start by reading the file 'INSTALL'. Report bugs to . EOF @@ -53,11 +255,13 @@ echo "compile $scriptversion" exit $? ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; esac ofile= cfile= -eat= for arg do @@ -66,8 +270,8 @@ else case $1 in -o) - # configure might choose to run compile as `compile cc -o foo foo.c'. - # So we strip `-o arg' only if arg is an object. + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. eat=1 case $2 in *.o | *.obj) @@ -94,10 +298,10 @@ done if test -z "$ofile" || test -z "$cfile"; then - # If no `-o' option was seen then we might have been invoked from a + # If no '-o' option was seen then we might have been invoked from a # pattern rule where we don't need one. That is ok -- this is a # normal compilation that the losing compiler can handle. If no - # `.c' file was seen then we are probably linking. That is also + # '.c' file was seen then we are probably linking. That is also # ok. exec "$@" fi @@ -106,7 +310,7 @@ cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` # Create the lock directory. -# Note: use `[/\\:.-]' here to ensure that we don't use the same name +# Note: use '[/\\:.-]' here to ensure that we don't use the same name # that we are using for the .o file. Also, base the name on the expected # object file name, since that is what matters with a parallel build. lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d diff -Nru alien-arena-7.53+dfsg/config/config.guess alien-arena-7.66+dfsg/config/config.guess --- alien-arena-7.53+dfsg/config/config.guess 2011-09-19 01:32:09.000000000 +0000 +++ alien-arena-7.66+dfsg/config/config.guess 2013-08-27 20:18:20.000000000 +0000 @@ -1,14 +1,12 @@ #! /bin/sh # Attempt to guess a canonical system name. -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, -# 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, -# 2011 Free Software Foundation, Inc. +# Copyright 1992-2013 Free Software Foundation, Inc. -timestamp='2011-02-02' +timestamp='2013-06-10' # This file 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 +# the Free Software Foundation; either version 3 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, but @@ -17,26 +15,22 @@ # General Public License for more details. # # You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA -# 02110-1301, USA. +# along with this program; if not, see . # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. - - -# Originally written by Per Bothner. Please send patches (context -# diff format) to and include a ChangeLog -# entry. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). # -# This script attempts to guess a canonical system name similar to -# config.sub. If it succeeds, it prints the system name on stdout, and -# exits with 0. Otherwise, it exits with 1. +# Originally written by Per Bothner. # # You can get the latest version of this script from: # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD +# +# Please send patches with a ChangeLog entry to config-patches@gnu.org. + me=`echo "$0" | sed -e 's,.*/,,'` @@ -56,9 +50,7 @@ GNU config.guess ($timestamp) Originally written by Per Bothner. -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free -Software Foundation, Inc. +Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -141,22 +133,20 @@ UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown case "${UNAME_SYSTEM}" in -Linux|GNU/*) +Linux|GNU|GNU/*) + # If the system lacks a compiler, then just pick glibc. + # We could probably try harder. + LIBC=gnu + eval $set_cc_for_build cat <<-EOF > $dummy.c #include - #ifdef __UCLIBC__ - # ifdef __UCLIBC_CONFIG_VERSION__ - LIBC=uclibc __UCLIBC_CONFIG_VERSION__ - # else + #if defined(__UCLIBC__) LIBC=uclibc - # endif - #else - # ifdef __dietlibc__ + #elif defined(__dietlibc__) LIBC=dietlibc - # else + #else LIBC=gnu - # endif #endif EOF eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'` @@ -168,7 +158,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in *:NetBSD:*:*) # NetBSD (nbsd) targets should (where applicable) match one or - # more of the tupples: *-*-netbsdelf*, *-*-netbsdaout*, + # more of the tuples: *-*-netbsdelf*, *-*-netbsdaout*, # *-*-netbsdecoff* and *-*-netbsd*. For targets that recently # switched to ELF, *-*-netbsd* would select the old # object file format. This provides both forward @@ -225,6 +215,10 @@ # CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used. echo "${machine}-${os}${release}" exit ;; + *:Bitrig:*:*) + UNAME_MACHINE_ARCH=`arch | sed 's/Bitrig.//'` + echo ${UNAME_MACHINE_ARCH}-unknown-bitrig${UNAME_RELEASE} + exit ;; *:OpenBSD:*:*) UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'` echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE} @@ -327,7 +321,7 @@ arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*) echo arm-acorn-riscix${UNAME_RELEASE} exit ;; - arm:riscos:*:*|arm:RISCOS:*:*) + arm*:riscos:*:*|arm*:RISCOS:*:*) echo arm-unknown-riscos exit ;; SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*) @@ -815,21 +809,26 @@ echo ${UNAME_MACHINE}-unknown-bsdi${UNAME_RELEASE} exit ;; *:FreeBSD:*:*) - case ${UNAME_MACHINE} in - pc98) - echo i386-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + UNAME_PROCESSOR=`/usr/bin/uname -p` + case ${UNAME_PROCESSOR} in amd64) echo x86_64-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; *) - echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; + echo ${UNAME_PROCESSOR}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'` ;; esac exit ;; i*:CYGWIN*:*) echo ${UNAME_MACHINE}-pc-cygwin exit ;; + *:MINGW64*:*) + echo ${UNAME_MACHINE}-pc-mingw64 + exit ;; *:MINGW*:*) echo ${UNAME_MACHINE}-pc-mingw32 exit ;; + i*:MSYS*:*) + echo ${UNAME_MACHINE}-pc-msys + exit ;; i*:windows32*:*) # uname -m includes "-pc" on this system. echo ${UNAME_MACHINE}-mingw32 @@ -884,6 +883,13 @@ i*86:Minix:*:*) echo ${UNAME_MACHINE}-pc-minix exit ;; + aarch64:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + aarch64_be:Linux:*:*) + UNAME_MACHINE=aarch64_be + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; alpha:Linux:*:*) case `sed -n '/^cpu model/s/^.*: \(.*\)/\1/p' < /proc/cpuinfo` in EV5) UNAME_MACHINE=alphaev5 ;; @@ -898,6 +904,9 @@ if test "$?" = 0 ; then LIBC="gnulibc1" ; fi echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; + arc:Linux:*:* | arceb:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; arm*:Linux:*:*) eval $set_cc_for_build if echo __ARM_EABI__ | $CC_FOR_BUILD -E - 2>/dev/null \ @@ -905,20 +914,29 @@ then echo ${UNAME_MACHINE}-unknown-linux-${LIBC} else - echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + if echo __ARM_PCS_VFP | $CC_FOR_BUILD -E - 2>/dev/null \ + | grep -q __ARM_PCS_VFP + then + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabi + else + echo ${UNAME_MACHINE}-unknown-linux-${LIBC}eabihf + fi fi exit ;; avr32*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; cris:Linux:*:*) - echo cris-axis-linux-${LIBC} + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; crisv32:Linux:*:*) - echo crisv32-axis-linux-${LIBC} + echo ${UNAME_MACHINE}-axis-linux-${LIBC} exit ;; frv:Linux:*:*) - echo frv-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; + hexagon:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; i*86:Linux:*:*) echo ${UNAME_MACHINE}-pc-linux-${LIBC} @@ -951,8 +969,11 @@ eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'` test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; } ;; + or1k:Linux:*:*) + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} + exit ;; or32:Linux:*:*) - echo or32-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; padre:Linux:*:*) echo sparc-unknown-linux-${LIBC} @@ -974,8 +995,14 @@ ppc:Linux:*:*) echo powerpc-unknown-linux-${LIBC} exit ;; + ppc64le:Linux:*:*) + echo powerpc64le-unknown-linux-${LIBC} + exit ;; + ppcle:Linux:*:*) + echo powerpcle-unknown-linux-${LIBC} + exit ;; s390:Linux:*:* | s390x:Linux:*:*) - echo ${UNAME_MACHINE}-ibm-linux + echo ${UNAME_MACHINE}-ibm-linux-${LIBC} exit ;; sh64*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -987,13 +1014,13 @@ echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; tile*:Linux:*:*) - echo ${UNAME_MACHINE}-tilera-linux-gnu + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; vax:Linux:*:*) echo ${UNAME_MACHINE}-dec-linux-${LIBC} exit ;; x86_64:Linux:*:*) - echo x86_64-unknown-linux-${LIBC} + echo ${UNAME_MACHINE}-unknown-linux-${LIBC} exit ;; xtensa*:Linux:*:*) echo ${UNAME_MACHINE}-unknown-linux-${LIBC} @@ -1200,6 +1227,9 @@ BePC:Haiku:*:*) # Haiku running on Intel PC compatible. echo i586-pc-haiku exit ;; + x86_64:Haiku:*:*) + echo x86_64-unknown-haiku + exit ;; SX-4:SUPER-UX:*:*) echo sx4-nec-superux${UNAME_RELEASE} exit ;; @@ -1226,19 +1256,21 @@ exit ;; *:Darwin:*:*) UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown - case $UNAME_PROCESSOR in - i386) - eval $set_cc_for_build - if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then - if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ - (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ - grep IS_64BIT_ARCH >/dev/null - then - UNAME_PROCESSOR="x86_64" - fi - fi ;; - unknown) UNAME_PROCESSOR=powerpc ;; - esac + eval $set_cc_for_build + if test "$UNAME_PROCESSOR" = unknown ; then + UNAME_PROCESSOR=powerpc + fi + if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then + if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \ + (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \ + grep IS_64BIT_ARCH >/dev/null + then + case $UNAME_PROCESSOR in + i386) UNAME_PROCESSOR=x86_64 ;; + powerpc) UNAME_PROCESSOR=powerpc64 ;; + esac + fi + fi echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) @@ -1255,7 +1287,7 @@ NEO-?:NONSTOP_KERNEL:*:*) echo neo-tandem-nsk${UNAME_RELEASE} exit ;; - NSE-?:NONSTOP_KERNEL:*:*) + NSE-*:NONSTOP_KERNEL:*:*) echo nse-tandem-nsk${UNAME_RELEASE} exit ;; NSR-?:NONSTOP_KERNEL:*:*) @@ -1324,11 +1356,11 @@ i*86:AROS:*:*) echo ${UNAME_MACHINE}-pc-aros exit ;; + x86_64:VMkernel:*:*) + echo ${UNAME_MACHINE}-unknown-esx + exit ;; esac -#echo '(No uname command or uname output not recognized.)' 1>&2 -#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2 - eval $set_cc_for_build cat >$dummy.c <. # # As a special exception to the GNU General Public License, if you # distribute this file as part of a program that contains a # configuration script generated by Autoconf, you may include it under -# the same distribution terms that you use for the rest of that program. +# the same distribution terms that you use for the rest of that +# program. This Exception is an additional permission under section 7 +# of the GNU General Public License, version 3 ("GPLv3"). -# Please send patches to . Submit a context -# diff and a properly formatted GNU ChangeLog entry. +# Please send patches with a ChangeLog entry to config-patches@gnu.org. # # Configuration subroutine to validate and canonicalize a configuration type. # Supply the specified configuration type as an argument. @@ -75,9 +68,7 @@ version="\ GNU config.sub ($timestamp) -Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000, -2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free -Software Foundation, Inc. +Copyright 1992-2013 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE." @@ -125,13 +116,17 @@ maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'` case $maybe_os in nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \ - linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ + linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \ knetbsd*-gnu* | netbsd*-gnu* | \ kopensolaris*-gnu* | \ storm-chaos* | os2-emx* | rtmk-nova*) os=-$maybe_os basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'` ;; + android-linux) + os=-linux-android + basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`-unknown + ;; *) basic_machine=`echo $1 | sed 's/-[^-]*$//'` if [ $basic_machine != $1 ] @@ -154,7 +149,7 @@ -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\ -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \ -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \ - -apple | -axis | -knuth | -cray | -microblaze) + -apple | -axis | -knuth | -cray | -microblaze*) os= basic_machine=$1 ;; @@ -223,6 +218,12 @@ -isc*) basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'` ;; + -lynx*178) + os=-lynxos178 + ;; + -lynx*5) + os=-lynxos5 + ;; -lynx*) os=-lynxos ;; @@ -247,20 +248,27 @@ # Some are omitted here because they have special meanings below. 1750a | 580 \ | a29k \ + | aarch64 | aarch64_be \ | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \ | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \ | am33_2.0 \ - | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \ + | arc | arceb \ + | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \ + | avr | avr32 \ + | be32 | be64 \ | bfin \ | c4x | clipper \ - | d10v | d30v | dlx | dsp16xx | dvp \ + | d10v | d30v | dlx | dsp16xx \ + | epiphany \ | fido | fr30 | frv \ | h8300 | h8500 | hppa | hppa1.[01] | hppa2.0 | hppa2.0[nw] | hppa64 \ + | hexagon \ | i370 | i860 | i960 | ia64 \ | ip2k | iq2000 \ + | le32 | le64 \ | lm32 \ | m32c | m32r | m32rle | m68000 | m68k | m88k \ - | maxq | mb | microblaze | mcore | mep | metag \ + | maxq | mb | microblaze | microblazeel | mcore | mep | metag \ | mips | mipsbe | mipseb | mipsel | mipsle \ | mips16 \ | mips64 | mips64el \ @@ -278,30 +286,32 @@ | mipsisa64r2 | mipsisa64r2el \ | mipsisa64sb1 | mipsisa64sb1el \ | mipsisa64sr71k | mipsisa64sr71kel \ + | mipsr5900 | mipsr5900el \ | mipstx39 | mipstx39el \ | mn10200 | mn10300 \ | moxie \ | mt \ | msp430 \ | nds32 | nds32le | nds32be \ - | nios | nios2 \ + | nios | nios2 | nios2eb | nios2el \ | ns16k | ns32k \ - | or32 \ + | open8 \ + | or1k | or32 \ | pdp10 | pdp11 | pj | pjl \ - | powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \ + | powerpc | powerpc64 | powerpc64le | powerpcle \ | pyramid \ - | rx \ + | rl78 | rx \ | score \ | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | shbe | shle | sh[1234]le | sh3ele \ | sh64 | sh64le \ | sparc | sparc64 | sparc64b | sparc64v | sparc86x | sparclet | sparclite \ | sparcv8 | sparcv9 | sparcv9b | sparcv9v \ - | spu | strongarm \ - | tahoe | thumb | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ + | spu \ + | tahoe | tic4x | tic54x | tic55x | tic6x | tic80 | tron \ | ubicom32 \ - | v850 | v850e \ + | v850 | v850e | v850e1 | v850e2 | v850es | v850e2v3 \ | we32k \ - | x86 | xc16x | xscale | xscalee[bl] | xstormy16 | xtensa \ + | x86 | xc16x | xstormy16 | xtensa \ | z8k | z80) basic_machine=$basic_machine-unknown ;; @@ -314,8 +324,7 @@ c6x) basic_machine=tic6x-unknown ;; - m6811 | m68hc11 | m6812 | m68hc12 | picochip) - # Motorola 68HC11/12. + m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip) basic_machine=$basic_machine-unknown os=-none ;; @@ -325,6 +334,21 @@ basic_machine=mt-unknown ;; + strongarm | thumb | xscale) + basic_machine=arm-unknown + ;; + xgate) + basic_machine=$basic_machine-unknown + os=-none + ;; + xscaleeb) + basic_machine=armeb-unknown + ;; + + xscaleel) + basic_machine=armel-unknown + ;; + # We use `pc' rather than `unknown' # because (1) that's what they normally are, and # (2) the word "unknown" tends to confuse beginning users. @@ -339,11 +363,13 @@ # Recognize the basic CPU types with company name. 580-* \ | a29k-* \ + | aarch64-* | aarch64_be-* \ | alpha-* | alphaev[4-8]-* | alphaev56-* | alphaev6[78]-* \ | alpha64-* | alpha64ev[4-8]-* | alpha64ev56-* | alpha64ev6[78]-* \ - | alphapca5[67]-* | alpha64pca5[67]-* | arc-* \ + | alphapca5[67]-* | alpha64pca5[67]-* | arc-* | arceb-* \ | arm-* | armbe-* | armle-* | armeb-* | armv*-* \ | avr-* | avr32-* \ + | be32-* | be64-* \ | bfin-* | bs2000-* \ | c[123]* | c30-* | [cjt]90-* | c4x-* \ | clipper-* | craynv-* | cydra-* \ @@ -352,12 +378,15 @@ | f30[01]-* | f700-* | fido-* | fr30-* | frv-* | fx80-* \ | h8300-* | h8500-* \ | hppa-* | hppa1.[01]-* | hppa2.0-* | hppa2.0[nw]-* | hppa64-* \ + | hexagon-* \ | i*86-* | i860-* | i960-* | ia64-* \ | ip2k-* | iq2000-* \ + | le32-* | le64-* \ | lm32-* \ | m32c-* | m32r-* | m32rle-* \ | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \ - | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \ + | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \ + | microblaze-* | microblazeel-* \ | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \ | mips16-* \ | mips64-* | mips64el-* \ @@ -375,31 +404,34 @@ | mipsisa64r2-* | mipsisa64r2el-* \ | mipsisa64sb1-* | mipsisa64sb1el-* \ | mipsisa64sr71k-* | mipsisa64sr71kel-* \ + | mipsr5900-* | mipsr5900el-* \ | mipstx39-* | mipstx39el-* \ | mmix-* \ | mt-* \ | msp430-* \ | nds32-* | nds32le-* | nds32be-* \ - | nios-* | nios2-* \ + | nios-* | nios2-* | nios2eb-* | nios2el-* \ | none-* | np1-* | ns16k-* | ns32k-* \ + | open8-* \ | orion-* \ | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \ - | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \ + | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \ | pyramid-* \ - | romp-* | rs6000-* | rx-* \ + | rl78-* | romp-* | rs6000-* | rx-* \ | sh-* | sh[1234]-* | sh[24]a-* | sh[24]aeb-* | sh[23]e-* | sh[34]eb-* | sheb-* | shbe-* \ | shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \ | sparc-* | sparc64-* | sparc64b-* | sparc64v-* | sparc86x-* | sparclet-* \ | sparclite-* \ - | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | strongarm-* | sv1-* | sx?-* \ - | tahoe-* | thumb-* \ + | sparcv8-* | sparcv9-* | sparcv9b-* | sparcv9v-* | sv1-* | sx?-* \ + | tahoe-* \ | tic30-* | tic4x-* | tic54x-* | tic55x-* | tic6x-* | tic80-* \ - | tile-* | tilegx-* \ + | tile*-* \ | tron-* \ | ubicom32-* \ - | v850-* | v850e-* | vax-* \ + | v850-* | v850e-* | v850e1-* | v850es-* | v850e2-* | v850e2v3-* \ + | vax-* \ | we32k-* \ - | x86-* | x86_64-* | xc16x-* | xps100-* | xscale-* | xscalee[bl]-* \ + | x86-* | x86_64-* | xc16x-* | xps100-* \ | xstormy16-* | xtensa*-* \ | ymp-* \ | z8k-* | z80-*) @@ -697,7 +729,6 @@ i370-ibm* | ibm*) basic_machine=i370-ibm ;; -# I'm not sure what "Sysv32" means. Should this be sysv3.2? i*86v32) basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'` os=-sysv32 @@ -755,9 +786,13 @@ basic_machine=ns32k-utek os=-sysv ;; - microblaze) + microblaze*) basic_machine=microblaze-xilinx ;; + mingw64) + basic_machine=x86_64-pc + os=-mingw64 + ;; mingw32) basic_machine=i386-pc os=-mingw32 @@ -773,24 +808,6 @@ basic_machine=m68k-atari os=-mint ;; - mipsEE* | ee | ps2) - basic_machine=mips64r5900el-scei - case $os in - -linux*) - ;; - *) - os=-elf - ;; - esac - ;; - iop) - basic_machine=mipsel-scei - os=-irx - ;; - dvp) - basic_machine=dvp-scei - os=-elf - ;; mips3*-*) basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'` ;; @@ -812,10 +829,18 @@ ms1-*) basic_machine=`echo $basic_machine | sed -e 's/ms1-/mt-/'` ;; + msys) + basic_machine=i386-pc + os=-msys + ;; mvs) basic_machine=i370-ibm os=-mvs ;; + nacl) + basic_machine=le32-unknown + os=-nacl + ;; ncr3000) basic_machine=i486-ncr os=-sysv4 @@ -968,9 +993,10 @@ ;; power) basic_machine=power-ibm ;; - ppc) basic_machine=powerpc-unknown + ppc | ppcbe) basic_machine=powerpc-unknown ;; - ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` + ppc-* | ppcbe-*) + basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'` ;; ppcle | powerpclittle | ppc-le | powerpc-little) basic_machine=powerpcle-unknown @@ -995,7 +1021,11 @@ basic_machine=i586-unknown os=-pw32 ;; - rdos) + rdos | rdos64) + basic_machine=x86_64-pc + os=-rdos + ;; + rdos32) basic_machine=i386-pc os=-rdos ;; @@ -1064,6 +1094,9 @@ basic_machine=i860-stratus os=-sysv4 ;; + strongarm-* | thumb-*) + basic_machine=arm-`echo $basic_machine | sed 's/^[^-]*-//'` + ;; sun2) basic_machine=m68000-sun ;; @@ -1120,13 +1153,8 @@ basic_machine=t90-cray os=-unicos ;; - # This must be matched before tile*. - tilegx*) - basic_machine=tilegx-unknown - os=-linux-gnu - ;; tile*) - basic_machine=tile-unknown + basic_machine=$basic_machine-unknown os=-linux-gnu ;; tx39) @@ -1196,6 +1224,9 @@ xps | xps100) basic_machine=xps100-honeywell ;; + xscale-* | xscalee[bl]-*) + basic_machine=`echo $basic_machine | sed 's/^xscale/arm/'` + ;; ymp) basic_machine=ymp-cray os=-unicos @@ -1321,25 +1352,25 @@ -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \ | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\ | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \ - | -sym* | -kopensolaris* \ + | -sym* | -kopensolaris* | -plan9* \ | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \ | -aos* | -aros* \ | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \ | -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \ | -hiux* | -386bsd* | -knetbsd* | -mirbsd* | -netbsd* \ - | -openbsd* | -solidbsd* \ + | -bitrig* | -openbsd* | -solidbsd* \ | -ekkobsd* | -kfreebsd* | -freebsd* | -riscix* | -lynxos* \ | -bosx* | -nextstep* | -cxux* | -aout* | -elf* | -oabi* \ | -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \ | -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \ | -chorusos* | -chorusrdb* | -cegcc* \ - | -cygwin* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ - | -mingw32* | -linux-gnu* | -linux-android* \ - | -linux-newlib* | -linux-uclibc* \ + | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \ + | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \ + | -linux-newlib* | -linux-musl* | -linux-uclibc* \ | -uxpv* | -beos* | -mpeix* | -udk* \ | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \ | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \ - | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* | -irx* \ + | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \ | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \ | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \ | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \ @@ -1467,9 +1498,6 @@ -aros*) os=-aros ;; - -kaos*) - os=-kaos - ;; -zvmoe) os=-zvmoe ;; @@ -1518,6 +1546,9 @@ c4x-* | tic4x-*) os=-coff ;; + hexagon-*) + os=-elf + ;; tic54x-*) os=-coff ;; @@ -1545,9 +1576,6 @@ ;; m68000-sun) os=-sunos3 - # This also exists in the configure program, but was not the - # default. - # os=-sunos4 ;; m68*-cisco) os=-aout @@ -1561,6 +1589,9 @@ mips*-*) os=-elf ;; + or1k-*) + os=-elf + ;; or32-*) os=-coff ;; diff -Nru alien-arena-7.53+dfsg/config/depcomp alien-arena-7.66+dfsg/config/depcomp --- alien-arena-7.53+dfsg/config/depcomp 2010-04-27 04:57:49.000000000 +0000 +++ alien-arena-7.66+dfsg/config/depcomp 2013-08-27 20:18:20.000000000 +0000 @@ -1,10 +1,9 @@ #! /bin/sh # depcomp - compile a program generating dependencies as side-effects -scriptversion=2009-04-28.21; # UTC +scriptversion=2013-05-30.07; # UTC -# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006, 2007, 2009 Free -# Software Foundation, Inc. +# Copyright (C) 1999-2013 Free Software Foundation, Inc. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -28,9 +27,9 @@ case $1 in '') - echo "$0: No command. Try \`$0 --help' for more information." 1>&2 - exit 1; - ;; + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; -h | --h*) cat <<\EOF Usage: depcomp [--help] [--version] PROGRAM [ARGS] @@ -40,11 +39,11 @@ Environment variables: depmode Dependency tracking mode. - source Source file read by `PROGRAMS ARGS'. - object Object file output by `PROGRAMS ARGS'. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. DEPDIR directory where to store dependencies. depfile Dependency file to output. - tmpdepfile Temporary file to use when outputing dependencies. + tmpdepfile Temporary file to use when outputting dependencies. libtool Whether libtool is used (yes/no). Report bugs to . @@ -57,6 +56,66 @@ ;; esac +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + if test -z "$depmode" || test -z "$source" || test -z "$object"; then echo "depcomp: Variables source, object and depmode must be set" 1>&2 exit 1 @@ -69,6 +128,9 @@ rm -f "$tmpdepfile" +# Avoid interferences from the environment. +gccflag= dashmflag= + # Some modes work just like other modes, but use different flags. We # parameterize here, but still list the modes in the big case below, # to make depend.m4 easier to write. Note that we *cannot* use a case @@ -80,18 +142,32 @@ fi if test "$depmode" = dashXmstdout; then - # This is just like dashmstdout with a different argument. - dashmflag=-xM - depmode=dashmstdout + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout fi cygpath_u="cygpath -u -f -" if test "$depmode" = msvcmsys; then - # This is just like msvisualcpp but w/o cygpath translation. - # Just convert the backslash-escaped backslashes to single forward - # slashes to satisfy depend.m4 - cygpath_u="sed s,\\\\\\\\,/,g" - depmode=msvisualcpp + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc fi case "$depmode" in @@ -114,8 +190,7 @@ done "$@" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -123,13 +198,17 @@ ;; gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). ## There are various ways to get dependency output from gcc. Here's ## why we pick this rather obscure method: ## - Don't want to use -MD because we'd like the dependencies to end ## up in a subdir. Having to rename by hand is ugly. ## (We might end up doing this anyway to support other compilers.) ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like -## -MM, not -M (despite what the docs say). +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. ## - Using -M directly means running the compiler twice (even worse ## than renaming). if test -z "$gccflag"; then @@ -137,31 +216,31 @@ fi "$@" -Wp,"$gccflag$tmpdepfile" stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi rm -f "$depfile" echo "$object : \\" > "$depfile" - alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz -## The second -e expression handles DOS-style file names with drive letters. + # The second -e expression handles DOS-style file names with drive + # letters. sed -e 's/^[^:]*: / /' \ -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" -## This next piece of magic avoids the `deleted header file' problem. +## This next piece of magic avoids the "deleted header file" problem. ## The problem is that when a header file which appears in a .P file ## is deleted, the dependency causes make to die (because there is ## typically no way to rebuild the header). We avoid this by adding ## dummy dependencies for each header file. Too bad gcc doesn't do ## this for us directly. - tr ' ' ' -' < "$tmpdepfile" | -## Some versions of gcc put a space before the `:'. On the theory +## Some versions of gcc put a space before the ':'. On the theory ## that the space means something, we add a space to the output as -## well. +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. ## Some versions of the HPUX 10.20 sed can't process this invocation ## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -179,8 +258,7 @@ "$@" -MDupdate "$tmpdepfile" fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -188,43 +266,41 @@ if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files echo "$object : \\" > "$depfile" - # Clip off the initial element (the dependent). Don't try to be # clever and replace this with sed code, as IRIX sed won't handle # lines with more than a fixed number of characters (4096 in # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; - # the IRIX cc adds comments like `#:fec' to the end of the + # the IRIX cc adds comments like '#:fec' to the end of the # dependency line. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \ - tr ' -' ' ' >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" echo >> "$depfile" - # The second pass generates a dummy entry for each header file. - tr ' ' ' -' < "$tmpdepfile" \ - | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ - >> "$depfile" + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" ;; +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + aix) # The C for AIX Compiler uses -M and outputs the dependencies # in a .u file. In older versions, this file always lives in the - # current directory. Also, the AIX compiler puts `$object:' at the + # current directory. Also, the AIX compiler puts '$object:' at the # start of each line; $object doesn't have directory information. # Version 6 uses the directory in both cases. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.u tmpdepfile2=$base.u @@ -237,9 +313,7 @@ "$@" -M fi stat=$? - - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" exit $stat fi @@ -248,44 +322,100 @@ do test -f "$tmpdepfile" && break done - if test -f "$tmpdepfile"; then - # Each line is of the form `foo.o: dependent.h'. - # Do two passes, one to just change these to - # `$object: dependent.h' and one to simply `dependent.h:'. - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - # The sourcefile does not contain any dependencies, so just - # store a dummy comment line, to avoid errors with the Makefile - # "include basename.Plo" scheme. - echo "#dummy" > "$depfile" + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" rm -f "$tmpdepfile" ;; -icc) - # Intel's C compiler understands `-MD -MF file'. However on - # icc -MD -MF foo.d -c -o sub/foo.o sub/foo.c - # ICC 7.0 will fill foo.d with something like - # foo.o: sub/foo.c - # foo.o: sub/foo.h - # which is wrong. We want: - # sub/foo.o: sub/foo.c - # sub/foo.o: sub/foo.h - # sub/foo.c: - # sub/foo.h: - # ICC 7.1 will output +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output # foo.o: sub/foo.c sub/foo.h - # and will wrap long lines using \ : + # and will wrap long lines using '\' : # foo.o: sub/foo.c ... \ # sub/foo.h ... \ # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi - "$@" -MD -MF "$tmpdepfile" - stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile" exit $stat fi @@ -297,8 +427,8 @@ sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" # Some versions of the HPUX 10.20 sed can't process this invocation # correctly. Breaking it into two sed invocations is a workaround. - sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" | - sed -e 's/$/ :/' >> "$depfile" + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -309,9 +439,8 @@ # 'foo.d', which lands next to the object file, wherever that # happens to be. # Much of this is similar to the tru64 case; see comments there. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` + set_dir_from "$object" + set_base_from "$object" if test "$libtool" = yes; then tmpdepfile1=$dir$base.d tmpdepfile2=$dir.libs/$base.d @@ -322,8 +451,7 @@ "$@" +Maked fi stat=$? - if test $stat -eq 0; then : - else + if test $stat -ne 0; then rm -f "$tmpdepfile1" "$tmpdepfile2" exit $stat fi @@ -333,77 +461,107 @@ test -f "$tmpdepfile" && break done if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile" - # Add `dependent.h:' lines. + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. sed -ne '2,${ - s/^ *// - s/ \\*$// - s/$/:/ - p - }' "$tmpdepfile" >> "$depfile" + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" else - echo "#dummy" > "$depfile" + make_dummy_depfile fi rm -f "$tmpdepfile" "$tmpdepfile2" ;; tru64) - # The Tru64 compiler uses -MD to generate dependencies as a side - # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'. - # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put - # dependencies in `foo.d' instead, so we check for that too. - # Subdirectories are respected. - dir=`echo "$object" | sed -e 's|/[^/]*$|/|'` - test "x$dir" = "x$object" && dir= - base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'` - - if test "$libtool" = yes; then - # With Tru64 cc, shared objects can also be used to make a - # static library. This mechanism is used in libtool 1.4 series to - # handle both shared and static libraries in a single compilation. - # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d. - # - # With libtool 1.5 this exception was removed, and libtool now - # generates 2 separate objects for the 2 libraries. These two - # compilations output dependencies in $dir.libs/$base.o.d and - # in $dir$base.o.d. We have to check for both files, because - # one of the two compilations can be disabled. We should prefer - # $dir$base.o.d over $dir.libs/$base.o.d because the latter is - # automatically cleaned when .libs/ is deleted, while ignoring - # the former would cause a distcleancheck panic. - tmpdepfile1=$dir.libs/$base.lo.d # libtool 1.4 - tmpdepfile2=$dir$base.o.d # libtool 1.5 - tmpdepfile3=$dir.libs/$base.o.d # libtool 1.5 - tmpdepfile4=$dir.libs/$base.d # Compaq CCC V6.2-504 - "$@" -Wc,-MD - else - tmpdepfile1=$dir$base.o.d - tmpdepfile2=$dir$base.d - tmpdepfile3=$dir$base.d - tmpdepfile4=$dir$base.d - "$@" -MD - fi + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi - stat=$? - if test $stat -eq 0; then : - else - rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - exit $stat - fi - - for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4" - do - test -f "$tmpdepfile" && break - done - if test -f "$tmpdepfile"; then - sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile" - # That's a tab and a space in the []. - sed -e 's,^.*\.[a-z]*:[ ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile" - else - echo "#dummy" > "$depfile" - fi - rm -f "$tmpdepfile" - ;; + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; #nosideeffect) # This comment above is used by automake to tell side-effect @@ -422,7 +580,7 @@ shift fi - # Remove `-o $object'. + # Remove '-o $object'. IFS=" " for arg do @@ -442,18 +600,18 @@ done test -z "$dashmflag" && dashmflag=-M - # Require at least two characters before searching for `:' + # Require at least two characters before searching for ':' # in the target name. This is to cope with DOS-style filenames: - # a dependency such as `c:/foo/bar' could be seen as target `c' otherwise. + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. "$@" $dashmflag | - sed 's:^[ ]*[^: ][^:][^:]*\:[ ]*:'"$object"'\: :' > "$tmpdepfile" + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" rm -f "$depfile" cat < "$tmpdepfile" > "$depfile" - tr ' ' ' -' < "$tmpdepfile" | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" ;; @@ -503,12 +661,15 @@ touch "$tmpdepfile" ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" rm -f "$depfile" - cat < "$tmpdepfile" > "$depfile" - sed '1,2d' "$tmpdepfile" | tr ' ' ' -' | \ -## Some versions of the HPUX 10.20 sed can't process this invocation -## correctly. Breaking it into two sed invocations is a workaround. - sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" rm -f "$tmpdepfile" "$tmpdepfile".bak ;; @@ -525,7 +686,7 @@ shift fi - # Remove `-o $object'. + # Remove '-o $object'. IFS=" " for arg do @@ -544,10 +705,10 @@ esac done - "$@" -E | - sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ - -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' | - sed '$ s: \\$::' > "$tmpdepfile" + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" cat < "$tmpdepfile" >> "$depfile" @@ -579,23 +740,23 @@ shift ;; "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") - set fnord "$@" - shift - shift - ;; + set fnord "$@" + shift + shift + ;; *) - set fnord "$@" "$arg" - shift - shift - ;; + set fnord "$@" "$arg" + shift + shift + ;; esac done "$@" -E 2>/dev/null | sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" rm -f "$depfile" echo "$object : \\" > "$depfile" - sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s:: \1 \\:p' >> "$depfile" - echo " " >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" rm -f "$tmpdepfile" ;; diff -Nru alien-arena-7.53+dfsg/config/install-sh alien-arena-7.66+dfsg/config/install-sh --- alien-arena-7.53+dfsg/config/install-sh 2010-04-25 23:15:09.000000000 +0000 +++ alien-arena-7.66+dfsg/config/install-sh 2013-08-27 20:18:20.000000000 +0000 @@ -1,7 +1,7 @@ #!/bin/sh # install - install a program, script, or datafile -scriptversion=2009-04-28.21; # UTC +scriptversion=2011-11-20.07; # UTC # This originates from X11R5 (mit/util/scripts/install.sh), which was # later released in X11R6 (xc/config/util/install.sh) with the @@ -35,7 +35,7 @@ # FSF changes to this file are in the public domain. # # Calling this script install-sh is preferred over install.sh, to prevent -# `make' implicit rules from creating a file called install from it +# 'make' implicit rules from creating a file called install from it # when there is no Makefile. # # This script is compatible with the BSD install script, but was written @@ -156,6 +156,10 @@ -s) stripcmd=$stripprog;; -t) dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac shift;; -T) no_target_directory=true;; @@ -186,6 +190,10 @@ fi shift # arg dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac done fi @@ -194,13 +202,17 @@ echo "$0: no input file specified." >&2 exit 1 fi - # It's OK to call `install-sh -d' without argument. + # It's OK to call 'install-sh -d' without argument. # This can happen when creating conditional directories. exit 0 fi if test -z "$dir_arg"; then - trap '(exit $?); exit' 1 2 13 15 + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 # Set umask so as not to create temps with too-generous modes. # However, 'strip' requires both read and write access to temps. @@ -228,9 +240,9 @@ for src do - # Protect names starting with `-'. + # Protect names problematic for 'test' and other utilities. case $src in - -*) src=./$src;; + -* | [=\(\)!]) src=./$src;; esac if test -n "$dir_arg"; then @@ -252,12 +264,7 @@ echo "$0: no destination specified." >&2 exit 1 fi - dst=$dst_arg - # Protect names starting with `-'. - case $dst in - -*) dst=./$dst;; - esac # If destination is a directory, append the input filename; won't work # if double slashes aren't ignored. @@ -347,7 +354,7 @@ if test -z "$dir_arg" || { # Check for POSIX incompatibilities with -m. # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or - # other-writeable bit of parent directory when it shouldn't. + # other-writable bit of parent directory when it shouldn't. # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. ls_ld_tmpdir=`ls -ld "$tmpdir"` case $ls_ld_tmpdir in @@ -385,7 +392,7 @@ case $dstdir in /*) prefix='/';; - -*) prefix='./';; + [-=\(\)!]*) prefix='./';; *) prefix='';; esac @@ -403,7 +410,7 @@ for d do - test -z "$d" && continue + test X"$d" = X && continue prefix=$prefix$d if test -d "$prefix"; then diff -Nru alien-arena-7.53+dfsg/config/missing alien-arena-7.66+dfsg/config/missing --- alien-arena-7.53+dfsg/config/missing 2010-04-25 23:15:09.000000000 +0000 +++ alien-arena-7.66+dfsg/config/missing 2013-08-27 20:18:20.000000000 +0000 @@ -1,11 +1,10 @@ #! /bin/sh -# Common stub for a few missing GNU programs while installing. +# Common wrapper for a few potentially missing GNU programs. -scriptversion=2009-04-28.21; # UTC +scriptversion=2012-06-26.16; # UTC -# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006, -# 2008, 2009 Free Software Foundation, Inc. -# Originally by Fran,cois Pinard , 1996. +# Copyright (C) 1996-2013 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by @@ -26,69 +25,40 @@ # the same distribution terms that you use for the rest of that program. if test $# -eq 0; then - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "Try '$0 --help' for more information" exit 1 fi -run=: -sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p' -sed_minuso='s/.* -o \([^ ]*\).*/\1/p' - -# In the cases where this matters, `missing' is being run in the -# srcdir already. -if test -f configure.ac; then - configure_ac=configure.ac -else - configure_ac=configure.in -fi +case $1 in -msg="missing on your system" + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; -case $1 in ---run) - # Try to run requested program, and just exit if it succeeds. - run= - shift - "$@" && exit 0 - # Exit code 63 means version mismatch. This often happens - # when the user try to use an ancient version of a tool on - # a file that requires a minimum version. In this case we - # we should proceed has if the program had been absent, or - # if --run hadn't been passed. - if test $? = 63; then - run=: - msg="probably too old" - fi - ;; + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; -h|--h|--he|--hel|--help) echo "\ $0 [OPTION]... PROGRAM [ARGUMENT]... -Handle \`PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an -error status if there is no known handling for PROGRAM. +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. Options: -h, --help display this help and exit -v, --version output version information and exit - --run try to run the given command, and emulate it if it fails Supported PROGRAM values: - aclocal touch file \`aclocal.m4' - autoconf touch file \`configure' - autoheader touch file \`config.h.in' - autom4te touch the output file, or create a stub one - automake touch all \`Makefile.in' files - bison create \`y.tab.[ch]', if possible, from existing .[ch] - flex create \`lex.yy.c', if possible, from existing .c - help2man touch the output file - lex create \`lex.yy.c', if possible, from existing .c - makeinfo touch the output file - tar try tar, gnutar, gtar, then tar without non-portable flags - yacc create \`y.tab.[ch]', if possible, from existing .[ch] + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man -Version suffixes to PROGRAM as well as the prefixes \`gnu-', \`gnu', and -\`g' are ignored when checking the name. +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. Send bug reports to ." exit $? @@ -100,272 +70,141 @@ ;; -*) - echo 1>&2 "$0: Unknown \`$1' option" - echo 1>&2 "Try \`$0 --help' for more information" + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" exit 1 ;; esac -# normalize program name to check for. -program=`echo "$1" | sed ' - s/^gnu-//; t - s/^gnu//; t - s/^g//; t'` - -# Now exit if we have it, but it failed. Also exit now if we -# don't have it and --version was passed (most likely to detect -# the program). This is about non-GNU programs, so use $1 not -# $program. -case $1 in - lex*|yacc*) - # Not GNU programs, they don't have --version. - ;; - - tar*) - if test -n "$run"; then - echo 1>&2 "ERROR: \`tar' requires --run" - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - exit 1 - fi - ;; +# Run the given program, remember its exit status. +"$@"; st=$? - *) - if test -z "$run" && ($1 --version) > /dev/null 2>&1; then - # We have it, but it failed. - exit 1 - elif test "x$2" = "x--version" || test "x$2" = "x--help"; then - # Could not run --version or --help. This is probably someone - # running `$TOOL --version' or `$TOOL --help' to check whether - # $TOOL exists and not knowing $TOOL uses missing. - exit 1 - fi - ;; -esac - -# If it does not exist, or fails to run (possibly an outdated version), -# try to emulate it. -case $program in - aclocal*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acinclude.m4' or \`${configure_ac}'. You might want - to install the \`Automake' and \`Perl' packages. Grab them from - any GNU archive site." - touch aclocal.m4 - ;; - - autoconf*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`${configure_ac}'. You might want to install the - \`Autoconf' and \`GNU m4' packages. Grab them from any GNU - archive site." - touch configure - ;; - - autoheader*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`acconfig.h' or \`${configure_ac}'. You might want - to install the \`Autoconf' and \`GNU m4' packages. Grab them - from any GNU archive site." - files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}` - test -z "$files" && files="config.h" - touch_files= - for f in $files; do - case $f in - *:*) touch_files="$touch_files "`echo "$f" | - sed -e 's/^[^:]*://' -e 's/:.*//'`;; - *) touch_files="$touch_files $f.in";; - esac - done - touch $touch_files - ;; - - automake*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified \`Makefile.am', \`acinclude.m4' or \`${configure_ac}'. - You might want to install the \`Automake' and \`Perl' packages. - Grab them from any GNU archive site." - find . -type f -name Makefile.am -print | - sed 's/\.am$/.in/' | - while read f; do touch "$f"; done - ;; +# If it succeeded, we are done. +test $st -eq 0 && exit 0 - autom4te*) - echo 1>&2 "\ -WARNING: \`$1' is needed, but is $msg. - You might have modified some files without having the - proper tools for further handling them. - You can get \`$1' as part of \`Autoconf' from any GNU - archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo "#! /bin/sh" - echo "# Created by GNU Automake missing as a replacement of" - echo "# $ $@" - echo "exit 0" - chmod +x $file - exit 1 - fi - ;; - - bison*|yacc*) - echo 1>&2 "\ -WARNING: \`$1' $msg. You should only need it if - you modified a \`.y' file. You may need the \`Bison' package - in order for those modifications to take effect. You can get - \`Bison' from any GNU archive site." - rm -f y.tab.c y.tab.h - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.y) - SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.c - fi - SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" y.tab.h - fi - ;; - esac - fi - if test ! -f y.tab.h; then - echo >y.tab.h - fi - if test ! -f y.tab.c; then - echo 'main() { return 0; }' >y.tab.c - fi - ;; - - lex*|flex*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.l' file. You may need the \`Flex' package - in order for those modifications to take effect. You can get - \`Flex' from any GNU archive site." - rm -f lex.yy.c - if test $# -ne 1; then - eval LASTARG="\${$#}" - case $LASTARG in - *.l) - SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'` - if test -f "$SRCFILE"; then - cp "$SRCFILE" lex.yy.c - fi - ;; - esac - fi - if test ! -f lex.yy.c; then - echo 'main() { return 0; }' >lex.yy.c - fi - ;; - - help2man*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a dependency of a manual page. You may need the - \`Help2man' package in order for those modifications to take - effect. You can get \`Help2man' from any GNU archive site." - - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -f "$file"; then - touch $file - else - test -z "$file" || exec >$file - echo ".ab help2man is required to generate this page" - exit $? - fi - ;; - - makeinfo*) - echo 1>&2 "\ -WARNING: \`$1' is $msg. You should only need it if - you modified a \`.texi' or \`.texinfo' file, or any other file - indirectly affecting the aspect of the manual. The spurious - call might also be the consequence of using a buggy \`make' (AIX, - DU, IRIX). You might want to install the \`Texinfo' package or - the \`GNU make' package. Grab either from any GNU archive site." - # The file to touch is that specified with -o ... - file=`echo "$*" | sed -n "$sed_output"` - test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"` - if test -z "$file"; then - # ... or it is the one specified with @setfilename ... - infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'` - file=`sed -n ' - /^@setfilename/{ - s/.* \([^ ]*\) *$/\1/ - p - q - }' $infile` - # ... or it is derived from the source name (dir/f.texi becomes f.info) - test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info - fi - # If the file does not exist, the user really needs makeinfo; - # let's fail without touching anything. - test -f $file || exit 1 - touch $file - ;; - - tar*) - shift - - # We have already tried tar in the generic part. - # Look for gnutar/gtar before invocation to avoid ugly error - # messages. - if (gnutar --version > /dev/null 2>&1); then - gnutar "$@" && exit 0 - fi - if (gtar --version > /dev/null 2>&1); then - gtar "$@" && exit 0 - fi - firstarg="$1" - if shift; then - case $firstarg in - *o*) - firstarg=`echo "$firstarg" | sed s/o//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - case $firstarg in - *h*) - firstarg=`echo "$firstarg" | sed s/h//` - tar "$firstarg" "$@" && exit 0 - ;; - esac - fi - - echo 1>&2 "\ -WARNING: I can't seem to be able to run \`tar' with the given arguments. - You may want to install GNU tar or Free paxutils, or check the - command line arguments." - exit 1 - ;; - - *) - echo 1>&2 "\ -WARNING: \`$1' is needed, and is $msg. - You might have modified some files without having the - proper tools for further handling them. Check the \`README' file, - it often tells you about the needed prerequisites for installing - this package. You may also peek at any GNU archive site, in case - some other package would contain this missing \`$1' program." - exit 1 - ;; -esac +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi -exit 0 +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'automa4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st # Local variables: # eval: (add-hook 'write-file-hooks 'time-stamp) diff -Nru alien-arena-7.53+dfsg/configure alien-arena-7.66+dfsg/configure --- alien-arena-7.53+dfsg/configure 2011-12-27 05:05:14.000000000 +0000 +++ alien-arena-7.66+dfsg/configure 2013-08-27 20:18:19.000000000 +0000 @@ -1,13 +1,11 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.68 for alienarena 7.53. +# Generated by GNU Autoconf 2.69 for alienarena 7.66. # # Report bugs to . # # -# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, -# 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software -# Foundation, Inc. +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. # # # This configure script is free software; the Free Software Foundation @@ -136,6 +134,31 @@ # CDPATH. (unset CDPATH) >/dev/null 2>&1 && unset CDPATH +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} if test "x$CONFIG_SHELL" = x; then as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : emulate sh @@ -169,7 +192,8 @@ else exitcode=1; echo positional parameters were not saved. fi -test x\$exitcode = x0 || exit 1" +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && @@ -214,21 +238,25 @@ if test "x$CONFIG_SHELL" != x; then : - # We cannot yet assume a decent shell, so we have to provide a - # neutralization value for shells without unset; and this also - # works around shells that cannot unset nonexistent variables. - # Preserve -v and -x to the replacement shell. - BASH_ENV=/dev/null - ENV=/dev/null - (unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV - export CONFIG_SHELL - case $- in # (((( - *v*x* | *x*v* ) as_opts=-vx ;; - *v* ) as_opts=-v ;; - *x* ) as_opts=-x ;; - * ) as_opts= ;; - esac - exec "$CONFIG_SHELL" $as_opts "$as_myself" ${1+"$@"} + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 fi if test x$as_have_required = xno; then : @@ -331,6 +359,14 @@ } # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p # as_fn_append VAR VALUE # ---------------------- # Append the text in VALUE to the end of the definition contained in VAR. Take @@ -452,6 +488,10 @@ chmod +x "$as_me.lineno" || { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec # Don't try to exec as it changes $[0], causing all sort of problems # (the dirname of $[0] is not the place where we might find the # original and so on. Autoconf is especially sensitive to this). @@ -486,16 +526,16 @@ # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' + as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -507,28 +547,8 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -560,8 +580,8 @@ # Identity of this package. PACKAGE_NAME='alienarena' PACKAGE_TARNAME='alienarena' -PACKAGE_VERSION='7.53' -PACKAGE_STRING='alienarena 7.53' +PACKAGE_VERSION='7.66' +PACKAGE_STRING='alienarena 7.66' PACKAGE_BUGREPORT='alienrace@comcast.net' PACKAGE_URL='' @@ -606,10 +626,6 @@ ac_subst_vars='am__EXEEXT_FALSE am__EXEEXT_TRUE LTLIBOBJS -ODE_NODEBUG_FALSE -ODE_NODEBUG_TRUE -REMOVE_SYMBOLS_FALSE -REMOVE_SYMBOLS_TRUE ALLOCA LIBOBJS EGREP @@ -627,10 +643,13 @@ XXF86VM_CFLAGS X11_LIBS X11_CFLAGS +ZLIB_LIBS +ZLIB_CFLAGS PTHREAD_CFLAGS PTHREAD_LIBS PTHREAD_CC ax_pthread_config +ALIENARENA_HOMEDIR icondir INSTALL_DOCS_FALSE INSTALL_DOCS_TRUE @@ -659,6 +678,7 @@ am__fastdepCXX_FALSE am__fastdepCXX_TRUE CXXDEPMODE +am__nodep AMDEPBACKSLASH AMDEP_FALSE AMDEP_TRUE @@ -685,6 +705,8 @@ MAINTAINER_MODE_TRUE AM_BACKSLASH AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V am__untar am__tar AMTAR @@ -759,15 +781,9 @@ with_system_libode enable_documents with_icondir +with_zlib with_xf86vm with_xf86dga -enable_debugging_symbols -enable_full_warnings -enable_irc_debugging -enable_buffer_debugging -enable_paranoid_io -enable_assert_statements -enable_ode_debug enable_build_status ' ac_precious_vars='build_alias @@ -787,6 +803,9 @@ PKG_CONFIG_LIBDIR XMKMF GL_LIBDIR +ALIENARENA_HOMEDIR +ZLIB_CFLAGS +ZLIB_LIBS X11_CFLAGS X11_LIBS XXF86VM_CFLAGS @@ -1252,8 +1271,6 @@ if test "x$host_alias" != x; then if test "x$build_alias" = x; then cross_compiling=maybe - $as_echo "$as_me: WARNING: if you wanted to set the --build type, don't use --host. - If a cross compiler is detected then cross compile mode will be used" >&2 elif test "x$build_alias" != "x$host_alias"; then cross_compiling=yes fi @@ -1339,7 +1356,7 @@ # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures alienarena 7.53 to adapt to many kinds of systems. +\`configure' configures alienarena 7.66 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1413,7 +1430,7 @@ if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of alienarena 7.53:";; + short | recursive ) echo "Configuration of alienarena 7.66:";; esac cat <<\_ACEOF @@ -1421,12 +1438,15 @@ --disable-option-checking ignore unrecognized --enable/--with options --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) --enable-FEATURE[=ARG] include FEATURE [ARG=yes] - --enable-silent-rules less verbose build output (undo: `make V=1') - --disable-silent-rules verbose build output (undo: `make V=0') - --enable-maintainer-mode enable make rules and dependencies not useful - (and sometimes confusing) to the casual installer - --disable-dependency-tracking speeds up one-time build - --enable-dependency-tracking do not reject slow dependency extractors + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-maintainer-mode + enable make rules and dependencies not useful (and + sometimes confusing) to the casual installer + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build --disable-client build dedicated server only, not the client (default:no) --enable-alternate-install @@ -1434,22 +1454,6 @@ (default:no) --enable-ansi-color ANSI terminal color (default: no) --disable-documents Disable document installation (default: no) - --enable-debugging-symbols - Compile Alien Arena with full debugging information - (default:no) - --enable-full-warnings Display all compiler warnings (default:no) - --enable-irc-debugging Debug IRC messages (default: no) - --enable-buffer-debugging - Debug buffers (default: no) - --enable-paranoid-io Activate paranoid, speed-sapping message checking - (default: no) - - --enable-assert-statements - Enable debug assert() statements (default: no) - - --enable-ode-debug Enable debug code and assertion statements in - integrated ODE (default:no) - --disable-build-status hide the status message at the end of the configuration script (default:no) @@ -1460,8 +1464,9 @@ --with(out)-system-libode use system-supplied libode (default:without) --with-icondir=DIR icon install directory (default:DATADIR/icons) + --with(out)-zlib include Zlib compression support (default: check) --with(out)-xf86vm include XF86 VidMode support (default: check) - --with(out)-xf86dga include XF86 DGA support (default: check) + --with(out)-xf86dga include XF86 DGA support (default: without) Some influential environment variables: CXX C++ compiler command @@ -1481,6 +1486,10 @@ path overriding pkg-config's built-in search path XMKMF Path to xmkmf, Makefile generator for X Window System GL_LIBDIR directory containing libGL.dylib + ALIENARENA_HOMEDIR + User data and cfg subdirectory in $HOME + ZLIB_CFLAGS C compiler flags for ZLIB, overriding pkg-config + ZLIB_LIBS linker flags for ZLIB, overriding pkg-config X11_CFLAGS C compiler flags for X11, overriding pkg-config X11_LIBS linker flags for X11, overriding pkg-config XXF86VM_CFLAGS @@ -1562,10 +1571,10 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -alienarena configure 7.53 -generated by GNU Autoconf 2.68 +alienarena configure 7.66 +generated by GNU Autoconf 2.69 -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This configure script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it. _ACEOF @@ -1716,7 +1725,7 @@ test ! -s conftest.err } && test -s conftest$ac_exeext && { test "$cross_compiling" = yes || - $as_test_x conftest$ac_exeext + test -x conftest$ac_exeext }; then : ac_retval=0 else @@ -1978,7 +1987,8 @@ main () { static int test_array [1 - 2 * !(0 < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1))]; -test_array [0] = 0 +test_array [0] = 0; +return test_array [0]; ; return 0; @@ -1994,7 +2004,8 @@ { static int test_array [1 - 2 * !(($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 1) < ($ac_type) ((((($ac_type) 1 << N) << N) - 1) * 2 + 2))]; -test_array [0] = 0 +test_array [0] = 0; +return test_array [0]; ; return 0; @@ -2051,7 +2062,8 @@ main () { static int test_array [1 - 2 * !((($ac_type) -1 >> ($2 / 2 - 1)) >> ($2 / 2 - 1) == 3)]; -test_array [0] = 0 +test_array [0] = 0; +return test_array [0]; ; return 0; @@ -2150,8 +2162,8 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by alienarena $as_me 7.53, which was -generated by GNU Autoconf 2.68. Invocation command line was +It was created by alienarena $as_me 7.66, which was +generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -2536,7 +2548,13 @@ ac_config_headers="$ac_config_headers config/config.h" -am__api_version='1.11' + # The prefix default can be set in configure.ac (otherwise it is /usr/local) + test "x$prefix" = xNONE && prefix=$ac_default_prefix + # Let make expand exec_prefix. Allows to override the makevar 'prefix' later + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + + +am__api_version='1.14' # Find a good install program. We prefer a C program (faster), # so one script is as good as another. But avoid the broken or @@ -2575,7 +2593,7 @@ # by default. for ac_prog in ginstall scoinst install; do for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then if test $ac_prog = install && grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then # AIX install. It has an incompatible calling convention. @@ -2633,9 +2651,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 $as_echo_n "checking whether build environment is sane... " >&6; } -# Just in case -sleep 1 -echo timestamp > conftest.file # Reject unsafe characters in $srcdir or the absolute working directory # name. Accept space and tab only in the latter. am_lf=' @@ -2646,32 +2661,40 @@ esac case $srcdir in *[\\\"\#\$\&\'\`$am_lf\ \ ]*) - as_fn_error $? "unsafe srcdir value: \`$srcdir'" "$LINENO" 5;; + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; esac -# Do `set' in a subshell so we don't clobber the current shell's +# Do 'set' in a subshell so we don't clobber the current shell's # arguments. Must try -L first in case configure is actually a # symlink; some systems play weird games with the mod time of symlinks # (eg FreeBSD returns the mod time of the symlink's containing # directory). if ( - set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` - if test "$*" = "X"; then - # -L didn't work. - set X `ls -t "$srcdir/configure" conftest.file` - fi - rm -f conftest.file - if test "$*" != "X $srcdir/configure conftest.file" \ - && test "$*" != "X conftest.file $srcdir/configure"; then - - # If neither matched, then we have a broken ls. This can happen - # if, for instance, CONFIG_SHELL is bash and it inherits a - # broken ls alias from the environment. This has actually - # happened. Such a system could not be considered "sane". - as_fn_error $? "ls -t appears to fail. Make sure there is not a broken -alias in your environment" "$LINENO" 5 - fi + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done test "$2" = conftest.file ) then @@ -2683,6 +2706,16 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 $as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + test "$program_prefix" != NONE && program_transform_name="s&^&$program_prefix&;$program_transform_name" # Use a double $ so make ignores it. @@ -2705,12 +2738,12 @@ esac fi # Use eval to expand $SHELL -if eval "$MISSING --run true"; then - am_missing_run="$MISSING --run " +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " else am_missing_run= - { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: \`missing' script is too old or missing" >&5 -$as_echo "$as_me: WARNING: \`missing' script is too old or missing" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} fi if test x"${install_sh}" != xset; then @@ -2722,10 +2755,10 @@ esac fi -# Installed binaries are usually stripped using `strip' when the user -# run `make install-strip'. However `strip' might not be the right +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right # tool to use in cross-compilation environments, therefore Automake -# will honor the `STRIP' environment variable to overrule this program. +# will honor the 'STRIP' environment variable to overrule this program. if test "$cross_compiling" != no; then if test -n "$ac_tool_prefix"; then # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. @@ -2744,7 +2777,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_STRIP="${ac_tool_prefix}strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2784,7 +2817,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_STRIP="strip" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2835,7 +2868,7 @@ test -z "$as_dir" && as_dir=. for ac_prog in mkdir gmkdir; do for ac_exec_ext in '' $ac_executable_extensions; do - { test -f "$as_dir/$ac_prog$ac_exec_ext" && $as_test_x "$as_dir/$ac_prog$ac_exec_ext"; } || continue + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( 'mkdir (GNU coreutils) '* | \ 'mkdir (coreutils) '* | \ @@ -2864,12 +2897,6 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 $as_echo "$MKDIR_P" >&6; } -mkdir_p="$MKDIR_P" -case $mkdir_p in - [\\/$]* | ?:[\\/]*) ;; - */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;; -esac - for ac_prog in gawk mawk nawk awk do # Extract the first word of "$ac_prog", so it can be a program name with args. @@ -2888,7 +2915,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -2957,11 +2984,38 @@ enableval=$enable_silent_rules; fi -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=1;; +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi AM_BACKSLASH='\' if test "`cd $srcdir && pwd`" != "`pwd`"; then @@ -2986,7 +3040,7 @@ # Define the identity of the package. PACKAGE='alienarena' - VERSION='7.53' + VERSION='7.66' cat >>confdefs.h <<_ACEOF @@ -3014,28 +3068,107 @@ MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + # We need awk for the "check" target. The system "awk" is bad on # some platforms. -# Always define AMTAR for backward compatibility. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + -AMTAR=${AMTAR-"${am_missing_run}tar"} +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' -am__tar='${AMTAR} chof - "$$tardir"'; am__untar='${AMTAR} xf -' +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi # Check whether --enable-silent-rules was given. if test "${enable_silent_rules+set}" = set; then : enableval=$enable_silent_rules; fi -case $enable_silent_rules in -yes) AM_DEFAULT_VERBOSITY=0;; -no) AM_DEFAULT_VERBOSITY=1;; -*) AM_DEFAULT_VERBOSITY=0;; +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=0;; esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi AM_BACKSLASH='\' @@ -3166,7 +3299,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CXX="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3210,7 +3343,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CXX="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3663,7 +3796,7 @@ _am_result=none # First try GNU make style include. echo "include confinc" > confmf -# Ignore all kinds of additional output from `make'. +# Ignore all kinds of additional output from 'make'. case `$am_make -s -f confmf 2> /dev/null` in #( *the\ am__doit\ target*) am__include=include @@ -3696,6 +3829,7 @@ if test "x$enable_dependency_tracking" != xno; then am_depcomp="$ac_aux_dir/depcomp" AMDEPBACKSLASH='\' + am__nodep='_no' fi if test "x$enable_dependency_tracking" != xno; then AMDEP_TRUE= @@ -3718,8 +3852,9 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -3753,16 +3888,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -3771,16 +3906,16 @@ test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -3852,7 +3987,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_AWK="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3898,7 +4033,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3938,7 +4073,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="gcc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -3991,7 +4126,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="${ac_tool_prefix}cc" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4032,7 +4167,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then if test "$as_dir/$ac_word$ac_exec_ext" = "/usr/ucb/cc"; then ac_prog_rejected=yes continue @@ -4090,7 +4225,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_CC="$ac_tool_prefix$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4134,7 +4269,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4330,8 +4465,7 @@ /* end confdefs.h. */ #include #include -#include -#include +struct stat; /* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ struct buf { int x; }; FILE * (*rcsopen) (struct buf *, struct stat *, int); @@ -4416,6 +4550,65 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' ac_compiler_gnu=$ac_cv_c_compiler_gnu +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + depcc="$CC" am_compiler_list= { $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 @@ -4427,8 +4620,9 @@ # We make a subdir and do the tests there. Otherwise we can end up # making bogus files that we don't know about and never remove. For # instance it was reported that on HP-UX the gcc test will end up - # making a dummy file named `D' -- because `-MD' means `put the output - # in D'. + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir mkdir conftest.dir # Copy depcomp to subdir because otherwise we won't find it if we're # using a relative directory. @@ -4462,16 +4656,16 @@ : > sub/conftest.c for i in 1 2 3 4 5 6; do echo '#include "conftst'$i'.h"' >> sub/conftest.c - # Using `: > sub/conftst$i.h' creates only sub/conftst1.h with - # Solaris 8's {/usr,}/bin/sh. - touch sub/conftst$i.h + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h done echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf - # We check with `-c' and `-o' for the sake of the "dashmstdout" + # We check with '-c' and '-o' for the sake of the "dashmstdout" # mode. It turns out that the SunPro C++ compiler does not properly - # handle `-M -o', and we need to detect this. Also, some Intel - # versions had trouble with output in subdirs + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. am__obj=sub/conftest.${OBJEXT-o} am__minus_obj="-o $am__obj" case $depmode in @@ -4480,16 +4674,16 @@ test "$am__universal" = false || continue ;; nosideeffect) - # after this tag, mechanisms are not by side-effect, so they'll - # only be used when explicitly requested + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. if test "x$enable_dependency_tracking" = xyes; then continue else break fi ;; - msvisualcpp | msvcmsys) - # This compiler won't grok `-c -o', but also, the minuso test has + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has # not run yet. These depmodes are late enough in the game, and # so weak that their functioning should not be impacted. am__obj=conftest.${OBJEXT-o} @@ -4740,7 +4934,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_RANLIB="${ac_tool_prefix}ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4780,7 +4974,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ac_ct_RANLIB="ranlib" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -4816,131 +5010,6 @@ fi -if test "x$CC" != xcc; then - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC and cc understand -c and -o together" >&5 -$as_echo_n "checking whether $CC and cc understand -c and -o together... " >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether cc understands -c and -o together" >&5 -$as_echo_n "checking whether cc understands -c and -o together... " >&6; } -fi -set dummy $CC; ac_cc=`$as_echo "$2" | - sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -if eval \${ac_cv_prog_cc_${ac_cc}_c_o+:} false; then : - $as_echo_n "(cached) " >&6 -else - cat confdefs.h - <<_ACEOF >conftest.$ac_ext -/* end confdefs.h. */ - -int -main () -{ - - ; - return 0; -} -_ACEOF -# Make sure it works both with $CC and with simple cc. -# We do the test twice because some compilers refuse to overwrite an -# existing .o file with -o, though they will create one. -ac_try='$CC -c conftest.$ac_ext -o conftest2.$ac_objext >&5' -rm -f conftest2.* -if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; -then - eval ac_cv_prog_cc_${ac_cc}_c_o=yes - if test "x$CC" != xcc; then - # Test first that cc exists at all. - if { ac_try='cc -c conftest.$ac_ext >&5' - { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; }; then - ac_try='cc -c conftest.$ac_ext -o conftest2.$ac_objext >&5' - rm -f conftest2.* - if { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } && - test -f conftest2.$ac_objext && { { case "(($ac_try" in - *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; - *) ac_try_echo=$ac_try;; -esac -eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" -$as_echo "$ac_try_echo"; } >&5 - (eval "$ac_try") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; }; - then - # cc works too. - : - else - # cc exists but doesn't like -o. - eval ac_cv_prog_cc_${ac_cc}_c_o=no - fi - fi - fi -else - eval ac_cv_prog_cc_${ac_cc}_c_o=no -fi -rm -f core conftest* - -fi -if eval test \$ac_cv_prog_cc_${ac_cc}_c_o = yes; then - { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 -$as_echo "yes" >&6; } -else - { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 -$as_echo "no" >&6; } - -$as_echo "#define NO_MINUS_C_MINUS_O 1" >>confdefs.h - -fi - -# FIXME: we rely on the cache variable name because -# there is no other way. -set dummy $CC -am_cc=`echo $2 | sed 's/[^a-zA-Z0-9_]/_/g;s/^[0-9]/_/'` -eval am_t=\$ac_cv_prog_cc_${am_cc}_c_o -if test "$am_t" != yes; then - # Losing compiler, so override with the script. - # FIXME: It is wrong to rewrite CC. - # But if we don't then we get into trouble of one sort or another. - # A longer-term fix would be to have automake use am__CC in this case, - # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" - CC="$am_aux_dir/compile $CC" -fi - @@ -4969,7 +5038,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5012,7 +5081,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_path_ac_pt_PKG_CONFIG="$as_dir/$ac_word$ac_exec_ext" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5063,6 +5132,7 @@ fi fi + # # check host environment # @@ -5326,7 +5396,7 @@ # { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether to build the client" >&5 $as_echo_n "checking whether to build the client... " >&6; } -if test "x${cond_build_unix}" = xyes ; then +if test -z "$BUILD_UNIX_TRUE"; then : # Check whether --enable-client was given. if test "${enable_client+set}" = set; then : @@ -5356,7 +5426,7 @@ # from SVN regularly. Affects how Makefile sets DATADIR and does make-install. # for now, win32/mingw is always alternate install # -if test "x${cond_build_win32}" = xyes ; then +if test -z "$BUILD_WIN32_TRUE"; then : alternate_install=yes else @@ -5383,7 +5453,7 @@ fi -if test "x${cond_build_unix}" = xyes ; then +if test -z "$BUILD_UNIX_TRUE"; then : $as_echo "#define UNIX_VARIANT 1" >>confdefs.h @@ -5427,7 +5497,7 @@ fi -if test "x${cond_build_win32}" = xyes ; then +if test -z "$BUILD_WIN32_TRUE"; then : $as_echo "#define WIN32_VARIANT 1" >>confdefs.h @@ -5462,18 +5532,19 @@ # -# Option for installation of documents to allow for custom -# documentation installation. So, do not include this in -# the status message. +# Option for disabling installation of documents to allow for custom +# documentation installation. Normally only useful for distro packagers. +# Do not put in status message, because documents probably are being +# installed in a custom way. # # Check whether --enable-documents was given. if test "${enable_documents+set}" = set; then : - enableval=$enable_documents; no_docs=${enableval} + enableval=$enable_documents; no_docs=${documents} else no_docs=no fi - if test "x$no_docs" = "xno" ; then + if test "x${no_docs}" = "xno" ; then INSTALL_DOCS_TRUE= INSTALL_DOCS_FALSE='#' else @@ -5497,6 +5568,36 @@ # +# User writable data and configuration subdirectory in $HOME +# normally this is a hidden subdirectory +# default is .codered. but distros modify this +# can be overridden by environment variable, COR_GAME +# +# (These also are #defined in qcommon.h, but changing them is not a good idea +# BASE_GAMEDATA "data1", GAME_GAMEDATA "arena", BOT_GAMEDATA "botinfo") +# +# AC_ARG_VAR creates ALIENARENA_HOMEDIR entry for ./configure --help +# AC_DEFINE_UNQUOTED adds the setting to config.h, +# overriding the define in qcommon.h +# and +# using the default, if not specified in the commandline +# (Note: could also be specified in enviroment. That is not recommended +# but is the reason for the package specific variable name.) +# +alienarena_homedir=".codered" + +if test "x${ALIENARENA_HOMEDIR}" = "x" ; then : + ALIENARENA_HOMEDIR=${alienarena_homedir} +else + alienarena_homedir=${ALIENARENA_HOMEDIR} +fi + +cat >>confdefs.h <<_ACEOF +#define USER_GAMEDATA "${alienarena_homedir}" +_ACEOF + + +# # Checks for libraries. # { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing acos" >&5 @@ -5668,8 +5769,7 @@ fi - -if test "x${build_client}" = xyes ; then +if test -z "$BUILD_CLIENT_TRUE"; then : @@ -5761,8 +5861,8 @@ # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) -case "${host_cpu}-${host_os}" in - *solaris*) +case ${host_os} in + solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based @@ -5775,7 +5875,7 @@ ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; - *-darwin*) + darwin*) ax_pthread_flags="-pthread $ax_pthread_flags" ;; esac @@ -5812,7 +5912,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_ax_pthread_config="yes" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -5940,9 +6040,16 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: checking if more special flags are required for pthreads" >&5 $as_echo_n "checking if more special flags are required for pthreads... " >&6; } flag=no - case "${host_cpu}-${host_os}" in - *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; - *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + case ${host_os} in + aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; + osf* | hpux*) flag="-D_REENTRANT";; + solaris*) + if test "$GCC" = "yes"; then + flag="-D_REENTRANT" + else + flag="-mt -D_REENTRANT" + fi + ;; esac { $as_echo "$as_me:${as_lineno-$LINENO}: result: ${flag}" >&5 $as_echo "${flag}" >&6; } @@ -6008,7 +6115,7 @@ IFS=$as_save_IFS test -z "$as_dir" && as_dir=. for ac_exec_ext in '' $ac_executable_extensions; do - if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then ac_cv_prog_PTHREAD_CC="$ac_prog" $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 break 2 @@ -6068,7 +6175,118 @@ PTHREAD_LIBS="-pthread" fi - { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing jpeg_read_header" >&5 + +# Check whether --with-zlib was given. +if test "${with_zlib+set}" = set; then : + withval=$with_zlib; +else + with_zlib=check +fi + + have_zlib=no + if test "x$with_zlib" != "xno" ; then : + + +pkg_failed=no +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ZLIB" >&5 +$as_echo_n "checking for ZLIB... " >&6; } + +if test -n "$ZLIB_CFLAGS"; then + pkg_cv_ZLIB_CFLAGS="$ZLIB_CFLAGS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_CFLAGS=`$PKG_CONFIG --cflags "zlib" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi +if test -n "$ZLIB_LIBS"; then + pkg_cv_ZLIB_LIBS="$ZLIB_LIBS" + elif test -n "$PKG_CONFIG"; then + if test -n "$PKG_CONFIG" && \ + { { $as_echo "$as_me:${as_lineno-$LINENO}: \$PKG_CONFIG --exists --print-errors \"zlib\""; } >&5 + ($PKG_CONFIG --exists --print-errors "zlib") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then + pkg_cv_ZLIB_LIBS=`$PKG_CONFIG --libs "zlib" 2>/dev/null` + test "x$?" != "x0" && pkg_failed=yes +else + pkg_failed=yes +fi + else + pkg_failed=untried +fi + + + +if test $pkg_failed = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + +if $PKG_CONFIG --atleast-pkgconfig-version 0.20; then + _pkg_short_errors_supported=yes +else + _pkg_short_errors_supported=no +fi + if test $_pkg_short_errors_supported = yes; then + ZLIB_PKG_ERRORS=`$PKG_CONFIG --short-errors --print-errors --cflags --libs "zlib" 2>&1` + else + ZLIB_PKG_ERRORS=`$PKG_CONFIG --print-errors --cflags --libs "zlib" 2>&1` + fi + # Put the nasty error message in config.log where it belongs + echo "$ZLIB_PKG_ERRORS" >&5 + + + have_zlib=no + if test "x$with_zlib" = "xyes" ; then : + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-zlib specified, but the library or headers could not be found +See \`config.log' for more details" "$LINENO" 5; } + +fi + +elif test $pkg_failed = untried; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + + have_zlib=no + if test "x$with_zlib" = "xyes" ; then : + + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "--with-zlib specified, but the library or headers could not be found +See \`config.log' for more details" "$LINENO" 5; } + +fi + +else + ZLIB_CFLAGS=$pkg_cv_ZLIB_CFLAGS + ZLIB_LIBS=$pkg_cv_ZLIB_LIBS + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + + have_zlib=yes + +$as_echo "#define HAVE_ZLIB 1" >>confdefs.h + + +fi + +fi + + + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for library containing jpeg_read_header" >&5 $as_echo_n "checking for library containing jpeg_read_header... " >&6; } if ${ac_cv_search_jpeg_read_header+:} false; then : $as_echo_n "(cached) " >&6 @@ -6127,7 +6345,8 @@ fi - if test "x${cond_build_unix}" = xyes ; then + + if test -z "$BUILD_UNIX_TRUE"; then : pkg_failed=no @@ -6336,7 +6555,7 @@ if test "${with_xf86dga+set}" = set; then : withval=$with_xf86dga; else - with_xf86dga=check + with_xf86dga=no fi have_Xxf86dga=no @@ -6655,7 +6874,7 @@ fi win32_syslibs="" - if test "x${cond_build_win32}" = xyes ; then + if test -z "$BUILD_WIN32_TRUE"; then : win32_syslibs="-lmingw32 -lwinmm -lwsock32 -lws2_32 -lgdi32 -luser32" fi WIN32_LIBS=$win32_syslibs @@ -6678,6 +6897,7 @@ # # Checks for header files # + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 $as_echo_n "checking for grep that handles long lines and -e... " >&6; } if ${ac_cv_path_GREP+:} false; then : @@ -6694,7 +6914,7 @@ for ac_prog in grep ggrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_GREP" && $as_test_x "$ac_path_GREP"; } || continue + as_fn_executable_p "$ac_path_GREP" || continue # Check for GNU ac_path_GREP and select it if it is found. # Check for GNU $ac_path_GREP case `"$ac_path_GREP" --version 2>&1` in @@ -6760,7 +6980,7 @@ for ac_prog in egrep; do for ac_exec_ext in '' $ac_executable_extensions; do ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" - { test -f "$ac_path_EGREP" && $as_test_x "$ac_path_EGREP"; } || continue + as_fn_executable_p "$ac_path_EGREP" || continue # Check for GNU ac_path_EGREP and select it if it is found. # Check for GNU $ac_path_EGREP case `"$ac_path_EGREP" --version 2>&1` in @@ -6937,7 +7157,7 @@ done -for ac_header in inttypes.h stdint.h stddef.h stdlib.h unistd.h float.h limits.h +for ac_header in inttypes.h stdint.h stddef.h stdlib.h unistd.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -6950,7 +7170,23 @@ done + +for ac_header in float.h limits.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + for ac_header in arpa/inet.h netinet/in.h sys/ioctl.h sys/socket.h netdb.h termios.h sys/select.h + do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -6963,7 +7199,9 @@ done + for ac_header in dlfcn.h fcntl.h malloc.h string.h sys/param.h sys/stat.h + do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -6976,7 +7214,9 @@ done + for ac_header in time.h sys/time.h + do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` ac_fn_c_check_header_mongrel "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default" @@ -6989,6 +7229,7 @@ done + for ac_header in windows.h winsock.h winsock2.h do : as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -7003,7 +7244,7 @@ done -if test "x${build_client}" = xyes ; then +if test -z "$BUILD_CLIENT_TRUE"; then : jpeglib_h_found=no @@ -7074,7 +7315,7 @@ done - if test "x${cond_build_unix}" = xyes ; then + if test -z "$BUILD_UNIX_TRUE"; then : for ac_header in GL/glx.h do : ac_fn_c_check_header_mongrel "$LINENO" "GL/glx.h" "ac_cv_header_GL_glx_h" "$ac_includes_default" @@ -7106,60 +7347,60 @@ cat confdefs.h - <<_ACEOF >conftest.$ac_ext /* end confdefs.h. */ -#include -#ifndef bool - "error: bool is not defined" -#endif -#ifndef false - "error: false is not defined" -#endif -#if false - "error: false is not 0" -#endif -#ifndef true - "error: true is not defined" -#endif -#if true != 1 - "error: true is not 1" -#endif -#ifndef __bool_true_false_are_defined - "error: __bool_true_false_are_defined is not defined" -#endif - - struct s { _Bool s: 1; _Bool t; } s; - - char a[true == 1 ? 1 : -1]; - char b[false == 0 ? 1 : -1]; - char c[__bool_true_false_are_defined == 1 ? 1 : -1]; - char d[(bool) 0.5 == true ? 1 : -1]; - /* See body of main program for 'e'. */ - char f[(_Bool) 0.0 == false ? 1 : -1]; - char g[true]; - char h[sizeof (_Bool)]; - char i[sizeof s.t]; - enum { j = false, k = true, l = false * true, m = true * 256 }; - /* The following fails for - HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ - _Bool n[m]; - char o[sizeof n == m * sizeof n[0] ? 1 : -1]; - char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; - /* Catch a bug in an HP-UX C compiler. See - http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html - http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html - */ - _Bool q = true; - _Bool *pq = &q; + #include + #ifndef bool + "error: bool is not defined" + #endif + #ifndef false + "error: false is not defined" + #endif + #if false + "error: false is not 0" + #endif + #ifndef true + "error: true is not defined" + #endif + #if true != 1 + "error: true is not 1" + #endif + #ifndef __bool_true_false_are_defined + "error: __bool_true_false_are_defined is not defined" + #endif + + struct s { _Bool s: 1; _Bool t; } s; + + char a[true == 1 ? 1 : -1]; + char b[false == 0 ? 1 : -1]; + char c[__bool_true_false_are_defined == 1 ? 1 : -1]; + char d[(bool) 0.5 == true ? 1 : -1]; + /* See body of main program for 'e'. */ + char f[(_Bool) 0.0 == false ? 1 : -1]; + char g[true]; + char h[sizeof (_Bool)]; + char i[sizeof s.t]; + enum { j = false, k = true, l = false * true, m = true * 256 }; + /* The following fails for + HP aC++/ANSI C B3910B A.05.55 [Dec 04 2003]. */ + _Bool n[m]; + char o[sizeof n == m * sizeof n[0] ? 1 : -1]; + char p[-1 - (_Bool) 0 < 0 && -1 - (bool) 0 < 0 ? 1 : -1]; + /* Catch a bug in an HP-UX C compiler. See + http://gcc.gnu.org/ml/gcc-patches/2003-12/msg02303.html + http://lists.gnu.org/archive/html/bug-coreutils/2005-11/msg00161.html + */ + _Bool q = true; + _Bool *pq = &q; int main () { - bool e = &s; - *pq |= q; - *pq |= ! q; - /* Refer to every declared value, to avoid compiler optimizations. */ - return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l - + !m + !n + !o + !p + !q + !pq); + bool e = &s; + *pq |= q; + *pq |= ! q; + /* Refer to every declared value, to avoid compiler optimizations. */ + return (!a + !b + !c + !d + !e + !f + !g + !h + !i + !!j + !k + !!l + + !m + !n + !o + !p + !q + !pq); ; return 0; @@ -7174,7 +7415,7 @@ fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdbool_h" >&5 $as_echo "$ac_cv_header_stdbool_h" >&6; } -ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" + ac_fn_c_check_type "$LINENO" "_Bool" "ac_cv_type__Bool" "$ac_includes_default" if test "x$ac_cv_type__Bool" = xyes; then : cat >>confdefs.h <<_ACEOF @@ -7184,6 +7425,7 @@ fi + if test $ac_cv_header_stdbool_h = yes; then $as_echo "#define HAVE_STDBOOL_H 1" >>confdefs.h @@ -7520,23 +7762,20 @@ /* end confdefs.h. */ $ac_includes_default int -find_stack_direction () +find_stack_direction (int *addr, int depth) { - static char *addr = 0; - auto char dummy; - if (addr == 0) - { - addr = &dummy; - return find_stack_direction (); - } - else - return (&dummy > addr) ? 1 : -1; + int dir, dummy = 0; + if (! addr) + addr = &dummy; + *addr = addr < &dummy ? 1 : addr == &dummy ? 0 : -1; + dir = depth ? find_stack_direction (addr, depth - 1) : 0; + return dir + dummy; } int -main () +main (int argc, char **argv) { - return find_stack_direction () < 0; + return find_stack_direction (0, argc + !argv + 20) < 0; } _ACEOF if ac_fn_c_try_run "$LINENO"; then : @@ -8066,7 +8305,7 @@ done -if test "x${cond_build_unix}" = xyes ; then +if test -z "$BUILD_UNIX_TRUE"; then : case ${unix_host} in #( darwin ) : if test x"${gl_dlopen_path}" = xdefault ; then : @@ -8101,7 +8340,7 @@ fi -if test "x${cond_build_win32}" = xyes ; then +if test -z "$BUILD_WIN32_TRUE"; then : $as_echo "#define OPENGL_DRIVER \"opengl32\"" >>confdefs.h @@ -8207,251 +8446,6 @@ fi - -######################################################################################################### -# DEBUGGING OPTIONS -######################################################################################################### - -debug=no - -# Debugging support + symbols removal -# Note: removing symbols applies to alternate install only -# use 'make install-strip', or custom CFLAGS for standard install -# Check whether --enable-debugging-symbols was given. -if test "${enable_debugging_symbols+set}" = set; then : - enableval=$enable_debugging_symbols; debug_syms=${enableval} -else - debug_syms=no -fi - -if test "x$debug_syms" = "xyes" ; then : - - if ${CFLAGS+:} false; then : - case " $CFLAGS " in - *" -g3 "*) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains -g3"; } >&5 - (: CFLAGS already contains -g3) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; - *) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS -g3\""; } >&5 - (: CFLAGS="$CFLAGS -g3") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - CFLAGS="$CFLAGS -g3" - ;; - esac -else - CFLAGS="-g3" -fi - - if ${CXXFLAGS+:} false; then : - case " $CXXFLAGS " in - *" -g3 "*) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS already contains -g3"; } >&5 - (: CXXFLAGS already contains -g3) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; - *) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS -g3\""; } >&5 - (: CXXFLAGS="$CXXFLAGS -g3") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - CXXFLAGS="$CXXFLAGS -g3" - ;; - esac -else - CXXFLAGS="-g3" -fi - - debug=yes - -fi - if test "x$debug_syms" = "xno" ; then - REMOVE_SYMBOLS_TRUE= - REMOVE_SYMBOLS_FALSE='#' -else - REMOVE_SYMBOLS_TRUE='#' - REMOVE_SYMBOLS_FALSE= -fi - - -# Compiler warnings -# Check whether --enable-full-warnings was given. -if test "${enable_full_warnings+set}" = set; then : - enableval=$enable_full_warnings; gcc_whining=${enableval} -else - gcc_whining=no -fi - -if test "x$gcc_whining" = "xyes" ; then : - - if ${CFLAGS+:} false; then : - case " $CFLAGS " in - *" -Wall "*) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS already contains -Wall"; } >&5 - (: CFLAGS already contains -Wall) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; - *) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CFLAGS=\"\$CFLAGS -Wall\""; } >&5 - (: CFLAGS="$CFLAGS -Wall") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - CFLAGS="$CFLAGS -Wall" - ;; - esac -else - CFLAGS="-Wall" -fi - - if ${CXXFLAGS+:} false; then : - case " $CXXFLAGS " in - *" -Wall "*) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS already contains -Wall"; } >&5 - (: CXXFLAGS already contains -Wall) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; - *) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CXXFLAGS=\"\$CXXFLAGS -Wall\""; } >&5 - (: CXXFLAGS="$CXXFLAGS -Wall") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - CXXFLAGS="$CXXFLAGS -Wall" - ;; - esac -else - CXXFLAGS="-Wall" -fi - - debug=yes - -fi - -# IRC client debugging -# Check whether --enable-irc-debugging was given. -if test "${enable_irc_debugging+set}" = set; then : - enableval=$enable_irc_debugging; irc_debug=${enableval} -else - irc_debug=no -fi - -if test "x$irc_debug" = "xyes" ; then : - - -$as_echo "#define DEBUG_DUMP_IRC 1" >>confdefs.h - - debug=yes - -fi - -# Buffer size debugging -# Check whether --enable-buffer-debugging was given. -if test "${enable_buffer_debugging+set}" = set; then : - enableval=$enable_buffer_debugging; buffer_debug=${enableval} -else - buffer_debug=no -fi - -if test "x$buffer_debug" = "xyes" ; then : - - -$as_echo "#define BUFFER_DEBUG 1" >>confdefs.h - - debug=yes - -fi - -# Paranoid message checking -# Check whether --enable-paranoid-io was given. -if test "${enable_paranoid_io+set}" = set; then : - enableval=$enable_paranoid_io; paranoid_io=${enableval} -else - paranoid_io=no -fi - -if test "x$paranoid_io" = "xyes" ; then : - - -$as_echo "#define PARANOID 1" >>confdefs.h - - debug=yes - -fi - -# Enable assert statements -# Check whether --enable-assert-statements was given. -if test "${enable_assert_statements+set}" = set; then : - enableval=$enable_assert_statements; assert_stmts=${enableval} -else - assert_stmts=no -fi - -if test "x$assert_stmts" = "xyes" ; then : - debug=yes -else - - if ${CPPFLAGS+:} false; then : - case " $CPPFLAGS " in - *" -DNDEBUG "*) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS already contains -DNDEBUG"; } >&5 - (: CPPFLAGS already contains -DNDEBUG) 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - ;; - *) - { { $as_echo "$as_me:${as_lineno-$LINENO}: : CPPFLAGS=\"\$CPPFLAGS -DNDEBUG\""; } >&5 - (: CPPFLAGS="$CPPFLAGS -DNDEBUG") 2>&5 - ac_status=$? - $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 - test $ac_status = 0; } - CPPFLAGS="$CPPFLAGS -DNDEBUG" - ;; - esac -else - CPPFLAGS="-DNDEBUG" -fi - - -fi - -# Enable ODE debug -# Check whether --enable-ode-debug was given. -if test "${enable_ode_debug+set}" = set; then : - enableval=$enable_ode_debug; ode_debug=${enableval} -else - ode_debug=no -fi - -if test "x$ode_debug" = "xyes" && test "x$use_system_libode" != "xyes" ; then : - debug=yes -fi - if test "x$ode_debug" != "xyes" ; then - ODE_NODEBUG_TRUE= - ODE_NODEBUG_FALSE='#' -else - ODE_NODEBUG_TRUE='#' - ODE_NODEBUG_FALSE= -fi - - -######################################################################################################### -# END OF DEBUGGING OPTIONS -######################################################################################################### - # outputs ac_config_files="$ac_config_files Makefile source/Makefile" @@ -8565,6 +8559,14 @@ LTLIBOBJS=$ac_ltlibobjs +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } if test -n "$EXEEXT"; then am__EXEEXT_TRUE= am__EXEEXT_FALSE='#' @@ -8613,14 +8615,6 @@ as_fn_error $? "conditional \"USE_SYSTEM_LIBODE\" was never defined. Usually this means the macro was only invoked conditionally." "$LINENO" 5 fi -if test -z "${REMOVE_SYMBOLS_TRUE}" && test -z "${REMOVE_SYMBOLS_FALSE}"; then - as_fn_error $? "conditional \"REMOVE_SYMBOLS\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi -if test -z "${ODE_NODEBUG_TRUE}" && test -z "${ODE_NODEBUG_FALSE}"; then - as_fn_error $? "conditional \"ODE_NODEBUG\" was never defined. -Usually this means the macro was only invoked conditionally." "$LINENO" 5 -fi : "${CONFIG_STATUS=./config.status}" ac_write_fail=0 @@ -8919,16 +8913,16 @@ # ... but there are two gotchas: # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. - # In both cases, we have to default to `cp -p'. + # In both cases, we have to default to `cp -pR'. ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || - as_ln_s='cp -p' + as_ln_s='cp -pR' elif ln conf$$.file conf$$ 2>/dev/null; then as_ln_s=ln else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi else - as_ln_s='cp -p' + as_ln_s='cp -pR' fi rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file rmdir conf$$.dir 2>/dev/null @@ -8988,28 +8982,16 @@ as_mkdir_p=false fi -if test -x / >/dev/null 2>&1; then - as_test_x='test -x' -else - if ls -dL / >/dev/null 2>&1; then - as_ls_L_option=L - else - as_ls_L_option= - fi - as_test_x=' - eval sh -c '\'' - if test -d "$1"; then - test -d "$1/."; - else - case $1 in #( - -*)set "./$1";; - esac; - case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in #(( - ???[sx]*):;;*)false;;esac;fi - '\'' sh - ' -fi -as_executable_p=$as_test_x + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p # Sed expression to map a string onto a valid CPP name. as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" @@ -9030,8 +9012,8 @@ # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by alienarena $as_me 7.53, which was -generated by GNU Autoconf 2.68. Invocation command line was +This file was extended by alienarena $as_me 7.66, which was +generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -9096,11 +9078,11 @@ cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -alienarena config.status 7.53 -configured by $0, generated by GNU Autoconf 2.68, +alienarena config.status 7.66 +configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" -Copyright (C) 2010 Free Software Foundation, Inc. +Copyright (C) 2012 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation gives unlimited permission to copy, distribute and modify it." @@ -9191,7 +9173,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 if \$ac_cs_recheck; then - set X '$SHELL' '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion shift \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 CONFIG_SHELL='$SHELL' @@ -9825,7 +9807,7 @@ case $ac_file$ac_mode in "depfiles":C) test x"$AMDEP_TRUE" != x"" || { - # Autoconf 2.62 quotes --file arguments for eval, but not when files + # Older Autoconf quotes --file arguments for eval, but not when files # are listed without --file. Let's play safe and only enable the eval # if we detect the quoting. case $CONFIG_FILES in @@ -9838,7 +9820,7 @@ # Strip MF so we end up with the name of the file. mf=`echo "$mf" | sed -e 's/:.*$//'` # Check whether this is an Automake generated Makefile or not. - # We used to match only the files named `Makefile.in', but + # We used to match only the files named 'Makefile.in', but # some people rename them; so instead we look at the file content. # Grep'ing the first line is not enough: some people post-process # each Makefile.in and add a new line on top of each file to say so. @@ -9872,21 +9854,19 @@ continue fi # Extract the definition of DEPDIR, am__include, and am__quote - # from the Makefile without running `make'. + # from the Makefile without running 'make'. DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` test -z "$DEPDIR" && continue am__include=`sed -n 's/^am__include = //p' < "$mf"` - test -z "am__include" && continue + test -z "$am__include" && continue am__quote=`sed -n 's/^am__quote = //p' < "$mf"` - # When using ansi2knr, U may be empty or an underscore; expand it - U=`sed -n 's/^U = //p' < "$mf"` # Find all dependency output files, they are included files with # $(DEPDIR) in their names. We invoke sed twice because it is the # simplest approach to changing $(DEPDIR) to its actual value in the # expansion. for file in `sed -n " s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ - sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g' -e 's/\$U/'"$U"'/g'`; do + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do # Make sure the directory exists. test -f "$dirpart/$file" && continue fdir=`$as_dirname -- "$file" || @@ -9968,13 +9948,13 @@ if test "x$hide_status" = "xno"; then : + $as_echo $as_echo "-------------------------------------------" $as_echo "Package: ${PACKAGE_NAME} Version: ${PACKAGE_VERSION}" $as_echo " OS: .................... ${host_os}" $as_echo " CPU: ................... ${host_cpu}" - if test "x${cond_build_win32}" = xyes ; then - : -else + if test -z "$BUILD_WIN32_TRUE"; then : + else if test "x$build_client" = "xyes" ; then : dedicated_only=no @@ -9983,44 +9963,65 @@ fi $as_echo " Dedicated Only: ........ ${dedicated_only}" $as_echo " Server terminal color: . ${ansi_color}" - $as_echo " System ODE library ..... ${system_ode}" fi - if test x"${unix_host}" = xdarwin ; then : + $as_echo " Alternate install: ..... ${alternate_install}" + + if test -z "$ALTERNATE_INSTALL_TRUE"; then : - $as_echo " GL_LIBDIR: ............. ${gl_dlopen_path}" + if test -z "$BUILD_CLIENT_TRUE"; then : + + $as_echo " System ODE library ..... ${system_ode}" + $as_echo " XF86 DGA support: ...... ${have_Xxf86dga}" + $as_echo " XF86 VidMode support: .. ${have_Xxf86vm}" + $as_echo " Zlib support: .......... ${have_zlib}" fi - $as_echo " XF86 DGA support: ...... ${have_Xxf86dga}" - $as_echo " XF86 VidMode support: .. ${have_Xxf86vm}" - $as_echo " Alternate install: ..... ${alternate_install}" + $as_echo " Shared Data ............ ${srcdir}" + $as_echo " note: with alternate install, data is located relative to CWD." + $as_echo " User Home R/W Data ..... ${alienarena_homedir}" - if test "x${alternate_install}" = xyes ; then - : else - $as_echo " Prefix: ................ '${prefix}'" -fi - if test "x$debug" = "xyes" ; then : + game_data=${datadir}/${PACKAGE_NAME} + game_data_a=`eval "echo ${game_data}"` + game_data=`eval "echo ${game_data_a}"` + if test -z "$BUILD_CLIENT_TRUE"; then : + + $as_echo " System ODE library ..... ${system_ode}" + $as_echo " XF86 DGA support: ...... ${have_Xxf86dga}" + $as_echo " XF86 VidMode support: .. ${have_Xxf86vm}" + $as_echo " Zlib support: .......... ${have_zlib}" + if test x"${unix_host}" = xdarwin ; then : - $as_echo "- DEBUGGING OPTIONS ------------------------" - $as_echo " All compiler warnings: .... ${gcc_whining}" - $as_echo " Debugging symbols: ........ ${debug_syms}" - $as_echo " IRC protocol dump: ........ ${irc_debug}" - $as_echo " Buffer debugging: ......... ${buffer_debug}" - $as_echo " Paranoid message checks: .. ${buffer_debug}" - $as_echo " Assert statements: ........ ${assert_stmts}" - $as_echo " ODE debug: ................ ${ode_debug}" + $as_echo " GL_LIBDIR: ............. ${gl_dlopen_path}" fi - if test "x${alternate_install}" = xyes ; then +fi + $as_echo " Prefix ................. ${prefix}" + $as_echo " Shared RO Data: ........ ${game_data}" + $as_echo " User Home R/W Data ..... ${alienarena_homedir}" + +fi + + $as_echo + + if test -z "$ALTERNATE_INSTALL_TRUE"; then : $as_echo "Run \"make\" to build, then \"make install-alternate\" to install." else $as_echo "Run \"make\" to build, then \"sudo make install\" to install." fi + $as_echo + $as_echo "Advanced Build Information:" + $as_echo " See README for information and recommendations." + $as_echo " Run ./configure --help for configure options." + $as_echo " Compiler options:" + $as_echo " CFLAGS:.... ${CFLAGS}" + $as_echo " CXXFLAGS:.. ${CXXFLAGS}" + $as_echo + $as_echo "--------------------------------------------" fi - diff -Nru alien-arena-7.53+dfsg/configure.ac alien-arena-7.66+dfsg/configure.ac --- alien-arena-7.53+dfsg/configure.ac 2011-12-27 05:05:14.000000000 +0000 +++ alien-arena-7.66+dfsg/configure.ac 2013-08-26 18:31:19.000000000 +0000 @@ -25,24 +25,29 @@ # Windows (32-bit) using MinGW - Experimental # Mac OS X / Darwin using X11 - Experimental -AC_PREREQ(2.65) -AC_INIT([alienarena],[7.53],[alienrace@comcast.net],[alienarena]) +AC_PREREQ([2.69]) +AC_INIT([alienarena],[7.66],[alienrace@comcast.net]) AC_CONFIG_SRCDIR([source/ref_gl/r_image.h]) AC_CONFIG_MACRO_DIR([m4]) AC_CONFIG_AUX_DIR([config]) AC_CONFIG_HEADERS([config/config.h]) -dnl 1.11 = require automake 1.11 or greater +dnl insure default prefix +AX_EXPAND_PREFIX + +dnl 1.14 = require automake 1.14 or greater dnl foreign = do not apply GNU doc requirements dnl subdir-objects = compile objects into their sub directories dnl silent-rules = less output (--disable-silent-rules for more output) dnl add dist-zip, dist-bzip2 for other distributions besides tar.gz -AM_INIT_AUTOMAKE([ 1.11 foreign subdir-objects silent-rules ]) +AM_INIT_AUTOMAKE([ 1.14 foreign subdir-objects silent-rules ]) AM_SILENT_RULES([yes]) -dnl use --enable-maintainer-mode to get full set of make targets -dnl debated issue, but this is better for non-developers updating from svn. +dnl use --enable-maintainer-mode to get full set of make targets. +dnl autotools generated files will not be updated otherwise. +dnl without --enable-maintainer-mode, autotools programs are not needed +dnl to build the program, which is better for non-developers. AM_MAINTAINER_MODE AC_CANONICAL_HOST @@ -62,6 +67,7 @@ AM_PROG_CC_C_O PKG_PROG_PKG_CONFIG + # # check host environment # @@ -192,16 +198,17 @@ [system_ode=no]) # -# Option for installation of documents to allow for custom -# documentation installation. So, do not include this in -# the status message. +# Option for disabling installation of documents to allow for custom +# documentation installation. Normally only useful for distro packagers. +# Do not put in status message, because documents probably are being +# installed in a custom way. # AC_ARG_ENABLE([documents], [AS_HELP_STRING([--disable-documents], [Disable document installation (default: no)])], - [no_docs=${enableval}], + [no_docs=${documents}], [no_docs=no]) -AM_CONDITIONAL([INSTALL_DOCS],[ test "x$no_docs" = "xno" ]) +AM_CONDITIONAL([INSTALL_DOCS],[ test "x${no_docs}" = "xno" ]) # # Option for specifying where icon is installed. @@ -213,28 +220,79 @@ AC_SUBST([icondir], [${with_icondir}]) # +# User writable data and configuration subdirectory in $HOME +# normally this is a hidden subdirectory +# default is .codered. but distros modify this +# can be overridden by environment variable, COR_GAME +# +# (These also are #defined in qcommon.h, but changing them is not a good idea +# BASE_GAMEDATA "data1", GAME_GAMEDATA "arena", BOT_GAMEDATA "botinfo") +# +# AC_ARG_VAR creates ALIENARENA_HOMEDIR entry for ./configure --help +# AC_DEFINE_UNQUOTED adds the setting to config.h, +# overriding the define in qcommon.h +# and +# using the default, if not specified in the commandline +# (Note: could also be specified in enviroment. That is not recommended +# but is the reason for the package specific variable name.) +# +alienarena_homedir=".codered" +AC_ARG_VAR([ALIENARENA_HOMEDIR],[User data and cfg subdirectory in $HOME]) +AS_IF([ test "x${ALIENARENA_HOMEDIR}" = "x" ], + [ALIENARENA_HOMEDIR=${alienarena_homedir}], + [alienarena_homedir=${ALIENARENA_HOMEDIR}]) +AC_DEFINE_UNQUOTED([USER_GAMEDATA],["${alienarena_homedir}"], + [User data and cfg subdirectory in $HOME]) + +# # Checks for libraries. # AC_SEARCH_LIBS([acos],[m]) AC_SEARCH_LIBS([dlopen],[dl]) AC_SEARCH_LIBS([clock_gettime],[rt]) - dnl dnl start of client-only library requirements dnl AM_COND_IF([BUILD_CLIENT], [ - + AX_PTHREAD([],[AC_MSG_ERROR(["Required pthreads support not found."])]) # # This might be a workaround for DSO missing pthread library error # AS_IF([ test "x$PTHREAD_LIBS" = "x" ],[PTHREAD_LIBS="-pthread"]) + dnl + dnl zlib support + dnl + dnl If no option is specified, then check for the library and act accordingly. + dnl If "--without-zlib" is specified, do not check, and disable the library. + dnl If "--with-zlib" is specified, check and bail out if it cannot be found. + dnl + AC_ARG_WITH([zlib], + [AS_HELP_STRING([--with(out)-zlib],[include Zlib compression support (default: check)])], + [], + [with_zlib=check]) + have_zlib=no + AS_IF([ test "x$with_zlib" != "xno" ],[ + PKG_CHECK_MODULES([ZLIB],[zlib],[ + have_zlib=yes + AC_DEFINE([HAVE_ZLIB],1,[Enable ZLib support]) + ],[ + have_zlib=no + AS_IF([ test "x$with_zlib" = "xyes" ],[ + AC_MSG_FAILURE([--with-zlib specified, but the library or headers could not be found]) + ]) + ]) + ]) + + + dnl IJG libjpeg required AC_SEARCH_LIBS([jpeg_read_header],[jpeg],, [AC_MSG_ERROR(["Required jpeg library not found."])]) + AM_COND_IF([BUILD_UNIX], [ dnl @@ -244,6 +302,8 @@ dnl dnl XF86 VidMode extension + dnl Note: supports full-screen display. if it is not installed, the + dnl build will succeed but full-screen will not work. dnl dnl If no option is specified, then check for the library and act accordingly. dnl If "--without-xf86vm" is specified, do not check, and disable the library. @@ -268,15 +328,17 @@ dnl dnl XF86 DGA extension + dnl Note: this is changed to default to "without", + dnl so "--with-xf86dga" must be specified to use this library dnl - dnl If no option is specified, then check for the library and act accordingly. + dnl If no option is specified, disable the library. dnl If "--without-xf86dga" is specified, do not check, and disable the library. dnl If "--with-xf86dga" is specified, check and bail out if it cannot be found. dnl AC_ARG_WITH([xf86dga], - [AS_HELP_STRING([--with(out)-xf86dga],[include XF86 DGA support (default: check)])], + [AS_HELP_STRING([--with(out)-xf86dga],[include XF86 DGA support (default: without)])], [], - [with_xf86dga=check]) + [with_xf86dga=no]) have_Xxf86dga=no AS_IF([ test "x$with_xf86dga" != "xno" ],[ PKG_CHECK_MODULES([XXF86DGA],[xxf86dga],[ @@ -326,7 +388,7 @@ AM_COND_IF([BUILD_WIN32], [ win32_syslibs="-lmingw32 -lwinmm -lwsock32 -lws2_32 -lgdi32 -luser32"]) AC_SUBST([WIN32_LIBS],[$win32_syslibs]) - + ]) @@ -339,10 +401,27 @@ # # Checks for header files # -AC_CHECK_HEADERS([inttypes.h stdint.h stddef.h stdlib.h unistd.h float.h limits.h]) -AC_CHECK_HEADERS([arpa/inet.h netinet/in.h sys/ioctl.h sys/socket.h netdb.h termios.h sys/select.h]) -AC_CHECK_HEADERS([dlfcn.h fcntl.h malloc.h string.h sys/param.h sys/stat.h]) -AC_CHECK_HEADERS([time.h sys/time.h]) + +AC_CHECK_HEADERS( + [inttypes.h stdint.h stddef.h stdlib.h unistd.h], + [],[],[]) + +AC_CHECK_HEADERS( + [float.h limits.h], + [],[],[]) + +AC_CHECK_HEADERS( + [arpa/inet.h netinet/in.h sys/ioctl.h sys/socket.h netdb.h termios.h sys/select.h] + [],[],[]) + +AC_CHECK_HEADERS( + [dlfcn.h fcntl.h malloc.h string.h sys/param.h sys/stat.h] + [],[],[]) + +AC_CHECK_HEADERS( + [time.h sys/time.h] + [],[],[]) + AC_CHECK_HEADERS([windows.h winsock.h winsock2.h]) dnl @@ -366,7 +445,7 @@ [AC_MSG_ERROR("Required OpenAL header file not found.")]) AC_CHECK_HEADERS([GL/gl.h],, - [AC_MSG_ERROR("Required OpenGL header files not found.")]) + [AC_MSG_ERROR("Required OpenGL header files not found.")]) AM_COND_IF([BUILD_UNIX], [AC_CHECK_HEADERS([GL/glx.h],, [AC_MSG_ERROR("Required OpenGL header files not found.") @@ -474,86 +553,6 @@ AX_APPEND_FLAG([-fno-strict-aliasing],[CFLAGS]) AX_APPEND_FLAG([-fno-strict-aliasing],[CXXFLAGS]) - -######################################################################################################### -# DEBUGGING OPTIONS -######################################################################################################### - -debug=no - -# Debugging support + symbols removal -# Note: removing symbols applies to alternate install only -# use 'make install-strip', or custom CFLAGS for standard install -AC_ARG_ENABLE([debugging-symbols], - [AS_HELP_STRING([--enable-debugging-symbols],[Compile Alien Arena with full debugging information (default:no)])], - [debug_syms=${enableval}],[debug_syms=no]) -AS_IF([ test "x$debug_syms" = "xyes" ],[ - AX_APPEND_FLAG([-g3],[CFLAGS]) - AX_APPEND_FLAG([-g3],[CXXFLAGS]) - debug=yes -]) -AM_CONDITIONAL(REMOVE_SYMBOLS,[ test "x$debug_syms" = "xno" ]) - -# Compiler warnings -AC_ARG_ENABLE([full-warnings], - [AS_HELP_STRING([--enable-full-warnings],[Display all compiler warnings (default:no)])], - [gcc_whining=${enableval}],[gcc_whining=no]) -AS_IF([ test "x$gcc_whining" = "xyes" ],[ - AX_APPEND_FLAG([-Wall],[CFLAGS]) - AX_APPEND_FLAG([-Wall],[CXXFLAGS]) - debug=yes -]) - -# IRC client debugging -AC_ARG_ENABLE([irc-debugging], - [AS_HELP_STRING([--enable-irc-debugging],[Debug IRC messages (default: no)])], - [irc_debug=${enableval}],[irc_debug=no]) -AS_IF([ test "x$irc_debug" = "xyes" ],[ - AC_DEFINE([DEBUG_DUMP_IRC],1,[Enable IRC message debugging]) - debug=yes -]) - -# Buffer size debugging -AC_ARG_ENABLE([buffer-debugging], - [AS_HELP_STRING([--enable-buffer-debugging],[Debug buffers (default: no)])], - [buffer_debug=${enableval}],[buffer_debug=no]) -AS_IF([ test "x$buffer_debug" = "xyes" ],[ - AC_DEFINE([BUFFER_DEBUG],1,[Enable buffer debugging]) - debug=yes -]) - -# Paranoid message checking -AC_ARG_ENABLE([paranoid-io], - [AS_HELP_STRING([--enable-paranoid-io], - [Activate paranoid, speed-sapping message checking (default: no)]) - ],[paranoid_io=${enableval}],[paranoid_io=no]) -AS_IF([ test "x$paranoid_io" = "xyes" ],[ - AC_DEFINE([PARANOID],1,[Enable paranoid, speed-sapping message checking]) - debug=yes -]) - -# Enable assert statements -AC_ARG_ENABLE([assert-statements], - [AS_HELP_STRING([--enable-assert-statements], - [Enable debug assert() statements (default: no)]) - ],[assert_stmts=${enableval}],[assert_stmts=no]) -AS_IF([ test "x$assert_stmts" = "xyes" ], - [debug=yes],[ - AX_APPEND_FLAG([-DNDEBUG],[CPPFLAGS]) -]) - -# Enable ODE debug -AC_ARG_ENABLE([ode-debug], - [AS_HELP_STRING([--enable-ode-debug], - [Enable debug code and assertion statements in integrated ODE (default:no)]) - ],[ode_debug=${enableval}],[ode_debug=no]) -AS_IF([ test "x$ode_debug" = "xyes" && test "x$use_system_libode" != "xyes" ],[debug=yes]) -AM_CONDITIONAL([ODE_NODEBUG],[ test "x$ode_debug" != "xyes" ]) - -######################################################################################################### -# END OF DEBUGGING OPTIONS -######################################################################################################### - # outputs AC_CONFIG_FILES([ Makefile source/Makefile ]) @@ -565,6 +564,7 @@ [hide_status=${enableval}],[hide_status=no]) AS_IF([test "x$hide_status" = "xno"],[ + AS_ECHO() AS_ECHO(["-------------------------------------------"]) AS_ECHO(["Package: ${PACKAGE_NAME} Version: ${PACKAGE_VERSION}"]) AS_ECHO([" OS: .................... ${host_os}"]) @@ -573,33 +573,55 @@ AS_IF([ test "x$build_client" = "xyes" ],[dedicated_only=no],[dedicated_only=yes]) AS_ECHO([" Dedicated Only: ........ ${dedicated_only}"]) AS_ECHO([" Server terminal color: . ${ansi_color}"]) - AS_ECHO([" System ODE library ..... ${system_ode}"]) ]) - AS_IF([ test x"${unix_host}" = xdarwin ],[ - AS_ECHO([" GL_LIBDIR: ............. ${gl_dlopen_path}"]) - ]) - AS_ECHO([" XF86 DGA support: ...... ${have_Xxf86dga}"]) - AS_ECHO([" XF86 VidMode support: .. ${have_Xxf86vm}"]) AS_ECHO([" Alternate install: ..... ${alternate_install}"]) - AM_COND_IF([ALTERNATE_INSTALL],, - [AS_ECHO([" Prefix: ................ '${prefix}'"])]) - - AS_IF([ test "x$debug" = "xyes" ],[ - AS_ECHO(["- DEBUGGING OPTIONS ------------------------"]) - AS_ECHO([" All compiler warnings: .... ${gcc_whining}"]) - AS_ECHO([" Debugging symbols: ........ ${debug_syms}"]) - AS_ECHO([" IRC protocol dump: ........ ${irc_debug}"]) - AS_ECHO([" Buffer debugging: ......... ${buffer_debug}"]) - AS_ECHO([" Paranoid message checks: .. ${buffer_debug}"]) - AS_ECHO([" Assert statements: ........ ${assert_stmts}"]) - AS_ECHO([" ODE debug: ................ ${ode_debug}"]) + AM_COND_IF([ALTERNATE_INSTALL],[ + AM_COND_IF([BUILD_CLIENT],[ + AS_ECHO([" System ODE library ..... ${system_ode}"]) + AS_ECHO([" XF86 DGA support: ...... ${have_Xxf86dga}"]) + AS_ECHO([" XF86 VidMode support: .. ${have_Xxf86vm}"]) + AS_ECHO([" Zlib support: .......... ${have_zlib}"]) + ]) + AS_ECHO([" Shared Data ............ ${srcdir}"]) + AS_ECHO([" note: with alternate install, data is located relative to CWD."]) + AS_ECHO([" User Home R/W Data ..... ${alienarena_homedir}"]) + ],[ +dnl +dnl try to generate the full path for automake pkgdatadir +dnl which determines DATADIR that locates data1, arena, and botinfo +dnl + game_data=${datadir}/${PACKAGE_NAME} + game_data_a=`eval "echo ${game_data}"` + game_data=`eval "echo ${game_data_a}"` + AM_COND_IF([BUILD_CLIENT],[ + AS_ECHO([" System ODE library ..... ${system_ode}"]) + AS_ECHO([" XF86 DGA support: ...... ${have_Xxf86dga}"]) + AS_ECHO([" XF86 VidMode support: .. ${have_Xxf86vm}"]) + AS_ECHO([" Zlib support: .......... ${have_zlib}"]) + AS_IF([ test x"${unix_host}" = xdarwin ],[ + AS_ECHO([" GL_LIBDIR: ............. ${gl_dlopen_path}"]) + ]) + ]) + AS_ECHO([" Prefix ................. ${prefix}"]) + AS_ECHO([" Shared RO Data: ........ ${game_data}"]) + AS_ECHO([" User Home R/W Data ..... ${alienarena_homedir}"]) ]) + AS_ECHO() + AM_COND_IF([ALTERNATE_INSTALL], [AS_ECHO(["Run \"make\" to build, then \"make install-alternate\" to install."])], [AS_ECHO(["Run \"make\" to build, then \"sudo make install\" to install."])]) + + AS_ECHO() + AS_ECHO(["Advanced Build Information:"]) + AS_ECHO([" See README for information and recommendations."]) + AS_ECHO([" Run ./configure --help for configure options."]) + AS_ECHO([" Compiler options:"]) + AS_ECHO([" CFLAGS:.... ${CFLAGS}"]) + AS_ECHO([" CXXFLAGS:.. ${CXXFLAGS}"]) + AS_ECHO() AS_ECHO(["--------------------------------------------"]) ]) - diff -Nru alien-arena-7.53+dfsg/debian/alien-arena.install alien-arena-7.66+dfsg/debian/alien-arena.install --- alien-arena-7.53+dfsg/debian/alien-arena.install 2012-05-07 17:20:51.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/alien-arena.install 2014-03-29 05:04:40.000000000 +0000 @@ -1,4 +1,3 @@ -source/crx usr/lib/games/alien-arena +usr/bin/alienarena usr/lib/games/alien-arena debian/scripts/alien-arena usr/games -debian/alien-arena.desktop usr/share/applications debian/alien-arena.xpm usr/share/pixmaps diff -Nru alien-arena-7.53+dfsg/debian/alien-arena.menu alien-arena-7.66+dfsg/debian/alien-arena.menu --- alien-arena-7.53+dfsg/debian/alien-arena.menu 2012-05-07 17:20:51.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/alien-arena.menu 2014-03-29 05:27:16.000000000 +0000 @@ -1,2 +1,5 @@ -?package(alien-arena):needs="X11" section="Games/Action"\ - title="alien-arena" command="/usr/games/alien-arena --quiet" +?package(alien-arena):needs="X11" \ + section="Games/Action"\ + title="alien-arena" \ + icon="/usr/share/pixmaps/alien-arena.xpm" \ + command="/usr/games/alien-arena --quiet" diff -Nru alien-arena-7.53+dfsg/debian/alien-arena-server.install alien-arena-7.66+dfsg/debian/alien-arena-server.install --- alien-arena-7.53+dfsg/debian/alien-arena-server.install 2012-05-07 17:20:51.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/alien-arena-server.install 2014-03-29 05:05:05.000000000 +0000 @@ -1,4 +1,4 @@ -source/crx-ded usr/lib/games/alien-arena +usr/bin/alienarena-ded usr/lib/games/alien-arena Tools/LinuxScripts/launch-server usr/lib/games/alien-arena Tools/LinuxScripts/kill-runaway-crx-ded usr/lib/games/alien-arena Tools/LinuxScripts/rcon usr/lib/games/alien-arena diff -Nru alien-arena-7.53+dfsg/debian/changelog alien-arena-7.66+dfsg/debian/changelog --- alien-arena-7.53+dfsg/debian/changelog 2014-03-14 17:37:55.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/changelog 2014-03-29 07:03:55.000000000 +0000 @@ -1,8 +1,12 @@ -alien-arena (7.53+dfsg-3ubuntu1) trusty; urgency=low +alien-arena (7.66+dfsg-1) unstable; urgency=medium - * Use autotools-dev helper for newer arches, resolving FTBFS. + * New upstream release. + - Adds support for powerpc (closes: #446515). + * Game launching should be more reliable now (closes: #700705). + * Include alien-arena icon in menus (closes: #727024). + * Use dh-autoreconf (closes: #727843). - -- Daniel T Chen Fri, 14 Mar 2014 13:37:41 -0400 + -- Michael Gilbert Sat, 29 Mar 2014 03:17:16 +0000 alien-arena (7.53+dfsg-3) unstable; urgency=low diff -Nru alien-arena-7.53+dfsg/debian/compat alien-arena-7.66+dfsg/debian/compat --- alien-arena-7.53+dfsg/debian/compat 2012-05-07 17:20:51.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/compat 2014-03-29 03:23:21.000000000 +0000 @@ -1 +1 @@ -5 +9 diff -Nru alien-arena-7.53+dfsg/debian/control alien-arena-7.66+dfsg/debian/control --- alien-arena-7.53+dfsg/debian/control 2014-03-14 17:37:26.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/control 2014-03-29 05:24:09.000000000 +0000 @@ -1,60 +1,59 @@ Source: alien-arena Section: contrib/games Priority: extra -Maintainer: Ubuntu Developers -XSBC-Original-Maintainer: Debian Games Team +Maintainer: Debian Games Team Uploaders: Michael Gilbert , Barry deFreese Build-Depends: - debhelper (>= 8), - autotools-dev, + debhelper (>= 9), + dh-autoreconf, sharutils, - libglu1-mesa-dev | libglu-dev, - libgl1-mesa-dev | libgl-dev, + libglu1-mesa-dev, + libgl1-mesa-dev, libjpeg-dev, libpng-dev, - libxxf86vm-dev, libxxf86dga-dev, + libxxf86vm-dev, + libxxf86dga-dev, libxext-dev, libx11-dev, - libcurl4-gnutls-dev | libcurl3-gnutls-dev, + libcurl4-gnutls-dev, libopenal-dev, libvorbis-dev, - libfreetype6-dev -Standards-Version: 3.9.3 -DM-Upload-Allowed: yes + libfreetype6-dev, +Standards-Version: 3.9.5 Homepage: http://red.planetarena.org -Vcs-Svn: svn://svn.debian.org/svn/pkg-games/packages/trunk/alien-arena -Vcs-Browser: http://svn.debian.org/wsvn/pkg-games/packages/trunk/alien-arena/?op=log +Vcs-Svn: svn://anonscm.debian.org/pkg-games/packages/trunk/alien-arena +Vcs-Browser: http://anonscm.debian.org/viewvc/pkg-games/packages/trunk/alien-arena Package: alien-arena Architecture: any Depends: - ${shlibs:Depends}, ${misc:Depends}, + ${shlibs:Depends}, libopenal1, - alien-arena-data + alien-arena-data, Description: Standalone 3D first person online deathmatch shooter - ALIEN ARENA is a standalone 3D first person online deathmatch shooter - crafted from the original source code of Quake II and Quake III, released - by id Software under the GPL license. With features including 32 bit - graphics, new particle engine and effects, light blooms, reflective water, - hi resolution textures and skins, hi poly models, stain maps, ALIEN ARENA - pushes the envelope of graphical beauty rivaling today's top games. + ALIEN ARENA is a standalone 3D first person online death-match shooter crafted + from the original source code of Quake II and Quake III, released by id + Software under the GPL license. With features including 32-bit graphics, a new + particle engine and effects, light blooms, reflective water, hi-resolution + textures and skins, and hi-poly models and stain maps, ALIEN ARENA pushes the + envelope of graphical beauty rivaling today's top games. . This package installs the SDL client for Alien Arena. Package: alien-arena-server Architecture: any Depends: - ${shlibs:Depends}, ${misc:Depends}, + ${shlibs:Depends}, ruby, - alien-arena-data + alien-arena-data, Description: Dedicated server for Alien Arena - ALIEN ARENA is a standalone 3D first person online deathmatch shooter - crafted from the original source code of Quake II and Quake III, released - by id Software under the GPL license. With features including 32 bit - graphics, new particle engine and effects, light blooms, reflective water, - hi resolution textures and skins, hi poly models, stain maps, ALIEN ARENA - pushes the envelope of graphical beauty rivaling today's top games. + ALIEN ARENA is a standalone 3D first person online death-match shooter crafted + from the original source code of Quake II and Quake III, released by id + Software under the GPL license. With features including 32-bit graphics, a new + particle engine and effects, light blooms, reflective water, hi-resolution + textures and skins, and hi-poly models and stain maps, ALIEN ARENA pushes the + envelope of graphical beauty rivaling today's top games. . This package installs the dedicated server for Alien Arena. diff -Nru alien-arena-7.53+dfsg/debian/patches/makefile-modifications.patch alien-arena-7.66+dfsg/debian/patches/makefile-modifications.patch --- alien-arena-7.53+dfsg/debian/patches/makefile-modifications.patch 2012-05-07 17:20:51.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/patches/makefile-modifications.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -Description: skip data files since those are in the alien-arena-data package -Index: alien-arena/Makefile.in -=================================================================== ---- alien-arena.orig/Makefile.in 2011-03-13 15:10:18.000000000 -0400 -+++ alien-arena/Makefile.in 2011-03-13 15:15:59.000000000 -0400 -@@ -145,7 +145,7 @@ - sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' - am__installdirs = "$(DESTDIR)$(docdir)" "$(DESTDIR)$(icondir)" \ - "$(DESTDIR)$(pkgdatadir)" --DATA = $(dist_doc_DATA) $(dist_icon_DATA) $(nobase_dist_pkgdata_DATA) -+DATA = $(dist_doc_DATA) $(dist_icon_DATA) - RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ - distclean-recursive maintainer-clean-recursive - AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ -@@ -3896,7 +3896,7 @@ - info-am: - - install-data-am: install-data-local install-dist_docDATA \ -- install-dist_iconDATA install-nobase_dist_pkgdataDATA -+ install-dist_iconDATA - - install-dvi: install-dvi-recursive - diff -Nru alien-arena-7.53+dfsg/debian/patches/no-data.patch alien-arena-7.66+dfsg/debian/patches/no-data.patch --- alien-arena-7.53+dfsg/debian/patches/no-data.patch 1970-01-01 00:00:00.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/patches/no-data.patch 2014-03-29 05:25:46.000000000 +0000 @@ -0,0 +1,12 @@ +description: don't attempt to include data in the build process +author: Michael Gilbert + +--- a/Makefile.am ++++ b/Makefile.am +@@ -95,6 +95,3 @@ if ALTERNATE_INSTALL + @echo "Alternate install. Manual uninstall required!!!" + exit 1 + endif +- +- +-include game_data.am diff -Nru alien-arena-7.53+dfsg/debian/patches/series alien-arena-7.66+dfsg/debian/patches/series --- alien-arena-7.53+dfsg/debian/patches/series 2012-05-07 17:20:51.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/patches/series 2014-03-29 05:24:55.000000000 +0000 @@ -1,3 +1,4 @@ launch-server_tool_debianization.patch rcon_tool_debianization.patch -makefile-modifications.patch +#makefile-modifications.patch +no-data.patch diff -Nru alien-arena-7.53+dfsg/debian/rules alien-arena-7.66+dfsg/debian/rules --- alien-arena-7.53+dfsg/debian/rules 2014-03-14 17:37:39.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/rules 2014-03-29 07:05:55.000000000 +0000 @@ -1,3 +1,11 @@ #! /usr/bin/make -f + +export DH_VERBOSE=1 +export DEB_BUILD_MAINT_OPTIONS=hardening=-all + %: - dh ${@} --with autotools_dev + dh ${@} --with autoreconf + +override_dh_clean: + dh_clean -- aclocal.m4 config.log configure game_data.am Makefile.in + rm -rf config diff -Nru alien-arena-7.53+dfsg/debian/scripts/alien-arena alien-arena-7.66+dfsg/debian/scripts/alien-arena --- alien-arena-7.53+dfsg/debian/scripts/alien-arena 2012-05-07 17:20:51.000000000 +0000 +++ alien-arena-7.66+dfsg/debian/scripts/alien-arena 2014-03-29 05:07:44.000000000 +0000 @@ -26,9 +26,9 @@ # Ready to rumble! export COR_GAME="$HOME/.config/alien-arena" mkdir -p $COR_GAME -ln -s /usr/share/games/alien-arena/data1 $COR_GAME +test -e $COR_GAME/data1 || ln -sf /usr/share/games/alien-arena/data1 $COR_GAME if [ ${QUIET} = 1 ]; then - exec /usr/lib/games/alien-arena/crx "$@" >/dev/null 2>&1 + exec /usr/lib/games/alien-arena/alienarena "$@" >/dev/null 2>&1 else - exec /usr/lib/games/alien-arena/crx "$@" + exec /usr/lib/games/alien-arena/alienarena "$@" fi diff -Nru alien-arena-7.53+dfsg/docs/license.txt alien-arena-7.66+dfsg/docs/license.txt --- alien-arena-7.53+dfsg/docs/license.txt 2011-07-31 23:26:15.000000000 +0000 +++ alien-arena-7.66+dfsg/docs/license.txt 2013-06-22 20:05:22.000000000 +0000 @@ -2,7 +2,7 @@ The source code of Alien Arena 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. -It is only permissible to distrubute the game data(models, maps, textures, sound, etc) as a whole, and with the intention of being used with Alien Arena. It is not permissible to distribute individual portions or items of the game data without express consent from COR Entertainment. +Permission is granted to freely distribute (without restriction) the game data(models, maps, textures, sound, etc) as a whole, and with the intention of being used with Alien Arena. However, it is not permissible to distribute, sell, or use for profit individual portions or items of the game data without express consent from COR Entertainment. 'rcon' and 'svstat' ruby scripts are Copyright (C) 2009 Tony Jackson and Licensed under the GNU Lesser General Public License @@ -11,7 +11,7 @@ Alien Arena, as part of its source code, incorporates an SHA-2 implementation which is copyright (C) 2005, 2007 Oliver Gay, and is licensed under the three-clause BSD license. The license for this code may be found in sha2_license.txt. -Under no circumstances ALIEN ARENA as a whole be sold or used for profit, without express consent from COR Entertainment. ALIEN ARENA may be included in free compilation CD's and similar packages without consent, provided it adheres to the above restrictions. +ALIEN ARENA may be included in free compilation CD's and similar packages without consent, provided it adheres to the above restrictions. You, the end user, by installing this software agree to these terms. diff -Nru alien-arena-7.53+dfsg/docs/README.txt alien-arena-7.66+dfsg/docs/README.txt --- alien-arena-7.53+dfsg/docs/README.txt 2011-12-23 18:04:41.000000000 +0000 +++ alien-arena-7.66+dfsg/docs/README.txt 2013-06-22 20:05:22.000000000 +0000 @@ -41,10 +41,10 @@ 2. SYSTEM REQUIREMENTS -1 GHz -256 MB RAM -500 MB hard disk space -3D Accelerator +1.8 GHz CPU +1.5 GiB RAM +1.2 GiB hard disk space +3D Accelerator with at least 128 MiB texture memory available 3. GETTING STARTED @@ -131,8 +131,8 @@ Design: John Diamond with input from the community at large. Programming: John Diamond, Jim Bower, Dave Stewart, Emmanuel Benoit, Max Eliaser, Charles Hudson, Lee Salzman, Victor Luchits, Shane Bayer, Jan Rafaj, Tony Jackson, Kyle Hunter, Andres Mejia -Models and skins: John Diamond, Alex Perez, Shawn Keeth -Maps: John Diamond, Dennis "xEMPx" Zedlach, Charles Hudson +Models and skins: John Diamond, Alex Perez, Shawn Keeth, Franc Cassar +Maps: John Diamond, Dennis "xEMPx" Zedlach, Charles Hudson, Torben Fahrnbach Textures and Artwork: John Diamond, Dennis "xEMPx" Zedlach, Enki, Adam Saizlai, Yves Allaire Sounds: John Diamond, Sound Rangers, Jon Ward, Jim Bower Music: Paul Joyce, Arteria Games, Divinity, Whitelipper, and SoundRangers @@ -154,14 +154,14 @@ The included TrueType fonts (FreeSans and FreeMono) are from the GNU FreeFont package (http://www.gnu.org/software/freefont/); they are free software distributed under the terms of the GNU General Public License version 3 (http://www.gnu.org/licenses/gpl.html). -It is only permissible to distribute the game data (models, maps, textures, sound, etc) as a whole, and with the intention of being used with Alien Arena. It is not permissible to distribute individual portions or items of the game data without express consent from COR Entertainment. +Permission is granted to freely distribute (without restriction) the game data(models, maps, textures, sound, etc) as a whole, and with the intention of being used with Alien Arena. However, it is not permissible to distribute, sell, or use for profit individual portions or items of the game data without express consent from COR Entertainment. 'rcon' and 'svstat' ruby scripts are Copyright (C) 2009 Tony Jackson and Licensed under the GNU Lesser General Public License The Debian packaging is (C) 2009, Andres Mejia and is licensed under the GPL, see `/usr/share/common-licenses/GPL'. -Under no circumstances ALIEN ARENA as a whole be sold or used for profit, without express consent from COR Entertainment. ALIEN ARENA may be included in free compilation CD's and similar packages without consent, provided it adheres to the above restrictions. +ALIEN ARENA may be included in free compilation CD's and similar packages without consent, provided it adheres to the above restrictions. Contact: http://red.planetarena.org diff -Nru alien-arena-7.53+dfsg/game_data.am alien-arena-7.66+dfsg/game_data.am --- alien-arena-7.53+dfsg/game_data.am 2011-12-07 00:44:15.000000000 +0000 +++ alien-arena-7.66+dfsg/game_data.am 2013-08-19 04:02:11.000000000 +0000 @@ -30,16 +30,21 @@ # Game data for distribution package # -dist_icon_DATA = alienarena.png +arenadir=$(pkgdatadir) -nobase_dist_pkgdata_DATA = \ +nobase_dist_arena_DATA = \ arena/motd.txt \ - arena/server.cfg \ + arena/server.cfg + +botinfodir = $(pkgdatadir) + +nobase_dist_botinfo_DATA = \ botinfo/^1Squirtney.cfg \ botinfo/^3Marty.cfg \ botinfo/^3Shploik!.cfg \ botinfo/^4Invad^6ur.cfg \ botinfo/^5Beavis.cfg \ + botinfo/^7Ruh^4Lur.cfg \ botinfo/^7The^1Zapp.cfg \ botinfo/Astral.cfg \ botinfo/Beavis.cfg \ @@ -70,37 +75,37 @@ botinfo/dm-annihilation.tmp \ botinfo/dm-atlantis2k8.tmp \ botinfo/dm-babel2k11.tmp \ - botinfo/dm-bloodfactory.tmp \ + botinfo/dm-bloodfactory2k12.tmp \ botinfo/dm-chasmatic2k9.tmp \ botinfo/dm-command2k9.tmp \ botinfo/dm-corrosion.tmp \ - botinfo/dm-crucible2k8.tmp \ + botinfo/dm-crucible2k12.tmp \ botinfo/dm-deathray.tmp \ botinfo/dm-deimos2k9.tmp \ botinfo/dm-dismal2k11.tmp \ botinfo/dm-downfall.tmp \ - botinfo/dm-dynamo2k8.tmp \ + botinfo/dm-dynamo2k12.tmp \ botinfo/dm-eternal.tmp \ - botinfo/dm-europa2k8.tmp \ + botinfo/dm-extermination.tmp \ botinfo/dm-furious2k8.tmp \ botinfo/dm-goregrinder.tmp \ botinfo/dm-horus.tmp \ botinfo/dm-impact.tmp \ botinfo/dm-invasion.tmp \ - botinfo/dm-leviathan2k8.tmp \ + botinfo/dm-leviathan2k12.tmp \ botinfo/dm-liberation.tmp \ botinfo/dm-neptune.tmp \ botinfo/dm-oblivion.tmp \ botinfo/dm-omega2k8.tmp \ botinfo/dm-purgatory.tmp \ botinfo/dm-saucer2k9.tmp \ - botinfo/dm-titan2k8.tmp \ botinfo/dm-turbo2k8.tmp \ botinfo/dm-vesuvius2k11.tmp \ botinfo/dm-violator2k11.tmp \ botinfo/dm-warmachine2k10.tmp \ botinfo/dm-zion2k9.tmp \ botinfo/dm-zorn2k11.tmp \ + botinfo/tac-extermination.tmp \ botinfo/nav/aoa-atlantis.nod \ botinfo/nav/aoa-corrosion.nod \ botinfo/nav/aoa-frost2k9.nod \ @@ -111,10 +116,12 @@ botinfo/nav/ctf-cryogenic.nod \ botinfo/nav/ctf-europa2k8.nod \ botinfo/nav/ctf-frostbyte.nod \ + botinfo/nav/ctf-goregrinder.nod \ botinfo/nav/ctf-invasion.nod \ botinfo/nav/ctf-oblivion.nod \ + botinfo/nav/ctf-purgatory.nod \ botinfo/nav/ctf-titan2k8.nod \ - botinfo/nav/ctf-vesuvius.nod \ + botinfo/nav/ctf-vesuvius2k11.nod \ botinfo/nav/ctf-violator.nod \ botinfo/nav/ctf-zion2k9.nod \ botinfo/nav/db-chromium.nod \ @@ -123,24 +130,25 @@ botinfo/nav/dm-annihilation.nod \ botinfo/nav/dm-atlantis2k8.nod \ botinfo/nav/dm-babel2k11.nod \ - botinfo/nav/dm-bloodfactory.nod \ + botinfo/nav/dm-bloodfactory2k12.nod \ botinfo/nav/dm-chasmatic2k9.nod \ botinfo/nav/dm-command2k9.nod \ botinfo/nav/dm-corrosion.nod \ - botinfo/nav/dm-crucible2k8.nod \ + botinfo/nav/dm-crucible2k12.nod \ botinfo/nav/dm-deathray.nod \ botinfo/nav/dm-deimos2k9.nod \ botinfo/nav/dm-dismal2k11.nod \ botinfo/nav/dm-downfall.nod \ - botinfo/nav/dm-dynamo2k8.nod \ + botinfo/nav/dm-dynamo2k12.nod \ botinfo/nav/dm-eternal.nod \ botinfo/nav/dm-europa2k8.nod \ + botinfo/nav/dm-extermination.nod \ botinfo/nav/dm-furious2k8.nod \ botinfo/nav/dm-goregrinder.nod \ botinfo/nav/dm-horus.nod \ botinfo/nav/dm-impact.nod \ botinfo/nav/dm-invasion.nod \ - botinfo/nav/dm-leviathan2k8.nod \ + botinfo/nav/dm-leviathan2k12.nod \ botinfo/nav/dm-liberation.nod \ botinfo/nav/dm-neptune.nod \ botinfo/nav/dm-oblivion.nod \ @@ -154,20 +162,44 @@ botinfo/nav/dm-warmachine2k10.nod \ botinfo/nav/dm-zion2k9.nod \ botinfo/nav/dm-zorn2k11.nod \ + botinfo/nav/tac-extermination.nod \ botinfo/nav/tca-corrosion.nod \ botinfo/nav/tca-cryogenic.nod \ botinfo/nav/tca-europa2k8.nod \ botinfo/nav/tca-frost.nod \ + botinfo/nav/tca-invasion.nod \ + botinfo/nav/tca-purgatory.nod \ botinfo/nav/tca-titan2k8.nod \ botinfo/nav/tca-zion.nod \ + botinfo/nav/tca-zion2k9.nod + + +data1dir = $(pkgdatadir) + +nobase_dist_data1_DATA = \ data1/default.cfg \ - data1/maps.lst \ + data1/maps.lst + +# Note: partitioning the data files like this keeps the command line length +# in legal range for installation. However it does not work for creation +# of the distribution package. Hence, "nodist" is specified and data is +# copied to the distribution directory in "dist-hook:" +# +envdir = $(pkgdatadir) + +nobase_nodist_env_DATA = \ data1/env/alienbk.tga \ data1/env/aliendn.tga \ data1/env/alienft.tga \ data1/env/alienlf.tga \ data1/env/alienrt.tga \ data1/env/alienup.tga \ + data1/env/deadcitybk.tga \ + data1/env/deadcitydn.tga \ + data1/env/deadcityft.tga \ + data1/env/deadcitylf.tga \ + data1/env/deadcityrt.tga \ + data1/env/deadcityup.tga \ data1/env/egyptbk.tga \ data1/env/egyptdn.tga \ data1/env/egyptft.tga \ @@ -209,17 +241,26 @@ data1/env/tekcityft.tga \ data1/env/tekcitylf.tga \ data1/env/tekcityrt.tga \ - data1/env/tekcityup.tga \ + data1/env/tekcityup.tga + + +fontsdir = $(pkgdatadir) + +nobase_nodist_fonts_DATA = \ data1/fonts/agentred.ttf \ data1/fonts/bluehigd.ttf \ data1/fonts/chicomono.ttf \ data1/fonts/creativeblock.ttf \ - data1/fonts/default.tga \ - data1/fonts/digital.tga \ - data1/fonts/fat.tga \ data1/fonts/freemono.ttf \ data1/fonts/freesans.ttf \ - data1/fonts/menu.tga \ + data1/fonts/orbitron.ttf \ + data1/fonts/crackdown.ttf \ + data1/fonts/bendable.ttf + + +gfxdir = $(pkgdatadir) + +nobase_nodist_gfx_DATA = \ data1/gfx/aaglow.tga \ data1/gfx/adrenalbase.tga \ data1/gfx/adrenalmask.tga \ @@ -235,10 +276,14 @@ data1/gfx/beamfx.tga \ data1/gfx/beamgunfx.tga \ data1/gfx/blasterfx.tga \ + data1/gfx/blooddrops.jpg \ + data1/gfx/blooddrops_nm.jpg \ data1/gfx/bluecyborgfx.tga \ data1/gfx/bluelightning2.tga \ data1/gfx/bluelightning.tga \ data1/gfx/bluemartianfx.tga \ + data1/gfx/blueoverlordfx.tga \ + data1/gfx/bluewarriorfx.tga \ data1/gfx/bubbles.tga \ data1/gfx/caustics.tga \ data1/gfx/chrome2.tga \ @@ -255,7 +300,9 @@ data1/gfx/defaultenforcerfx.tga \ data1/gfx/defaultlaurenfx.tga \ data1/gfx/defaultmartianfx.tga \ + data1/gfx/defaultoverlordfx.tga \ data1/gfx/defaultslashbotfx.tga \ + data1/gfx/defaultwarriorfx.tga \ data1/gfx/disruptorfx.tga \ data1/gfx/disruptormask.tga \ data1/gfx/distortwave.jpg \ @@ -263,6 +310,7 @@ data1/gfx/dmbeyondreflection.tga \ data1/gfx/dmdreadreflection.tga \ data1/gfx/dmturboreflection.tga \ + data1/gfx/droplets.jpg \ data1/gfx/e6launchengine_fx.tga \ data1/gfx/e6launchengine_glow.tga \ data1/gfx/e6launchengine_mask.tga \ @@ -293,8 +341,6 @@ data1/gfx/greencircuit.tga \ data1/gfx/greenlightning.tga \ data1/gfx/greenline.tga \ - data1/gfx/hastebase.tga \ - data1/gfx/hastemask.tga \ data1/gfx/hconsole2.tga \ data1/gfx/hconsole3.tga \ data1/gfx/hconsole.tga \ @@ -304,7 +350,11 @@ data1/gfx/m_banner_main_mask.tga \ data1/gfx/menubar1.tga \ data1/gfx/menubar2.tga \ + data1/gfx/menubar3.tga \ + data1/gfx/menubar4.tga \ data1/gfx/metal3glow.tga \ + data1/gfx/metalenvmap.jpg \ + data1/gfx/minderaser_fx.tga \ data1/gfx/mirrorspec.tga \ data1/gfx/noise.tga \ data1/gfx/plate5fx.tga \ @@ -340,13 +390,42 @@ data1/gfx/sun.jpg \ data1/gfx/tekwallmask.tga \ data1/gfx/trim2mask.tga \ + data1/gfx/tron2_commanderfx.tga \ + data1/gfx/tron2_cyborgfx.tga \ + data1/gfx/tron2_enforcerfx.tga \ + data1/gfx/tron2_laurenfx.tga \ + data1/gfx/tron2_martianfx.tga \ + data1/gfx/tron2_overlordfx.tga \ + data1/gfx/tron2_slashbotfx.tga \ + data1/gfx/tron2_warriorfx.tga \ + data1/gfx/tron3_commanderfx.tga \ + data1/gfx/tron3_cyborgfx.tga \ + data1/gfx/tron3_enforcerfx.tga \ + data1/gfx/tron3_laurenfx.tga \ + data1/gfx/tron3_martianfx.tga \ + data1/gfx/tron3_overlordfx.tga \ + data1/gfx/tron3_slashbotfx.tga \ + data1/gfx/tron3_warriorfx.tga \ + data1/gfx/tron_commanderfx.tga \ + data1/gfx/tron_cyborgfx.tga \ + data1/gfx/tron_enforcerfx.tga \ + data1/gfx/tron_laurenfx.tga \ + data1/gfx/tron_martianfx.tga \ + data1/gfx/tron_overlordfx.tga \ + data1/gfx/tron_slashbotfx.tga \ + data1/gfx/tron_warriorfx.tga \ data1/gfx/vaporbase.tga \ data1/gfx/vapormask.tga \ data1/gfx/violator2fx.tga \ data1/gfx/violatorfx.tga \ data1/gfx/water/distort1.tga \ data1/gfx/water/normal1.tga \ - data1/gfx/yellowline.tga \ + data1/gfx/yellowline.tga + + +levelshotsdir = $(pkgdatadir) + +nobase_nodist_levelshots_DATA = \ data1/levelshots/aoa-atlantis.jpg \ data1/levelshots/aoa-atlantis.txt \ data1/levelshots/aoa-corrosion.jpg \ @@ -363,18 +442,22 @@ data1/levelshots/ctf-corrosion.txt \ data1/levelshots/ctf-cryogenic.jpg \ data1/levelshots/ctf-cryogenic.txt \ - data1/levelshots/ctf-europa2k8.jpg \ - data1/levelshots/ctf-europa2k8.txt \ + data1/levelshots/ctf-extermination.jpg \ + data1/levelshots/ctf-extermination.txt \ data1/levelshots/ctf-frostbyte.jpg \ data1/levelshots/ctf-frostbyte.txt \ + data1/levelshots/ctf-goregrinder.jpg \ + data1/levelshots/ctf-goregrinder.txt \ data1/levelshots/ctf-invasion.jpg \ data1/levelshots/ctf-invasion.txt \ data1/levelshots/ctf-oblivion.jpg \ data1/levelshots/ctf-oblivion.txt \ + data1/levelshots/ctf-purgatory.jpg \ + data1/levelshots/ctf-purgatory.txt \ data1/levelshots/ctf-titan2k8.jpg \ data1/levelshots/ctf-titan2k8.txt \ - data1/levelshots/ctf-vesuvius.jpg \ - data1/levelshots/ctf-vesuvius.txt \ + data1/levelshots/ctf-vesuvius2k11.jpg \ + data1/levelshots/ctf-vesuvius2k11.txt \ data1/levelshots/ctf-violator.jpg \ data1/levelshots/ctf-violator.txt \ data1/levelshots/ctf-zion2k9.jpg \ @@ -391,16 +474,16 @@ data1/levelshots/dm-atlantis2k8.txt \ data1/levelshots/dm-babel2k11.jpg \ data1/levelshots/dm-babel2k11.txt \ - data1/levelshots/dm-bloodfactory.jpg \ - data1/levelshots/dm-bloodfactory.txt \ + data1/levelshots/dm-bloodfactory2k12.jpg \ + data1/levelshots/dm-bloodfactory2k12.txt \ data1/levelshots/dm-chasmatic2k9.jpg \ data1/levelshots/dm-chasmatic2k9.txt \ data1/levelshots/dm-command2k9.jpg \ data1/levelshots/dm-command2k9.txt \ data1/levelshots/dm-corrosion.jpg \ data1/levelshots/dm-corrosion.txt \ - data1/levelshots/dm-crucible2k8.jpg \ - data1/levelshots/dm-crucible2k8.txt \ + data1/levelshots/dm-crucible2k12.jpg \ + data1/levelshots/dm-crucible2k12.txt \ data1/levelshots/dm-deathray.jpg \ data1/levelshots/dm-deathray.txt \ data1/levelshots/dm-deimos2k9.jpg \ @@ -409,12 +492,12 @@ data1/levelshots/dm-dismal2k11.txt \ data1/levelshots/dm-downfall.jpg \ data1/levelshots/dm-downfall.txt \ - data1/levelshots/dm-dynamo2k8.jpg \ - data1/levelshots/dm-dynamo2k8.txt \ + data1/levelshots/dm-dynamo2k12.jpg \ + data1/levelshots/dm-dynamo2k12.txt \ data1/levelshots/dm-eternal.jpg \ data1/levelshots/dm-eternal.txt \ - data1/levelshots/dm-europa2k8.jpg \ - data1/levelshots/dm-europa2k8.txt \ + data1/levelshots/dm-extermination.jpg \ + data1/levelshots/dm-extermination.txt \ data1/levelshots/dm-furious2k8.jpg \ data1/levelshots/dm-furious2k8.txt \ data1/levelshots/dm-goregrinder.jpg \ @@ -425,8 +508,8 @@ data1/levelshots/dm-impact.txt \ data1/levelshots/dm-invasion.jpg \ data1/levelshots/dm-invasion.txt \ - data1/levelshots/dm-leviathan2k8.jpg \ - data1/levelshots/dm-leviathan2k8.txt \ + data1/levelshots/dm-leviathan2k12.jpg \ + data1/levelshots/dm-leviathan2k12.txt \ data1/levelshots/dm-liberation.jpg \ data1/levelshots/dm-liberation.txt \ data1/levelshots/dm-neptune.jpg \ @@ -439,8 +522,6 @@ data1/levelshots/dm-purgatory.txt \ data1/levelshots/dm-saucer2k9.jpg \ data1/levelshots/dm-saucer2k9.txt \ - data1/levelshots/dm-titan2k8.jpg \ - data1/levelshots/dm-titan2k8.txt \ data1/levelshots/dm-turbo2k8.jpg \ data1/levelshots/dm-turbo2k8.txt \ data1/levelshots/dm-vesuvius2k11.jpg \ @@ -453,18 +534,27 @@ data1/levelshots/dm-zorn2k11.txt \ data1/levelshots/dm-zion2k9.jpg \ data1/levelshots/dm-zion2k9.txt \ + data1/levelshots/tac-extermination.jpg \ + data1/levelshots/tac-extermination.txt \ data1/levelshots/tca-corrosion.jpg \ data1/levelshots/tca-corrosion.txt \ data1/levelshots/tca-cryogenic.jpg \ data1/levelshots/tca-cryogenic.txt \ - data1/levelshots/tca-europa2k8.jpg \ - data1/levelshots/tca-europa2k8.txt \ + data1/levelshots/tca-extermination.jpg \ + data1/levelshots/tca-extermination.txt \ data1/levelshots/tca-frost.jpg \ data1/levelshots/tca-frost.txt \ + data1/levelshots/tca-purgatory.jpg \ + data1/levelshots/tca-purgatory.txt \ data1/levelshots/tca-titan2k8.jpg \ data1/levelshots/tca-titan2k8.txt \ - data1/levelshots/tca-zion.jpg \ - data1/levelshots/tca-zion.txt \ + data1/levelshots/tca-zion2k9.jpg \ + data1/levelshots/tca-zion2k9.txt + + +mapsdir = $(pkgdatadir) + +nobase_nodist_maps_DATA = \ data1/maps/aoa-atlantis.bsp \ data1/maps/aoa-corrosion.bsp \ data1/maps/aoa-frost2k9.bsp \ @@ -472,60 +562,85 @@ data1/maps/aoa-zorn.bsp \ data1/maps/cp-ribeye.bsp \ data1/maps/ctf-corrosion.bsp \ + data1/maps/ctf-corrosion.lightmap \ data1/maps/ctf-cryogenic.bsp \ - data1/maps/ctf-europa2k8.bsp \ + data1/maps/ctf-extermination.bsp \ + data1/maps/ctf-extermination.lightmap \ data1/maps/ctf-frostbyte.bsp \ + data1/maps/ctf-goregrinder.bsp \ data1/maps/ctf-invasion.bsp \ + data1/maps/ctf-invasion.lightmap \ data1/maps/ctf-oblivion.bsp \ + data1/maps/ctf-oblivion.lightmap \ + data1/maps/ctf-purgatory.bsp \ data1/maps/ctf-titan2k8.bsp \ - data1/maps/ctf-vesuvius.bsp \ + data1/maps/ctf-vesuvius2k11.bsp \ + data1/maps/ctf-vesuvius2k11.lightmap \ data1/maps/ctf-violator.bsp \ data1/maps/ctf-zion2k9.bsp \ data1/maps/db-chromium.bsp \ data1/maps/db-icarus.bsp \ data1/maps/db-vesuvius.bsp \ data1/maps/dm-annihilation.bsp \ + data1/maps/dm-annihilation.lightmap \ data1/maps/dm-atlantis2k8.bsp \ data1/maps/dm-babel2k11.bsp \ - data1/maps/dm-bloodfactory.bsp \ + data1/maps/dm-bloodfactory2k12.bsp \ data1/maps/dm-chasmatic2k9.bsp \ data1/maps/dm-command2k9.bsp \ data1/maps/dm-corrosion.bsp \ - data1/maps/dm-crucible2k8.bsp \ + data1/maps/dm-corrosion.lightmap \ + data1/maps/dm-crucible2k12.bsp \ + data1/maps/dm-crucible2k12.lightmap \ data1/maps/dm-deathray.bsp \ data1/maps/dm-deimos2k9.bsp \ + data1/maps/dm-deimos2k9.lightmap \ data1/maps/dm-dismal2k11.bsp \ data1/maps/dm-downfall.bsp \ - data1/maps/dm-dynamo2k8.bsp \ + data1/maps/dm-dynamo2k12.bsp \ + data1/maps/dm-dynamo2k12.lightmap \ data1/maps/dm-eternal.bsp \ - data1/maps/dm-europa2k8.bsp \ + data1/maps/dm-extermination.bsp \ + data1/maps/dm-extermination.lightmap \ data1/maps/dm-furious2k8.bsp \ + data1/maps/dm-furious2k8.lightmap \ data1/maps/dm-goregrinder.bsp \ + data1/maps/dm-goregrinder.lightmap \ data1/maps/dm-horus.bsp \ data1/maps/dm-impact.bsp \ + data1/maps/dm-impact.lightmap \ data1/maps/dm-invasion.bsp \ - data1/maps/dm-leviathan2k8.bsp \ + data1/maps/dm-invasion.lightmap \ + data1/maps/dm-leviathan2k12.bsp \ data1/maps/dm-liberation.bsp \ data1/maps/dm-neptune.bsp \ + data1/maps/dm-neptune.lightmap \ data1/maps/dm-oblivion.bsp \ + data1/maps/dm-oblivion.lightmap \ data1/maps/dm-omega2k8.bsp \ + data1/maps/dm-omega2k8.lightmap \ data1/maps/dm-purgatory.bsp \ data1/maps/dm-saucer2k9.bsp \ - data1/maps/dm-titan2k8.bsp \ data1/maps/dm-turbo2k8.bsp \ data1/maps/dm-vesuvius2k11.bsp \ + data1/maps/dm-vesuvius2k11.lightmap \ data1/maps/dm-violator2k11.bsp \ + data1/maps/dm-violator2k11.lightmap \ data1/maps/dm-warmachine2k10.bsp \ + data1/maps/dm-warmachine2k10.lightmap \ data1/maps/dm-zorn2k11.bsp \ data1/maps/dm-zion2k9.bsp \ + data1/maps/tac-extermination.bsp \ + data1/maps/tac-extermination.lightmap \ data1/maps/tca-corrosion.bsp \ + data1/maps/tca-corrosion.lightmap \ data1/maps/tca-cryogenic.bsp \ - data1/maps/tca-europa2k8.bsp \ - data1/maps/tca-frost.bsp \ + data1/maps/tca-extermination.bsp \ data1/maps/tca-invasion \ data1/maps/tca-invasion.entdef \ + data1/maps/tca-purgatory.bsp \ data1/maps/tca-titan2k8.bsp \ - data1/maps/tca-zion.bsp \ + data1/maps/tca-zion2k9.bsp \ data1/maps/meshes/arch_fx.tga \ data1/maps/meshes/arch.md2 \ data1/maps/meshes/arch_normal.jpg \ @@ -574,11 +689,13 @@ data1/maps/meshes/electrodecover.md2 \ data1/maps/meshes/electrode.md2 \ data1/maps/meshes/electrode.tga \ + data1/maps/meshes/electrode_normal.tga \ data1/maps/meshes/eyejar_fx.tga \ data1/maps/meshes/eyejarglass.md2 \ data1/maps/meshes/eyejar.md2 \ data1/maps/meshes/eyejar_normal.tga \ data1/maps/meshes/eyejar.tga \ + data1/maps/meshes/flagpad_fx.tga \ data1/maps/meshes/flagpad.md2 \ data1/maps/meshes/flagpad_normal.tga \ data1/maps/meshes/flagpad.tga \ @@ -586,6 +703,9 @@ data1/maps/meshes/generator.jpg \ data1/maps/meshes/generator.md2 \ data1/maps/meshes/generator_normal.jpg \ + data1/maps/meshes/gothic/blade.jpg \ + data1/maps/meshes/gothic/blade.md2 \ + data1/maps/meshes/gothic/blade_normal.jpg \ data1/maps/meshes/gothic/ceillamp.md2 \ data1/maps/meshes/gothic/column1.jpg \ data1/maps/meshes/gothic/column1.md2 \ @@ -595,7 +715,9 @@ data1/maps/meshes/gothic/dragon_normal.jpg \ data1/maps/meshes/gothic/fdstatue_green.md2 \ data1/maps/meshes/gothic/fd_statue_normal.jpg \ + data1/maps/meshes/gothic/fdstatue_red.md2 \ data1/maps/meshes/gothic/freedom_statue_green.jpg \ + data1/maps/meshes/gothic/freedom_statue_red.jpg \ data1/maps/meshes/gothic/lamp2b_fx.tga \ data1/maps/meshes/gothic/lamp2b.md2 \ data1/maps/meshes/gothic/lamp2b.tga \ @@ -607,6 +729,15 @@ data1/maps/meshes/gothic/lamp.md2 \ data1/maps/meshes/gothic/lamp_normal.tga \ data1/maps/meshes/gothic/lamp.tga \ + data1/maps/meshes/gothic/meat1.jpg \ + data1/maps/meshes/gothic/meat1.md2 \ + data1/maps/meshes/gothic/meat1_normal.jpg \ + data1/maps/meshes/gothic/meat2.jpg \ + data1/maps/meshes/gothic/meat2.md2 \ + data1/maps/meshes/gothic/meat2_normal.jpg \ + data1/maps/meshes/gothic/meat3.jpg \ + data1/maps/meshes/gothic/meat3.md2 \ + data1/maps/meshes/gothic/meat3_normal.jpg \ data1/maps/meshes/gothic/neptune.jpg \ data1/maps/meshes/gothic/neptune.md2 \ data1/maps/meshes/gothic/neptune_normal.jpg \ @@ -621,6 +752,9 @@ data1/maps/meshes/gothic/throne.jpg \ data1/maps/meshes/gothic/throne.md2 \ data1/maps/meshes/gothic/throne_normal.jpg \ + data1/maps/meshes/greenblob_fx.tga \ + data1/maps/meshes/greenblob.jpg \ + data1/maps/meshes/greenblob.md2 \ data1/maps/meshes/hanger.md2 \ data1/maps/meshes/hanger_normal.jpg \ data1/maps/meshes/hanger.tga \ @@ -644,6 +778,7 @@ data1/maps/meshes/metpipe3.md2 \ data1/maps/meshes/mhelmet.md2 \ data1/maps/meshes/monitor2.md2 \ + data1/maps/meshes/monitor_normal.tga \ data1/maps/meshes/monitor.jpg \ data1/maps/meshes/monitormask.tga \ data1/maps/meshes/monitor.md2 \ @@ -691,6 +826,9 @@ data1/maps/meshes/straightconduit.md2 \ data1/maps/meshes/tech/bigribtube.jpg \ data1/maps/meshes/tech/bigribtube_normal.jpg \ + data1/maps/meshes/tech/blueribtube1.md2 \ + data1/maps/meshes/tech/blueribtube_fx.tga \ + data1/maps/meshes/tech/blueribtube.jpg \ data1/maps/meshes/tech/glasstube.md2 \ data1/maps/meshes/tech/railing2.md2 \ data1/maps/meshes/tech/railing3.md2 \ @@ -719,18 +857,26 @@ data1/maps/meshes/tech/rotator.jpg \ data1/maps/meshes/tech/rotator.md2 \ data1/maps/meshes/tech/rotator_normal.jpg \ + data1/maps/meshes/tech/rotimage1_normal.tga \ data1/maps/meshes/tech/rotimage1.tga \ + data1/maps/meshes/tech/rotimage2_normal.tga \ data1/maps/meshes/tech/rotimage2.tga \ + data1/maps/meshes/tech/rotimage3_normal.tga \ data1/maps/meshes/tech/rotimage3.tga \ + data1/maps/meshes/tech/rotimage4_normal.tga \ data1/maps/meshes/tech/rotimage4.tga \ data1/maps/meshes/tech/slimegen2.md2 \ data1/maps/meshes/tech/slimegen.jpg \ data1/maps/meshes/tech/slimegen.md2 \ data1/maps/meshes/tech/slimegen_fx.tga \ + data1/maps/meshes/tech/slimegenblue_fx.tga \ + data1/maps/meshes/tech/slimegenblue.jpg \ + data1/maps/meshes/tech/slimegenblue.md2 \ data1/maps/meshes/tech/slimegen_normal.jpg \ data1/maps/meshes/tech/slimegenred_fx.tga \ data1/maps/meshes/tech/slimegenred.jpg \ data1/maps/meshes/tech/slimegenred.md2 \ + data1/maps/meshes/tech/slimegen_s.md2 \ data1/maps/meshes/tech/slimetube1.md2 \ data1/maps/meshes/tech/turbinefan.jpg \ data1/maps/meshes/tech/turbinefan.md2 \ @@ -744,8 +890,15 @@ data1/maps/meshes/unit.jpg \ data1/maps/meshes/unit.md2 \ data1/maps/meshes/unit_normal.jpg \ + data1/maps/meshes/urban/bluelantern_fx.tga \ + data1/maps/meshes/urban/bluelantern.jpg \ + data1/maps/meshes/urban/bluelantern.md2 \ + data1/maps/meshes/urban/lantern_normal.jpg \ data1/maps/meshes/urban/mercedes.jpg \ data1/maps/meshes/urban/mercedes.md2 \ + data1/maps/meshes/urban/orangelantern_fx.tga \ + data1/maps/meshes/urban/orangelantern.jpg \ + data1/maps/meshes/urban/orangelantern.md2 \ data1/maps/meshes/urban/rioblue.jpg \ data1/maps/meshes/urban/rioblue.md2 \ data1/maps/meshes/urban/rio_normal.jpg \ @@ -756,6 +909,12 @@ data1/maps/meshes/urban/roadbarrell.jpg \ data1/maps/meshes/urban/roadbarrell.md2 \ data1/maps/meshes/urban/roadbarrell_normal.jpg \ + data1/maps/meshes/urban/rope.jpg \ + data1/maps/meshes/urban/rope.md2 \ + data1/maps/meshes/urban/yellowlantern_fx.tga \ + data1/maps/meshes/urban/yellowlantern.jpg \ + data1/maps/meshes/urban/yellowlantern.md2 \ + data1/maps/meshes/weaponpad_fx.tga \ data1/maps/meshes/weaponpad.md2 \ data1/maps/meshes/weaponpad_normal.tga \ data1/maps/meshes/weaponpad.tga \ @@ -804,15 +963,21 @@ data1/maps/scripts/ctf-cryogenic.fog \ data1/maps/scripts/ctf-cryogenic.mus \ data1/maps/scripts/ctf-europa2k8.mus \ + data1/maps/scripts/ctf-extermination.fog \ + data1/maps/scripts/ctf-extermination.mus \ data1/maps/scripts/ctf-frostbyte.fog \ data1/maps/scripts/ctf-frostbyte.mus \ - data1/maps/scripts/ctf-frost.fog \ + data1/maps/scripts/ctf-goregrinder.fog \ + data1/maps/scripts/ctf-goregrinder.mus \ + data1/maps/scripts/ctf-invasion.fog \ data1/maps/scripts/ctf-invasion.mus \ data1/maps/scripts/ctf-oblivion.fog \ data1/maps/scripts/ctf-oblivion.mus \ + data1/maps/scripts/ctf-purgatory.fog \ + data1/maps/scripts/ctf-purgatory.mus \ data1/maps/scripts/ctf-titan2k8.mus \ - data1/maps/scripts/ctf-vesuvius.fog \ - data1/maps/scripts/ctf-vesuvius.mus \ + data1/maps/scripts/ctf-vesuvius2k11.fog \ + data1/maps/scripts/ctf-vesuvius2k11.mus \ data1/maps/scripts/ctf-violator.fog \ data1/maps/scripts/ctf-violator.mus \ data1/maps/scripts/ctf-zion2k9.mus \ @@ -825,16 +990,16 @@ data1/maps/scripts/dm-annihilation.mus \ data1/maps/scripts/dm-babel2k11.fog \ data1/maps/scripts/dm-babel2k11.mus \ - data1/maps/scripts/dm-bloodfactory.fog \ - data1/maps/scripts/dm-bloodfactory.mus \ + data1/maps/scripts/dm-bloodfactory2k12.fog \ + data1/maps/scripts/dm-bloodfactory2k12.mus \ data1/maps/scripts/dm-chasmatic2k9.fog \ data1/maps/scripts/dm-chasmatic2k9.mus \ data1/maps/scripts/dm-command2k9.fog \ data1/maps/scripts/dm-command2k9.mus \ data1/maps/scripts/dm-corrosion.fog \ data1/maps/scripts/dm-corrosion.mus \ - data1/maps/scripts/dm-crucible2k8.fog \ - data1/maps/scripts/dm-crucible2k8.mus \ + data1/maps/scripts/dm-crucible2k12.fog \ + data1/maps/scripts/dm-crucible2k12.mus \ data1/maps/scripts/dm-deathray.fog \ data1/maps/scripts/dm-deathray.mus \ data1/maps/scripts/dm-deimos2k9.mus \ @@ -842,20 +1007,23 @@ data1/maps/scripts/dm-dismal2k11.mus \ data1/maps/scripts/dm-downfall.fog \ data1/maps/scripts/dm-downfall.mus \ - data1/maps/scripts/dm-dynamo2k8.fog \ - data1/maps/scripts/dm-dynamo2k8.mus \ + data1/maps/scripts/dm-dynamo2k12.fog \ + data1/maps/scripts/dm-dynamo2k12.mus \ data1/maps/scripts/dm-eternal.fog \ data1/maps/scripts/dm-eternal.mus \ - data1/maps/scripts/dm-europa2k8.mus \ + data1/maps/scripts/dm-extermination.fog \ + data1/maps/scripts/dm-extermination.mus \ data1/maps/scripts/dm-furious2k8.fog \ data1/maps/scripts/dm-furious2k8.mus \ data1/maps/scripts/dm-goregrinder.fog \ data1/maps/scripts/dm-goregrinder.mus \ data1/maps/scripts/dm-horus.mus \ + data1/maps/scripts/dm-impact.fog \ data1/maps/scripts/dm-impact.mus \ + data1/maps/scripts/dm-invasion.fog \ data1/maps/scripts/dm-invasion.mus \ - data1/maps/scripts/dm-leviathan2k8.fog \ - data1/maps/scripts/dm-leviathan2k8.mus \ + data1/maps/scripts/dm-leviathan2k12.fog \ + data1/maps/scripts/dm-leviathan2k12.mus \ data1/maps/scripts/dm-liberation.fog \ data1/maps/scripts/dm-liberation.mus \ data1/maps/scripts/dm-neptune.mus \ @@ -866,7 +1034,6 @@ data1/maps/scripts/dm-purgatory.mus \ data1/maps/scripts/dm-saucer2k9.fog \ data1/maps/scripts/dm-saucer2k9.mus \ - data1/maps/scripts/dm-titan2k8.mus \ data1/maps/scripts/dm-turbo2k8.fog \ data1/maps/scripts/dm-turbo2k8.mus \ data1/maps/scripts/dm-vesuvius2k11.fog \ @@ -878,13 +1045,22 @@ data1/maps/scripts/dm-zorn2k11.fog \ data1/maps/scripts/dm-zorn2k11.mus \ data1/maps/scripts/dm-zion2k9.mus \ + data1/maps/scripts/tac-extermination.fog \ + data1/maps/scripts/tac-extermination.mus \ data1/maps/scripts/tca-corrosion.fog \ data1/maps/scripts/tca-corrosion.mus \ data1/maps/scripts/tca-cryogenic.fog \ data1/maps/scripts/tca-cryogenic.mus \ - data1/maps/scripts/tca-europa2k8.mus \ - data1/maps/scripts/tca-titan2k8.mus \ - data1/maps/scripts/tca-zion.mus \ + data1/maps/scripts/tca-extermination.fog \ + data1/maps/scripts/tca-extermination.mus \ + data1/maps/scripts/tca-purgatory.fog \ + data1/maps/scripts/tca-purgatory.mus \ + data1/maps/scripts/tca-zion2k9.mus + + +modelsdir = $(pkgdatadir) + +nobase_nodist_models_DATA = \ data1/models/cow/helmet.md2 \ data1/models/cow/skin.tga \ data1/models/cow/tris.md2 \ @@ -902,15 +1078,16 @@ data1/models/items/ammo/shells/medium/skin.tga \ data1/models/items/ammo/shells/medium/tris.md2 \ data1/models/items/ammo/skin_normal.tga \ - data1/models/items/armor/body/skin.tga \ + data1/models/items/armor/body/skin.jpg \ data1/models/items/armor/body/tris.md2 \ - data1/models/items/armor/combat/skin.tga \ + data1/models/items/armor/combat/skin.jpg \ data1/models/items/armor/combat/tris.md2 \ - data1/models/items/armor/jacket/skin.tga \ + data1/models/items/armor/jacket/skin.jpg \ data1/models/items/armor/jacket/tris.md2 \ data1/models/items/armor/shard/skin_normal.tga \ data1/models/items/armor/shard/skin.tga \ data1/models/items/armor/shard/tris.md2 \ + data1/models/items/armor/skin_fx.tga \ data1/models/items/armor/skin_normal.tga \ data1/models/items/flags/blue.tga \ data1/models/items/flags/flag1.md2 \ @@ -922,6 +1099,7 @@ data1/models/items/haste/tris.md2 \ data1/models/items/healing/globe/skin.tga \ data1/models/items/healing/globe/tris.md2 \ + data1/models/items/healing/health_normal.tga \ data1/models/items/healing/large/skin.tga \ data1/models/items/healing/large/tris.md2 \ data1/models/items/healing/medium/skin.tga \ @@ -962,8 +1140,15 @@ data1/models/misc/scope/cover.md2 \ data1/models/misc/scope/scope.tga \ data1/models/misc/scope/tris.md2 \ + data1/models/misc/spiderpod/helmet.iqm \ + data1/models/misc/spiderpod/helmet.md2 \ data1/models/misc/spiderpod/skin.tga \ + data1/models/misc/spiderpod/spider_fx.tga \ + data1/models/misc/spiderpod/spider.jpg \ + data1/models/misc/spiderpod/spider_normal.jpg \ + data1/models/misc/spiderpod/tris.iqm \ data1/models/misc/spiderpod/tris.md2 \ + data1/models/misc/spiderpod/tris.skin \ data1/models/misc/tube/cover.md2 \ data1/models/misc/tube/tris.md2 \ data1/models/misc/tube/tube.tga \ @@ -998,6 +1183,68 @@ data1/models/objects/laser/tris.md2 \ data1/models/objects/rocket/skin.tga \ data1/models/objects/rocket/tris.md2 \ + data1/models/objects/spider/helmet.iqm \ + data1/models/objects/spider/helmet.md2 \ + data1/models/objects/spider/tris.iqm \ + data1/models/objects/spider/tris.md2 \ + data1/models/objects/spider/tris.skin \ + data1/models/objects/spud/skin_fx2.tga \ + data1/models/objects/spud/skin_fx.tga \ + data1/models/objects/spud/skin_normal.jpg \ + data1/models/objects/spud/skin.tga \ + data1/models/objects/spud/spud.mdo \ + data1/models/objects/spud/tris.md2 \ + data1/models/tactical/abackupgen_fx.tga \ + data1/models/tactical/abackupgen.jpg \ + data1/models/tactical/abackupgen_normal.jpg \ + data1/models/tactical/abomb_fx.tga \ + data1/models/tactical/abomb.jpg \ + data1/models/tactical/abomb_normal.tga \ + data1/models/tactical/acomputer_fx.tga \ + data1/models/tactical/acomputer_normal.tga \ + data1/models/tactical/acomputer.tga \ + data1/models/tactical/alaser_fx.tga \ + data1/models/tactical/alaser.jpg \ + data1/models/tactical/alien_backupgen.iqm \ + data1/models/tactical/alien_backupgen.skin \ + data1/models/tactical/alien_bomb.iqm \ + data1/models/tactical/alien_bomb.skin \ + data1/models/tactical/alien_computer.iqm \ + data1/models/tactical/alien_computer.skin \ + data1/models/tactical/alien_laser.iqm \ + data1/models/tactical/alien_laser.md2 \ + data1/models/tactical/alien_laser.skin \ + data1/models/tactical/alien_powersrc.iqm \ + data1/models/tactical/alien_powersrc.skin \ + data1/models/tactical/ammopad.md2 \ + data1/models/tactical/apowersrc_fx.tga \ + data1/models/tactical/apowersrc.jpg \ + data1/models/tactical/apowersrc_normal.jpg \ + data1/models/tactical/hbackupgen.jpg \ + data1/models/tactical/hbackupgen_normal.jpg \ + data1/models/tactical/hbomb_fx.tga \ + data1/models/tactical/hbomb.jpg \ + data1/models/tactical/hbomb_normal.jpg \ + data1/models/tactical/hcomputer_fx.tga \ + data1/models/tactical/hcomputer.jpg \ + data1/models/tactical/hcomputer_normal.jpg \ + data1/models/tactical/hlaser_fx.tga \ + data1/models/tactical/hlaser.jpg \ + data1/models/tactical/hpowersrc_fx.tga \ + data1/models/tactical/hpowersrc.jpg \ + data1/models/tactical/hpowersrc_normal.jpg \ + data1/models/tactical/human_backupgen.iqm \ + data1/models/tactical/human_backupgen.skin \ + data1/models/tactical/human_bomb.iqm \ + data1/models/tactical/human_bomb.skin \ + data1/models/tactical/human_computer.iqm \ + data1/models/tactical/human_computer.skin \ + data1/models/tactical/human_laser.iqm \ + data1/models/tactical/human_laser.md2 \ + data1/models/tactical/human_laser.skin \ + data1/models/tactical/human_powersrc.iqm \ + data1/models/tactical/human_powersrc.skin \ + data1/models/tactical/laser_normal.jpg \ data1/models/weapons/g_bfg/tris.md2 \ data1/models/weapons/g_chain/tris.md2 \ data1/models/weapons/g_hyperb/cover.md2 \ @@ -1005,28 +1252,37 @@ data1/models/weapons/g_launch/skin.tga \ data1/models/weapons/g_launch/tris.md2 \ data1/models/weapons/g_machn/tris.md2 \ + data1/models/weapons/g_minderaser/tris.md2 \ data1/models/weapons/g_rail/tris.md2 \ data1/models/weapons/g_rocket/cover.md2 \ data1/models/weapons/g_rocket/tris.md2 \ data1/models/weapons/g_shotg2/tris.md2 \ data1/models/weapons/g_shotg/tris.md2 \ + data1/models/weapons/v_alienblast/cover.md2 \ + data1/models/weapons/v_alienblast/skin_fx.tga \ + data1/models/weapons/v_alienblast/skin_normal.jpg \ + data1/models/weapons/v_alienblast/skin.jpg \ + data1/models/weapons/v_alienblast/tris.md2 \ data1/models/weapons/v_bfg/skin.jpg \ data1/models/weapons/v_bfg/skin_normal.tga \ data1/models/weapons/v_bfg/tris.md2 \ data1/models/weapons/v_blast/cover.md2 \ data1/models/weapons/v_blast/skin.jpg \ - data1/models/weapons/v_blast/skin_normal.jpg \ + data1/models/weapons/v_blast/skin_normal.tga \ data1/models/weapons/v_blast/tris.md2 \ data1/models/weapons/v_chain/skin.jpg \ data1/models/weapons/v_chain/skin_normal.tga \ data1/models/weapons/v_chain/tris.md2 \ data1/models/weapons/v_hyperb/cover.md2 \ data1/models/weapons/v_hyperb/disruptor.jpg \ - data1/models/weapons/v_hyperb/disruptor_normal.jpg \ + data1/models/weapons/v_hyperb/disruptor_normal.tga \ data1/models/weapons/v_hyperb/tris.md2 \ data1/models/weapons/v_machn/tris.md2 \ + data1/models/weapons/v_minderaser/minderaser.jpg \ + data1/models/weapons/v_minderaser/minderaser_normal.tga \ + data1/models/weapons/v_minderaser/tris.md2 \ data1/models/weapons/v_rail/beamgun.jpg \ - data1/models/weapons/v_rail/beamgun_normal.jpg \ + data1/models/weapons/v_rail/beamgun_normal.tga \ data1/models/weapons/v_rail/tris.md2 \ data1/models/weapons/v_rocket/cover.md2 \ data1/models/weapons/v_rocket/skin.jpg \ @@ -1042,7 +1298,12 @@ data1/models/weapons/v_violator/skin_normal.jpg \ data1/models/weapons/v_violator/tris.md2 \ data1/models/weapons/v_violator/violator.jpg \ - data1/models/weapons/v_violator/violator_normal.jpg \ + data1/models/weapons/v_violator/violator_normal.tga + + +particlesdir = $(pkgdatadir) + +nobase_nodist_particles_DATA = \ data1/particles/aflash.tga \ data1/particles/basic.tga \ data1/particles/beam.tga \ @@ -1081,8 +1342,14 @@ data1/particles/shell.tga \ data1/particles/smoke_org.tga \ data1/particles/smoke.tga \ + data1/particles/trash.tga \ data1/particles/voltage.tga \ - data1/particles/watersplash.tga \ + data1/particles/watersplash.tga + + +picsdir = $(pkgdatadir) + +nobase_nodist_pics_DATA = \ data1/pics/a_bullets.tga \ data1/pics/a_cells.tga \ data1/pics/a_grenades.tga \ @@ -1132,7 +1399,6 @@ data1/pics/crosshairs/alien.tga \ data1/pics/crosshairs/chexcross.tga \ data1/pics/crosshairs/dot1.tga \ - data1/pics/crosshairs/freezy.tga \ data1/pics/crosshairs/hardcorech.tga \ data1/pics/crosshairs/havoc2.tga \ data1/pics/crosshairs/havoc3.tga \ @@ -1220,29 +1486,46 @@ data1/pics/huds/terminal-red2.tga \ data1/pics/huds/therock1.tga \ data1/pics/huds/therock2.tga \ + data1/pics/i_beamgun.tga \ data1/pics/i_bodyarmor.tga \ + data1/pics/i_chaingun.tga \ data1/pics/i_combatarmor.tga \ + data1/pics/i_disruptor.tga \ data1/pics/i_flag1.tga \ data1/pics/i_flag2.tga \ + data1/pics/i_flamegun.tga \ data1/pics/i_health.tga \ data1/pics/i_jacketarmor.tga \ + data1/pics/i_minderaser.tga \ data1/pics/inventory.tga \ + data1/pics/i_rocketlauncher.tga \ data1/pics/i_score.tga \ + data1/pics/i_smartgun.tga \ + data1/pics/i_tactical.tga \ data1/pics/i_team1.tga \ data1/pics/i_team2.tga \ + data1/pics/i_vaporizer.tga \ data1/pics/m_bots.tga \ data1/pics/m_controls.tga \ data1/pics/m_cursor0.tga \ data1/pics/m_dmoptions.tga \ data1/pics/menu_back.jpg \ + data1/pics/menu_back_fx.tga \ data1/pics/m_irc.tga \ data1/pics/m_joinserver.tga \ + data1/pics/m_main_credits.tga \ + data1/pics/m_main_credits_fx.tga \ + data1/pics/m_main_credits_sel.tga \ + data1/pics/m_main_game_fx.tga \ data1/pics/m_main_game_sel.tga \ data1/pics/m_main_game.tga \ + data1/pics/m_main_host_fx.tga \ data1/pics/m_main_host_sel.tga \ data1/pics/m_main_host.tga \ + data1/pics/m_main_irc_fx.tga \ data1/pics/m_main_irc_sel.tga \ data1/pics/m_main_irc.tga \ + data1/pics/m_main_join_fx.tga \ data1/pics/m_main_join_sel.tga \ data1/pics/m_main_join.tga \ data1/pics/m_main_mont0.tga \ @@ -1251,13 +1534,18 @@ data1/pics/m_main_mont3.tga \ data1/pics/m_main_mont4.tga \ data1/pics/m_main_mont5.tga \ + data1/pics/m_main_options_fx.tga \ data1/pics/m_main_options_sel.tga \ data1/pics/m_main_options.tga \ + data1/pics/m_main_player_fx.tga \ data1/pics/m_main_player_sel.tga \ data1/pics/m_main_player.tga \ + data1/pics/m_main_quit_fx.tga \ data1/pics/m_main_quit_sel.tga \ data1/pics/m_main_quit.tga \ + data1/pics/m_main_tactical.tga \ data1/pics/m_main.tga \ + data1/pics/m_main_video_fx.tga \ data1/pics/m_main_video_sel.tga \ data1/pics/m_main_video.tga \ data1/pics/m_mouse_cursor.tga \ @@ -1267,7 +1555,37 @@ data1/pics/m_quit.tga \ data1/pics/m_single.tga \ data1/pics/m_startserver.tga \ + data1/pics/m_tactical.tga \ data1/pics/m_video.tga \ + data1/pics/menu/button_border_end.tga \ + data1/pics/menu/button_border.tga \ + data1/pics/menu/dnarrow.tga \ + data1/pics/menu/field_cursor.tga \ + data1/pics/menu/icon_border.tga \ + data1/pics/menu/m_background.tga \ + data1/pics/menu/m_bottomcorner.tga \ + data1/pics/menu/m_bottom.tga \ + data1/pics/menu/midarrow.tga \ + data1/pics/menu/m_side.tga \ + data1/pics/menu/m_topcorner.tga \ + data1/pics/menu/m_top.tga \ + data1/pics/menu/on.tga \ + data1/pics/menu/radio_border.tga \ + data1/pics/menu/scroll_border_end.tga \ + data1/pics/menu/scroll_border.tga \ + data1/pics/menu/scroll_cursor_end.tga \ + data1/pics/menu/scroll_cursor.tga \ + data1/pics/menu/slide_border_end.tga \ + data1/pics/menu/slide_border.tga \ + data1/pics/menu/slide_cursor_end.tga \ + data1/pics/menu/slide_cursor.tga \ + data1/pics/menu/sm_background.tga \ + data1/pics/menu/sm_bottomcorner.tga \ + data1/pics/menu/sm_bottom.tga \ + data1/pics/menu/sm_side.tga \ + data1/pics/menu/sm_topcorner.tga \ + data1/pics/menu/sm_top.tga \ + data1/pics/menu/uparrow.tga \ data1/pics/net.tga \ data1/pics/num_0.tga \ data1/pics/num_1.tga \ @@ -1281,13 +1599,18 @@ data1/pics/num_9.tga \ data1/pics/num_minus.tga \ data1/pics/p_adrenaline.tga \ + data1/pics/p_body.tga \ + data1/pics/p_combat.tga \ data1/pics/p_haste.tga \ + data1/pics/p_health.tga \ data1/pics/p_invis.tga \ data1/pics/p_invulnerability.tga \ + data1/pics/p_jacket.tga \ data1/pics/playerbox.tga \ data1/pics/p_powered.tga \ data1/pics/p_quad.tga \ data1/pics/p_rewardpts.tga \ + data1/pics/p_shard.tga \ data1/pics/p_sproing.tga \ data1/pics/redplayerbox.tga \ data1/pics/rocketlauncher.tga \ @@ -1317,7 +1640,12 @@ data1/pics/w_sshotgun.tga \ data1/pics/zoomscope1.tga \ data1/pics/zoomscope2.tga \ - data1/pics/zoomscope3.tga \ + data1/pics/zoomscope3.tga + + +playersdir = $(pkgdatadir) + +nobase_nodist_players_DATA = \ data1/players/commander/blue_i.jpg \ data1/players/commander/blue.jpg \ data1/players/commander/bump1.wav \ @@ -1354,6 +1682,13 @@ data1/players/commander/tris.iqm \ data1/players/commander/tris.md2 \ data1/players/commander/tris.rgd \ + data1/players/commander/tron2_i.jpg \ + data1/players/commander/tron2.jpg \ + data1/players/commander/tron3_i.jpg \ + data1/players/commander/tron3.jpg \ + data1/players/commander/tron_i.jpg \ + data1/players/commander/tron.jpg \ + data1/players/commander/tron_normal.tga \ data1/players/commander/w_bfg.iqm \ data1/players/commander/w_bfg.md2 \ data1/players/commander/w_bfg.skin \ @@ -1373,6 +1708,9 @@ data1/players/commander/w_machinegun.iqm \ data1/players/commander/w_machinegun.md2 \ data1/players/commander/w_machinegun.skin \ + data1/players/commander/w_minderaser.iqm \ + data1/players/commander/w_minderaser.md2 \ + data1/players/commander/w_minderaser.skin \ data1/players/commander/w_railgun.iqm \ data1/players/commander/w_railgun.md2 \ data1/players/commander/w_railgun.skin \ @@ -1432,6 +1770,13 @@ data1/players/enforcer/tris.iqm \ data1/players/enforcer/tris.md2 \ data1/players/enforcer/tris.rgd \ + data1/players/enforcer/tron2_i.jpg \ + data1/players/enforcer/tron2.jpg \ + data1/players/enforcer/tron3_i.jpg \ + data1/players/enforcer/tron3.jpg \ + data1/players/enforcer/tron_i.jpg \ + data1/players/enforcer/tron.jpg \ + data1/players/enforcer/tron_normal.tga \ data1/players/enforcer/usegibs \ data1/players/enforcer/w_bfg.iqm \ data1/players/enforcer/w_bfg.md2 \ @@ -1452,6 +1797,9 @@ data1/players/enforcer/w_machinegun.iqm \ data1/players/enforcer/w_machinegun.md2 \ data1/players/enforcer/w_machinegun.skin \ + data1/players/enforcer/w_minderaser.iqm \ + data1/players/enforcer/w_minderaser.md2 \ + data1/players/enforcer/w_minderaser.skin \ data1/players/enforcer/w_railgun.iqm \ data1/players/enforcer/w_railgun.md2 \ data1/players/enforcer/w_railgun.skin \ @@ -1505,6 +1853,13 @@ data1/players/lauren/tris.iqm \ data1/players/lauren/tris.md2 \ data1/players/lauren/tris.rgd \ + data1/players/lauren/tron2_i.jpg \ + data1/players/lauren/tron2.jpg \ + data1/players/lauren/tron3_i.jpg \ + data1/players/lauren/tron3.jpg \ + data1/players/lauren/tron_i.jpg \ + data1/players/lauren/tron.jpg \ + data1/players/lauren/tron_normal.tga \ data1/players/lauren/usegibs \ data1/players/lauren/w_bfg.iqm \ data1/players/lauren/w_bfg.md2 \ @@ -1525,6 +1880,9 @@ data1/players/lauren/w_machinegun.iqm \ data1/players/lauren/w_machinegun.md2 \ data1/players/lauren/w_machinegun.skin \ + data1/players/lauren/w_minderaser.iqm \ + data1/players/lauren/w_minderaser.md2 \ + data1/players/lauren/w_minderaser.skin \ data1/players/lauren/w_railgun.iqm \ data1/players/lauren/w_railgun.md2 \ data1/players/lauren/w_railgun.skin \ @@ -1578,6 +1936,15 @@ data1/players/martiancyborg/tris.iqm \ data1/players/martiancyborg/tris.md2 \ data1/players/martiancyborg/tris.rgd \ + data1/players/martiancyborg/tron2_i.jpg \ + data1/players/martiancyborg/tron2.jpg \ + data1/players/martiancyborg/tron3_i.jpg \ + data1/players/martiancyborg/tron3.jpg \ + data1/players/martiancyborg/tron_i.jpg \ + data1/players/martiancyborg/tron.jpg \ + data1/players/martiancyborg/tron_normal.tga \ + data1/players/martiancyborg/w_alienblaster.iqm \ + data1/players/martiancyborg/w_alienblaster.skin \ data1/players/martiancyborg/w_bfg.iqm \ data1/players/martiancyborg/w_bfg.md2 \ data1/players/martiancyborg/w_bfg.skin \ @@ -1597,6 +1964,9 @@ data1/players/martiancyborg/w_machinegun.iqm \ data1/players/martiancyborg/w_machinegun.md2 \ data1/players/martiancyborg/w_machinegun.skin \ + data1/players/martiancyborg/w_minderaser.iqm \ + data1/players/martiancyborg/w_minderaser.md2 \ + data1/players/martiancyborg/w_minderaser.skin \ data1/players/martiancyborg/w_railgun.iqm \ data1/players/martiancyborg/w_railgun.md2 \ data1/players/martiancyborg/w_railgun.skin \ @@ -1659,7 +2029,16 @@ data1/players/martianenforcer/tris.iqm \ data1/players/martianenforcer/tris.md2 \ data1/players/martianenforcer/tris.rgd \ + data1/players/martianenforcer/tron2_i.jpg \ + data1/players/martianenforcer/tron2.jpg \ + data1/players/martianenforcer/tron3_i.jpg \ + data1/players/martianenforcer/tron3.jpg \ + data1/players/martianenforcer/tron_i.jpg \ + data1/players/martianenforcer/tron.jpg \ + data1/players/martianenforcer/tron_normal.tga \ data1/players/martianenforcer/usegibs \ + data1/players/martianenforcer/w_alienblaster.iqm \ + data1/players/martianenforcer/w_alienblaster.skin \ data1/players/martianenforcer/w_bfg.iqm \ data1/players/martianenforcer/w_bfg.md2 \ data1/players/martianenforcer/w_bfg.skin \ @@ -1679,6 +2058,9 @@ data1/players/martianenforcer/w_machinegun.iqm \ data1/players/martianenforcer/w_machinegun.md2 \ data1/players/martianenforcer/w_machinegun.skin \ + data1/players/martianenforcer/w_minderaser.iqm \ + data1/players/martianenforcer/w_minderaser.md2 \ + data1/players/martianenforcer/w_minderaser.skin \ data1/players/martianenforcer/w_railgun.iqm \ data1/players/martianenforcer/w_railgun.md2 \ data1/players/martianenforcer/w_railgun.skin \ @@ -1694,6 +2076,176 @@ data1/players/martianenforcer/w_violator.iqm \ data1/players/martianenforcer/w_violator.md2 \ data1/players/martianenforcer/w_violator.skin \ + data1/players/martianoverlord/alien \ + data1/players/martianoverlord/blue_i.jpg \ + data1/players/martianoverlord/blue.jpg \ + data1/players/martianoverlord/bump1.wav \ + data1/players/martianoverlord/death1.wav \ + data1/players/martianoverlord/death2.wav \ + data1/players/martianoverlord/death3.wav \ + data1/players/martianoverlord/death4.wav \ + data1/players/martianoverlord/default_i.jpg \ + data1/players/martianoverlord/default.jpg \ + data1/players/martianoverlord/default_normal.tga \ + data1/players/martianoverlord/drown1.wav \ + data1/players/martianoverlord/fall1.wav \ + data1/players/martianoverlord/fall2.wav \ + data1/players/martianoverlord/gasp1.wav \ + data1/players/martianoverlord/gasp2.wav \ + data1/players/martianoverlord/gurp1.wav \ + data1/players/martianoverlord/gurp2.wav \ + data1/players/martianoverlord/helmet.iqm \ + data1/players/martianoverlord/helmet.md2 \ + data1/players/martianoverlord/jump1.wav \ + data1/players/martianoverlord/lod1.iqm \ + data1/players/martianoverlord/lod1.rgd \ + data1/players/martianoverlord/lod2.iqm \ + data1/players/martianoverlord/lod2.rgd \ + data1/players/martianoverlord/pain100_1.wav \ + data1/players/martianoverlord/pain100_2.wav \ + data1/players/martianoverlord/pain25_1.wav \ + data1/players/martianoverlord/pain25_2.wav \ + data1/players/martianoverlord/pain50_1.wav \ + data1/players/martianoverlord/pain50_2.wav \ + data1/players/martianoverlord/pain75_1.wav \ + data1/players/martianoverlord/pain75_2.wav \ + data1/players/martianoverlord/red_i.jpg \ + data1/players/martianoverlord/red.jpg \ + data1/players/martianoverlord/tris.iqm \ + data1/players/martianoverlord/tris.md2 \ + data1/players/martianoverlord/tris.rgd \ + data1/players/martianoverlord/tron2_i.jpg \ + data1/players/martianoverlord/tron2.jpg \ + data1/players/martianoverlord/tron3_i.jpg \ + data1/players/martianoverlord/tron3.jpg \ + data1/players/martianoverlord/tron_i.jpg \ + data1/players/martianoverlord/tron.jpg \ + data1/players/martianoverlord/tron_normal.tga \ + data1/players/martianoverlord/w_alienblaster.iqm \ + data1/players/martianoverlord/w_alienblaster.skin \ + data1/players/martianoverlord/w_bfg.iqm \ + data1/players/martianoverlord/w_bfg.md2 \ + data1/players/martianoverlord/w_bfg.skin \ + data1/players/martianoverlord/w_blaster.iqm \ + data1/players/martianoverlord/w_blaster.md2 \ + data1/players/martianoverlord/w_blaster.skin \ + data1/players/martianoverlord/w_chaingun.iqm \ + data1/players/martianoverlord/w_chaingun.md2 \ + data1/players/martianoverlord/w_chaingun.skin \ + data1/players/martianoverlord/weapon.iqm \ + data1/players/martianoverlord/weapon.jpg \ + data1/players/martianoverlord/weapon.md2 \ + data1/players/martianoverlord/weapon.skin \ + data1/players/martianoverlord/w_hyperblaster.iqm \ + data1/players/martianoverlord/w_hyperblaster.md2 \ + data1/players/martianoverlord/w_hyperblaster.skin \ + data1/players/martianoverlord/w_machinegun.iqm \ + data1/players/martianoverlord/w_machinegun.md2 \ + data1/players/martianoverlord/w_machinegun.skin \ + data1/players/martianoverlord/w_minderaser.iqm \ + data1/players/martianoverlord/w_minderaser.md2 \ + data1/players/martianoverlord/w_minderaser.skin \ + data1/players/martianoverlord/w_railgun.iqm \ + data1/players/martianoverlord/w_railgun.md2 \ + data1/players/martianoverlord/w_railgun.skin \ + data1/players/martianoverlord/w_rlauncher.iqm \ + data1/players/martianoverlord/w_rlauncher.md2 \ + data1/players/martianoverlord/w_rlauncher.skin \ + data1/players/martianoverlord/w_shotgun.iqm \ + data1/players/martianoverlord/w_shotgun.md2 \ + data1/players/martianoverlord/w_shotgun.skin \ + data1/players/martianoverlord/w_sshotgun.iqm \ + data1/players/martianoverlord/w_sshotgun.md2 \ + data1/players/martianoverlord/w_sshotgun.skin \ + data1/players/martianoverlord/w_violator.iqm \ + data1/players/martianoverlord/w_violator.md2 \ + data1/players/martianoverlord/w_violator.skin \ + data1/players/martianwarrior/alien \ + data1/players/martianwarrior/blue_i.jpg \ + data1/players/martianwarrior/blue.jpg \ + data1/players/martianwarrior/bump1.wav \ + data1/players/martianwarrior/death1.wav \ + data1/players/martianwarrior/death2.wav \ + data1/players/martianwarrior/death3.wav \ + data1/players/martianwarrior/death4.wav \ + data1/players/martianwarrior/default_i.jpg \ + data1/players/martianwarrior/default.jpg \ + data1/players/martianwarrior/default_normal.tga \ + data1/players/martianwarrior/drown1.wav \ + data1/players/martianwarrior/fall1.wav \ + data1/players/martianwarrior/fall2.wav \ + data1/players/martianwarrior/gasp1.wav \ + data1/players/martianwarrior/gasp2.wav \ + data1/players/martianwarrior/gurp1.wav \ + data1/players/martianwarrior/gurp2.wav \ + data1/players/martianwarrior/helmet.iqm \ + data1/players/martianwarrior/helmet.md2 \ + data1/players/martianwarrior/jump1.wav \ + data1/players/martianwarrior/lod1.iqm \ + data1/players/martianwarrior/lod1.md2 \ + data1/players/martianwarrior/lod1.rgd \ + data1/players/martianwarrior/lod2.iqm \ + data1/players/martianwarrior/lod2.md2 \ + data1/players/martianwarrior/lod2.rgd \ + data1/players/martianwarrior/pain100_1.wav \ + data1/players/martianwarrior/pain100_2.wav \ + data1/players/martianwarrior/pain25_1.wav \ + data1/players/martianwarrior/pain25_2.wav \ + data1/players/martianwarrior/pain50_1.wav \ + data1/players/martianwarrior/pain50_2.wav \ + data1/players/martianwarrior/pain75_1.wav \ + data1/players/martianwarrior/pain75_2.wav \ + data1/players/martianwarrior/red_i.jpg \ + data1/players/martianwarrior/red.jpg \ + data1/players/martianwarrior/tris.iqm \ + data1/players/martianwarrior/tris.md2 \ + data1/players/martianwarrior/tris.rgd \ + data1/players/martianwarrior/tron2_i.jpg \ + data1/players/martianwarrior/tron2.jpg \ + data1/players/martianwarrior/tron3_i.jpg \ + data1/players/martianwarrior/tron3.jpg \ + data1/players/martianwarrior/tron_i.jpg \ + data1/players/martianwarrior/tron.jpg \ + data1/players/martianwarrior/tron_normal.tga \ + data1/players/martianwarrior/w_alienblaster.iqm \ + data1/players/martianwarrior/w_alienblaster.skin \ + data1/players/martianwarrior/w_bfg.iqm \ + data1/players/martianwarrior/w_bfg.md2 \ + data1/players/martianwarrior/w_bfg.skin \ + data1/players/martianwarrior/w_blaster.iqm \ + data1/players/martianwarrior/w_blaster.md2 \ + data1/players/martianwarrior/w_blaster.skin \ + data1/players/martianwarrior/w_chaingun.iqm \ + data1/players/martianwarrior/w_chaingun.md2 \ + data1/players/martianwarrior/w_chaingun.skin \ + data1/players/martianwarrior/weapon.iqm \ + data1/players/martianwarrior/weapon.jpg \ + data1/players/martianwarrior/weapon.md2 \ + data1/players/martianwarrior/weapon.skin \ + data1/players/martianwarrior/w_hyperblaster.iqm \ + data1/players/martianwarrior/w_hyperblaster.md2 \ + data1/players/martianwarrior/w_hyperblaster.skin \ + data1/players/martianwarrior/w_machinegun.iqm \ + data1/players/martianwarrior/w_machinegun.md2 \ + data1/players/martianwarrior/w_machinegun.skin \ + data1/players/martianwarrior/w_minderaser.iqm \ + data1/players/martianwarrior/w_minderaser.md2 \ + data1/players/martianwarrior/w_minderaser.skin \ + data1/players/martianwarrior/w_railgun.iqm \ + data1/players/martianwarrior/w_railgun.md2 \ + data1/players/martianwarrior/w_railgun.skin \ + data1/players/martianwarrior/w_rlauncher.iqm \ + data1/players/martianwarrior/w_rlauncher.md2 \ + data1/players/martianwarrior/w_rlauncher.skin \ + data1/players/martianwarrior/w_shotgun.iqm \ + data1/players/martianwarrior/w_shotgun.md2 \ + data1/players/martianwarrior/w_shotgun.skin \ + data1/players/martianwarrior/w_sshotgun.iqm \ + data1/players/martianwarrior/w_sshotgun.md2 \ + data1/players/martianwarrior/w_sshotgun.skin \ + data1/players/martianwarrior/w_violator.iqm \ + data1/players/martianwarrior/w_violator.md2 \ + data1/players/martianwarrior/w_violator.skin \ data1/players/slashbot/blue_i.jpg \ data1/players/slashbot/blue.jpg \ data1/players/slashbot/bump1.wav \ @@ -1728,6 +2280,13 @@ data1/players/slashbot/tris.iqm \ data1/players/slashbot/tris.md2 \ data1/players/slashbot/tris.rgd \ + data1/players/slashbot/tron2_i.jpg \ + data1/players/slashbot/tron2.jpg \ + data1/players/slashbot/tron3_i.jpg \ + data1/players/slashbot/tron3.jpg \ + data1/players/slashbot/tron_i.jpg \ + data1/players/slashbot/tron.jpg \ + data1/players/slashbot/tron_normal.tga \ data1/players/slashbot/w_bfg.iqm \ data1/players/slashbot/w_bfg.md2 \ data1/players/slashbot/w_bfg.skin \ @@ -1747,6 +2306,9 @@ data1/players/slashbot/w_machinegun.iqm \ data1/players/slashbot/w_machinegun.md2 \ data1/players/slashbot/w_machinegun.skin \ + data1/players/slashbot/w_minderaser.iqm \ + data1/players/slashbot/w_minderaser.md2 \ + data1/players/slashbot/w_minderaser.skin \ data1/players/slashbot/w_railgun.iqm \ data1/players/slashbot/w_railgun.md2 \ data1/players/slashbot/w_railgun.skin \ @@ -1761,9 +2323,15 @@ data1/players/slashbot/w_sshotgun.skin \ data1/players/slashbot/w_violator.iqm \ data1/players/slashbot/w_violator.md2 \ - data1/players/slashbot/w_violator.skin \ + data1/players/slashbot/w_violator.skin + + +scriptsdir = $(pkgdatadir) + +nobase_nodist_scripts_DATA = \ data1/scripts/caustics.rscript \ data1/scripts/consoles.rscript \ + data1/scripts/interactive/textures.rscript \ data1/scripts/maps/aoa-atlantis.rscript \ data1/scripts/maps/aoa-corrosion.rscript \ data1/scripts/maps/aoa-frost2k9.rscript \ @@ -1772,12 +2340,14 @@ data1/scripts/maps/cp-ribeye.rscript \ data1/scripts/maps/ctf-corrosion.rscript \ data1/scripts/maps/ctf-cryogenic.rscript \ - data1/scripts/maps/ctf-europa2k8.rscript \ + data1/scripts/maps/ctf-extermination.rscript \ data1/scripts/maps/ctf-frostbyte.rscript \ + data1/scripts/maps/ctf-goregrinder.rscript \ data1/scripts/maps/ctf-invasion.rscript \ data1/scripts/maps/ctf-oblivion.rscript \ + data1/scripts/maps/ctf-purgatory.rscript \ data1/scripts/maps/ctf-titan2k8.rscript \ - data1/scripts/maps/ctf-vesuvius.rscript \ + data1/scripts/maps/ctf-vesuvius2k11.rscript \ data1/scripts/maps/ctf-violator.rscript \ data1/scripts/maps/ctf-zion2k9.rscript \ data1/scripts/maps/db-chromium.rscript \ @@ -1786,49 +2356,52 @@ data1/scripts/maps/dm-annihilation.rscript \ data1/scripts/maps/dm-atlantis2k8.rscript \ data1/scripts/maps/dm-babel2k11.rscript \ - data1/scripts/maps/dm-bloodfactory.rscript \ + data1/scripts/maps/dm-bloodfactory2k12.rscript \ data1/scripts/maps/dm-chasmatic2k9.rscript \ - data1/scripts/maps/dm-chasmatic.rscript \ data1/scripts/maps/dm-command2k9.rscript \ data1/scripts/maps/dm-corrosion.rscript \ - data1/scripts/maps/dm-crucible2k8.rscript \ + data1/scripts/maps/dm-crucible2k12.rscript \ data1/scripts/maps/dm-deathray.rscript \ data1/scripts/maps/dm-deimos2k9.rscript \ data1/scripts/maps/dm-dismal2k11.rscript \ data1/scripts/maps/dm-downfall.rscript \ - data1/scripts/maps/dm-dynamo2k8.rscript \ + data1/scripts/maps/dm-dynamo2k12.rscript \ data1/scripts/maps/dm-eternal.rscript \ - data1/scripts/maps/dm-europa2k8.rscript \ + data1/scripts/maps/dm-extermination.rscript \ data1/scripts/maps/dm-furious2k8.rscript \ data1/scripts/maps/dm-goregrinder.rscript \ data1/scripts/maps/dm-horus.rscript \ data1/scripts/maps/dm-impact.rscript \ data1/scripts/maps/dm-invasion.rscript \ - data1/scripts/maps/dm-leviathan2k8.rscript \ + data1/scripts/maps/dm-leviathan2k12.rscript \ data1/scripts/maps/dm-liberation.rscript \ data1/scripts/maps/dm-neptune.rscript \ data1/scripts/maps/dm-oblivion.rscript \ data1/scripts/maps/dm-omega2k8.rscript \ data1/scripts/maps/dm-purgatory.rscript \ data1/scripts/maps/dm-saucer2k9.rscript \ - data1/scripts/maps/dm-titan2k8.rscript \ data1/scripts/maps/dm-turbo2k8.rscript \ data1/scripts/maps/dm-vesuvius2k11.rscript \ data1/scripts/maps/dm-violator2k11.rscript \ data1/scripts/maps/dm-warmachine2k10.rscript \ data1/scripts/maps/dm-zorn2k11.rscript \ data1/scripts/maps/dm-zion2k9.rscript \ + data1/scripts/maps/tac-extermination.rscript \ data1/scripts/maps/tca-corrosion.rscript \ data1/scripts/maps/tca-cryogenic.rscript \ - data1/scripts/maps/tca-europa2k8.rscript \ - data1/scripts/maps/tca-frost.rscript \ - data1/scripts/maps/tca-titan2k8.rscript \ - data1/scripts/maps/tca-zion.rscript \ + data1/scripts/maps/tca-extermination.rscript \ + data1/scripts/maps/tca-purgatory.rscript \ + data1/scripts/maps/tca-zion2k9.rscript \ data1/scripts/menu.rscript \ data1/scripts/models.rscript \ data1/scripts/normals/normals.rscript \ - data1/scripts/players.rscript \ - data1/scripts/textures.rscript \ + data1/scripts/normals/tron.rscript \ + data1/scripts/textures.rscript + + +sounddir = $(pkgdatadir) + +nobase_nodist_sound_DATA = \ data1/sound/doors/dr1_end.wav \ data1/sound/doors/dr1_mid.wav \ data1/sound/doors/dr1_strt.wav \ @@ -1887,6 +2460,7 @@ data1/sound/misc/menu1.wav \ data1/sound/misc/menu2.wav \ data1/sound/misc/menu3.wav \ + data1/sound/misc/minderaser.wav \ data1/sound/misc/one.wav \ data1/sound/misc/pc_up.wav \ data1/sound/misc/rampage.wav \ @@ -1911,6 +2485,7 @@ data1/sound/misc/trigger1.wav \ data1/sound/misc/two.wav \ data1/sound/misc/w_pkup.wav \ + data1/sound/music/adrenaline.ogg \ data1/sound/music/cp-ribeye.ogg \ data1/sound/music/Divinity_lack_of_success.ogg \ data1/sound/music/Divinity_misunderstood.ogg \ @@ -1921,6 +2496,7 @@ data1/sound/music/dm-dismal.ogg \ data1/sound/music/dm-dynamo.ogg \ data1/sound/music/dm-eternal.ogg \ + data1/sound/music/dm-extermination.ogg \ data1/sound/music/dm-frontier.ogg \ data1/sound/music/dm-horus.ogg \ data1/sound/music/dm-inferno.ogg \ @@ -2006,6 +2582,16 @@ data1/sound/taunts/martianenforcer/taunt3.wav \ data1/sound/taunts/martianenforcer/taunt4.wav \ data1/sound/taunts/martianenforcer/taunt5.wav \ + data1/sound/taunts/martianoverlord/taunt1.wav \ + data1/sound/taunts/martianoverlord/taunt2.wav \ + data1/sound/taunts/martianoverlord/taunt3.wav \ + data1/sound/taunts/martianoverlord/taunt4.wav \ + data1/sound/taunts/martianoverlord/taunt5.wav \ + data1/sound/taunts/martianwarrior/taunt1.wav \ + data1/sound/taunts/martianwarrior/taunt2.wav \ + data1/sound/taunts/martianwarrior/taunt3.wav \ + data1/sound/taunts/martianwarrior/taunt4.wav \ + data1/sound/taunts/martianwarrior/taunt5.wav \ data1/sound/taunts/slashbot/taunt1.wav \ data1/sound/taunts/slashbot/taunt2.wav \ data1/sound/taunts/slashbot/taunt3.wav \ @@ -2018,6 +2604,8 @@ data1/sound/vehicles/shootbomb.wav \ data1/sound/vehicles/shootlaser.wav \ data1/sound/vehicles/warning.wav \ + data1/sound/weapons/adetonatordown.wav \ + data1/sound/weapons/adetonatorup.wav \ data1/sound/weapons/biglaser.wav \ data1/sound/weapons/blastf1a.wav \ data1/sound/weapons/clank.wav \ @@ -2038,14 +2626,19 @@ data1/sound/weapons/machgf3b.wav \ data1/sound/weapons/machgf4b.wav \ data1/sound/weapons/machgf5b.wav \ + data1/sound/weapons/minderaserfire.wav \ data1/sound/weapons/noammo.wav \ data1/sound/weapons/railgf1a.wav \ data1/sound/weapons/rockfly.wav \ data1/sound/weapons/rocklf1a.wav \ data1/sound/weapons/rocklr1b.wav \ data1/sound/weapons/rocklx1a.wav \ + data1/sound/weapons/seeker_fast.wav \ + data1/sound/weapons/seeker.wav \ + data1/sound/weapons/seeker_zap.wav \ data1/sound/weapons/shotgf1b.wav \ data1/sound/weapons/smartgun_hum.wav \ + data1/sound/weapons/spidermov.wav \ data1/sound/weapons/vaporizer_hum.wav \ data1/sound/weapons/viofire1.wav \ data1/sound/weapons/viofire2.wav \ @@ -2073,7 +2666,12 @@ data1/sound/world/vents.wav \ data1/sound/world/water1.wav \ data1/sound/world/weird.wav \ - data1/sound/world/youwin.wav \ + data1/sound/world/youwin.wav + + +texturesdir = $(pkgdatadir) + +nobase_nodist_textures_DATA = \ data1/textures/alien/support5.tga \ data1/textures/arena10/bluetile_hm.tga \ data1/textures/arena10/bluetile_nm.tga \ @@ -2110,10 +2708,10 @@ data1/textures/arena10/building2.tga \ data1/textures/arena10/building3_hm.tga \ data1/textures/arena10/building3_nm.tga \ - data1/textures/arena10/building3.tga \ data1/textures/arena10/building3ns_hm.tga \ data1/textures/arena10/building3ns_nm.tga \ data1/textures/arena10/building3ns.tga \ + data1/textures/arena10/building3.tga \ data1/textures/arena10/building4_nm.tga \ data1/textures/arena10/building4.tga \ data1/textures/arena10/building5_nm.tga \ @@ -2121,27 +2719,27 @@ data1/textures/arena10/building6_nm.tga \ data1/textures/arena10/building6.tga \ data1/textures/arena10/building7_nm.tga \ - data1/textures/arena10/building7.tga \ data1/textures/arena10/building7s_hm.tga \ data1/textures/arena10/building7s_nm.tga \ data1/textures/arena10/building7s.tga \ + data1/textures/arena10/building7.tga \ data1/textures/arena10/building8_nm.tga \ data1/textures/arena10/building8.tga \ data1/textures/arena10/building9_nm.tga \ data1/textures/arena10/building9.tga \ data1/textures/arena10/cement1_hm.tga \ data1/textures/arena10/cement1_nm.tga \ - data1/textures/arena10/cement1.tga \ data1/textures/arena10/cement1ns_nm.tga \ data1/textures/arena10/cement1ns.tga \ + data1/textures/arena10/cement1.tga \ data1/textures/arena10/cobblestone_hm.tga \ - data1/textures/arena10/cobblestone_nm.tga \ - data1/textures/arena10/cobblestone.tga \ data1/textures/arena10/cobblestoneng_hm.tga \ data1/textures/arena10/cobblestoneng_nm.tga \ data1/textures/arena10/cobblestoneng.tga \ + data1/textures/arena10/cobblestone_nm.tga \ data1/textures/arena10/cobblestonens_nm.tga \ data1/textures/arena10/cobblestonens.tga \ + data1/textures/arena10/cobblestone.tga \ data1/textures/arena10/cobwebs2.tga \ data1/textures/arena10/cobwebs.tga \ data1/textures/arena10/cocacola.tga \ @@ -2157,6 +2755,29 @@ data1/textures/arena10/container4_hm.tga \ data1/textures/arena10/container4_nm.tga \ data1/textures/arena10/container4.tga \ + data1/textures/arena10/cretewall1_nm.tga \ + data1/textures/arena10/cretewall1.tga \ + data1/textures/arena10/cretewall2_nm.tga \ + data1/textures/arena10/cretewall2.tga \ + data1/textures/arena10/elecpanel1_hm.tga \ + data1/textures/arena10/elecpanel1_nm.tga \ + data1/textures/arena10/elecpanel1.tga \ + data1/textures/arena10/elecpanel2_hm.tga \ + data1/textures/arena10/elecpanel2_nm.tga \ + data1/textures/arena10/elecpanel2.tga \ + data1/textures/arena10/elecpanel3_hm.tga \ + data1/textures/arena10/elecpanel3_nm.tga \ + data1/textures/arena10/elecpanel3.tga \ + data1/textures/arena10/elecpanel4_hm.tga \ + data1/textures/arena10/elecpanel4_nm.tga \ + data1/textures/arena10/elecpanel4.tga \ + data1/textures/arena10/elecvents_hm.tga \ + data1/textures/arena10/elecvents_nm.tga \ + data1/textures/arena10/elecvents.tga \ + data1/textures/arena10/elecwall1_nm.tga \ + data1/textures/arena10/elecwall1.tga \ + data1/textures/arena10/elecwall2_nm.tga \ + data1/textures/arena10/elecwall2.tga \ data1/textures/arena10/floortile10_hm.tga \ data1/textures/arena10/floortile10_nm.tga \ data1/textures/arena10/floortile10.tga \ @@ -2171,10 +2792,22 @@ data1/textures/arena10/gothwindow1.tga \ data1/textures/arena10/gothwindow2_hm.tga \ data1/textures/arena10/gothwindow2.tga \ + data1/textures/arena10/gothwindow2r_hm.tga \ + data1/textures/arena10/gothwindow2r.tga \ data1/textures/arena10/gothwindow3_hm.tga \ data1/textures/arena10/gothwindow3.tga \ + data1/textures/arena10/gothwindow3r_hm.tga \ + data1/textures/arena10/gothwindow3r.tga \ + data1/textures/arena10/graffitiwall1.tga \ + data1/textures/arena10/grafittiwall2.tga \ data1/textures/arena10/heap1_nm.tga \ data1/textures/arena10/heap1.tga \ + data1/textures/arena10/heap2_nm.tga \ + data1/textures/arena10/heap2.tga \ + data1/textures/arena10/heap3_nm.tga \ + data1/textures/arena10/heap3.tga \ + data1/textures/arena10/heap4_nm.tga \ + data1/textures/arena10/heap4.tga \ data1/textures/arena10/ivy1_nm.tga \ data1/textures/arena10/ivy1.tga \ data1/textures/arena10/ivy2_nm.tga \ @@ -2229,6 +2862,9 @@ data1/textures/arena10/pipes1.tga \ data1/textures/arena10/planks_nm.tga \ data1/textures/arena10/planks.tga \ + data1/textures/arena10/redtile_hm.tga \ + data1/textures/arena10/redtile_nm.tga \ + data1/textures/arena10/redtile.tga \ data1/textures/arena10/road1_hm.tga \ data1/textures/arena10/road1_nm.tga \ data1/textures/arena10/road1.tga \ @@ -2245,10 +2881,16 @@ data1/textures/arena10/rockdirt1ng_hm.tga \ data1/textures/arena10/rockdirt1ng_nm.tga \ data1/textures/arena10/rockdirt1ng.tga \ + data1/textures/arena10/rockdirt1_nm.tga \ data1/textures/arena10/rockdirt1ns_nm.tga \ data1/textures/arena10/rockdirt1ns.tga \ - data1/textures/arena10/rockdirt1_nm.tga \ data1/textures/arena10/rockdirt1.tga \ + data1/textures/arena10/rustdoor1_hm.tga \ + data1/textures/arena10/rustdoor1_nm.tga \ + data1/textures/arena10/rustdoor1.tga \ + data1/textures/arena10/rustwall1_hm.tga \ + data1/textures/arena10/rustwall1_nm.tga \ + data1/textures/arena10/rustwall1.tga \ data1/textures/arena10/sevenup.tga \ data1/textures/arena10/sewergrate1_nm.tga \ data1/textures/arena10/sewergrate1.tga \ @@ -2260,6 +2902,9 @@ data1/textures/arena10/sign5.tga \ data1/textures/arena10/sign6r.tga \ data1/textures/arena10/sign6.tga \ + data1/textures/arena10/sign7_hm.tga \ + data1/textures/arena10/sign7_nm.tga \ + data1/textures/arena10/sign7.tga \ data1/textures/arena10/skyscraper1_hm.tga \ data1/textures/arena10/skyscraper1_nm.tga \ data1/textures/arena10/skyscraper1.tga \ @@ -2284,6 +2929,9 @@ data1/textures/arena10/skyscraper9.tga \ data1/textures/arena10/stacks1.tga \ data1/textures/arena10/stacks2.tga \ + data1/textures/arena10/starsign_hm.tga \ + data1/textures/arena10/starsign_nm.tga \ + data1/textures/arena10/starsign.tga \ data1/textures/arena10/stonewall1_nm.tga \ data1/textures/arena10/stonewall1.tga \ data1/textures/arena10/stonewall2_hm.tga \ @@ -2529,6 +3177,9 @@ data1/textures/arena6/wires1_hm.tga \ data1/textures/arena6/wires1_nm.tga \ data1/textures/arena6/wires1.tga \ + data1/textures/arena7/bluefloro_hm.tga \ + data1/textures/arena7/bluefloro_nm.tga \ + data1/textures/arena7/bluefloro.tga \ data1/textures/arena7/bluegrid.tga \ data1/textures/arena7/ceiling1.tga \ data1/textures/arena7/floor1_hm.tga \ @@ -2684,6 +3335,7 @@ data1/textures/arena9/biggrate1_hm.tga \ data1/textures/arena9/biggrate1_nm.tga \ data1/textures/arena9/biggrate1.tga \ + data1/textures/arena9/blueglass.tga \ data1/textures/arena9/boxmetal_hm.tga \ data1/textures/arena9/boxmetal_nm.tga \ data1/textures/arena9/boxmetal.tga \ @@ -2867,6 +3519,8 @@ data1/textures/arena9/platefloor8_hm.tga \ data1/textures/arena9/platefloor8_nm.tga \ data1/textures/arena9/platefloor8.tga \ + data1/textures/arena9/purpleglass.tga \ + data1/textures/arena9/redglass.tga \ data1/textures/arena9/redtechwall2_hm.tga \ data1/textures/arena9/redtechwall2_nm.tga \ data1/textures/arena9/redtechwall2.tga \ @@ -2924,6 +3578,13 @@ data1/textures/blanks/blank3.tga \ data1/textures/blanks/blank4.tga \ data1/textures/blanks/blank5.tga \ + data1/textures/blanks/blank6.tga \ + data1/textures/blanks/blank7.tga \ + data1/textures/blood/blood_handprint.tga \ + data1/textures/blood/blood_splatter1.tga \ + data1/textures/blood/blood_splatter2.tga \ + data1/textures/blood/blood_splatter3.tga \ + data1/textures/blood/blood_splatter4.tga \ data1/textures/common/0_clip.tga \ data1/textures/common/0_hint.tga \ data1/textures/common/0_sky1.tga \ @@ -3283,6 +3944,7 @@ data1/textures/rage/support_column_nm.tga \ data1/textures/rage/support_column.tga \ data1/textures/rage/support_trim.tga \ + data1/textures/rage/trimlight_blue.tga \ data1/textures/rage/trimlight_purple.tga \ data1/textures/rage/trimlight_red.tga \ data1/textures/rage/wall_blue.tga \ @@ -3298,6 +3960,10 @@ data1/textures/ramp1f.wal \ data1/textures/ramp1.tga \ data1/textures/ramp1.wal \ + data1/textures/rigel/baselightblue.tga \ + data1/textures/rigel/baselightred.tga \ + data1/textures/water/blood_nm.tga \ + data1/textures/water/blood.tga \ data1/textures/water/bluewater_nm.tga \ data1/textures/water/bluewater.tga \ data1/textures/water/clearwater_nm.tga \ @@ -3337,7 +4003,12 @@ data1/textures/xempx/sign-electro_hm.tga \ data1/textures/xempx/sign-electro.tga \ data1/textures/xempx/sign_radioactive_hm.tga \ - data1/textures/xempx/sign_radioactive.tga \ + data1/textures/xempx/sign_radioactive.tga + + +vehiclesdir = $(pkgdatadir) + +nobase_nodist_vehicles_DATA = \ data1/vehicles/bomber/bomb.md2 \ data1/vehicles/bomber/bomb.tga \ data1/vehicles/bomber/console_normal.tga \ @@ -3352,6 +4023,7 @@ data1/vehicles/deathball/deathball.md2 \ data1/vehicles/deathball/deathball.tga \ data1/vehicles/deathball/deathmask.tga \ + data1/vehicles/deathball/skin_fx.tga \ data1/vehicles/deathball/skin_normal.tga \ data1/vehicles/deathball/skin.tga \ data1/vehicles/deathball/v_wep.md2 \ @@ -3372,3 +4044,40 @@ data1/vehicles/strafer/tris.md2 \ data1/vehicles/strafer/v_wep.md2 \ data1/vehicles/strafer/window.md2 + + +graphical_presetsdir = $(pkgdatadir) + +nobase_nodist_graphical_presets_DATA = \ + data1/graphical_presets/compatibility.cfg \ + data1/graphical_presets/maxperformance.cfg \ + data1/graphical_presets/performance.cfg \ + data1/graphical_presets/quality.cfg \ + data1/graphical_presets/maxquality.cfg + + +tacticaldir = $(pkgdatadir) + +nobase_nodist_tactical_DATA = \ + tactical/maps.lst \ + tactical/motd.txt \ + tactical/default.cfg \ + tactical/server.cfg + +gamedata_files = \ + $(nobase_nodist_env_DATA) \ + $(nobase_nodist_fonts_DATA) \ + $(nobase_nodist_gfx_DATA) \ + $(nobase_nodist_levelshots_DATA) \ + $(nobase_nodist_maps_DATA) \ + $(nobase_nodist_models_DATA) \ + $(nobase_nodist_particles_DATA) \ + $(nobase_nodist_pics_DATA) \ + $(nobase_nodist_players_DATA) \ + $(nobase_nodist_scripts_DATA) \ + $(nobase_nodist_sound_DATA) \ + $(nobase_nodist_textures_DATA) \ + $(nobase_nodist_vehicles_DATA) \ + $(nobase_nodist_graphical_presets_DATA) \ + $(nobase_nodist_tactical_DATA) + diff -Nru alien-arena-7.53+dfsg/INSTALL alien-arena-7.66+dfsg/INSTALL --- alien-arena-7.53+dfsg/INSTALL 2010-11-29 22:51:05.000000000 +0000 +++ alien-arena-7.66+dfsg/INSTALL 2013-06-22 20:07:42.000000000 +0000 @@ -1,3 +1,7 @@ +ALIEN ARENA NOTE: +This is a GNU Document with technical details related to GNU Autotools. +For Alien Arena installation information, see the README first. + Installation Instructions ************************* diff -Nru alien-arena-7.53+dfsg/m4/ax_expand_prefix.m4 alien-arena-7.66+dfsg/m4/ax_expand_prefix.m4 --- alien-arena-7.53+dfsg/m4/ax_expand_prefix.m4 1970-01-01 00:00:00.000000000 +0000 +++ alien-arena-7.66+dfsg/m4/ax_expand_prefix.m4 2013-06-22 20:05:22.000000000 +0000 @@ -0,0 +1,66 @@ +# =========================================================================== +# http://www.gnu.org/software/autoconf-archive/ax_expand_prefix.html +# =========================================================================== +# +# SYNOPSIS +# +# AX_EXPAND_PREFIX +# +# DESCRIPTION +# +# When $prefix and $exec_prefix are still set to NONE then set them to the +# usual default values - being based on $ac_default_prefix. - this macro +# can be AC_REQUIREd by other macros that need to compute values for +# installation directories. It has been observed that it was done wrong +# over and over again, so this is a bit more safe to do. +# +# remember - setting exec_prefix='${prefix}' needs you interpolate +# directories multiple times, it is not sufficient to just say +# MYVAR="${datadir}/putter" but you do have to run `eval` a few times, +# sth. like MYVAR=`eval "echo \"$MYVAR\""` done atleast two times. +# +# The implementation of this macro simply picks up the lines that would be +# run at the start of AC_OUTPUT anyway to set the prefix/exec_prefix +# defaults. Between AC_INIT and the first command to AC_REQUIRE this macro +# you can set the two variables to something explicit instead. Probably, +# any command to compute installation directories should be run _after_ +# AM_INIT_AUTOMAKE +# +# LICENSE +# +# Copyright (c) 2008 Guido U. Draheim +# +# This program 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 3 of the License, or (at your +# option) any later version. +# +# This program 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 this program. If not, see . +# +# As a special exception, the respective Autoconf Macro's copyright owner +# gives unlimited permission to copy, distribute and modify the configure +# scripts that are the output of Autoconf when processing the Macro. You +# need not follow the terms of the GNU General Public License when using +# or distributing such scripts, even though portions of the text of the +# Macro appear in them. The GNU General Public License (GPL) does govern +# all other use of the material that constitutes the Autoconf Macro. +# +# This special exception to the GPL applies to versions of the Autoconf +# Macro released by the Autoconf Archive. When you make and distribute a +# modified version of the Autoconf Macro, you may extend this special +# exception to the GPL to apply to your modified version as well. + +#serial 7 + +AC_DEFUN([AX_EXPAND_PREFIX],[dnl + # The prefix default can be set in configure.ac (otherwise it is /usr/local) + test "x$prefix" = xNONE && prefix=$ac_default_prefix + # Let make expand exec_prefix. Allows to override the makevar 'prefix' later + test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' +]) diff -Nru alien-arena-7.53+dfsg/m4/ax_pthread.m4 alien-arena-7.66+dfsg/m4/ax_pthread.m4 --- alien-arena-7.53+dfsg/m4/ax_pthread.m4 2011-12-07 00:44:15.000000000 +0000 +++ alien-arena-7.66+dfsg/m4/ax_pthread.m4 2013-06-22 20:05:22.000000000 +0000 @@ -82,7 +82,7 @@ # modified version of the Autoconf Macro, you may extend this special # exception to the GPL to apply to your modified version as well. -#serial 16 +#serial 18 AU_ALIAS([ACX_PTHREAD], [AX_PTHREAD]) AC_DEFUN([AX_PTHREAD], [ @@ -145,8 +145,8 @@ # --thread-safe: KAI C++ # pthread-config: use pthread-config program (for GNU Pth library) -case "${host_cpu}-${host_os}" in - *solaris*) +case ${host_os} in + solaris*) # On Solaris (at least, for some versions), libc contains stubbed # (non-functional) versions of the pthreads routines, so link-based @@ -159,7 +159,7 @@ ax_pthread_flags="-pthreads pthread -mt -pthread $ax_pthread_flags" ;; - *-darwin*) + darwin*) ax_pthread_flags="-pthread $ax_pthread_flags" ;; esac @@ -254,9 +254,16 @@ AC_MSG_CHECKING([if more special flags are required for pthreads]) flag=no - case "${host_cpu}-${host_os}" in - *-aix* | *-freebsd* | *-darwin*) flag="-D_THREAD_SAFE";; - *solaris* | *-osf* | *-hpux*) flag="-D_REENTRANT";; + case ${host_os} in + aix* | freebsd* | darwin*) flag="-D_THREAD_SAFE";; + osf* | hpux*) flag="-D_REENTRANT";; + solaris*) + if test "$GCC" = "yes"; then + flag="-D_REENTRANT" + else + flag="-mt -D_REENTRANT" + fi + ;; esac AC_MSG_RESULT(${flag}) if test "x$flag" != xno; then diff -Nru alien-arena-7.53+dfsg/m4/pkg.m4 alien-arena-7.66+dfsg/m4/pkg.m4 --- alien-arena-7.53+dfsg/m4/pkg.m4 2011-09-19 01:32:09.000000000 +0000 +++ alien-arena-7.66+dfsg/m4/pkg.m4 2013-06-22 20:05:22.000000000 +0000 @@ -157,3 +157,43 @@ $3 fi[]dnl ])# PKG_CHECK_MODULES + + +# PKG_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable pkgconfigdir as the location where a module +# should install pkg-config .pc files. By default the directory is +# $libdir/pkgconfig, but the default can be changed by passing +# DIRECTORY. The user can override through the --with-pkgconfigdir +# parameter. +AC_DEFUN([PKG_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${libdir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([pkgconfigdir], + [AS_HELP_STRING([--with-pkgconfigdir], pkg_description)],, + [with_pkgconfigdir=]pkg_default) +AC_SUBST([pkgconfigdir], [$with_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_INSTALLDIR + + +# PKG_NOARCH_INSTALLDIR(DIRECTORY) +# ------------------------- +# Substitutes the variable noarch_pkgconfigdir as the location where a +# module should install arch-independent pkg-config .pc files. By +# default the directory is $datadir/pkgconfig, but the default can be +# changed by passing DIRECTORY. The user can override through the +# --with-noarch-pkgconfigdir parameter. +AC_DEFUN([PKG_NOARCH_INSTALLDIR], +[m4_pushdef([pkg_default], [m4_default([$1], ['${datadir}/pkgconfig'])]) +m4_pushdef([pkg_description], + [pkg-config arch-independent installation directory @<:@]pkg_default[@:>@]) +AC_ARG_WITH([noarch-pkgconfigdir], + [AS_HELP_STRING([--with-noarch-pkgconfigdir], pkg_description)],, + [with_noarch_pkgconfigdir=]pkg_default) +AC_SUBST([noarch_pkgconfigdir], [$with_noarch_pkgconfigdir]) +m4_popdef([pkg_default]) +m4_popdef([pkg_description]) +]) dnl PKG_NOARCH_INSTALLDIR diff -Nru alien-arena-7.53+dfsg/Makefile.am alien-arena-7.66+dfsg/Makefile.am --- alien-arena-7.53+dfsg/Makefile.am 2011-03-06 00:34:07.000000000 +0000 +++ alien-arena-7.66+dfsg/Makefile.am 2013-06-22 20:07:42.000000000 +0000 @@ -30,6 +30,9 @@ README endif +# Alien Arena icon +dist_icon_DATA = alienarena.png + # FUSE game server browser and Server management scripts # COPYING and INSTALL are GNU/FSF-supplied documents. EXTRA_DIST = \ @@ -40,8 +43,18 @@ # remove svn directories from distribution staging area after creating # distribution in staging area and before running archiver +# but, it is probably a better idea to export the repository to the +# staging area since export does not include the .svn parts +# +# copy noinst DATA to the distribution directory. while partitioning the +# data files into subdirectory groups solves the problem with exceeding +# command length limits for installation, it does not help with tarball +# creation. +# dist-hook: rm -rf `find $(distdir) -name .svn` + $(foreach GAMEDIR, $(sort $(dir $(gamedata_files))),$(shell mkdir -p $(distdir)/$(GAMEDIR) )) + $(foreach GAMEFILE, $(gamedata_files), $(shell cp -p $(srcdir)/$(GAMEFILE) $(distdir)/$(GAMEFILE))) # # Alternate Install @@ -59,16 +72,10 @@ install-alternate: if ALTERNATE_INSTALL if BUILD_CLIENT - cp $(top_builddir)/source/crx@EXEEXT@ $(srcdir)/crx@EXEEXT@ -if REMOVE_SYMBOLS - strip $(srcdir)/crx@EXEEXT@ -endif + cp $(top_builddir)/source/alienarena@EXEEXT@ $(srcdir)/alienarena@EXEEXT@ endif if BUILD_UNIX - cp $(top_builddir)/source/crx-ded $(srcdir)/crx-ded -if REMOVE_SYMBOLS - strip $(srcdir)/crx-ded -endif + cp $(top_builddir)/source/alienarena-ded $(srcdir)/alienarena-ded endif else @echo "make install-alternate requires configuring with --enable-alternate-install" @@ -89,8 +96,5 @@ exit 1 endif -# -# game data for distribution package -# -include game_data.am +include game_data.am diff -Nru alien-arena-7.53+dfsg/Makefile.in alien-arena-7.66+dfsg/Makefile.in --- alien-arena-7.53+dfsg/Makefile.in 2011-12-27 05:05:14.000000000 +0000 +++ alien-arena-7.66+dfsg/Makefile.in 2013-08-27 20:18:20.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -68,6 +67,51 @@ # VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -86,16 +130,21 @@ POST_UNINSTALL = : build_triplet = @build@ host_triplet = @host@ -DIST_COMMON = README $(am__configure_deps) $(am__dist_doc_DATA_DIST) \ - $(dist_icon_DATA) $(nobase_dist_pkgdata_DATA) \ - $(srcdir)/Makefile.am $(srcdir)/Makefile.in \ - $(srcdir)/game_data.am $(top_srcdir)/config/config.h.in \ - $(top_srcdir)/configure COPYING INSTALL config/compile \ - config/config.guess config/config.sub config/depcomp \ - config/install-sh config/missing +DIST_COMMON = $(srcdir)/game_data.am $(srcdir)/Makefile.in \ + $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(top_srcdir)/config/config.h.in \ + $(am__dist_doc_DATA_DIST) $(dist_icon_DATA) \ + $(nobase_dist_arena_DATA) $(nobase_dist_botinfo_DATA) \ + $(nobase_dist_data1_DATA) COPYING INSTALL README \ + config/compile config/config.guess config/config.sub \ + config/depcomp config/install-sh config/missing \ + $(top_srcdir)/config/compile $(top_srcdir)/config/config.guess \ + $(top_srcdir)/config/config.sub \ + $(top_srcdir)/config/install-sh $(top_srcdir)/config/missing subdir = . ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_expand_prefix.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -106,21 +155,33 @@ CONFIG_HEADER = $(top_builddir)/config/config.h CONFIG_CLEAN_FILES = CONFIG_CLEAN_VPATH_FILES = -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) am__v_at_0 = @ +am__v_at_1 = SOURCES = DIST_SOURCES = -RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \ - html-recursive info-recursive install-data-recursive \ - install-dvi-recursive install-exec-recursive \ - install-html-recursive install-info-recursive \ - install-pdf-recursive install-ps-recursive install-recursive \ - installcheck-recursive installdirs-recursive pdf-recursive \ - ps-recursive uninstall-recursive +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac am__dist_doc_DATA_DIST = docs/license.txt docs/README.txt README am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; am__vpath_adj = case $$p in \ @@ -143,24 +204,73 @@ am__base_list = \ sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \ sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g' +am__uninstall_files_from_dir = { \ + test -z "$$files" \ + || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \ + || { echo " ( cd '$$dir' && rm -f" $$files ")"; \ + $(am__cd) "$$dir" && rm -f $$files; }; \ + } am__installdirs = "$(DESTDIR)$(docdir)" "$(DESTDIR)$(icondir)" \ - "$(DESTDIR)$(pkgdatadir)" -DATA = $(dist_doc_DATA) $(dist_icon_DATA) $(nobase_dist_pkgdata_DATA) + "$(DESTDIR)$(arenadir)" "$(DESTDIR)$(botinfodir)" \ + "$(DESTDIR)$(data1dir)" "$(DESTDIR)$(envdir)" \ + "$(DESTDIR)$(fontsdir)" "$(DESTDIR)$(gfxdir)" \ + "$(DESTDIR)$(graphical_presetsdir)" \ + "$(DESTDIR)$(levelshotsdir)" "$(DESTDIR)$(mapsdir)" \ + "$(DESTDIR)$(modelsdir)" "$(DESTDIR)$(particlesdir)" \ + "$(DESTDIR)$(picsdir)" "$(DESTDIR)$(playersdir)" \ + "$(DESTDIR)$(scriptsdir)" "$(DESTDIR)$(sounddir)" \ + "$(DESTDIR)$(tacticaldir)" "$(DESTDIR)$(texturesdir)" \ + "$(DESTDIR)$(vehiclesdir)" +DATA = $(dist_doc_DATA) $(dist_icon_DATA) $(nobase_dist_arena_DATA) \ + $(nobase_dist_botinfo_DATA) $(nobase_dist_data1_DATA) \ + $(nobase_nodist_env_DATA) $(nobase_nodist_fonts_DATA) \ + $(nobase_nodist_gfx_DATA) \ + $(nobase_nodist_graphical_presets_DATA) \ + $(nobase_nodist_levelshots_DATA) $(nobase_nodist_maps_DATA) \ + $(nobase_nodist_models_DATA) $(nobase_nodist_particles_DATA) \ + $(nobase_nodist_pics_DATA) $(nobase_nodist_players_DATA) \ + $(nobase_nodist_scripts_DATA) $(nobase_nodist_sound_DATA) \ + $(nobase_nodist_tactical_DATA) $(nobase_nodist_textures_DATA) \ + $(nobase_nodist_vehicles_DATA) RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ distclean-recursive maintainer-clean-recursive -AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \ - $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \ - distdir dist dist-all distcheck +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags +CSCOPE = cscope DIST_SUBDIRS = $(SUBDIRS) DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) distdir = $(PACKAGE)-$(VERSION) top_distdir = $(distdir) am__remove_distdir = \ - { test ! -d "$(distdir)" \ - || { find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ - && rm -fr "$(distdir)"; }; } + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) am__relativize = \ dir0=`pwd`; \ sed_first='s,^\([^/]*\)/.*$$,\1,'; \ @@ -188,9 +298,13 @@ reldir="$$dir2" DIST_ARCHIVES = $(distdir).tar.gz GZIP_ENV = --best +DIST_TARGETS = dist-gzip distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' distcleancheck_listfiles = find . -type f -print ACLOCAL = @ACLOCAL@ +ALIENARENA_HOMEDIR = @ALIENARENA_HOMEDIR@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ @@ -261,6 +375,8 @@ XXF86DGA_LIBS = @XXF86DGA_LIBS@ XXF86VM_CFLAGS = @XXF86VM_CFLAGS@ XXF86VM_LIBS = @XXF86VM_LIBS@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -324,6 +440,9 @@ @INSTALL_DOCS_TRUE@ README +# Alien Arena icon +dist_icon_DATA = alienarena.png + # FUSE game server browser and Server management scripts # COPYING and INSTALL are GNU/FSF-supplied documents. EXTRA_DIST = \ @@ -332,15 +451,19 @@ COPYING \ INSTALL -dist_icon_DATA = alienarena.png -nobase_dist_pkgdata_DATA = \ +arenadir = $(pkgdatadir) +nobase_dist_arena_DATA = \ arena/motd.txt \ - arena/server.cfg \ + arena/server.cfg + +botinfodir = $(pkgdatadir) +nobase_dist_botinfo_DATA = \ botinfo/^1Squirtney.cfg \ botinfo/^3Marty.cfg \ botinfo/^3Shploik!.cfg \ botinfo/^4Invad^6ur.cfg \ botinfo/^5Beavis.cfg \ + botinfo/^7Ruh^4Lur.cfg \ botinfo/^7The^1Zapp.cfg \ botinfo/Astral.cfg \ botinfo/Beavis.cfg \ @@ -371,37 +494,37 @@ botinfo/dm-annihilation.tmp \ botinfo/dm-atlantis2k8.tmp \ botinfo/dm-babel2k11.tmp \ - botinfo/dm-bloodfactory.tmp \ + botinfo/dm-bloodfactory2k12.tmp \ botinfo/dm-chasmatic2k9.tmp \ botinfo/dm-command2k9.tmp \ botinfo/dm-corrosion.tmp \ - botinfo/dm-crucible2k8.tmp \ + botinfo/dm-crucible2k12.tmp \ botinfo/dm-deathray.tmp \ botinfo/dm-deimos2k9.tmp \ botinfo/dm-dismal2k11.tmp \ botinfo/dm-downfall.tmp \ - botinfo/dm-dynamo2k8.tmp \ + botinfo/dm-dynamo2k12.tmp \ botinfo/dm-eternal.tmp \ - botinfo/dm-europa2k8.tmp \ + botinfo/dm-extermination.tmp \ botinfo/dm-furious2k8.tmp \ botinfo/dm-goregrinder.tmp \ botinfo/dm-horus.tmp \ botinfo/dm-impact.tmp \ botinfo/dm-invasion.tmp \ - botinfo/dm-leviathan2k8.tmp \ + botinfo/dm-leviathan2k12.tmp \ botinfo/dm-liberation.tmp \ botinfo/dm-neptune.tmp \ botinfo/dm-oblivion.tmp \ botinfo/dm-omega2k8.tmp \ botinfo/dm-purgatory.tmp \ botinfo/dm-saucer2k9.tmp \ - botinfo/dm-titan2k8.tmp \ botinfo/dm-turbo2k8.tmp \ botinfo/dm-vesuvius2k11.tmp \ botinfo/dm-violator2k11.tmp \ botinfo/dm-warmachine2k10.tmp \ botinfo/dm-zion2k9.tmp \ botinfo/dm-zorn2k11.tmp \ + botinfo/tac-extermination.tmp \ botinfo/nav/aoa-atlantis.nod \ botinfo/nav/aoa-corrosion.nod \ botinfo/nav/aoa-frost2k9.nod \ @@ -412,10 +535,12 @@ botinfo/nav/ctf-cryogenic.nod \ botinfo/nav/ctf-europa2k8.nod \ botinfo/nav/ctf-frostbyte.nod \ + botinfo/nav/ctf-goregrinder.nod \ botinfo/nav/ctf-invasion.nod \ botinfo/nav/ctf-oblivion.nod \ + botinfo/nav/ctf-purgatory.nod \ botinfo/nav/ctf-titan2k8.nod \ - botinfo/nav/ctf-vesuvius.nod \ + botinfo/nav/ctf-vesuvius2k11.nod \ botinfo/nav/ctf-violator.nod \ botinfo/nav/ctf-zion2k9.nod \ botinfo/nav/db-chromium.nod \ @@ -424,24 +549,25 @@ botinfo/nav/dm-annihilation.nod \ botinfo/nav/dm-atlantis2k8.nod \ botinfo/nav/dm-babel2k11.nod \ - botinfo/nav/dm-bloodfactory.nod \ + botinfo/nav/dm-bloodfactory2k12.nod \ botinfo/nav/dm-chasmatic2k9.nod \ botinfo/nav/dm-command2k9.nod \ botinfo/nav/dm-corrosion.nod \ - botinfo/nav/dm-crucible2k8.nod \ + botinfo/nav/dm-crucible2k12.nod \ botinfo/nav/dm-deathray.nod \ botinfo/nav/dm-deimos2k9.nod \ botinfo/nav/dm-dismal2k11.nod \ botinfo/nav/dm-downfall.nod \ - botinfo/nav/dm-dynamo2k8.nod \ + botinfo/nav/dm-dynamo2k12.nod \ botinfo/nav/dm-eternal.nod \ botinfo/nav/dm-europa2k8.nod \ + botinfo/nav/dm-extermination.nod \ botinfo/nav/dm-furious2k8.nod \ botinfo/nav/dm-goregrinder.nod \ botinfo/nav/dm-horus.nod \ botinfo/nav/dm-impact.nod \ botinfo/nav/dm-invasion.nod \ - botinfo/nav/dm-leviathan2k8.nod \ + botinfo/nav/dm-leviathan2k12.nod \ botinfo/nav/dm-liberation.nod \ botinfo/nav/dm-neptune.nod \ botinfo/nav/dm-oblivion.nod \ @@ -455,20 +581,42 @@ botinfo/nav/dm-warmachine2k10.nod \ botinfo/nav/dm-zion2k9.nod \ botinfo/nav/dm-zorn2k11.nod \ + botinfo/nav/tac-extermination.nod \ botinfo/nav/tca-corrosion.nod \ botinfo/nav/tca-cryogenic.nod \ botinfo/nav/tca-europa2k8.nod \ botinfo/nav/tca-frost.nod \ + botinfo/nav/tca-invasion.nod \ + botinfo/nav/tca-purgatory.nod \ botinfo/nav/tca-titan2k8.nod \ botinfo/nav/tca-zion.nod \ + botinfo/nav/tca-zion2k9.nod + +data1dir = $(pkgdatadir) +nobase_dist_data1_DATA = \ data1/default.cfg \ - data1/maps.lst \ + data1/maps.lst + + +# Note: partitioning the data files like this keeps the command line length +# in legal range for installation. However it does not work for creation +# of the distribution package. Hence, "nodist" is specified and data is +# copied to the distribution directory in "dist-hook:" +# +envdir = $(pkgdatadir) +nobase_nodist_env_DATA = \ data1/env/alienbk.tga \ data1/env/aliendn.tga \ data1/env/alienft.tga \ data1/env/alienlf.tga \ data1/env/alienrt.tga \ data1/env/alienup.tga \ + data1/env/deadcitybk.tga \ + data1/env/deadcitydn.tga \ + data1/env/deadcityft.tga \ + data1/env/deadcitylf.tga \ + data1/env/deadcityrt.tga \ + data1/env/deadcityup.tga \ data1/env/egyptbk.tga \ data1/env/egyptdn.tga \ data1/env/egyptft.tga \ @@ -510,17 +658,22 @@ data1/env/tekcityft.tga \ data1/env/tekcitylf.tga \ data1/env/tekcityrt.tga \ - data1/env/tekcityup.tga \ + data1/env/tekcityup.tga + +fontsdir = $(pkgdatadir) +nobase_nodist_fonts_DATA = \ data1/fonts/agentred.ttf \ data1/fonts/bluehigd.ttf \ data1/fonts/chicomono.ttf \ data1/fonts/creativeblock.ttf \ - data1/fonts/default.tga \ - data1/fonts/digital.tga \ - data1/fonts/fat.tga \ data1/fonts/freemono.ttf \ data1/fonts/freesans.ttf \ - data1/fonts/menu.tga \ + data1/fonts/orbitron.ttf \ + data1/fonts/crackdown.ttf \ + data1/fonts/bendable.ttf + +gfxdir = $(pkgdatadir) +nobase_nodist_gfx_DATA = \ data1/gfx/aaglow.tga \ data1/gfx/adrenalbase.tga \ data1/gfx/adrenalmask.tga \ @@ -536,10 +689,14 @@ data1/gfx/beamfx.tga \ data1/gfx/beamgunfx.tga \ data1/gfx/blasterfx.tga \ + data1/gfx/blooddrops.jpg \ + data1/gfx/blooddrops_nm.jpg \ data1/gfx/bluecyborgfx.tga \ data1/gfx/bluelightning2.tga \ data1/gfx/bluelightning.tga \ data1/gfx/bluemartianfx.tga \ + data1/gfx/blueoverlordfx.tga \ + data1/gfx/bluewarriorfx.tga \ data1/gfx/bubbles.tga \ data1/gfx/caustics.tga \ data1/gfx/chrome2.tga \ @@ -556,7 +713,9 @@ data1/gfx/defaultenforcerfx.tga \ data1/gfx/defaultlaurenfx.tga \ data1/gfx/defaultmartianfx.tga \ + data1/gfx/defaultoverlordfx.tga \ data1/gfx/defaultslashbotfx.tga \ + data1/gfx/defaultwarriorfx.tga \ data1/gfx/disruptorfx.tga \ data1/gfx/disruptormask.tga \ data1/gfx/distortwave.jpg \ @@ -564,6 +723,7 @@ data1/gfx/dmbeyondreflection.tga \ data1/gfx/dmdreadreflection.tga \ data1/gfx/dmturboreflection.tga \ + data1/gfx/droplets.jpg \ data1/gfx/e6launchengine_fx.tga \ data1/gfx/e6launchengine_glow.tga \ data1/gfx/e6launchengine_mask.tga \ @@ -594,8 +754,6 @@ data1/gfx/greencircuit.tga \ data1/gfx/greenlightning.tga \ data1/gfx/greenline.tga \ - data1/gfx/hastebase.tga \ - data1/gfx/hastemask.tga \ data1/gfx/hconsole2.tga \ data1/gfx/hconsole3.tga \ data1/gfx/hconsole.tga \ @@ -605,7 +763,11 @@ data1/gfx/m_banner_main_mask.tga \ data1/gfx/menubar1.tga \ data1/gfx/menubar2.tga \ + data1/gfx/menubar3.tga \ + data1/gfx/menubar4.tga \ data1/gfx/metal3glow.tga \ + data1/gfx/metalenvmap.jpg \ + data1/gfx/minderaser_fx.tga \ data1/gfx/mirrorspec.tga \ data1/gfx/noise.tga \ data1/gfx/plate5fx.tga \ @@ -641,13 +803,40 @@ data1/gfx/sun.jpg \ data1/gfx/tekwallmask.tga \ data1/gfx/trim2mask.tga \ + data1/gfx/tron2_commanderfx.tga \ + data1/gfx/tron2_cyborgfx.tga \ + data1/gfx/tron2_enforcerfx.tga \ + data1/gfx/tron2_laurenfx.tga \ + data1/gfx/tron2_martianfx.tga \ + data1/gfx/tron2_overlordfx.tga \ + data1/gfx/tron2_slashbotfx.tga \ + data1/gfx/tron2_warriorfx.tga \ + data1/gfx/tron3_commanderfx.tga \ + data1/gfx/tron3_cyborgfx.tga \ + data1/gfx/tron3_enforcerfx.tga \ + data1/gfx/tron3_laurenfx.tga \ + data1/gfx/tron3_martianfx.tga \ + data1/gfx/tron3_overlordfx.tga \ + data1/gfx/tron3_slashbotfx.tga \ + data1/gfx/tron3_warriorfx.tga \ + data1/gfx/tron_commanderfx.tga \ + data1/gfx/tron_cyborgfx.tga \ + data1/gfx/tron_enforcerfx.tga \ + data1/gfx/tron_laurenfx.tga \ + data1/gfx/tron_martianfx.tga \ + data1/gfx/tron_overlordfx.tga \ + data1/gfx/tron_slashbotfx.tga \ + data1/gfx/tron_warriorfx.tga \ data1/gfx/vaporbase.tga \ data1/gfx/vapormask.tga \ data1/gfx/violator2fx.tga \ data1/gfx/violatorfx.tga \ data1/gfx/water/distort1.tga \ data1/gfx/water/normal1.tga \ - data1/gfx/yellowline.tga \ + data1/gfx/yellowline.tga + +levelshotsdir = $(pkgdatadir) +nobase_nodist_levelshots_DATA = \ data1/levelshots/aoa-atlantis.jpg \ data1/levelshots/aoa-atlantis.txt \ data1/levelshots/aoa-corrosion.jpg \ @@ -664,18 +853,22 @@ data1/levelshots/ctf-corrosion.txt \ data1/levelshots/ctf-cryogenic.jpg \ data1/levelshots/ctf-cryogenic.txt \ - data1/levelshots/ctf-europa2k8.jpg \ - data1/levelshots/ctf-europa2k8.txt \ + data1/levelshots/ctf-extermination.jpg \ + data1/levelshots/ctf-extermination.txt \ data1/levelshots/ctf-frostbyte.jpg \ data1/levelshots/ctf-frostbyte.txt \ + data1/levelshots/ctf-goregrinder.jpg \ + data1/levelshots/ctf-goregrinder.txt \ data1/levelshots/ctf-invasion.jpg \ data1/levelshots/ctf-invasion.txt \ data1/levelshots/ctf-oblivion.jpg \ data1/levelshots/ctf-oblivion.txt \ + data1/levelshots/ctf-purgatory.jpg \ + data1/levelshots/ctf-purgatory.txt \ data1/levelshots/ctf-titan2k8.jpg \ data1/levelshots/ctf-titan2k8.txt \ - data1/levelshots/ctf-vesuvius.jpg \ - data1/levelshots/ctf-vesuvius.txt \ + data1/levelshots/ctf-vesuvius2k11.jpg \ + data1/levelshots/ctf-vesuvius2k11.txt \ data1/levelshots/ctf-violator.jpg \ data1/levelshots/ctf-violator.txt \ data1/levelshots/ctf-zion2k9.jpg \ @@ -692,16 +885,16 @@ data1/levelshots/dm-atlantis2k8.txt \ data1/levelshots/dm-babel2k11.jpg \ data1/levelshots/dm-babel2k11.txt \ - data1/levelshots/dm-bloodfactory.jpg \ - data1/levelshots/dm-bloodfactory.txt \ + data1/levelshots/dm-bloodfactory2k12.jpg \ + data1/levelshots/dm-bloodfactory2k12.txt \ data1/levelshots/dm-chasmatic2k9.jpg \ data1/levelshots/dm-chasmatic2k9.txt \ data1/levelshots/dm-command2k9.jpg \ data1/levelshots/dm-command2k9.txt \ data1/levelshots/dm-corrosion.jpg \ data1/levelshots/dm-corrosion.txt \ - data1/levelshots/dm-crucible2k8.jpg \ - data1/levelshots/dm-crucible2k8.txt \ + data1/levelshots/dm-crucible2k12.jpg \ + data1/levelshots/dm-crucible2k12.txt \ data1/levelshots/dm-deathray.jpg \ data1/levelshots/dm-deathray.txt \ data1/levelshots/dm-deimos2k9.jpg \ @@ -710,12 +903,12 @@ data1/levelshots/dm-dismal2k11.txt \ data1/levelshots/dm-downfall.jpg \ data1/levelshots/dm-downfall.txt \ - data1/levelshots/dm-dynamo2k8.jpg \ - data1/levelshots/dm-dynamo2k8.txt \ + data1/levelshots/dm-dynamo2k12.jpg \ + data1/levelshots/dm-dynamo2k12.txt \ data1/levelshots/dm-eternal.jpg \ data1/levelshots/dm-eternal.txt \ - data1/levelshots/dm-europa2k8.jpg \ - data1/levelshots/dm-europa2k8.txt \ + data1/levelshots/dm-extermination.jpg \ + data1/levelshots/dm-extermination.txt \ data1/levelshots/dm-furious2k8.jpg \ data1/levelshots/dm-furious2k8.txt \ data1/levelshots/dm-goregrinder.jpg \ @@ -726,8 +919,8 @@ data1/levelshots/dm-impact.txt \ data1/levelshots/dm-invasion.jpg \ data1/levelshots/dm-invasion.txt \ - data1/levelshots/dm-leviathan2k8.jpg \ - data1/levelshots/dm-leviathan2k8.txt \ + data1/levelshots/dm-leviathan2k12.jpg \ + data1/levelshots/dm-leviathan2k12.txt \ data1/levelshots/dm-liberation.jpg \ data1/levelshots/dm-liberation.txt \ data1/levelshots/dm-neptune.jpg \ @@ -740,8 +933,6 @@ data1/levelshots/dm-purgatory.txt \ data1/levelshots/dm-saucer2k9.jpg \ data1/levelshots/dm-saucer2k9.txt \ - data1/levelshots/dm-titan2k8.jpg \ - data1/levelshots/dm-titan2k8.txt \ data1/levelshots/dm-turbo2k8.jpg \ data1/levelshots/dm-turbo2k8.txt \ data1/levelshots/dm-vesuvius2k11.jpg \ @@ -754,18 +945,25 @@ data1/levelshots/dm-zorn2k11.txt \ data1/levelshots/dm-zion2k9.jpg \ data1/levelshots/dm-zion2k9.txt \ + data1/levelshots/tac-extermination.jpg \ + data1/levelshots/tac-extermination.txt \ data1/levelshots/tca-corrosion.jpg \ data1/levelshots/tca-corrosion.txt \ data1/levelshots/tca-cryogenic.jpg \ data1/levelshots/tca-cryogenic.txt \ - data1/levelshots/tca-europa2k8.jpg \ - data1/levelshots/tca-europa2k8.txt \ + data1/levelshots/tca-extermination.jpg \ + data1/levelshots/tca-extermination.txt \ data1/levelshots/tca-frost.jpg \ data1/levelshots/tca-frost.txt \ + data1/levelshots/tca-purgatory.jpg \ + data1/levelshots/tca-purgatory.txt \ data1/levelshots/tca-titan2k8.jpg \ data1/levelshots/tca-titan2k8.txt \ - data1/levelshots/tca-zion.jpg \ - data1/levelshots/tca-zion.txt \ + data1/levelshots/tca-zion2k9.jpg \ + data1/levelshots/tca-zion2k9.txt + +mapsdir = $(pkgdatadir) +nobase_nodist_maps_DATA = \ data1/maps/aoa-atlantis.bsp \ data1/maps/aoa-corrosion.bsp \ data1/maps/aoa-frost2k9.bsp \ @@ -773,60 +971,85 @@ data1/maps/aoa-zorn.bsp \ data1/maps/cp-ribeye.bsp \ data1/maps/ctf-corrosion.bsp \ + data1/maps/ctf-corrosion.lightmap \ data1/maps/ctf-cryogenic.bsp \ - data1/maps/ctf-europa2k8.bsp \ + data1/maps/ctf-extermination.bsp \ + data1/maps/ctf-extermination.lightmap \ data1/maps/ctf-frostbyte.bsp \ + data1/maps/ctf-goregrinder.bsp \ data1/maps/ctf-invasion.bsp \ + data1/maps/ctf-invasion.lightmap \ data1/maps/ctf-oblivion.bsp \ + data1/maps/ctf-oblivion.lightmap \ + data1/maps/ctf-purgatory.bsp \ data1/maps/ctf-titan2k8.bsp \ - data1/maps/ctf-vesuvius.bsp \ + data1/maps/ctf-vesuvius2k11.bsp \ + data1/maps/ctf-vesuvius2k11.lightmap \ data1/maps/ctf-violator.bsp \ data1/maps/ctf-zion2k9.bsp \ data1/maps/db-chromium.bsp \ data1/maps/db-icarus.bsp \ data1/maps/db-vesuvius.bsp \ data1/maps/dm-annihilation.bsp \ + data1/maps/dm-annihilation.lightmap \ data1/maps/dm-atlantis2k8.bsp \ data1/maps/dm-babel2k11.bsp \ - data1/maps/dm-bloodfactory.bsp \ + data1/maps/dm-bloodfactory2k12.bsp \ data1/maps/dm-chasmatic2k9.bsp \ data1/maps/dm-command2k9.bsp \ data1/maps/dm-corrosion.bsp \ - data1/maps/dm-crucible2k8.bsp \ + data1/maps/dm-corrosion.lightmap \ + data1/maps/dm-crucible2k12.bsp \ + data1/maps/dm-crucible2k12.lightmap \ data1/maps/dm-deathray.bsp \ data1/maps/dm-deimos2k9.bsp \ + data1/maps/dm-deimos2k9.lightmap \ data1/maps/dm-dismal2k11.bsp \ data1/maps/dm-downfall.bsp \ - data1/maps/dm-dynamo2k8.bsp \ + data1/maps/dm-dynamo2k12.bsp \ + data1/maps/dm-dynamo2k12.lightmap \ data1/maps/dm-eternal.bsp \ - data1/maps/dm-europa2k8.bsp \ + data1/maps/dm-extermination.bsp \ + data1/maps/dm-extermination.lightmap \ data1/maps/dm-furious2k8.bsp \ + data1/maps/dm-furious2k8.lightmap \ data1/maps/dm-goregrinder.bsp \ + data1/maps/dm-goregrinder.lightmap \ data1/maps/dm-horus.bsp \ data1/maps/dm-impact.bsp \ + data1/maps/dm-impact.lightmap \ data1/maps/dm-invasion.bsp \ - data1/maps/dm-leviathan2k8.bsp \ + data1/maps/dm-invasion.lightmap \ + data1/maps/dm-leviathan2k12.bsp \ data1/maps/dm-liberation.bsp \ data1/maps/dm-neptune.bsp \ + data1/maps/dm-neptune.lightmap \ data1/maps/dm-oblivion.bsp \ + data1/maps/dm-oblivion.lightmap \ data1/maps/dm-omega2k8.bsp \ + data1/maps/dm-omega2k8.lightmap \ data1/maps/dm-purgatory.bsp \ data1/maps/dm-saucer2k9.bsp \ - data1/maps/dm-titan2k8.bsp \ data1/maps/dm-turbo2k8.bsp \ data1/maps/dm-vesuvius2k11.bsp \ + data1/maps/dm-vesuvius2k11.lightmap \ data1/maps/dm-violator2k11.bsp \ + data1/maps/dm-violator2k11.lightmap \ data1/maps/dm-warmachine2k10.bsp \ + data1/maps/dm-warmachine2k10.lightmap \ data1/maps/dm-zorn2k11.bsp \ data1/maps/dm-zion2k9.bsp \ + data1/maps/tac-extermination.bsp \ + data1/maps/tac-extermination.lightmap \ data1/maps/tca-corrosion.bsp \ + data1/maps/tca-corrosion.lightmap \ data1/maps/tca-cryogenic.bsp \ - data1/maps/tca-europa2k8.bsp \ - data1/maps/tca-frost.bsp \ + data1/maps/tca-extermination.bsp \ data1/maps/tca-invasion \ data1/maps/tca-invasion.entdef \ + data1/maps/tca-purgatory.bsp \ data1/maps/tca-titan2k8.bsp \ - data1/maps/tca-zion.bsp \ + data1/maps/tca-zion2k9.bsp \ data1/maps/meshes/arch_fx.tga \ data1/maps/meshes/arch.md2 \ data1/maps/meshes/arch_normal.jpg \ @@ -875,11 +1098,13 @@ data1/maps/meshes/electrodecover.md2 \ data1/maps/meshes/electrode.md2 \ data1/maps/meshes/electrode.tga \ + data1/maps/meshes/electrode_normal.tga \ data1/maps/meshes/eyejar_fx.tga \ data1/maps/meshes/eyejarglass.md2 \ data1/maps/meshes/eyejar.md2 \ data1/maps/meshes/eyejar_normal.tga \ data1/maps/meshes/eyejar.tga \ + data1/maps/meshes/flagpad_fx.tga \ data1/maps/meshes/flagpad.md2 \ data1/maps/meshes/flagpad_normal.tga \ data1/maps/meshes/flagpad.tga \ @@ -887,6 +1112,9 @@ data1/maps/meshes/generator.jpg \ data1/maps/meshes/generator.md2 \ data1/maps/meshes/generator_normal.jpg \ + data1/maps/meshes/gothic/blade.jpg \ + data1/maps/meshes/gothic/blade.md2 \ + data1/maps/meshes/gothic/blade_normal.jpg \ data1/maps/meshes/gothic/ceillamp.md2 \ data1/maps/meshes/gothic/column1.jpg \ data1/maps/meshes/gothic/column1.md2 \ @@ -896,7 +1124,9 @@ data1/maps/meshes/gothic/dragon_normal.jpg \ data1/maps/meshes/gothic/fdstatue_green.md2 \ data1/maps/meshes/gothic/fd_statue_normal.jpg \ + data1/maps/meshes/gothic/fdstatue_red.md2 \ data1/maps/meshes/gothic/freedom_statue_green.jpg \ + data1/maps/meshes/gothic/freedom_statue_red.jpg \ data1/maps/meshes/gothic/lamp2b_fx.tga \ data1/maps/meshes/gothic/lamp2b.md2 \ data1/maps/meshes/gothic/lamp2b.tga \ @@ -908,6 +1138,15 @@ data1/maps/meshes/gothic/lamp.md2 \ data1/maps/meshes/gothic/lamp_normal.tga \ data1/maps/meshes/gothic/lamp.tga \ + data1/maps/meshes/gothic/meat1.jpg \ + data1/maps/meshes/gothic/meat1.md2 \ + data1/maps/meshes/gothic/meat1_normal.jpg \ + data1/maps/meshes/gothic/meat2.jpg \ + data1/maps/meshes/gothic/meat2.md2 \ + data1/maps/meshes/gothic/meat2_normal.jpg \ + data1/maps/meshes/gothic/meat3.jpg \ + data1/maps/meshes/gothic/meat3.md2 \ + data1/maps/meshes/gothic/meat3_normal.jpg \ data1/maps/meshes/gothic/neptune.jpg \ data1/maps/meshes/gothic/neptune.md2 \ data1/maps/meshes/gothic/neptune_normal.jpg \ @@ -922,6 +1161,9 @@ data1/maps/meshes/gothic/throne.jpg \ data1/maps/meshes/gothic/throne.md2 \ data1/maps/meshes/gothic/throne_normal.jpg \ + data1/maps/meshes/greenblob_fx.tga \ + data1/maps/meshes/greenblob.jpg \ + data1/maps/meshes/greenblob.md2 \ data1/maps/meshes/hanger.md2 \ data1/maps/meshes/hanger_normal.jpg \ data1/maps/meshes/hanger.tga \ @@ -945,6 +1187,7 @@ data1/maps/meshes/metpipe3.md2 \ data1/maps/meshes/mhelmet.md2 \ data1/maps/meshes/monitor2.md2 \ + data1/maps/meshes/monitor_normal.tga \ data1/maps/meshes/monitor.jpg \ data1/maps/meshes/monitormask.tga \ data1/maps/meshes/monitor.md2 \ @@ -992,6 +1235,9 @@ data1/maps/meshes/straightconduit.md2 \ data1/maps/meshes/tech/bigribtube.jpg \ data1/maps/meshes/tech/bigribtube_normal.jpg \ + data1/maps/meshes/tech/blueribtube1.md2 \ + data1/maps/meshes/tech/blueribtube_fx.tga \ + data1/maps/meshes/tech/blueribtube.jpg \ data1/maps/meshes/tech/glasstube.md2 \ data1/maps/meshes/tech/railing2.md2 \ data1/maps/meshes/tech/railing3.md2 \ @@ -1020,18 +1266,26 @@ data1/maps/meshes/tech/rotator.jpg \ data1/maps/meshes/tech/rotator.md2 \ data1/maps/meshes/tech/rotator_normal.jpg \ + data1/maps/meshes/tech/rotimage1_normal.tga \ data1/maps/meshes/tech/rotimage1.tga \ + data1/maps/meshes/tech/rotimage2_normal.tga \ data1/maps/meshes/tech/rotimage2.tga \ + data1/maps/meshes/tech/rotimage3_normal.tga \ data1/maps/meshes/tech/rotimage3.tga \ + data1/maps/meshes/tech/rotimage4_normal.tga \ data1/maps/meshes/tech/rotimage4.tga \ data1/maps/meshes/tech/slimegen2.md2 \ data1/maps/meshes/tech/slimegen.jpg \ data1/maps/meshes/tech/slimegen.md2 \ data1/maps/meshes/tech/slimegen_fx.tga \ + data1/maps/meshes/tech/slimegenblue_fx.tga \ + data1/maps/meshes/tech/slimegenblue.jpg \ + data1/maps/meshes/tech/slimegenblue.md2 \ data1/maps/meshes/tech/slimegen_normal.jpg \ data1/maps/meshes/tech/slimegenred_fx.tga \ data1/maps/meshes/tech/slimegenred.jpg \ data1/maps/meshes/tech/slimegenred.md2 \ + data1/maps/meshes/tech/slimegen_s.md2 \ data1/maps/meshes/tech/slimetube1.md2 \ data1/maps/meshes/tech/turbinefan.jpg \ data1/maps/meshes/tech/turbinefan.md2 \ @@ -1045,8 +1299,15 @@ data1/maps/meshes/unit.jpg \ data1/maps/meshes/unit.md2 \ data1/maps/meshes/unit_normal.jpg \ + data1/maps/meshes/urban/bluelantern_fx.tga \ + data1/maps/meshes/urban/bluelantern.jpg \ + data1/maps/meshes/urban/bluelantern.md2 \ + data1/maps/meshes/urban/lantern_normal.jpg \ data1/maps/meshes/urban/mercedes.jpg \ data1/maps/meshes/urban/mercedes.md2 \ + data1/maps/meshes/urban/orangelantern_fx.tga \ + data1/maps/meshes/urban/orangelantern.jpg \ + data1/maps/meshes/urban/orangelantern.md2 \ data1/maps/meshes/urban/rioblue.jpg \ data1/maps/meshes/urban/rioblue.md2 \ data1/maps/meshes/urban/rio_normal.jpg \ @@ -1057,6 +1318,12 @@ data1/maps/meshes/urban/roadbarrell.jpg \ data1/maps/meshes/urban/roadbarrell.md2 \ data1/maps/meshes/urban/roadbarrell_normal.jpg \ + data1/maps/meshes/urban/rope.jpg \ + data1/maps/meshes/urban/rope.md2 \ + data1/maps/meshes/urban/yellowlantern_fx.tga \ + data1/maps/meshes/urban/yellowlantern.jpg \ + data1/maps/meshes/urban/yellowlantern.md2 \ + data1/maps/meshes/weaponpad_fx.tga \ data1/maps/meshes/weaponpad.md2 \ data1/maps/meshes/weaponpad_normal.tga \ data1/maps/meshes/weaponpad.tga \ @@ -1105,15 +1372,21 @@ data1/maps/scripts/ctf-cryogenic.fog \ data1/maps/scripts/ctf-cryogenic.mus \ data1/maps/scripts/ctf-europa2k8.mus \ + data1/maps/scripts/ctf-extermination.fog \ + data1/maps/scripts/ctf-extermination.mus \ data1/maps/scripts/ctf-frostbyte.fog \ data1/maps/scripts/ctf-frostbyte.mus \ - data1/maps/scripts/ctf-frost.fog \ + data1/maps/scripts/ctf-goregrinder.fog \ + data1/maps/scripts/ctf-goregrinder.mus \ + data1/maps/scripts/ctf-invasion.fog \ data1/maps/scripts/ctf-invasion.mus \ data1/maps/scripts/ctf-oblivion.fog \ data1/maps/scripts/ctf-oblivion.mus \ + data1/maps/scripts/ctf-purgatory.fog \ + data1/maps/scripts/ctf-purgatory.mus \ data1/maps/scripts/ctf-titan2k8.mus \ - data1/maps/scripts/ctf-vesuvius.fog \ - data1/maps/scripts/ctf-vesuvius.mus \ + data1/maps/scripts/ctf-vesuvius2k11.fog \ + data1/maps/scripts/ctf-vesuvius2k11.mus \ data1/maps/scripts/ctf-violator.fog \ data1/maps/scripts/ctf-violator.mus \ data1/maps/scripts/ctf-zion2k9.mus \ @@ -1126,16 +1399,16 @@ data1/maps/scripts/dm-annihilation.mus \ data1/maps/scripts/dm-babel2k11.fog \ data1/maps/scripts/dm-babel2k11.mus \ - data1/maps/scripts/dm-bloodfactory.fog \ - data1/maps/scripts/dm-bloodfactory.mus \ + data1/maps/scripts/dm-bloodfactory2k12.fog \ + data1/maps/scripts/dm-bloodfactory2k12.mus \ data1/maps/scripts/dm-chasmatic2k9.fog \ data1/maps/scripts/dm-chasmatic2k9.mus \ data1/maps/scripts/dm-command2k9.fog \ data1/maps/scripts/dm-command2k9.mus \ data1/maps/scripts/dm-corrosion.fog \ data1/maps/scripts/dm-corrosion.mus \ - data1/maps/scripts/dm-crucible2k8.fog \ - data1/maps/scripts/dm-crucible2k8.mus \ + data1/maps/scripts/dm-crucible2k12.fog \ + data1/maps/scripts/dm-crucible2k12.mus \ data1/maps/scripts/dm-deathray.fog \ data1/maps/scripts/dm-deathray.mus \ data1/maps/scripts/dm-deimos2k9.mus \ @@ -1143,20 +1416,23 @@ data1/maps/scripts/dm-dismal2k11.mus \ data1/maps/scripts/dm-downfall.fog \ data1/maps/scripts/dm-downfall.mus \ - data1/maps/scripts/dm-dynamo2k8.fog \ - data1/maps/scripts/dm-dynamo2k8.mus \ + data1/maps/scripts/dm-dynamo2k12.fog \ + data1/maps/scripts/dm-dynamo2k12.mus \ data1/maps/scripts/dm-eternal.fog \ data1/maps/scripts/dm-eternal.mus \ - data1/maps/scripts/dm-europa2k8.mus \ + data1/maps/scripts/dm-extermination.fog \ + data1/maps/scripts/dm-extermination.mus \ data1/maps/scripts/dm-furious2k8.fog \ data1/maps/scripts/dm-furious2k8.mus \ data1/maps/scripts/dm-goregrinder.fog \ data1/maps/scripts/dm-goregrinder.mus \ data1/maps/scripts/dm-horus.mus \ + data1/maps/scripts/dm-impact.fog \ data1/maps/scripts/dm-impact.mus \ + data1/maps/scripts/dm-invasion.fog \ data1/maps/scripts/dm-invasion.mus \ - data1/maps/scripts/dm-leviathan2k8.fog \ - data1/maps/scripts/dm-leviathan2k8.mus \ + data1/maps/scripts/dm-leviathan2k12.fog \ + data1/maps/scripts/dm-leviathan2k12.mus \ data1/maps/scripts/dm-liberation.fog \ data1/maps/scripts/dm-liberation.mus \ data1/maps/scripts/dm-neptune.mus \ @@ -1167,7 +1443,6 @@ data1/maps/scripts/dm-purgatory.mus \ data1/maps/scripts/dm-saucer2k9.fog \ data1/maps/scripts/dm-saucer2k9.mus \ - data1/maps/scripts/dm-titan2k8.mus \ data1/maps/scripts/dm-turbo2k8.fog \ data1/maps/scripts/dm-turbo2k8.mus \ data1/maps/scripts/dm-vesuvius2k11.fog \ @@ -1179,13 +1454,20 @@ data1/maps/scripts/dm-zorn2k11.fog \ data1/maps/scripts/dm-zorn2k11.mus \ data1/maps/scripts/dm-zion2k9.mus \ + data1/maps/scripts/tac-extermination.fog \ + data1/maps/scripts/tac-extermination.mus \ data1/maps/scripts/tca-corrosion.fog \ data1/maps/scripts/tca-corrosion.mus \ data1/maps/scripts/tca-cryogenic.fog \ data1/maps/scripts/tca-cryogenic.mus \ - data1/maps/scripts/tca-europa2k8.mus \ - data1/maps/scripts/tca-titan2k8.mus \ - data1/maps/scripts/tca-zion.mus \ + data1/maps/scripts/tca-extermination.fog \ + data1/maps/scripts/tca-extermination.mus \ + data1/maps/scripts/tca-purgatory.fog \ + data1/maps/scripts/tca-purgatory.mus \ + data1/maps/scripts/tca-zion2k9.mus + +modelsdir = $(pkgdatadir) +nobase_nodist_models_DATA = \ data1/models/cow/helmet.md2 \ data1/models/cow/skin.tga \ data1/models/cow/tris.md2 \ @@ -1203,15 +1485,16 @@ data1/models/items/ammo/shells/medium/skin.tga \ data1/models/items/ammo/shells/medium/tris.md2 \ data1/models/items/ammo/skin_normal.tga \ - data1/models/items/armor/body/skin.tga \ + data1/models/items/armor/body/skin.jpg \ data1/models/items/armor/body/tris.md2 \ - data1/models/items/armor/combat/skin.tga \ + data1/models/items/armor/combat/skin.jpg \ data1/models/items/armor/combat/tris.md2 \ - data1/models/items/armor/jacket/skin.tga \ + data1/models/items/armor/jacket/skin.jpg \ data1/models/items/armor/jacket/tris.md2 \ data1/models/items/armor/shard/skin_normal.tga \ data1/models/items/armor/shard/skin.tga \ data1/models/items/armor/shard/tris.md2 \ + data1/models/items/armor/skin_fx.tga \ data1/models/items/armor/skin_normal.tga \ data1/models/items/flags/blue.tga \ data1/models/items/flags/flag1.md2 \ @@ -1223,6 +1506,7 @@ data1/models/items/haste/tris.md2 \ data1/models/items/healing/globe/skin.tga \ data1/models/items/healing/globe/tris.md2 \ + data1/models/items/healing/health_normal.tga \ data1/models/items/healing/large/skin.tga \ data1/models/items/healing/large/tris.md2 \ data1/models/items/healing/medium/skin.tga \ @@ -1263,8 +1547,15 @@ data1/models/misc/scope/cover.md2 \ data1/models/misc/scope/scope.tga \ data1/models/misc/scope/tris.md2 \ + data1/models/misc/spiderpod/helmet.iqm \ + data1/models/misc/spiderpod/helmet.md2 \ data1/models/misc/spiderpod/skin.tga \ + data1/models/misc/spiderpod/spider_fx.tga \ + data1/models/misc/spiderpod/spider.jpg \ + data1/models/misc/spiderpod/spider_normal.jpg \ + data1/models/misc/spiderpod/tris.iqm \ data1/models/misc/spiderpod/tris.md2 \ + data1/models/misc/spiderpod/tris.skin \ data1/models/misc/tube/cover.md2 \ data1/models/misc/tube/tris.md2 \ data1/models/misc/tube/tube.tga \ @@ -1299,6 +1590,68 @@ data1/models/objects/laser/tris.md2 \ data1/models/objects/rocket/skin.tga \ data1/models/objects/rocket/tris.md2 \ + data1/models/objects/spider/helmet.iqm \ + data1/models/objects/spider/helmet.md2 \ + data1/models/objects/spider/tris.iqm \ + data1/models/objects/spider/tris.md2 \ + data1/models/objects/spider/tris.skin \ + data1/models/objects/spud/skin_fx2.tga \ + data1/models/objects/spud/skin_fx.tga \ + data1/models/objects/spud/skin_normal.jpg \ + data1/models/objects/spud/skin.tga \ + data1/models/objects/spud/spud.mdo \ + data1/models/objects/spud/tris.md2 \ + data1/models/tactical/abackupgen_fx.tga \ + data1/models/tactical/abackupgen.jpg \ + data1/models/tactical/abackupgen_normal.jpg \ + data1/models/tactical/abomb_fx.tga \ + data1/models/tactical/abomb.jpg \ + data1/models/tactical/abomb_normal.tga \ + data1/models/tactical/acomputer_fx.tga \ + data1/models/tactical/acomputer_normal.tga \ + data1/models/tactical/acomputer.tga \ + data1/models/tactical/alaser_fx.tga \ + data1/models/tactical/alaser.jpg \ + data1/models/tactical/alien_backupgen.iqm \ + data1/models/tactical/alien_backupgen.skin \ + data1/models/tactical/alien_bomb.iqm \ + data1/models/tactical/alien_bomb.skin \ + data1/models/tactical/alien_computer.iqm \ + data1/models/tactical/alien_computer.skin \ + data1/models/tactical/alien_laser.iqm \ + data1/models/tactical/alien_laser.md2 \ + data1/models/tactical/alien_laser.skin \ + data1/models/tactical/alien_powersrc.iqm \ + data1/models/tactical/alien_powersrc.skin \ + data1/models/tactical/ammopad.md2 \ + data1/models/tactical/apowersrc_fx.tga \ + data1/models/tactical/apowersrc.jpg \ + data1/models/tactical/apowersrc_normal.jpg \ + data1/models/tactical/hbackupgen.jpg \ + data1/models/tactical/hbackupgen_normal.jpg \ + data1/models/tactical/hbomb_fx.tga \ + data1/models/tactical/hbomb.jpg \ + data1/models/tactical/hbomb_normal.jpg \ + data1/models/tactical/hcomputer_fx.tga \ + data1/models/tactical/hcomputer.jpg \ + data1/models/tactical/hcomputer_normal.jpg \ + data1/models/tactical/hlaser_fx.tga \ + data1/models/tactical/hlaser.jpg \ + data1/models/tactical/hpowersrc_fx.tga \ + data1/models/tactical/hpowersrc.jpg \ + data1/models/tactical/hpowersrc_normal.jpg \ + data1/models/tactical/human_backupgen.iqm \ + data1/models/tactical/human_backupgen.skin \ + data1/models/tactical/human_bomb.iqm \ + data1/models/tactical/human_bomb.skin \ + data1/models/tactical/human_computer.iqm \ + data1/models/tactical/human_computer.skin \ + data1/models/tactical/human_laser.iqm \ + data1/models/tactical/human_laser.md2 \ + data1/models/tactical/human_laser.skin \ + data1/models/tactical/human_powersrc.iqm \ + data1/models/tactical/human_powersrc.skin \ + data1/models/tactical/laser_normal.jpg \ data1/models/weapons/g_bfg/tris.md2 \ data1/models/weapons/g_chain/tris.md2 \ data1/models/weapons/g_hyperb/cover.md2 \ @@ -1306,28 +1659,37 @@ data1/models/weapons/g_launch/skin.tga \ data1/models/weapons/g_launch/tris.md2 \ data1/models/weapons/g_machn/tris.md2 \ + data1/models/weapons/g_minderaser/tris.md2 \ data1/models/weapons/g_rail/tris.md2 \ data1/models/weapons/g_rocket/cover.md2 \ data1/models/weapons/g_rocket/tris.md2 \ data1/models/weapons/g_shotg2/tris.md2 \ data1/models/weapons/g_shotg/tris.md2 \ + data1/models/weapons/v_alienblast/cover.md2 \ + data1/models/weapons/v_alienblast/skin_fx.tga \ + data1/models/weapons/v_alienblast/skin_normal.jpg \ + data1/models/weapons/v_alienblast/skin.jpg \ + data1/models/weapons/v_alienblast/tris.md2 \ data1/models/weapons/v_bfg/skin.jpg \ data1/models/weapons/v_bfg/skin_normal.tga \ data1/models/weapons/v_bfg/tris.md2 \ data1/models/weapons/v_blast/cover.md2 \ data1/models/weapons/v_blast/skin.jpg \ - data1/models/weapons/v_blast/skin_normal.jpg \ + data1/models/weapons/v_blast/skin_normal.tga \ data1/models/weapons/v_blast/tris.md2 \ data1/models/weapons/v_chain/skin.jpg \ data1/models/weapons/v_chain/skin_normal.tga \ data1/models/weapons/v_chain/tris.md2 \ data1/models/weapons/v_hyperb/cover.md2 \ data1/models/weapons/v_hyperb/disruptor.jpg \ - data1/models/weapons/v_hyperb/disruptor_normal.jpg \ + data1/models/weapons/v_hyperb/disruptor_normal.tga \ data1/models/weapons/v_hyperb/tris.md2 \ data1/models/weapons/v_machn/tris.md2 \ + data1/models/weapons/v_minderaser/minderaser.jpg \ + data1/models/weapons/v_minderaser/minderaser_normal.tga \ + data1/models/weapons/v_minderaser/tris.md2 \ data1/models/weapons/v_rail/beamgun.jpg \ - data1/models/weapons/v_rail/beamgun_normal.jpg \ + data1/models/weapons/v_rail/beamgun_normal.tga \ data1/models/weapons/v_rail/tris.md2 \ data1/models/weapons/v_rocket/cover.md2 \ data1/models/weapons/v_rocket/skin.jpg \ @@ -1343,7 +1705,10 @@ data1/models/weapons/v_violator/skin_normal.jpg \ data1/models/weapons/v_violator/tris.md2 \ data1/models/weapons/v_violator/violator.jpg \ - data1/models/weapons/v_violator/violator_normal.jpg \ + data1/models/weapons/v_violator/violator_normal.tga + +particlesdir = $(pkgdatadir) +nobase_nodist_particles_DATA = \ data1/particles/aflash.tga \ data1/particles/basic.tga \ data1/particles/beam.tga \ @@ -1382,8 +1747,12 @@ data1/particles/shell.tga \ data1/particles/smoke_org.tga \ data1/particles/smoke.tga \ + data1/particles/trash.tga \ data1/particles/voltage.tga \ - data1/particles/watersplash.tga \ + data1/particles/watersplash.tga + +picsdir = $(pkgdatadir) +nobase_nodist_pics_DATA = \ data1/pics/a_bullets.tga \ data1/pics/a_cells.tga \ data1/pics/a_grenades.tga \ @@ -1433,7 +1802,6 @@ data1/pics/crosshairs/alien.tga \ data1/pics/crosshairs/chexcross.tga \ data1/pics/crosshairs/dot1.tga \ - data1/pics/crosshairs/freezy.tga \ data1/pics/crosshairs/hardcorech.tga \ data1/pics/crosshairs/havoc2.tga \ data1/pics/crosshairs/havoc3.tga \ @@ -1521,29 +1889,46 @@ data1/pics/huds/terminal-red2.tga \ data1/pics/huds/therock1.tga \ data1/pics/huds/therock2.tga \ + data1/pics/i_beamgun.tga \ data1/pics/i_bodyarmor.tga \ + data1/pics/i_chaingun.tga \ data1/pics/i_combatarmor.tga \ + data1/pics/i_disruptor.tga \ data1/pics/i_flag1.tga \ data1/pics/i_flag2.tga \ + data1/pics/i_flamegun.tga \ data1/pics/i_health.tga \ data1/pics/i_jacketarmor.tga \ + data1/pics/i_minderaser.tga \ data1/pics/inventory.tga \ + data1/pics/i_rocketlauncher.tga \ data1/pics/i_score.tga \ + data1/pics/i_smartgun.tga \ + data1/pics/i_tactical.tga \ data1/pics/i_team1.tga \ data1/pics/i_team2.tga \ + data1/pics/i_vaporizer.tga \ data1/pics/m_bots.tga \ data1/pics/m_controls.tga \ data1/pics/m_cursor0.tga \ data1/pics/m_dmoptions.tga \ data1/pics/menu_back.jpg \ + data1/pics/menu_back_fx.tga \ data1/pics/m_irc.tga \ data1/pics/m_joinserver.tga \ + data1/pics/m_main_credits.tga \ + data1/pics/m_main_credits_fx.tga \ + data1/pics/m_main_credits_sel.tga \ + data1/pics/m_main_game_fx.tga \ data1/pics/m_main_game_sel.tga \ data1/pics/m_main_game.tga \ + data1/pics/m_main_host_fx.tga \ data1/pics/m_main_host_sel.tga \ data1/pics/m_main_host.tga \ + data1/pics/m_main_irc_fx.tga \ data1/pics/m_main_irc_sel.tga \ data1/pics/m_main_irc.tga \ + data1/pics/m_main_join_fx.tga \ data1/pics/m_main_join_sel.tga \ data1/pics/m_main_join.tga \ data1/pics/m_main_mont0.tga \ @@ -1552,13 +1937,18 @@ data1/pics/m_main_mont3.tga \ data1/pics/m_main_mont4.tga \ data1/pics/m_main_mont5.tga \ + data1/pics/m_main_options_fx.tga \ data1/pics/m_main_options_sel.tga \ data1/pics/m_main_options.tga \ + data1/pics/m_main_player_fx.tga \ data1/pics/m_main_player_sel.tga \ data1/pics/m_main_player.tga \ + data1/pics/m_main_quit_fx.tga \ data1/pics/m_main_quit_sel.tga \ data1/pics/m_main_quit.tga \ + data1/pics/m_main_tactical.tga \ data1/pics/m_main.tga \ + data1/pics/m_main_video_fx.tga \ data1/pics/m_main_video_sel.tga \ data1/pics/m_main_video.tga \ data1/pics/m_mouse_cursor.tga \ @@ -1568,7 +1958,37 @@ data1/pics/m_quit.tga \ data1/pics/m_single.tga \ data1/pics/m_startserver.tga \ + data1/pics/m_tactical.tga \ data1/pics/m_video.tga \ + data1/pics/menu/button_border_end.tga \ + data1/pics/menu/button_border.tga \ + data1/pics/menu/dnarrow.tga \ + data1/pics/menu/field_cursor.tga \ + data1/pics/menu/icon_border.tga \ + data1/pics/menu/m_background.tga \ + data1/pics/menu/m_bottomcorner.tga \ + data1/pics/menu/m_bottom.tga \ + data1/pics/menu/midarrow.tga \ + data1/pics/menu/m_side.tga \ + data1/pics/menu/m_topcorner.tga \ + data1/pics/menu/m_top.tga \ + data1/pics/menu/on.tga \ + data1/pics/menu/radio_border.tga \ + data1/pics/menu/scroll_border_end.tga \ + data1/pics/menu/scroll_border.tga \ + data1/pics/menu/scroll_cursor_end.tga \ + data1/pics/menu/scroll_cursor.tga \ + data1/pics/menu/slide_border_end.tga \ + data1/pics/menu/slide_border.tga \ + data1/pics/menu/slide_cursor_end.tga \ + data1/pics/menu/slide_cursor.tga \ + data1/pics/menu/sm_background.tga \ + data1/pics/menu/sm_bottomcorner.tga \ + data1/pics/menu/sm_bottom.tga \ + data1/pics/menu/sm_side.tga \ + data1/pics/menu/sm_topcorner.tga \ + data1/pics/menu/sm_top.tga \ + data1/pics/menu/uparrow.tga \ data1/pics/net.tga \ data1/pics/num_0.tga \ data1/pics/num_1.tga \ @@ -1582,13 +2002,18 @@ data1/pics/num_9.tga \ data1/pics/num_minus.tga \ data1/pics/p_adrenaline.tga \ + data1/pics/p_body.tga \ + data1/pics/p_combat.tga \ data1/pics/p_haste.tga \ + data1/pics/p_health.tga \ data1/pics/p_invis.tga \ data1/pics/p_invulnerability.tga \ + data1/pics/p_jacket.tga \ data1/pics/playerbox.tga \ data1/pics/p_powered.tga \ data1/pics/p_quad.tga \ data1/pics/p_rewardpts.tga \ + data1/pics/p_shard.tga \ data1/pics/p_sproing.tga \ data1/pics/redplayerbox.tga \ data1/pics/rocketlauncher.tga \ @@ -1618,7 +2043,10 @@ data1/pics/w_sshotgun.tga \ data1/pics/zoomscope1.tga \ data1/pics/zoomscope2.tga \ - data1/pics/zoomscope3.tga \ + data1/pics/zoomscope3.tga + +playersdir = $(pkgdatadir) +nobase_nodist_players_DATA = \ data1/players/commander/blue_i.jpg \ data1/players/commander/blue.jpg \ data1/players/commander/bump1.wav \ @@ -1655,6 +2083,13 @@ data1/players/commander/tris.iqm \ data1/players/commander/tris.md2 \ data1/players/commander/tris.rgd \ + data1/players/commander/tron2_i.jpg \ + data1/players/commander/tron2.jpg \ + data1/players/commander/tron3_i.jpg \ + data1/players/commander/tron3.jpg \ + data1/players/commander/tron_i.jpg \ + data1/players/commander/tron.jpg \ + data1/players/commander/tron_normal.tga \ data1/players/commander/w_bfg.iqm \ data1/players/commander/w_bfg.md2 \ data1/players/commander/w_bfg.skin \ @@ -1674,6 +2109,9 @@ data1/players/commander/w_machinegun.iqm \ data1/players/commander/w_machinegun.md2 \ data1/players/commander/w_machinegun.skin \ + data1/players/commander/w_minderaser.iqm \ + data1/players/commander/w_minderaser.md2 \ + data1/players/commander/w_minderaser.skin \ data1/players/commander/w_railgun.iqm \ data1/players/commander/w_railgun.md2 \ data1/players/commander/w_railgun.skin \ @@ -1733,6 +2171,13 @@ data1/players/enforcer/tris.iqm \ data1/players/enforcer/tris.md2 \ data1/players/enforcer/tris.rgd \ + data1/players/enforcer/tron2_i.jpg \ + data1/players/enforcer/tron2.jpg \ + data1/players/enforcer/tron3_i.jpg \ + data1/players/enforcer/tron3.jpg \ + data1/players/enforcer/tron_i.jpg \ + data1/players/enforcer/tron.jpg \ + data1/players/enforcer/tron_normal.tga \ data1/players/enforcer/usegibs \ data1/players/enforcer/w_bfg.iqm \ data1/players/enforcer/w_bfg.md2 \ @@ -1753,6 +2198,9 @@ data1/players/enforcer/w_machinegun.iqm \ data1/players/enforcer/w_machinegun.md2 \ data1/players/enforcer/w_machinegun.skin \ + data1/players/enforcer/w_minderaser.iqm \ + data1/players/enforcer/w_minderaser.md2 \ + data1/players/enforcer/w_minderaser.skin \ data1/players/enforcer/w_railgun.iqm \ data1/players/enforcer/w_railgun.md2 \ data1/players/enforcer/w_railgun.skin \ @@ -1806,6 +2254,13 @@ data1/players/lauren/tris.iqm \ data1/players/lauren/tris.md2 \ data1/players/lauren/tris.rgd \ + data1/players/lauren/tron2_i.jpg \ + data1/players/lauren/tron2.jpg \ + data1/players/lauren/tron3_i.jpg \ + data1/players/lauren/tron3.jpg \ + data1/players/lauren/tron_i.jpg \ + data1/players/lauren/tron.jpg \ + data1/players/lauren/tron_normal.tga \ data1/players/lauren/usegibs \ data1/players/lauren/w_bfg.iqm \ data1/players/lauren/w_bfg.md2 \ @@ -1826,6 +2281,9 @@ data1/players/lauren/w_machinegun.iqm \ data1/players/lauren/w_machinegun.md2 \ data1/players/lauren/w_machinegun.skin \ + data1/players/lauren/w_minderaser.iqm \ + data1/players/lauren/w_minderaser.md2 \ + data1/players/lauren/w_minderaser.skin \ data1/players/lauren/w_railgun.iqm \ data1/players/lauren/w_railgun.md2 \ data1/players/lauren/w_railgun.skin \ @@ -1879,6 +2337,15 @@ data1/players/martiancyborg/tris.iqm \ data1/players/martiancyborg/tris.md2 \ data1/players/martiancyborg/tris.rgd \ + data1/players/martiancyborg/tron2_i.jpg \ + data1/players/martiancyborg/tron2.jpg \ + data1/players/martiancyborg/tron3_i.jpg \ + data1/players/martiancyborg/tron3.jpg \ + data1/players/martiancyborg/tron_i.jpg \ + data1/players/martiancyborg/tron.jpg \ + data1/players/martiancyborg/tron_normal.tga \ + data1/players/martiancyborg/w_alienblaster.iqm \ + data1/players/martiancyborg/w_alienblaster.skin \ data1/players/martiancyborg/w_bfg.iqm \ data1/players/martiancyborg/w_bfg.md2 \ data1/players/martiancyborg/w_bfg.skin \ @@ -1898,6 +2365,9 @@ data1/players/martiancyborg/w_machinegun.iqm \ data1/players/martiancyborg/w_machinegun.md2 \ data1/players/martiancyborg/w_machinegun.skin \ + data1/players/martiancyborg/w_minderaser.iqm \ + data1/players/martiancyborg/w_minderaser.md2 \ + data1/players/martiancyborg/w_minderaser.skin \ data1/players/martiancyborg/w_railgun.iqm \ data1/players/martiancyborg/w_railgun.md2 \ data1/players/martiancyborg/w_railgun.skin \ @@ -1960,7 +2430,16 @@ data1/players/martianenforcer/tris.iqm \ data1/players/martianenforcer/tris.md2 \ data1/players/martianenforcer/tris.rgd \ + data1/players/martianenforcer/tron2_i.jpg \ + data1/players/martianenforcer/tron2.jpg \ + data1/players/martianenforcer/tron3_i.jpg \ + data1/players/martianenforcer/tron3.jpg \ + data1/players/martianenforcer/tron_i.jpg \ + data1/players/martianenforcer/tron.jpg \ + data1/players/martianenforcer/tron_normal.tga \ data1/players/martianenforcer/usegibs \ + data1/players/martianenforcer/w_alienblaster.iqm \ + data1/players/martianenforcer/w_alienblaster.skin \ data1/players/martianenforcer/w_bfg.iqm \ data1/players/martianenforcer/w_bfg.md2 \ data1/players/martianenforcer/w_bfg.skin \ @@ -1980,6 +2459,9 @@ data1/players/martianenforcer/w_machinegun.iqm \ data1/players/martianenforcer/w_machinegun.md2 \ data1/players/martianenforcer/w_machinegun.skin \ + data1/players/martianenforcer/w_minderaser.iqm \ + data1/players/martianenforcer/w_minderaser.md2 \ + data1/players/martianenforcer/w_minderaser.skin \ data1/players/martianenforcer/w_railgun.iqm \ data1/players/martianenforcer/w_railgun.md2 \ data1/players/martianenforcer/w_railgun.skin \ @@ -1995,6 +2477,176 @@ data1/players/martianenforcer/w_violator.iqm \ data1/players/martianenforcer/w_violator.md2 \ data1/players/martianenforcer/w_violator.skin \ + data1/players/martianoverlord/alien \ + data1/players/martianoverlord/blue_i.jpg \ + data1/players/martianoverlord/blue.jpg \ + data1/players/martianoverlord/bump1.wav \ + data1/players/martianoverlord/death1.wav \ + data1/players/martianoverlord/death2.wav \ + data1/players/martianoverlord/death3.wav \ + data1/players/martianoverlord/death4.wav \ + data1/players/martianoverlord/default_i.jpg \ + data1/players/martianoverlord/default.jpg \ + data1/players/martianoverlord/default_normal.tga \ + data1/players/martianoverlord/drown1.wav \ + data1/players/martianoverlord/fall1.wav \ + data1/players/martianoverlord/fall2.wav \ + data1/players/martianoverlord/gasp1.wav \ + data1/players/martianoverlord/gasp2.wav \ + data1/players/martianoverlord/gurp1.wav \ + data1/players/martianoverlord/gurp2.wav \ + data1/players/martianoverlord/helmet.iqm \ + data1/players/martianoverlord/helmet.md2 \ + data1/players/martianoverlord/jump1.wav \ + data1/players/martianoverlord/lod1.iqm \ + data1/players/martianoverlord/lod1.rgd \ + data1/players/martianoverlord/lod2.iqm \ + data1/players/martianoverlord/lod2.rgd \ + data1/players/martianoverlord/pain100_1.wav \ + data1/players/martianoverlord/pain100_2.wav \ + data1/players/martianoverlord/pain25_1.wav \ + data1/players/martianoverlord/pain25_2.wav \ + data1/players/martianoverlord/pain50_1.wav \ + data1/players/martianoverlord/pain50_2.wav \ + data1/players/martianoverlord/pain75_1.wav \ + data1/players/martianoverlord/pain75_2.wav \ + data1/players/martianoverlord/red_i.jpg \ + data1/players/martianoverlord/red.jpg \ + data1/players/martianoverlord/tris.iqm \ + data1/players/martianoverlord/tris.md2 \ + data1/players/martianoverlord/tris.rgd \ + data1/players/martianoverlord/tron2_i.jpg \ + data1/players/martianoverlord/tron2.jpg \ + data1/players/martianoverlord/tron3_i.jpg \ + data1/players/martianoverlord/tron3.jpg \ + data1/players/martianoverlord/tron_i.jpg \ + data1/players/martianoverlord/tron.jpg \ + data1/players/martianoverlord/tron_normal.tga \ + data1/players/martianoverlord/w_alienblaster.iqm \ + data1/players/martianoverlord/w_alienblaster.skin \ + data1/players/martianoverlord/w_bfg.iqm \ + data1/players/martianoverlord/w_bfg.md2 \ + data1/players/martianoverlord/w_bfg.skin \ + data1/players/martianoverlord/w_blaster.iqm \ + data1/players/martianoverlord/w_blaster.md2 \ + data1/players/martianoverlord/w_blaster.skin \ + data1/players/martianoverlord/w_chaingun.iqm \ + data1/players/martianoverlord/w_chaingun.md2 \ + data1/players/martianoverlord/w_chaingun.skin \ + data1/players/martianoverlord/weapon.iqm \ + data1/players/martianoverlord/weapon.jpg \ + data1/players/martianoverlord/weapon.md2 \ + data1/players/martianoverlord/weapon.skin \ + data1/players/martianoverlord/w_hyperblaster.iqm \ + data1/players/martianoverlord/w_hyperblaster.md2 \ + data1/players/martianoverlord/w_hyperblaster.skin \ + data1/players/martianoverlord/w_machinegun.iqm \ + data1/players/martianoverlord/w_machinegun.md2 \ + data1/players/martianoverlord/w_machinegun.skin \ + data1/players/martianoverlord/w_minderaser.iqm \ + data1/players/martianoverlord/w_minderaser.md2 \ + data1/players/martianoverlord/w_minderaser.skin \ + data1/players/martianoverlord/w_railgun.iqm \ + data1/players/martianoverlord/w_railgun.md2 \ + data1/players/martianoverlord/w_railgun.skin \ + data1/players/martianoverlord/w_rlauncher.iqm \ + data1/players/martianoverlord/w_rlauncher.md2 \ + data1/players/martianoverlord/w_rlauncher.skin \ + data1/players/martianoverlord/w_shotgun.iqm \ + data1/players/martianoverlord/w_shotgun.md2 \ + data1/players/martianoverlord/w_shotgun.skin \ + data1/players/martianoverlord/w_sshotgun.iqm \ + data1/players/martianoverlord/w_sshotgun.md2 \ + data1/players/martianoverlord/w_sshotgun.skin \ + data1/players/martianoverlord/w_violator.iqm \ + data1/players/martianoverlord/w_violator.md2 \ + data1/players/martianoverlord/w_violator.skin \ + data1/players/martianwarrior/alien \ + data1/players/martianwarrior/blue_i.jpg \ + data1/players/martianwarrior/blue.jpg \ + data1/players/martianwarrior/bump1.wav \ + data1/players/martianwarrior/death1.wav \ + data1/players/martianwarrior/death2.wav \ + data1/players/martianwarrior/death3.wav \ + data1/players/martianwarrior/death4.wav \ + data1/players/martianwarrior/default_i.jpg \ + data1/players/martianwarrior/default.jpg \ + data1/players/martianwarrior/default_normal.tga \ + data1/players/martianwarrior/drown1.wav \ + data1/players/martianwarrior/fall1.wav \ + data1/players/martianwarrior/fall2.wav \ + data1/players/martianwarrior/gasp1.wav \ + data1/players/martianwarrior/gasp2.wav \ + data1/players/martianwarrior/gurp1.wav \ + data1/players/martianwarrior/gurp2.wav \ + data1/players/martianwarrior/helmet.iqm \ + data1/players/martianwarrior/helmet.md2 \ + data1/players/martianwarrior/jump1.wav \ + data1/players/martianwarrior/lod1.iqm \ + data1/players/martianwarrior/lod1.md2 \ + data1/players/martianwarrior/lod1.rgd \ + data1/players/martianwarrior/lod2.iqm \ + data1/players/martianwarrior/lod2.md2 \ + data1/players/martianwarrior/lod2.rgd \ + data1/players/martianwarrior/pain100_1.wav \ + data1/players/martianwarrior/pain100_2.wav \ + data1/players/martianwarrior/pain25_1.wav \ + data1/players/martianwarrior/pain25_2.wav \ + data1/players/martianwarrior/pain50_1.wav \ + data1/players/martianwarrior/pain50_2.wav \ + data1/players/martianwarrior/pain75_1.wav \ + data1/players/martianwarrior/pain75_2.wav \ + data1/players/martianwarrior/red_i.jpg \ + data1/players/martianwarrior/red.jpg \ + data1/players/martianwarrior/tris.iqm \ + data1/players/martianwarrior/tris.md2 \ + data1/players/martianwarrior/tris.rgd \ + data1/players/martianwarrior/tron2_i.jpg \ + data1/players/martianwarrior/tron2.jpg \ + data1/players/martianwarrior/tron3_i.jpg \ + data1/players/martianwarrior/tron3.jpg \ + data1/players/martianwarrior/tron_i.jpg \ + data1/players/martianwarrior/tron.jpg \ + data1/players/martianwarrior/tron_normal.tga \ + data1/players/martianwarrior/w_alienblaster.iqm \ + data1/players/martianwarrior/w_alienblaster.skin \ + data1/players/martianwarrior/w_bfg.iqm \ + data1/players/martianwarrior/w_bfg.md2 \ + data1/players/martianwarrior/w_bfg.skin \ + data1/players/martianwarrior/w_blaster.iqm \ + data1/players/martianwarrior/w_blaster.md2 \ + data1/players/martianwarrior/w_blaster.skin \ + data1/players/martianwarrior/w_chaingun.iqm \ + data1/players/martianwarrior/w_chaingun.md2 \ + data1/players/martianwarrior/w_chaingun.skin \ + data1/players/martianwarrior/weapon.iqm \ + data1/players/martianwarrior/weapon.jpg \ + data1/players/martianwarrior/weapon.md2 \ + data1/players/martianwarrior/weapon.skin \ + data1/players/martianwarrior/w_hyperblaster.iqm \ + data1/players/martianwarrior/w_hyperblaster.md2 \ + data1/players/martianwarrior/w_hyperblaster.skin \ + data1/players/martianwarrior/w_machinegun.iqm \ + data1/players/martianwarrior/w_machinegun.md2 \ + data1/players/martianwarrior/w_machinegun.skin \ + data1/players/martianwarrior/w_minderaser.iqm \ + data1/players/martianwarrior/w_minderaser.md2 \ + data1/players/martianwarrior/w_minderaser.skin \ + data1/players/martianwarrior/w_railgun.iqm \ + data1/players/martianwarrior/w_railgun.md2 \ + data1/players/martianwarrior/w_railgun.skin \ + data1/players/martianwarrior/w_rlauncher.iqm \ + data1/players/martianwarrior/w_rlauncher.md2 \ + data1/players/martianwarrior/w_rlauncher.skin \ + data1/players/martianwarrior/w_shotgun.iqm \ + data1/players/martianwarrior/w_shotgun.md2 \ + data1/players/martianwarrior/w_shotgun.skin \ + data1/players/martianwarrior/w_sshotgun.iqm \ + data1/players/martianwarrior/w_sshotgun.md2 \ + data1/players/martianwarrior/w_sshotgun.skin \ + data1/players/martianwarrior/w_violator.iqm \ + data1/players/martianwarrior/w_violator.md2 \ + data1/players/martianwarrior/w_violator.skin \ data1/players/slashbot/blue_i.jpg \ data1/players/slashbot/blue.jpg \ data1/players/slashbot/bump1.wav \ @@ -2029,6 +2681,13 @@ data1/players/slashbot/tris.iqm \ data1/players/slashbot/tris.md2 \ data1/players/slashbot/tris.rgd \ + data1/players/slashbot/tron2_i.jpg \ + data1/players/slashbot/tron2.jpg \ + data1/players/slashbot/tron3_i.jpg \ + data1/players/slashbot/tron3.jpg \ + data1/players/slashbot/tron_i.jpg \ + data1/players/slashbot/tron.jpg \ + data1/players/slashbot/tron_normal.tga \ data1/players/slashbot/w_bfg.iqm \ data1/players/slashbot/w_bfg.md2 \ data1/players/slashbot/w_bfg.skin \ @@ -2048,6 +2707,9 @@ data1/players/slashbot/w_machinegun.iqm \ data1/players/slashbot/w_machinegun.md2 \ data1/players/slashbot/w_machinegun.skin \ + data1/players/slashbot/w_minderaser.iqm \ + data1/players/slashbot/w_minderaser.md2 \ + data1/players/slashbot/w_minderaser.skin \ data1/players/slashbot/w_railgun.iqm \ data1/players/slashbot/w_railgun.md2 \ data1/players/slashbot/w_railgun.skin \ @@ -2062,9 +2724,13 @@ data1/players/slashbot/w_sshotgun.skin \ data1/players/slashbot/w_violator.iqm \ data1/players/slashbot/w_violator.md2 \ - data1/players/slashbot/w_violator.skin \ + data1/players/slashbot/w_violator.skin + +scriptsdir = $(pkgdatadir) +nobase_nodist_scripts_DATA = \ data1/scripts/caustics.rscript \ data1/scripts/consoles.rscript \ + data1/scripts/interactive/textures.rscript \ data1/scripts/maps/aoa-atlantis.rscript \ data1/scripts/maps/aoa-corrosion.rscript \ data1/scripts/maps/aoa-frost2k9.rscript \ @@ -2073,12 +2739,14 @@ data1/scripts/maps/cp-ribeye.rscript \ data1/scripts/maps/ctf-corrosion.rscript \ data1/scripts/maps/ctf-cryogenic.rscript \ - data1/scripts/maps/ctf-europa2k8.rscript \ + data1/scripts/maps/ctf-extermination.rscript \ data1/scripts/maps/ctf-frostbyte.rscript \ + data1/scripts/maps/ctf-goregrinder.rscript \ data1/scripts/maps/ctf-invasion.rscript \ data1/scripts/maps/ctf-oblivion.rscript \ + data1/scripts/maps/ctf-purgatory.rscript \ data1/scripts/maps/ctf-titan2k8.rscript \ - data1/scripts/maps/ctf-vesuvius.rscript \ + data1/scripts/maps/ctf-vesuvius2k11.rscript \ data1/scripts/maps/ctf-violator.rscript \ data1/scripts/maps/ctf-zion2k9.rscript \ data1/scripts/maps/db-chromium.rscript \ @@ -2087,49 +2755,50 @@ data1/scripts/maps/dm-annihilation.rscript \ data1/scripts/maps/dm-atlantis2k8.rscript \ data1/scripts/maps/dm-babel2k11.rscript \ - data1/scripts/maps/dm-bloodfactory.rscript \ + data1/scripts/maps/dm-bloodfactory2k12.rscript \ data1/scripts/maps/dm-chasmatic2k9.rscript \ - data1/scripts/maps/dm-chasmatic.rscript \ data1/scripts/maps/dm-command2k9.rscript \ data1/scripts/maps/dm-corrosion.rscript \ - data1/scripts/maps/dm-crucible2k8.rscript \ + data1/scripts/maps/dm-crucible2k12.rscript \ data1/scripts/maps/dm-deathray.rscript \ data1/scripts/maps/dm-deimos2k9.rscript \ data1/scripts/maps/dm-dismal2k11.rscript \ data1/scripts/maps/dm-downfall.rscript \ - data1/scripts/maps/dm-dynamo2k8.rscript \ + data1/scripts/maps/dm-dynamo2k12.rscript \ data1/scripts/maps/dm-eternal.rscript \ - data1/scripts/maps/dm-europa2k8.rscript \ + data1/scripts/maps/dm-extermination.rscript \ data1/scripts/maps/dm-furious2k8.rscript \ data1/scripts/maps/dm-goregrinder.rscript \ data1/scripts/maps/dm-horus.rscript \ data1/scripts/maps/dm-impact.rscript \ data1/scripts/maps/dm-invasion.rscript \ - data1/scripts/maps/dm-leviathan2k8.rscript \ + data1/scripts/maps/dm-leviathan2k12.rscript \ data1/scripts/maps/dm-liberation.rscript \ data1/scripts/maps/dm-neptune.rscript \ data1/scripts/maps/dm-oblivion.rscript \ data1/scripts/maps/dm-omega2k8.rscript \ data1/scripts/maps/dm-purgatory.rscript \ data1/scripts/maps/dm-saucer2k9.rscript \ - data1/scripts/maps/dm-titan2k8.rscript \ data1/scripts/maps/dm-turbo2k8.rscript \ data1/scripts/maps/dm-vesuvius2k11.rscript \ data1/scripts/maps/dm-violator2k11.rscript \ data1/scripts/maps/dm-warmachine2k10.rscript \ data1/scripts/maps/dm-zorn2k11.rscript \ data1/scripts/maps/dm-zion2k9.rscript \ + data1/scripts/maps/tac-extermination.rscript \ data1/scripts/maps/tca-corrosion.rscript \ data1/scripts/maps/tca-cryogenic.rscript \ - data1/scripts/maps/tca-europa2k8.rscript \ - data1/scripts/maps/tca-frost.rscript \ - data1/scripts/maps/tca-titan2k8.rscript \ - data1/scripts/maps/tca-zion.rscript \ + data1/scripts/maps/tca-extermination.rscript \ + data1/scripts/maps/tca-purgatory.rscript \ + data1/scripts/maps/tca-zion2k9.rscript \ data1/scripts/menu.rscript \ data1/scripts/models.rscript \ data1/scripts/normals/normals.rscript \ - data1/scripts/players.rscript \ - data1/scripts/textures.rscript \ + data1/scripts/normals/tron.rscript \ + data1/scripts/textures.rscript + +sounddir = $(pkgdatadir) +nobase_nodist_sound_DATA = \ data1/sound/doors/dr1_end.wav \ data1/sound/doors/dr1_mid.wav \ data1/sound/doors/dr1_strt.wav \ @@ -2188,6 +2857,7 @@ data1/sound/misc/menu1.wav \ data1/sound/misc/menu2.wav \ data1/sound/misc/menu3.wav \ + data1/sound/misc/minderaser.wav \ data1/sound/misc/one.wav \ data1/sound/misc/pc_up.wav \ data1/sound/misc/rampage.wav \ @@ -2212,6 +2882,7 @@ data1/sound/misc/trigger1.wav \ data1/sound/misc/two.wav \ data1/sound/misc/w_pkup.wav \ + data1/sound/music/adrenaline.ogg \ data1/sound/music/cp-ribeye.ogg \ data1/sound/music/Divinity_lack_of_success.ogg \ data1/sound/music/Divinity_misunderstood.ogg \ @@ -2222,6 +2893,7 @@ data1/sound/music/dm-dismal.ogg \ data1/sound/music/dm-dynamo.ogg \ data1/sound/music/dm-eternal.ogg \ + data1/sound/music/dm-extermination.ogg \ data1/sound/music/dm-frontier.ogg \ data1/sound/music/dm-horus.ogg \ data1/sound/music/dm-inferno.ogg \ @@ -2307,6 +2979,16 @@ data1/sound/taunts/martianenforcer/taunt3.wav \ data1/sound/taunts/martianenforcer/taunt4.wav \ data1/sound/taunts/martianenforcer/taunt5.wav \ + data1/sound/taunts/martianoverlord/taunt1.wav \ + data1/sound/taunts/martianoverlord/taunt2.wav \ + data1/sound/taunts/martianoverlord/taunt3.wav \ + data1/sound/taunts/martianoverlord/taunt4.wav \ + data1/sound/taunts/martianoverlord/taunt5.wav \ + data1/sound/taunts/martianwarrior/taunt1.wav \ + data1/sound/taunts/martianwarrior/taunt2.wav \ + data1/sound/taunts/martianwarrior/taunt3.wav \ + data1/sound/taunts/martianwarrior/taunt4.wav \ + data1/sound/taunts/martianwarrior/taunt5.wav \ data1/sound/taunts/slashbot/taunt1.wav \ data1/sound/taunts/slashbot/taunt2.wav \ data1/sound/taunts/slashbot/taunt3.wav \ @@ -2319,6 +3001,8 @@ data1/sound/vehicles/shootbomb.wav \ data1/sound/vehicles/shootlaser.wav \ data1/sound/vehicles/warning.wav \ + data1/sound/weapons/adetonatordown.wav \ + data1/sound/weapons/adetonatorup.wav \ data1/sound/weapons/biglaser.wav \ data1/sound/weapons/blastf1a.wav \ data1/sound/weapons/clank.wav \ @@ -2339,14 +3023,19 @@ data1/sound/weapons/machgf3b.wav \ data1/sound/weapons/machgf4b.wav \ data1/sound/weapons/machgf5b.wav \ + data1/sound/weapons/minderaserfire.wav \ data1/sound/weapons/noammo.wav \ data1/sound/weapons/railgf1a.wav \ data1/sound/weapons/rockfly.wav \ data1/sound/weapons/rocklf1a.wav \ data1/sound/weapons/rocklr1b.wav \ data1/sound/weapons/rocklx1a.wav \ + data1/sound/weapons/seeker_fast.wav \ + data1/sound/weapons/seeker.wav \ + data1/sound/weapons/seeker_zap.wav \ data1/sound/weapons/shotgf1b.wav \ data1/sound/weapons/smartgun_hum.wav \ + data1/sound/weapons/spidermov.wav \ data1/sound/weapons/vaporizer_hum.wav \ data1/sound/weapons/viofire1.wav \ data1/sound/weapons/viofire2.wav \ @@ -2374,7 +3063,10 @@ data1/sound/world/vents.wav \ data1/sound/world/water1.wav \ data1/sound/world/weird.wav \ - data1/sound/world/youwin.wav \ + data1/sound/world/youwin.wav + +texturesdir = $(pkgdatadir) +nobase_nodist_textures_DATA = \ data1/textures/alien/support5.tga \ data1/textures/arena10/bluetile_hm.tga \ data1/textures/arena10/bluetile_nm.tga \ @@ -2411,10 +3103,10 @@ data1/textures/arena10/building2.tga \ data1/textures/arena10/building3_hm.tga \ data1/textures/arena10/building3_nm.tga \ - data1/textures/arena10/building3.tga \ data1/textures/arena10/building3ns_hm.tga \ data1/textures/arena10/building3ns_nm.tga \ data1/textures/arena10/building3ns.tga \ + data1/textures/arena10/building3.tga \ data1/textures/arena10/building4_nm.tga \ data1/textures/arena10/building4.tga \ data1/textures/arena10/building5_nm.tga \ @@ -2422,27 +3114,27 @@ data1/textures/arena10/building6_nm.tga \ data1/textures/arena10/building6.tga \ data1/textures/arena10/building7_nm.tga \ - data1/textures/arena10/building7.tga \ data1/textures/arena10/building7s_hm.tga \ data1/textures/arena10/building7s_nm.tga \ data1/textures/arena10/building7s.tga \ + data1/textures/arena10/building7.tga \ data1/textures/arena10/building8_nm.tga \ data1/textures/arena10/building8.tga \ data1/textures/arena10/building9_nm.tga \ data1/textures/arena10/building9.tga \ data1/textures/arena10/cement1_hm.tga \ data1/textures/arena10/cement1_nm.tga \ - data1/textures/arena10/cement1.tga \ data1/textures/arena10/cement1ns_nm.tga \ data1/textures/arena10/cement1ns.tga \ + data1/textures/arena10/cement1.tga \ data1/textures/arena10/cobblestone_hm.tga \ - data1/textures/arena10/cobblestone_nm.tga \ - data1/textures/arena10/cobblestone.tga \ data1/textures/arena10/cobblestoneng_hm.tga \ data1/textures/arena10/cobblestoneng_nm.tga \ data1/textures/arena10/cobblestoneng.tga \ + data1/textures/arena10/cobblestone_nm.tga \ data1/textures/arena10/cobblestonens_nm.tga \ data1/textures/arena10/cobblestonens.tga \ + data1/textures/arena10/cobblestone.tga \ data1/textures/arena10/cobwebs2.tga \ data1/textures/arena10/cobwebs.tga \ data1/textures/arena10/cocacola.tga \ @@ -2458,6 +3150,29 @@ data1/textures/arena10/container4_hm.tga \ data1/textures/arena10/container4_nm.tga \ data1/textures/arena10/container4.tga \ + data1/textures/arena10/cretewall1_nm.tga \ + data1/textures/arena10/cretewall1.tga \ + data1/textures/arena10/cretewall2_nm.tga \ + data1/textures/arena10/cretewall2.tga \ + data1/textures/arena10/elecpanel1_hm.tga \ + data1/textures/arena10/elecpanel1_nm.tga \ + data1/textures/arena10/elecpanel1.tga \ + data1/textures/arena10/elecpanel2_hm.tga \ + data1/textures/arena10/elecpanel2_nm.tga \ + data1/textures/arena10/elecpanel2.tga \ + data1/textures/arena10/elecpanel3_hm.tga \ + data1/textures/arena10/elecpanel3_nm.tga \ + data1/textures/arena10/elecpanel3.tga \ + data1/textures/arena10/elecpanel4_hm.tga \ + data1/textures/arena10/elecpanel4_nm.tga \ + data1/textures/arena10/elecpanel4.tga \ + data1/textures/arena10/elecvents_hm.tga \ + data1/textures/arena10/elecvents_nm.tga \ + data1/textures/arena10/elecvents.tga \ + data1/textures/arena10/elecwall1_nm.tga \ + data1/textures/arena10/elecwall1.tga \ + data1/textures/arena10/elecwall2_nm.tga \ + data1/textures/arena10/elecwall2.tga \ data1/textures/arena10/floortile10_hm.tga \ data1/textures/arena10/floortile10_nm.tga \ data1/textures/arena10/floortile10.tga \ @@ -2472,10 +3187,22 @@ data1/textures/arena10/gothwindow1.tga \ data1/textures/arena10/gothwindow2_hm.tga \ data1/textures/arena10/gothwindow2.tga \ + data1/textures/arena10/gothwindow2r_hm.tga \ + data1/textures/arena10/gothwindow2r.tga \ data1/textures/arena10/gothwindow3_hm.tga \ data1/textures/arena10/gothwindow3.tga \ + data1/textures/arena10/gothwindow3r_hm.tga \ + data1/textures/arena10/gothwindow3r.tga \ + data1/textures/arena10/graffitiwall1.tga \ + data1/textures/arena10/grafittiwall2.tga \ data1/textures/arena10/heap1_nm.tga \ data1/textures/arena10/heap1.tga \ + data1/textures/arena10/heap2_nm.tga \ + data1/textures/arena10/heap2.tga \ + data1/textures/arena10/heap3_nm.tga \ + data1/textures/arena10/heap3.tga \ + data1/textures/arena10/heap4_nm.tga \ + data1/textures/arena10/heap4.tga \ data1/textures/arena10/ivy1_nm.tga \ data1/textures/arena10/ivy1.tga \ data1/textures/arena10/ivy2_nm.tga \ @@ -2530,6 +3257,9 @@ data1/textures/arena10/pipes1.tga \ data1/textures/arena10/planks_nm.tga \ data1/textures/arena10/planks.tga \ + data1/textures/arena10/redtile_hm.tga \ + data1/textures/arena10/redtile_nm.tga \ + data1/textures/arena10/redtile.tga \ data1/textures/arena10/road1_hm.tga \ data1/textures/arena10/road1_nm.tga \ data1/textures/arena10/road1.tga \ @@ -2546,10 +3276,16 @@ data1/textures/arena10/rockdirt1ng_hm.tga \ data1/textures/arena10/rockdirt1ng_nm.tga \ data1/textures/arena10/rockdirt1ng.tga \ + data1/textures/arena10/rockdirt1_nm.tga \ data1/textures/arena10/rockdirt1ns_nm.tga \ data1/textures/arena10/rockdirt1ns.tga \ - data1/textures/arena10/rockdirt1_nm.tga \ data1/textures/arena10/rockdirt1.tga \ + data1/textures/arena10/rustdoor1_hm.tga \ + data1/textures/arena10/rustdoor1_nm.tga \ + data1/textures/arena10/rustdoor1.tga \ + data1/textures/arena10/rustwall1_hm.tga \ + data1/textures/arena10/rustwall1_nm.tga \ + data1/textures/arena10/rustwall1.tga \ data1/textures/arena10/sevenup.tga \ data1/textures/arena10/sewergrate1_nm.tga \ data1/textures/arena10/sewergrate1.tga \ @@ -2561,6 +3297,9 @@ data1/textures/arena10/sign5.tga \ data1/textures/arena10/sign6r.tga \ data1/textures/arena10/sign6.tga \ + data1/textures/arena10/sign7_hm.tga \ + data1/textures/arena10/sign7_nm.tga \ + data1/textures/arena10/sign7.tga \ data1/textures/arena10/skyscraper1_hm.tga \ data1/textures/arena10/skyscraper1_nm.tga \ data1/textures/arena10/skyscraper1.tga \ @@ -2585,6 +3324,9 @@ data1/textures/arena10/skyscraper9.tga \ data1/textures/arena10/stacks1.tga \ data1/textures/arena10/stacks2.tga \ + data1/textures/arena10/starsign_hm.tga \ + data1/textures/arena10/starsign_nm.tga \ + data1/textures/arena10/starsign.tga \ data1/textures/arena10/stonewall1_nm.tga \ data1/textures/arena10/stonewall1.tga \ data1/textures/arena10/stonewall2_hm.tga \ @@ -2830,6 +3572,9 @@ data1/textures/arena6/wires1_hm.tga \ data1/textures/arena6/wires1_nm.tga \ data1/textures/arena6/wires1.tga \ + data1/textures/arena7/bluefloro_hm.tga \ + data1/textures/arena7/bluefloro_nm.tga \ + data1/textures/arena7/bluefloro.tga \ data1/textures/arena7/bluegrid.tga \ data1/textures/arena7/ceiling1.tga \ data1/textures/arena7/floor1_hm.tga \ @@ -2985,6 +3730,7 @@ data1/textures/arena9/biggrate1_hm.tga \ data1/textures/arena9/biggrate1_nm.tga \ data1/textures/arena9/biggrate1.tga \ + data1/textures/arena9/blueglass.tga \ data1/textures/arena9/boxmetal_hm.tga \ data1/textures/arena9/boxmetal_nm.tga \ data1/textures/arena9/boxmetal.tga \ @@ -3168,6 +3914,8 @@ data1/textures/arena9/platefloor8_hm.tga \ data1/textures/arena9/platefloor8_nm.tga \ data1/textures/arena9/platefloor8.tga \ + data1/textures/arena9/purpleglass.tga \ + data1/textures/arena9/redglass.tga \ data1/textures/arena9/redtechwall2_hm.tga \ data1/textures/arena9/redtechwall2_nm.tga \ data1/textures/arena9/redtechwall2.tga \ @@ -3225,6 +3973,13 @@ data1/textures/blanks/blank3.tga \ data1/textures/blanks/blank4.tga \ data1/textures/blanks/blank5.tga \ + data1/textures/blanks/blank6.tga \ + data1/textures/blanks/blank7.tga \ + data1/textures/blood/blood_handprint.tga \ + data1/textures/blood/blood_splatter1.tga \ + data1/textures/blood/blood_splatter2.tga \ + data1/textures/blood/blood_splatter3.tga \ + data1/textures/blood/blood_splatter4.tga \ data1/textures/common/0_clip.tga \ data1/textures/common/0_hint.tga \ data1/textures/common/0_sky1.tga \ @@ -3584,6 +4339,7 @@ data1/textures/rage/support_column_nm.tga \ data1/textures/rage/support_column.tga \ data1/textures/rage/support_trim.tga \ + data1/textures/rage/trimlight_blue.tga \ data1/textures/rage/trimlight_purple.tga \ data1/textures/rage/trimlight_red.tga \ data1/textures/rage/wall_blue.tga \ @@ -3599,6 +4355,10 @@ data1/textures/ramp1f.wal \ data1/textures/ramp1.tga \ data1/textures/ramp1.wal \ + data1/textures/rigel/baselightblue.tga \ + data1/textures/rigel/baselightred.tga \ + data1/textures/water/blood_nm.tga \ + data1/textures/water/blood.tga \ data1/textures/water/bluewater_nm.tga \ data1/textures/water/bluewater.tga \ data1/textures/water/clearwater_nm.tga \ @@ -3638,7 +4398,10 @@ data1/textures/xempx/sign-electro_hm.tga \ data1/textures/xempx/sign-electro.tga \ data1/textures/xempx/sign_radioactive_hm.tga \ - data1/textures/xempx/sign_radioactive.tga \ + data1/textures/xempx/sign_radioactive.tga + +vehiclesdir = $(pkgdatadir) +nobase_nodist_vehicles_DATA = \ data1/vehicles/bomber/bomb.md2 \ data1/vehicles/bomber/bomb.tga \ data1/vehicles/bomber/console_normal.tga \ @@ -3653,6 +4416,7 @@ data1/vehicles/deathball/deathball.md2 \ data1/vehicles/deathball/deathball.tga \ data1/vehicles/deathball/deathmask.tga \ + data1/vehicles/deathball/skin_fx.tga \ data1/vehicles/deathball/skin_normal.tga \ data1/vehicles/deathball/skin.tga \ data1/vehicles/deathball/v_wep.md2 \ @@ -3674,10 +4438,42 @@ data1/vehicles/strafer/v_wep.md2 \ data1/vehicles/strafer/window.md2 +graphical_presetsdir = $(pkgdatadir) +nobase_nodist_graphical_presets_DATA = \ + data1/graphical_presets/compatibility.cfg \ + data1/graphical_presets/maxperformance.cfg \ + data1/graphical_presets/performance.cfg \ + data1/graphical_presets/quality.cfg \ + data1/graphical_presets/maxquality.cfg + +tacticaldir = $(pkgdatadir) +nobase_nodist_tactical_DATA = \ + tactical/maps.lst \ + tactical/motd.txt \ + tactical/default.cfg \ + tactical/server.cfg + +gamedata_files = \ + $(nobase_nodist_env_DATA) \ + $(nobase_nodist_fonts_DATA) \ + $(nobase_nodist_gfx_DATA) \ + $(nobase_nodist_levelshots_DATA) \ + $(nobase_nodist_maps_DATA) \ + $(nobase_nodist_models_DATA) \ + $(nobase_nodist_particles_DATA) \ + $(nobase_nodist_pics_DATA) \ + $(nobase_nodist_players_DATA) \ + $(nobase_nodist_scripts_DATA) \ + $(nobase_nodist_sound_DATA) \ + $(nobase_nodist_textures_DATA) \ + $(nobase_nodist_vehicles_DATA) \ + $(nobase_nodist_graphical_presets_DATA) \ + $(nobase_nodist_tactical_DATA) + all: all-recursive .SUFFIXES: -am--refresh: +am--refresh: Makefile @: $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(srcdir)/game_data.am $(am__configure_deps) @for dep in $?; do \ @@ -3702,6 +4498,7 @@ echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ esac; +$(srcdir)/game_data.am: $(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) $(SHELL) ./config.status --recheck @@ -3713,10 +4510,8 @@ $(am__aclocal_m4_deps): config/config.h: config/stamp-h1 - @if test ! -f $@; then \ - rm -f config/stamp-h1; \ - $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1; \ - else :; fi + @test -f $@ || rm -f config/stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) config/stamp-h1 config/stamp-h1: $(top_srcdir)/config/config.h.in $(top_builddir)/config.status @rm -f config/stamp-h1 @@ -3730,8 +4525,11 @@ -rm -f config/config.h config/stamp-h1 install-dist_docDATA: $(dist_doc_DATA) @$(NORMAL_INSTALL) - test -z "$(docdir)" || $(MKDIR_P) "$(DESTDIR)$(docdir)" @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(docdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(docdir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -3745,13 +4543,14 @@ @$(NORMAL_UNINSTALL) @list='$(dist_doc_DATA)'; test -n "$(docdir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(docdir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(docdir)" && rm -f $$files + dir='$(DESTDIR)$(docdir)'; $(am__uninstall_files_from_dir) install-dist_iconDATA: $(dist_icon_DATA) @$(NORMAL_INSTALL) - test -z "$(icondir)" || $(MKDIR_P) "$(DESTDIR)$(icondir)" @list='$(dist_icon_DATA)'; test -n "$(icondir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(icondir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(icondir)" || exit 1; \ + fi; \ for p in $$list; do \ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \ echo "$$d$$p"; \ @@ -3765,50 +4564,460 @@ @$(NORMAL_UNINSTALL) @list='$(dist_icon_DATA)'; test -n "$(icondir)" || list=; \ files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(icondir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(icondir)" && rm -f $$files -install-nobase_dist_pkgdataDATA: $(nobase_dist_pkgdata_DATA) + dir='$(DESTDIR)$(icondir)'; $(am__uninstall_files_from_dir) +install-nobase_dist_arenaDATA: $(nobase_dist_arena_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_dist_arena_DATA)'; test -n "$(arenadir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(arenadir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(arenadir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(arenadir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(arenadir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(arenadir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(arenadir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_dist_arenaDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_dist_arena_DATA)'; test -n "$(arenadir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(arenadir)'; $(am__uninstall_files_from_dir) +install-nobase_dist_botinfoDATA: $(nobase_dist_botinfo_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_dist_botinfo_DATA)'; test -n "$(botinfodir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(botinfodir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(botinfodir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(botinfodir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(botinfodir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(botinfodir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(botinfodir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_dist_botinfoDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_dist_botinfo_DATA)'; test -n "$(botinfodir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(botinfodir)'; $(am__uninstall_files_from_dir) +install-nobase_dist_data1DATA: $(nobase_dist_data1_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_dist_data1_DATA)'; test -n "$(data1dir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(data1dir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(data1dir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(data1dir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(data1dir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(data1dir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(data1dir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_dist_data1DATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_dist_data1_DATA)'; test -n "$(data1dir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(data1dir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_envDATA: $(nobase_nodist_env_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_env_DATA)'; test -n "$(envdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(envdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(envdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(envdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(envdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(envdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(envdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_envDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_env_DATA)'; test -n "$(envdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(envdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_fontsDATA: $(nobase_nodist_fonts_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_fonts_DATA)'; test -n "$(fontsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(fontsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(fontsdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(fontsdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(fontsdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(fontsdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(fontsdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_fontsDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_fonts_DATA)'; test -n "$(fontsdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(fontsdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_gfxDATA: $(nobase_nodist_gfx_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_gfx_DATA)'; test -n "$(gfxdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(gfxdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(gfxdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(gfxdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(gfxdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(gfxdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(gfxdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_gfxDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_gfx_DATA)'; test -n "$(gfxdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(gfxdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_graphical_presetsDATA: $(nobase_nodist_graphical_presets_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_graphical_presets_DATA)'; test -n "$(graphical_presetsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(graphical_presetsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(graphical_presetsdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(graphical_presetsdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(graphical_presetsdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(graphical_presetsdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(graphical_presetsdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_graphical_presetsDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_graphical_presets_DATA)'; test -n "$(graphical_presetsdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(graphical_presetsdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_levelshotsDATA: $(nobase_nodist_levelshots_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_levelshots_DATA)'; test -n "$(levelshotsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(levelshotsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(levelshotsdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(levelshotsdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(levelshotsdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(levelshotsdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(levelshotsdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_levelshotsDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_levelshots_DATA)'; test -n "$(levelshotsdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(levelshotsdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_mapsDATA: $(nobase_nodist_maps_DATA) @$(NORMAL_INSTALL) - test -z "$(pkgdatadir)" || $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)" - @list='$(nobase_dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + @list='$(nobase_nodist_maps_DATA)'; test -n "$(mapsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(mapsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(mapsdir)" || exit 1; \ + fi; \ $(am__nobase_list) | while read dir files; do \ xfiles=; for file in $$files; do \ if test -f "$$file"; then xfiles="$$xfiles $$file"; \ else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ test -z "$$xfiles" || { \ test "x$$dir" = x. || { \ - echo "$(MKDIR_P) '$(DESTDIR)$(pkgdatadir)/$$dir'"; \ - $(MKDIR_P) "$(DESTDIR)$(pkgdatadir)/$$dir"; }; \ - echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(pkgdatadir)/$$dir'"; \ - $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(pkgdatadir)/$$dir" || exit $$?; }; \ + echo " $(MKDIR_P) '$(DESTDIR)$(mapsdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(mapsdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(mapsdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(mapsdir)/$$dir" || exit $$?; }; \ done -uninstall-nobase_dist_pkgdataDATA: +uninstall-nobase_nodist_mapsDATA: @$(NORMAL_UNINSTALL) - @list='$(nobase_dist_pkgdata_DATA)'; test -n "$(pkgdatadir)" || list=; \ + @list='$(nobase_nodist_maps_DATA)'; test -n "$(mapsdir)" || list=; \ $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ - test -n "$$files" || exit 0; \ - echo " ( cd '$(DESTDIR)$(pkgdatadir)' && rm -f" $$files ")"; \ - cd "$(DESTDIR)$(pkgdatadir)" && rm -f $$files + dir='$(DESTDIR)$(mapsdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_modelsDATA: $(nobase_nodist_models_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_models_DATA)'; test -n "$(modelsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(modelsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(modelsdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(modelsdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(modelsdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(modelsdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(modelsdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_modelsDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_models_DATA)'; test -n "$(modelsdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(modelsdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_particlesDATA: $(nobase_nodist_particles_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_particles_DATA)'; test -n "$(particlesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(particlesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(particlesdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(particlesdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(particlesdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(particlesdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(particlesdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_particlesDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_particles_DATA)'; test -n "$(particlesdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(particlesdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_picsDATA: $(nobase_nodist_pics_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_pics_DATA)'; test -n "$(picsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(picsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(picsdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(picsdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(picsdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(picsdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(picsdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_picsDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_pics_DATA)'; test -n "$(picsdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(picsdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_playersDATA: $(nobase_nodist_players_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_players_DATA)'; test -n "$(playersdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(playersdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(playersdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(playersdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(playersdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(playersdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(playersdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_playersDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_players_DATA)'; test -n "$(playersdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(playersdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_scriptsDATA: $(nobase_nodist_scripts_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_scripts_DATA)'; test -n "$(scriptsdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(scriptsdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(scriptsdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(scriptsdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(scriptsdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(scriptsdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(scriptsdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_scriptsDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_scripts_DATA)'; test -n "$(scriptsdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(scriptsdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_soundDATA: $(nobase_nodist_sound_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_sound_DATA)'; test -n "$(sounddir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(sounddir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(sounddir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(sounddir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(sounddir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(sounddir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(sounddir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_soundDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_sound_DATA)'; test -n "$(sounddir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(sounddir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_tacticalDATA: $(nobase_nodist_tactical_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_tactical_DATA)'; test -n "$(tacticaldir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(tacticaldir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(tacticaldir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(tacticaldir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(tacticaldir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(tacticaldir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(tacticaldir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_tacticalDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_tactical_DATA)'; test -n "$(tacticaldir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(tacticaldir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_texturesDATA: $(nobase_nodist_textures_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_textures_DATA)'; test -n "$(texturesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(texturesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(texturesdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(texturesdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(texturesdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(texturesdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(texturesdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_texturesDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_textures_DATA)'; test -n "$(texturesdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(texturesdir)'; $(am__uninstall_files_from_dir) +install-nobase_nodist_vehiclesDATA: $(nobase_nodist_vehicles_DATA) + @$(NORMAL_INSTALL) + @list='$(nobase_nodist_vehicles_DATA)'; test -n "$(vehiclesdir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(vehiclesdir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(vehiclesdir)" || exit 1; \ + fi; \ + $(am__nobase_list) | while read dir files; do \ + xfiles=; for file in $$files; do \ + if test -f "$$file"; then xfiles="$$xfiles $$file"; \ + else xfiles="$$xfiles $(srcdir)/$$file"; fi; done; \ + test -z "$$xfiles" || { \ + test "x$$dir" = x. || { \ + echo " $(MKDIR_P) '$(DESTDIR)$(vehiclesdir)/$$dir'"; \ + $(MKDIR_P) "$(DESTDIR)$(vehiclesdir)/$$dir"; }; \ + echo " $(INSTALL_DATA) $$xfiles '$(DESTDIR)$(vehiclesdir)/$$dir'"; \ + $(INSTALL_DATA) $$xfiles "$(DESTDIR)$(vehiclesdir)/$$dir" || exit $$?; }; \ + done + +uninstall-nobase_nodist_vehiclesDATA: + @$(NORMAL_UNINSTALL) + @list='$(nobase_nodist_vehicles_DATA)'; test -n "$(vehiclesdir)" || list=; \ + $(am__nobase_strip_setup); files=`$(am__nobase_strip)`; \ + dir='$(DESTDIR)$(vehiclesdir)'; $(am__uninstall_files_from_dir) # This directory's subdirectories are mostly independent; you can cd -# into them and run `make' without going through this Makefile. -# To change the values of `make' variables: instead of editing Makefiles, -# (1) if the variable is set in `config.status', edit `config.status' -# (which will cause the Makefiles to be regenerated when you run `make'); -# (2) otherwise, pass the desired values on the `make' command line. -$(RECURSIVE_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ dot_seen=no; \ target=`echo $@ | sed s/-recursive//`; \ - list='$(SUBDIRS)'; for subdir in $$list; do \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ echo "Making $$target in $$subdir"; \ if test "$$subdir" = "."; then \ dot_seen=yes; \ @@ -3823,57 +5032,12 @@ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ fi; test -z "$$fail" -$(RECURSIVE_CLEAN_TARGETS): - @fail= failcom='exit 1'; \ - for f in x $$MAKEFLAGS; do \ - case $$f in \ - *=* | --[!k]*);; \ - *k*) failcom='fail=yes';; \ - esac; \ - done; \ - dot_seen=no; \ - case "$@" in \ - distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ - *) list='$(SUBDIRS)' ;; \ - esac; \ - rev=''; for subdir in $$list; do \ - if test "$$subdir" = "."; then :; else \ - rev="$$subdir $$rev"; \ - fi; \ - done; \ - rev="$$rev ."; \ - target=`echo $@ | sed s/-recursive//`; \ - for subdir in $$rev; do \ - echo "Making $$target in $$subdir"; \ - if test "$$subdir" = "."; then \ - local_target="$$target-am"; \ - else \ - local_target="$$target"; \ - fi; \ - ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ - || eval $$failcom; \ - done && test -z "$$fail" -tags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \ - done -ctags-recursive: - list='$(SUBDIRS)'; for subdir in $$list; do \ - test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \ - done - -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags -TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ @@ -3889,12 +5053,7 @@ set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ fi; \ done; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -3906,15 +5065,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -3923,9 +5078,31 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files distdir: $(DISTFILES) $(am__remove_distdir) @@ -3961,13 +5138,10 @@ done @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ if test "$$subdir" = .; then :; else \ - test -d "$(distdir)/$$subdir" \ - || $(MKDIR_P) "$(distdir)/$$subdir" \ - || exit 1; \ - fi; \ - done - @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ - if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ $(am__relativize); \ new_distdir=$$reldir; \ @@ -3999,36 +5173,42 @@ || chmod -R a+r "$(distdir)" dist-gzip: distdir tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-bzip2: distdir - tardir=$(distdir) && $(am__tar) | bzip2 -9 -c >$(distdir).tar.bz2 - $(am__remove_distdir) + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) -dist-lzma: distdir - tardir=$(distdir) && $(am__tar) | lzma -9 -c >$(distdir).tar.lzma - $(am__remove_distdir) +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) dist-xz: distdir - tardir=$(distdir) && $(am__tar) | xz -c >$(distdir).tar.xz - $(am__remove_distdir) + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) dist-tarZ: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z - $(am__remove_distdir) + $(am__post_remove_distdir) dist-shar: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz - $(am__remove_distdir) + $(am__post_remove_distdir) dist-zip: distdir -rm -f $(distdir).zip zip -rq $(distdir).zip $(distdir) - $(am__remove_distdir) + $(am__post_remove_distdir) -dist dist-all: distdir - tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz - $(am__remove_distdir) +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) # This target untars the dist file and tries a VPATH configuration. Then # it guarantees that the distribution is self-contained by making another @@ -4039,8 +5219,8 @@ GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ *.tar.bz2*) \ bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ - *.tar.lzma*) \ - lzma -dc $(distdir).tar.lzma | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ *.tar.xz*) \ xz -dc $(distdir).tar.xz | $(am__untar) ;;\ *.tar.Z*) \ @@ -4050,9 +5230,9 @@ *.zip*) \ unzip $(distdir).zip ;;\ esac - chmod -R a-w $(distdir); chmod a+w $(distdir) - mkdir $(distdir)/_build - mkdir $(distdir)/_inst + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_inst chmod a-w $(distdir) test -d $(distdir)/_build || exit 0; \ dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ @@ -4060,6 +5240,7 @@ && am__cwd=`pwd` \ && $(am__cd) $(distdir)/_build \ && ../configure --srcdir=.. --prefix="$$dc_install_base" \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ $(DISTCHECK_CONFIGURE_FLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) \ && $(MAKE) $(AM_MAKEFLAGS) dvi \ @@ -4083,13 +5264,21 @@ && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ && cd "$$am__cwd" \ || exit 1 - $(am__remove_distdir) + $(am__post_remove_distdir) @(echo "$(distdir) archives ready for distribution: "; \ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' distuninstallcheck: - @$(am__cd) '$(distuninstallcheck_dir)' \ - && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \ + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ || { echo "ERROR: files left after uninstall:" ; \ if test -n "$(DESTDIR)"; then \ echo " (check DESTDIR support)"; \ @@ -4110,7 +5299,7 @@ all-am: Makefile $(DATA) installdirs: installdirs-recursive installdirs-am: - for dir in "$(DESTDIR)$(docdir)" "$(DESTDIR)$(icondir)" "$(DESTDIR)$(pkgdatadir)"; do \ + for dir in "$(DESTDIR)$(docdir)" "$(DESTDIR)$(icondir)" "$(DESTDIR)$(arenadir)" "$(DESTDIR)$(botinfodir)" "$(DESTDIR)$(data1dir)" "$(DESTDIR)$(envdir)" "$(DESTDIR)$(fontsdir)" "$(DESTDIR)$(gfxdir)" "$(DESTDIR)$(graphical_presetsdir)" "$(DESTDIR)$(levelshotsdir)" "$(DESTDIR)$(mapsdir)" "$(DESTDIR)$(modelsdir)" "$(DESTDIR)$(particlesdir)" "$(DESTDIR)$(picsdir)" "$(DESTDIR)$(playersdir)" "$(DESTDIR)$(scriptsdir)" "$(DESTDIR)$(sounddir)" "$(DESTDIR)$(tacticaldir)" "$(DESTDIR)$(texturesdir)" "$(DESTDIR)$(vehiclesdir)"; do \ test -z "$$dir" || $(MKDIR_P) "$$dir"; \ done install: install-recursive @@ -4123,10 +5312,15 @@ installcheck: installcheck-recursive install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -4160,7 +5354,22 @@ info-am: install-data-am: install-data-local install-dist_docDATA \ - install-dist_iconDATA install-nobase_dist_pkgdataDATA + install-dist_iconDATA install-nobase_dist_arenaDATA \ + install-nobase_dist_botinfoDATA install-nobase_dist_data1DATA \ + install-nobase_nodist_envDATA install-nobase_nodist_fontsDATA \ + install-nobase_nodist_gfxDATA \ + install-nobase_nodist_graphical_presetsDATA \ + install-nobase_nodist_levelshotsDATA \ + install-nobase_nodist_mapsDATA \ + install-nobase_nodist_modelsDATA \ + install-nobase_nodist_particlesDATA \ + install-nobase_nodist_picsDATA \ + install-nobase_nodist_playersDATA \ + install-nobase_nodist_scriptsDATA \ + install-nobase_nodist_soundDATA \ + install-nobase_nodist_tacticalDATA \ + install-nobase_nodist_texturesDATA \ + install-nobase_nodist_vehiclesDATA install-dvi: install-dvi-recursive @@ -4207,35 +5416,92 @@ ps-am: uninstall-am: uninstall-dist_docDATA uninstall-dist_iconDATA \ - uninstall-local uninstall-nobase_dist_pkgdataDATA - -.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) ctags-recursive \ - install-am install-strip tags-recursive - -.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \ - all all-am am--refresh check check-am clean clean-generic \ - ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \ - dist-hook dist-lzma dist-shar dist-tarZ dist-xz dist-zip \ - distcheck distclean distclean-generic distclean-hdr \ + uninstall-local uninstall-nobase_dist_arenaDATA \ + uninstall-nobase_dist_botinfoDATA \ + uninstall-nobase_dist_data1DATA \ + uninstall-nobase_nodist_envDATA \ + uninstall-nobase_nodist_fontsDATA \ + uninstall-nobase_nodist_gfxDATA \ + uninstall-nobase_nodist_graphical_presetsDATA \ + uninstall-nobase_nodist_levelshotsDATA \ + uninstall-nobase_nodist_mapsDATA \ + uninstall-nobase_nodist_modelsDATA \ + uninstall-nobase_nodist_particlesDATA \ + uninstall-nobase_nodist_picsDATA \ + uninstall-nobase_nodist_playersDATA \ + uninstall-nobase_nodist_scriptsDATA \ + uninstall-nobase_nodist_soundDATA \ + uninstall-nobase_nodist_tacticalDATA \ + uninstall-nobase_nodist_texturesDATA \ + uninstall-nobase_nodist_vehiclesDATA + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \ + dist-zip distcheck distclean distclean-generic distclean-hdr \ distclean-tags distcleancheck distdir distuninstallcheck dvi \ dvi-am html html-am info info-am install install-am \ install-data install-data-am install-data-local \ install-dist_docDATA install-dist_iconDATA install-dvi \ install-dvi-am install-exec install-exec-am install-html \ install-html-am install-info install-info-am install-man \ - install-nobase_dist_pkgdataDATA install-pdf install-pdf-am \ + install-nobase_dist_arenaDATA install-nobase_dist_botinfoDATA \ + install-nobase_dist_data1DATA install-nobase_nodist_envDATA \ + install-nobase_nodist_fontsDATA install-nobase_nodist_gfxDATA \ + install-nobase_nodist_graphical_presetsDATA \ + install-nobase_nodist_levelshotsDATA \ + install-nobase_nodist_mapsDATA \ + install-nobase_nodist_modelsDATA \ + install-nobase_nodist_particlesDATA \ + install-nobase_nodist_picsDATA \ + install-nobase_nodist_playersDATA \ + install-nobase_nodist_scriptsDATA \ + install-nobase_nodist_soundDATA \ + install-nobase_nodist_tacticalDATA \ + install-nobase_nodist_texturesDATA \ + install-nobase_nodist_vehiclesDATA install-pdf install-pdf-am \ install-ps install-ps-am install-strip installcheck \ installcheck-am installdirs installdirs-am maintainer-clean \ maintainer-clean-generic mostlyclean mostlyclean-generic pdf \ - pdf-am ps ps-am tags tags-recursive uninstall uninstall-am \ + pdf-am ps ps-am tags tags-am uninstall uninstall-am \ uninstall-dist_docDATA uninstall-dist_iconDATA uninstall-local \ - uninstall-nobase_dist_pkgdataDATA + uninstall-nobase_dist_arenaDATA \ + uninstall-nobase_dist_botinfoDATA \ + uninstall-nobase_dist_data1DATA \ + uninstall-nobase_nodist_envDATA \ + uninstall-nobase_nodist_fontsDATA \ + uninstall-nobase_nodist_gfxDATA \ + uninstall-nobase_nodist_graphical_presetsDATA \ + uninstall-nobase_nodist_levelshotsDATA \ + uninstall-nobase_nodist_mapsDATA \ + uninstall-nobase_nodist_modelsDATA \ + uninstall-nobase_nodist_particlesDATA \ + uninstall-nobase_nodist_picsDATA \ + uninstall-nobase_nodist_playersDATA \ + uninstall-nobase_nodist_scriptsDATA \ + uninstall-nobase_nodist_soundDATA \ + uninstall-nobase_nodist_tacticalDATA \ + uninstall-nobase_nodist_texturesDATA \ + uninstall-nobase_nodist_vehiclesDATA # remove svn directories from distribution staging area after creating # distribution in staging area and before running archiver +# but, it is probably a better idea to export the repository to the +# staging area since export does not include the .svn parts +# +# copy noinst DATA to the distribution directory. while partitioning the +# data files into subdirectory groups solves the problem with exceeding +# command length limits for installation, it does not help with tarball +# creation. +# dist-hook: rm -rf `find $(distdir) -name .svn` + $(foreach GAMEDIR, $(sort $(dir $(gamedata_files))),$(shell mkdir -p $(distdir)/$(GAMEDIR) )) + $(foreach GAMEFILE, $(gamedata_files), $(shell cp -p $(srcdir)/$(GAMEFILE) $(distdir)/$(GAMEFILE))) # # Alternate Install @@ -4251,10 +5517,8 @@ # features. # install-alternate: -@ALTERNATE_INSTALL_TRUE@@BUILD_CLIENT_TRUE@ cp $(top_builddir)/source/crx@EXEEXT@ $(srcdir)/crx@EXEEXT@ -@ALTERNATE_INSTALL_TRUE@@BUILD_CLIENT_TRUE@@REMOVE_SYMBOLS_TRUE@ strip $(srcdir)/crx@EXEEXT@ -@ALTERNATE_INSTALL_TRUE@@BUILD_UNIX_TRUE@ cp $(top_builddir)/source/crx-ded $(srcdir)/crx-ded -@ALTERNATE_INSTALL_TRUE@@BUILD_UNIX_TRUE@@REMOVE_SYMBOLS_TRUE@ strip $(srcdir)/crx-ded +@ALTERNATE_INSTALL_TRUE@@BUILD_CLIENT_TRUE@ cp $(top_builddir)/source/alienarena@EXEEXT@ $(srcdir)/alienarena@EXEEXT@ +@ALTERNATE_INSTALL_TRUE@@BUILD_UNIX_TRUE@ cp $(top_builddir)/source/alienarena-ded $(srcdir)/alienarena-ded @ALTERNATE_INSTALL_FALSE@ @echo "make install-alternate requires configuring with --enable-alternate-install" # @@ -4268,10 +5532,6 @@ @ALTERNATE_INSTALL_TRUE@ @echo "Alternate install. Manual uninstall required!!!" @ALTERNATE_INSTALL_TRUE@ exit 1 -# -# game data for distribution package -# - # Tell versions [3.59,3.63) of GNU make to not export all variables. # Otherwise a system limit (for SysV at least) may be exceeded. .NOEXPORT: diff -Nru alien-arena-7.53+dfsg/README alien-arena-7.66+dfsg/README --- alien-arena-7.53+dfsg/README 2011-12-24 09:24:28.000000000 +0000 +++ alien-arena-7.66+dfsg/README 2013-08-27 14:55:00.000000000 +0000 @@ -1,24 +1,111 @@ - Alien Arena 2011 - Version 7.53 + Alien Arena + Version 7.66 + 1. Scope This document includes information about the GNU-Linux/Unix -version of Alien Arena 2011. Custom options and other -information specific to Alien Arena are included here. +version of Alien Arena. Custom options and other information +specific to Alien Arena are included here. For general information, licensing, and contributers, see the README.txt and license.txt documents (in the docs/ subdirectory -in the distribution archive). +in the distribution archive). For generic information about +installation, see the GNU INSTALL document. + + +2. Version 7.66 - For Players + +The performance of Alien Arena 7.66 is much better that previous +versions. Recent desktop and notebook computers with 3D +acceleration for OpenGL will perform well. Use the Video +Settings menu to override the automatically selected performance +level. + +Alien Arena installation alternatives: + + * Your distribution's package manager. + + * PlayDeb or Desura distribution service. + PlayDeb is at http://www.playdeb.net/. + Desura is at http://www.desura.com/. + + * Build from source. + See the "Installation from Distribution Archive" section below. + +For more detail see these sections + * Help and Support + * Configuration and Troubleshooting + * Network Information + * Running the Program + + +3. Version 7.66 - For Packagers + + * The incompatibility with ODE 0.12 has been corrected. + The configure option to use the system libode is --with-system-libode. + If the system libode causes problems with ragdoll animation, + configure the program to use the integrated libode. + + * There is now direct dependency on zlib. + The configure option --with-zlib should be used. + + * The configure.ac status report has more information. + + * Some little used options have been removed from configure.ac + + * The documentation installation override configure option should work now. + The configure option is --disable-documents. -For generic information about installation, see the GNU INSTALL -document. + * --with-xf86vm is the default. + * --without-xf86dga is the default. -2. Resources + * The Autotools build used autoconf 2.68, and automake 1.11.6. -The Alien Arena HomePage URL is: + +The default standard install follows this file system scheme: + + * ${bindir}/alienarena (the client program) + * ${bindir}/alienarena-ded (the dedicated server program) + + * ${pkgdatadir}/arena/ (read only configuration files) + * ${pkgdatadir}/botinfo/ (read only bot control files) + * ${pkgdatadir}/data1/ (read only resource files) + + * ${datadir}/icons/alienarena.png (the official icon) + The configure option is --with-icondir=DIR + + * ${docdir}/ (documents, licenses) + +The shared directory is defined at build time to be exactly +$(pkgdatadir). The preprocessor symbol, DATADIR, is set to +$(pkgdatadir), The program expects the arena, botinfo, and data1 +shared, read-only subdirectories to be there. + +The program defaults for the user's home directory are: + + * ${HOME}/.codered/arena/ (read/write configuration and resource files) + * ${HOME}/.codered/botinfo/ (read/write bot control files) + * ${HOME}/.codered/data1/ (read/write resource files, rarely created) + +At build time, the environment variable, ALIENARENA_HOMEDIR, can +be used to override the default .codered user home subdirectory. + +At run time, the environment variable, COR_GAME, will override +the user home subdirectory program setting. This should normally +be left as a user option. + +The arena subdirectory in the user home directory receives most +of automatic resource downloads. By convention, it is where 3rd +party maps are placed. The files in the user home have priority +over the same name files in the read-only, shared directories. + + +4. Help and Support + +The Alien Arena Home Page URL is: http://red.planetarena.org/ @@ -30,80 +117,20 @@ The in-game IRC connects to #alienarena there. -There is a Server Browser on the Web at: - - http://chaingun.org/alienarena/tools/browser/ +There are web sites with 3rd party maps, skins, etc. See the +Home Page for links. There is a Subversion (SVN) repository for Alien Arena. See the topic "Getting Alien Arena from SVN" below. +Alien Arena is on IndieDB. +http://www.indiedb.com/games/alien-arena-2008 -3. Changes for version 7.53 - -The Autotools build uses autoconf 2.68, and automake 1.11. The -m4 macros are updated and configure.ac modified accordingly. -There are no major changes to the build procedure from earlier -7.5x versions. - -The complete version 7.53 changelog is available at: - - http://icculus.org/alienarena/changelogs/7.53.txt - -Following are some highlights. - -Visual and performance improvements: - * Significant performance increases on high settings from extending - implementation of VBO (Vertex Buffer Objects). - * IQM and MD2 model rendering improvements. - * Grass/vegetation rendering improvements. - * Model precaching improvements. - -Game-related updates: - * New CTF map based on dm-zion2k9: ctf-zion2k9 - * New TCA map, tca-invasion, derived from ctf-invasion using new - entity definition feature. - * Improvements to bot AI navigation, aiming and movement. - * CTF scoring improvements. - * Speed-hack detection (sv_enforcetime) improvements. - * Optional player lights ("DM Lights") for non-team games. - -Other: - * Additional video resolutions in menu and other menu additions. - * Player password account system and statistics improvements. - * Client to server packet rate limit lowered to approx. 60 pps. - -See the section "Notes about Console Variables" below. There are -some new and changed "cvars". - - -4. Some previous version changes affecting build and install: - - * The Open Dynamics Engine (ODE) is integrated with the main program; - so libode is, optionally, not required. ODE is written in c++, so g++ - and libstdc++ are required to build and link the integrated ODE. - * A configure option to disable document installation was added. - * An installation path for the icon, icondir, was added and the icon - was renamed to alienarena.png. - * The server terminal may be configured to support color output. - * The dedicated server was renamed to crx-ded. - * The game.so shared library and LIBDIR variable were eliminated. - - -5. Requirements - -Alien Arena uses OpenGL for 3D graphics rendering. Not all -computers have 3D acceleration hardware and drivers with adequate -performance for 3D game play. While some systems may perform ok -with open source drivers, a proprietary driver, such as those -from AMD/ATI and NVidia, is often needed. The Video Settings -menu may be used to override the automatically selected -performance level. +Alien Arena is on Facebook and Twitter. See the Homepage for +links. -Online performance will vary depending on the network connection -between the client and the server. Servers with *lower* ping -will usually perform better. -Playing online may require firewall configuration. +5. Network Information These ports are used by the program: * UDP 27900 for the master server. Used for getting server list. @@ -112,29 +139,25 @@ * UDP 27910 is the default for a server, but is often configured otherwise. * TCP 6667 is the default for in-game connection to the IRC channel. -The cURL library is used to retrieve map resources, player +The cURL library is used to retrieve game resources, player ranking information, and current version information from these URLs: - * http://icculus.org/alienarena/sv_downloadurl - * http://stats.planetarena.org + * http://red.planetarena.org/sv_downloadurl + * http://stats.planetarena.org/playerrank.db * http://red.planetarena.org/version/crx_version +Online performance will vary depending on the network connection +between the your computer (the client) and the server. Servers +with *lower* ping are better. + +Playing online may require firewall configuration. -6. Installation -If you are installing Alien Arena using your distribution's -package manager, follow their instructions. Distributions -install the user's configuration in places other than the default -"~/.codered" directory. This is important if you want to create -the "arena/autoexec.cfg" file to customize your settings. Search -for "arena/config.cfg" to find the configuration directory. - -Two installation alternatives are PlayDeb and Desura. If using -those, follow their installation procedures. PlayDeb is at -http://www.playdeb.net/. Desura is at http://www.desura.com/. +6. Installation from Distribution Archive -The version available with a distribution or the game -distribution services may not be the latest. +This describes the standard installation. There is another +installation method described below in section, "Alternate +Install". If you are reading this, you may have already unpacked the distribution archive (aka, "tarball") into your HOME directory. @@ -145,55 +168,86 @@ name, and left click on "Extract Here." Then follow the instructions below to build the program. -If the installation fails, check the error message for required -software packages that may be missing. Alien Arena uses: X11, -OpenGL, OpenAL 1.1, Ogg-Vorbis, cURL, FreeType2, and JPEG. Some -major distributions have "dev" versions of the libraries that are -needed to build programs. These are not installed by default, so -you may need to install them using your distributions package -manager. Version 7.53 does not require the ODE library (it is -integrated). There is a configure option to use the system ODE -library (see below.) - -For Ubuntu and similar systems, see the topic, "Getting Required -Packages with Synaptic", below. - -For advanced configure options, see the topic, "Custom Configure -Options", below. It is not necessary, but it would be a good -idea to take a look at those. +To build Alien Arena requires the compiler and various libraries. +If you have built other programs these will probably be +installed. If they are not there will be errors and the configure +procedure will fail. + +If it fails, check the error messages for required software +packages that may be missing. Check the forum for easy ways to +install the required libraries for the operating system you are +using. Alien Arena uses these components (in parentheses: some +example file name variations): + *X11 (libx11-dev, libX11, libxxf86dga-dev, libxxf86vm-dev, libXxf86vm) + *OpenGL (libgl1-mesa-dev, libGL) + *OpenAL 1.1 (libopenal, libopenal-dev) + *Ogg-Vorbis, (libogg-dev, libvorbis-dev. libogg, libvorbis, libvorbisfile) + *cURL, (libcurl, libcurl4-gnutls-dev) + *FreeType2 (libfreetype, libfreetype6-dev) + *JPEG (libjpeg8-dev) + *ZLib (libz) + *ODE (libode, libode-dev) -Using the terminal, change to the "alienarena-7.53" directory and +Using the terminal, change to the "alienarena-7.66" directory and enter these commands: + +--- Simple Version --- + $ ./configure $ make $ sudo make install -To run: - $ crx - -In the menu, Single Player will run a simple pre-configured local -game. For more single player options, go to the Host Server -menu. Setting "public server" to no will keep your local game -from being broadcast with the master server list. For -multiplayer, online play, first enter your player name and a -password in the Player Setup menu. Then go to the Join Server -menu to find a Server. (Yes, we know the menu system needs -updating and there are plans to do that.) +--- Not-so-Simple Version --- -Command line options to crx are NOT standard. There is NO -"--help". They follow a format inherited from Alien Arena's -Quake 2 roots. Command line options are the same as console -commands using a '+' character prefix. The details are beyond -the scope of this document; but a simple example is: - $ crx +set maxclients 10 +In the following the command options are listed on separate lines +with short explanations. They are entered on one line with the +command, of course. + +$ export CFLAGS= + -O3 (more optimization than -O2) + -pipe (faster compile) + --march=native (tuned for CPU on this machine) + -DNDEBUG (remove assert statements) + + -Wp,-D_FORTIFY_SOURCE=2 (improved security) + -fstack-protector --param=ssp-buffer-size=4 (improved security) + +If not configuring with the --with-system-libode option then set +the same options for the c++ compiler: + +$ export CXXLAGS= + -O3 + -pipe + --march=native + -DNDEBUG + -Wp,-D_FORTIFY_SOURCE=2 + -fstack-protector --param=ssp-buffer-size=4 + +$./configure + --with-system-libode (use the system libode) + --disable-silent-rules (verbose output) + --disable-dependency-tracking (speed up one-time build) + ALIENARENA_HOMEDIR=some_other_dir (override default ~/.codered) + +$ make + +$ sudo make install + +The variable, ALIENARENA_HOMEDIR, is relative to the user home, +NOT the full path. For example: + $ ./configure ALIENARENA_HOMEDIR=my_alienarena + +Check the notes about using the system libode in the "Custom +Configure Options" section, if ragdolls do not work right, or if +enabling ragdolls crashes the program. By default, 'sudo make install' will install the game programs and data like this: /usr/local/ bin/ - crx - crx-ded (dedicated server) + alienarena + alienarena-ded (dedicated server) share/ alienarena/ arena/ @@ -205,21 +259,6 @@ icons/ alienarena.png -When the program is run, a directory is created in the user HOME -directory. Various kinds of data (config files, downloaded data, -custom bot setups) are written there. The default directory name -is ".codered/". That can be changed using an environment -variable, COR_GAME. - -For example: - $ export COR_GAME=/home/user/.alienarena - -Current settings are stored in ".codered/arena/config.cfg". For -custom settings, create a file, ".codered/arena/autoexec.cfg". -Details about settings are beyond the scope of this document. Go -to the websites, the forum and the IRC channel for more -information. - Following installation, intermediate files generated by the build may be removed using: @@ -234,78 +273,78 @@ Some manual removal may be required. -7. Getting Required Packages with Synaptic +7. Running the Program -Tools and packages required to build Alien Arena may not be -installed. For Ubuntu and similar systems, installing them is -easy with the graphical Synaptic Package Manager. Select the -following packages. Other packages that these depend on will be -automatically selected for installation. This list is based on -Ubuntu 10.10. - - build-essential - libx11-dev - libgl1-mesa-dev - libxxf86vm-dev - libxxf86dga-dev (optional) - libopenal-dev - libjpeg8-dev (or libjpeg62-dev) - libvorbis-dev - libcurl4-gnutls-dev - libode-dev (optional) - libfreetype6-dev - - -8. Notes about Console Variables (cvars) - -New or changed server cvars: - * sv_enforcetime - setting to 1 enables speed hack - detection. (May give false positives.) - * skill - for bot skill. setting to 3 forces all bots - to skill level 3. - * insta_rockets - a game mode combination of Instagib - and Rocket Arena. - * g_dm_lights - 1 enable, 0 disable DM Lights. - -New client cvars: - * gl_usevbo - enables the use of Vertex Buffer Objects - for better performance. - * cl_dmlights - 1 enable, 0 disable DM Lights when - enabled on server. +To run: + $ alienarena -Alien Arena is based on Quake games. Many of the cvars are the -same as Quake 2. More information can be found on the Forum and -on the Web. +In the menu, Single Player will run a simple pre-configured local +game. For more single player options, go to the Host Server +menu. Setting "public server" to "no" will keep your local game +from being broadcast with the master server list. + +For multiplayer, online play, first enter your player name and a +password in the Player Setup menu. Then go to the Join Server +menu to find a Server. Bots will always show ping of 0. They +have some mean sounding, but amusing, taunts. Do not let it +bother you, just frag 'em. They may attack with the "probe", if +you let them get close, watch out! + +Command line options to alienarena are NOT standard. They follow +a format inherited from Alien Arena's Quake 2 roots. Command +line options are the same as console commands, normally using a +'+' character prefix. The details are beyond the scope of this +document; but a simple example is: + $ alienarena +set maxclients 10 + +When the program is run, a directory is created in the user HOME +directory. Various kinds of data (config files, downloaded data, +custom bot setups) are written there. The default directory name +is ".codered/". That can be changed using an environment +variable, COR_GAME. + +For example: + $ export COR_GAME=/home/user/.my_codered -9. Troubleshooting and Configuration Tips +8. Configuration and Troubleshooting When the game program exits, it stores settings in "config.cfg". The default location for this file is "/home//.codered/arena/", but it might be elsewhere -depending on your distribution. Sometimes it helps to delete -config.cfg, and then re-enter menu settings. For persistent -storage of custom settings, create a file named "autoexec.cfg" in -the same directory as "config.cfg". Settings in "autoexec.cfg" -will override settings in "config.cfg". +depending on your distribution or configuration. + +For custom settings, create a file, "autoexec.cfg" in the same +directory as "config.cfg". Settings in "autoexec.cfg" will +override settings in "config.cfg". Details about settings are +beyond the scope of this document. Go to the websites, the forum +and the IRC channel for more information. + +If there are problems, sometimes it helps to delete "config.cfg", +and then re-enter menu settings. + +Alien Arena is based on Quake games. Many of the cvars are the +same as Quake 2. More information can be found on the Forum and +on the Web. + +Version 7.66 adds new console variables related to new features. +The important ones are set using the menu. Check the forum for +more info. Or ask the friendly people in the IRC channel. If the game does not run smoothly, graphics settings may need to -be adjusted. Also, a different or updated video driver may be -needed. Enable the video frame rate display in the "Game -Options" menu by setting "display fps" to yes. There are -settings in both the "Game Options" and "Video Options" sections -that affect performance. The maximum frame rate is set with the -console variable ("cvar"), "cl_maxfps". Sometimes lowering that -from the default "90" will help. Get more information on the -Forum, Websites, and IRC channel. - -If you have errors that output messages about "ODE", setting the -"ragdolls" option to off in the Game Options menu may help. - -There are known sound problems related to PulseAudio and OpenAL -with some versions of those sound drivers. Check for for -information on OpenAL configuration using "~/.alsoftrc" in your -distributions shared doc directory. +be adjusted. It is best to start with the video card's setup +utility, then adjust the Alien Arena settings. A different or +updated video driver may be needed. + +There are settings in both the "Game Options" and "Video Options" +sections that affect performance. Enable the video frame rate +display in the "Game Options" menu by setting "display fps" to +yes. The maximum frame rate is set with the console variable +("cvar"), "cl_maxfps". Get more information on the Forum, +Websites, and IRC channel. + +For sound problems, check OpenAL documentation about +configuration settings in the "alsoftrc" file. If you have a high resolution mouse, you may need to set the mouse sensitivity cvar. The cvar name is "sensitivity" and it @@ -317,23 +356,16 @@ "in_dgamouse", to zero. Put this line into the "autoexec.cfg" file: set in_dgamouse "0" -Alternatively, when building the program, use this configure -option: - --without-xf86dga +By default, the program is built without DGA, so this only +applies if the following configure option was set. + --with-xf86dga -For advanced users (if you do not know what this means, it is ok -to ignore it): Testing shows that some CFLAGS settings can give a -little performance improvement. Add CFLAGS="" -to the ./configure command. Some to try, depending on system -hardware are: - * -O3 (-O2 is the default) - * -march=core2 or -march=native - * -msse, -msse2, -msse3 or other sse options, and -mfpmath=sse -If you modify CFLAGS, you probably also want the "--disable- -silent-rules" configure option. +If the display will not go into full screen mode, it is likely +the Xxf86vm library (libxxf86vm-dev or libXxf86vm) is missing on +your system. -10. Custom Configure Options +9. Custom Configure Options Run './configure --help' for a list of options. Note that many of the options are built-in and some are not meaningful or useful @@ -351,7 +383,7 @@ To rename the programs, use the standard configure option. For example: - --program-transform-name='s/crx/alienarena/' + --program-transform-name='s/alienarena/alien-arena/' To install to a different location, use the standard configure option. For example: @@ -364,12 +396,9 @@ To use the system-supplied libode, rather than the integrated ODE, use this option: --with-system-libode -Due to variations in the way libode may be built, this is may not -work. It may be preferable to use the system library, however, -if it was built with double precision math. If 'pkg-config ---cflags ode' returns -DdDOUBLE, it is probably safe to use the -system library. The integrated ODE is built using these compile -options: +If 'pkg-config --cflags ode' returns -DdDOUBLE, it is probably +safe to use the system library. The integrated ODE is built +using these compile options: * -DdDOUBLE * -DdTRIMESH_ENABLED * -DdTRIMESH_OPCODE @@ -383,8 +412,7 @@ The server terminal will output color if the following option is used. This converts Quake-style color codes to ANSI color -escapes. (It is not enabled by default because some terminal -configurations may not support ANSI color escapes.) +escapes. --enable-ansi-color Other Alien Arena custom options are intended mostly for @@ -392,7 +420,7 @@ you are doing. -11. Tools +10. Tools Tools/fuse.tar.gz contains a game server browser. See documents in that package for details. @@ -401,7 +429,7 @@ README there for details. -12. Alternate Install +11. Alternate Install This configures the installation to use the "traditional", single directory, in-place install. It does not define DATADIR, and the @@ -431,7 +459,7 @@ effect of using any other 'install' make target is "undefined". -13. Getting Alien Arena from SVN +12. Getting Alien Arena from SVN The repository has the latest development version of Alien Arena. It contains tools and other resources that are not a part of the @@ -448,3 +476,53 @@ More information about Subversion may be found at: http://subversion.apache.org/ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru alien-arena-7.53+dfsg/source/client/cl_ents.c alien-arena-7.66+dfsg/source/client/cl_ents.c --- alien-arena-7.53+dfsg/source/client/cl_ents.c 2011-01-25 04:54:53.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_ents.c 2013-06-22 20:07:36.000000000 +0000 @@ -200,6 +200,7 @@ if (ent->serverframe != cl.frame.serverframe - 1) { // wasn't in last update, so initialize some things ent->trailcount = 1024; // for diminishing rocket / grenade trails + ent->pr = NULL; // for chained particle trails // duplicate the current state so lerping doesn't hurt anything ent->prev = *state; if (state->event == EV_OTHER_TELEPORT) @@ -382,9 +383,9 @@ if (flags & PS_M_ORIGIN) { - state->pmove.origin[0] = MSG_ReadShort (&net_message); - state->pmove.origin[1] = MSG_ReadShort (&net_message); - state->pmove.origin[2] = MSG_ReadShort (&net_message); + state->pmove.origin[0] = MSG_ReadSizeInt (&net_message, coord_bytes); + state->pmove.origin[1] = MSG_ReadSizeInt (&net_message, coord_bytes); + state->pmove.origin[2] = MSG_ReadSizeInt (&net_message, coord_bytes); } if (flags & PS_M_VELOCITY) @@ -510,8 +511,12 @@ int cmd; int len; frame_t *old; + byte new_areabits[MAX_MAP_AREAS/8]; + //HACK: reduce the number of areabit changes detected + memcpy (new_areabits, cl.frame.areabits, MAX_MAP_AREAS/8); memset (&cl.frame, 0, sizeof(cl.frame)); + memcpy (cl.frame.areabits, new_areabits, MAX_MAP_AREAS/8); cl.frame.serverframe = MSG_ReadLong (&net_message); cl.frame.deltaframe = MSG_ReadLong (&net_message); @@ -563,7 +568,12 @@ // read areabits len = MSG_ReadByte (&net_message); - MSG_ReadData (&net_message, &cl.frame.areabits, len); + MSG_ReadData (&net_message, &new_areabits, len); + if (memcmp (cl.frame.areabits, new_areabits, len)) + { + memcpy (cl.frame.areabits, new_areabits, len); + cl.refdef.areabits_changed = true; + } // read playerinfo cmd = MSG_ReadByte (&net_message); @@ -651,6 +661,8 @@ s1 = &cl_parse_entities[(frame->parse_entities+pnum)&(MAX_PARSE_ENTITIES-1)]; cent = &cl_entities[s1->number]; + + ent.number = s1->number; playermodel = false; @@ -798,9 +810,12 @@ } + // Sigh, this is the reason for the RF_NODRAW workaround. +#if 1 // TODO: replace this with an IFDEF for non Alien Arena CRX games // if set to invisible, skip if (!s1->modelindex) continue; +#endif if (effects & EF_PLASMA) { @@ -808,31 +823,36 @@ ent.alpha = 0.6; } - if (effects & EF_FLIES) + if (effects & EF_BUBBLES) { CL_PoweredEffects (ent.origin); } //cool new ctf flag effects - if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/flags/flag1.md2")) { + if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/flags/flag1.md2")) + { CL_FlagEffects(ent.origin, 0); ent.team = 1; } - else if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/flags/flag2.md2")) { + else if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/flags/flag2.md2")) + { CL_FlagEffects(ent.origin, 1); ent.team = 2; } - // add to refresh list - V_AddEntity (&ent); - - // color shells generate a seperate entity for the main model - if ((effects & EF_COLOR_SHELL) && !(s1->number == cl.playernum+1)) + if (s1->modelindex != 0 && !(renderfx & RF_NODRAW)) { + // add to refresh list + V_AddEntity (&ent); + + // color shells generate a seperate entity for the main model + if ((effects & EF_COLOR_SHELL) && !(s1->number == cl.playernum+1)) + { - ent.flags = renderfx | RF_TRANSLUCENT; - ent.alpha = 0.30; - V_AddViewEntity (&ent); + ent.flags = renderfx | RF_TRANSLUCENT; + ent.alpha = 0.30; + V_AddViewEntity (&ent); + } } ent.skin = NULL; // never use a custom skin on others @@ -845,33 +865,42 @@ ci = &cl.clientinfo[s1->skinnum & 0xff]; - //give health an "aura" - if(cl_healthaura->value) + if (s1->modelindex != 0 && !(renderfx & RF_NODRAW)) { - if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/healing/small/tris.md2")) - CL_SmallHealthParticles(ent.origin); - if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/healing/medium/tris.md2")) - CL_MedHealthParticles(ent.origin); - if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/healing/large/tris.md2")) - CL_LargeHealthParticles(ent.origin); - } + //give health an "aura" + if(cl_healthaura->value && !cl_simpleitems->value) + { + if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/healing/small/tris.md2")) + CL_SmallHealthParticles(ent.origin); + if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/healing/medium/tris.md2")) + CL_MedHealthParticles(ent.origin); + if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/items/healing/large/tris.md2")) + CL_LargeHealthParticles(ent.origin); + } - if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/weapons/g_rocket/tris.md2")) - { - //add clear cover - ent.model = R_RegisterModel("models/weapons/g_rocket/cover.md2"); - ent.flags |= RF_TRANSLUCENT; - ent.alpha = 0.30; - V_AddEntity (&ent); - } - if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/weapons/g_hyperb/tris.md2")) - { - //add clear cover - ent.model = R_RegisterModel("models/weapons/g_hyperb/cover.md2"); - ent.flags |= RF_TRANSLUCENT; - ent.alpha = 0.30; - V_AddEntity (&ent); - } + if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/weapons/g_rocket/tris.md2")) + { + //add clear cover + if (!cl_simpleitems->integer) + { + ent.model = R_RegisterModel("models/weapons/g_rocket/cover.md2"); + ent.flags |= RF_TRANSLUCENT; + ent.alpha = 0.30; + V_AddEntity (&ent); + } + } + if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex)], "models/weapons/g_hyperb/tris.md2")) + { + //add clear cover + if (!cl_simpleitems->integer) + { + ent.model = R_RegisterModel("models/weapons/g_hyperb/cover.md2"); + ent.flags |= RF_TRANSLUCENT; + ent.alpha = 0.30; + V_AddEntity (&ent); + } + } + } if (s1->modelindex2) { @@ -894,17 +923,20 @@ { ent.model = cl.model_draw[s1->modelindex2]; } - - + //here is where we will set the alpha for certain model parts - would like to eventually //do something a little less uh, hardcoded. if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex2)], "models/items/healing/globe/tris.md2")) { + if(cl_simpleitems->value) + continue; ent.alpha = 0.4; ent.flags = RF_TRANSLUCENT; } else if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex2)], "models/items/quaddama/unit.md2")) { + if(cl_simpleitems->value) + continue; ent.alpha = 0.4; ent.flags = RF_TRANSLUCENT; } @@ -945,18 +977,20 @@ ent.flags = 0; ent.alpha = 1.0; - //cool new ctf flag effects - if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex4)], "models/items/flags/flag1.md2")) { + //new ctf flag effects + if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex4)], "models/items/flags/flag1.md2")) + { CL_FlagEffects(ent.origin, 0); ent.model = 0; } - else if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex4)], "models/items/flags/flag2.md2")) { + else if (!Q_strcasecmp (cl.configstrings[CS_MODELS+(s1->modelindex4)], "models/items/flags/flag2.md2")) + { CL_FlagEffects(ent.origin, 1); ent.model = 0; } - else { + else + { ent.model = cl.model_draw[s1->modelindex4]; - V_AddEntity (&ent); } } @@ -1034,7 +1068,7 @@ else if (effects & EF_BLASTER) { CL_BlasterTrail(cent->lerp_origin, ent.origin, cent); - V_AddLight (ent.origin, 50, 0, .5, 1); + V_AddLight (ent.origin, 200, 0, .5, .1); } } end: @@ -1252,6 +1286,7 @@ { gun.flags = oldeffects | RF_TRANSLUCENT | RF_SHELL_RED; + V_AddViewEntity (&gun); } if (s1->effects & EF_QUAD && cl_gun->value) @@ -1289,6 +1324,13 @@ gun.alpha = 0.30; V_AddViewEntity (&gun); } + if(!(strcmp("models/weapons/v_alienblast/tris.md2", gun.model->name))) + { + gun.model = R_RegisterModel("models/weapons/v_alienblast/cover.md2"); + gun.flags |= RF_TRANSLUCENT; + gun.alpha = 0.30; + V_AddViewEntity (&gun); + } } @@ -1727,7 +1769,7 @@ free_clentities = &clentities[0]; active_clentities = NULL; - for (i = 0; i < MAX_CLENTITIES; i++) + for (i = 0; i < MAX_CLENTITIES-1; i++) clentities[i].next = &clentities[i + 1]; clentities[MAX_CLENTITIES - 1].next = NULL; } diff -Nru alien-arena-7.53+dfsg/source/client/cl_fx.c alien-arena-7.66+dfsg/source/client/cl_fx.c --- alien-arena-7.53+dfsg/source/client/cl_fx.c 2011-12-05 05:21:38.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_fx.c 2013-06-22 20:07:36.000000000 +0000 @@ -79,14 +79,14 @@ int i; clightstyle_t *ls; - ofs = cl.time / 100; + ofs = cl.time / 25; if (ofs == lastofs) return; lastofs = ofs; for (i=0,ls=cl_lightstyle ; ilength) + if (!ls->length || !cl_flicker->integer) { ls->value[0] = ls->value[1] = ls->value[2] = 1.0; continue; @@ -94,7 +94,17 @@ if (ls->length == 1) ls->value[0] = ls->value[1] = ls->value[2] = ls->map[0]; else - ls->value[0] = ls->value[1] = ls->value[2] = ls->map[ofs%ls->length]; + { + // nonlinear interpolation of the lightstyles for smoothness while + // still preserving some "jaggedness" + float a, b, dist; + a = ls->map[(ofs/4)%ls->length]; + b = ls->map[(ofs/4+1)%ls->length]; + dist = (float)(ofs%4)/4.0f; + if (dist != 0.75) + dist = 0; + ls->value[0] = ls->value[1] = ls->value[2] = a+(b-a)*dist; + } } } @@ -512,7 +522,7 @@ free_particles = p->next; p->next = active_particles; p->type = 0; - p->texnum = 0; + p->image = NULL; p->blenddst = 0; p->blendsrc = 0; p->scalevel = 0; @@ -531,6 +541,7 @@ plight->lightcol[2] = 0; } p->fromsustainedeffect = false; + p->chain_prev = NULL; return (active_particles = p); } @@ -626,7 +637,7 @@ if (color == 425) // gunshots: FIXME should be using type { p->type = PARTICLE_STANDARD; - p->texnum = r_pufftexture->texnum; + p->image = r_pufftexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->scale = 4 + (rand()&2); @@ -638,7 +649,7 @@ else if (color == 450) { p->type = PARTICLE_STANDARD; - p->texnum = r_bloodtexture->texnum; + p->image = r_bloodtexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->alpha = 0.2; @@ -650,7 +661,7 @@ else if (color == 550) { p->type = PARTICLE_STANDARD; - p->texnum = r_bloodtexture->texnum; + p->image = r_bloodtexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->alpha = 0.2; @@ -662,7 +673,7 @@ else { p->type = PARTICLE_NONE; - p->texnum = r_particletexture->texnum; + p->image = r_particletexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->scale = 1; @@ -694,7 +705,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_particletexture->texnum; + p->image = r_particletexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->scale = 1; @@ -727,6 +738,8 @@ int i, j, k; float inc, scale, nudge; particle_t *p; + particle_t *pr; + particle_t *center; for( i=0; i<3; i++) { nudge = frand(); @@ -741,7 +754,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_particletexture->texnum; + p->image = r_particletexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->scale = 1; @@ -757,6 +770,7 @@ p->alpha = .5; p->alphavel = -1.0 / (3 + frand()*0.3); + center = p; //shoot off sparks @@ -764,17 +778,18 @@ for( k=0; k<2; k++) { - scale = frand(); + scale = frand()*3.0; + pr = NULL; i = 0; - for (inc=1.0 ; inc<2.0 ; inc+=0.1, i++) + for (inc=1.0 ; inc<2.0 ; inc+=0.25, i++) { if (!(p = new_particle())) return; p->color = 0xe0 + (rand()&2); - p->type = PARTICLE_STANDARD; - p->texnum = r_particletexture->texnum; + p->type = PARTICLE_CHAINED; + p->image = r_raintexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->scale = 1.25*scale/inc; @@ -791,7 +806,13 @@ p->accel[2] = -(PARTICLE_GRAVITY)/(.5*inc); p->alpha = .5; - p->alphavel = -1.0 / (1.5 + frand()*0.3); + p->alphavel = -1.0 / (2.5 + frand()*0.3); + + if (pr) + { + p->chain_prev = pr; + } + pr = p; } } } @@ -813,7 +834,7 @@ if(!(p = new_particle())) return; p->type = PARTICLE_RAISEDDECAL; - p->texnum = r_splashtexture->texnum; + p->image = r_splashtexture; p->blendsrc = GL_DST_COLOR; p->blenddst = GL_SRC_COLOR; p->scale = 1; @@ -858,7 +879,7 @@ p->color = color - (rand()&2); p->type = PARTICLE_VERT; - p->texnum = r_splash2texture->texnum; + p->image = r_splash2texture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->scale = 4*(rand()&8); @@ -899,27 +920,7 @@ dir[i] -= frand(); } - //draw a fatter glow at the impact point - if(!(p = new_particle())) - return; - p->color = color + (rand()&2); - for (j=0 ; j<3 ; j++) - { - p->org[j] = org[j]; - p->vel[j] = 0; - } - p->accel[0] = p->accel[1] = 0; - p->accel[2] = -(PARTICLE_GRAVITY); - p->alpha = .5; - - p->alphavel = -1.0 / (1 + frand()*0.3); - - addParticleLight (p, - p->scale*10, 10, - 0, 1, 0); - //shoot off sparks - for( k=0; k<2; k++) { VectorNormalize(dir); @@ -934,7 +935,7 @@ p->color = color + (rand()&2); p->type = PARTICLE_STANDARD; - p->texnum = r_particletexture->texnum; + p->image = r_particletexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->scale = 1.5*scale/inc; @@ -971,6 +972,12 @@ { if (!(p = new_particle())) return; + + p->type = PARTICLE_STANDARD; + p->scale = 1; + p->image = r_particletexture; + p->blendsrc = GL_SRC_ALPHA; + p->blenddst = GL_ONE; if (type == MZ_LOGIN) p->color = 0xd0 + (rand()&7); // green @@ -1015,7 +1022,7 @@ p->scale = 12 + (rand()&7) ; p->scalevel = 0; p->type = PARTICLE_STANDARD; - p->texnum = r_explosiontexture->texnum; + p->image = r_explosiontexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->org[0] = org[0] + crand()*16; @@ -1031,7 +1038,7 @@ p->alphavel = -1.0 / (1.0 + frand()*0.3); - if (p && i < 4) + if (i < 4) addParticleLight (p, p->scale*30, 10, 0, 1, 1); @@ -1084,32 +1091,32 @@ p->blenddst = GL_ONE; switch(i) { case 0: - p->texnum = r_explosion1texture->texnum; + p->image = r_explosion1texture; break; case 1: - p->texnum = r_explosion2texture->texnum; + p->image = r_explosion2texture; break; case 2: - p->texnum = r_explosion3texture->texnum; + p->image = r_explosion3texture; break; case 3: - p->texnum = r_explosion4texture->texnum; + p->image = r_explosion4texture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; break; case 4: - p->texnum = r_explosion5texture->texnum; + p->image = r_explosion5texture; break; case 5: - p->texnum = r_explosion6texture->texnum; + p->image = r_explosion6texture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; break; case 6: - p->texnum = r_explosion7texture->texnum; + p->image = r_explosion7texture; break; default: - p->texnum = r_explosion1texture->texnum; + p->image = r_explosion1texture; break; } if (p && i < 4) @@ -1125,7 +1132,7 @@ p->alpha = 1.0; p->alphavel = -2.0; p->type = PARTICLE_FLAT; - p->texnum = r_explosion5texture->texnum; + p->image = r_explosion5texture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->color = 0xd9 + (rand()&7); @@ -1161,7 +1168,7 @@ p->color = 1 + (rand()&10); p->accel[2] = 10; - p->texnum = r_smoketexture->texnum; + p->image = r_smoketexture; } } @@ -1190,7 +1197,7 @@ p->alphavel = -1.0 / (30+frand()*1.4); //smoke lingers longer p->alpha = .07; p->type = PARTICLE_STANDARD; - p->texnum = r_smoketexture->texnum; + p->image = r_smoketexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->scale = 1 + (rand()&4); @@ -1216,7 +1223,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 16 + (rand()&7); p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; @@ -1279,7 +1286,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_bflashtexture->texnum; + p->image = r_bflashtexture; p->scale = 7 + (rand()&4); p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; @@ -1340,7 +1347,7 @@ p->alphavel = -2.8 / (0.6+frand()*0.2); p->blenddst = GL_ONE; p->blendsrc = GL_SRC_ALPHA; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 20/(i+1); p->type = PARTICLE_STANDARD; p->scalevel = 12; @@ -1370,7 +1377,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_leaderfieldtexture->texnum; + p->image = r_leaderfieldtexture; p->scale = 24 + (rand()&2); p->color = 0xff; p->blendsrc = GL_SRC_ALPHA; @@ -1406,7 +1413,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_voltagetexture->texnum; + p->image = r_voltagetexture; p->scale = 14 + (rand()&14); p->color = 0xff; p->blendsrc = GL_SRC_ALPHA; @@ -1440,9 +1447,9 @@ p->type = PARTICLE_STANDARD; if(type) - p->texnum = r_deathfieldtexture2->texnum; + p->image = r_deathfieldtexture2; else - p->texnum = r_deathfieldtexture->texnum; + p->image = r_deathfieldtexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; for (j=0 ; j<3 ; j++) @@ -1478,7 +1485,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_sayicontexture->texnum; + p->image = r_sayicontexture; p->scale = 5; p->scalevel = 0; p->color = 15; @@ -1513,7 +1520,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_pufftexture->texnum; + p->image = r_pufftexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->scale = 4 + (rand()&2); @@ -1552,7 +1559,7 @@ p->type = PARTICLE_ROTATINGROLL; else p->type = PARTICLE_STANDARD; - p->texnum = r_leaderfieldtexture->texnum; + p->image = r_leaderfieldtexture; p->scale = 16*i + (rand()&7); p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; @@ -1591,7 +1598,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 10 + (rand()&7); p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; @@ -1624,7 +1631,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 10 + (rand()&7); p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; @@ -1657,7 +1664,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 10 + (rand()&7); p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; @@ -1699,7 +1706,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->color = 0x74; @@ -1716,7 +1723,7 @@ p->alphavel = -8.8 / ((i*2) + frand()*0.3); - if (p && i > 4) + if (i > 4) addParticleLight (p, p->scale*25, 50, 0, .8, 1); @@ -1747,9 +1754,9 @@ return; p->alpha = 1; - p->alphavel = -50.0; + p->alphavel = INSTANT_PARTICLE; p->type = PARTICLE_ROTATINGROLL; - p->texnum = r_shottexture->texnum; + p->image = r_shottexture; p->scale = 8; p->angle[1] = cl.refdef.viewangles[0]; p->angle[0] = sin(len); @@ -1768,32 +1775,10 @@ if (!(p = new_particle())) return; - p->alpha = 1; - p->alphavel = -50.0; - p->type = PARTICLE_ROTATINGROLL; - p->texnum = r_shottexture->texnum; - p->scale = 2; - p->angle[1] = cl.refdef.viewangles[0]; - p->angle[0] = sin(len); - p->angle[2] = cl.refdef.viewangles[2]; - p->blendsrc = GL_SRC_ALPHA; - p->blenddst = GL_ONE; - p->color = 0x72; - - for (j=0 ; j<3 ; j++) - { - p->org[j] = move[j]; - p->vel[j] = 0; - p->accel[j] = 0; - } - - if (!(p = new_particle())) - return; - p->alpha = .95; - p->alphavel = -50.0; + p->alphavel = INSTANT_PARTICLE; p->type = PARTICLE_STANDARD; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 15+5*frand(); p->blendsrc = GL_ONE; p->blenddst = GL_ONE; @@ -1831,7 +1816,7 @@ p->alpha = .7; p->type = PARTICLE_STANDARD; - p->texnum = r_flaretexture->texnum; + p->image = r_flaretexture; p->blendsrc = GL_ONE; p->blenddst = GL_ONE; if (server_is_team) @@ -1839,7 +1824,7 @@ else p->color = 0xd3; p->scale = 10*i; - p->alphavel = -50; + p->alphavel = INSTANT_PARTICLE; for (j=0 ; j<3 ; j++) { p->org[j] = pos[j]; @@ -1862,12 +1847,12 @@ p->alpha = .7; p->type = PARTICLE_STANDARD; - p->texnum = r_flaretexture->texnum; + p->image = r_flaretexture; p->blendsrc = GL_ONE; p->blenddst = GL_ONE; p->color = 0xe8; p->scale = 10*i; - p->alphavel = -50; + p->alphavel = INSTANT_PARTICLE; for (j=0 ; j<3 ; j++) { p->org[j] = pos[j]; @@ -1890,7 +1875,7 @@ p->alpha = 1.0; p->type = PARTICLE_ROTATINGYAW; - p->texnum = r_flagtexture->texnum; + p->image = r_flagtexture; p->blendsrc = GL_ONE; p->blenddst = GL_ONE; if(team) @@ -1898,7 +1883,7 @@ else p->color = 0xe8; p->scale = 15; - p->alphavel = -50; + p->alphavel = INSTANT_PARTICLE; for (i=0 ; i<3 ; i++) { p->org[i] = pos[i]; @@ -1907,35 +1892,13 @@ } p->org[2] += 64; - if (!(p = new_particle())) - return; - - VectorClear (p->accel); - p->alpha = 1.0; - p->type = PARTICLE_ROTATINGYAWMINUS; - p->texnum = r_flagtexture->texnum; - p->blendsrc = GL_ONE; - p->blenddst = GL_ONE; - if(team) - p->color = 0x74; - else - p->color = 0xe8; - p->scale = 15; - p->alphavel = -50; - for (i=0 ; i<3 ; i++) - { - p->org[i] = pos[i]; - p->vel[i] = 0; - p->accel[i] = 0; - } - p->org[2] += 64; if (!(p = new_particle())) return; p->type = PARTICLE_STANDARD; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 20 + (rand()&7); p->blendsrc = GL_ONE; p->blenddst = GL_ONE; @@ -1984,7 +1947,7 @@ if(!(p = new_particle())) return; - p->texnum = r_bloodtexture->texnum; + p->image = r_bloodtexture; p->color = color + (rand() & 1); p->type = PARTICLE_DECAL; p->blendsrc = GL_SRC_ALPHA; @@ -2080,7 +2043,7 @@ p->alpha = .6;//1.0; p->alphavel = -1.0 / (1+frand()*0.4); p->type = PARTICLE_STANDARD; - p->texnum = r_bloodtexture->texnum; + p->image = r_bloodtexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->color = 0xe8; @@ -2099,7 +2062,7 @@ p->alpha = .6; p->alphavel = -1.0 / (1+frand()*0.4); p->type = PARTICLE_STANDARD; - p->texnum = r_bloodtexture->texnum; + p->image = r_bloodtexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->color = 0xd0+ (rand()&3); @@ -2122,14 +2085,14 @@ p->vel[j] = crand()*velscale; } - p->alphavel = -1.0 / (20+frand()*1.4); //smoke lingers longer + p->alphavel = -1.0 / (10+frand()*1.4); //smoke lingers longer p->alpha = .07; p->type = PARTICLE_STANDARD; - p->texnum = r_smoketexture->texnum; + p->image = r_smoketexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->scale = 1 + (rand()&4); - p->scalevel = 12.0; + p->scalevel = 15.0; p->color = 15; p->accel[2] = 20; } @@ -2198,13 +2161,13 @@ return; VectorClear (p->accel); - p->color = 0xc0 + (rand()&2); + p->color = 0xd0 + (rand()&2); p->scale = 2 + (rand()&7); p->scalevel = 5; p->alpha = .3; p->alphavel = -1.0 / (3+frand()*0.2); p->type = PARTICLE_STANDARD; - p->texnum = r_hittexture->texnum; + p->image = r_cflashtexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; for (j=0 ; j<3 ; j++) @@ -2251,7 +2214,7 @@ p->alpha = .3; p->alphavel = -1.0 / (3+frand()*0.2); p->type = PARTICLE_STANDARD; - p->texnum = r_explosiontexture->texnum; + p->image = r_explosiontexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; for (j=0 ; j<3 ; j++) @@ -2286,9 +2249,9 @@ VectorClear (p->accel); p->alpha = .3; - p->alphavel = -50.0; + p->alphavel = INSTANT_PARTICLE; p->type = PARTICLE_ROTATINGROLL; - p->texnum = r_bflashtexture->texnum; + p->image = r_bflashtexture; p->scale = 5; p->angle[0] = cl.refdef.viewangles[0]; p->angle[1] = cl.refdef.viewangles[1]; @@ -2310,9 +2273,9 @@ VectorClear (p->accel); p->alpha = .7; - p->alphavel = -50.0; + p->alphavel = INSTANT_PARTICLE; p->type = PARTICLE_STANDARD; - p->texnum = r_bflashtexture->texnum; + p->image = r_bflashtexture; p->scale = 5; p->angle[0] = cl.refdef.viewangles[0]; p->angle[1] = cl.refdef.viewangles[1]; @@ -2334,9 +2297,9 @@ VectorClear (p->accel); p->alpha = .7; - p->alphavel = -50.0; + p->alphavel = INSTANT_PARTICLE; p->type = PARTICLE_STANDARD; - p->texnum = r_flaretexture->texnum; + p->image = r_flaretexture; p->scale = 10; p->angle[0] = cl.refdef.viewangles[0]; p->angle[1] = cl.refdef.viewangles[1]; @@ -2370,7 +2333,7 @@ if(!(p = new_particle())) return; - p->texnum = r_bulletnormal->texnum; + p->image = r_bulletnormal; p->color = 0 + (rand() & 1); p->type = PARTICLE_RAISEDDECAL; p->blendsrc = GL_DST_COLOR; @@ -2405,7 +2368,7 @@ if(!(p = new_particle())) return; - p->texnum = r_bullettexture->texnum; + p->image = r_bullettexture; p->color = color + (rand() & 1); p->type = PARTICLE_DECAL; p->blendsrc = GL_SRC_ALPHA; @@ -2428,7 +2391,7 @@ if(!(p = new_particle())) return; - p->texnum = r_bullettexture->texnum; + p->image = r_bullettexture; p->color = color + (rand() & 1); p->type = PARTICLE_DECAL; p->blendsrc = GL_SRC_ALPHA; @@ -2453,7 +2416,7 @@ if(!(p = new_particle())) return; - p->texnum = r_hittexture->texnum; + p->image = r_hittexture; p->color = color + (rand() & 1); p->type = PARTICLE_DECAL; p->blendsrc = GL_SRC_ALPHA; @@ -2495,7 +2458,7 @@ if(!(p = new_particle())) return; - p->texnum = r_bullettexture->texnum; + p->image = r_bullettexture; p->color = 0x74 + (rand() & 1); p->type = PARTICLE_DECAL; p->blendsrc = GL_SRC_ALPHA; @@ -2518,7 +2481,7 @@ if(!(p = new_particle())) return; - p->texnum = r_bullettexture->texnum; + p->image = r_bullettexture; p->color = 0x74 + (rand() & 1); p->type = PARTICLE_DECAL; p->blendsrc = GL_SRC_ALPHA; @@ -2550,7 +2513,7 @@ if(!(p = new_particle())) return; - p->texnum = r_bullettexture->texnum; + p->image = r_bullettexture; p->color = 0xd4 + (rand()&7); p->type = PARTICLE_DECAL; p->blendsrc = GL_SRC_ALPHA; @@ -2578,7 +2541,7 @@ if(!(p = new_particle())) return; - p->texnum = r_bullettexture->texnum; + p->image = r_bullettexture; p->color = 0x74 + (rand()&7); p->type = PARTICLE_DECAL; p->blendsrc = GL_SRC_ALPHA; @@ -2650,11 +2613,11 @@ v = frand(); if(v < 0.2) - p->texnum = r_dis3texture->texnum; + p->image = r_dis3texture; else if(v < 0.5) - p->texnum = r_dis2texture->texnum; + p->image = r_dis2texture; else - p->texnum = r_dis1texture->texnum; + p->image = r_dis1texture; p->scale = 4; VectorCopy(move, p->angle); @@ -2679,7 +2642,7 @@ vec3_t vec, point, last, vec2; float len; vec3_t right, up; - particle_t *p; + particle_t *p, *pr; int i,j; VectorSubtract (end, start, vec); @@ -2702,7 +2665,7 @@ p->alphavel = -2.8 / (0.6+frand()*0.2); p->blenddst = GL_ONE; p->blendsrc = GL_SRC_ALPHA; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 12/(i+1); for(j=0; j< 3; j++) p->angle[j] = 0; @@ -2716,11 +2679,53 @@ p->accel[j] = 0; } } + + //Dummy particle that won't get drawn -- the first particle in a chain is + //always skipped. + if (!(pr = new_particle ())) + return; + pr->alpha = 0.9; + pr->alphavel = -2.8; + pr->scale = 4; + pr->scalevel = 0; + VectorCopy (start, pr->org); + VectorClear (pr->vel); + VectorClear (pr->accel); + pr->type = PARTICLE_CHAINED; + pr->color = 0xd4; + pr->image = r_beam2texture; + + if (!(p = new_particle())) + return; + + p->alpha = 0.9; + p->alphavel = -2.8; + p->blenddst = GL_ONE; + p->blendsrc = GL_SRC_ALPHA; + + p->image = r_beam2texture; + p->scale = 4; + VectorCopy(move, p->angle); + p->type = PARTICLE_CHAINED; + p->scalevel = 0; + + p->color = 0xd4; + p->chain_prev = pr; + + for (j=0 ; j<3 ; j++) + { + p->org[j] = end[j]; + p->vel[j] = 0; + p->accel[j] = 0; + } for (; len>0; len -= RAILTRAILSPACE) { VectorCopy (move, last); VectorAdd (move, vec, move); + + if (len > 40) + continue; if (!(p = new_particle())) return; @@ -2729,22 +2734,12 @@ p->alphavel = -2.8; p->blenddst = GL_ONE; p->blendsrc = GL_SRC_ALPHA; - if(len <= 40) { //end blast - p->texnum = r_flaretexture->texnum; - p->scale = 24; - for(j=0; j< 3; j++) - p->angle[j] = 0; - p->type = PARTICLE_STANDARD; - p->scalevel = 12; - } - else { - p->texnum = r_beam2texture->texnum; - p->scale = 4; - VectorCopy(move, p->angle); - p->type = PARTICLE_BEAM; - p->scalevel = 0; - } - + p->image = r_flaretexture; + p->scale = 24; + for(j=0; j< 3; j++) + p->angle[j] = 0; + p->type = PARTICLE_STANDARD; + p->scalevel = 12; p->color = 0xd4; for (j=0 ; j<3 ; j++) @@ -2759,10 +2754,10 @@ { vec3_t move; - vec3_t vec, point, last, vec2; + vec3_t vec, point, vec2; float len; vec3_t right, up; - particle_t *p; + particle_t *p, *pr; int i,j; VectorSubtract (end, start, vec); @@ -2786,7 +2781,7 @@ p->alphavel = -1.8 / (0.6+frand()*0.2); p->blenddst = GL_ONE; p->blendsrc = GL_SRC_ALPHA; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 8/(i+1); for(j=0; j< 3; j++) p->angle[j] = 0; @@ -2800,38 +2795,48 @@ p->accel[j] = 0; } } - - for (; len>0; len -= LASERTRAILSPACE) + + //Dummy particle that won't get drawn -- the first particle in a chain is + //always skipped. + if (!(pr = new_particle ())) + return; + pr->alpha = 0.9; + pr->alphavel = -1.8; + pr->scale = 2; + pr->scalevel = 0; + VectorCopy (start, pr->org); + VectorClear (pr->vel); + VectorClear (pr->accel); + pr->type = PARTICLE_CHAINED; + pr->color = 0x74; + pr->image = r_beam2texture; + + for (i = 0; i < 3; i++) { - VectorCopy (move, last); - VectorAdd (move, vec, move); - - for(i = 0; i < 3; i++) { - if (!(p = new_particle())) - return; - - p->alpha = 0.9; - p->alphavel = -1.8; - p->blenddst = GL_ONE; - p->blendsrc = GL_SRC_ALPHA; + if (!(p = new_particle())) + return; + + p->alpha = 0.9; + p->alphavel = -1.8; + p->blenddst = GL_ONE; + p->blendsrc = GL_SRC_ALPHA; - p->texnum = r_beam2texture->texnum; - p->scale = 2; - VectorCopy(move, p->angle); - p->type = PARTICLE_BEAM; - p->scalevel = 0; + p->image = r_beam2texture; + p->scale = 2; + VectorCopy(move, p->angle); + p->type = PARTICLE_CHAINED; + p->scalevel = 0; - p->color = 0x74; + p->color = 0x74; + p->chain_prev = pr; - for (j=0 ; j<3 ; j++) - { - p->org[j] = last[j]; - p->vel[j] = 0; - p->accel[j] = 0; - } + for (j=0 ; j<3 ; j++) + { + p->org[j] = end[j]; + p->vel[j] = 0; + p->accel[j] = 0; } } - } #define VAPORIZORTRAILSPACE 20 @@ -2865,7 +2870,7 @@ p->alphavel = -.8 / (0.6+frand()*0.2); p->blenddst = GL_ONE; p->blendsrc = GL_SRC_ALPHA; - p->texnum = r_leaderfieldtexture->texnum; + p->image = r_leaderfieldtexture; p->scale = 24/(i+1); for(j=0; j< 3; j++) p->angle[j] = 0; @@ -2893,7 +2898,7 @@ p->alphavel = -.8 / (0.6+frand()*0.2); p->blenddst = GL_ONE; p->blendsrc = GL_SRC_ALPHA; - p->texnum = r_beam2texture->texnum; + p->image = r_beam2texture; p->scale = 4; VectorCopy(move, p->angle); p->type = PARTICLE_BEAM; @@ -2916,7 +2921,7 @@ p->alphavel = -.8 / (0.6+frand()*0.2); p->blenddst = GL_ONE; p->blendsrc = GL_SRC_ALPHA; - p->texnum = r_beam3texture->texnum; + p->image = r_beam3texture; p->scale = 4; VectorCopy(move, p->angle); p->type = PARTICLE_BEAM; @@ -2942,6 +2947,7 @@ float len; int j; particle_t *p; + particle_t *pr = NULL; float dec; vec3_t right, up; int i; @@ -2955,7 +2961,7 @@ MakeNormalVectors (vec, right, up); - dec = 0.75; + dec = .75; VectorScale (vec, dec, vec); VectorCopy (start, move); skewx = skewy = skewz = .1; @@ -2993,13 +2999,13 @@ p->org[1] = move[1] + skewy * ++y; p->org[2] = move[2] + skewz * ++z; - p->alpha = 0.8; - p->alphavel = -2.0 / (0.6+frand()*0.2); - p->type = PARTICLE_STANDARD; - p->texnum = r_particletexture->texnum; + p->alpha = 1.2; + p->alphavel = -3.33; + p->type = PARTICLE_CHAINED; + p->image = r_raintexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; - p->scale = .5 + (rand()&2); + p->scale = 1 + (rand()&2); p->scalevel = 0; p->color = 0xff; for (j=0 ; j<3 ; j++) @@ -3007,11 +3013,16 @@ p->vel[j] = 0; p->accel[j] = 0; } - if (p && len < 4) + if (len < 4) addParticleLight (p, - p->scale*150, 0, + p->scale*75, 0, .25, 0, .3); VectorAdd (p->org, vec, move); + if (pr) + { + p->chain_prev = pr; + } + pr = p; } } @@ -3048,7 +3059,7 @@ p->alphavel = -1.8 / (0.6+frand()*0.2); p->blenddst = GL_ONE; p->blendsrc = GL_SRC_ALPHA; - p->texnum = r_cflashtexture->texnum; + p->image = r_cflashtexture; p->scale = 8/(i+1); for(j=0; j< 3; j++) p->angle[j] = 0; @@ -3077,7 +3088,7 @@ p->blenddst = GL_ONE; p->blendsrc = GL_SRC_ALPHA; - p->texnum = r_beam2texture->texnum; + p->image = r_beam2texture; p->scale = 2; VectorCopy(move, p->angle); p->type = PARTICLE_BEAM; @@ -3128,7 +3139,7 @@ p->alphavel = -1.0 / (1+frand()*0.2); p->color = 4 + (rand()&7); p->type = PARTICLE_STANDARD; - p->texnum = r_bubbletexture->texnum; + p->image = r_bubbletexture; p->scale = 2 + (rand()&2); p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; @@ -3179,14 +3190,14 @@ p->scale = (24 + (rand()&2)); p->scalevel = 24; p->type = PARTICLE_STANDARD; - p->texnum = r_explosiontexture->texnum; + p->image = r_explosiontexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->color = 0x74 + (rand()&7); p->alpha = 0.4; p->alphavel = -0.8 / (2.5 + frand()*0.3); - if (p && i > 28) + if (i > 28) addParticleLight (p, p->scale*(15+(rand()&5)), 10, 0, 0.6, 0.5); @@ -3198,7 +3209,7 @@ p->alpha = 1.0; p->alphavel = -1.0; p->type = PARTICLE_FLAT; - p->texnum = r_hittexture->texnum; + p->image = r_hittexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->color = 0x74 + (rand()&7); @@ -3217,10 +3228,11 @@ =============== */ -void CL_TeleportParticles (vec3_t start) +void CL_TeleportParticles (vec3_t orig_start) { vec3_t move; vec3_t vec; + vec3_t start; vec3_t end; float len; int j; @@ -3231,6 +3243,8 @@ // static vec3_t mins = { -1, -1, -1 }; // static vec3_t maxs = { 1, 1, 1 }; + //make a copy to prevent modifying an important vector + VectorCopy(orig_start, start); VectorCopy(start, pos1); pos2[2] = 1; pos2[0] = pos2[1] = 0; @@ -3239,7 +3253,7 @@ if(!(p = new_particle())) return; - p->texnum = r_logotexture->texnum; + p->image = r_logotexture; p->color = 0x74 + (rand()&7); p->type = PARTICLE_DECAL; p->blendsrc = GL_SRC_ALPHA; @@ -3267,7 +3281,7 @@ p->alpha = 1.0; p->alphavel = -.250; p->type = PARTICLE_DECAL; - p->texnum = r_explosion5texture->texnum; + p->image = r_explosion5texture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->color = 0x74 + (rand()&7); @@ -3301,7 +3315,7 @@ p->alpha = 1.0; p->alphavel = -2.5 / (2+frand()*0.2); p->type = PARTICLE_FLAT; - p->texnum = r_hittexture->texnum; + p->image = r_hittexture; p->blendsrc = GL_ONE; p->blenddst = GL_ONE; p->color = 0x74 + (rand()&7); @@ -3312,7 +3326,7 @@ p->vel[j] = 0; } p->vel[2] = PARTICLE_GRAVITY*2; - if (p && i < 1) + if (i < 1) addParticleLight (p, p->scale, 10, 0, 1, 1); @@ -3326,9 +3340,10 @@ extern unsigned r_weather; /* -Cl_WeatherEffects - adopted from Jay Dolan's Q2W +Cl_WeatherEffects - originally adopted from Jay Dolan's Q2W */ -void Cl_WeatherEffects(){ +void Cl_WeatherEffects() +{ int i, j, k; vec3_t start, end; trace_t tr; @@ -3343,13 +3358,13 @@ k = 0; - if(r_weather == 3) { - - while(i++ < WEATHER_PARTICLES && k++ < 2){ - + if(r_weather == 5) + { + while(i++ < WEATHER_PARTICLES && k++ < 1) + { VectorCopy(cl.refdef.vieworg, start); - start[0] = start[0] + (rand() % 2048) - 1024; - start[1] = start[1] + (rand() % 2048) - 1024; + start[0] = start[0] + (rand() % 5096) - 2048; + start[1] = start[1] + (rand() % 5096) - 2048; VectorCopy(start, end); end[2] += 8192; @@ -3380,30 +3395,106 @@ else VectorCopy(tr.endpos, p->end); - p->type = PARTICLE_WEATHER; + p->type = PARTICLE_FLUTTERWEATHER; // setup the particles - p->texnum = r_leaftexture->texnum; + //trash + p->image = r_trashtexture; p->vel[2] = -80; p->accel[2] = 0; p->alpha = 0.9; p->alphavel = 0; p->color = 8; - p->scale = 2; + p->scale = 12; p->scalevel = 0; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; + + for(j = 0; j < 2; j++) + { + p->vel[j] = crand() * 40; + p->accel[j] = crand() * 50; + } + weather_particles++; + } + } + else if(r_weather == 3 || r_weather == 4) + { + while(i++ < WEATHER_PARTICLES && k++ < 2) + { + VectorCopy(cl.refdef.vieworg, start); + start[0] = start[0] + (rand() % 2048) - 1024; + start[1] = start[1] + (rand() % 2048) - 1024; + + VectorCopy(start, end); + end[2] += 8192; + + // trace up looking for sky + tr = CM_BoxTrace(start, end, vec3_origin, vec3_origin, 0, MASK_SHOT); + + if(!(tr.surface->flags & SURF_SKY)) + continue; - for(j = 0; j < 2; j++){ + // drop down somewhere between sky and player + ceiling = tr.endpos[2] > start[2] + 1024 ? start[2] + 1024 : tr.endpos[2]; + tr.endpos[2] = tr.endpos[2] - ((ceiling - start[2]) * frand()); + + if (!(p = new_particle())) + return; + + VectorCopy(tr.endpos, p->org); + p->org[2] -= 1; + + VectorCopy(start, end); + end[2] -= 8192; + + tr = CM_BoxTrace(p->org, end, vec3_origin, vec3_origin, 0, MASK_ALL); + + if(!tr.surface) // this shouldn't happen + VectorCopy(start, p->end); + else + VectorCopy(tr.endpos, p->end); + + // setup the particles + if(r_weather == 3) //leaves + { + p->type = PARTICLE_FLUTTERWEATHER; + p->image = r_leaftexture; + p->vel[2] = -80; + p->accel[2] = 0; + p->alpha = 0.9; + p->alphavel = 0; + p->color = 8; + p->scale = 2; + p->scalevel = 0; + p->blendsrc = GL_SRC_ALPHA; + p->blenddst = GL_ONE_MINUS_SRC_ALPHA; + } + else if(r_weather == 4) //embers + { + p->type = PARTICLE_WEATHER; + p->image = r_particletexture; + p->vel[2] = -80; + p->accel[2] = 0; + p->alpha = 0.9; + p->alphavel = frand() * -1; + p->color = 0xe8; + p->scale = 2; + p->scalevel = 0; + p->blendsrc = GL_SRC_ALPHA; + p->blenddst = GL_ONE; + } + for(j = 0; j < 2; j++) + { p->vel[j] = crand() * 25; p->accel[j] = crand() * 50; } weather_particles++; } } - else { - - while(i++ < WEATHER_PARTICLES && k++ < 25){ - + else + { + while(i++ < WEATHER_PARTICLES && k++ < 25) + { VectorCopy(cl.refdef.vieworg, start); start[0] = start[0] + (rand() % 2048) - 1024; start[1] = start[1] + (rand() % 2048) - 1024; @@ -3439,8 +3530,9 @@ p->type = PARTICLE_WEATHER; // setup the particles - if(r_weather == 1){ - p->texnum = r_raintexture->texnum; + if(r_weather == 1) //rain + { + p->image = r_raintexture; p->vel[2] = -800; p->accel[2] = 0; p->alpha = 0.3; @@ -3449,8 +3541,9 @@ p->scale = 6; p->scalevel = 0; } - else if(r_weather == 2){ - p->texnum = r_particletexture->texnum; + else if(r_weather == 2) //snow + { + p->image = r_particletexture; p->vel[2] = -120; p->accel[2] = 0; p->alpha = 0.8; @@ -3462,7 +3555,8 @@ p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; - for(j = 0; j < 2; j++){ + for(j = 0; j < 2; j++) + { p->vel[j] = crand() * 2; p->accel[j] = crand() * 2; } @@ -3521,7 +3615,7 @@ VectorClear (p->accel); p->type = PARTICLE_STANDARD; - p->texnum = r_logotexture->texnum; + p->image = r_logotexture; p->blendsrc = GL_ONE; p->blenddst = GL_ONE; p->scale = 2; @@ -3642,7 +3736,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_pufftexture->texnum; + p->image = r_pufftexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->scale = 4 + (rand()&2); @@ -3686,7 +3780,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_explosiontexture->texnum; + p->image = r_explosiontexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE; p->color = 0xe0; @@ -3731,7 +3825,7 @@ return; p->type = PARTICLE_STANDARD; - p->texnum = r_smoketexture->texnum; + p->image = r_smoketexture; p->blendsrc = GL_SRC_ALPHA; p->blenddst = GL_ONE_MINUS_SRC_ALPHA; p->scale = 6 + (rand()&7); @@ -3788,7 +3882,7 @@ p->current_alpha = p->alpha + time*p->alphavel; if (p->current_alpha <= 0) { // faded out - if(p->type == PARTICLE_WEATHER) + if(p->type == PARTICLE_WEATHER || p->type == PARTICLE_FLUTTERWEATHER) weather_particles--; p->next = free_particles; free_particles = p; @@ -3798,6 +3892,7 @@ else { p->current_alpha = p->alpha; + p->alpha = p->alphavel = 0.0; } if(p->scalevel > 1) { time = (cl.time - p->time)*0.001; @@ -3820,15 +3915,38 @@ if(p->current_color < 0) p->current_color = 0; - // free up weather particles that have hit the ground + // update origin for(i = 0; i < 3; i++) { p->current_origin[i] = p->org[i] + p->vel[i]*time + p->accel[i]*(time*time); } - if(p->type == PARTICLE_WEATHER && (p->current_origin[2] <= p->end[2])){ - p->next = free_particles; - free_particles = p; - weather_particles--; - continue; + + // free up weather particles that have hit the ground + if(p->type == PARTICLE_WEATHER || p->type == PARTICLE_FLUTTERWEATHER) + { + if (p->current_origin[2] <= p->end[2]){ + p->next = free_particles; + free_particles = p; + weather_particles--; + continue; + } + } + + // some weather particles flutter around as they fall + if (p->type == PARTICLE_FLUTTERWEATHER) + { + // An accurate-looking model of particle rotation is to model the + // particle as a sphere rotating on a surface (or a circle on each + // axis.) If the particle was a marble moving on some hypothetical + // 3D tabletop, how many degrees in each direction has it rotated + // since it was spawned? + float circumference; + vec3_t distance; + + // Use a slightly larger radius so it rotates slower. + circumference = 2.0*M_PI*(3.5*p->current_scale); + + VectorSubtract (p->current_origin, p->org, distance); + VectorScale (distance, 360.0/circumference, p->angle); } p->next = NULL; @@ -3858,20 +3976,26 @@ ( p->current_origin[1] - r_origin[1] ) * vpn[1] + ( p->current_origin[2] - r_origin[2] ) * vpn[2]; - if (p->dist < 0) + if (p->type != PARTICLE_CHAINED && p->dist < 0) continue; else if (p->dist >= 40) p->dist = 2 + p->dist * 0.004; else p->dist = 2; - + + if ((p->type == PARTICLE_CHAINED && true) != (p->chain_prev && true)) + continue; + + if (p->type == PARTICLE_CHAINED && p->chain_prev) { + vec3_t span, delta; + VectorSubtract (p->current_origin, p->chain_prev->current_origin, span); + VectorSubtract (r_origin, p->current_origin, delta); + CrossProduct (span, delta, p->current_pspan); + VectorNormalize (p->current_pspan); + VectorScale (p->current_pspan, p->dist*p->current_scale, p->current_pspan); + } + V_AddParticle (p); - // PMM - if (p->alphavel == INSTANT_PARTICLE) - { - p->alphavel = 0.0; - p->alpha = 0.0; - } } active_particles = active; @@ -3951,7 +4075,7 @@ if(!(p = new_particle())) return; p->type = PARTICLE_RAISEDDECAL; - p->texnum = r_splashtexture->texnum; + p->image = r_splashtexture; p->blendsrc = GL_DST_COLOR; p->blenddst = GL_SRC_COLOR; p->scale = 1; diff -Nru alien-arena-7.53+dfsg/source/client/cl_http.c alien-arena-7.66+dfsg/source/client/cl_http.c --- alien-arena-7.53+dfsg/source/client/cl_http.c 2010-10-09 10:21:30.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_http.c 2013-06-22 20:07:36.000000000 +0000 @@ -35,8 +35,8 @@ #endif #include "curl/curl.h" -CURLM *curlm; -CURL *curl; +static CURLM *curlm; +static CURL *curl; // generic encapsulation for common http response codes typedef struct response_s { @@ -104,19 +104,19 @@ curl_easy_reset(curl); // set url from which to retrieve the file - curl_easy_setopt(curl, CURLOPT_URL, url); + if (curl_easy_setopt(curl, CURLOPT_URL, url) != CURLE_OK) return false; // time out in 5s - curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 5); + if (curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 5) != CURLE_OK) return false; // set error buffer so we may print meaningful messages memset(curlerr, 0, sizeof(curlerr)); - curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curlerr); + if (curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, curlerr) != CURLE_OK) return false; // set the callback for when data is received - curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CL_HttpDownloadRecv); + if (curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, CL_HttpDownloadRecv) != CURLE_OK) return false; - curl_multi_add_handle(curlm, curl); + if (curl_multi_add_handle(curlm, curl) != CURLM_OK) return false; return true; } @@ -148,7 +148,7 @@ if(!cls.download || !cls.downloadhttp) return; - curl_multi_remove_handle(curlm, curl); // cleanup curl + (void)curl_multi_remove_handle(curlm, curl); // cleanup curl fclose(cls.download); // always close the file cls.download = NULL; @@ -206,8 +206,8 @@ // check for http status code if(!status){ - curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &status); - if(status > 0 && status != 200){ // 404, 403, etc.. + if (curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &status) != CURLE_OK || + (status > 0 && status != 200)){ // 404, 403, etc.. CL_HttpDownloadCleanup(); return; } @@ -254,6 +254,6 @@ curl_easy_cleanup(curl); curl = NULL; - curl_multi_cleanup(curlm); + (void)curl_multi_cleanup(curlm); curlm = NULL; } diff -Nru alien-arena-7.53+dfsg/source/client/client.h alien-arena-7.66+dfsg/source/client/client.h --- alien-arena-7.53+dfsg/source/client/client.h 2011-12-05 05:21:38.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/client.h 2013-06-22 20:07:36.000000000 +0000 @@ -66,6 +66,8 @@ float frametime; int prevframe; + + particle_t *pr; // for chained particles (such as EF_SHIPEXHAUST) } centity_t; @@ -114,13 +116,15 @@ usercmd_t cmd; usercmd_t cmds[CMD_BACKUP]; // each mesage will send several old cmds int cmd_time[CMD_BACKUP]; // time sent, for calculating pings - short predicted_origins[CMD_BACKUP][3]; // for debug comparing against server + int predicted_origins[CMD_BACKUP][3]; // for debug comparing against server float predicted_step; // for stair up smoothing unsigned predicted_step_time; vec3_t predicted_origin; // generated by CL_PredictMovement vec3_t predicted_angles; + vec3_t last_predicted_angles; + vec3_t predicted_velocity; // for speedometer vec3_t prediction_error; frame_t frame; // received from server @@ -155,6 +159,7 @@ int servercount; // server identification for prespawns char gamedir[MAX_QPATH]; int playernum; + qboolean tactical; //used for certain client needs // Alien Arena client/server protocol depends on MAX_QPATH being 64. char configstrings[MAX_CONFIGSTRINGS][MAX_QPATH]; @@ -273,9 +278,12 @@ extern cvar_t *cl_playtaunts; extern cvar_t *cl_centerprint; extern cvar_t *cl_precachecustom; +extern cvar_t *cl_simpleitems; +extern cvar_t *cl_flicker; extern cvar_t *cl_paindist; extern cvar_t *cl_explosiondist; +extern cvar_t *cl_raindist; extern cvar_t *cl_upspeed; extern cvar_t *cl_forwardspeed; @@ -326,6 +334,8 @@ extern cvar_t *cl_latest_game_version; +extern cvar_t *cl_test; + typedef struct { int key; // so entities can reuse same entry @@ -522,8 +532,6 @@ void CL_ClearState (void); -void CL_ReadPackets (void); - int CL_ReadFromServer (void); void CL_WriteToServer (usercmd_t *cmd); void CL_BaseMove (usercmd_t *cmd); @@ -607,6 +615,9 @@ // void getLatestGameVersion( void ); +qboolean serverIsOutdated (char *server_vstring); +char* VersionUpdateNotice( void ); + // // cl_view.c @@ -692,12 +703,46 @@ // // menus // + +#define MAX_PLAYERS 64 +typedef struct _SERVERDATA { + + char szHostName[48]; + char szMapName[24], fullMapName[128]; + char szAdmin[64]; + char szVersion[32]; + char szWebsite[32]; + char maxClients[32]; + char fraglimit[32]; + char timelimit[32]; +#define SVDATA_PLAYERINFO_NAME 0 +#define SVDATA_PLAYERINFO_SCORE 1 +#define SVDATA_PLAYERINFO_PING 2 +#define SVDATA_PLAYERINFO 3 +#define SVDATA_PLAYERINFO_COLSIZE 80 + char playerInfo[MAX_PLAYERS][SVDATA_PLAYERINFO][SVDATA_PLAYERINFO_COLSIZE]; + int playerRankings[MAX_PLAYERS]; + char skill[32]; + int players; + char szPlayers[11]; + int ping; + char szPing[6]; + netadr_t local_server_netadr; + char serverInfo[256]; + char modInfo[64]; + qboolean joust; //for client-side prediction + +} SERVERDATA; + +SERVERDATA connectedserver; + void M_Init (void); void M_Keydown (int key); void M_Draw (void); void M_Menu_Main_f (void); void M_ForceMenuOff (void); void M_AddToServerList (netadr_t adr, char *status_string); +void M_UpdateConnectedServerInfo (netadr_t adr, char *status_string); // // cl_inv.c // @@ -710,23 +755,44 @@ // void CL_PredictMovement (void); -#if id386 -void x86_TimerStart( void ); -void x86_TimerStop( void ); -void x86_TimerInit( unsigned long smallest, unsigned longest ); -unsigned long *x86_TimerGetHistogram( void ); -#endif - // // cl_view, cl_scrn // qboolean map_pic_loaded; int stringLen (char *string); + +// +// perf testing +// A performance test measures some form of "something per second." +// + +typedef struct perftest_s { + //these get set by get_perftest for you: + qboolean in_use; + char name[48]; + //set these when first setting up the perf counter: + cvar_t *cvar; //the cvar used for detecting whether to draw it + char format[32]; //format one float, never output >32 chars + float scale; //for scaling the rate + qboolean is_timerate; //true to display "something per second." + //update this once per frame: + float counter; //for whatever you're measuring + //these are internal to SCR_showPerfTest: + float framecounter; + qboolean restart; + int start_msec; + float update_trigger; + char text[32]; +} perftest_t; + +#define MAX_PERFTESTS 16 +perftest_t perftests[MAX_PERFTESTS]; +perftest_t *get_perftest(char *name); + // //mouse // void refreshCursorLink (void); -void refreshCursorMenu (void); void M_Think_MouseCursor (void); // @@ -744,5 +810,11 @@ // extern FNT_auto_t CL_gameFont; +extern FNT_auto_t CL_menuFont; extern FNT_auto_t CL_centerFont; extern FNT_auto_t CL_consoleFont; + +//external renderer +extern void R_AddSimpleItem(int type, vec3_t origin); +extern qboolean r_gotFlag; +extern qboolean r_lostFlag; diff -Nru alien-arena-7.53+dfsg/source/client/cl_input.c alien-arena-7.66+dfsg/source/client/cl_input.c --- alien-arena-7.53+dfsg/source/client/cl_input.c 2011-06-07 20:06:30.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_input.c 2013-06-22 20:07:36.000000000 +0000 @@ -309,7 +309,7 @@ // // adjust for speed key / running // - if ( (in_speed.state & 1) ^ cl_run->integer ) + if (!cl.tactical && ( (in_speed.state & 1) ^ cl_run->integer )) { cmd->forwardmove *= 2; cmd->sidemove *= 2; @@ -608,12 +608,13 @@ cursor.x = x; cursor.y = y; - cursor.mouseaction = cursor.x != cursor.oldx + cursor.mouseaction = cursor.mouseaction || cursor.x != cursor.oldx || cursor.y != cursor.oldy; M_Think_MouseCursor(); } +extern cvar_t *fov; void IN_Move (usercmd_t *cmd) { float fmx; @@ -641,9 +642,12 @@ fmx = ( fmx + mouse_odiff_x ) * 0.5f; fmy = ( fmy + mouse_odiff_y ) * 0.5f; } - mouse_odiff_x = mouse_diff_x; - mouse_odiff_y = mouse_diff_y; - mouse_diff_x = mouse_diff_y = 0; + if (cmd) + { + mouse_odiff_x = mouse_diff_x; + mouse_odiff_y = mouse_diff_y; + mouse_diff_x = mouse_diff_y = 0; + } // No mouse in console if ( cls.key_dest == key_console ) { @@ -668,20 +672,30 @@ } // Game mouse - adjust *= sensitivity->value; + adjust *= sensitivity->value * cl.refdef.fov_x/fov->value; fmx *= adjust; fmy *= adjust; // Add mouse X/Y movement to cmd if ( ( lookstrafe->integer && mlooking ) || ( in_strafe.state & 1 ) ) { + if (!cmd) + return; cmd->sidemove += (short)( ( m_side->value * fmx ) + 0.5f ); } else { - cl.viewangles[ YAW ] -= m_yaw->value * fmx; + if (cmd) + cl.viewangles[ YAW ] -= m_yaw->value * fmx; + else + cl.predicted_angles[ YAW ] = cl.last_predicted_angles[ YAW ] - m_yaw->value * fmx; } if ( ( mlooking || freelook->integer ) && !( in_strafe.state & 1 ) ) { - cl.viewangles[ PITCH ] += m_pitch->value * fmy; + if (cmd) + cl.viewangles[ PITCH ] += m_pitch->value * fmy; + else + cl.predicted_angles[ PITCH ] = cl.last_predicted_angles[ PITCH ] + m_pitch->value * fmy; } else { + if (!cmd) + return; cmd->forwardmove -= (short)( ( m_forward->value * fmy ) + 0.5f ); } diff -Nru alien-arena-7.53+dfsg/source/client/cl_inv.c alien-arena-7.66+dfsg/source/client/cl_inv.c --- alien-arena-7.53+dfsg/source/client/cl_inv.c 2010-12-01 07:56:22.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_inv.c 2013-06-22 20:07:36.000000000 +0000 @@ -41,27 +41,6 @@ /* ================ -Inv_DrawString -================ -*/ -void Inv_DrawString (int x, int y, char *string) -{ - while (*string) - { - Draw_Char (x, y, *string); - x+=8; - string++; - } -} - -void SetStringHighBit (char *s) -{ - while (*s) - *s++ |= 128; -} - -/* -================ CL_DrawInventory ================ */ @@ -123,7 +102,7 @@ colWidth[ 2 ] = box.width = 100 * scale , box.height = 0; FNT_BoundedPrint( font , "Item" , FNT_CMODE_NONE , FNT_ALIGN_LEFT , &box , FNT_colors[ 7 ] ); - Draw_Fill( colPos[ 0 ] + scale , box.y + 11 * scale , 302 * scale , 2 * scale , 15 ); + Draw_Fill( colPos[ 0 ] + scale , box.y + 11 * scale , 302 * scale , 2 * scale , RGBA8(235,235,235,255)); // Draw inventory contents box.y += 16 * scale; diff -Nru alien-arena-7.53+dfsg/source/client/cl_main.c alien-arena-7.66+dfsg/source/client/cl_main.c --- alien-arena-7.53+dfsg/source/client/cl_main.c 2011-12-05 05:21:38.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_main.c 2013-08-19 03:26:16.000000000 +0000 @@ -47,17 +47,6 @@ #define _putenv putenv #endif -/* - * Temporary test data collection for packet rate limiting - * and framerate_cap jitter experiment. - * Following 7.52 release, may be deleted. - */ -#define PKT_TEST 0 - -#if PKT_TEST -cvar_t *cl_packet_test; -cvar_t *cl_frcjitter; -#endif cvar_t *freelook; @@ -89,9 +78,12 @@ cvar_t *cl_playtaunts; cvar_t *cl_centerprint; cvar_t *cl_precachecustom; +cvar_t *cl_simpleitems; +cvar_t *cl_flicker; cvar_t *cl_paindist; cvar_t *cl_explosiondist; +cvar_t *cl_raindist; cvar_t *cl_add_particles; cvar_t *cl_add_lights; @@ -104,6 +96,7 @@ cvar_t *cl_paused; cvar_t *cl_timedemo; +cvar_t *cl_demoquit; cvar_t *lookspring; cvar_t *lookstrafe; @@ -116,11 +109,14 @@ cvar_t *m_forward; cvar_t *m_side; +cvar_t *cl_test; + // // userinfo // cvar_t *info_password; cvar_t *info_spectator; +cvar_t *info_spectator_password; cvar_t *name; cvar_t *stats_password; cvar_t *pw_hashed; @@ -163,9 +159,11 @@ cvar_t *cl_stats_server; //latest version of the game available -cvar_t *cl_latest_game_version; cvar_t *cl_latest_game_version_url; +cvar_t *cl_speedrecord; +cvar_t *cl_alltimespeedrecord; + client_static_t cls; client_state_t cl; @@ -179,7 +177,13 @@ extern cvar_t *allow_download_sounds; extern cvar_t *allow_download_maps; -extern char map_music[128]; +#if defined WIN32_VARIANT +extern char map_music[MAX_PATH]; +extern char map_music_sec[MAX_PATH]; +#else +extern char map_music[MAX_OSPATH]; +extern char map_music_sec[MAX_OSPATH]; +#endif extern void RS_FreeAllScripts(void); @@ -191,19 +195,19 @@ typedef struct _SERVERINFO { char ip[32]; - int port; + unsigned short port; char szHostName[256]; char szMapName[256]; int curClients; int maxClients; + int starttime; int ping; PLAYERINFO players[64]; int temporary; } SERVERINFO; SERVERINFO servers[64]; -int numServers = 0; -extern unsigned int starttime; +static int numServers = 0; static size_t szr; // just for unused result warnings @@ -216,6 +220,8 @@ static struct FNT_auto_s _CL_centerFont; FNT_auto_t CL_consoleFont; static struct FNT_auto_s _CL_consoleFont; +FNT_auto_t CL_menuFont; +static struct FNT_auto_s _CL_menuFont; //====================================================================== @@ -394,6 +400,8 @@ //====================================================================== + + /* =================== Cmd_ForwardToServer @@ -495,7 +503,7 @@ return; } - Cvar_SetValue ("paused", !cl_paused->value); + Cvar_SetValue ("paused", !cl_paused->integer); } /* @@ -749,7 +757,7 @@ if (cls.state == ca_disconnected) return; - if (cl_timedemo && cl_timedemo->value) + if (cl_timedemo && cl_timedemo->integer) { int time; @@ -757,6 +765,7 @@ if (time > 0) Com_Printf ("%i frames, %3.1f seconds: %3.1f fps\n", cl.timedemo_frames, time/1000.0, cl.timedemo_frames*1000.0 / time); + cl.timedemo_start = 0; } VectorClear (cl.refdef.blend); @@ -788,11 +797,10 @@ cls.state = ca_disconnected; -/* -** From Max's timedemo benchmarks: -** For automated test runs using demos, can exit here by calling CL_Quit_f() -*/ - + if (cl_demoquit && cl_demoquit->integer && + cl_timedemo && cl_timedemo->integer) { + CL_Quit_f(); + } } void CL_Disconnect_f (void) @@ -881,8 +889,8 @@ Get a list of servers from the master =================== */ -void GetServerList (void) { - +static void GetServerList (void) +{ char *requeststring; netadr_t adr; @@ -905,6 +913,23 @@ { Com_Printf( "Bad address: %s\n", cl_master->string); } + + // Query secondary server + Com_Printf( "querying %s...\n", cl_master2->string ); + if ( NET_StringToAdr( cl_master2->string, &adr ) ) { + if ( !adr.port ) + adr.port = BigShort( PORT_MASTER ); + Netchan_OutOfBandPrint( NS_CLIENT, adr, requeststring ); + } + else + { + Com_Printf( "Bad address: %s\n", cl_master2->string); + } + + // Tactical mode to do: Query third server - tactical servers will only reside on this server + + // Reset server list for incoming responses. + numServers = 0; } /* ================= @@ -913,58 +938,108 @@ Handle a reply from getservers message to master server ================= */ -void CL_ParseGetServersResponse() +static void CL_ParseGetServersResponse() { cvar_t *noudp; cvar_t *noipx; netadr_t adr; char adrString[32]; byte addr[4]; + byte port[2]; + int idx; + unsigned short uport; + qboolean dupe; MSG_BeginReading (&net_message); MSG_ReadLong (&net_message); // skip the -1 noudp = Cvar_Get ("noudp", "0", CVAR_NOSET); - if (!noudp->value) + if (!noudp->integer) { adr.type = NA_BROADCAST; } noipx = Cvar_Get ("noipx", "0", CVAR_NOSET); - if (!noipx->value) + if (!noipx->integer) { adr.type = NA_BROADCAST_IPX; } - numServers = 0; - if(net_message.readcount +8 < net_message.cursize) - net_message.readcount += 8; + if ( net_message.readcount + 8 < net_message.cursize ) + net_message.readcount += 8; - while( net_message.readcount +6 <= net_message.cursize ) { - MSG_ReadData( &net_message, addr, 4 ); - servers[numServers].port = MSG_ReadShort( &net_message ); + while( net_message.readcount +6 <= net_message.cursize ) + { + if (numServers == 64) + break; // No room left. - Com_sprintf( adrString, sizeof( adrString ), "%u.%u.%u.%u", addr[0], addr[1], addr[2], addr[3]); + MSG_ReadData( &net_message, addr, 4 ); + Com_sprintf( adrString, sizeof( adrString ), "%u.%u.%u.%u", + addr[0], addr[1], addr[2], addr[3]); + MSG_ReadData( &net_message, port, 2 ); /* network byte order (bigendian) */ + /* convert to unsigned short in host byte order */ + uport = (unsigned short) ((port[0] << 8) + port[1]); + + dupe = false; + // Check that we don't have a duplicate entry. + for (idx = 0; idx < numServers; idx++) { + if ( !strcmp(servers[idx].ip, adrString) && + servers[idx].port == uport) { + Com_Printf("Already have: %s:%u\n", adrString, + uport); + dupe = true; + break; + } + } + if (dupe) + continue; - memcpy (&servers[numServers].ip, adrString, sizeof (servers[numServers].ip)); + memcpy( &servers[numServers].ip, adrString, sizeof(servers[numServers].ip) ); + servers[numServers].port = uport; - Com_Printf ("pinging %s...\n", servers[numServers].ip); if (!NET_StringToAdr (servers[numServers].ip, &adr)) { Com_Printf ("Bad address: %s\n", servers[numServers].ip); continue; } - adr.port = servers[numServers].port; + + Com_Printf ("pinging %s:%hu...\n", + servers[numServers].ip, servers[numServers].port ); + + /* adr.port is in network byte order (bigendian) */ + adr.port = (unsigned short)BigShort( servers[numServers].port ); if (!adr.port) { adr.port = BigShort(PORT_SERVER); } Netchan_OutOfBandPrint (NS_CLIENT, adr, va("status %i", PROTOCOL_VERSION)); + servers[numServers].starttime = Sys_Milliseconds(); - if (++numServers == 64) - break; + ++numServers; } - //set the start time for pings - starttime = Sys_Milliseconds(); +} +/* +================= +CL_GetPingStartTime + +Return ping starttime for server given its address. Returns 0 if not found. +================= +*/ +int CL_GetPingStartTime(netadr_t adr) +{ + int idx; + char adrString[32]; + unsigned short port; + + Com_sprintf(adrString, sizeof(adrString), "%u.%u.%u.%u", + adr.ip[0], adr.ip[1], adr.ip[2], adr.ip[3]); + port = (unsigned short) BigShort(adr.port); + for (idx = 0; idx < numServers; idx++) { + if (! strcmp(adrString, servers[idx].ip) && + port == servers[idx].port) { + return servers[idx].starttime; + } + } + return 0; } /* @@ -972,6 +1047,7 @@ CL_PingServers_f ================= */ +static void CL_ReadPackets (); void CL_PingServers_f (void) { @@ -984,13 +1060,13 @@ NET_Config (true); // allow remote - GetServerList();//get list from COR master server + GetServerList(); //get list from COR master server // send a broadcast packet Com_Printf ("pinging broadcast...\n"); noudp = Cvar_Get ("noudp", "0", CVAR_NOSET); - if (!noudp->value) + if (!noudp->integer) { adr.type = NA_BROADCAST; adr.port = BigShort(PORT_SERVER); @@ -998,7 +1074,7 @@ } noipx = Cvar_Get ("noipx", "0", CVAR_NOSET); - if (!noipx->value) + if (!noipx->integer) { adr.type = NA_BROADCAST_IPX; adr.port = BigShort(PORT_SERVER); @@ -1025,6 +1101,35 @@ Netchan_OutOfBandPrint (NS_CLIENT, adr, va("status %i", PROTOCOL_VERSION)); } + + // Note that all we have done thus far is + // - Request server lists from the two master servers + // - Sent a broadcast to the LAN looking for local servers + // When CL_ReadPackets gets the responses from the master server, it will + // automatically ping all the game servers. Ideally, if the net connection + // is pretty good, we can get that all done in the following loop. The + // game's main loop will catch any stragglers. + + // Read packets at 5 ms intervals 60 times. That's 300 ms. Figure maybe + // 100-150 ms round trip to the master server, then another 100-150 ms + // round trip to the game servers. So we should be able to grab any + // servers 150 ping or less and gauge their pings to within 5 ms or so. +#define PING_LOOP_TOTAL_MS 300 +#define PING_LOOP_INTERVAL_MS 5 +#define PING_LOOP_ITERATIONS (PING_LOOP_TOTAL_MS/PING_LOOP_INTERVAL_MS) + for (i = 0; i < PING_LOOP_ITERATIONS; i++) + { + #if defined UNIX_VARIANT + usleep (PING_LOOP_INTERVAL_MS*1000); + #elif defined WIN32_VARIANT + Sleep (PING_LOOP_INTERVAL_MS); + #else + #warning client/cl_main.c: CL_PingServers_f (): \ + Do not know what sleep function to use! + break; + #endif + CL_ReadPackets (); + } // -JD restart the menu music that was stopped during this procedure S_StartMenuMusic(); @@ -1061,7 +1166,7 @@ Responses to broadcasts, etc ================= */ -void CL_ConnectionlessPacket (void) +static void CL_ConnectionlessPacket (void) { char *s; char *c; @@ -1089,6 +1194,7 @@ switch(currLoginState.requestType) { case STATSLOGIN: + STATS_AuthenticateStats(s); break; case STATSPWCHANGE: @@ -1135,6 +1241,7 @@ strncpy(cls.downloadurl, Cmd_Argv(1), sizeof(cls.downloadurl) - 1); } is_localhost = !strcmp(cls.servername, "localhost"); + Netchan_OutOfBandPrint (NS_CLIENT, net_from, va("status %i", PROTOCOL_VERSION)); return; } @@ -1152,20 +1259,40 @@ Cbuf_AddText ("\n"); return; } + // print command from somewhere if (!strcmp(c, "print")) { s = MSG_ReadString (&net_message); - Com_Printf ("%s", s); - M_AddToServerList (net_from, s); //add net_from so we have the addy + if (s[0] == '\\') + { + char *playerinfo_start; + if (cls.state >= ca_connected && + !memcmp(&net_from, &cls.netchan.remote_address, sizeof(netadr_t))) + M_UpdateConnectedServerInfo (net_from, s); + if (cls.key_dest == key_menu) + { + M_AddToServerList (net_from, s); //add net_from so we have the addy + } + else + { + // If someone called pingservers () directly from the console, + // chances are he wants to read the server list manually + // anyway. + playerinfo_start = strchr (s, '\n'); + *playerinfo_start++ = '\0'; + Info_Print (s); + Com_Printf ("%s", playerinfo_start); + } + } + else + Com_Printf ("%s", s); return; } - + // ping from somewhere if (!strcmp(c, "ping")) { - - Netchan_OutOfBandPrint (NS_CLIENT, net_from, "ack"); return; } @@ -1216,10 +1343,12 @@ CL_ReadPackets ================= */ -void CL_ReadPackets (void) +int c_incoming_bytes = 0; +static void CL_ReadPackets (void) { while (NET_GetPacket (NS_CLIENT, &net_from, &net_message)) { + c_incoming_bytes += net_message.cursize; // // remote command packet @@ -1284,7 +1413,7 @@ char *p; char sk[80]; - if (gender_auto->value) + if (gender_auto->integer) { if (gender->modified) { @@ -1293,7 +1422,8 @@ return; } - strncpy(sk, skin->string, sizeof(sk) - 1); + strncpy(sk, skin->string, sizeof(sk) - 2); + sk[sizeof(sk) - 1] = '\0'; // in case skin->string is 79 chars or more if ((p = strchr(sk, '/')) != NULL) *p = 0; if (Q_strcasecmp(sk, "male") == 0 || Q_strcasecmp(sk, "cyborg") == 0) @@ -1360,20 +1490,21 @@ if (cls.state != ca_connected) return; - if (!allow_download->value && precache_check < ENV_CNT) + if (!allow_download->integer && precache_check < ENV_CNT) precache_check = ENV_CNT; - if (precache_check == CS_MODELS) { // confirm map + if (precache_check == CS_MODELS) // confirm map + { precache_check = CS_MODELS+2; // 0 isn't used - if (allow_download_maps->value) + if (allow_download_maps->integer) if (!CL_CheckOrDownloadFile(cl.configstrings[CS_MODELS+1])) return; // started a download } - + redoSkins: if (precache_check >= CS_MODELS && precache_check < CS_MODELS+MAX_MODELS) { - if (allow_download_models->value) + if (allow_download_models->integer) { while (precache_check < CS_MODELS+MAX_MODELS && cl.configstrings[precache_check][0]) @@ -1468,7 +1599,7 @@ if (precache_check >= CS_SOUNDS && precache_check < CS_SOUNDS+MAX_SOUNDS) { - if (allow_download_sounds->value) + if (allow_download_sounds->integer) { if (precache_check == CS_SOUNDS) precache_check++; // zero is blank @@ -1502,7 +1633,7 @@ } if (precache_check >= CS_PLAYERSKINS && precache_check < CS_PLAYERSKINS + MAX_CLIENTS * PLAYER_MULT) { - if (allow_download_players->value) + if (allow_download_players->integer) { while (precache_check < CS_PLAYERSKINS + MAX_CLIENTS * PLAYER_MULT) { @@ -1607,7 +1738,7 @@ if (precache_check > ENV_CNT && precache_check < TEXTURE_CNT) { - if (allow_download->value && allow_download_maps->value) + if (allow_download->integer && allow_download_maps->integer) { while (precache_check < TEXTURE_CNT) { @@ -1634,7 +1765,7 @@ extern int numtexinfo; extern mapsurface_t map_surfaces[]; - if (allow_download->value && allow_download_maps->value) + if (allow_download->integer && allow_download_maps->integer) { while (precache_tex < numtexinfo) { @@ -1645,14 +1776,14 @@ return; // started a download } } - precache_check = TEXTURE_CNT+999; + precache_check = SCRIPT_CNT; } //get map related scripts if (precache_check == SCRIPT_CNT) { precache_check = SCRIPT_CNT+1; - if (allow_download_maps->value) + if (allow_download_maps->integer) { //get fog files COM_StripExtension ( cl.configstrings[CS_MODELS+1], fn ); @@ -1673,7 +1804,7 @@ if (precache_check == SCRIPT_CNT+1) { precache_check = SCRIPT_CNT+2; - if (allow_download_maps->value) + if (allow_download_maps->integer) { //get mus files COM_StripExtension ( cl.configstrings[CS_MODELS+1], fn ); @@ -1692,7 +1823,7 @@ if (precache_check == SCRIPT_CNT+2) { precache_check = SCRIPT_CNT+3; - if (allow_download_maps->value) + if (allow_download_maps->integer) { //get rscript files COM_StripExtension ( cl.configstrings[CS_MODELS+1], fn ); @@ -1707,6 +1838,22 @@ return; // started a download } } + + if (precache_check == SCRIPT_CNT+3) // try downloading lightmap + { + precache_check = SCRIPT_CNT+4; + if (allow_download_maps->integer) + { + char *extension; + strncpy (fn, cl.configstrings[CS_MODELS+1], MAX_OSPATH-1-strlen(".lightmap")+strlen(".bsp")); + extension = strstr (fn, ".bsp"); + if (extension) + *extension = 0; + strcat (fn, ".lightmap"); + if (!CL_CheckOrDownloadFile(fn)) + return; // started a download + } + } //ZOID CL_RegisterSounds (); @@ -1732,6 +1879,16 @@ } +netadr_t *CL_GetRemoteServer (void) { + static netadr_t remoteserver; + if (cls.state >= ca_connected) { + remoteserver = cls.netchan.remote_address; + return &remoteserver; + } + return NULL; +} + + /* ================= CL_Precache_f @@ -1789,41 +1946,45 @@ adr7 = Cvar_Get( "adr7", "", CVAR_ARCHIVE ); adr8 = Cvar_Get( "adr8", "", CVAR_ARCHIVE ); -#if PKT_TEST - cl_packet_test = Cvar_Get( "cl_packet_test", "0", 0 ); - cl_frcjitter = Cvar_Get( "cl_frcjitter", "1", 0 ); -#endif - // // register our variables // - cl_stereo_separation = Cvar_Get( "cl_stereo_separation", "0.4", CVAR_ARCHIVE ); - cl_stereo = Cvar_Get( "cl_stereo", "0", 0 ); - background_music = Cvar_Get("background_music", "1", CVAR_ARCHIVE); - background_music_vol = Cvar_Get("background_music_vol", "0.5", CVAR_ARCHIVE); - - cl_add_blend = Cvar_Get ("cl_blend", "1", CVAR_ARCHIVE); - cl_add_lights = Cvar_Get ("cl_lights", "1", 0); - cl_add_particles = Cvar_Get ("cl_particles", "1", 0); - cl_add_entities = Cvar_Get ("cl_entities", "1", 0); - cl_gun = Cvar_Get ("cl_gun", "1", CVAR_ARCHIVE); - cl_footsteps = Cvar_Get ("cl_footsteps", "1", 0); - cl_noskins = Cvar_Get ("cl_noskins", "0", CVAR_ARCHIVE); - cl_autoskins = Cvar_Get ("cl_autoskins", "0", 0); - cl_predict = Cvar_Get ("cl_predict", "1", 0); - cl_maxfps = Cvar_Get ("cl_maxfps", "60", CVAR_ARCHIVE); - cl_showPlayerNames = Cvar_Get ("cl_showplayernames", "0", CVAR_ARCHIVE); - cl_healthaura = Cvar_Get ("cl_healthaura", "1", CVAR_ARCHIVE); - cl_noblood = Cvar_Get ("cl_noblood", "0", CVAR_ARCHIVE); - cl_disbeamclr = Cvar_Get("cl_disbeamclr", "0", CVAR_ARCHIVE); - cl_brass = Cvar_Get ("cl_brass", "1", CVAR_ARCHIVE); - cl_dmlights = Cvar_Get("cl_dmlights", "1", CVAR_ARCHIVE); - cl_playtaunts = Cvar_Get ("cl_playtaunts", "1", CVAR_ARCHIVE); - cl_centerprint = Cvar_Get ("cl_centerprint", "1", CVAR_ARCHIVE); - cl_precachecustom = Cvar_Get ("cl_precachecustom", "0", CVAR_ARCHIVE); + cl_stereo_separation = Cvar_Get( "cl_stereo_separation", "0.4", CVAR_ARCHIVE | CVARDOC_FLOAT ); + cl_stereo = Cvar_Get( "cl_stereo", "0", CVARDOC_BOOL ); + background_music = Cvar_Get("background_music", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + background_music_vol = Cvar_Get("background_music_vol", "0.5", CVAR_ARCHIVE | CVARDOC_FLOAT); + + cl_add_blend = Cvar_Get ("cl_blend", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + cl_add_lights = Cvar_Get ("cl_lights", "1", CVARDOC_BOOL); + cl_add_particles = Cvar_Get ("cl_particles", "1", CVARDOC_BOOL); + cl_add_entities = Cvar_Get ("cl_entities", "1", CVARDOC_BOOL); + cl_gun = Cvar_Get ("cl_gun", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + cl_footsteps = Cvar_Get ("cl_footsteps", "1", CVARDOC_BOOL); + cl_noskins = Cvar_Get ("cl_noskins", "0", CVAR_ARCHIVE | CVARDOC_BOOL); + cl_autoskins = Cvar_Get ("cl_autoskins", "0", CVARDOC_BOOL); + cl_predict = Cvar_Get ("cl_predict", "1", CVARDOC_BOOL); + cl_maxfps = Cvar_Get ("cl_maxfps", "60", CVAR_ARCHIVE | CVARDOC_INT); + cl_showPlayerNames = Cvar_Get ("cl_showplayernames", "0", CVAR_ARCHIVE | CVARDOC_INT); + Cvar_Describe (cl_showPlayerNames, "0 means no nametags, 1 means show one nametag in the center of the screen, 2 means show a nametag over each player."); + cl_healthaura = Cvar_Get ("cl_healthaura", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + Cvar_Describe (cl_healthaura, "show glowing effects around health pickups."); + cl_noblood = Cvar_Get ("cl_noblood", "0", CVAR_ARCHIVE | CVARDOC_BOOL); + cl_disbeamclr = Cvar_Get("cl_disbeamclr", "0", CVAR_ARCHIVE | CVARDOC_INT); + Cvar_Describe (cl_disbeamclr, "beam color for the disruptor weapon. 0 = green, 1 = blue, 2 = red, 3 = yellow, 4 = purple."); + cl_brass = Cvar_Get ("cl_brass", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + cl_dmlights = Cvar_Get("cl_dmlights", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + cl_playtaunts = Cvar_Get ("cl_playtaunts", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + cl_centerprint = Cvar_Get ("cl_centerprint", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + cl_precachecustom = Cvar_Get ("cl_precachecustom", "0", CVAR_ARCHIVE | CVARDOC_BOOL); + Cvar_Describe (cl_precachecustom, "precache 3rd-party and custom player skins at the first map load."); + cl_simpleitems = Cvar_Get ("cl_simpleitems", "0", CVAR_ARCHIVE | CVARDOC_BOOL); + Cvar_Describe (cl_simpleitems, "show sprites instead of models for pickup items."); + cl_flicker = Cvar_Get ("cl_flicker", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + Cvar_Describe (cl_flicker, "enable flickering world lighting."); cl_paindist = Cvar_Get ("cl_paindist", "1", CVAR_ARCHIVE); cl_explosiondist = Cvar_Get ("cl_explosiondist", "1", CVAR_ARCHIVE); + cl_raindist = Cvar_Get ("cl_raindist", "1", CVAR_ARCHIVE); cl_upspeed = Cvar_Get ("cl_upspeed", "200", 0); cl_forwardspeed = Cvar_Get ("cl_forwardspeed", "200", 0); @@ -1832,17 +1993,17 @@ cl_pitchspeed = Cvar_Get ("cl_pitchspeed", "150", 0); cl_anglespeedkey = Cvar_Get ("cl_anglespeedkey", "1.5", 0); - cl_run = Cvar_Get ("cl_run", "0", CVAR_ARCHIVE); - freelook = Cvar_Get( "freelook", "0", CVAR_ARCHIVE ); - lookspring = Cvar_Get ("lookspring", "0", CVAR_ARCHIVE); - lookstrafe = Cvar_Get ("lookstrafe", "0", CVAR_ARCHIVE); - m_accel = Cvar_Get ("m_accel", "1", CVAR_ARCHIVE); - sensitivity = Cvar_Get ("sensitivity", "3", CVAR_ARCHIVE); - menu_sensitivity = Cvar_Get("menu_sensitivity", "3", CVAR_ARCHIVE); - - m_smoothing = Cvar_Get("m_smoothing", "0", CVAR_ARCHIVE); - m_pitch = Cvar_Get ("m_pitch", "0.022", CVAR_ARCHIVE); - m_yaw = Cvar_Get ("m_yaw", "0.022", CVAR_ARCHIVE); + cl_run = Cvar_Get ("cl_run", "0", CVAR_ARCHIVE | CVARDOC_BOOL); + freelook = Cvar_Get( "freelook", "0", CVAR_ARCHIVE | CVARDOC_BOOL); + lookspring = Cvar_Get ("lookspring", "0", CVAR_ARCHIVE | CVARDOC_BOOL); + lookstrafe = Cvar_Get ("lookstrafe", "0", CVAR_ARCHIVE | CVARDOC_BOOL); + m_accel = Cvar_Get ("m_accel", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + sensitivity = Cvar_Get ("sensitivity", "3", CVAR_ARCHIVE | CVARDOC_FLOAT); + menu_sensitivity = Cvar_Get("menu_sensitivity", "3", CVAR_ARCHIVE | CVARDOC_FLOAT); + + m_smoothing = Cvar_Get("m_smoothing", "0", CVAR_ARCHIVE | CVARDOC_BOOL); + m_pitch = Cvar_Get ("m_pitch", "0.022", CVAR_ARCHIVE | CVARDOC_FLOAT); + m_yaw = Cvar_Get ("m_yaw", "0.022", CVAR_ARCHIVE | CVARDOC_FLOAT); m_forward = Cvar_Get ("m_forward", "1", 0); m_side = Cvar_Get ("m_side", "1", 0); @@ -1851,52 +2012,61 @@ cl_showclamp = Cvar_Get ("showclamp", "0", 0); cl_timeout = Cvar_Get ("cl_timeout", "120", 0); cl_paused = Cvar_Get ("paused", "0", 0); - cl_timedemo = Cvar_Get ("timedemo", "0", 0); - - rcon_client_password = Cvar_Get ("rcon_password", "", 0); - rcon_address = Cvar_Get ("rcon_address", "", 0); + cl_timedemo = Cvar_Get ("timedemo", "0", CVARDOC_BOOL); + Cvar_Describe (cl_timedemo, "play back demos (recorded games) in benchmark mode."); + cl_demoquit = Cvar_Get ("demoquit", "0", CVARDOC_BOOL); + Cvar_Describe (cl_demoquit, "quit automatically after a demo has finished."); + + cl_speedrecord = Cvar_Get ("cl_speedrecord", "450", CVARDOC_INT); + cl_alltimespeedrecord = Cvar_Get ("cl_alltimespeedrecord", "450", CVAR_ARCHIVE | CVARDOC_INT); + + rcon_client_password = Cvar_Get ("rcon_password", "", CVARDOC_STR); + rcon_address = Cvar_Get ("rcon_address", "", CVARDOC_STR); + + cl_test = Cvar_Get ("cl_test", "0", CVAR_ARCHIVE); // // userinfo // - info_password = Cvar_Get ("password", "", CVAR_USERINFO); - info_spectator = Cvar_Get ("spectator", "0", CVAR_USERINFO); - name = Cvar_Get ("name", "unnamed", CVAR_USERINFO | CVAR_ARCHIVE); - stats_password = Cvar_Get("stats_password", "password", CVAR_PROFILE); + info_password = Cvar_Get ("password", "", CVAR_USERINFO | CVARDOC_STR); + info_spectator = Cvar_Get ("spectator", "0", CVAR_USERINFO | CVARDOC_BOOL); + info_spectator_password = Cvar_Get ( "spectator_password", "", CVAR_USERINFO | CVARDOC_STR); + name = Cvar_Get ("name", "unnamed", CVAR_USERINFO | CVAR_ARCHIVE | CVARDOC_STR); + stats_password = Cvar_Get("stats_password", "password", CVAR_PROFILE | CVARDOC_STR); Q_strncpyz2(currLoginState.old_password, stats_password->string, sizeof(currLoginState.old_password)); currLoginState.hashed = false; - pw_hashed = Cvar_Get("stats_pw_hashed", "0", CVAR_PROFILE); + pw_hashed = Cvar_Get("stats_pw_hashed", "0", CVAR_PROFILE | CVARDOC_BOOL); /* */ ValidatePlayerName( name->string, (strlen(name->string)+1) ); /* */ - skin = Cvar_Get ("skin", "male/grunt", CVAR_USERINFO | CVAR_ARCHIVE); - rate = Cvar_Get ("rate", "25000", CVAR_USERINFO | CVAR_ARCHIVE); // FIXME + skin = Cvar_Get ("skin", "male/grunt", CVAR_USERINFO | CVAR_ARCHIVE | CVARDOC_STR); + rate = Cvar_Get ("rate", "25000", CVAR_USERINFO | CVAR_ARCHIVE | CVARDOC_INT); // FIXME msg = Cvar_Get ("msg", "1", CVAR_USERINFO | CVAR_ARCHIVE); hand = Cvar_Get ("hand", "0", CVAR_USERINFO | CVAR_ARCHIVE); - fov = Cvar_Get ("fov", "90", CVAR_USERINFO | CVAR_ARCHIVE); - gender = Cvar_Get ("gender", "male", CVAR_USERINFO | CVAR_ARCHIVE); + fov = Cvar_Get ("fov", "90", CVAR_USERINFO | CVAR_ARCHIVE | CVARDOC_INT); + Cvar_Describe (fov, "horizontal field of view (in degrees.) Maximum 160."); + gender = Cvar_Get ("gender", "male", CVAR_USERINFO | CVAR_ARCHIVE | CVARDOC_STR); gender_auto = Cvar_Get ("gender_auto", "1", CVAR_ARCHIVE); gender->modified = false; // clear this so we know when user sets it manually - cl_vwep = Cvar_Get ("cl_vwep", "1", CVAR_ARCHIVE); - cl_vehicle_huds = Cvar_Get ("cl_vehicle_huds", "1", CVAR_ARCHIVE); + cl_vwep = Cvar_Get ("cl_vwep", "1", CVAR_ARCHIVE | CVARDOC_BOOL); + cl_vehicle_huds = Cvar_Get ("cl_vehicle_huds", "1", CVAR_ARCHIVE | CVARDOC_BOOL); - cl_master = Cvar_Get ("cl_master", "master.corservers.com", CVAR_ARCHIVE); - cl_master2 = Cvar_Get ("cl_master2", "master2.corservers.com", CVAR_ARCHIVE); + cl_master = Cvar_Get ("cl_master", "master.corservers.com", CVAR_ARCHIVE | CVARDOC_STR); + cl_master2 = Cvar_Get ("cl_master2", "master2.corservers.com", CVAR_ARCHIVE | CVARDOC_STR); //custom huds - cl_hudimage1 = Cvar_Get("cl_hudimage1", "pics/i_health.tga", CVAR_ARCHIVE); - cl_hudimage2 = Cvar_Get("cl_hudimage2", "pics/i_score.tga", CVAR_ARCHIVE); + cl_hudimage1 = Cvar_Get("cl_hudimage1", "pics/i_health.tga", CVAR_ARCHIVE | CVARDOC_STR); + cl_hudimage2 = Cvar_Get("cl_hudimage2", "pics/i_score.tga", CVAR_ARCHIVE | CVARDOC_STR); //stats server - cl_stats_server = Cvar_Get("cl_stats_server", "http://stats.planetarena.org", CVAR_ARCHIVE); + cl_stats_server = Cvar_Get("cl_stats_server", "http://stats.planetarena.org", CVAR_ARCHIVE | CVARDOC_STR); //update checker - cl_latest_game_version = Cvar_Get("cl_latest_game_version", VERSION, CVAR_ARCHIVE); - cl_latest_game_version_url = Cvar_Get("cl_latest_game_version_server", "http://red.planetarena.org/version/crx_version", CVAR_ARCHIVE); + cl_latest_game_version_url = Cvar_Get("cl_latest_game_version_server", "http://red.planetarena.org/version/crx_version", CVAR_ARCHIVE | CVARDOC_STR); //throwaway cvars - Cvar_Get("g_dm_lights", "1", CVAR_ARCHIVE); //mark this as archived even if game code doesn't run. + Cvar_Get("g_dm_lights", "1", CVAR_ARCHIVE | CVAR_GAMEINFO | CVARDOC_BOOL); //mark this as archived even if game code doesn't run. // // register our commands @@ -1965,7 +2135,6 @@ Cmd_AddCommand ("chatbubble", NULL); Cmd_AddCommand ("players", NULL); Cmd_AddCommand ("score", NULL); - Cmd_AddCommand ("help", NULL); Cmd_AddCommand ("vote", NULL); Cmd_AddCommand ("putaway", NULL); Cmd_AddCommand ("playerlist", NULL); @@ -1975,28 +2144,30 @@ strcpy(map_music, "music/none.wav"); //register all our menu gfx - R_RegisterPic("m_main"); - R_RegisterPic("m_options"); - R_RegisterPic("menu_back"); - R_RegisterPic("m_video"); - R_RegisterPic("m_controls"); - R_RegisterPic("m_player"); - R_RegisterPic("m_bots"); - R_RegisterPic("m_startserver"); - R_RegisterPic("m_dmoptions"); - R_RegisterPic("m_mutators"); - R_RegisterPic("m_single"); - R_RegisterPic("m_quit"); - R_RegisterPic("m_main_mont0"); - R_RegisterPic("m_main_mont1"); - R_RegisterPic("m_main_mont2"); - R_RegisterPic("m_main_mont3"); - R_RegisterPic("m_main_mont4"); - R_RegisterPic("m_main_mont5"); - R_RegisterPic("hud_bomber"); - R_RegisterPic("hud_strafer"); - R_RegisterPic("hud_hover"); - R_RegisterPic("blood_ring"); + (void)R_RegisterPic("m_main"); + (void)R_RegisterPic("m_options"); + (void)R_RegisterPic("menu_back"); + (void)R_RegisterPic("m_video"); + (void)R_RegisterPic("m_controls"); + (void)R_RegisterPic("m_player"); + (void)R_RegisterPic("m_bots"); + (void)R_RegisterPic("m_startserver"); + (void)R_RegisterPic("m_dmoptions"); + (void)R_RegisterPic("m_mutators"); + (void)R_RegisterPic("m_single"); + (void)R_RegisterPic("m_quit"); + (void)R_RegisterPic("m_main_mont0"); + (void)R_RegisterPic("m_main_mont1"); + (void)R_RegisterPic("m_main_mont2"); + (void)R_RegisterPic("m_main_mont3"); + (void)R_RegisterPic("m_main_mont4"); + (void)R_RegisterPic("m_main_mont5"); + (void)R_RegisterPic("hud_bomber"); + (void)R_RegisterPic("hud_strafer"); + (void)R_RegisterPic("hud_hover"); + (void)R_RegisterPic("blood_ring"); + + remoteserver_runspeed = 300; //default } @@ -2101,8 +2272,9 @@ cheatvar_t *var; if ( !strcmp(cl.configstrings[CS_MAXCLIENTS], "1") - || !cl.configstrings[CS_MAXCLIENTS][0] ) - return; // single player can cheat + || !cl.configstrings[CS_MAXCLIENTS][0] + || cl.attractloop ) + return; // single player or demo playback can cheat // find all the cvars if we haven't done it yet if (!numcheatvars) @@ -2132,31 +2304,21 @@ } } -//============================================================================ - -/* - * Disabled now and may be removed following 7.52 release - * - * Temporary test data collection for packet rate limiting - * cvar: cl_packet_test - * Dumps collected packets per server frame and packet timer info - * at 1024 server frame intervals - * This is TEMPORARY. - * 'cause the data format is technical, arcane and crude. - * - */ -#if PKT_TEST - -#define PPSF_SIZE 16 -int svframe_count; -int pkts_per_svframe[PPSF_SIZE]; -int ppsfi; - -#define PKTTIME_SIZE 30 -int pkttime_ix; -int pkttime[PKTTIME_SIZE]; +void CL_CheckFlagStatus( void ) +{ + if(r_gotFlag) + { + //start the new music + S_StartMusic(map_music_sec); + } + else if(r_lostFlag) + { + //start the original map music back up + S_StartMusic(map_music); + } +} -#endif +//============================================================================ qboolean send_packet_now = false; // instant packets. used during downloads extern float r_frametime; // TODO: move to appropriate .h @@ -2218,12 +2380,8 @@ static int packet_delay = 0; int render_trigger; int packet_trigger; - -#if PKT_TEST - // test variables - static int prev_server_frame = 0; - static int packets_per_server_frame = 0; -#endif + static perftest_t *speedometer = NULL; + static perftest_t *accelerometer = NULL; if ( dedicated->integer ) { // crx running as dedicated server crashes without this. @@ -2237,12 +2395,27 @@ /* local timers for decoupling frame rate from packet rate */ packet_timer += msec; render_timer += msec; - - /* periodically override certain test and cheat cvars unless single player.*/ - if ( (cl.time & 0xfff) == 0 ) - { - CL_FixCvarCheats (); - } + + if (!speedometer) { + speedometer = get_perftest("speedometer"); + if (speedometer) { + speedometer->is_timerate = false; + speedometer->cvar = Cvar_Get("cl_showspeedometer", "0", CVAR_ARCHIVE); + strcpy (speedometer->format, "speed %4.0f u/s"); + speedometer->scale = 1.0f;///12.3f; + } + } + + if (!accelerometer) { + accelerometer = get_perftest("acceleromter"); + if (accelerometer) { + accelerometer->is_timerate = true; + accelerometer->cvar = Cvar_Get("cl_showaccelerometer", "0", CVAR_ARCHIVE); + strcpy (accelerometer->format, "accel %4.0f u/s/s"); + accelerometer->scale = 1.0f; + } + } + /* * update maximum FPS. @@ -2308,38 +2481,15 @@ if ( cl_timedemo->integer == 1 ) { /* accumulate timed demo statistics, free run both packet and render */ - if ( !cl.timedemo_start ) - { - cl.timedemo_start = cls.realtime; - } - cl.timedemo_frames++; - render_trigger = 1; + /* setting render_trigger to 1 forces timedemo_start to be set if it + * hasn't been already. It also forces cl.timedemo_frames to be + * incremented. + */ + render_trigger = 1; packet_trigger = 1; } else { /* normal operation. */ -#if PKT_TEST - if ( cl_frcjitter->integer ) - { // the cvar is temporary for test, to allow disabling this - /* Sometimes, the packetrate_cap can be "in phase" with - * the frame rate affecting the average packets-per-server-frame. - * A little jitter in the framerate_cap counteracts that. - */ - if ( render_timer >= (framerate_cap + frcjitter[frcjitter_ix]) ) - { - if ( ++frcjitter_ix > 3 ) frcjitter_ix = 0; - render_trigger = 1; - } - } - else - { - if ( render_timer >= framerate_cap ) - { - render_trigger = 1; - } - - } -#else /* Sometimes, the packetrate_cap can be "in phase" with * the frame rate affecting the average packets-per-server-frame. * A little jitter in the framerate_cap counteracts that. @@ -2349,7 +2499,6 @@ if ( ++frcjitter_ix > 3 ) frcjitter_ix = 0; render_trigger = 1; } -#endif if ( packetrate_cap == -1 ) { // flagged to run same as framerate_cap packet_trigger = render_trigger; @@ -2379,7 +2528,7 @@ } } - if ( packet_trigger || send_packet_now ) + if ( packet_trigger || send_packet_now || cls.download) { send_packet_now = false; // used during downloads @@ -2428,7 +2577,10 @@ /* run cURL downloads */ CL_HttpDownloadThink(); - /* system dependent keyboard and mouse input event polling */ + /* + * system dependent keyboard and mouse input event polling + * accumulate keyboard and mouse events + */ Sys_SendKeyEvents(); /* joystick input. may or may not be working. */ @@ -2437,9 +2589,16 @@ /* execute pending commands */ Cbuf_Execute(); - /* send client commands to server */ + /* + * send client commands to server + * these are construced from accumulated keyboard and mouse events, + * which are then reset + */ CL_SendCmd(); + /* clear various cvars unless single player */ + CL_FixCvarCheats (); + /* resend a connection request if necessary */ CL_CheckForResend(); @@ -2448,76 +2607,29 @@ * [The Quake trick that keeps players view smooth in on-line play.] */ CL_PredictMovement(); - -#if PKT_TEST - - if ( packetrate_cap > 0 && cl_packet_test->integer ) - { - /* developer test for checking packets per serverframe, packet delays - * histogram data collection - */ - /* - * collect packet timer histogram - */ - pkttime_ix = packet_timer; - if ( pkttime_ix >= PKTTIME_SIZE-1 ) - { - ++pkttime[PKTTIME_SIZE-1]; - } - else - { - ++pkttime[pkttime_ix]; - } - - if ( prev_server_frame != cl.frame.serverframe ) - { // new server frame - ++svframe_count; - if ( packets_per_server_frame > 0 - && packets_per_server_frame < PPSF_SIZE-1 ) - { - ++pkts_per_svframe[packets_per_server_frame]; - } - else - { - ++pkts_per_svframe[PPSF_SIZE-1]; - } - - if ( (svframe_count & 0x3FF) == 0 ) - { // dump to console and clear every 1024 server frames, ~100 secs - /*--- PACKETS PER SERVER FRAME ---*/ - Com_Printf( "ppsf(%i):", svframe_count ); - for ( ppsfi = 0; ppsfi < PPSF_SIZE-1; ppsfi++ ) - { - if ( pkts_per_svframe[ppsfi] != 0 ) - { - Com_Printf( "[%i:%i]", ppsfi, - pkts_per_svframe[ppsfi] ); - pkts_per_svframe[ppsfi] = 0; - } - } - Com_Printf( "\n" ); - /*--- PACKET TIMER HISTOGRAM ---*/ - Com_Printf( "pkttime:"); - for ( pkttime_ix = 0; pkttime_ix < PKTTIME_SIZE-1; pkttime_ix++ ) - { - if ( pkttime[pkttime_ix] != 0 ) - { - Com_Printf( "[%i:%i]", - pkttime_ix, pkttime[pkttime_ix] ); - pkttime[pkttime_ix] = 0; - } - } - Com_Printf( "\n" ); - } - prev_server_frame = cl.frame.serverframe; - packets_per_server_frame = 1; - } - else - { - ++packets_per_server_frame; - } - } -#endif + + if (speedometer && speedometer->cvar->integer) { + speedometer->counter = sqrt( + cl.predicted_velocity[0]*cl.predicted_velocity[0]+ + cl.predicted_velocity[1]*cl.predicted_velocity[1] + ); + if (speedometer->counter > cl_speedrecord->value) { + Cvar_SetValue ("cl_speedrecord", speedometer->counter); + if (speedometer->counter > cl_alltimespeedrecord->value) + Cvar_SetValue ("cl_alltimespeedrecord", speedometer->counter); + } + } + + if (accelerometer && accelerometer->cvar->integer) { + static float old_vel; + float new_vel; + new_vel = sqrt( + cl.predicted_velocity[0]*cl.predicted_velocity[0]+ + cl.predicted_velocity[1]*cl.predicted_velocity[1] + ); + accelerometer->counter += new_vel-old_vel; + old_vel = new_vel; + } /* retrigger packet send timer */ packet_timer = 0; @@ -2530,6 +2642,21 @@ if ( render_trigger ) { ++render_counter; // counting renders since last packet + + if (!packet_trigger && cl_test->integer) //return cl_test - this was causing major issues with menu mouse in windows build + { + /* + * system dependent keyboard and mouse input event polling + * accumulate keyboard and mouse events + */ + cls.frametime = ((float)packet_timer) / 1000.0f; + Sys_SendKeyEvents(); + /* + * update view angles based on accumulated keyboard and mouse + * events, which are *not* reset + */ + IN_Move(NULL); + } /* * calculate cls.frametime in seconds for render procedures. @@ -2551,13 +2678,16 @@ } else { // regular screen update - if ( host_speeds->value ) + if ( host_speeds->integer ) time_before_ref = Sys_Milliseconds(); // TODO: obsolete test? SCR_UpdateScreen(); - if ( host_speeds->value ) + if ( host_speeds->integer ) time_after_ref = Sys_Milliseconds(); } + // check for flag and update music src if possesed or lost + CL_CheckFlagStatus(); + // update audio. S_Update( cl.refdef.vieworg, cl.v_forward, cl.v_right, cl.v_up ); @@ -2612,27 +2742,33 @@ */ void CL_Init (void) { - if (dedicated->value) + if (dedicated->integer) return; // nothing running on the client // Initialise fonts CL_gameFont = &_CL_gameFont; - FNT_AutoInit( CL_gameFont , "default" , 0 , 65 , 8 , 48 ); - CL_gameFont->faceVar = Cvar_Get( "fnt_game" , "creativeblock" , CVAR_ARCHIVE ); + FNT_AutoInit( CL_gameFont , "freesans" , 0 , 65 , 8 , 48 ); + CL_gameFont->faceVar = Cvar_Get( "fnt_game" , "orbitron" , CVAR_ARCHIVE ); CL_gameFont->sizeVar = Cvar_Get( "fnt_game_size" , "0" , CVAR_ARCHIVE ); FNT_AutoRegister( CL_gameFont ); CL_centerFont = &_CL_centerFont; - FNT_AutoInit( CL_centerFont , "default" , 0 , 45 , 16 , 64 ); + FNT_AutoInit( CL_centerFont , "freesans" , 0 , 45 , 16 , 64 ); CL_centerFont->faceVar = CL_gameFont->faceVar; CL_centerFont->sizeVar = Cvar_Get( "fnt_center_size" , "0" , CVAR_ARCHIVE ); FNT_AutoRegister( CL_centerFont ); CL_consoleFont = &_CL_consoleFont; - FNT_AutoInit( CL_consoleFont , "default" , 0 , 52 , 8 , 48 ); + FNT_AutoInit( CL_consoleFont , "freesans" , 0 , 52 , 8 , 48 ); CL_consoleFont->faceVar = Cvar_Get( "fnt_console" , "freemono" , CVAR_ARCHIVE ); CL_consoleFont->sizeVar = Cvar_Get( "fnt_console_size" , "0" , CVAR_ARCHIVE ); FNT_AutoRegister( CL_consoleFont ); + + CL_menuFont = &_CL_menuFont; + FNT_AutoInit( CL_menuFont , "freesans" , 0 , 48 , 8 , 48 ); + CL_menuFont->faceVar = Cvar_Get( "fnt_menu" , "freesans" , CVAR_ARCHIVE ); + CL_menuFont->sizeVar = Cvar_Get( "fnt_menu_size" , "0" , CVAR_ARCHIVE ); + FNT_AutoRegister( CL_menuFont ); // all archived variables will now be loaded diff -Nru alien-arena-7.53+dfsg/source/client/cl_parse.c alien-arena-7.66+dfsg/source/client/cl_parse.c --- alien-arena-7.53+dfsg/source/client/cl_parse.c 2011-04-18 00:52:12.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_parse.c 2013-06-22 20:07:36.000000000 +0000 @@ -380,6 +380,11 @@ cl.servercount = MSG_ReadLong (&net_message); cl.attractloop = MSG_ReadByte (&net_message); + + // Hide console for demo playback. It interferes with timedemo results and + // is annoying when you just want to watch. + if (cl.attractloop) + M_ForceMenuOff (); // game directory str = MSG_ReadString (&net_message); diff -Nru alien-arena-7.53+dfsg/source/client/cl_pred.c alien-arena-7.66+dfsg/source/client/cl_pred.c --- alien-arena-7.53+dfsg/source/client/cl_pred.c 2010-10-10 02:27:52.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_pred.c 2013-06-22 20:07:36.000000000 +0000 @@ -249,7 +249,7 @@ { // just set angles for (i=0 ; i<3 ; i++) { - cl.predicted_angles[i] = cl.viewangles[i] + SHORT2ANGLE(cl.frame.playerstate.pmove.delta_angles[i]); + cl.last_predicted_angles[i] = cl.predicted_angles[i] = cl.viewangles[i] + SHORT2ANGLE(cl.frame.playerstate.pmove.delta_angles[i]); } return; } @@ -305,8 +305,13 @@ cl.predicted_origin[0] = pm.s.origin[0]*0.125; cl.predicted_origin[1] = pm.s.origin[1]*0.125; cl.predicted_origin[2] = pm.s.origin[2]*0.125; + + cl.predicted_velocity[0] = pm.s.velocity[0]*0.125; + cl.predicted_velocity[1] = pm.s.velocity[1]*0.125; + cl.predicted_velocity[2] = pm.s.velocity[2]*0.125; VectorCopy (pm.viewangles, cl.predicted_angles); + VectorCopy (pm.viewangles, cl.last_predicted_angles); } /* diff -Nru alien-arena-7.53+dfsg/source/client/cl_scrn.c alien-arena-7.66+dfsg/source/client/cl_scrn.c --- alien-arena-7.53+dfsg/source/client/cl_scrn.c 2011-09-29 04:36:34.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_scrn.c 2013-06-22 20:07:36.000000000 +0000 @@ -65,6 +65,8 @@ cvar_t *cl_drawfps; cvar_t *cl_drawtimer; +cvar_t *cl_drawbandwidth; +cvar_t *cl_drawframesover; cvar_t *cl_drawtime; @@ -75,6 +77,34 @@ void SCR_Loading_f (void); extern void R_VCFreeFrame(void); +extern cvar_t *rs_hasflag; +extern cvar_t *rs_team; + +/* + * map performance counters + * + * Used to measure the complexity of map areas. + * Modified for display in performance counter array + * Replace general "r_speed" cvar. + * + * Note: c_visible_textures seems to be always 0 and + * c_visible_lightmaps is not used + */ +// extern cvar_t *r_speeds; +cvar_t *rspeed_wpolys; +cvar_t *rspeed_epolys; +cvar_t *rspeed_flares; +cvar_t *rspeed_grasses; +cvar_t *rspeed_beams; +cvar_t *rspeed_vbobatches; +cvar_t *rspeed_particles; + +extern int c_brush_polys; /* "wpoly" polygons from brushes */ +extern int c_alias_polys; /* "epoly" polygons from .md2 meshes */ +extern int c_flares; /* "flares" lens flares */ +extern int c_grasses; /* "grasses" vegetation instances */ +extern int c_beams; /* "beams" light beams (?) */ +extern int c_vbo_batches; /* "vbobatches" batched draw commands */ /* =============================================================================== @@ -103,10 +133,10 @@ return; for (i=0 ; i 30) ping = 30; - SCR_DebugGraph (ping, 0xd0); + SCR_DebugGraph (ping, RGBA(0,1,0,1)); } typedef struct { float value; - int color; + float color[4]; } graphsamp_t; +#define DEBUGGRAPH_VALUES 4096 static int current; -static graphsamp_t values[1024]; +static graphsamp_t values[DEBUGGRAPH_VALUES]; /* ============== SCR_DebugGraph ============== */ -void SCR_DebugGraph (float value, int color) +void SCR_DebugGraph (float value, const float color[]) { - values[current&1023].value = value; - values[current&1023].color = color; + int i; + int limit; + limit = scr_vrect.width; + if (limit > DEBUGGRAPH_VALUES) + limit = DEBUGGRAPH_VALUES; + values[current%limit].value = value; + for (i = 0; i < 4; i++) + values[current%limit].color[i] = color[i]; current++; } @@ -146,23 +183,26 @@ */ void SCR_DrawDebugGraph (void) { - int a, x, y, w, i, h; - float v; - int color; + int a, x, y, w, i, h; + float v; + const float *color; // // draw the graph // + w = scr_vrect.width; + if (w > DEBUGGRAPH_VALUES) + w = DEBUGGRAPH_VALUES; x = scr_vrect.x; y = scr_vrect.y+scr_vrect.height; Draw_Fill (x, y-scr_graphheight->value, - w, scr_graphheight->value, 8); + w, scr_graphheight->value, RGBA8(123,123,123,255)); for (a=0 ; avalue + scr_graphshift->value; @@ -170,7 +210,7 @@ if (v < 0) v += scr_graphheight->value * (1+(int)(-v/scr_graphheight->value)); h = (int)v % scr_graphheight->integer; - Draw_Fill (x+w-1-a, y - h, 1, h, color); + Draw_Fill (x+w-1-a, y - h, 1, h, color); } } @@ -380,11 +420,9 @@ { scr_vrect.width = viddef.width; - scr_vrect.width &= ~7; - scr_vrect.height = viddef.height; - scr_vrect.height &= ~1; + // calculate left and top margins-- for now always 0 scr_vrect.x = (viddef.width - scr_vrect.width)/2; scr_vrect.y = (viddef.height - scr_vrect.height)/2; } @@ -438,7 +476,8 @@ scr_conspeed = Cvar_Get ("scr_conspeed", "3", CVAR_ARCHIVE); scr_consize = Cvar_Get ("scr_consize", "0.5", CVAR_ARCHIVE); scr_showturtle = Cvar_Get ("scr_showturtle", "0", 0); - scr_showpause = Cvar_Get ("scr_showpause", "1", 0); + // default back to 1 if we ever actually make a pause icon: + scr_showpause = Cvar_Get ("scr_showpause", "0", 0); scr_centertime = Cvar_Get ("scr_centertime", "2.5", CVAR_ARCHIVE); scr_printspeed = Cvar_Get ("scr_printspeed", "8", CVAR_ARCHIVE); scr_netgraph = Cvar_Get ("netgraph", "0", 0); @@ -452,6 +491,18 @@ cl_drawfps = Cvar_Get ("cl_drawfps", "0", CVAR_ARCHIVE); cl_drawtimer = Cvar_Get("cl_drawtimer", "0", CVAR_ARCHIVE); + cl_drawbandwidth = Cvar_Get ("cl_drawbandwidth", "0", CVAR_ARCHIVE); + cl_drawframesover = Cvar_Get ("cl_drawframesover", "0", CVAR_ARCHIVE); + + rspeed_wpolys = Cvar_Get("rspeed_wpolys", "0", 0); + rspeed_epolys = Cvar_Get("rspeed_epolys", "0", 0); + rspeed_flares = Cvar_Get("rspeed_flares", "0", 0); + rspeed_grasses = Cvar_Get("rspeed_grasses", "0", 0); + rspeed_beams = Cvar_Get("rspeed_beams", "0", 0); + rspeed_vbobatches = Cvar_Get("rspeed_vbobatches", "0", 0); + rspeed_particles = Cvar_Get("rspeed_particles", "0", 0); + + memset (perftests, 0, sizeof(perftests)); // // register our commands @@ -602,10 +653,10 @@ { Draw_Fill ( viddef.width/2-scale*15 + 1,viddef.height/2 + scale*5+1, - scale*30-2, scale*2-2, 3); + scale*30-2, scale*2-2, RGBA8(47,47,47,255)); Draw_Fill ( viddef.width/2-scale*15 + 1,viddef.height/2 + scale*5+1, - (scale*30-2)*percent/100, scale*2-2, 7); + (scale*30-2)*percent/100, scale*2-2, RGBA8(107,107,107,255)); } } @@ -637,13 +688,13 @@ if(map_pic_loaded) Draw_StretchPic (0, 0, viddef.width, viddef.height, va("/levelshots/%s.pcx", mapfile)); else - Draw_Fill (0, 0, viddef.width, viddef.height, 0); + Draw_Fill (0, 0, viddef.width, viddef.height, RGBA(0,0,0,1)); isMap = true; } else - Draw_Fill (0, 0, viddef.width, viddef.height, 0); + Draw_Fill (0, 0, viddef.width, viddef.height, RGBA(0,0,0,1)); #if 0 // no m_background pic, but a pic here over-writes the levelshot @@ -841,7 +892,7 @@ if (cls.state != ca_active || !cl.refresh_prepped) { // connected, but can't render CON_DrawConsole( scr_consize->value ); - Draw_Fill (0, viddef.height/2, viddef.width, viddef.height/2, 0); + Draw_Fill (0, viddef.height/2, viddef.width, viddef.height/2, RGBA(0,0,0,1)); return; } @@ -939,11 +990,13 @@ * frame flush and page flipping are not done. Modified 2011-02 with * additional info in result. Use 'viewpos' (also modified) command * for repeatable, consistent positioning. + * + * Modified 2012-12 */ void SCR_TimeRefresh_f( void ) { - int start, stop; - float time; + int t_start, t_stop; + float d_time; float frames_per_sec; float msec_per_frame; float save_yaw; @@ -951,62 +1004,69 @@ float num_frames; float yaw_increment; float frame_yaw; + char *cmd_arg; if ( cls.state != ca_active ) return; - save_yaw = cl.refdef.viewangles[YAW]; - - num_frames = scr_timerefcount->value; + save_yaw = cl.refdef.viewangles[YAW]; + num_frames = scr_timerefcount->value; frame_count = scr_timerefcount->integer; - if ( frame_count < 1 || frame_count > 720 ) + if ( frame_count < 1 || frame_count > 1440 ) { // silently protect against unreasonable setting num_frames = 128.0f; frame_count = 128; } + cmd_arg = Cmd_Argv(1); - frame_yaw = save_yaw; // start at original yaw - yaw_increment = 360.0f / num_frames; - start = Sys_Milliseconds(); - if ( Cmd_Argc() == 2 ) - { // run without page flipping. - R_BeginFrame( 0 ); - while ( --frame_count ) - { - cl.refdef.viewangles[YAW] = frame_yaw; - R_RenderFrame( &cl.refdef ); - frame_yaw += yaw_increment; - } - // last frame restores original yaw - cl.refdef.viewangles[YAW] = save_yaw; - R_RenderFrame( &cl.refdef ); - R_EndFrame(); + switch ( *cmd_arg ) + { + case '1': // rotate + yaw_increment = 360.0f / num_frames; + break; + + case '2': // no rotate + yaw_increment = 0.0f; + break; + default: + Com_Printf("usage: timerefresh , 1=rotate,2=fixed\n"); + return; } - else + + // show position + Com_Printf ("x:%#1.0f y:%#1.0f z:%#1.0f yaw:%#1.0f pitch:%#1.0f\n", + cl.refdef.vieworg[0], cl.refdef.vieworg[1], cl.refdef.vieworg[2], + cl.refdef.viewangles[YAW], cl.refdef.viewangles[PITCH] ); + + // test loop + frame_yaw = save_yaw; + t_start = Sys_Milliseconds(); + while ( frame_count-- ) { - while ( --frame_count ) - { - cl.refdef.viewangles[YAW] = frame_yaw; - R_BeginFrame( 0 ); - R_RenderFrame( &cl.refdef ); - R_EndFrame(); - frame_yaw += yaw_increment; - } - // last frame restores original yaw - cl.refdef.viewangles[YAW] = save_yaw; + cl.refdef.viewangles[YAW] = frame_yaw; R_BeginFrame( 0 ); R_RenderFrame( &cl.refdef ); R_EndFrame(); + frame_yaw += yaw_increment; } - stop = Sys_Milliseconds(); - time = (float)(stop - start); + t_stop = Sys_Milliseconds(); + + // restore original yaw (not included in test frame count) + cl.refdef.viewangles[YAW] = save_yaw; + R_BeginFrame( 0 ); + R_RenderFrame( &cl.refdef ); + R_EndFrame(); + + // report + d_time = (float)(t_stop - t_start); + d_time += 0.5f; + msec_per_frame = d_time / num_frames; + d_time /= 1000.0f; + frames_per_sec = num_frames / d_time; - msec_per_frame = time / num_frames; - time /= 1000.0f; - frames_per_sec = num_frames / time; Com_Printf( "%1.0f frames, %1.3f sec, %1.3f msec/frame, %1.1f FPS\n", - num_frames, time, msec_per_frame, frames_per_sec ); + num_frames, d_time, msec_per_frame, frames_per_sec ); } @@ -1068,47 +1128,6 @@ *h = lines * charscale; } -void DrawHUDString (char *string, int x, int y, int centerwidth, int xor) -{ - int margin; - char line[1024]; - int width; - int i; - int charscale; - - charscale = (float)(viddef.height)*8/600; - if(charscale < 8) - charscale = 8; - - margin = x; - - while (*string) - { - // scan out one line of text from the string - width = 0; - while (*string && *string != '\n') - line[width++] = *string++; - line[width] = 0; - - if (centerwidth) - x = margin + (centerwidth - width*charscale)/2; - else - x = margin; - for (i=0 ; isize; scale = charscale * 0.125; + + width = cl.refdef.width; + height = cl.refdef.height; + + x = left = cl.refdef.x; + y = ny = top = cl.refdef.y; + right = left+width; + bottom = top+height; + midx = left+width/2; + midy = top+height/2; + + if (width < 1024 || height < 768) + { + // Below 1024x768, start scaling things down to make sure everything + // fits. We scale x and y by the same amount to keep things square, + // but we figure out the ratios separately and use the ratio which + // results in the smallest scale. + float xscale, yscale; + xscale = (float)width/1024.0f; + yscale = (float)height/768.0f; + if (xscale < yscale) + scale *= xscale; + else + scale *= yscale; + } while (s) { @@ -1213,39 +1255,39 @@ if (!strcmp(token, "xl")) { token = COM_Parse (&s); - x = atoi(token)*scale; + x = left + atoi(token)*scale; continue; } if (!strcmp(token, "xr")) { token = COM_Parse (&s); - x = viddef.width + atoi(token)*scale; + x = right + atoi(token)*scale; continue; } if (!strcmp(token, "xv")) { token = COM_Parse (&s); - x = viddef.width/2 - 160*scale + atoi(token)*scale; + x = midx + (atoi(token) - 160)*scale; continue; } if (!strcmp(token, "yt")) { token = COM_Parse (&s); - y = atoi(token)*scale; + y = top + atoi(token)*scale; continue; } if (!strcmp(token, "yb")) { token = COM_Parse (&s); - y = viddef.height + atoi(token)*scale; + y = bottom + atoi(token)*scale; continue; } if (!strcmp(token, "yv")) { token = COM_Parse (&s); - y = viddef.height/2 - 100*scale + atoi(token)*scale; - ny = viddef.height/2 - 100*scale + atoi(token)*scale/2; + y = midy + (atoi(token) - 100)*scale; + ny = midy + (atoi(token)/2 - 100)*scale; continue; } @@ -1259,6 +1301,28 @@ if( cl.configstrings[CS_IMAGES+value][0] ) { Draw_ScaledPic (x, y, scale, cl.configstrings[CS_IMAGES+value]); + if(!strcmp(cl.configstrings[CS_IMAGES+value], "i_team1") || + !strcmp(cl.configstrings[CS_IMAGES+value], "i_team2")) + { + r_gotFlag = false; + r_lostFlag = true; + Cvar_Set("rs_hasflag", "0"); + if(!strcmp(cl.configstrings[CS_IMAGES+value], "i_team1")) + Cvar_Set("rs_team", "blue"); + else + Cvar_Set("rs_team", "red"); + } + else if(!strcmp(cl.configstrings[CS_IMAGES+value], "i_flag1") || + !strcmp(cl.configstrings[CS_IMAGES+value], "i_flag2")) + { + r_gotFlag = true; + r_lostFlag = false; + Cvar_Set("rs_hasflag", "1"); + if(!strcmp(cl.configstrings[CS_IMAGES+value], "i_flag1")) + Cvar_Set("rs_team", "blue"); + else + Cvar_Set("rs_team", "red"); + } } } @@ -1268,8 +1332,8 @@ if (!strcmp(token, "newsb")) { //print header here - x = viddef.width/2 - 160*scale; - y = viddef.height/2 - 64*scale; + x = midx - 160*scale; + y = midy - 64*scale; box.x = x + 4 * scale , box.y = y; FNT_RawPrint( font , "Player" , 6 , false , box.x , box.y , FNT_colors[ 7 ] ); @@ -1287,10 +1351,10 @@ if (!strcmp(token, "newctfsb")) { //print header here - x = viddef.width/2 - 256*scale; - y = viddef.height/2 - 72*scale; + x = midx - 256*scale; + y = midy - 72*scale; - while ( x <= viddef.width/2 ) { + while ( x <= midx ) { box.x = x + 14 * scale , box.y = y; FNT_RawPrint( font , "Player" , 6 , false , box.x , box.y , FNT_colors[ 7 ] ); box.x += 118 * scale , box.width = 56 * scale , box.height = 0; @@ -1312,12 +1376,12 @@ int timeColor; token = COM_Parse (&s); - x = viddef.width/2 - 160*scale + atoi(token)*scale; + x = midx + (atoi(token) - 160)*scale; token = COM_Parse (&s); if(newSBlayout) - y = viddef.height/2 - 100*scale + atoi(token)*scale/2; + y = midy + (atoi(token)/2 - 100)*scale; else - y = viddef.height/2 - 100*scale + atoi(token)*scale; + y = midy + (atoi(token) - 100)*scale; token = COM_Parse (&s); value = atoi(token); @@ -1396,13 +1460,13 @@ int team; token = COM_Parse (&s); - x = viddef.width/2 - 160*scale + atoi(token)*scale; + x = midx + (atoi(token) - 160)*scale; if(atoi(token) < 0) team = 0; else team = 1; token = COM_Parse (&s); - y = viddef.height/2 - 100*scale + atoi(token)*scale; + y = midy + (atoi(token) - 100)*scale; token = COM_Parse (&s); value = atoi(token); @@ -1458,10 +1522,10 @@ { // draw a number if(strcmp(cl_hudimage1->string, "none")) { token = COM_Parse (&s); - width = atoi(token); + numwidth = atoi(token); token = COM_Parse (&s); value = cl.frame.playerstate.stats[atoi(token)]; - SCR_DrawField (x, y, 0, width, value, scale); + SCR_DrawField (x, y, 0, numwidth, value, scale); } continue; @@ -1472,7 +1536,7 @@ if(strcmp(cl_hudimage1->string, "none")) { int color; - width = 3; + numwidth = 3; value = cl.frame.playerstate.stats[STAT_HEALTH]; if (value > 25) color = 0; // green @@ -1481,7 +1545,7 @@ else color = 1; - SCR_DrawField (x, y, color, width, value, scale); + SCR_DrawField (x, y, color, numwidth, value, scale); } //draw the zoom scope pic if we are using the zoom alt-fire of disruptor @@ -1489,7 +1553,7 @@ { char zoompic[32]; sprintf(zoompic, "zoomscope%i", cl.frame.playerstate.stats[STAT_ZOOMED]); - Draw_StretchPic (0, 0, viddef.width, viddef.height, zoompic); + Draw_StretchPic (left, top, width, height, zoompic); } continue; @@ -1500,7 +1564,7 @@ if(strcmp(cl_hudimage1->string, "none")) { int color; - width = 3; + numwidth = 3; value = cl.frame.playerstate.stats[STAT_AMMO]; if (value > 5) color = 0; // green @@ -1509,7 +1573,7 @@ else continue; // negative number = don't show - SCR_DrawField (x, y, color, width, value, scale); + SCR_DrawField (x, y, color, numwidth, value, scale); } continue; @@ -1520,14 +1584,14 @@ if(strcmp(cl_hudimage1->string, "none")) { int color; - width = 3; + numwidth = 3; value = cl.frame.playerstate.stats[STAT_ARMOR]; if (value < 1) continue; color = 0; // green - SCR_DrawField (x, y, color, width, value, scale); + SCR_DrawField (x, y, color, numwidth, value, scale); } continue; @@ -1552,7 +1616,11 @@ if (!strcmp(token, "cstring")) { token = COM_Parse (&s); - DrawHUDString (token, x, y, 320, 0); + box.width = 2*(x>midx?(right-x):x); + box.x = x-box.width/2; + box.y = y; + box.height = 0; + FNT_BoundedPrint( font , token , FNT_CMODE_NONE , FNT_ALIGN_CENTER , &box , FNT_colors[ 7 ] ); continue; } @@ -1561,7 +1629,7 @@ token = COM_Parse (&s); //this line is an Alien Arena specific hack of sorts, remove if needed if(!strcmp(token, "Vote")) - Draw_ScaledPic (viddef.width/2 - 85*scale, y-8*scale, scale, "votebox"); + Draw_ScaledPic (midx - 85*scale, y-8*scale, scale, "votebox"); FNT_RawPrint( font , token , strlen( token ) , false , x , y , FNT_colors[ 7 ] ); continue; } @@ -1569,7 +1637,11 @@ if (!strcmp(token, "cstring2")) { token = COM_Parse (&s); - DrawHUDString (token, x, y, 320,0x80); + box.width = 2*(x>midx?(right-x):x); + box.x = x-box.width/2; + box.y = y; + box.height = 0; + FNT_BoundedPrint( font , token , FNT_CMODE_NONE , FNT_ALIGN_CENTER , &box , FNT_colors[ 3 ] ); continue; } @@ -1713,99 +1785,236 @@ /* ================ -SCR_showFPS +SCR_showPerfTest ================ */ -int fpscounter; - -void SCR_showFPS(void) -{ - static qboolean restart = true; - static float update_trigger = 0.0f; - static float framecounter = 0.0f; - static int start_msec; - static char fps_text[32]; +perftest_t *get_perftest(char *name) { + int i; + perftest_t *test = NULL; + + for (i = 0; i < MAX_PERFTESTS; i++) { + if (!perftests[i].in_use) { + test = &perftests[i]; + break; + } + if (!strncmp(perftests[i].name, name, sizeof(perftests[i].name))) + return &perftests[i]; + } + + if (!test) + return NULL; //remember to handle this in your code! + + memset(test, 0, sizeof(perftest_t)); + + test->in_use = true; + strncpy (test->name, name, sizeof(test->name)); + + return test; +} +//slotnum is used for the vertical offset on the screen +void SCR_showPerfTest (perftest_t *test, int slotnum) { FNT_font_t font; - int end_msec; + int end_msec; float time_sec; - float framerate; + float rate; + int height; + + if (!test->in_use) + return; + + if (cls.key_dest == key_menu || cls.key_dest == key_console || !test->cvar->integer) { + test->restart = true; + return; + } + + if (test->restart) { + test->start_msec = Sys_Milliseconds(); + test->counter = 0.0f; + test->framecounter = 0.0f; + test->update_trigger = 10.0f; //initial delay to update + test->text[0] = 0; //blank the text buffer + test->restart = false; + return; + } + + test->framecounter += 1.0f; + if (test->framecounter >= test->update_trigger) { + end_msec = Sys_Milliseconds(); + time_sec = ((float)(end_msec - test->start_msec)) / 1000.0f; + if (test->is_timerate) { + //calculate rate to display + rate = test->scale * test->counter / time_sec; + } else { + rate = test->scale * test->counter; + } + + //update text buffer for display + Com_sprintf( test->text, sizeof(test->text), test->format, rate ); + + test->start_msec = end_msec; + if (test->is_timerate) + //setup for next update - 0.25 sec update interval + test->update_trigger = test->framecounter / (4.0 * time_sec); + else + //0.05 sec update interval + test->update_trigger = test->framecounter / (20.0 * time_sec); + test->framecounter = 0.0f; + test->counter = 0.0f; + } + + font = FNT_AutoGet( CL_gameFont ); - if (cls.key_dest == key_menu || cls.key_dest == key_console) { - restart = true; - return; - } + height = viddef.height - 2.0 * font->size * (slotnum + 1); + if (cl_drawtimer->integer) + height -= 5.25 * font->size; + FNT_RawPrint( font , test->text , strlen( test->text ) , false , + viddef.width - 8 * font->size , height, FNT_colors[ 2 ] ); +} - if( restart ) { - start_msec = Sys_Milliseconds(); - framecounter = 0.0f; - update_trigger = 10.0f; // initial delay to update - fps_text[0] = 0; // blank the text buffer - restart = false; - return; - } +void SCR_showAllPerfTests (void) { + int i, testsDrawn; + for (i = 0, testsDrawn = 0; i < MAX_PERFTESTS; i++) { + if (perftests[i].in_use && perftests[i].cvar->integer) { + SCR_showPerfTest (&perftests[i], testsDrawn); + testsDrawn++; + } + } +} - framecounter += 1.0f; - if( framecounter >= update_trigger ) { - // calculate frames-per-second - end_msec = Sys_Milliseconds(); - time_sec = ((float)(end_msec - start_msec)) / 1000.0f; - framerate = framecounter / time_sec ; +void SCR_showFPS(void) +{ + static perftest_t *test = NULL; + if (!test) { + test = get_perftest("fps"); + if (!test) + return; //couldn't acquire test + test->cvar = cl_drawfps; + test->is_timerate = true; + strcpy (test->format, "%3.0ffps"); + test->scale = 1.0f; + } + + test->counter += 1.0f; + +} + +// Shows kilobytes per second from the server +extern int c_incoming_bytes; +void SCR_showBandwidth (void) { + static perftest_t *test = NULL; + if (!test) { + test = get_perftest("bandwidth"); + if (!test) + return; //couldn't acquire test + test->is_timerate = true; + test->cvar = cl_drawbandwidth; + strcpy (test->format, "%2.2fkibps"); + test->scale = 1.0f/1024.0f; //the SI is wrong, it's 1024 + } + + test->counter += c_incoming_bytes; + c_incoming_bytes = 0; +} + +// Shows number of frames per second which took longer than a configurable +// amount of milliseconds. This is a useful measure of jitter, which isn't +// usually reflected in average FPS rates but which can still be visually +// annoying. +void SCR_showFramesOver (void) { + static perftest_t *test = NULL; + static int old_milliseconds = 0; + int new_milliseconds; + if (!test) { + test = get_perftest("framesover"); + if (!test) + return; //couldn't acquire test + test->is_timerate = true; + test->cvar = cl_drawframesover; + strcpy (test->format, "%3.0fjfps"); //jfps = jitter frames per second + test->scale = 1.0f; + old_milliseconds = Sys_Milliseconds(); + } + + new_milliseconds = Sys_Milliseconds(); + if ((new_milliseconds - old_milliseconds) > cl_drawframesover->integer) + test->counter++; + old_milliseconds = new_milliseconds; +} - // update text buffer for display - if ( cl_drawfps->integer == 2 ) - { // for developers - Com_sprintf( fps_text, sizeof(fps_text), "%3.1ffps", framerate ); +/** + * + * @brief Construct map-maker's "r_speed" performance counter displays + * + * the traditional r_speeds cvar is replaced by individual counter cvars, + * named "rspeed_*" + */ +static void show_rspeed_helper( + cvar_t* test_cvar, + perftest_t* test_obj, + char* test_name, + char* test_format, + int test_counter + ) +{ + if ( test_cvar && test_cvar->integer ) + { + if ( test_obj == NULL ) + { /* constructor */ + test_obj = get_perftest( test_name ); + if ( test_obj != NULL ) + { /* slot allocated, construct */ + test_obj->is_timerate = false; + test_obj->cvar = test_cvar; + strcpy( test_obj->format, test_format ); + test_obj->scale = 1.0f; + test_obj->counter = test_counter; + } + else + { /* no slot, force disable */ + (void)Cvar_ForceSet( test_cvar->name, "0" ); + } } else - { - Com_sprintf( fps_text, sizeof(fps_text), "%3.0ffps", framerate ); + { /* running, update counter from refresh counter */ + test_obj->counter = test_counter; } - - // setup for next update - framecounter = 0.0f; - start_msec = end_msec; - update_trigger = framerate / 2.0 ; // for .5 sec update interval } - - font = FNT_AutoGet( CL_gameFont ); - - FNT_RawPrint( font , fps_text , strlen( fps_text ) , false , - viddef.width - 8 * font->size , viddef.height - 2.0 * font->size , FNT_colors[ 2 ] ); } -/* - * SCR_ShowRSpeeds() - * display the cvar r_speeds activated performance counters - */ void SCR_showRSpeeds( void ) { - extern int c_brush_polys; - extern int c_alias_polys; - - FNT_font_t font; - struct FNT_window_s box; - char prtstring[32]; - float scale; - - if (cls.key_dest == key_menu || cls.key_dest == key_console) - return; - - scale = (float)(viddef.height)/600; - if(scale < 1) - scale = 1; + static perftest_t *test_wpoly = NULL; + static perftest_t *test_epoly = NULL; + static perftest_t *test_flares = NULL; + static perftest_t *test_grasses = NULL; + static perftest_t *test_beams = NULL; + static perftest_t *test_vbobatches = NULL; + static perftest_t *test_particles = NULL; + + show_rspeed_helper( rspeed_wpolys, test_wpoly, + "wpolys", "%5.0f wpolys", c_brush_polys ); + + show_rspeed_helper( rspeed_epolys, test_epoly, + "epolys", "%5.0f epolys", c_alias_polys ); + + show_rspeed_helper( rspeed_flares, test_flares, + "flares", "%5.0f flares", c_flares ); + + show_rspeed_helper( rspeed_grasses, test_grasses, + "grasses", "%5.0f grasses", c_grasses ); + + show_rspeed_helper( rspeed_beams, test_beams, + "beams", "%5.0f beams", c_beams ); + + show_rspeed_helper( rspeed_vbobatches, test_vbobatches, + "vbobatches", "%5.0f vbobatches", c_vbo_batches ); + + show_rspeed_helper( rspeed_particles, test_particles, + "particles", "%5.0f particles", cl.refdef.num_particles ); - Com_sprintf( prtstring, sizeof( prtstring ), - "%5.5i wpoly %5.5i epoly", c_brush_polys, c_alias_polys ); - - font = FNT_AutoGet( CL_consoleFont ); - box.x = 0; - box.y = viddef.height - 6 * font->size; - box.width = viddef.width; - box.height = 0; - FNT_BoundedPrint( font , prtstring , FNT_CMODE_NONE , FNT_ALIGN_CENTER , &box , FNT_colors[ 7 ] ); } /* @@ -1896,7 +2105,7 @@ SCR_CheckDrawIRCString(); if (scr_timegraph->value) - SCR_DebugGraph (cls.frametime*300, 0); + SCR_DebugGraph (cls.frametime*600, RGBA(0,0,0,1)); if (scr_debuggraph->value || scr_timegraph->value || scr_netgraph->value) SCR_DrawDebugGraph (); @@ -1912,19 +2121,28 @@ SCR_DrawLoading (); - if(cl_drawfps->value) + if(cl_drawfps->integer) { SCR_showFPS(); } - - if(cl_drawtimer->value) + + if(cl_drawbandwidth->integer) { - SCR_showTimer(); + SCR_showBandwidth(); } + + if(cl_drawframesover->integer) { - extern cvar_t* r_speeds; - if( r_speeds->value == 2 ) - SCR_showRSpeeds(); + SCR_showFramesOver(); + } + + SCR_showRSpeeds(); /* map-maker's performance counters */ + + SCR_showAllPerfTests(); + + if(cl_drawtimer->integer) + { + SCR_showTimer(); } SCR_DrawPlayerIcon(); } diff -Nru alien-arena-7.53+dfsg/source/client/cl_stats.c alien-arena-7.66+dfsg/source/client/cl_stats.c --- alien-arena-7.53+dfsg/source/client/cl_stats.c 2011-11-14 23:17:08.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_stats.c 2013-06-22 20:07:36.000000000 +0000 @@ -42,7 +42,7 @@ extern cvar_t *pw_hashed; static char szVerificationString[64]; -static char *cpr; // just for unused result warnings +static char *cpr; // mostly for unused result warnings static FILE* statsdb_open( const char* mode ) { @@ -100,7 +100,7 @@ PLAYERSTATS getPlayerRanking ( PLAYERSTATS player ) { FILE* file; - char name[32], points[32], frags[32], totalfrags[32], time[16], totaltime[16], ip[32], poll[16], remote_address[21]; + char name[34], points[32], frags[32], totalfrags[32], time[16], totaltime[16], ip[32], poll[16], remote_address[21]; int foundplayer = false; //open file, @@ -111,9 +111,17 @@ //parse it, and compare to player name while(player.ranking < 1000) { - //name + //name. upto 31 chars total, 15 are printable. + // fgets needs at least 33 chars. 31 + newline + terminating nul cpr = fgets(name, sizeof(name), file); - name[strlen(name) - 1] = 0; //truncate garbage byte + if ( cpr == NULL ) + { // end-of-file + break; + } + if ( name[strlen(name) - 1] == '\n' ) + { + name[strlen(name) - 1] = 0; //truncate garbage byte + } //remote address cpr = fgets(remote_address, sizeof(remote_address), file); //points @@ -146,6 +154,7 @@ } if(!foundplayer) { + player.ranking = 1000; player.totalfrags = 0; player.totaltime = 1; } diff -Nru alien-arena-7.53+dfsg/source/client/cl_tent.c alien-arena-7.66+dfsg/source/client/cl_tent.c --- alien-arena-7.53+dfsg/source/client/cl_tent.c 2011-06-24 20:20:33.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_tent.c 2013-06-22 20:07:36.000000000 +0000 @@ -126,6 +126,8 @@ { s->id = 25; //unused for now s->count = MSG_ReadByte (&net_message); + if (!s->count) + s->count = 32; MSG_ReadPos (&net_message, s->org); MSG_ReadDir (&net_message, s->dir); @@ -152,7 +154,7 @@ s->magnitude = 30; s->endtime = cl.time + 10000000; s->think = CL_ParticleSteamEffect; - s->thinkinterval = 1; + s->thinkinterval = 512/s->count; //~ 60 fps s->nextthink = cl.time; } else @@ -200,7 +202,7 @@ s->magnitude = 150;//MSG_ReadShort (&net_message); s->endtime = cl.time + 10000000;//MSG_ReadLong (&net_message); s->think = CL_ParticleFireEffect2; - s->thinkinterval = 1; + s->thinkinterval = 16; //~ 60 fps s->nextthink = cl.time; } else @@ -252,7 +254,7 @@ s->magnitude = 400;//MSG_ReadShort (&net_message); s->endtime = cl.time + 10000000;//MSG_ReadLong (&net_message); s->think = CL_ParticleSmokeEffect2; - s->thinkinterval = 1; + s->thinkinterval = 16; //~ 60 fps s->nextthink = cl.time; } else @@ -560,7 +562,7 @@ for (i=0, s=cl_sustains; i< MAX_SUSTAINS; i++, s++) { - if (s->id) + if (s->id && CM_inPVS (cl.refdef.vieworg, s->org)) { if ((s->endtime >= cl.time) && (cl.time >= s->nextthink)) { diff -Nru alien-arena-7.53+dfsg/source/client/cl_updates.c alien-arena-7.66+dfsg/source/client/cl_updates.c --- alien-arena-7.53+dfsg/source/client/cl_updates.c 2011-11-10 07:39:12.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_updates.c 2013-06-22 20:07:36.000000000 +0000 @@ -21,48 +21,191 @@ #include "config.h" #endif -#include "client.h" - #if defined HAVE_UNISTD_H #include #endif - +#include #include "curl/curl.h" -CURLM *curlm; -CURL *curl; + +#include "client.h" extern cvar_t *cl_latest_game_version_url; +static char versionstr[32]; +static size_t versionstr_sz = 0; -static char *versionstr; -static size_t versionstr_sz; +struct dotted_triple +{ + unsigned long major; + unsigned long minor; + unsigned long point; +}; +static struct dotted_triple this_version; +static struct dotted_triple latest_version; +static char update_notice[256]; + + +/** + * + * valid dotted version numbers + * double <0..99>.<0..99> (.point is 0) + * triple <0..99>.<0..99>.<1..99> + * with the exceptions: 0.0 and 0.0.d are not valid + * + * @param vstring string from server + * @param version_out parsed dotted triple output + * @return true if valid, false otherwise + */ +static qboolean parse_version( const char* vstring, struct dotted_triple *version_out ) +{ + char* pch_start; + char* pch_end; + qboolean valid_version = false; + unsigned long major; + unsigned long minor; + unsigned long point; + + pch_start = (char*)vstring; + if ( isdigit( *pch_start ) ) + { + major = strtoul( vstring, &pch_end, 10 ); + if ( major <= 99UL && *pch_end == '.' ) + { + pch_start = pch_end + 1; + if ( isdigit( *pch_start ) ) + { + minor = strtoul( pch_start, &pch_end, 10 ); + if ( ((major >= 1UL && minor >= 0UL) || + (major == 0UL && minor >= 1UL)) && minor <= 99UL ) + { + if ( *pch_end == '.' ) + { + pch_start = pch_end + 1; + if ( isdigit( *pch_start ) ) + { + point = strtoul( pch_start, &pch_end, 10 ); + if ( point >= 1UL && point <= 99UL && *pch_end == '\0') + { /* valid x.y.z */ + version_out->major = major; + version_out->minor = minor; + version_out->point = point; + valid_version = true; + } + } + } + else if ( *pch_end == '\0' ) + { /* valid x.y */ + version_out->major = major; + version_out->minor = minor; + version_out->point = 0UL; + valid_version = true; + } + } + } + } + } + + return valid_version; +} -static char* extend_versionstr ( size_t bytecount ) +/** + * Compare dotted triple structs + * + * @param version1 Dotted triple struct + * @param version2 Dotted triple struct + * @return True if version2 newer than version1, false otherwise + * + */ +static qboolean compare_version (const struct dotted_triple *version1, const struct dotted_triple *version2) { - size_t cur_sz = versionstr_sz; - if ( cur_sz ){ - versionstr_sz += bytecount; - versionstr = realloc ( versionstr, versionstr_sz ); - if (!versionstr) - return versionstr; - return versionstr+cur_sz; - } - versionstr_sz = bytecount; - versionstr = malloc ( versionstr_sz ); - return versionstr; + if ( version1->major < version2->major ) + { + return true; + } + if ( version1->major == version2->major + && version1->minor < version2->minor ) + { + return true; + } + if ( version1->major == version2->major + && version1->minor == version2->minor + && version1->point < version2->point ) + { + return true; + } + return false; +} + +/** + * generate a version update notice, or nul the string + * see VersionUpdateNotice() below + * + * @param vstring the latest version from the server + * + */ +static void update_version( const char* vstring ) +{ + qboolean valid_version; + qboolean update_message = false; + + valid_version = parse_version( vstring, &latest_version ); + if ( valid_version ) + { /* valid from server */ + valid_version = parse_version( VERSION, &this_version ); + if ( valid_version ) + { /* local should always be valid */ + update_message = compare_version (&this_version, &latest_version); + } + } + if ( update_message ) + { + char this_string[16]; + char latest_string[16]; + + if ( latest_version.point == 0UL ) + { /* x.y */ + Com_sprintf( latest_string, sizeof(latest_string), "%d.%d", + latest_version.major, latest_version.minor ); + } + else + { /* x.y.z */ + Com_sprintf( latest_string, sizeof(latest_string), "%d.%d.%d", + latest_version.major, latest_version.minor, latest_version.point ); + } + if ( this_version.point == 0UL ) + { /* x.y */ + Com_sprintf( this_string, sizeof(this_string), "%d.%d", + this_version.major, this_version.minor ); + } + else + { /* x.y.z */ + Com_sprintf( this_string, sizeof(this_string), "%d.%d.%d", + this_version.major, this_version.minor, this_version.point ); + } + Com_sprintf( update_notice, sizeof(update_notice), + "version %s available (%s currently installed)", + latest_string, this_string ); + } + else + { /* not available */ + update_notice[0] = '\0'; + } } static size_t write_data(const void *buffer, size_t size, size_t nmemb, void *userp) { - char *buffer_pos; size_t bytecount = size*nmemb; - buffer_pos = extend_versionstr ( bytecount ); - if (!buffer_pos) - return 0; - - memcpy ( buffer_pos, buffer, bytecount ); - buffer_pos[bytecount] = 0; + if ( (versionstr_sz + bytecount) < sizeof(versionstr) ) + { + memcpy( &versionstr[versionstr_sz], buffer, bytecount ); + versionstr_sz += bytecount; + versionstr[versionstr_sz] = 0; + } + else + { + bytecount = 0; // will cause curl to return an error + } return bytecount; } @@ -72,27 +215,66 @@ char url[128]; CURL* easyhandle; - easyhandle = curl_easy_init() ; + memset( versionstr, 0, sizeof(versionstr) ); + versionstr_sz = 0; - versionstr_sz = 0; + easyhandle = curl_easy_init() ; Com_sprintf(url, sizeof(url), "%s", cl_latest_game_version_url->string); - curl_easy_setopt( easyhandle, CURLOPT_URL, url ) ; + if (curl_easy_setopt( easyhandle, CURLOPT_URL, url ) != CURLE_OK) return ; // time out in 5s - curl_easy_setopt(curl, CURLOPT_CONNECTTIMEOUT, 5); + if (curl_easy_setopt(easyhandle, CURLOPT_CONNECTTIMEOUT, 5) != CURLE_OK) return ; + + if (curl_easy_setopt( easyhandle, CURLOPT_WRITEFUNCTION, write_data ) != CURLE_OK) return ; - curl_easy_setopt( easyhandle, CURLOPT_WRITEFUNCTION, write_data ) ; + if (curl_easy_perform( easyhandle ) != CURLE_OK) return; - curl_easy_perform( easyhandle ); + (void)curl_easy_cleanup( easyhandle ); - curl_easy_cleanup( easyhandle ); + update_version( versionstr ); +} - if ( versionstr ){ - if ( atof ( versionstr ) ) - Cvar_SetValue ( "cl_latest_game_version", atof ( versionstr ) ); - free ( versionstr ); - } +/** + * + * @returns NULL if program is latest version, pointer to update notice otherwise + */ +char* VersionUpdateNotice( void ) +{ + if ( update_notice[0] == '\0' ) + return NULL; + else + return update_notice; +} +/** + * + * @param server_vstring the version string from a remote game server + * @returns True if the the server is out of date or if the string is malformed, false otherwise. + * + * NOTE: getLatestGameVersion has to have been called at least once before + * calling this! + */ +qboolean serverIsOutdated (char *server_vstring){ + char *end; + struct dotted_triple server_version; + qboolean valid_version; + + // have to get rid of everything after the first space + memset( versionstr, 0, sizeof(versionstr) ); + + strncpy (versionstr, server_vstring, sizeof(versionstr)); + + end = strchr (versionstr, ' '); + if (end != NULL) + *end = '\0'; + + valid_version = parse_version( versionstr, &server_version ); + + // assume it's out of date if the version string is malformed + if (!valid_version) + return true; + + return compare_version (&server_version, &latest_version); } diff -Nru alien-arena-7.53+dfsg/source/client/cl_view.c alien-arena-7.66+dfsg/source/client/cl_view.c --- alien-arena-7.53+dfsg/source/client/cl_view.c 2011-09-29 04:36:34.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/cl_view.c 2013-06-22 20:07:36.000000000 +0000 @@ -33,9 +33,6 @@ struct model_s *gun_model; //============= -int r_numflares; -flare_t r_flares[MAX_FLARES]; - int r_numgrasses; grass_t r_grasses[MAX_GRASSES]; @@ -44,7 +41,7 @@ extern cvar_t *cl_showPlayerNames; extern cvar_t *name; -extern char map_music[128]; +extern char map_music[260]; extern cvar_t *background_music; extern qboolean IsVisible(vec3_t org1,vec3_t org2); extern void R_VCFreeFrame(void); @@ -139,30 +136,13 @@ ===================== */ +extern cvar_t *gl_dynamic; void V_AddLight (vec3_t org, float intensity, float r, float g, float b) { dlight_t *dl; - if (r_numdlights >= MAX_DLIGHTS) + if (gl_dynamic->integer == 0) return; - dl = &r_dlights[r_numdlights++]; - VectorCopy (org, dl->origin); - dl->intensity = intensity; - dl->color[0] = r; - dl->color[1] = g; - dl->color[2] = b; - dl->team = 0; //added for team lights -} -/* -===================== -V_AddTeamLight - -===================== -*/ -void V_AddTeamLight (vec3_t org, float intensity, float r, float g, float b, int team) -{ - dlight_t *dl; - if (r_numdlights >= MAX_DLIGHTS) return; dl = &r_dlights[r_numdlights++]; @@ -171,7 +151,6 @@ dl->color[0] = r; dl->color[1] = g; dl->color[2] = b; - dl->team = team; } /* @@ -201,30 +180,13 @@ If cl_testparticles is set, create 4096 particles in the view ================ */ +void CL_LogoutEffect (vec3_t org, int type); void V_TestParticles (void) { -#if 0 -//TODO: this will probably need moving to cl_fx.c and to use new_particle - particle_t *p; - int i, j; - float d, r, u; - - r_numparticles = MAX_PARTICLES; - for (i=0 ; i>3)&7)-3.5); - p = &r_particles[i]; - - for (j=0 ; j<3 ; j++) - p->current_origin[j] = cl.refdef.vieworg[j] + cl.v_forward[j]*d + - cl.v_right[j]*r + cl.v_up[j]*u; - - p->current_color = 8; - p->current_alpha = cl_testparticles->value; - } -#endif + vec3_t org; + + VectorMA (cl.refdef.vieworg, 128, cl.v_forward, org); + CL_LogoutEffect (org, MZ_LOGOUT); } /* @@ -595,8 +557,11 @@ SCR_DrawCrosshair ================= */ -void SCR_DrawCrosshair (void) +extern cvar_t *hand; +void SCR_DrawCrosshair (refdef_t *fd) { + int x, y, crosshairposition; + if (!strcmp(crosshair->string, "none")) return; @@ -609,8 +574,44 @@ if (!crosshair_pic[0]) return; - Draw_Pic (scr_vrect.x + ((scr_vrect.width - crosshair_width)>>1) - , scr_vrect.y + ((scr_vrect.height - crosshair_height)>>1), crosshair_pic); + x = fd->x + ((fd->width - crosshair_width)>>1); + y = fd->y + ((fd->height - crosshair_height)>>1); + + // get rid of the old crosshair adjustment built into the texture + x -= 4; + y -= 4; + + // add a new crosshair adjustment offset + crosshairposition = cl.frame.playerstate.stats[STAT_FLAGS] & STAT_FLAGS_CROSSHAIRPOSITION; + if (crosshairposition != STAT_FLAGS_CROSSHAIRCENTER) + { + double x_offs, y_offs; + switch (crosshairposition) + { + default: // other crosshair positions reserved for future use + case STAT_FLAGS_CROSSHAIRPOS1: // use the original default + x_offs = y_offs = 4.0; + break; + case STAT_FLAGS_CROSSHAIRPOS2: + x_offs = 2.0; + y_offs = 3.0; + break; + } + y_offs *= (double)fd->height/480.0; + x_offs *= (double)fd->width/640.0; + if (y_offs-(int)y_offs >= 0.5) + y_offs = (int)y_offs + 1; + if (x_offs-(int)x_offs >= 0.5) + x_offs = (int)x_offs + 1; + if (hand->integer == 1) + x_offs = -x_offs; + else if (hand->integer == 2) + x_offs = 0; + x += x_offs; + y += y_offs; + } + + Draw_Pic (x, y, crosshair_pic); } qboolean InFront (vec3_t target) @@ -802,6 +803,10 @@ ================== */ +extern cvar_t *scr_netgraph; +extern cvar_t *scr_timegraph; +extern cvar_t *scr_debuggraph; +extern cvar_t *scr_graphheight; void V_RenderView( float stereo_separation ) { extern int entitycmpfnc( const entity_t *, const entity_t * ); @@ -812,11 +817,17 @@ if (!cl.refresh_prepped) return; // still loading - if (cl_timedemo->value) + if ( cl_timedemo && cl_timedemo->integer ) { - if (!cl.timedemo_start) + if ( cl.timedemo_start > 0 ) + { /* frame counter increment for timedemo benchmark */ + cl.timedemo_frames++; + } + else + { /* time demo start trigger */ cl.timedemo_start = Sys_Milliseconds (); - cl.timedemo_frames++; + cl.timedemo_frames = 0; + } } // an invalid frame will just use the exact previous refdef @@ -864,6 +875,10 @@ cl.refdef.y = scr_vrect.y; cl.refdef.width = scr_vrect.width; cl.refdef.height = scr_vrect.height; + + if (scr_debuggraph->integer || scr_timegraph->integer || scr_netgraph->integer) + cl.refdef.height -= scr_graphheight->integer; + cl.refdef.fov_y = CalcFov (cl.refdef.fov_x, cl.refdef.width, cl.refdef.height); cl.refdef.time = cl.time*0.001; @@ -891,8 +906,6 @@ cl.refdef.num_dlights = r_numdlights; cl.refdef.dlights = r_dlights; cl.refdef.lightstyles = r_lightstyles; - cl.refdef.num_flares = r_numflares; - cl.refdef.flares = r_flares; cl.refdef.num_grasses = r_numgrasses; cl.refdef.grasses = r_grasses; cl.refdef.num_beams = r_numbeams; @@ -918,7 +931,7 @@ fprintf( log_stats_file, "%i,%i,%i,",r_numentities, r_numdlights, r_numparticles); - SCR_DrawCrosshair (); + SCR_DrawCrosshair (&cl.refdef); if(cl_showPlayerNames->integer) { if(cl_showPlayerNames->integer == 2) diff -Nru alien-arena-7.53+dfsg/source/client/console.c alien-arena-7.66+dfsg/source/client/console.c --- alien-arena-7.53+dfsg/source/client/console.c 2010-12-07 07:21:54.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/console.c 2013-08-19 03:26:16.000000000 +0000 @@ -481,7 +481,7 @@ // "Print" the line outside of the screen struct FNT_window_s box; box.x = 0 , box.y = viddef.height; - box.width = viddef.width - font->size * 3 , box.height = 0; + box.width = viddef.width - font->size * 5 , box.height = 0; if ( CON_console.lCount[ line ] == 1 ) { FNT_WrappedPrint( font , CON_console.text[ line ] , FNT_CMODE_QUAKE_SRS , @@ -578,9 +578,9 @@ do { if ( total + CON_console.heights[ line ] >= start && CON_console.text[ line ][ 0 ] ) { - box.x = font->size; + box.x = font->size*2; box.y = total - start; - box.width = viddef.width - font->size * 3; + box.width = viddef.width - font->size * 5; box.height = 0; if ( CON_console.lCount[ line ] == 1 ) { @@ -627,32 +627,39 @@ int text_height , int display_height ) { - int hStart = viddef.width - 3 * font_size / 2; + // FIXME: lots of copy-pasted code here. Doesn't matter, we will + // eventually redo the whole console using the menu code. + + int hStart = viddef.width - 3 * font_size; int vStart = font_size / 2; int tHeight = display_height - font_size; int bHeight , bStart; - - Draw_Fill( hStart - 1 , vStart - 1 , font_size + 2 , tHeight + 2 , 15 ); - - if ( display_height >= text_height ) { + + Draw_AlphaStretchTilingPic (hStart, vStart, font_size, font_size, "menu/scroll_border_end", 1); + Draw_AlphaStretchTilingPic (hStart, vStart+font_size, font_size, tHeight-vStart, "menu/scroll_border", 1); + Draw_AlphaStretchTilingPic (hStart+font_size, vStart+tHeight+font_size, -font_size, -font_size, "menu/scroll_border_end", 1); + + if ( display_height >= text_height ) + { // Fill whole bar - Draw_Fill( hStart , vStart , font_size , tHeight , 208 ); - return; + bStart = vStart; + bHeight = tHeight; } - - bHeight = tHeight * display_height / text_height; - if ( bHeight < font_size / 2 ) { - bHeight = font_size / 2; + else + { + bHeight = tHeight * display_height / text_height; + if ( bHeight < font_size ) + bHeight = font_size; + // "Top" offset is height - dHeight, "bottom" offset is 0 + // "Top" bar location is vStart, bottom location is vStart + tHeight - bHeight. + bStart = vStart + ( tHeight - bHeight ) + * ( CON_console.displayOffset - text_height + display_height ) + / ( display_height - text_height ); } - - // "Top" offset is height - dHeight, "bottom" offset is 0 - // "Top" bar location is vStart, bottom location is vStart + tHeight - bHeight. - bStart = vStart + ( tHeight - bHeight ) - * ( CON_console.displayOffset - text_height + display_height ) - / ( display_height - text_height ); - - Draw_Fill( hStart , vStart , font_size , tHeight , 201 ); - Draw_Fill( hStart , bStart , font_size , bHeight , 208 ); + + Draw_AlphaStretchTilingPic (hStart, bStart, font_size, font_size, "menu/scroll_cursor_end", 1); + Draw_AlphaStretchTilingPic (hStart, bStart+font_size, font_size, bHeight-font_size, "menu/scroll_cursor", 1); + Draw_AlphaStretchTilingPic (hStart+font_size, bStart+bHeight+font_size, -font_size, -font_size, "menu/scroll_cursor_end", 1); } @@ -704,7 +711,7 @@ box.y = inputY; box.height = 0; text[ key_linepos ] = 0; - if ( wToCursor + font->size * 3 < viddef.width ) { + if ( wToCursor + font->size * 5 < viddef.width ) { // There is enough space for the start of the line align = FNT_ALIGN_LEFT; } else { @@ -717,14 +724,14 @@ // Draw cursor if ( ( (int)( cls.realtime >> 8 ) & 1) != 0 ) { - Draw_Fill( box.x + box.width + 1 , box.y + 1 , font->size - 2 , font->size - 2 , 208 ); + Draw_Fill (box.x + box.width + 1 , box.y + 1 , font->size - 2 , font->size - 2 , RGBA(0,1,0,1)); } // Draw whatever is after the cursor if ( wAfterCursor ) { text[ key_linepos ] = old; box.x += box.width + font->size; - box.width = viddef.width - ( box.width + font->size * 3 ); + box.width = viddef.width - ( box.width + font->size * 5 ); box.height = 0; FNT_BoundedPrint( font , text + key_linepos , FNT_CMODE_QUAKE_SRS , FNT_ALIGN_LEFT , &box , FNT_colors[ 2 ] ); } @@ -755,7 +762,7 @@ // Draw version string sz = sizeof( VERSION ); FNT_RawPrint( font , VERSION , sz , false , - viddef.width - font->size * 3 * sz / 2 , y , FNT_colors[ 7 ] ); + viddef.width - font->size * 5 * sz / 2 , y , FNT_colors[ 7 ] ); // Draw download status if needed if ( ! ( cls.download && ( kb = (int)ftell( cls.download ) / 1024 ) ) ) { @@ -797,7 +804,29 @@ // Compute display height and draw background dHeight = viddef.height * relSize; - Draw_StretchPic( 0 , dHeight - viddef.height , viddef.width , viddef.height , "conback" ); + + // FIXME: lots of copy-pasted code here. Doesn't matter, we will + // eventually redo the whole console using the menu code. + { + int _tile_w, _tile_h; + float tile_w, tile_h; + + // assume all tiles are the same size + Draw_GetPicSize (&_tile_w, &_tile_h, "menu/m_topcorner" ); + + tile_w = (float)_tile_w/64.0*(float)font->size*4.0; + tile_h = (float)_tile_h/64.0*(float)font->size*4.0; + + + Draw_AlphaStretchTilingPic( -tile_w/4, dHeight-tile_h/2, tile_w, tile_h, "menu/m_bottomcorner", 1 ); + Draw_AlphaStretchTilingPic( viddef.width+tile_w/4, dHeight-tile_h/2, -tile_w, tile_h, "menu/m_bottomcorner", 1 ); + + Draw_AlphaStretchTilingPic( tile_w*0.75, dHeight-tile_h/2, viddef.width-tile_w*1.5, tile_h, "menu/m_bottom", 1 ); + + Draw_AlphaStretchTilingPic( -tile_w/4, 0, tile_w, dHeight-tile_h/2, "menu/m_side", 1 ); + Draw_AlphaStretchTilingPic( viddef.width+tile_w/4, 0, -tile_w, dHeight-tile_h/2, "menu/m_side", 1 ); + Draw_AlphaStretchTilingPic( tile_w*0.75, 0, viddef.width-tile_w, dHeight-tile_h/2, "menu/m_background", 1 ); + } // Draw version string and download status dHeight = _CON_DrawConsoleBottom( dHeight ) - fontSize; diff -Nru alien-arena-7.53+dfsg/source/client/menu.c alien-arena-7.66+dfsg/source/client/menu.c --- alien-arena-7.53+dfsg/source/client/menu.c 2011-12-23 18:04:41.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/menu.c 2013-08-19 03:26:16.000000000 +0000 @@ -1,6 +1,6 @@ /* Copyright (C) 1997-2001 Id Software, Inc. -Copyright (C) 2005-2011 COR Entertainment, LLC. +Copyright (C) 2005-2013 COR Entertainment, LLC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -50,201 +50,779 @@ static int m_main_cursor; +extern int CL_GetPingStartTime(netadr_t adr); + extern void RS_LoadScript(char *script); extern void RS_LoadSpecialScripts(void); extern void RS_ScanPathForScripts(void); +extern void RS_FreeUnmarked (void); +extern void SCR_DrawCenterString (void); extern cvar_t *scriptsloaded; -extern char map_music[128]; +#if defined WIN32_VARIANT +extern char map_music[MAX_PATH]; +#else +extern char map_music[MAX_OSPATH]; +#endif extern cvar_t *background_music; extern cvar_t *background_music_vol; -extern cvar_t *dedicated; -extern cvar_t *cl_drawfps; -extern cvar_t *cl_drawtimer; extern cvar_t *fov; extern cvar_t *stats_password; -extern cvar_t *old_password; -extern cvar_t *pw_hashed; static char *menu_in_sound = "misc/menu1.wav"; static char *menu_move_sound = "misc/menu2.wav"; static char *menu_out_sound = "misc/menu3.wav"; -// static char *menu_background = "misc/menuback.wav"; // unused -int svridx; -int playeridx; -int modidx; -int hover_time; -float mappicalpha; -float banneralpha; -float mainalpha; -int montagepic = 1; -int pNameUnique; + +#define PLAYER_NAME_UNIQUE (strcmp (Cvar_VariableString ("name"), "Player") != 0) + +void SetCrosshairNames (char **list); +void SetHudNames (char **list); +void SetFontNames (char **list); void M_Menu_Main_f (void); - void M_Menu_PlayerConfig_f (void); - void M_Menu_Game_f (void); - void M_Menu_Credits_f( void ); - void M_Menu_JoinServer_f (void); - void M_Menu_AddressBook_f( void ); - void M_Menu_PlayerRanking_f( void ); - void M_Menu_StartServer_f (void); - void M_Menu_DMOptions_f (void); - void M_Menu_IRC_f (void); - void M_Menu_IRCSettings_f (void); - void M_Menu_Video_f (void); - void M_Menu_Options_f (void); - void M_Menu_Keys_f (void); - void M_Menu_Quit_f (void); + static void M_Menu_PlayerConfig_f (void); + static void M_Menu_Game_f (void); + static void M_Menu_Credits_f( void ); + static void M_Menu_JoinServer_f (void); + static void M_Menu_AddressBook_f( void ); + static void M_Menu_PlayerRanking_f( void ); + static void M_Menu_Tactical_f( void ); + static void M_Menu_StartServer_f (void); + static void M_Menu_BotOptions_f (void); + static void M_Menu_IRC_f (void); + static void M_Menu_Options_f (void); + static void M_Menu_Video_f (void); + static void M_Menu_Keys_f (void); + static void M_Menu_Quit_f (void); - void M_Menu_Credits( void ); + static void M_Menu_Credits( void ); qboolean m_entersound; // play after drawing a frame, so caching // won't disrupt the sound -void (*m_drawfunc) (void); -const char *(*m_keyfunc) (int key); - static size_t szr; // just for unused result warnings -//============================================================================= -/* Support Routines */ -#define MAX_MENU_DEPTH 8 +// common callbacks +static void StrFieldCallback( void *_self ) +{ + menufield_s *self = (menufield_s *)_self; + Cvar_Set( self->generic.localstrings[0], self->buffer); +} -typedef struct +static void IntFieldCallback( void *_self ) { - void (*draw) (void); - const char *(*key) (int k); -} menulayer_t; + menufield_s *self = (menufield_s *)_self; + Cvar_SetValue( self->generic.localstrings[0], atoi(self->buffer)); +} -menulayer_t m_layers[MAX_MENU_DEPTH]; -int m_menudepth; +static menuvec2_t PicSizeFunc (void *_self, FNT_font_t font) +{ + menuvec2_t ret; + menuitem_s *self = (menuitem_s *)_self; + + ret.x = ret.y = 0; + + // Determine if pic exists, if not return 0 size. + // However, we give the benefit of the doubt if the name isn't there, and + // assume it will be. + if (self->generic.localstrings[0] == NULL || Draw_PicExists (self->generic.localstrings[0])) + { + ret.x = self->generic.localints[0]*font->size; + ret.y = self->generic.localints[1]*font->size; + ret.x += self->generic.localints[2]; + } + + return ret; +} -static void M_Banner( char *name, float alpha ) +// most useful if this element will always draw the same pic +static void PicDrawFunc (void *_self, FNT_font_t font) { - int w, h; - float scale; + int x, y; + menuitem_s *self = (menuitem_s *)_self; + + x = Item_GetX (*self) + self->generic.localints[2]; + y = Item_GetY (*self); + + Draw_StretchPic (x, y, font->size*self->generic.localints[0], font->size*self->generic.localints[1], self->generic.localstrings[0]); +} + +// for spin controls where each item is a texture path +static menuvec2_t PicSpinSizeFunc (void *_self, FNT_font_t font) +{ + menuvec2_t ret; + menulist_s *self = (menulist_s *)_self; + + ret.x = self->generic.localints[0]*font->size; + ret.y = self->generic.localints[1]*font->size; + ret.x += self->generic.localints[2]; + + return ret; +} - scale = (float)(viddef.height)/600; +static void PicSpinDrawFunc (void *_self, FNT_font_t font) +{ + int x, y; + menulist_s *self = (menulist_s *)_self; + + x = Item_GetX (*self); + y = Item_GetY (*self); + x += self->generic.localints[2]; + + if (strlen(self->itemnames[self->curvalue]) > 0) + Draw_StretchPic (x, y,font->size*self->generic.localints[0], font->size*self->generic.localints[1], self->itemnames[self->curvalue]); +} - Draw_GetPicSize (&w, &h, name ); - w*=scale; - h*=scale; +// name lists: list of strings terminated by 0 - Draw_AlphaStretchPic( viddef.width / 2 - (w / 2), viddef.height / 2 - 260*scale, w, h, name, alpha ); +static const char *onoff_names[] = +{ + "", + "menu/on", + 0 +}; -} -static void M_MapPic( char *name, float alpha ) +// when you want 0 to be on +static const char *offon_names[] = { - int w, h; - float scale; + "menu/on", + "", + 0 +}; - scale = (float)(viddef.height)/600; +static menuvec2_t IconSpinSizeFunc (void *_self, FNT_font_t font) +{ + menuvec2_t ret; + menulist_s *self = (menulist_s *)_self; + + ret.x = ret.y = font->size; + ret.x += RCOLUMN_OFFSET; + if ((self->generic.flags & QMF_RIGHT_COLUMN)) + ret.x += Menu_PredictSize (self->generic.name); + return ret; +} - w = h = 128*scale; - Draw_AlphaStretchPic (viddef.width / 2 - w + 240*scale, viddef.height / 2 - 140*scale, w, h, name, alpha); +static void IconSpinDrawFunc (void *_self, FNT_font_t font) +{ + int x, y; + menulist_s *self = (menulist_s *)_self; + + x = Item_GetX (*self)+RCOLUMN_OFFSET; + y = Item_GetY (*self)+MenuText_UpperMargin (self, font->size); + if ((self->generic.flags & QMF_RIGHT_COLUMN)) + x += Menu_PredictSize (self->generic.name); + Draw_AlphaStretchPic ( + x, y, font->size, font->size, "menu/icon_border", + self->generic.highlight_alpha*self->generic.highlight_alpha + ); + if (strlen(self->itemnames[self->curvalue]) > 0) + Draw_AlphaStretchPic (x, y, font->size, font->size, self->itemnames[self->curvalue], self->generic.highlight_alpha); +} + +#define setup_tickbox(spinctrl) \ +{ \ + (spinctrl).generic.type = MTYPE_SPINCONTROL; \ + (spinctrl).generic.itemsizecallback = IconSpinSizeFunc; \ + (spinctrl).generic.itemdraw = IconSpinDrawFunc; \ + (spinctrl).itemnames = onoff_names; \ + (spinctrl).generic.flags |= QMF_ALLOW_WRAP; \ + (spinctrl).curvalue = 0; \ +} + +static void RadioSpinDrawFunc (void *_self, FNT_font_t font) +{ + int x, y; + menulist_s *self = (menulist_s *)_self; + + x = Item_GetX (*self)+RCOLUMN_OFFSET; + y = Item_GetY (*self)+MenuText_UpperMargin (self, font->size); + if ((self->generic.flags & QMF_RIGHT_COLUMN)) + x += Menu_PredictSize (self->generic.name); + Draw_AlphaStretchPic ( + x, y, font->size, font->size, "menu/radio_border", + self->generic.highlight_alpha*self->generic.highlight_alpha + ); + if (strlen(self->itemnames[self->curvalue]) > 0) + Draw_AlphaStretchPic (x, y, font->size, font->size, self->itemnames[self->curvalue], self->generic.highlight_alpha); +} + +#define setup_radiobutton(spinctrl) \ +{ \ + (spinctrl).generic.type = MTYPE_SPINCONTROL; \ + (spinctrl).generic.itemsizecallback = IconSpinSizeFunc; \ + (spinctrl).generic.itemdraw = RadioSpinDrawFunc; \ + (spinctrl).itemnames = onoff_names; \ + (spinctrl).generic.flags |= QMF_ALLOW_WRAP; \ + (spinctrl).curvalue = 0; \ +} + +#define setup_nth_window(parent,n,window,title) \ +{ \ + (parent).nitems = n; \ + (parent).num_apply_pending = 0; \ + \ + (window).generic.type = MTYPE_SUBMENU; \ + (window).navagable = true; \ + (window).nitems = 0; \ + (window).bordertitle = title; \ + (window).bordertexture = "menu/m_"; \ + \ + Menu_AddItem (&(parent), &(window)); \ +} + +#define setup_window(parent,window,title) setup_nth_window(parent,0,window,title) + +#define setup_panel(parent,panel) \ +{ \ + (panel).generic.type = MTYPE_SUBMENU; \ + (panel).generic.flags = QMF_SNUG_LEFT; \ + (panel).navagable = true; \ + (panel).nitems = 0; \ + (panel).bordertexture = "menu/sm_"; \ + Menu_AddItem (&(parent), &(panel)); \ +} + +// if you just want to add some text to a menu and never need to refer to it +// again (don't use inside a loop!) +#define add_text(menu,text,itflags) \ +{\ + static menutxt_s it; \ + it.generic.type = MTYPE_TEXT; \ + it.generic.flags = (itflags); \ + it.generic.name = (text); \ + Menu_AddItem(&(menu), &(it)); \ +} + +// if you just want to add an action to a menu and never need to refer to it +// again (don't use inside a loop!) +#define add_action(menu,itname,itcallback,itflags) \ +{\ + static menuaction_s it; \ + it.generic.type = MTYPE_ACTION; \ + it.generic.flags = (itflags)|QMF_BUTTON; \ + it.generic.name = (itname); \ + it.generic.callback = (itcallback); \ + Menu_AddItem (&(menu), &(it)); \ +} + + +// Should be useful for most menus +#define M_PushMenu_Defaults(struct) \ + M_PushMenu (Screen_Draw, Default_MenuKey, &(struct)) + +static inline void refreshCursorButton (int button) +{ + cursor.buttonused[button] = true; + cursor.buttonclicks[button] = 0; } -static void M_MontagePic( char *name, float alpha ) + +void refreshAllCursorButtons(void) { - Draw_AlphaStretchPic (0, 0, viddef.width, viddef.height, name, alpha); + int i; + for (i = 0; i < MENU_CURSOR_BUTTON_MAX; i++) + refreshCursorButton (i); +} + +//============================================================================= +/* Screen layout routines -- responsible for tiling all the levels of menus + on the screen and animating transitions between them. This uses a finite + state machine to track which windows are active, "incoming" (will become + active after the current animation is complete,) and "outgoing" (will no + longer be active after the current animation is complete. If there are + incoming or outgoing windows, user input is disabled until the transition + animation is complete. + + Each window is a menu tree (a menuframework_s struct with submenus.) The + purpose of the animation code is to determine what x-axis offset each + window should be drawn at (that is, what number of pixels should be added + to the x-axis of the window when it is drawn.) The x offset for each + window is recalculated each frame so that the windows tile neatly + alongside each other, slide across the screen, etc. + + The main menu is a special case, in that it will shrink into a sidebar + instead of appearing partially off screen. + + Architecturally, this is done with a simple finite-state machine. +*/ + +// M_Interp - responsible for animating the transitions as menus are added and +// removed from the screen. Actually, this function just performs an +// interpolation between 0 and target, returning a number that should be used +// next time for progress. you determine roughly how many pixels a menu is +// going to slide, and in which direction. Your target is that number of +// pixels, positive or negative depending on the direction. Call this +// function repeatedly with your target, and it will return a series of pixel +// offsets that can be used in your animation. +int M_Interp (int progress, int target) +{ + int increment = 0; // always positive + + // Determine the movement amount this frame. Make it nice and fast, + // because while slow might look cool, it's also an inconvenience. + if (target != progress) + { + static float frametime_accum = 0; + + // The animation speeds up as it gets further from the starting point + // and slows down twice as fast as it approaches the ending point. + increment = min( abs((11*target)/10-progress)/2, + abs(progress) )*40; + + // Clamp the animation speed at a minimum so it won't freeze due to + // rounding errors or take too long at either end. + increment = max (increment, abs(target)/10); + + // Scale the animation by frame time so its speed is independent of + // framerate. At very high framerates, each individual frame might be + // too small a time to result in an integer amount of movement. So we + // just add frames together until we do get some movement. + frametime_accum += cls.frametime; + increment *= frametime_accum; + + if (increment > 0) + frametime_accum = 0; + else + return progress; // no movement, better luck next time. + } + + if (target > 0) + { + // increasing + progress += increment; + progress = min (progress, target); // make sure we don't overshoot + } + else if (target < 0) + { + // decreasing + progress -= increment; + progress = max (progress, target); // make sure we don't overshoot + } + + return progress; } -static void M_CrosshairPic( char *name ) + +// linear interpolation +#define lerp(start,end,progress) ((start) + (double)((end)-(start))*(progress)) + +#define MAX_MENU_DEPTH 8 + +#define sidebar_width ((float)(150*viddef.width)/1024.0) + +// Window wrapper +// (TODO: rename all mention of "layer" to "screen" or "window," haven't +// decided which yet.) +typedef struct { - int w, h; - float scale; + void (*draw) (menuframework_s *screen, menuvec2_t offset); + const char *(*key) (menuframework_s *screen, int k); + menuframework_s *screen; +} menulayer_t; - scale = (float)(viddef.height)/600; +// An "inelastic" row of windows. They always tile side by side, and the total +// width is always the sum of the contained windows. This struct is for +// convenience; it's easier to animate such a group of windows as a single +// unit. +typedef struct +{ + int offset; // starting x-axis pixel offset for the leftmost window + int num_layers; + menulayer_t layers[MAX_MENU_DEPTH]; +} layergroup_t; + +#define layergroup_last(g) ((g).layers[(g).num_layers-1]) + +// add up all the widths of each window in the group +static inline int layergroup_width (layergroup_t *g) +{ + int i, ret; + + ret = 0; + for (i = 0; i < g->num_layers; i++) + ret += Menu_TrueWidth (*g->layers[i].screen); + return ret; +} + +// Add up the widths of each window in the group that cannot fit on screen, +// starting with the leftmost. If the final (deepest) window is itself too +// wide, it still won't be included. +static inline int layergroup_excesswidth (layergroup_t *g) +{ + int i, ret, w; + + ret = w = layergroup_width (g); + for (i = 0; i < g->num_layers-1; i++) + { + if (ret < viddef.width) + break; + ret -= Menu_TrueWidth (*g->layers[i].screen); + } + return w-ret; +} - w = h = 64*scale; - Draw_StretchPic (viddef.width / 2 - w/2 - 120*scale, viddef.height / 2 + 74*scale, w, h, name); +// Like layergroup_excesswidth, but as if the windows from the two groups were +// hypothetically in the same group. +static inline int layergroup_pair_excesswidth (layergroup_t *g1, layergroup_t *g2) +{ + int i, ret, w; + + + if (g2->num_layers == 0) + return layergroup_excesswidth (g1); + if (g1->num_layers == 0) + return layergroup_excesswidth (g2); + + ret = w = layergroup_width (g1) + layergroup_width (g2); + for (i = 0; i < g1->num_layers; i++) + { + if (ret < viddef.width) + break; + ret -= Menu_TrueWidth (*g1->layers[i].screen); + } + for (i = 0; i < g2->num_layers-1; i++) + { + if (ret < viddef.width) + break; + ret -= Menu_TrueWidth (*g2->layers[i].screen); + } + return w-ret; } -static void M_Background( char *name) + + +static void layergroup_draw (layergroup_t *g) { - Draw_StretchPic(0, 0, viddef.width, viddef.height, name); + int i; + menuvec2_t offs; + offs.y = 0; + offs.x = g->offset; + for (i = 0; i < g->num_layers; i++) + { + g->layers[i].draw (g->layers[i].screen, offs); + offs.x += Menu_TrueWidth (*g->layers[i].screen); + } } -static void M_ArrowPics() + +// this holds the state machine state +static struct { - int w, h; - float scale; + enum + { + mstate_steady, // no animation, incoming & outgoing empty + mstate_insert, // menus being added, possibly some outgoing menus + mstate_remove // outgoing menus + } state; + layergroup_t active; + layergroup_t outgoing; + layergroup_t incoming; + int animation; // current animation pixel offset +} mstate; - scale = (float)(viddef.height)/600; +static inline void mstate_reset (void) +{ + mstate.active.num_layers = mstate.incoming.num_layers = mstate.outgoing.num_layers = 0; + mstate.state = mstate_steady; + refreshCursorLink (); +} + +#define activelayer(idx) (mstate.active.layers[(idx)]) - Draw_GetPicSize (&w, &h, "uparrow" ); - Draw_GetPicSize (&w, &h, "dnarrow" ); +int Cursor_GetLayer (void) +{ + int i; + menuframework_s *screen; + + if (cursor.menuitem == NULL) + Com_Error (ERR_FATAL, "Cursor_GetLayer: unset cursor.menuitem!"); + + screen = Menu_GetItemTree (cursor.menuitem); + + for (i = 0; i < mstate.active.num_layers; i++) + { + if (activelayer(i).screen == screen) + return i; + } + + // We only get here if, after changing resolutions, the mouse is no longer + // on screen. + Com_Printf ("WARN: fake cursor.menulayer!\n"); + return -1; +} - //for the server list - Draw_StretchPic (viddef.width / 2 - w/2 + (int)(382.5*scale), viddef.height / 2 - 205*scale, 32*scale, 32*scale, "uparrow"); - Draw_StretchPic (viddef.width / 2 - w/2 + (int)(382.5*scale), viddef.height / 2 - 53*scale, 32*scale, 32*scale, "dnarrow"); +static int activelayer_coordidx (int xcoord) +{ + int i; + xcoord -= mstate.active.offset; + if (xcoord < 0 || mstate.active.num_layers == 0) + return -1; + for (i = 0; i < mstate.active.num_layers; i++) + { + xcoord -= Menu_TrueWidth (*activelayer(i).screen); + if (xcoord < 0) + break; + } + return i; +} - //for the player list - Draw_StretchPic (viddef.width / 2 - w/2 + (int)(147.5*scale), viddef.height / 2 + 153*scale, 32*scale, 32*scale, "uparrow"); - Draw_StretchPic (viddef.width / 2 - w/2 + (int)(147.5*scale), viddef.height / 2 + 243*scale, 32*scale, 32*scale, "dnarrow"); +// Figure out the starting offset for the leftmost window of the "active" +// (neither incoming nor outgoing) window group. Usually just equal to the +// maximum width of the sidebar, unless there are so many large windows that +// they can't all fit on screen at once, in which case it may be a negative +// number. +static inline int Menuscreens_Animate_Active (void) +{ + int shove_offset, ret, excess; + excess = layergroup_excesswidth (&mstate.active); + if (excess != 0) + return -excess; + ret = sidebar_width; + shove_offset = viddef.width - layergroup_width (&mstate.active); + if (shove_offset < ret) + ret = shove_offset; + return ret; +} - //for the mod list - Draw_StretchPic (viddef.width / 2 - w/2 + (int)(382.5*scale), viddef.height / 2 + 10*scale, 32*scale, 32*scale, "uparrow"); - Draw_StretchPic (viddef.width / 2 - w/2 + (int)(382.5*scale), viddef.height / 2 + 90*scale, 32*scale, 32*scale, "dnarrow"); +// Figure out the starting offset for the leftmost window of the active window +// group, *if* the "incoming" windows were hypothetically added to the end of +// the active window group. Will be used as the "target" for the incoming- +// window animation. This is because when the animation is done, the incoming +// windows will be added to the end of the active window group, and we want +// the transition to be smooth. +static inline int MenuScreens_Animate_Incoming_Target (void) +{ + int shove_offset, ret, excess; + excess = layergroup_pair_excesswidth (&mstate.active, &mstate.incoming); + if (excess != 0) + return -excess; + ret = sidebar_width; + shove_offset = viddef.width - layergroup_width (&mstate.active) - layergroup_width (&mstate.incoming); + if (shove_offset < ret) + ret = shove_offset; + return ret; } -// Knightmare- added Psychospaz's mouse support -void refreshCursorButtons(void) -{ - cursor.buttonused[MOUSEBUTTON2] = true; - cursor.buttonclicks[MOUSEBUTTON2] = 0; - cursor.buttonused[MOUSEBUTTON1] = true; - cursor.buttonclicks[MOUSEBUTTON1] = 0; +// Figure out the starting offset for the leftmost window of the "active" +// window group, *if* the outgoing windows were hypothetically added to the +// end of the active window group. Will be used as the "start" for the +// outgoing- window animation. This is because before the animation started, +// the outgoing windows were at the end of the active window group, and we +// want the transition to be smooth. +static inline int MenuScreens_Animate_Outgoing_Start (void) +{ + int shove_offset, ret, excess; + excess = layergroup_pair_excesswidth (&mstate.active, &mstate.outgoing); + if (excess != 0) + return -excess; + ret = sidebar_width; + shove_offset = viddef.width - layergroup_width (&mstate.active) - layergroup_width (&mstate.outgoing); + if (shove_offset < ret) + ret = shove_offset; + return ret; } -void M_PushMenu ( void (*draw) (void), const char *(*key) (int k) ) +void Menuscreens_Animate (void); + +// state machine state transitions +void Menuscreens_Animate_Insert_To_Steady (void) { - int i; + int i; + for (i = 0; i < mstate.incoming.num_layers; i++) + activelayer(mstate.active.num_layers++) = mstate.incoming.layers[i]; + Cursor_SelectMenu (layergroup_last(mstate.active).screen); + mstate.incoming.num_layers = 0; + mstate.outgoing.num_layers = 0; + mstate.state = mstate_steady; + mstate.animation = 0; + Menuscreens_Animate (); +} +void Menuscreens_Animate_Remove_To_Steady (void) +{ + mstate.outgoing.num_layers = 0; + mstate.state = mstate_steady; + if (mstate.active.num_layers == 0) + refreshCursorLink (); + else + Cursor_SelectMenu (layergroup_last(mstate.active).screen); + mstate.animation = 0; + Menuscreens_Animate (); +} - if (Cvar_VariableValue ("maxclients") == 1 - && Com_ServerState ()) - Cvar_Set ("paused", "1"); +void M_Main_Draw (menuvec2_t offset); +void CheckMainMenuMouse (void); - // if this menu is already present, drop back to that level - // to avoid stacking menus by hotkeys - for (i=0 ; i= MAX_MENU_DEPTH) - Com_Error (ERR_FATAL, "M_PushMenu: MAX_MENU_DEPTH"); - m_layers[m_menudepth].draw = m_drawfunc; - m_layers[m_menudepth].key = m_keyfunc; - m_menudepth++; + if (mstate.active.num_layers == 0) + mstate.active.offset = 0; + else + mstate.active.offset = Menuscreens_Animate_Active (); + + anim_start = mstate.active.offset+viddef.width; + anim_end = MenuScreens_Animate_Incoming_Target (); + + mstate.animation = M_Interp (mstate.animation, anim_end-anim_start); + if (mstate.animation <= anim_end-anim_start) + { + Menuscreens_Animate_Insert_To_Steady (); + return; + } + shove_offset = anim_start+mstate.animation; + + if (shove_offset < mstate.active.offset || mstate.active.num_layers == 0) + mstate.active.offset = shove_offset; + + // If there are outgoing windows, the incoming ones "push" them back + // behind the active windows and the sidebar. + if (mstate.outgoing.num_layers > 0) + { + int outgoing_shove, outgoing_start, outgoing_end; + double outgoing_fade; + + mstate.outgoing.offset = outgoing_start = MenuScreens_Animate_Outgoing_Start () + layergroup_width (&mstate.active); + + outgoing_end = Menuscreens_Animate_Active () - layergroup_width (&mstate.outgoing); + + outgoing_shove = shove_offset + layergroup_width (&mstate.active) - layergroup_width (&mstate.outgoing); + if (outgoing_shove < mstate.outgoing.offset) + mstate.outgoing.offset = outgoing_shove; + + layergroup_draw (&mstate.outgoing); + + outgoing_fade = (double)(mstate.outgoing.offset-outgoing_start)/(double)(outgoing_end-outgoing_start); + + // Fade out the outgoing windows + Draw_Fill ( + mstate.outgoing.offset, 0, + layergroup_width (&mstate.outgoing), viddef.height, + RGBA (0, 0, 0, sqrt(outgoing_fade)) + ); + + // Interpolate the sidebar as well. + mstate.active.offset = lerp ( + MenuScreens_Animate_Outgoing_Start (), + MenuScreens_Animate_Incoming_Target (), + outgoing_fade + ); + } + + main_offs.x = mstate.active.offset-viddef.width; + mstate.incoming.offset = shove_offset + layergroup_width (&mstate.active); + + M_Main_Draw (main_offs); + layergroup_draw (&mstate.active); + layergroup_draw (&mstate.incoming); } + break; + case mstate_remove: + { + if (mstate.active.num_layers == 0) + mstate.active.offset = 0; + else + mstate.active.offset = Menuscreens_Animate_Active (); + + anim_start = MenuScreens_Animate_Outgoing_Start (); + anim_end = mstate.active.offset + viddef.width; + + mstate.animation = M_Interp (mstate.animation, anim_end-anim_start); + if (mstate.animation >= anim_end-anim_start) + { + Menuscreens_Animate_Remove_To_Steady (); + return; + } + shove_offset = anim_start+mstate.animation; + + if (shove_offset < mstate.active.offset || mstate.active.num_layers == 0) + mstate.active.offset = shove_offset; + + main_offs.x = mstate.active.offset-viddef.width; + mstate.outgoing.offset = shove_offset + layergroup_width (&mstate.active); - m_drawfunc = draw; - m_keyfunc = key; - - m_entersound = true; + M_Main_Draw (main_offs); + layergroup_draw (&mstate.active); + layergroup_draw (&mstate.outgoing); + } + break; + } +} - // Knightmare- added Psychospaz's mouse support - refreshCursorLink(); - refreshCursorButtons(); +// These functions (Push, Force Off, and Pop) are used by the outside world to +// control the state machine. +void M_PushMenu ( void (*draw) (menuframework_s *screen, menuvec2_t offset), const char *(*key) (menuframework_s *screen, int k), menuframework_s *screen) +{ + int i, insertion_point; + qboolean found = false; + + if (Cvar_VariableValue ("maxclients") == 1 + && Com_ServerState ()) + Cvar_Set ("paused", "1"); + + screen->navagable = true; + Menu_AutoArrange (screen); + + for (i = 0; i < mstate.active.num_layers; i++) + { + if (activelayer(i).screen == screen) + { + found = true; + break; + } + } + + if (found) + { + insertion_point = i; + mstate.state = mstate_remove; + } + else + { + mstate.incoming.num_layers++; + layergroup_last(mstate.incoming).draw = draw; + layergroup_last(mstate.incoming).key = key; + layergroup_last(mstate.incoming).screen = screen; + mstate.state = mstate_insert; + insertion_point = cursor.menulayer; + } + + for (i = insertion_point+1; i < mstate.active.num_layers; i++) + mstate.outgoing.layers[mstate.outgoing.num_layers++] = activelayer(i); + mstate.active.num_layers = insertion_point+1; + cls.key_dest = key_menu; + + m_entersound = true; } void M_ForceMenuOff (void) { - - // Knightmare- added Psychospaz's mouse support - refreshCursorLink(); - - m_drawfunc = 0; - m_keyfunc = 0; cls.key_dest = key_game; - m_menudepth = 0; Key_ClearStates (); Cvar_Set ("paused", "0"); + + mstate_reset (); //-JD kill the music when leaving the menu of course S_StopAllSounds(); @@ -255,145 +833,68 @@ void M_PopMenu (void) { S_StartLocalSound( menu_out_sound ); - if (m_menudepth < 1) - Com_Error (ERR_FATAL, "M_PopMenu: depth < 1"); - m_menudepth--; - - m_drawfunc = m_layers[m_menudepth].draw; - m_keyfunc = m_layers[m_menudepth].key; - - // Knightmare- added Psychospaz's mouse support - refreshCursorLink(); - refreshCursorButtons(); - - if (!m_menudepth) + if (mstate.active.num_layers == 0) + { M_ForceMenuOff (); + return; + } + + mstate.outgoing.layers[mstate.outgoing.num_layers++] = + activelayer(--mstate.active.num_layers); + mstate.state = mstate_remove; } -const char *Default_MenuKey( menuframework_s *m, int key ) +const char *Default_MenuKey (menuframework_s *m, int key) { const char *sound = NULL; - menucommon_s *item; - - if ( m ) + + // this should work no matter what + if (key == K_ESCAPE) { - if ( ( item = Menu_ItemAtCursor( m ) ) != 0 ) - { - if ( item->type == MTYPE_FIELD ) - { - if ( Field_Key( ( menufield_s * ) item, key ) ) - return NULL; - } - } + M_PopMenu(); + return menu_out_sound; } + // the rest of these won't work unless there's a selected menu item + if (cursor.menuitem == NULL) + return NULL; + + // offer the keypress to the field key parser, see if it wants it + if (Field_Key (key)) + { + Menu_ActivateItem (cursor.menuitem); + return NULL; + } + switch ( key ) { - case K_ESCAPE: - M_PopMenu(); - return menu_out_sound; + case K_MWHEELUP: case K_KP_UPARROW: case K_UPARROW: - if ( m ) - { - m->cursor--; - - // Knightmare- added Psychospaz's mouse support - refreshCursorLink(); - - Menu_AdjustCursor( m, -1 ); - sound = menu_move_sound; - } + Menu_AdvanceCursor (-1, false); break; case K_TAB: - if ( m ) - { - m->cursor++; - - // Knightmare- added Psychospaz's mouse support - refreshCursorLink(); - - Menu_AdjustCursor( m, 1 ); - sound = menu_move_sound; - } + Menu_AdvanceCursor (1, true); break; + case K_MWHEELDOWN: case K_KP_DOWNARROW: case K_DOWNARROW: - if ( m ) - { - m->cursor++; - Menu_AdjustCursor( m, 1 ); - sound = menu_move_sound; - } + Menu_AdvanceCursor (1, false); break; case K_KP_LEFTARROW: case K_LEFTARROW: - if ( m ) - { - Menu_SlideItem( m, -1 ); - sound = menu_move_sound; - } + Menu_SlideItem (-1); + sound = menu_move_sound; break; case K_KP_RIGHTARROW: case K_RIGHTARROW: - if ( m ) - { - Menu_SlideItem( m, 1 ); - sound = menu_move_sound; - } + Menu_SlideItem (1); + sound = menu_move_sound; break; - -/* case K_MOUSE1: - case K_MOUSE2: - case K_MOUSE3: */ - case K_MOUSE4: - case K_MOUSE5: - case K_MOUSE6: - case K_MOUSE7: - case K_MOUSE8: - case K_MOUSE9: - case K_JOY1: - case K_JOY2: - case K_JOY3: - case K_JOY4: - case K_AUX1: - case K_AUX2: - case K_AUX3: - case K_AUX4: - case K_AUX5: - case K_AUX6: - case K_AUX7: - case K_AUX8: - case K_AUX9: - case K_AUX10: - case K_AUX11: - case K_AUX12: - case K_AUX13: - case K_AUX14: - case K_AUX15: - case K_AUX16: - case K_AUX17: - case K_AUX18: - case K_AUX19: - case K_AUX20: - case K_AUX21: - case K_AUX22: - case K_AUX23: - case K_AUX24: - case K_AUX25: - case K_AUX26: - case K_AUX27: - case K_AUX28: - case K_AUX29: - case K_AUX30: - case K_AUX31: - case K_AUX32: - case K_KP_ENTER: case K_ENTER: - if ( m ) - Menu_SelectItem( m ); + Menu_ActivateItem (cursor.menuitem); sound = menu_move_sound; break; } @@ -401,97 +902,6 @@ return sound; } -//============================================================================= - -/* -================ -M_DrawCharacter - -Draws one solid graphics character -cx and cy are in 320*240 coordinates, and will be centered on -higher res screens. -================ -*/ -void M_DrawCharacter (int cx, int cy, int num) -{ - int charscale; - - charscale = (float)(viddef.height)*16/600; - - Draw_ScaledChar ( cx + viddef.width/3 - 3*charscale, cy + viddef.height/3 - 3*charscale, num, charscale, true); -} - -void M_Print (int cx, int cy, char *str) -{ - while (*str) - { - M_DrawCharacter (cx, cy, (*str)+128); - str++; - cx += 16; - } -} - -void M_PrintWhite (int cx, int cy, char *str) -{ - while (*str) - { - M_DrawCharacter (cx, cy, *str); - str++; - cx += 8; - } -} - -void M_DrawPic (int x, int y, char *pic) -{ - Draw_Pic (x + ((viddef.width - 320)>>1), y + ((viddef.height - 240)>>1), pic); -} - -void M_DrawTextBox (int x, int y, int width, int lines) -{ - int cx, cy; - int n; - int charscale; - - charscale = (float)(viddef.height)*16/600; - - // draw left side - cx = x; - cy = y; - M_DrawCharacter (cx, cy, 1); - for (n = 0; n < lines; n++) - { - cy += charscale; - M_DrawCharacter (cx, cy, 4); - } - M_DrawCharacter (cx, cy+charscale, 7); - - // draw middle - cx += charscale; - while (width > 0) - { - cy = y; - M_DrawCharacter (cx, cy, 2); - for (n = 0; n < lines; n++) - { - cy += charscale; - } - M_DrawCharacter (cx, cy+charscale, 8); - width -= 1; - cx += charscale; - } - - // draw right side - cy = y; - M_DrawCharacter (cx, cy, 3); - for (n = 0; n < lines; n++) - { - cy += charscale; - M_DrawCharacter (cx, cy, 6); - } - M_DrawCharacter (cx, cy+charscale, 9); -} - - /* ======================================================================= @@ -499,19 +909,26 @@ ======================================================================= */ -#define MAIN_ITEMS 8 char *main_names[] = { - "m_main_player", "m_main_game", "m_main_join", "m_main_host", - "m_main_irc", "m_main_options", - "m_main_video", "m_main_quit", - 0 + "m_main_credits", +}; +#define MAIN_ITEMS static_array_size(main_names) + +void (*main_open_funcs[MAIN_ITEMS])(void) = +{ + &M_Menu_Game_f, + &M_Menu_JoinServer_f, + &M_Menu_StartServer_f, + &M_Menu_Options_f, + &M_Menu_Quit_f, + &M_Menu_Credits_f }; void findMenuCoords (int *xoffset, int *ystart, int *totalheight, int *widest) @@ -524,7 +941,7 @@ *totalheight = 0; *widest = -1; - for ( i = 0; main_names[i] != 0; i++ ) + for ( i = 0; i < MAIN_ITEMS; i++ ) { Draw_GetPicSize( &w, &h, main_names[i] ); @@ -533,188 +950,111 @@ *totalheight += ( h*scale + 24*scale); } - *ystart = ( viddef.height / 2 - 25*scale ); - *xoffset = ( viddef.width - *widest + 150*scale) / 2; - + *ystart = ( viddef.height / 2 - 20*scale ); + *xoffset = ( viddef.width - *widest + 350*scale) / 2; } -void M_Main_Draw (void) +void M_Main_Draw (menuvec2_t offset) { int i; - int ystart; + int ystart, xstart, xend; int xoffset; int widest = -1; int totalheight = 0; char litname[80]; - float scale; + float scale, hscale, hscaleoffs; float widscale; int w, h; char montagepicname[16]; char backgroundpic[16]; char *version_warning; + + static float mainalpha; + static int montagepic = 1; - scale = (float)(viddef.height)/600; + scale = ((float)(viddef.height))/600.0; - widscale = (float)(viddef.width)/800; - if(widscale<1) - widscale = 1; + widscale = ((float)(viddef.width))/1024.0; findMenuCoords(&xoffset, &ystart, &totalheight, &widest); - ystart = ( viddef.height / 2 - 25*scale ); - xoffset = ( viddef.width - widest - 25*scale) / 2; - - M_Background("m_main"); + ystart = ( viddef.height / 2 - 20*scale ) + offset.y; + xoffset = ( viddef.width - widest - 35*widscale) / 2 + offset.x; + + // When animating a transition away from the main menu, the background + // slides away at double speed, disappearing and leaving just the menu + // items themselves. Hence some things use offset.x*1.25. + +#ifdef TACTICAL + Draw_StretchPic(offset.x*1.25, offset.y, viddef.width, viddef.height, "m_main_tactical"); +#else + Draw_StretchPic(offset.x*1.25, offset.y, viddef.width, viddef.height, "m_main"); +#endif //draw the montage pics mainalpha += cls.frametime; //fade image in - if(mainalpha > 4) { //switch pics at this point + if(mainalpha > 4) + { + //switch pics at this point mainalpha = 0.1; montagepic++; - if(montagepic > 5) { + if(montagepic > 5) + { montagepic = 1; } } sprintf(backgroundpic, "m_main_mont%i", (montagepic==1)?5:montagepic-1); sprintf(montagepicname, "m_main_mont%i", montagepic); - M_Background(backgroundpic); - M_MontagePic(montagepicname, mainalpha); + Draw_StretchPic (offset.x*1.25, offset.y, viddef.width, viddef.height, backgroundpic); + Draw_AlphaStretchPic (offset.x*1.25, offset.y, viddef.width, viddef.height, montagepicname, mainalpha); - //if appropriate, draw the out-of-date warning - if ( cl_latest_game_version->value - atof(VERSION) > 0.00001f ) { - version_warning = va("version %s available (%s currently installed)", cl_latest_game_version->string, VERSION); - M_PrintWhite (0, 5*scale, version_warning); - } + /* check for more recent program version */ + version_warning = VersionUpdateNotice(); + if ( version_warning != NULL ) + { + extern const float light_color[4]; + Menu_DrawString ( + offset.x, offset.y + 5*scale, + version_warning, FNT_CMODE_QUAKE_SRS, FNT_ALIGN_LEFT, light_color + ); + } + //draw the main menu buttons - for ( i = 0; main_names[i] != 0; i++ ) + for ( i = 0; i < MAIN_ITEMS; i++ ) { - if ( i != m_main_cursor ){ - Draw_GetPicSize( &w, &h, main_names[i] ); - Draw_StretchPic( xoffset + 100*scale + (20*i*scale), (int)(ystart + i * 32.5*scale + 13*scale), w*scale, h*scale, main_names[i] ); - + strcpy( litname, main_names[i] ); + if (i == m_main_cursor && cursor.menulayer == -1) + strcat( litname, "_sel"); + Draw_GetPicSize( &w, &h, litname ); + xstart = xoffset + 100*widscale + (20*i*widscale); + if (xstart < 0) + xstart += min(-xstart, (8-i)*20*widscale); + xend = xstart+w*widscale; + hscale = 1; + if (xstart < 0) + { + if (xend < 150*widscale) + xend = min (viddef.width+offset.x, 150*widscale); + xstart = 0; + if (xend < 50*widscale) + return; } + hscale = (float)(xend-xstart)/(float)(w*widscale); + hscaleoffs = (float)h*scale-(float)h*hscale*scale; + Draw_StretchPic( xstart, (int)(ystart + i * 32.5*scale + 13*scale + hscaleoffs), xend-xstart, h*hscale*scale, litname ); } - strcpy( litname, main_names[m_main_cursor] ); - strcat( litname, "_sel" ); - Draw_GetPicSize( &w, &h, litname ); - //yuk - if(!strcmp(litname, "m_main_player_sel")) - i = 0; - if(!strcmp(litname, "m_main_game_sel")) - i = 1; - else if(!strcmp(litname, "m_main_join_sel")) - i = 2; - else if(!strcmp(litname, "m_main_host_sel")) - i = 3; - else if(!strcmp(litname, "m_main_irc_sel")) - i = 4; - else if(!strcmp(litname, "m_main_options_sel")) - i = 5; - else if(!strcmp(litname, "m_main_video_sel")) - i = 6; - else if(!strcmp(litname, "m_main_quit_sel")) - i = 7; - Draw_StretchPic( xoffset + 100*scale + (20*i*scale), (int)(ystart + m_main_cursor * 32.5*scale + 13*scale), w*scale, h*scale, litname ); } -typedef struct -{ - int min[2]; - int max[2]; - - void (*OpenMenu)(void); -} mainmenuobject_t; - -void addButton (mainmenuobject_t *thisObj, int index, int x, int y) -{ - float ratio; - float scale; - int w, h; - - scale = (float)(viddef.height)/600; - - Draw_GetPicSize( &w, &h, main_names[index]); - - if (w) - { - ratio = 32.0/(float)h; - h = 32; - w *= ratio; - } - - thisObj->min[0] = x; thisObj->max[0] = x + (w*scale); - thisObj->min[1] = y; thisObj->max[1] = y + (h*scale); - - switch (index) - { - case 0: - thisObj->OpenMenu = M_Menu_PlayerConfig_f; - case 1: - thisObj->OpenMenu = M_Menu_Game_f; - case 2: - thisObj->OpenMenu = M_Menu_JoinServer_f; - case 3: - thisObj->OpenMenu = M_Menu_StartServer_f; - case 4: - thisObj->OpenMenu = M_Menu_IRC_f; - case 5: - thisObj->OpenMenu = M_Menu_Options_f; - case 6: - thisObj->OpenMenu = M_Menu_Video_f; - case 7: - thisObj->OpenMenu = M_Menu_Quit_f; - } -} - -void openMenuFromMain (void) -{ - switch (m_main_cursor) - { - case 0: - M_Menu_PlayerConfig_f(); - break; - case 1: - M_Menu_Game_f (); - break; - - case 2: - M_Menu_JoinServer_f(); - break; - - case 3: - M_Menu_StartServer_f(); - break; - - case 4: - M_Menu_IRC_f(); - break; - - case 5: - M_Menu_Options_f (); - break; - - case 6: - M_Menu_Video_f (); - break; - - case 7: - M_Menu_Quit_f (); - break; - } -} - -int MainMenuMouseHover; -void CheckMainMenuMouse (void) +void CheckMainMenuMouse (void) { int ystart; int xoffset; int widest; int totalheight; int i, oldhover; - char *sound = NULL; - mainmenuobject_t buttons[MAIN_ITEMS]; float scale; + static int MainMenuMouseHover; scale = (float)(viddef.height)/600; @@ -722,117 +1062,66 @@ MainMenuMouseHover = 0; findMenuCoords(&xoffset, &ystart, &totalheight, &widest); - for ( i = 0; main_names[i] != 0; i++ ) - addButton (&buttons[i], i, xoffset, ystart + (i * 32*scale + 24*scale)); - - //Exit with double click 2nd mouse button - if (!cursor.buttonused[MOUSEBUTTON2] && cursor.buttonclicks[MOUSEBUTTON2]==2) - { - M_PopMenu(); - sound = menu_out_sound; - cursor.buttonused[MOUSEBUTTON2] = true; - cursor.buttonclicks[MOUSEBUTTON2] = 0; - } - for (i=MAIN_ITEMS-1;i>=0;i--) + i = (cursor.y - ystart - 24*scale)/(32*scale); + if (i < 0 || i >= MAIN_ITEMS) { - if (cursor.x>=buttons[i].min[0] && cursor.x<=buttons[i].max[0] && - cursor.y>=buttons[i].min[1] && cursor.y<=buttons[i].max[1]) + if (cursor.buttonclicks[MOUSEBUTTON1]==1) { - if (cursor.mouseaction) - m_main_cursor = i; - - MainMenuMouseHover = 1 + i; - - if (oldhover == MainMenuMouseHover && MainMenuMouseHover-1 == m_main_cursor && - !cursor.buttonused[MOUSEBUTTON1] && cursor.buttonclicks[MOUSEBUTTON1]==1) - { - openMenuFromMain(); - sound = menu_move_sound; - cursor.buttonused[MOUSEBUTTON1] = true; - cursor.buttonclicks[MOUSEBUTTON1] = 0; - } - break; + cursor.buttonused[MOUSEBUTTON1] = true; + cursor.buttonclicks[MOUSEBUTTON1] = 0; } + return; } - if (!MainMenuMouseHover) + if (cursor.mouseaction) { - cursor.buttonused[MOUSEBUTTON1] = false; - cursor.buttonclicks[MOUSEBUTTON1] = 0; - cursor.buttontime[MOUSEBUTTON1] = 0; - hover_time = 0; + refreshCursorLink (); + m_main_cursor = i; + cursor.mouseaction = false; } + MainMenuMouseHover = 1 + i; + if (oldhover == MainMenuMouseHover && MainMenuMouseHover-1 == m_main_cursor && - !cursor.buttonused[MOUSEBUTTON1] && hover_time == 0) { - sound = menu_move_sound; - hover_time = 1; + !cursor.buttonused[MOUSEBUTTON1] && cursor.buttonclicks[MOUSEBUTTON1]==1) + { + main_open_funcs[m_main_cursor](); + S_StartLocalSound( menu_move_sound ); + cursor.buttonused[MOUSEBUTTON1] = true; + cursor.buttonclicks[MOUSEBUTTON1] = 0; } - - if ( sound ) - S_StartLocalSound( sound ); } const char *M_Main_Key (int key) { - const char *sound = menu_move_sound; - switch (key) { case K_ESCAPE: + m_entersound = true; M_PopMenu (); break; case K_KP_DOWNARROW: case K_DOWNARROW: + case K_TAB: + case K_MWHEELDOWN: if (++m_main_cursor >= MAIN_ITEMS) m_main_cursor = 0; - return sound; + break; case K_KP_UPARROW: case K_UPARROW: + case K_MWHEELUP: if (--m_main_cursor < 0) m_main_cursor = MAIN_ITEMS - 1; - return sound; + break; case K_KP_ENTER: case K_ENTER: m_entersound = true; - - switch (m_main_cursor) - { - case 0: - M_Menu_PlayerConfig_f(); - break; - case 1: - M_Menu_Game_f (); - break; - - case 2: - M_Menu_JoinServer_f(); - break; - - case 3: - M_Menu_StartServer_f(); - break; - - case 4: - M_Menu_IRC_f(); - break; - - case 5: - M_Menu_Options_f (); - break; - - case 6: - M_Menu_Video_f (); - break; - - case 7: - M_Menu_Quit_f (); - break; - } + main_open_funcs[m_main_cursor](); + break; } return NULL; @@ -842,20 +1131,21 @@ void M_Menu_Main_f (void) { S_StartMenuMusic(); - M_PushMenu (M_Main_Draw, M_Main_Key); + cls.key_dest = key_menu; + mstate_reset (); } /* ======================================================================= -KEYS MENU +OPTIONS MENUS - INPUT MENU ======================================================================= */ char *bindnames[][2] = { {"+attack", "attack"}, -{"+attack2", "alt attack"}, +{"+attack2", "alt attack"}, {"weapnext", "next weapon"}, {"weapprev", "previous weapon"}, {"+forward", "walk forward"}, @@ -891,52 +1181,19 @@ {"vtaunt 3", "voice taunt #3"}, {"vtaunt 4", "voice taunt #4"}, {"vtaunt 5", "voice taunt #5"}, -{"vtaunt 0", "voice taunt auto"}, - -{ 0, 0 } +{"vtaunt 0", "voice taunt auto"} }; +#define num_bindable_actions static_array_size(bindnames) + int keys_cursor; static int bind_grab; +static menuframework_s s_keys_screen; static menuframework_s s_keys_menu; -static menuaction_s s_keys_attack_action; -static menuaction_s s_keys_attack2_action; -static menuaction_s s_keys_change_weapon_action; -static menuaction_s s_keys_walk_forward_action; -static menuaction_s s_keys_backpedal_action; -static menuaction_s s_keys_run_action; -static menuaction_s s_keys_step_left_action; -static menuaction_s s_keys_step_right_action; -static menuaction_s s_keys_move_up_action; -static menuaction_s s_keys_move_down_action; -static menuaction_s s_keys_inventory_action; -static menuaction_s s_keys_inv_use_action; -static menuaction_s s_keys_inv_drop_action; -static menuaction_s s_keys_inv_prev_action; -static menuaction_s s_keys_inv_next_action; -static menuaction_s s_keys_alien_disruptor_action; -static menuaction_s s_keys_chain_pistol_action; -static menuaction_s s_keys_flame_thrower_action; -static menuaction_s s_keys_rocket_launcher_action; -static menuaction_s s_keys_alien_smartgun_action; -static menuaction_s s_keys_alien_beamgun_action; -static menuaction_s s_keys_alien_vaporizer_action; -static menuaction_s s_keys_show_scores_action; -static menuaction_s s_keys_grapple_action; -static menuaction_s s_keys_violator_action; -static menuaction_s s_keys_sproing_action; -static menuaction_s s_keys_haste_action; -static menuaction_s s_keys_invis_action; -static menuaction_s s_keys_vtaunt1_action; -static menuaction_s s_keys_vtaunt2_action; -static menuaction_s s_keys_vtaunt3_action; -static menuaction_s s_keys_vtaunt4_action; -static menuaction_s s_keys_vtaunt5_action; -static menuaction_s s_keys_vtauntauto_action; -static menuaction_s s_keys_filler_action; +static menuaction_s s_keys_actions[num_bindable_actions]; -static void M_UnbindCommand (char *command) +static void M_UnbindCommand (const char *command) { int j; int l; @@ -948,13 +1205,14 @@ { b = keybindings[j]; if (!b) + continue; if (!strncmp (b, command, l) ) Key_SetBinding (j, ""); } } -static void M_FindKeysForCommand (char *command, int *twokeys) +static void M_FindKeysForCommand (const char *command, int *twokeys) { int count; int j; @@ -964,7 +1222,7 @@ twokeys[0] = twokeys[1] = -1; l = strlen(command); count = 0; - + for (j=0 ; j<256 ; j++) { b = keybindings[j]; @@ -980,47 +1238,65 @@ } } -static void DrawKeyBindingFunc( void *self ) +static void M_KeyBindingDisplayStr (const char *command, size_t bufsize, char *buf) { int keys[2]; - menuaction_s *a = ( menuaction_s * ) self; - - float charscale = (float)(viddef.height)/600*16; - - M_FindKeysForCommand( bindnames[a->generic.localdata[0]][0], keys); - + + M_FindKeysForCommand (command, keys); + if (keys[0] == -1) { - Menu_DrawString( a->generic.x + a->generic.parent->x + charscale, a->generic.y + a->generic.parent->y, "???" ); + Com_sprintf (buf, bufsize, "???"); } else { - int x; - const char *name; - - name = Key_KeynumToString (keys[0]); + // Key_KeynumToString reuses the same buffer for output sometimes + int len; + Com_sprintf (buf, bufsize, "%s", Key_KeynumToString (keys[0])); + len = strlen(buf); + if (keys[1] != -1) + Com_sprintf (buf+len, bufsize-len, " or %s", Key_KeynumToString (keys[1])); + } +} - Menu_DrawString( a->generic.x + a->generic.parent->x + charscale, a->generic.y + a->generic.parent->y, name ); +static menuvec2_t KeySizeFunc (void *_self, FNT_font_t font) +{ + menuvec2_t ret; + char buf[1024]; + menuaction_s *self = ( menuaction_s * ) _self; + + M_KeyBindingDisplayStr (self->generic.localstrings[0], sizeof(buf), buf); + + ret.y = font->height; + ret.x = RCOLUMN_OFFSET + Menu_PredictSize (buf); + + return ret; +} - x = strlen(name) * charscale; +static void DrawKeyBindingFunc( void *_self, FNT_font_t font ) +{ + extern const float light_color[4]; + char buf[1024]; + menuaction_s *self = ( menuaction_s * ) _self; - if (keys[1] != -1) - { - Menu_DrawString( a->generic.x + a->generic.parent->x + 1*charscale + x, a->generic.y + a->generic.parent->y, "or" ); - Menu_DrawString( a->generic.x + a->generic.parent->x + 3*charscale + x, a->generic.y + a->generic.parent->y, Key_KeynumToString (keys[1]) ); - } - } + M_KeyBindingDisplayStr (self->generic.localstrings[0], sizeof(buf), buf); + + Menu_DrawString ( + Item_GetX (*self) + RCOLUMN_OFFSET, + Item_GetY (*self) + MenuText_UpperMargin (self, font->size), + buf, FNT_CMODE_QUAKE_SRS, FNT_ALIGN_LEFT, light_color + ); } -static void KeyBindingFunc( void *self ) +static void KeyBindingFunc( void *_self ) { - menuaction_s *a = ( menuaction_s * ) self; + menuaction_s *self = ( menuaction_s * ) _self; int keys[2]; - M_FindKeysForCommand( bindnames[a->generic.localdata[0]][0], keys ); + M_FindKeysForCommand( self->generic.localstrings[0], keys ); if (keys[1] != -1) - M_UnbindCommand( bindnames[a->generic.localdata[0]][0]); + M_UnbindCommand( self->generic.localstrings[0]); bind_grab = true; @@ -1029,324 +1305,29 @@ static void Keys_MenuInit( void ) { - int y; int i = 0; - float scale; - - scale = (float)(viddef.height)/600; - - y = 80*scale; - - banneralpha = .1; - s_keys_menu.x = viddef.width*.50 - 20*scale; - - s_keys_attack_action.generic.type = MTYPE_ACTION; - s_keys_attack_action.generic.x = 0; - s_keys_attack_action.generic.y = y; - s_keys_attack_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_attack_action.generic.localdata[0] = i; - s_keys_attack_action.generic.name = bindnames[s_keys_attack_action.generic.localdata[0]][1]; - - s_keys_attack2_action.generic.type = MTYPE_ACTION; - s_keys_attack2_action.generic.x = 0; - s_keys_attack2_action.generic.y = y += FONTSCALE*9*scale; - s_keys_attack2_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_attack2_action.generic.localdata[0] = ++i; - s_keys_attack2_action.generic.name = bindnames[s_keys_attack2_action.generic.localdata[0]][1]; - - s_keys_change_weapon_action.generic.type = MTYPE_ACTION; - s_keys_change_weapon_action.generic.x = 0; - s_keys_change_weapon_action.generic.y = y += FONTSCALE*9*scale; - s_keys_change_weapon_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_change_weapon_action.generic.localdata[0] = ++i; - s_keys_change_weapon_action.generic.name = bindnames[s_keys_change_weapon_action.generic.localdata[0]][1]; - - s_keys_walk_forward_action.generic.type = MTYPE_ACTION; - s_keys_walk_forward_action.generic.x = 0; - s_keys_walk_forward_action.generic.y = y += FONTSCALE*9*scale; - s_keys_walk_forward_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_walk_forward_action.generic.localdata[0] = ++i; - s_keys_walk_forward_action.generic.name = bindnames[s_keys_walk_forward_action.generic.localdata[0]][1]; - - s_keys_backpedal_action.generic.type = MTYPE_ACTION; - s_keys_backpedal_action.generic.x = 0; - s_keys_backpedal_action.generic.y = y += FONTSCALE*9*scale; - s_keys_backpedal_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_backpedal_action.generic.localdata[0] = ++i; - s_keys_backpedal_action.generic.name = bindnames[s_keys_backpedal_action.generic.localdata[0]][1]; - - s_keys_run_action.generic.type = MTYPE_ACTION; - s_keys_run_action.generic.x = 0; - s_keys_run_action.generic.y = y += FONTSCALE*9*scale; - s_keys_run_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_run_action.generic.localdata[0] = ++i; - s_keys_run_action.generic.name = bindnames[s_keys_run_action.generic.localdata[0]][1]; - - s_keys_step_left_action.generic.type = MTYPE_ACTION; - s_keys_step_left_action.generic.x = 0; - s_keys_step_left_action.generic.y = y += FONTSCALE*9*scale; - s_keys_step_left_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_step_left_action.generic.localdata[0] = ++i; - s_keys_step_left_action.generic.name = bindnames[s_keys_step_left_action.generic.localdata[0]][1]; - - s_keys_step_right_action.generic.type = MTYPE_ACTION; - s_keys_step_right_action.generic.x = 0; - s_keys_step_right_action.generic.y = y += FONTSCALE*9*scale; - s_keys_step_right_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_step_right_action.generic.localdata[0] = ++i; - s_keys_step_right_action.generic.name = bindnames[s_keys_step_right_action.generic.localdata[0]][1]; - - s_keys_move_up_action.generic.type = MTYPE_ACTION; - s_keys_move_up_action.generic.x = 0; - s_keys_move_up_action.generic.y = y += FONTSCALE*9*scale; - s_keys_move_up_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_move_up_action.generic.localdata[0] = ++i; - s_keys_move_up_action.generic.name = bindnames[s_keys_move_up_action.generic.localdata[0]][1]; - - s_keys_move_down_action.generic.type = MTYPE_ACTION; - s_keys_move_down_action.generic.x = 0; - s_keys_move_down_action.generic.y = y += FONTSCALE*9*scale; - s_keys_move_down_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_move_down_action.generic.localdata[0] = ++i; - s_keys_move_down_action.generic.name = bindnames[s_keys_move_down_action.generic.localdata[0]][1]; - - s_keys_inventory_action.generic.type = MTYPE_ACTION; - s_keys_inventory_action.generic.x = 0; - s_keys_inventory_action.generic.y = y += FONTSCALE*9*scale; - s_keys_inventory_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_inventory_action.generic.localdata[0] = ++i; - s_keys_inventory_action.generic.name = bindnames[s_keys_inventory_action.generic.localdata[0]][1]; - - s_keys_inv_use_action.generic.type = MTYPE_ACTION; - s_keys_inv_use_action.generic.x = 0; - s_keys_inv_use_action.generic.y = y += FONTSCALE*9*scale; - s_keys_inv_use_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_inv_use_action.generic.localdata[0] = ++i; - s_keys_inv_use_action.generic.name = bindnames[s_keys_inv_use_action.generic.localdata[0]][1]; - - s_keys_inv_drop_action.generic.type = MTYPE_ACTION; - s_keys_inv_drop_action.generic.x = 0; - s_keys_inv_drop_action.generic.y = y += FONTSCALE*9*scale; - s_keys_inv_drop_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_inv_drop_action.generic.localdata[0] = ++i; - s_keys_inv_drop_action.generic.name = bindnames[s_keys_inv_drop_action.generic.localdata[0]][1]; - - s_keys_inv_prev_action.generic.type = MTYPE_ACTION; - s_keys_inv_prev_action.generic.x = 0; - s_keys_inv_prev_action.generic.y = y += FONTSCALE*9*scale; - s_keys_inv_prev_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_inv_prev_action.generic.localdata[0] = ++i; - s_keys_inv_prev_action.generic.name = bindnames[s_keys_inv_prev_action.generic.localdata[0]][1]; - - s_keys_inv_next_action.generic.type = MTYPE_ACTION; - s_keys_inv_next_action.generic.x = 0; - s_keys_inv_next_action.generic.y = y += FONTSCALE*9*scale; - s_keys_inv_next_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_inv_next_action.generic.localdata[0] = ++i; - s_keys_inv_next_action.generic.name = bindnames[s_keys_inv_next_action.generic.localdata[0]][1]; - - s_keys_alien_disruptor_action.generic.type = MTYPE_ACTION; - s_keys_alien_disruptor_action.generic.x = 0; - s_keys_alien_disruptor_action.generic.y = y += FONTSCALE*9*scale; - s_keys_alien_disruptor_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_alien_disruptor_action.generic.localdata[0] = ++i; - s_keys_alien_disruptor_action.generic.name = bindnames[s_keys_alien_disruptor_action.generic.localdata[0]][1]; - - s_keys_chain_pistol_action.generic.type = MTYPE_ACTION; - s_keys_chain_pistol_action.generic.x = 0; - s_keys_chain_pistol_action.generic.y = y += FONTSCALE*9*scale; - s_keys_chain_pistol_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_chain_pistol_action.generic.localdata[0] = ++i; - s_keys_chain_pistol_action.generic.name = bindnames[s_keys_chain_pistol_action.generic.localdata[0]][1]; - - s_keys_flame_thrower_action.generic.type = MTYPE_ACTION; - s_keys_flame_thrower_action.generic.x = 0; - s_keys_flame_thrower_action.generic.y = y += FONTSCALE*9*scale; - s_keys_flame_thrower_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_flame_thrower_action.generic.localdata[0] = ++i; - s_keys_flame_thrower_action.generic.name = bindnames[s_keys_flame_thrower_action.generic.localdata[0]][1]; - - s_keys_rocket_launcher_action.generic.type = MTYPE_ACTION; - s_keys_rocket_launcher_action.generic.x = 0; - s_keys_rocket_launcher_action.generic.y = y += FONTSCALE*9*scale; - s_keys_rocket_launcher_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_rocket_launcher_action.generic.localdata[0] = ++i; - s_keys_rocket_launcher_action.generic.name = bindnames[s_keys_rocket_launcher_action.generic.localdata[0]][1]; - - s_keys_alien_smartgun_action.generic.type = MTYPE_ACTION; - s_keys_alien_smartgun_action.generic.x = 0; - s_keys_alien_smartgun_action.generic.y = y += FONTSCALE*9*scale; - s_keys_alien_smartgun_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_alien_smartgun_action.generic.localdata[0] = ++i; - s_keys_alien_smartgun_action.generic.name = bindnames[s_keys_alien_smartgun_action.generic.localdata[0]][1]; - - s_keys_alien_beamgun_action.generic.type = MTYPE_ACTION; - s_keys_alien_beamgun_action.generic.x = 0; - s_keys_alien_beamgun_action.generic.y = y += FONTSCALE*9*scale; - s_keys_alien_beamgun_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_alien_beamgun_action.generic.localdata[0] = ++i; - s_keys_alien_beamgun_action.generic.name = bindnames[s_keys_alien_beamgun_action.generic.localdata[0]][1]; - - s_keys_alien_vaporizer_action.generic.type = MTYPE_ACTION; - s_keys_alien_vaporizer_action.generic.x = 0; - s_keys_alien_vaporizer_action.generic.y = y += FONTSCALE*9*scale; - s_keys_alien_vaporizer_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_alien_vaporizer_action.generic.localdata[0] = ++i; - s_keys_alien_vaporizer_action.generic.name = bindnames[s_keys_alien_vaporizer_action.generic.localdata[0]][1]; - - s_keys_violator_action.generic.type = MTYPE_ACTION; - s_keys_violator_action.generic.x = 0; - s_keys_violator_action.generic.y = y += FONTSCALE*9*scale; - s_keys_violator_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_violator_action.generic.localdata[0] = ++i; - s_keys_violator_action.generic.name = bindnames[s_keys_violator_action.generic.localdata[0]][1]; - - s_keys_show_scores_action.generic.type = MTYPE_ACTION; - s_keys_show_scores_action.generic.x = 0; - s_keys_show_scores_action.generic.y = y += FONTSCALE*9*scale; - s_keys_show_scores_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_show_scores_action.generic.localdata[0] = ++i; - s_keys_show_scores_action.generic.name = bindnames[s_keys_show_scores_action.generic.localdata[0]][1]; - - s_keys_grapple_action.generic.type = MTYPE_ACTION; - s_keys_grapple_action.generic.x = 0; - s_keys_grapple_action.generic.y = y += FONTSCALE*9*scale; - s_keys_grapple_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_grapple_action.generic.localdata[0] = ++i; - s_keys_grapple_action.generic.name = bindnames[s_keys_grapple_action.generic.localdata[0]][1]; - - s_keys_sproing_action.generic.type = MTYPE_ACTION; - s_keys_sproing_action.generic.x = 0; - s_keys_sproing_action.generic.y = y += FONTSCALE*9*scale; - s_keys_sproing_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_sproing_action.generic.localdata[0] = ++i; - s_keys_sproing_action.generic.name = bindnames[s_keys_sproing_action.generic.localdata[0]][1]; - - s_keys_haste_action.generic.type = MTYPE_ACTION; - s_keys_haste_action.generic.x = 0; - s_keys_haste_action.generic.y = y += FONTSCALE*9*scale; - s_keys_haste_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_haste_action.generic.localdata[0] = ++i; - s_keys_haste_action.generic.name = bindnames[s_keys_haste_action.generic.localdata[0]][1]; - - s_keys_invis_action.generic.type = MTYPE_ACTION; - s_keys_invis_action.generic.x = 0; - s_keys_invis_action.generic.y = y += FONTSCALE*9*scale; - s_keys_invis_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_invis_action.generic.localdata[0] = ++i; - s_keys_invis_action.generic.name = bindnames[s_keys_invis_action.generic.localdata[0]][1]; - - s_keys_vtaunt1_action.generic.type = MTYPE_ACTION; - s_keys_vtaunt1_action.generic.x = 0; - s_keys_vtaunt1_action.generic.y = y += FONTSCALE*9*scale; - s_keys_vtaunt1_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_vtaunt1_action.generic.localdata[0] = ++i; - s_keys_vtaunt1_action.generic.name = bindnames[s_keys_vtaunt1_action.generic.localdata[0]][1]; - - s_keys_vtaunt2_action.generic.type = MTYPE_ACTION; - s_keys_vtaunt2_action.generic.x = 0; - s_keys_vtaunt2_action.generic.y = y += FONTSCALE*9*scale; - s_keys_vtaunt2_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_vtaunt2_action.generic.localdata[0] = ++i; - s_keys_vtaunt2_action.generic.name = bindnames[s_keys_vtaunt2_action.generic.localdata[0]][1]; - - s_keys_vtaunt3_action.generic.type = MTYPE_ACTION; - s_keys_vtaunt3_action.generic.x = 0; - s_keys_vtaunt3_action.generic.y = y += FONTSCALE*9*scale; - s_keys_vtaunt3_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_vtaunt3_action.generic.localdata[0] = ++i; - s_keys_vtaunt3_action.generic.name = bindnames[s_keys_vtaunt3_action.generic.localdata[0]][1]; - - s_keys_vtaunt4_action.generic.type = MTYPE_ACTION; - s_keys_vtaunt4_action.generic.x = 0; - s_keys_vtaunt4_action.generic.y = y += FONTSCALE*9*scale; - s_keys_vtaunt4_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_vtaunt4_action.generic.localdata[0] = ++i; - s_keys_vtaunt4_action.generic.name = bindnames[s_keys_vtaunt4_action.generic.localdata[0]][1]; - - s_keys_vtaunt5_action.generic.type = MTYPE_ACTION; - s_keys_vtaunt5_action.generic.x = 0; - s_keys_vtaunt5_action.generic.y = y += FONTSCALE*9*scale; - s_keys_vtaunt5_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_vtaunt5_action.generic.localdata[0] = ++i; - s_keys_vtaunt5_action.generic.name = bindnames[s_keys_vtaunt5_action.generic.localdata[0]][1]; - - s_keys_vtauntauto_action.generic.type = MTYPE_ACTION; - s_keys_vtauntauto_action.generic.x = 0; - s_keys_vtauntauto_action.generic.y = y += FONTSCALE*9*scale; - s_keys_vtauntauto_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_vtauntauto_action.generic.localdata[0] = ++i; - s_keys_vtauntauto_action.generic.name = bindnames[s_keys_vtauntauto_action.generic.localdata[0]][1]; - - s_keys_filler_action.generic.type = MTYPE_ACTION; - s_keys_filler_action.generic.x = 0; - s_keys_filler_action.generic.y = y += FONTSCALE*9*scale; - s_keys_filler_action.generic.ownerdraw = DrawKeyBindingFunc; - s_keys_filler_action.generic.localdata[0] = ++i; - s_keys_filler_action.generic.name = bindnames[s_keys_filler_action.generic.localdata[0]][1]; - - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_attack_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_attack2_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_change_weapon_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_walk_forward_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_backpedal_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_run_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_step_left_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_step_right_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_move_up_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_move_down_action ); - - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_inventory_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_inv_use_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_inv_drop_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_inv_prev_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_inv_next_action ); - - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_alien_disruptor_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_chain_pistol_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_flame_thrower_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_rocket_launcher_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_alien_smartgun_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_alien_beamgun_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_alien_vaporizer_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_violator_action ); - - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_show_scores_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_grapple_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_sproing_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_haste_action ); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_invis_action ); - - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_vtaunt1_action); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_vtaunt2_action); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_vtaunt3_action); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_vtaunt4_action); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_vtaunt5_action); - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_vtauntauto_action); - - Menu_AddItem( &s_keys_menu, ( void * ) &s_keys_filler_action ); //needed so last item will show + setup_window (s_keys_screen, s_keys_menu, "CUSTOMIZE CONTROLS"); + + for (i = 0; i < num_bindable_actions; i++) + { + s_keys_actions[i].generic.type = MTYPE_ACTION; + s_keys_actions[i].generic.callback = KeyBindingFunc; + s_keys_actions[i].generic.itemdraw = DrawKeyBindingFunc; + s_keys_actions[i].generic.localstrings[0] = bindnames[i][0]; + s_keys_actions[i].generic.name = bindnames[i][1]; + s_keys_actions[i].generic.itemsizecallback = KeySizeFunc; + Menu_AddItem( &s_keys_menu, &s_keys_actions[i]); + } Menu_SetStatusBar( &s_keys_menu, "enter to change, backspace to clear" ); + + s_keys_menu.maxlines = 30; } -static void Keys_MenuDraw (void) -{ - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "menu_back"); //draw black background first - M_Banner( "m_controls", banneralpha); - Menu_AdjustCursor( &s_keys_menu, 1 ); - Menu_Draw( &s_keys_menu ); -} - -static const char *Keys_MenuKey( int key ) +static const char *Keys_MenuKey (menuframework_s *screen, int key) { - menuaction_s *item = ( menuaction_s * ) Menu_ItemAtCursor( &s_keys_menu ); - - //menu mouse was (bind_grab) + menuaction_s *item = ( menuaction_s * ) cursor.menuitem; if ( bind_grab && !(cursor.buttonused[MOUSEBUTTON1]&&key==K_MOUSE1)) { @@ -1354,212 +1335,484 @@ { char cmd[1024]; - Com_sprintf (cmd, sizeof(cmd), "bind \"%s\" \"%s\"\n", Key_KeynumToString(key), bindnames[item->generic.localdata[0]][0]); + Com_sprintf (cmd, sizeof(cmd), "bind \"%s\" \"%s\"\n", Key_KeynumToString(key), item->generic.localstrings[0]); Cbuf_InsertText (cmd); } - // Knightmare- added Psychospaz's mouse support //dont let selecting with mouse buttons screw everything up - refreshCursorButtons(); + refreshAllCursorButtons(); if (key==K_MOUSE1) cursor.buttonclicks[MOUSEBUTTON1] = -1; - Menu_SetStatusBar( &s_keys_menu, "enter to change, backspace to clear" ); + Menu_SetStatusBar (&s_keys_menu, "enter to change, backspace to clear"); bind_grab = false; + + Menu_AutoArrange (screen); + return menu_out_sound; } switch ( key ) { - case K_KP_ENTER: - case K_ENTER: - case K_MOUSE1: - KeyBindingFunc( item ); - return menu_in_sound; case K_BACKSPACE: // delete bindings case K_DEL: // delete bindings case K_KP_DEL: - M_UnbindCommand( bindnames[item->generic.localdata[0]][0] ); + M_UnbindCommand( item->generic.localstrings[0] ); return menu_out_sound; default: - return Default_MenuKey( &s_keys_menu, key ); + return Default_MenuKey (screen, key); } } void M_Menu_Keys_f (void) { Keys_MenuInit(); - M_PushMenu( Keys_MenuDraw, Keys_MenuKey ); + M_PushMenu (Screen_Draw, Keys_MenuKey, &s_keys_screen); } - /* ======================================================================= -OPTIONS MENU +OPTIONS MENUS - GENERIC CODE FOR OPTIONS WIDGETS ======================================================================= */ -static cvar_t *win_noalttab; -extern cvar_t *in_joystick; -extern cvar_t *cl_showPlayerNames; -extern cvar_t *r_ragdolls; -extern cvar_t *cl_noblood; -extern cvar_t *cl_noskins; -extern cvar_t *cl_precachecustom; -extern cvar_t *r_minimap; -extern cvar_t *r_minimap_style; - -static menuframework_s s_options_menu; -static menuaction_s s_options_defaults_action; -static menuaction_s s_options_customize_options_action; -static menulist_s s_options_mouse_accel_box; -static menuslider_s s_options_sensitivity_slider; -static menuslider_s s_options_menu_sensitivity_slider; -static menulist_s s_options_smoothing_box; -static menulist_s s_options_freelook_box; -static menulist_s s_options_noalttab_box; -static menulist_s s_options_alwaysrun_box; -static menulist_s s_options_invertmouse_box; -static menulist_s s_options_cfont_box; -static menulist_s s_options_gfont_box; -static menulist_s s_options_crosshair_box; -static menulist_s s_options_hud_box; -static menulist_s s_options_discolor_box; -static menuslider_s s_options_sfxvolume_slider; -static menuslider_s s_options_bgvolume_slider; -static menulist_s s_options_joystick_box; -static menulist_s s_options_doppler_effect_list; -static menulist_s s_options_console_action; -static menulist_s s_options_bgmusic_box; -static menulist_s s_options_target_box; -static menulist_s s_options_ragdoll_box; -static menulist_s s_options_noblood_box; -static menulist_s s_options_noskins_box; -static menulist_s s_options_taunts_box; -static menulist_s s_options_precachecustom_box; -static menulist_s s_options_minimap_box; -static menulist_s s_options_showfps_box; -static menulist_s s_options_showtime_box; -static menulist_s s_options_paindist_box; -static menulist_s s_options_explosiondist_box; -static void TargetFunc( void *unused ) +typedef struct { - Cvar_SetValue( "cl_showplayernames", s_options_target_box.curvalue); -} + int maxchars; + int min_value, max_value; // for numerical fields, otherwise ignore +} fieldsize_t; -static void RagDollFunc( void *unused ) +typedef struct { - Cvar_SetValue( "r_ragdolls", s_options_ragdoll_box.curvalue); -} + int slider_min, slider_max; + float cvar_min, cvar_max; +} sliderlimit_t; + +typedef struct { + enum { + option_slider, + option_textcvarslider, + option_spincontrol, + option_textcvarspincontrol, + option_textcvarpicspincontrol, + option_hudspincontrol, + option_minimapspincontrol, + option_numberfield + } type; + const char *cvarname; + const char *displayname; + const char *tooltip; + + // extra data - set the appropriate one + const char **names; + const sliderlimit_t *limits; + const fieldsize_t *fieldsize; + #define setnames(x) (const char **)(x), NULL, NULL + #define setlimits(x) NULL, &(x), NULL + #define setfieldsize(x) NULL, NULL, &(x) + + // flags - optional, defaults to no flags + int flags; + +} option_name_t; -static void NoBloodFunc( void *unused ) +static void SpinOptionFunc (void *_self) { - Cvar_SetValue( "cl_noblood", s_options_noblood_box.curvalue); + menulist_s *self; + const char *cvarname; + + self = (menulist_s *)_self; + cvarname = self->generic.localstrings[0]; + + Cvar_SetValue( cvarname, self->curvalue ); +} + +static menuvec2_t FontSelectorSizeFunc (void *_self, FNT_font_t unused) +{ + menuvec2_t ret; + menulist_s *self; + FNT_font_t font; + + self = (menulist_s *)_self; + font = FNT_AutoGet (*(FNT_auto_t *)self->generic.localptrs[0]); + + ret.y = font->height; + ret.x = RCOLUMN_OFFSET + FNT_PredictSize (font, self->itemnames[self->curvalue], false); + + return ret; } -static void NoskinsFunc( void *unused ) +static void FontSelectorDrawFunc (void *_self, FNT_font_t unused) { - Cvar_SetValue( "cl_noskins", s_options_noskins_box.curvalue); + extern const float light_color[4]; + menulist_s *self; + FNT_font_t font; + + self = (menulist_s *)_self; + font = FNT_AutoGet (*(FNT_auto_t *)self->generic.localptrs[0]); + + menu_box.x = Item_GetX (*self)+RCOLUMN_OFFSET; + menu_box.y = Item_GetY (*self) + MenuText_UpperMargin (self, font->size); + menu_box.height = menu_box.width = 0; + + FNT_BoundedPrint (font, self->itemnames[self->curvalue], FNT_CMODE_QUAKE_SRS, FNT_ALIGN_LEFT, &menu_box, light_color); +} + +static void TextVarSpinOptionFunc (void *_self) +{ + menulist_s *self; + const char *cvarname; + char *cvarval; + + self = (menulist_s *)_self; + cvarname = self->generic.localstrings[0]; + + cvarval = strchr(self->itemnames[self->curvalue], '\0')+1; + Cvar_Set( cvarname, cvarval); } -static void TauntsFunc( void *unused ) +static void UpdateDopplerEffectFunc( void *self ) { - Cvar_SetValue( "cl_playtaunts", s_options_taunts_box.curvalue); + TextVarSpinOptionFunc (self); + R_EndFrame(); // buffer swap needed to show text box + S_UpdateDopplerFactor(); } -static void PrecacheFunc( void *unused ) +static void SliderOptionFunc (void *_self) { - Cvar_SetValue( "cl_precachecustom", s_options_precachecustom_box.curvalue); + menuslider_s *self; + const char *cvarname; + float cvarval, sliderval, valscale; + const sliderlimit_t *limit; + + self = (menulist_s *)_self; + cvarname = self->generic.localstrings[0]; + + limit = (const sliderlimit_t *) self->generic.localptrs[0]; + + sliderval = self->curvalue; + + valscale = (limit->cvar_max-limit->cvar_min)/ + (float)(limit->slider_max-limit->slider_min); + cvarval = limit->cvar_min + valscale*(sliderval-limit->slider_min); + + Cvar_SetValue (cvarname, cvarval); +} + +static void NumberFieldOptionFunc (void *_self) +{ + menufield_s *self; + int num, clamped_num; + const fieldsize_t *fieldsize; + const char *cvarname; + + self = (menufield_s *)_self; + cvarname = self->generic.localstrings[0]; + + fieldsize = (const fieldsize_t *)self->generic.localptrs[0]; + + num = atoi (self->buffer); + clamped_num = clamp (num, fieldsize->min_value, fieldsize->max_value); + + if (num != clamped_num) + { + Com_sprintf (self->buffer, sizeof(self->buffer), "%d", clamped_num); + self->cursor = strlen (self->buffer); + } + + Cvar_SetValue (cvarname, clamped_num); } -static void PainDistFunc( void *unused ) -{ - Cvar_SetValue( "cl_paindist", s_options_paindist_box.curvalue); -} +// HACKS for specific menus +extern cvar_t *crosshair; +#define MAX_CROSSHAIRS 256 +char *crosshair_names[MAX_CROSSHAIRS]; +int numcrosshairs = 0; -static void ExplosionDistFunc( void *unused ) -{ - Cvar_SetValue( "cl_explosiondist", s_options_explosiondist_box.curvalue); -} +static void HudFunc( void *item ); +static void MinimapFunc( void *item ); +static void UpdateBGMusicFunc( void *_self ); -static void JoystickFunc( void *unused ) -{ - Cvar_SetValue( "in_joystick", s_options_joystick_box.curvalue ); -} +static float ClampCvar( float min, float max, float value ); -static void CustomizeControlsFunc( void *unused ) -{ - M_Menu_Keys_f(); -} +extern cvar_t *r_minimap; +extern cvar_t *r_minimap_style; -static void AlwaysRunFunc( void *unused ) -{ - Cvar_SetValue( "cl_run", s_options_alwaysrun_box.curvalue ); -} +#define MAX_FONTS 32 +char *font_names[MAX_FONTS]; +int numfonts = 0; -/* -// unused -static void FreeLookFunc( void *unused ) -{ - Cvar_SetValue( "freelook", s_options_freelook_box.curvalue ); -} -*/ +// name and value lists: for spin-controls where the cvar value isn't simply +// the integer index of whatever text is displaying in the control. We use +// NULL terminators to separate display names and variable values, so that way +// we can use the existing menu code. + +static const char *doppler_effect_items[] = +{ + "off\0000", + "normal\0001", + "high\0003", + "very high\0005", + 0 +}; -static void DisColorFunc( void *unused ) -{ - Cvar_SetValue( "cl_disbeamclr", s_options_discolor_box.curvalue ); -} +int numhuds = 0; +extern cvar_t *cl_hudimage1; +extern cvar_t *cl_hudimage2; +#define MAX_HUDS 256 +char *hud_names[MAX_HUDS]; -static void MouseAccelFunc( void *unused ) +// initialize a menu item as an "option." +void Option_Setup (menumultival_s *item, option_name_t *optionname) { - Cvar_SetValue( "m_accel", s_options_mouse_accel_box.curvalue); + int val, maxval; + char *vartextval; + int i; + float cvarval, sliderval, valscale; + const sliderlimit_t *limit; + const fieldsize_t *fieldsize; + + // Do not re-allocate font/crosshair/HUD names each time the menu is + // displayed - BlackIce + if ( numfonts == 0 ) + SetFontNames (font_names); + + if ( numhuds == 0 ) + SetHudNames (hud_names); + + if ( numcrosshairs == 0 ) + SetCrosshairNames (crosshair_names); + + // initialize item + + item->generic.name = optionname->displayname; + item->generic.tooltip = optionname->tooltip; + item->generic.localstrings[0] = optionname->cvarname; + item->generic.flags = optionname->flags; + item->generic.apply_pending = false; + + switch (optionname->type) + { + case option_spincontrol: + item->generic.type = MTYPE_SPINCONTROL; + item->itemnames = optionname->names; + if (!strcmp (optionname->cvarname, "background_music")) + // FIXME HACK + item->generic.callback = UpdateBGMusicFunc; + else + item->generic.callback = SpinOptionFunc; + if (item->itemnames == onoff_names) + setup_tickbox (*item); + if (item->itemnames == offon_names) + { + setup_tickbox (*item); // because setup_tickbox overwrites itemnames + item->itemnames = offon_names; + } + break; + + case option_textcvarslider: + item->generic.type = MTYPE_SLIDER; + // TODO: use the name part in a tooltip or something + item->itemnames = optionname->names; + item->minvalue = 0; + for (item->maxvalue = 0; item->itemnames[item->maxvalue+1]; item->maxvalue++) + continue; + if (item->itemnames == doppler_effect_items) + // FIXME HACK + item->generic.callback = UpdateDopplerEffectFunc; + else + item->generic.callback = TextVarSpinOptionFunc; + break; + + case option_textcvarspincontrol: + case option_textcvarpicspincontrol: + item->generic.type = MTYPE_SPINCONTROL; + item->itemnames = optionname->names; + item->generic.callback = TextVarSpinOptionFunc; + // FIXME HACK + if (item->itemnames == font_names) + { + item->generic.itemsizecallback = FontSelectorSizeFunc; + item->generic.itemdraw = FontSelectorDrawFunc; + if (!strcmp (optionname->cvarname, "fnt_game")) + item->generic.localptrs[0] = &CL_gameFont; + else if (!strcmp (optionname->cvarname, "fnt_console")) + item->generic.localptrs[0] = &CL_consoleFont; + else if (!strcmp (optionname->cvarname, "fnt_menu")) + item->generic.localptrs[0] = &CL_menuFont; + } + else if (optionname->type == option_textcvarpicspincontrol) + { + item->generic.itemsizecallback = PicSpinSizeFunc; + item->generic.itemdraw = PicSpinDrawFunc; + VectorSet (item->generic.localints, 5, 5, RCOLUMN_OFFSET); + } + break; + + case option_hudspincontrol: + item->generic.type = MTYPE_SPINCONTROL; + item->itemnames = optionname->names; + item->generic.callback = HudFunc; + break; + + case option_minimapspincontrol: + item->generic.type = MTYPE_SPINCONTROL; + item->itemnames = optionname->names; + item->generic.callback = MinimapFunc; + break; + + case option_slider: + limit = optionname->limits; + item->generic.type = MTYPE_SLIDER; + item->minvalue = limit->slider_min; + item->maxvalue = limit->slider_max; + item->generic.callback = SliderOptionFunc; + item->generic.localptrs[0] = limit; + break; + + case option_numberfield: + fieldsize = optionname->fieldsize; + item->generic.type = MTYPE_FIELD; + item->generic.flags |= QMF_NUMBERSONLY; + item->generic.visible_length = fieldsize->maxchars; + item->cursor = 0; + memset (item->buffer, 0, sizeof(item->buffer)); + item->generic.callback = NumberFieldOptionFunc; + item->generic.localptrs[0] = fieldsize; + break; + } + + // initialize value + + switch (optionname->type) + { + case option_spincontrol: + for (maxval = 0; item->itemnames[maxval]; maxval++) + continue; + maxval--; + + val = ClampCvar (0, maxval, Cvar_VariableValue (optionname->cvarname)); + + item->curvalue = val; + Cvar_SetValue (optionname->cvarname, val); + break; + + case option_hudspincontrol: + case option_textcvarspincontrol: + case option_textcvarpicspincontrol: + case option_textcvarslider: + item->curvalue = 0; + vartextval = Cvar_VariableString (optionname->cvarname); + + for (i=0; item->itemnames[i]; i++) + { + char *corresponding_cvar_val = strchr(item->itemnames[i], '\0')+1; + if (!Q_strcasecmp(vartextval, corresponding_cvar_val)) + { + item->curvalue = i; + break; + } + } + break; + + case option_minimapspincontrol: + Cvar_SetValue("r_minimap_style", ClampCvar(0, 1, r_minimap_style->value)); + Cvar_SetValue("r_minimap", ClampCvar(0, 1, r_minimap->value)); + if(r_minimap_style->value == 0) + item->curvalue = 2; + else + item->curvalue = r_minimap->value; + break; + + case option_slider: + limit = optionname->limits; + + cvarval = ClampCvar ( limit->cvar_min, limit->cvar_max, + Cvar_VariableValue (optionname->cvarname)); + Cvar_SetValue (optionname->cvarname, cvarval); + + valscale = (float)(limit->slider_max-limit->slider_min)/ + (limit->cvar_max-limit->cvar_min); + sliderval = limit->slider_min + valscale*(cvarval-limit->cvar_min); + item->curvalue = sliderval; + break; + + case option_numberfield: + fieldsize = optionname->fieldsize; + Com_sprintf (item->buffer, sizeof(item->buffer), "%d", (int)Cvar_VariableValue (optionname->cvarname)); + item->cursor = strlen (item->buffer); + break; + } } -static void MouseSpeedFunc( void *unused ) -{ - Cvar_SetValue( "sensitivity", s_options_sensitivity_slider.curvalue / 2.0F ); -} +// all "options" menus have roughly the same layout, so we can automate some +// of the grunt work -static void MenuMouseSpeedFunc( void *unused ) +typedef struct { - Cvar_SetValue( "menu_sensitivity", s_options_menu_sensitivity_slider.curvalue / 2.0F ); -} - -static void MouseSmoothingFunc( void *unused ) + menuframework_s screen; + menuframework_s window; + menuframework_s panel; + menumultival_s widgets[]; +} options_menu_t; + +static options_menu_t *last_options_menu; +static option_name_t *last_options_menu_namelist; +static int last_options_menu_nitems; + +// Use this anywhere to reinitialize whatever options menu is currently +// showing so it reflects current cvar values. +void Options_Menu_Reinitialize (void) { - Cvar_SetValue( "m_smoothing", s_options_smoothing_box.curvalue ); + int i; + for (i = 0; i < last_options_menu_nitems; i++) + Option_Setup (&last_options_menu->widgets[i], &last_options_menu_namelist[i]); } -#if !defined UNIX_VARIANT -static void NoAltTabFunc( void *unused ) -{ - Cvar_SetValue( "win_noalttab", s_options_noalttab_box.curvalue ); -} -#endif +#define options_menu(menu,title) \ + static struct \ + { \ + menuframework_s screen; \ + menuframework_s window; \ + menuframework_s panel; \ + menumultival_s widgets[static_array_size(menu ## _option_names)]; \ + } menu; \ + \ + setup_window (menu.screen, menu.window, title); \ + setup_panel (menu.window, menu.panel); \ + \ + { \ + \ + int i; \ + for (i = 0; i < static_array_size(menu ## _option_names); i++) \ + { \ + Option_Setup (&menu.widgets[i], &(menu ## _option_names)[i]); \ + Menu_AddItem( &menu.panel, &menu.widgets[i]); \ + } \ + } \ + last_options_menu_nitems = static_array_size(menu ## _option_names); \ + last_options_menu_namelist = &(menu ## _option_names)[0]; \ + last_options_menu = (options_menu_t*)&menu; + -static void MinimapFunc( void *unused ) -{ - if(s_options_minimap_box.curvalue) { - Cvar_SetValue("r_minimap", 1); - if(s_options_minimap_box.curvalue == 2) - Cvar_SetValue("r_minimap_style", 0); - else - Cvar_SetValue("r_minimap_style", s_options_minimap_box.curvalue); - } - else - Cvar_SetValue("r_minimap", s_options_minimap_box.curvalue); -} -static void ShowfpsFunc( void *unused ) -{ - Cvar_SetValue( "cl_drawfps", s_options_showfps_box.curvalue); -} +/* +======================================================================= + +OPTIONS MENUS - DISPLAY OPTIONS MENU -static void ShowtimeFunc( void *unused ) +======================================================================= +*/ + +static void MinimapFunc( void *item ) { - Cvar_SetValue( "cl_drawtimer", s_options_showtime_box.curvalue); + menulist_s *self = (menulist_s *)item; + Cvar_SetValue("r_minimap", self->curvalue != 0); + if(r_minimap->integer) { + Cvar_SetValue("r_minimap_style", self->curvalue % 2); + } } static float ClampCvar( float min, float max, float value ) @@ -1569,48 +1822,6 @@ return value; } -extern cvar_t *con_font; -#define MAX_FONTS 32 -char **font_names = NULL; -int numfonts; - -static void ConsoleFontFunc( void *unused ) -{ - Cvar_Set( "fnt_console", font_names[s_options_cfont_box.curvalue] ); -} - -static void GameFontFunc( void *unused ) -{ - Cvar_Set( "fnt_game", font_names[s_options_gfont_box.curvalue] ); -} - -void SetFontCursor (void) -{ - int i; - int set = 0; - s_options_cfont_box.curvalue = 0; - s_options_gfont_box.curvalue = 0; - - if (numfonts>1) { - for (i=0; font_names[i]; i++) - { - if (!Q_strcasecmp(CL_consoleFont->faceVar->string, font_names[i])) - { - s_options_cfont_box.curvalue = i; - set ++; - } - if (!Q_strcasecmp(CL_gameFont->faceVar->string, font_names[i])) - { - s_options_gfont_box.curvalue = i; - set ++; - } - if ( set == 2 ) { - break; - } - } - } -} - qboolean fontInList (char *check, int num, char **list) { int i; @@ -1620,28 +1831,46 @@ return false; } -void insertFont (char ** list, char *insert, int len ) +// One string after another, both in the same memory block, but each with its +// own null terminator. +char *str_combine (char *in1, char *in2) +{ + size_t outsize; + char *out; + + outsize = strlen(in1)+1+strlen(in2)+1; + out = malloc (outsize); + memset (out, 0, outsize); + strcpy (out, in1); + strcpy (strchr(out, '\0')+1, in2); + + return out; +} + +void insertFile (char ** list, char *insert1, char *insert2, int ndefaults, int len ) { int i, j; + char *tmp; + + tmp = str_combine (insert1, insert2); - //i=1 so default stays first! - for (i=1;ii ;j--) list[j] = list[j-1]; - list[i] = _strdup(insert); + list[i] = tmp; return; } } - list[len] = _strdup(insert); + list[len] = tmp; } static void AddFontNames( char * path , int * nfontnames , char ** list ) @@ -1651,7 +1880,7 @@ int i; fontfiles = FS_ListFilesInFS( path , &nfonts, 0, - SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); + SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); for (i=0;i 3) - sprintf(cHair, "crosshairs/%s", crosshair_names[s_options_crosshair_box.curvalue]); - else - strcpy(cHair, crosshair_names[s_options_crosshair_box.curvalue]); + ncrosshairnames = 4; - Cvar_Set( "crosshair", cHair ); -} - -void SetCrosshairCursor (void) -{ - int i; - char cHaircomp[MAX_OSPATH]; - - s_options_crosshair_box.curvalue = 1; - - if (!crosshair) - crosshair = Cvar_Get ("crosshair", "ch1", CVAR_ARCHIVE); - - if (numcrosshairs>1) - for (i=0; crosshair_names[i]; i++) - { - sprintf(cHaircomp, "crosshairs/%s", crosshair_names[i]); - if (!Q_strcasecmp(crosshair->string, cHaircomp)) - { - s_options_crosshair_box.curvalue = i; - return; - } - } -} - -void insertCrosshair (char ** list, char *insert, int len ) -{ - int i, j; - - for (i=4;ii ;j--) - list[j] = list[j-1]; - - list[i] = _strdup(insert); - - return; - } - } - - list[len] = _strdup(insert); -} - -char **SetCrosshairNames (void) -{ - char *curCrosshair; - char **list = 0, *p; - int ncrosshairs = 0, ncrosshairnames; - char **crosshairfiles; - int i; - - list = malloc( sizeof( char * ) * MAX_CROSSHAIRS ); - memset( list, 0, sizeof( char * ) * MAX_CROSSHAIRS ); - - ncrosshairnames = 4; - - list[0] = _strdup("none"); //the old crosshairs - list[1] = _strdup("ch1"); - list[2] = _strdup("ch2"); - list[3] = _strdup("ch3"); + list[0] = str_combine("none", "none"); //the old crosshairs + list[1] = str_combine("ch1", "ch1"); + list[2] = str_combine("ch2", "ch2"); + list[3] = str_combine("ch3", "ch3"); crosshairfiles = FS_ListFilesInFS( "pics/crosshairs/*.tga", - &ncrosshairs, 0, SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); + &ncrosshairs, 0, SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); for (i=0;icurvalue == 0) { //none sprintf(hud1, "none"); sprintf(hud2, "none"); } - if(s_options_hud_box.curvalue == 1) { + if(self->curvalue == 1) { sprintf(hud1, "pics/i_health.tga"); sprintf(hud2, "pics/i_score.tga"); } - if(s_options_hud_box.curvalue > 1) { - sprintf(hud1, "pics/huds/%s1", hud_names[s_options_hud_box.curvalue]); - sprintf(hud2, "pics/huds/%s2", hud_names[s_options_hud_box.curvalue]); + if(self->curvalue > 1) { + sprintf(hud1, "pics/huds/%s1", hud_names[self->curvalue]); + sprintf(hud2, "pics/huds/%s2", hud_names[self->curvalue]); } //set the cvars, both of them @@ -1847,673 +1988,1060 @@ Cvar_Set( "cl_hudimage2", hud2 ); } -void SetHudCursor (void) -{ - int i; - char hudset[MAX_OSPATH] = "default"; - char hudcomp[MAX_OSPATH]; - - s_options_hud_box.curvalue = 1; - - if (!cl_hudimage1) - cl_hudimage1 = Cvar_Get ("cl_hudimage1", "pics/i_health.tga", CVAR_ARCHIVE); - else { - strcpy(hudset, cl_hudimage1->string); - hudset[strlen(hudset) - 1] = 0; - } - - if (numhuds>0) - for (i=1; hud_names[i]; i++) - { - sprintf(hudcomp, "pics/huds/%s", hud_names[i]); - if (!Q_strcasecmp(hudset, hudcomp)) - { - s_options_hud_box.curvalue = i; - return; - } - } -} - -void insertHud (char ** list, char *insert, int len ) -{ - int i, j; - - for (i=2;ii ;j--) - list[j] = list[j-1]; - - list[i] = _strdup(insert); - - return; - } - } - - list[len] = _strdup(insert); - -} - -char **SetHudNames (void) +void SetHudNames (char **list) { - char *curHud; - char **list = 0, *p; + char *curHud, *curHudFile; + char *p; int nhuds = 0, nhudnames; char **hudfiles; int i; - list = malloc( sizeof( char * ) * MAX_HUDS ); memset( list, 0, sizeof( char * ) * MAX_HUDS ); nhudnames = 2; - list[0] = _strdup("none"); - list[1] = _strdup("default"); //the default hud + list[0] = str_combine("none", "none"); + list[1] = str_combine("default", "pics/i_health.tga"); //the default hud - hudfiles = FS_ListFilesInFS( "pics/huds/*.tga", &nhuds, 0, - SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); + hudfiles = FS_ListFilesInFS( "pics/huds/*1.tga", &nhuds, 0, + SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); for (i=0;icurvalue ); + if ( background_music->value > 0.99f && background_music_vol->value >= 0.1f ) + { + S_StartMenuMusic(); + } +} - s_options_sfxvolume_slider.curvalue = Cvar_VariableValue( "s_volume" ) * 10; - s_options_bgvolume_slider.curvalue = Cvar_VariableValue( "background_music_vol" ) * 10; - s_options_bgmusic_box.curvalue = Cvar_VariableValue("background_music"); - s_options_discolor_box.curvalue = Cvar_VariableValue("cl_disbeamclr"); - - if ( Cvar_VariableValue("s_doppler") == 5.0f ) // TODO: constant declarations would be better - s_options_doppler_effect_list.curvalue = 3; - else if ( Cvar_VariableValue("s_doppler") == 3.0f ) - s_options_doppler_effect_list.curvalue = 2; - else if ( Cvar_VariableValue("s_doppler") == 1.0f ) - s_options_doppler_effect_list.curvalue = 1; - else /* set to 0 for off (or curvalue is invalid) */ - s_options_doppler_effect_list.curvalue = 0; - - Cvar_SetValue( "m_accel", ClampCvar( 0, 1, m_accel->value ) ); - s_options_mouse_accel_box.curvalue = m_accel->value; - s_options_sensitivity_slider.curvalue = ( sensitivity->value ) * 2; - s_options_menu_sensitivity_slider.curvalue = ( menu_sensitivity->value ) * 2; - - Cvar_SetValue("m_smoothing", ClampCvar(0, 1, m_smoothing->value ) ); - s_options_smoothing_box.curvalue = m_smoothing->value; - - SetFontCursor(); - SetCrosshairCursor(); - SetHudCursor(); - - Cvar_SetValue( "cl_run", ClampCvar( 0, 1, cl_run->value ) ); - s_options_alwaysrun_box.curvalue = cl_run->value; - - s_options_invertmouse_box.curvalue = m_pitch->value < 0; - - Cvar_SetValue( "freelook", ClampCvar( 0, 1, freelook->value ) ); - s_options_freelook_box.curvalue = freelook->value; - - Cvar_SetValue( "in_joystick", ClampCvar( 0, 1, in_joystick->value ) ); - s_options_joystick_box.curvalue = in_joystick->value; - - s_options_noalttab_box.curvalue = win_noalttab->value; +// name lists: list of strings terminated by 0 - Cvar_SetValue("cl_showplayernames", ClampCvar(0, 2, cl_showPlayerNames->value ) ); - s_options_target_box.curvalue = cl_showPlayerNames->value; +static const char *minimap_names[] = +{ + "off", + "static", + "rotating", + 0 +}; +static const char *playerid_names[] = +{ + "off", + "centered", + "over player", + 0 +}; - Cvar_SetValue("cl_noskins", ClampCvar(0, 1, cl_noskins->value ) ); - s_options_noskins_box.curvalue = cl_noskins->value; +static const char *color_names[] = +{ + "^2green", + "^4blue", + "^1red", + "^3yellow", + "^6purple", + 0 +}; - Cvar_SetValue("cl_playtaunts", ClampCvar(0, 1, cl_playtaunts->value ) ); - s_options_taunts_box.curvalue = cl_playtaunts->value; +static const char *handedness_names[] = +{ + "right", + "left", + "center", + 0 +}; - Cvar_SetValue("cl_drawfps", ClampCvar(0, 1, cl_drawfps->value ) ); - s_options_showfps_box.curvalue = cl_drawfps->value; +sliderlimit_t mousespeed_limits = +{ + 0, 110, 0.0f, 11.0f +}; - Cvar_SetValue("cl_drawtimer", ClampCvar(0, 1, cl_drawtimer->value ) ); - s_options_showtime_box.curvalue = cl_drawtimer->value; +fieldsize_t fov_limits = +{ + 3, 10, 130 +}; - Cvar_SetValue("cl_precachecustom", ClampCvar(0, 2, cl_precachecustom->value ) ); - s_options_precachecustom_box.curvalue = cl_precachecustom->value; +option_name_t disp_option_names[] = +{ + { + option_spincontrol, + "cl_precachecustom", + "precache custom models", + "Enabling this can result in slow map loading times", + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_showplayernames", + "identify target", + NULL, + setnames (playerid_names) + }, + { + option_spincontrol, + "r_ragdolls", + "ragdolls", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_noblood", + "no blood", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_noskins", + "force martian models", + NULL, + setnames (onoff_names) + }, + { + option_textcvarspincontrol, + "fnt_console", + "console font", + "select the font used to display the console", + setnames (font_names) + }, + { + option_textcvarspincontrol, + "fnt_game", + "game font", + "select the font used in the game", + setnames (font_names) + }, + { + option_textcvarspincontrol, + "fnt_menu", + "menu font", + "select the font used in the menu", + setnames (font_names) + }, + { + option_textcvarpicspincontrol, + "crosshair", + "crosshair", + "select your crosshair", + setnames (crosshair_names) + }, + { + option_hudspincontrol, + "cl_hudimage1", //multiple cvars controlled-- see HudFunc + "HUD", + "select your HUD style", + setnames (hud_names) + }, + { + option_spincontrol, + "cl_disbeamclr", + "disruptor color", + "select disruptor beam color", + setnames (color_names) + }, + { + option_minimapspincontrol, + NULL, //multiple cvars controlled-- see MinimapFunc + "minimap", + "select your minimap style", + setnames (minimap_names) + }, + { + option_spincontrol, + "in_joystick", + "use joystick", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_drawfps", + "display framerate", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_drawtimer", + "display timer", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_simpleitems", + "simple items", + "Draw floating icons instead of 3D models for ingame items", + setnames (onoff_names) + }, + { + option_spincontrol, + "hand", + "weapon handedness", + "NOTE: This does effect aim!", + setnames (handedness_names) + }, + { + option_numberfield, + "fov", + "FOV", + "Horizontal field of view in degrees", + setfieldsize (fov_limits) + } +}; - Cvar_SetValue("cl_paindist", ClampCvar(0, 1, cl_paindist->value ) ); - s_options_paindist_box.curvalue = cl_paindist->value; +#define num_options static_array_size(disp_option_names) - Cvar_SetValue("cl_explosiondist", ClampCvar(0, 1, cl_explosiondist->value ) ); - s_options_explosiondist_box.curvalue = cl_explosiondist->value; +menumultival_s options[num_options]; - Cvar_SetValue("r_ragdolls", ClampCvar(0, 1, r_ragdolls->value ) ); - s_options_ragdoll_box.curvalue = r_ragdolls->value; +static void OptionsResetDefaultsFunc( void *unused ) +{ + Cbuf_AddText ("exec default.cfg\n"); + Cbuf_Execute(); - Cvar_SetValue("cl_noblood", ClampCvar(0, 1, cl_noblood->value ) ); - s_options_noblood_box.curvalue = cl_noblood->value; + Options_Menu_Reinitialize (); - Cvar_SetValue("r_minimap_style", ClampCvar(0, 1, r_minimap_style->value)); - Cvar_SetValue("r_minimap", ClampCvar(0, 1, r_minimap->value)); - if(r_minimap_style->value == 0) { - s_options_minimap_box.curvalue = 2; - } - else if(r_minimap->value) - s_options_minimap_box.curvalue = 1; - else - s_options_minimap_box.curvalue = 0; + CL_Snd_Restart_f(); + S_StartMenuMusic(); } -static void ControlsResetDefaultsFunc( void *unused ) +static void OptionsResetSavedFunc( void *unused ) { - Cbuf_AddText ("exec default.cfg\n"); + Cbuf_AddText ("exec config.cfg\n"); Cbuf_Execute(); - ControlsSetMenuItemValues(); + Options_Menu_Reinitialize (); CL_Snd_Restart_f(); S_StartMenuMusic(); } -//JD - the next three functions were completely screwed up out of the box by id...so they -//are fixed now. -static void InvertMouseFunc( void *unused ) +static void M_Menu_Display_f (void) { - if(s_options_invertmouse_box.curvalue && m_pitch->value > 0) - Cvar_SetValue( "m_pitch", -m_pitch->value ); - else if(m_pitch->value < 0) - Cvar_SetValue( "m_pitch", -m_pitch->value ); + options_menu (disp, "DISPLAY"); + + M_PushMenu_Defaults (disp.screen); } -static void UpdateVolumeFunc( void *unused ) +/* +======================================================================= + +OPTIONS MENUS - VIDEO OPTIONS MENU + +======================================================================= +*/ + +sliderlimit_t brightnesscontrast_limits = { - Cvar_SetValue( "s_volume", s_options_sfxvolume_slider.curvalue / 10 ); -} + 1, 20, 0.1f, 2.0f +}; -static void UpdateBGVolumeFunc( void *unused ) +// FIXME: is this really supposed to be separate? +sliderlimit_t bloom_limits = { - Cvar_SetValue( "background_music_vol", s_options_bgvolume_slider.curvalue / 10 ); -} + 0, 20, 0.0f, 2.0f +}; -static void UpdateBGMusicFunc( void *unused ) +sliderlimit_t modulate_limits = { - Cvar_SetValue( "background_music", s_options_bgmusic_box.curvalue ); - if ( background_music->value > 0.99f && background_music_vol->value >= 0.1f ) - { - S_StartMenuMusic(); - } -} -static void ConsoleFunc( void *unused ) + 1, 5, 1.0f, 5.0f +}; + +fieldsize_t resolution_width_limits = { - /* - ** the proper way to do this is probably to have ToggleConsole_f accept a parameter - */ - extern void Key_ClearTyping( void ); + 4, 640, 2048 +}; -// if ( cl.attractloop ) -// { -// Cbuf_AddText ("killserver\n"); -// return; -// } +fieldsize_t resolution_height_limits = +{ + 4, 480, 1536 +}; - Key_ClearTyping (); - CON_ClearNotify (); +static const char *resolution_items[] = +{ + "[640 480 ]\0000", + "[800 600 ]\0001", + "[960 720 ]\0002", + "[1024 768 ]\0003", + "[1152 864 ]\0004", + "[1280 960 ]\0005", + "[1280 1024]\0006", + "[1360 768 ]\0007", + "[1366 768 ]\0008", + "[1600 1200]\0009", + "[1680 1050]\00010", + "[1920 1080]\00011", + "[2048 1536]\00012", + "[custom ]\000-1", + 0 +}; - M_ForceMenuOff (); - cls.key_dest = key_console; -} +static const char *overbright_items[] = +{ + "low\0001", + "medium\0002", + "high\0003", + 0 +}; + +static const char *texquality_items[] = +{ + "very low\0003", + "low\0002", + "medium\0001", + "high\0000", + 0 +}; -static void UpdateDopplerEffectFunc( void *unused ) +option_name_t video_option_names[] = { - if ( s_options_doppler_effect_list.curvalue == 3 ) { - Cvar_SetValue( "s_doppler", 5.0f ); // very high + option_textcvarspincontrol, + "gl_mode", + "video mode", + NULL, + setnames (resolution_items), + QMF_ACTION_WAIT + }, + { + option_numberfield, + "vid_width", + "custom width", + "set custom horizontal screen resolution", + setfieldsize (resolution_width_limits), + QMF_ACTION_WAIT + }, + { + option_numberfield, + "vid_height", + "custom height", + "set custom vertical screen resolution", + setfieldsize (resolution_height_limits), + QMF_ACTION_WAIT + }, + { + option_slider, + "vid_gamma", + "texture brightness", + NULL, + setlimits (brightnesscontrast_limits) + }, + { + option_slider, + "vid_contrast", + "texture contrast", + NULL, + setlimits (brightnesscontrast_limits) + }, + { + option_slider, + "gl_modulate", + "lightmap brightness", + NULL, + setlimits (modulate_limits) + }, + { + option_spincontrol, + "vid_fullscreen", + "fullscreen", + NULL, + setnames (onoff_names), + QMF_ACTION_WAIT + }, + { + option_spincontrol, + "r_bloom", + "light bloom", + NULL, + setnames (onoff_names) + }, + { + option_slider, + "r_bloom_intensity", + "bloom intensity", + NULL, + setlimits (bloom_limits) + }, + { + option_textcvarslider, + "r_overbrightbits", + "overbright bits", + NULL, + setnames (overbright_items) + }, + { + option_textcvarslider, + "gl_picmip", + "texture quality", + NULL, + setnames (texquality_items) + }, + { + option_spincontrol, + "gl_glsl_shaders", + "GLSL shaders", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_paindist", + "pain distortion fx", + "GLSL must be enabled for this to take effect", + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_explosiondist", + "explosion distortion fx", + "GLSL must be enabled for this to take effect", + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_raindist", + "rain droplet fx", + "GLSL must be enabled for this to take effect", + setnames (onoff_names) + }, + { + option_spincontrol, + "gl_finish", + "triple buffering", + "improved framerates, but displayed frame is more out of date", + setnames (offon_names), + QMF_ACTION_WAIT + }, + { + option_spincontrol, + "gl_swapinterval", + "vertical sync", + "should be on unless framerates dip below your monitor's refresh rate", + setnames (onoff_names), + QMF_ACTION_WAIT } - else if ( s_options_doppler_effect_list.curvalue == 2 ) +}; + +const char *graphical_preset_names[][3] = +{ + // display name, cfg name, tooltip { - Cvar_SetValue( "s_doppler", 3.0f ); // high - } - else if ( s_options_doppler_effect_list.curvalue == 1 ) + "High Compatibility", "compatibility", + "use when all other modes fail or run slowly" + }, { - Cvar_SetValue( "s_doppler", 1.0f ); // normal - } - else if ( s_options_doppler_effect_list.curvalue == 0 ) + "High Performance", "maxperformance", + "fast rendering, many effects disabled" + }, { - Cvar_SetValue( "s_doppler", 0.0f ); // off + "Performance", "maxperformance", + "GLSL per-pixel lighting and postprocess" + }, + { + "Quality", "quality", + "GLSL per-pixel effects on all surfaces" + }, + { + "High Quality", "maxquality", + "GLSL, shadows, light shafts from sun" } +}; - R_EndFrame(); // buffer swap needed to show text box - S_UpdateDopplerFactor(); +#define num_graphical_presets static_array_size(graphical_preset_names) + +static menuaction_s s_graphical_presets[num_graphical_presets]; +static menuframework_s *Video_MenuInit (void); + +static void PresetCallback (void *_self) +{ + char cmd[MAX_STRING_CHARS]; + menuaction_s *self = (menuaction_s *)_self; + + Com_sprintf (cmd, sizeof(cmd), "exec graphical_presets/%s.cfg", self->generic.localstrings[0]); + Cmd_ExecuteString (cmd); + Cbuf_Execute (); + Video_MenuInit (); //TODO: alert user of the need to apply here } -void Options_MenuInit( void ) +void VidApplyFunc (void *self) { - static const char *background_music_items[] = - { - "disabled", - "enabled", - 0 - }; + #if defined UNIX_VARIANT + extern qboolean vid_restart; + #endif + extern cvar_t *vid_ref; + + Menu_ApplyMenu (Menu_GetItemTree ((menuitem_s *)self)); + + RS_FreeUnmarked(); + Cvar_SetValue("scriptsloaded", 0); //scripts get flushed - static const char *doppler_effect_items[] = - { - "off", - "normal", - "high", - "very high", - 0 - }; + vid_ref->modified = true; +#if defined UNIX_VARIANT + vid_restart = true; +#endif - static const char *yesno_names[] = - { - "no", - "yes", - 0 - }; + M_ForceMenuOff(); +} - static const char *onoff_names[] = - { - "off", - "on", - 0 - }; +static menuframework_s *Video_MenuInit (void) +{ + int i; + + options_menu (video, "VIDEO OPTIONS"); + + add_text (video.window, NULL, 0); // spacer + + for (i = 0; i < num_graphical_presets; i++) + { + s_graphical_presets[i].generic.type = MTYPE_ACTION; + s_graphical_presets[i].generic.flags = QMF_BUTTON|QMF_RIGHT_COLUMN; + s_graphical_presets[i].generic.callback = PresetCallback; + s_graphical_presets[i].generic.name = graphical_preset_names[i][0]; + s_graphical_presets[i].generic.localstrings[0] = graphical_preset_names[i][1]; + s_graphical_presets[i].generic.tooltip = graphical_preset_names[i][2]; + Menu_AddItem (&video.window, &s_graphical_presets[i]); + } + + add_text (video.window, NULL, 0); // spacer + + add_action (video.window, "Apply", VidApplyFunc, 0); + + return &video.screen; +} - static const char *minimap_names[] = - { - "off", - "static", - "rotating", - 0 - }; - static const char *playerid_names[] = - { - "off", - "centered", - "over player", - 0 - }; +static void M_Menu_Video_f (void) +{ + menuframework_s *screen = Video_MenuInit (); + M_PushMenu_Defaults (*screen); +} + + +/* +======================================================================= + +OPTIONS MENUS - AUDIO OPTIONS MENU + +======================================================================= +*/ + +sliderlimit_t volume_limits = +{ + 1, 50, 0.0f, 1.0f +}; - static const char *color_names[] = +option_name_t audio_option_names[] = +{ { - "green", - "blue", - "red", - "yellow", - "purple", - 0 - }; + option_spincontrol, + "cl_playtaunts", + "player taunts", + NULL, + setnames (onoff_names) + }, + { + option_slider, + "s_volume", + "global volume", + NULL, + setlimits (volume_limits) + }, + { + option_slider, + "background_music_vol", + "music volume", + NULL, + setlimits (volume_limits) + }, + { + option_spincontrol, + "background_music", + "music", + NULL, + setnames (onoff_names) + }, + { + option_textcvarslider, + "s_doppler", + "doppler effect", + NULL, + setnames (doppler_effect_items) + }, +}; - float scale; +static void M_Menu_Audio_f (void) +{ + options_menu (audio, "AUDIO OPTIONS"); + M_PushMenu_Defaults (audio.screen); +} - scale = (float)(viddef.height)/600; - banneralpha = 0.1; +/* +======================================================================= - win_noalttab = Cvar_Get( "win_noalttab", "0", CVAR_ARCHIVE ); +OPTIONS MENUS - INPUT OPTIONS MENU - /* - ** configure controls menu and menu items - */ - s_options_menu.x = viddef.width / 2 + 55*scale; - s_options_menu.y = viddef.height / 2 - 242*scale; - s_options_menu.nitems = 0; - - s_options_customize_options_action.generic.type = MTYPE_ACTION; - s_options_customize_options_action.generic.x = 0; - s_options_customize_options_action.generic.y = FONTSCALE*10*scale; - s_options_customize_options_action.generic.name = "customize controls"; - s_options_customize_options_action.generic.callback = CustomizeControlsFunc; - - s_options_precachecustom_box.generic.type = MTYPE_SPINCONTROL; - s_options_precachecustom_box.generic.x = 0; - s_options_precachecustom_box.generic.y = FONTSCALE*26*scale; - s_options_precachecustom_box.generic.name = "precache custom models"; - s_options_precachecustom_box.generic.callback = PrecacheFunc; - s_options_precachecustom_box.itemnames = onoff_names; - s_options_precachecustom_box.generic.statusbar = "Enabling this can result in slow map loading times"; - - s_options_paindist_box.generic.type = MTYPE_SPINCONTROL; - s_options_paindist_box.generic.x = 0; - s_options_paindist_box.generic.y = FONTSCALE*36*scale; - s_options_paindist_box.generic.name = "pain distortion fx"; - s_options_paindist_box.generic.callback = PainDistFunc; - s_options_paindist_box.itemnames = onoff_names; - s_options_paindist_box.generic.statusbar = "GLSL must be enabled for this to take effect"; - - s_options_explosiondist_box.generic.type = MTYPE_SPINCONTROL; - s_options_explosiondist_box.generic.x = 0; - s_options_explosiondist_box.generic.y = FONTSCALE*46*scale; - s_options_explosiondist_box.generic.name = "explosion distortion fx"; - s_options_explosiondist_box.generic.callback = ExplosionDistFunc; - s_options_explosiondist_box.itemnames = onoff_names; - s_options_explosiondist_box.generic.statusbar = "GLSL must be enabled for this to take effect"; - - s_options_target_box.generic.type = MTYPE_SPINCONTROL; - s_options_target_box.generic.x = 0; - s_options_target_box.generic.y = FONTSCALE*56*scale; - s_options_target_box.generic.name = "identify target"; - s_options_target_box.generic.callback = TargetFunc; - s_options_target_box.itemnames = playerid_names; - - s_options_ragdoll_box.generic.type = MTYPE_SPINCONTROL; - s_options_ragdoll_box.generic.x = 0; - s_options_ragdoll_box.generic.y = FONTSCALE*66*scale; - s_options_ragdoll_box.generic.name = "ragdolls"; - s_options_ragdoll_box.generic.callback = RagDollFunc; - s_options_ragdoll_box.itemnames = onoff_names; - - s_options_noblood_box.generic.type = MTYPE_SPINCONTROL; - s_options_noblood_box.generic.x = 0; - s_options_noblood_box.generic.y = FONTSCALE*76*scale; - s_options_noblood_box.generic.name = "no blood"; - s_options_noblood_box.generic.callback = NoBloodFunc; - s_options_noblood_box.itemnames = onoff_names; - - s_options_noskins_box.generic.type = MTYPE_SPINCONTROL; - s_options_noskins_box.generic.x = 0; - s_options_noskins_box.generic.y = FONTSCALE*86*scale; - s_options_noskins_box.generic.name = "force martian models"; - s_options_noskins_box.generic.callback = NoskinsFunc; - s_options_noskins_box.itemnames = onoff_names; - - s_options_taunts_box.generic.type = MTYPE_SPINCONTROL; - s_options_taunts_box.generic.x = 0; - s_options_taunts_box.generic.y = FONTSCALE*96*scale; - s_options_taunts_box.generic.name = "player taunts"; - s_options_taunts_box.generic.callback = TauntsFunc; - s_options_taunts_box.itemnames = onoff_names; - - s_options_sfxvolume_slider.generic.type = MTYPE_SLIDER; - s_options_sfxvolume_slider.generic.x = 0; - s_options_sfxvolume_slider.generic.y = FONTSCALE*106*scale; - s_options_sfxvolume_slider.generic.name = "global volume"; - s_options_sfxvolume_slider.generic.callback = UpdateVolumeFunc; - s_options_sfxvolume_slider.minvalue = 0; - s_options_sfxvolume_slider.maxvalue = 10; - s_options_sfxvolume_slider.curvalue = Cvar_VariableValue( "s_volume" ) * 10; - - s_options_bgvolume_slider.generic.type = MTYPE_SLIDER; - s_options_bgvolume_slider.generic.x = 0; - s_options_bgvolume_slider.generic.y = FONTSCALE*116*scale; - s_options_bgvolume_slider.generic.name = "music volume"; - s_options_bgvolume_slider.generic.callback = UpdateBGVolumeFunc; - s_options_bgvolume_slider.minvalue = 0; - s_options_bgvolume_slider.maxvalue = 10; - s_options_bgvolume_slider.curvalue = Cvar_VariableValue( "background_music_vol" ) * 10; - - s_options_bgmusic_box.generic.type = MTYPE_SPINCONTROL; - s_options_bgmusic_box.generic.x = 0; - s_options_bgmusic_box.generic.y = FONTSCALE*126*scale; - s_options_bgmusic_box.generic.name = "Background music"; - s_options_bgmusic_box.generic.callback = UpdateBGMusicFunc; - s_options_bgmusic_box.itemnames = background_music_items; - s_options_bgmusic_box.curvalue = Cvar_VariableValue("background_music"); - - s_options_doppler_effect_list.generic.type = MTYPE_SPINCONTROL; - s_options_doppler_effect_list.generic.x = 0; - s_options_doppler_effect_list.generic.y = FONTSCALE*136*scale; - s_options_doppler_effect_list.generic.name = "doppler sound effect"; - s_options_doppler_effect_list.generic.callback = UpdateDopplerEffectFunc; - s_options_doppler_effect_list.itemnames = doppler_effect_items; - s_options_doppler_effect_list.curvalue = Cvar_VariableValue( "s_doppler" ); - - s_options_mouse_accel_box.generic.type = MTYPE_SPINCONTROL; - s_options_mouse_accel_box.generic.x = 0; - s_options_mouse_accel_box.generic.y = FONTSCALE*146*scale; - s_options_mouse_accel_box.generic.name = "mouse acceleration"; - s_options_mouse_accel_box.generic.callback = MouseAccelFunc; - s_options_mouse_accel_box.itemnames = yesno_names; - s_options_mouse_accel_box.curvalue = Cvar_VariableValue( "m_accel" ); - - s_options_sensitivity_slider.generic.type = MTYPE_SLIDER; - s_options_sensitivity_slider.generic.x = 0; - s_options_sensitivity_slider.generic.y = FONTSCALE*156*scale; - s_options_sensitivity_slider.generic.name = "mouse speed"; - s_options_sensitivity_slider.generic.callback = MouseSpeedFunc; - s_options_sensitivity_slider.minvalue = 2; - s_options_sensitivity_slider.maxvalue = 22; - - s_options_menu_sensitivity_slider.generic.type = MTYPE_SLIDER; - s_options_menu_sensitivity_slider.generic.x = 0; - s_options_menu_sensitivity_slider.generic.y = FONTSCALE*166*scale; - s_options_menu_sensitivity_slider.generic.name = "menu mouse speed"; - s_options_menu_sensitivity_slider.generic.callback = MenuMouseSpeedFunc; - s_options_menu_sensitivity_slider.minvalue = 2; - s_options_menu_sensitivity_slider.maxvalue = 22; - - s_options_smoothing_box.generic.type = MTYPE_SPINCONTROL; - s_options_smoothing_box.generic.x = 0; - s_options_smoothing_box.generic.y = FONTSCALE*176*scale; - s_options_smoothing_box.generic.name = "mouse smoothing"; - s_options_smoothing_box.generic.callback = MouseSmoothingFunc; - s_options_smoothing_box.itemnames = yesno_names; - - s_options_alwaysrun_box.generic.type = MTYPE_SPINCONTROL; - s_options_alwaysrun_box.generic.x = 0; - s_options_alwaysrun_box.generic.y = FONTSCALE*186*scale; - s_options_alwaysrun_box.generic.name = "always run"; - s_options_alwaysrun_box.generic.callback = AlwaysRunFunc; - s_options_alwaysrun_box.itemnames = yesno_names; - - s_options_invertmouse_box.generic.type = MTYPE_SPINCONTROL; - s_options_invertmouse_box.generic.x = 0; - s_options_invertmouse_box.generic.y = FONTSCALE*196*scale; - s_options_invertmouse_box.generic.name = "invert mouse"; - s_options_invertmouse_box.generic.callback = InvertMouseFunc; - s_options_invertmouse_box.itemnames = yesno_names; +======================================================================= +*/ - // Do not re-allocate font/crosshair/HUD names each time the menu is - // displayed - BlackIce - if ( font_names == NULL ) - font_names = SetFontNames (); - s_options_cfont_box.generic.type = MTYPE_SPINCONTROL; - s_options_cfont_box.generic.x = 0; - s_options_cfont_box.generic.y = FONTSCALE*206*scale; - s_options_cfont_box.generic.name = "console font"; - s_options_cfont_box.generic.callback = ConsoleFontFunc; - s_options_cfont_box.itemnames = (const char **) font_names; - s_options_cfont_box.generic.statusbar = "select the font used to display the console"; - - s_options_gfont_box.generic.type = MTYPE_SPINCONTROL; - s_options_gfont_box.generic.x = 0; - s_options_gfont_box.generic.y = FONTSCALE*216*scale; - s_options_gfont_box.generic.name = "game font"; - s_options_gfont_box.generic.callback = GameFontFunc; - s_options_gfont_box.itemnames = (const char **) font_names; - s_options_gfont_box.generic.statusbar = "select the font used in the game"; - - if ( crosshair_names == NULL ) - crosshair_names = SetCrosshairNames (); - s_options_crosshair_box.generic.type = MTYPE_SPINCONTROL; - s_options_crosshair_box.generic.x = 0; - s_options_crosshair_box.generic.y = FONTSCALE*226*scale; - s_options_crosshair_box.generic.name = "crosshair"; - s_options_crosshair_box.generic.callback = CrosshairFunc; - s_options_crosshair_box.itemnames = (const char **) crosshair_names; - s_options_crosshair_box.generic.statusbar = "select your crosshair"; - - if ( hud_names == NULL ) - hud_names = SetHudNames (); - s_options_hud_box.generic.type = MTYPE_SPINCONTROL; - s_options_hud_box.generic.x = 0; - s_options_hud_box.generic.y = FONTSCALE*236*scale; - s_options_hud_box.generic.name = "hud"; - s_options_hud_box.generic.callback = HudFunc; - s_options_hud_box.itemnames = (const char **) hud_names; - s_options_hud_box.generic.statusbar = "select your hud style"; - - s_options_discolor_box.generic.type = MTYPE_SPINCONTROL; - s_options_discolor_box.generic.x = 0; - s_options_discolor_box.generic.y = FONTSCALE*246*scale; - s_options_discolor_box.generic.name = "disruptor color"; - s_options_discolor_box.generic.callback = DisColorFunc; - s_options_discolor_box.itemnames = color_names; - s_options_discolor_box.generic.statusbar = "select disruptor beam color"; - - s_options_minimap_box.generic.type = MTYPE_SPINCONTROL; - s_options_minimap_box.generic.x = 0; - s_options_minimap_box.generic.y = FONTSCALE*256*scale; - s_options_minimap_box.generic.name = "minimap"; - s_options_minimap_box.generic.callback = MinimapFunc; - s_options_minimap_box.itemnames = minimap_names; - - s_options_joystick_box.generic.type = MTYPE_SPINCONTROL; - s_options_joystick_box.generic.x = 0; - s_options_joystick_box.generic.y = FONTSCALE*266*scale; - s_options_joystick_box.generic.name = "use joystick"; - s_options_joystick_box.generic.callback = JoystickFunc; - s_options_joystick_box.itemnames = yesno_names; - - s_options_showfps_box.generic.type = MTYPE_SPINCONTROL; - s_options_showfps_box.generic.x = 0; - s_options_showfps_box.generic.y = FONTSCALE*276*scale; - s_options_showfps_box.generic.name = "display fps"; - s_options_showfps_box.generic.callback = ShowfpsFunc; - s_options_showfps_box.itemnames = yesno_names; - - s_options_showtime_box.generic.type = MTYPE_SPINCONTROL; - s_options_showtime_box.generic.x = 0; - s_options_showtime_box.generic.y = FONTSCALE*286*scale; - s_options_showtime_box.generic.name = "display time"; - s_options_showtime_box.generic.callback = ShowtimeFunc; - s_options_showtime_box.itemnames = yesno_names; - - s_options_defaults_action.generic.type = MTYPE_ACTION; - s_options_defaults_action.generic.x = 0; - s_options_defaults_action.generic.y = FONTSCALE*302*scale; - s_options_defaults_action.generic.name = "reset defaults"; - s_options_defaults_action.generic.callback = ControlsResetDefaultsFunc; - - s_options_console_action.generic.type = MTYPE_ACTION; - s_options_console_action.generic.x = 0; - s_options_console_action.generic.y = FONTSCALE*312*scale; - s_options_console_action.generic.name = "go to console"; - s_options_console_action.generic.callback = ConsoleFunc; - - ControlsSetMenuItemValues(); - - Menu_AddItem( &s_options_menu, ( void * ) &s_options_customize_options_action ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_precachecustom_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_paindist_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_explosiondist_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_target_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_ragdoll_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_noblood_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_noskins_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_taunts_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_sfxvolume_slider ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_bgvolume_slider ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_bgmusic_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_doppler_effect_list ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_mouse_accel_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_sensitivity_slider ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_menu_sensitivity_slider ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_smoothing_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_alwaysrun_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_invertmouse_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_cfont_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_gfont_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_crosshair_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_hud_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_discolor_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_minimap_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_joystick_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_showfps_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_showtime_box ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_defaults_action ); - Menu_AddItem( &s_options_menu, ( void * ) &s_options_console_action ); -} - -void Options_MenuDraw (void) -{ - char path[MAX_OSPATH]; - - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "menu_back"); //draw black background first - M_Banner( "m_options", banneralpha ); - if(strcmp(crosshair->string, "none")) { - sprintf(path, "/pics/%s", crosshair->string); - M_CrosshairPic(path); - } - //draw disruptor color icon - Menu_AdjustCursor( &s_options_menu, 1 ); - Menu_Draw( &s_options_menu ); +option_name_t input_option_names[] = +{ + { + option_slider, + "sensitivity", + "mouse speed", + NULL, + setlimits (mousespeed_limits) + }, + { + option_slider, + "menu_sensitivity", + "menu mouse speed", + NULL, + setlimits (mousespeed_limits) + }, + { + option_spincontrol, + "m_accel", + "mouse acceleration", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "m_smoothing", + "mouse smoothing", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "cl_run", + "always run", + NULL, + setnames (onoff_names) + }, +}; + +static void InvertMouseFunc( void *_self ) +{ + menulist_s *self = (menulist_s *)_self; + if(self->curvalue && m_pitch->value > 0) + Cvar_SetValue( "m_pitch", -m_pitch->value ); + else if(m_pitch->value < 0) + Cvar_SetValue( "m_pitch", -m_pitch->value ); } -const char *Options_MenuKey( int key ) +void CustomizeControlsFunc (void *unused) { - return Default_MenuKey( &s_options_menu, key ); + M_Menu_Keys_f (); } -void M_Menu_Options_f (void) +static void M_Menu_Input_f (void) { - Options_MenuInit(); - M_PushMenu ( Options_MenuDraw, Options_MenuKey ); + options_menu (input, "INPUT OPTIONS"); + + { + static menulist_s s_options_invertmouse_box; + s_options_invertmouse_box.generic.name = "invert mouse"; + s_options_invertmouse_box.generic.callback = InvertMouseFunc; + s_options_invertmouse_box.curvalue = m_pitch->value < 0; + setup_tickbox (s_options_invertmouse_box); + Menu_AddItem (&input.panel, &s_options_invertmouse_box); + } + + add_text (input.window, NULL, 0); //spacer + + add_action (input.window, "Key Bindings", CustomizeControlsFunc, 0); + + M_PushMenu_Defaults (input.screen); } /* ======================================================================= -VIDEO MENU +OPTIONS MENUS - NETWORK OPTIONS MENU ======================================================================= */ -void M_Menu_Video_f (void) +option_name_t net_option_names[] = +{ + { + option_spincontrol, + "allow_download", + "download missing files", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "allow_download_maps", + "maps", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "allow_download_players", + "player models/skins", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "allow_download_models", + "models", + NULL, + setnames (onoff_names) + }, + { + option_spincontrol, + "allow_download_sounds", + "sounds", + NULL, + setnames (onoff_names) + }, +}; + +static void M_Menu_Net_f (void) { - VID_MenuInit(); - M_PushMenu( VID_MenuDraw, VID_MenuKey ); + options_menu (net, "NETWORK OPTIONS"); + M_PushMenu_Defaults (net.screen); } + /* ============================================================================= -END GAME MENU +OPTIONS MENUS - IRC OPTIONS MENU ============================================================================= */ -static int credits_start_time; -static const char **credits; -//static char *creditsIndex[256]; -static char *creditsBuffer; -static const char *idcredits[] = + +char IRC_key[64]; + +static menuframework_s s_irc_screen; + +static menuframework_s s_irc_menu; +static menuaction_s s_irc_join; +static menulist_s s_irc_joinatstartup; + +static menufield_s s_irc_server; +static menufield_s s_irc_channel; +static menufield_s s_irc_port; +static menulist_s s_irc_ovnickname; +static menufield_s s_irc_nickname; +static menufield_s s_irc_kickrejoin; +static menufield_s s_irc_reconnectdelay; + +static void JoinIRCFunc( void *unused ) +{ + if(PLAYER_NAME_UNIQUE) + CL_InitIRC(); +} + +static void QuitIRCFunc( void *unused ) +{ + CL_IRCInitiateShutdown(); +} + +static void ApplyIRCSettings( void * self ) +{ + qboolean running = CL_IRCIsRunning( ); + if ( running ) { + CL_IRCInitiateShutdown( ); + CL_IRCWaitShutdown( ); + } + + Cvar_Set( "cl_IRC_server" , s_irc_server.buffer); + Cvar_Set( "cl_IRC_channel" , s_irc_channel.buffer); + Cvar_SetValue( "cl_IRC_port" , atoi( s_irc_port.buffer ) ); + Cvar_SetValue( "cl_IRC_override_nickname" , s_irc_ovnickname.curvalue ); + Cvar_Set( "cl_IRC_nickname" , s_irc_nickname.buffer ); + Cvar_SetValue( "cl_IRC_kick_rejoin" , atoi( s_irc_kickrejoin.buffer ) ); + Cvar_SetValue( "cl_IRC_reconnect_delay" , atoi( s_irc_reconnectdelay.buffer ) ); + + if ( running ) + CL_InitIRC( ); + + M_PopMenu( ); +} + +// TODO: use the options menu macros like everywhere else. +static void IRC_Settings_SubMenuInit( ) +{ + setup_tickbox (s_irc_joinatstartup); + s_irc_joinatstartup.generic.name = "join at startup"; + s_irc_joinatstartup.generic.localstrings[0] = "cl_IRC_connect_at_startup"; + s_irc_joinatstartup.curvalue = cl_IRC_connect_at_startup->integer != 0; + s_irc_joinatstartup.generic.callback = SpinOptionFunc; + Menu_AddItem( &s_irc_menu, &s_irc_joinatstartup ); + + s_irc_server.generic.type = MTYPE_FIELD; + s_irc_server.generic.name = "server"; + s_irc_server.generic.tooltip = "Address or name of the IRC server"; + s_irc_server.generic.visible_length = LONGINPUT_SIZE; + s_irc_server.cursor = strlen( cl_IRC_server->string ); + strcpy( s_irc_server.buffer, Cvar_VariableString("cl_IRC_server") ); + Menu_AddItem( &s_irc_menu, &s_irc_server ); + + s_irc_channel.generic.type = MTYPE_FIELD; + s_irc_channel.generic.name = "channel"; + s_irc_channel.generic.tooltip = "Name of the channel to join"; + s_irc_channel.generic.visible_length = LONGINPUT_SIZE; + s_irc_channel.cursor = strlen( cl_IRC_channel->string ); + strcpy( s_irc_channel.buffer, Cvar_VariableString("cl_IRC_channel") ); + Menu_AddItem( &s_irc_menu, &s_irc_channel ); + + s_irc_port.generic.type = MTYPE_FIELD; + s_irc_port.generic.name = "port"; + s_irc_port.generic.tooltip = "Port to connect to on the server"; + s_irc_port.generic.visible_length = 4; + s_irc_port.cursor = strlen( cl_IRC_port->string ); + strcpy( s_irc_port.buffer, Cvar_VariableString("cl_IRC_port") ); + Menu_AddItem( &s_irc_menu, &s_irc_port ); + + s_irc_ovnickname.generic.name = "override nick"; + s_irc_ovnickname.generic.tooltip = "Enable this to override the default, player-based nick"; + setup_tickbox (s_irc_ovnickname); + s_irc_ovnickname.curvalue = cl_IRC_override_nickname->value ? 1 : 0; + Menu_AddItem( &s_irc_menu, &s_irc_ovnickname ); + + s_irc_nickname.generic.type = MTYPE_FIELD; + s_irc_nickname.generic.name = "nick"; + s_irc_nickname.generic.tooltip = "Nickname override to use"; + s_irc_nickname.generic.visible_length = LONGINPUT_SIZE; + s_irc_nickname.cursor = strlen( cl_IRC_nickname->string ); + strcpy( s_irc_nickname.buffer, Cvar_VariableString("cl_IRC_nickname") ); + Menu_AddItem( &s_irc_menu, &s_irc_nickname ); + + s_irc_kickrejoin.generic.type = MTYPE_FIELD; + s_irc_kickrejoin.generic.name = "autorejoin"; + s_irc_kickrejoin.generic.tooltip = "Delay before automatic rejoin after kick (0 to disable)"; + s_irc_kickrejoin.generic.visible_length = 4; + s_irc_kickrejoin.cursor = strlen( cl_IRC_kick_rejoin->string ); + strcpy( s_irc_kickrejoin.buffer, Cvar_VariableString("cl_IRC_kick_rejoin") ); + Menu_AddItem( &s_irc_menu, &s_irc_kickrejoin ); + + s_irc_reconnectdelay.generic.type = MTYPE_FIELD; + s_irc_reconnectdelay.generic.name = "reconnect"; + s_irc_reconnectdelay.generic.tooltip= "Delay between reconnection attempts (minimum 5)"; + s_irc_reconnectdelay.generic.visible_length = 4; + s_irc_reconnectdelay.cursor = strlen( cl_IRC_reconnect_delay->string ); + strcpy( s_irc_reconnectdelay.buffer, Cvar_VariableString("cl_IRC_reconnect_delay") ); + Menu_AddItem( &s_irc_menu, &s_irc_reconnectdelay ); + + add_action (s_irc_menu, "Apply", ApplyIRCSettings, 0); + +} + + +static void M_FindIRCKey ( void ) +{ + int count; + int j; + int l; + char *b; + int twokeys[2]; + + twokeys[0] = twokeys[1] = -1; + l = strlen("messagemode3"); + count = 0; + + for (j=0 ; j<256 ; j++) + { + b = keybindings[j]; + if (!b) + continue; + if (!strncmp (b, "messagemode3", l) ) + { + twokeys[count] = j; + count++; + if (count == 2) + break; + } + } + //got our key + Com_sprintf(IRC_key, sizeof(IRC_key), "(IRC Chat Key is %s)", Key_KeynumToString(twokeys[0])); +} + +void IRC_MenuInit( void ) +{ + if(!cl_IRC_connect_at_startup) + cl_IRC_connect_at_startup = Cvar_Get("cl_IRC_connect_at_startup", "0", CVAR_ARCHIVE); + + M_FindIRCKey(); + + setup_window (s_irc_screen, s_irc_menu, "IRC CHAT OPTIONS"); + + s_irc_join.generic.type = MTYPE_ACTION; + s_irc_join.generic.flags = QMF_BUTTON; + s_irc_join.generic.name = "Connect Now"; + s_irc_join.generic.callback = JoinIRCFunc; + Menu_AddItem( &s_irc_menu, &s_irc_join ); + + IRC_Settings_SubMenuInit (); + + add_text (s_irc_menu, IRC_key, 0); + Menu_AutoArrange (&s_irc_screen); +} + + +void IRC_MenuDraw (menuframework_s *dummy, menuvec2_t offset) +{ + //warn user that they cannot join until changing default player name + if(!PLAYER_NAME_UNIQUE) + s_irc_menu.statusbar = "You must create your player name before joining a server!"; + else if(CL_IRCIsConnected()) + s_irc_menu.statusbar = "Connected to IRC server."; + else if(CL_IRCIsRunning()) + s_irc_menu.statusbar = "Connecting to IRC server..."; + else + s_irc_menu.statusbar = "Not connected to IRC server."; + + // Update join/quit menu entry + if ( CL_IRCIsRunning( ) ) { + s_irc_join.generic.name = "Disconnect Now"; + s_irc_join.generic.callback = QuitIRCFunc; + } else { + s_irc_join.generic.name = "Connect Now"; + s_irc_join.generic.callback = JoinIRCFunc; + } + + Screen_Draw (&s_irc_screen, offset); +} + +void M_Menu_IRC_f (void) +{ + IRC_MenuInit(); + M_PushMenu (IRC_MenuDraw, Default_MenuKey, &s_irc_screen); +} + + +/* +======================================================================= + +OPTIONS MENUS - TOP-LEVEL OPTIONS MENU + +======================================================================= +*/ + +static menuframework_s s_options_screen; +static menuframework_s s_options_menu; + +char *option_screen_names[] = +{ + "Player", // whatever's first will be the default + "Display", + "Video", + "Audio", + "Input", + "Network", + "IRC Chat", +}; +#define OPTION_SCREENS static_array_size(option_screen_names) + +void (*option_open_funcs[OPTION_SCREENS])(void) = +{ + &M_Menu_PlayerConfig_f, + &M_Menu_Display_f, + &M_Menu_Video_f, + &M_Menu_Audio_f, + &M_Menu_Input_f, + &M_Menu_Net_f, + &M_Menu_IRC_f, +}; + +static menuframework_s s_player_config_screen; + +static menuaction_s s_option_screen_actions[OPTION_SCREENS]; + +LINKABLE(int) option_screen_height; + +static void OptionScreenFunc (void *_self) +{ + menuframework_s *self = (menuframework_s *)_self; + + option_open_funcs[self->generic.localints[0]](); +} + +void M_Menu_Options_f (void) +{ + int i; + + setup_window (s_options_screen, s_options_menu, "OPTIONS"); + + for (i = 0; i < OPTION_SCREENS; i++) + { + s_option_screen_actions[i].generic.type = MTYPE_ACTION; + s_option_screen_actions[i].generic.flags = QMF_BUTTON; + s_option_screen_actions[i].generic.name = option_screen_names[i]; + s_option_screen_actions[i].generic.localints[0] = i; + s_option_screen_actions[i].generic.callback = OptionScreenFunc; + Menu_AddItem (&s_options_menu, &s_option_screen_actions[i]); + } + + add_text (s_options_menu, NULL, 0); //spacer + + add_action (s_options_menu, "Reset to Defaults", OptionsResetDefaultsFunc, 0); + add_action (s_options_menu, "Restore from Saved", OptionsResetSavedFunc, 0); + + M_PushMenu_Defaults (s_options_screen); + + // select the default options screen + OptionScreenFunc (&s_option_screen_actions[0]); +} + +/* +============================================================================= + +END GAME MENU + +============================================================================= +*/ +static int credits_start_time; +static const char **credits; +//static char *creditsIndex[256]; +static char *creditsBuffer; +static const char *idcredits[] = { "+Alien Arena by COR Entertainment", "", @@ -2536,12 +3064,14 @@ "+ART", "John Diamond", "Dennis -xEMPx- Zedlach", + "Franc Cassar", "Shawn Keeth", "Enki", "", "+FONTS", "John Diamond", - "the-interceptor from http://www.quakeworld.nu/", + "The League of Moveable Type", + "Brian Kent", "", "+LOGO", "Adam -servercleaner- Szalai", @@ -2551,6 +3081,7 @@ "John Diamond", "Dennis -xEMPx- Zedlach", "Charles Hudson", + "Torben Fahrnbach", "", "+SOUND EFFECTS AND MUSIC", "Music/FX Composed and Produced by", @@ -2650,47 +3181,40 @@ "stands proud as the undefeated champion of the", "Alien Arena?", "", - "Alien Arena (C)2007 COR Entertainment, LLC", + "Alien Arena (C)2007-2012 COR Entertainment, LLC", "All Rights Reserved.", 0 }; -void M_Credits_MenuDraw( void ) +void M_Credits_MenuDraw (menuframework_s *dummy, menuvec2_t offset) { - int i, y; - + int i, y, scale; + FNT_font_t font; + struct FNT_window_s box; + + font = FNT_AutoGet( CL_menuFont ); + scale = font->size / 8.0; + /* ** draw the credits */ - for ( i = 0, y = viddef.height - ( ( cls.realtime - credits_start_time ) / 40.0F ); credits[i]; y += 10, i++ ) + for ( i = 0, y = viddef.height - ( ( cls.realtime - credits_start_time ) / 40.0F ); credits[i]; y += 12*scale, i++ ) { - int j, stringoffset = 0; - int bold = false; - - if ( y <= -8 ) + if ( y <= -12*scale ) continue; + + box.y = offset.y + y; + box.x = offset.x; + box.height = 0; + box.width = viddef.width; if ( credits[i][0] == '+' ) { - bold = true; - stringoffset = 1; + FNT_BoundedPrint (font, credits[i]+1, FNT_CMODE_NONE, FNT_ALIGN_CENTER, &box, FNT_colors[3]); } else { - bold = false; - stringoffset = 0; - } - - for ( j = 0; credits[i][j+stringoffset]; j++ ) - { - int x; - - x = ( viddef.width - strlen( credits[i] ) * 8 - stringoffset * 8 ) / 2 + ( j + stringoffset ) * 8; - - if ( bold ) - Draw_Char( x, y, credits[i][j+stringoffset] + 128 ); - else - Draw_Char( x, y, credits[i][j+stringoffset] ); + FNT_BoundedPrint (font, credits[i], FNT_CMODE_NONE, FNT_ALIGN_CENTER, &box, FNT_colors[7]); } } @@ -2698,15 +3222,13 @@ credits_start_time = cls.realtime; } -const char *M_Credits_Key( int key ) +const char *M_Credits_Key (menuframework_s *dummy, int key) { - switch (key) + if (key == K_ESCAPE) { - case K_ESCAPE: if (creditsBuffer) FS_FreeFile (creditsBuffer); M_PopMenu (); - break; } return menu_out_sound; @@ -2715,12 +3237,15 @@ void M_Menu_Credits_f( void ) { - + static menuframework_s dummy; + + CHASELINK(dummy.rwidth) = viddef.width; + creditsBuffer = NULL; credits = idcredits; credits_start_time = cls.realtime; - M_PushMenu( M_Credits_MenuDraw, M_Credits_Key); + M_PushMenu (M_Credits_MenuDraw, M_Credits_Key, &dummy); } /* @@ -2731,17 +3256,6 @@ ============================================================================= */ -static int m_game_cursor; - -static menuframework_s s_game_menu; -static menuaction_s s_game_title; -static menuaction_s s_easy_game_action; -static menuaction_s s_medium_game_action; -static menuaction_s s_hard_game_action; -static menuaction_s s_ultra_game_action; -static menuaction_s s_credits_action; -static menuseparator_s s_blankline; - static void StartGame( void ) { extern cvar_t *name; @@ -2763,2016 +3277,1628 @@ cls.key_dest = key_game; } -static void EasyGameFunc( void *data ) -{ - Cvar_ForceSet( "skill", "0" ); - StartGame(); -} - -static void MediumGameFunc( void *data ) -{ - Cvar_ForceSet( "skill", "1" ); - StartGame(); -} - -static void HardGameFunc( void *data ) -{ - Cvar_ForceSet( "skill", "2" ); - StartGame(); -} - -static void UltraGameFunc( void *data ) +static void SinglePlayerGameFunc (void *data) { - Cvar_ForceSet( "skill", "3" ); - StartGame(); + char skill[2]; + skill[1] = '\0'; + skill[0] = ((menuaction_s*)data)->generic.localints[0]+'0'; + Cvar_ForceSet ("skill", skill); + StartGame (); } -static void CreditsFunc( void *unused ) +static void M_Menu_Game_f (void) { - M_Menu_Credits_f(); -} + static menuframework_s s_game_screen; + static menuframework_s s_game_menu; -void Game_MenuInit( void ) -{ -/* - static const char *difficulty_names[] = - { - "easy", - "medium", - "hard", - 0 + static const char *singleplayer_skill_level_names[][2] = { + {"Easy", "You will win"}, + {"Medium", "You might win"}, + {"Hard", "Very challenging"}, + {"Ultra", "Only the best will win"} }; -*/ - float scale;; - scale = (float)(viddef.height)/600; - - banneralpha = 0.1; + #define num_singleplayer_skill_levels static_array_size(singleplayer_skill_level_names) + static menuaction_s s_singleplayer_game_actions[num_singleplayer_skill_levels]; + + int i; + + setup_window (s_game_screen, s_game_menu, "SINGLE PLAYER"); + + for (i = 0; i < num_singleplayer_skill_levels; i++) + { + s_singleplayer_game_actions[i].generic.type = MTYPE_ACTION; + s_singleplayer_game_actions[i].generic.flags = QMF_BUTTON; + s_singleplayer_game_actions[i].generic.name = singleplayer_skill_level_names[i][0]; + s_singleplayer_game_actions[i].generic.tooltip = singleplayer_skill_level_names[i][1]; + s_singleplayer_game_actions[i].generic.localints[0] = i; + s_singleplayer_game_actions[i].generic.callback = SinglePlayerGameFunc; + Menu_AddItem (&s_game_menu, &s_singleplayer_game_actions[i]); + } + + Menu_AutoArrange (&s_game_screen); + Menu_Center (&s_game_screen); + + M_PushMenu_Defaults (s_game_screen); +} - s_game_menu.x = viddef.width * 0.50; - s_game_menu.nitems = 0; - s_game_title.generic.type = MTYPE_SEPARATOR; - s_game_title.generic.x = FONTSCALE*72*scale; - s_game_title.generic.y = FONTSCALE*30*scale; - s_game_title.generic.name = "Instant Action!"; - - s_easy_game_action.generic.type = MTYPE_ACTION; - s_easy_game_action.generic.x = FONTSCALE*32*scale; - s_easy_game_action.generic.y = FONTSCALE*50*scale; - s_easy_game_action.generic.cursor_offset = -16; - s_easy_game_action.generic.name = "easy"; - s_easy_game_action.generic.callback = EasyGameFunc; - - s_medium_game_action.generic.type = MTYPE_ACTION; - s_medium_game_action.generic.x = FONTSCALE*32*scale; - s_medium_game_action.generic.y = FONTSCALE*60*scale; - s_medium_game_action.generic.cursor_offset = -16; - s_medium_game_action.generic.name = "medium"; - s_medium_game_action.generic.callback = MediumGameFunc; - - s_hard_game_action.generic.type = MTYPE_ACTION; - s_hard_game_action.generic.x = FONTSCALE*32*scale; - s_hard_game_action.generic.y = FONTSCALE*70*scale; - s_hard_game_action.generic.cursor_offset = -16; - s_hard_game_action.generic.name = "hard"; - s_hard_game_action.generic.callback = HardGameFunc; - - s_ultra_game_action.generic.type = MTYPE_ACTION; - s_ultra_game_action.generic.x = FONTSCALE*32*scale; - s_ultra_game_action.generic.y = FONTSCALE*80*scale; - s_ultra_game_action.generic.cursor_offset = -16; - s_ultra_game_action.generic.name = "ultra"; - s_ultra_game_action.generic.callback = UltraGameFunc; - - s_blankline.generic.type = MTYPE_SEPARATOR; - - s_credits_action.generic.type = MTYPE_ACTION; - s_credits_action.generic.x = FONTSCALE*32*scale; - s_credits_action.generic.y = FONTSCALE*100*scale; - s_credits_action.generic.cursor_offset = -16; - s_credits_action.generic.name = "credits"; - s_credits_action.generic.callback = CreditsFunc; - - Menu_AddItem( &s_game_menu, ( void * ) &s_game_title ); - Menu_AddItem( &s_game_menu, ( void * ) &s_easy_game_action ); - Menu_AddItem( &s_game_menu, ( void * ) &s_medium_game_action ); - Menu_AddItem( &s_game_menu, ( void * ) &s_hard_game_action ); - Menu_AddItem( &s_game_menu, ( void * ) &s_ultra_game_action ); - Menu_AddItem( &s_game_menu, ( void * ) &s_blankline ); - Menu_AddItem( &s_game_menu, ( void * ) &s_blankline ); - Menu_AddItem( &s_game_menu, ( void * ) &s_credits_action ); - - Menu_Center( &s_game_menu ); -} - -void Game_MenuDraw( void ) -{ - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "menu_back"); //draw black background first - M_Banner( "m_single", banneralpha ); - Menu_AdjustCursor( &s_game_menu, 1 ); - Menu_Draw( &s_game_menu ); -} - -const char *Game_MenuKey( int key ) -{ - return Default_MenuKey( &s_game_menu, key ); -} - -void M_Menu_Game_f (void) -{ - Game_MenuInit(); - M_PushMenu( Game_MenuDraw, Game_MenuKey ); - m_game_cursor = 1; -} /* ============================================================================= -IRC MENUS +JOIN SERVER MENU ============================================================================= */ +#define MAX_LOCAL_SERVERS 128 +#define MAX_SERVER_MODS 16 +#define SERVER_LIST_COLUMNS 4 -static int m_IRC_cursor; -char IRC_key[64]; +static const char *updown_names[] = { + "menu/midarrow", + "menu/dnarrow", + "menu/uparrow", + 0 +}; -static menuframework_s s_irc_menu; -static menuaction_s s_irc_title; -static menuaction_s s_irc_join; -static menulist_s s_irc_joinatstartup; -static menuaction_s s_irc_key; -static menuaction_s s_irc_editsettings; +//Lists for all stock mutators and game modes, plus some of the more popular +//custom ones. (NOTE: For non-boolean cvars, i.e. those which have values +//other than 0 or 1, you get a string of the form cvar=value. In the future, +//we may do something special to parse these, but since no such cvars are +//actually recognized right now anyway, we currently don't.) -static void JoinIRCFunc( void *unused ) -{ - if(pNameUnique) - CL_InitIRC(); -} +//TODO: Have a menu to explore this list? -static void QuitIRCFunc( void *unused ) -{ - CL_IRCInitiateShutdown(); -} +//Names. If a cvar isn't recognized, the name of the cvar itself is used. +static char mod_names[] = + //cannot be wider than this boundary: | + "\\ctf" "\\capture the flag" + "\\tca" "\\team core assault" + "\\cp" "\\cattle prod" + "\\instagib" "\\instagib" + "\\rocket_arena" "\\rocket arena" + "\\low_grav" "\\low gravity" + "\\regeneration" "\\regeneration" + "\\vampire" "\\vampire" + "\\excessive" "\\excessive" + "\\grapple" "\\grappling hook" + "\\classbased" "\\class based" + "\\g_duel" "\\duel mode" + "\\quickweap" "\\quick switch" + "\\anticamp" "\\anticamp" + "\\sv_joustmode" "\\joust mode" + "\\playerspeed" "\\player speed" + "\\insta_rockets" "\\insta/rockets" + "\\chaingun_arena" "\\chaingun arena" + "\\instavap" "\\vaporizer arena" + "\\vape_arena" "\\vaporizer arena" + "\\testcode" "\\code testing" + "\\testmap" "\\map testing" + "\\dodgedelay=0" "\\rapid dodging" + "\\g_tactical" "\\aa tactical" + "\\g_dm_lights" "\\player lights" + "\\"; -static void AutoIRCFunc( void *unused) -{ - Cvar_SetValue("cl_IRC_connect_at_startup", s_irc_joinatstartup.curvalue); -} +//Descriptions. If a cvar isn't recognized, "(no description)" is used. +static char mods_desc[] = + //cannot be wider than this boundary: | + "\\ctf" "\\capture the enemy team's flag to earn points" + "\\tca" "\\destroy the enemy team's spider node to win" + "\\cp" "\\herd cows through your team's goal for points" + "\\instagib" "\\disruptor only, instant kill, infinite ammo" + "\\rocket_arena" "\\rocket launcher only, infinite ammo" + "\\low_grav" "\\reduced gravity" + "\\regeneration" "\\regain health over time" + "\\vampire" "\\regain health by damaging people" + "\\excessive" "\\all weapons enhanced, infinite ammo" + "\\grapple" "\\spawn with a grappling hook" + "\\classbased" "\\different races have different strengths" + "\\g_duel" "\\wait in line for your turn to duel" + "\\quickweap" "\\switch weapons instantly" + "\\anticamp" "\\you are punished for holding still too long" + "\\sv_joustmode" "\\you can still jump while in midair" + "\\playerspeed" "\\run much faster than normal" + "\\insta_rockets" "\\hybrid of instagib and rocket_arena" + "\\chaingun_arena" "\\chaingun only, infinite ammo" + "\\instavap" "\\vaporizer only, infinite ammo" + "\\vape_arena" "\\vaporizer only, infinite ammo" + "\\testcode" "\\server is testing experimental code" + "\\testmap" "\\server is testing an unfinished map" + "\\dodgedelay=0" "\\no minimum time between dodges" + "\\g_tactical" "\\humans vs martians, destroy enemy bases" + "\\g_dm_lights" "\\high-visibility lights on players" + "\\"; -static void M_FindIRCKey ( void ) +char *GetLine (char **contents, int *len) { - int count; - int j; - int l; - char *b; - int twokeys[2]; + int num; + int i; + char line[2048]; + char *ret; - twokeys[0] = twokeys[1] = -1; - l = strlen("messagemode3"); - count = 0; + num = 0; + line[0] = '\0'; - for (j=0 ; j<256 ; j++) - { - b = keybindings[j]; - if (!b) - continue; - if (!strncmp (b, "messagemode3", l) ) - { - twokeys[count] = j; - count++; - if (count == 2) - break; - } + if (*len <= 0) + return NULL; + + for (i = 0; i < *len; i++) { + if ((*contents)[i] == '\n') { + *contents += (num + 1); + *len -= (num + 1); + line[num] = '\0'; + ret = (char *)malloc (sizeof(line)); + strcpy (ret, line); + return ret; + } + line[num] = (*contents)[i]; + num++; } - //got our key - Com_sprintf(IRC_key, sizeof(IRC_key), "IRC Chat Key is %s", Key_KeynumToString(twokeys[0])); -} -static void IRCSettingsFunc( void * self ) -{ - M_Menu_IRCSettings_f( ); + ret = (char *)malloc (sizeof(line)); + strcpy (ret, line); + return ret; } -void IRC_MenuInit( void ) -{ - float scale; - extern cvar_t *name; - - static const char *yes_no_names[] = - { - "no", "yes", 0 - }; - if(!strcmp(name->string, "Player")) - pNameUnique = false; - else - pNameUnique = true; +SERVERDATA mservers[MAX_LOCAL_SERVERS]; - if(!cl_IRC_connect_at_startup) - cl_IRC_connect_at_startup = Cvar_Get("cl_IRC_connect_at_startup", "0", CVAR_ARCHIVE); +PLAYERSTATS thisPlayer; - M_FindIRCKey(); +#define m_num_servers (s_serverlist_submenu.nitems) - scale = (float)(viddef.height)/600; +static char local_mods_data[16][53]; //53 is measured max tooltip width - banneralpha = 0.1; - s_irc_menu.x = viddef.width * 0.50; - s_irc_menu.nitems = 0; +static struct +{ + menuframework_s screen; + menuframework_s menu; + + menutxt_s name; + menuaction_s connect; + + menuitem_s levelshot; + char levelshot_path[MAX_QPATH]; + + menuframework_s serverinfo_submenu; + menuframework_s serverinfo_table; + menuframework_s serverinfo_rows[8]; + menutxt_s serverinfo_columns[8][2]; + + menuframework_s modlist_submenu; + menuaction_s modlist[MAX_SERVER_MODS]; + char modtxt[MAX_SERVER_MODS][48]; + char modnames[MAX_SERVER_MODS][24]; + + menuframework_s playerlist_submenu; + menuaction_s playerlist_label; + menuframework_s playerlist_header; + menuframework_s playerlist_scrollingmenu; + menutxt_s playerlist_header_columns[SVDATA_PLAYERINFO]; + menuframework_s playerlist_rows[MAX_PLAYERS]; + menutxt_s playerlist_columns[MAX_PLAYERS][SVDATA_PLAYERINFO]; + char ranktxt[MAX_PLAYERS][32]; +} s_servers[MAX_LOCAL_SERVERS]; - s_irc_title.generic.type = MTYPE_COLORTXT; - s_irc_title.generic.x = -232*scale; - s_irc_title.generic.y = FONTSCALE*30*scale; - s_irc_title.generic.name = "^3IRC ^1Chat ^1Utilities"; +static int serverindex; - s_irc_join.generic.type = MTYPE_ACTION; - s_irc_join.generic.x = 128*scale; - s_irc_join.generic.y = FONTSCALE*60*scale; - s_irc_join.generic.name = "Join IRC Chat"; - s_irc_join.generic.callback = JoinIRCFunc; +void JoinServerFunc (void *unused) +{ + int i; + char buffer[128]; + + cl.tactical = false; - s_irc_joinatstartup.generic.type = MTYPE_SPINCONTROL; - s_irc_joinatstartup.generic.x = 128*scale; - s_irc_joinatstartup.generic.y = FONTSCALE*80*scale; - s_irc_joinatstartup.generic.name = "Autojoin At Startup"; - s_irc_joinatstartup.itemnames = yes_no_names; - s_irc_joinatstartup.curvalue = cl_IRC_connect_at_startup->value; - s_irc_joinatstartup.generic.callback = AutoIRCFunc; - - s_irc_editsettings.generic.type = MTYPE_ACTION; - s_irc_editsettings.generic.x = 128*scale; - s_irc_editsettings.generic.y = FONTSCALE*100*scale; - s_irc_editsettings.generic.name = "IRC settings"; - s_irc_editsettings.generic.callback = IRCSettingsFunc; - - s_irc_key.generic.type = MTYPE_COLORTXT; - s_irc_key.generic.x = -128*scale; - s_irc_key.generic.y = FONTSCALE*140*scale; - s_irc_key.generic.name = IRC_key; - - Menu_AddItem( &s_irc_menu, ( void * ) &s_irc_title ); - Menu_AddItem( &s_irc_menu, ( void * ) &s_irc_join ); - Menu_AddItem( &s_irc_menu, ( void * ) &s_irc_joinatstartup ); - Menu_AddItem( &s_irc_menu, ( void * ) &s_irc_editsettings ); - Menu_AddItem( &s_irc_menu, ( void * ) &s_irc_key ); + remoteserver_runspeed = 300; //default + for ( i = 0; i < 16; i++) + { + if( !strcmp("aa tactical", Info_ValueForKey(mod_names, local_mods_data[i])) ) + { + remoteserver_runspeed = 200; //for correct prediction + M_Menu_Tactical_f(); + return; + } + else if( !strcmp("excessive", Info_ValueForKey(mod_names, local_mods_data[i])) ) + remoteserver_runspeed = 450; + else if( !strcmp("playerspeed", Info_ValueForKey(mod_names, local_mods_data[i])) ) + remoteserver_runspeed = 450; + } //TO DO: We need to do the speed check on connect instead - meaning the server will need to be pinged and parsed there as well(but only if not done already through the menu). - Menu_Center( &s_irc_menu ); + Com_sprintf (buffer, sizeof(buffer), "connect %s\n", NET_AdrToString (mservers[serverindex].local_server_netadr)); + Cbuf_AddText (buffer); + M_ForceMenuOff (); } +void ModList_SubmenuInit (void) +{ + int i; + char modstring[64]; + char *token; + + s_servers[serverindex].modlist_submenu.generic.type = MTYPE_SUBMENU; + s_servers[serverindex].modlist_submenu.navagable = true; + s_servers[serverindex].modlist_submenu.nitems = 0; + + for ( i = 0; i < MAX_SERVER_MODS; i++ ) + { + s_servers[serverindex].modlist[i].generic.type = MTYPE_ACTION; + s_servers[serverindex].modlist[i].generic.flags = QMF_RIGHT_COLUMN; + s_servers[serverindex].modlist[i].generic.name = s_servers[serverindex].modnames[i]; + s_servers[serverindex].modlist[i].generic.tooltip = s_servers[serverindex].modtxt[i]; + + Menu_AddItem( &s_servers[serverindex].modlist_submenu, &s_servers[serverindex].modlist[i] ); + } + + s_servers[serverindex].modlist_submenu.maxlines = 5; + + //Copy modstring over since strtok will modify it + Q_strncpyz(modstring, mservers[serverindex].modInfo, sizeof(modstring)); + + // populate all the data + token = strtok(modstring, "%%"); + for (i=0; i 0) + s_servers[serverindex].playerlist_header_columns[i].generic.flags = QMF_RIGHT_COLUMN; + Menu_AddItem (&s_servers[serverindex].playerlist_header, &s_servers[serverindex].playerlist_header_columns[i]); + } + + Menu_AddItem (&s_servers[serverindex].playerlist_submenu, &s_servers[serverindex].playerlist_header); + + for (i = 0; i < mservers[serverindex].players; i++) + { + int ranking = mservers[serverindex].playerRankings[i]; + if (ranking == 1000) + Com_sprintf(s_servers[serverindex].ranktxt[i], sizeof(s_servers[serverindex].ranktxt[i]), "Player is unranked"); + else + Com_sprintf(s_servers[serverindex].ranktxt[i], sizeof(s_servers[serverindex].ranktxt[i]), "Player is ranked %i", ranking); + s_servers[serverindex].playerlist_rows[i].generic.tooltip = s_servers[serverindex].ranktxt[i]; + + for (j = 0; j < SVDATA_PLAYERINFO; j++) + local_player_info_ptrs[i*SVDATA_PLAYERINFO+j] = &mservers[serverindex].playerInfo[i][j][0]; + } + + Menu_MakeTable ( &s_servers[serverindex].playerlist_scrollingmenu, + mservers[serverindex].players, SVDATA_PLAYERINFO, + sizes, &s_servers[serverindex].playerlist_header, + s_servers[serverindex].playerlist_rows, s_servers[serverindex].playerlist_columns, + local_player_info_ptrs + ); + + Menu_AddItem (&s_servers[serverindex].playerlist_submenu, &s_servers[serverindex].playerlist_scrollingmenu); + + s_servers[serverindex].playerlist_scrollingmenu.maxlines = 7; + + s_servers[serverindex].playerlist_scrollingmenu.nitems = mservers[serverindex].players; + s_servers[serverindex].playerlist_scrollingmenu.yscroll = 0; + + LINK (s_servers[serverindex].serverinfo_submenu.rwidth, s_servers[serverindex].playerlist_scrollingmenu.rwidth); + LINK (s_servers[serverindex].serverinfo_submenu.lwidth, s_servers[serverindex].playerlist_scrollingmenu.lwidth); +} + +static void M_Menu_SelectedServer_f (void) +{ + setup_window (s_servers[serverindex].screen, s_servers[serverindex].menu, "SERVER"); + + ServerInfo_SubmenuInit (); + PlayerList_SubmenuInit (); + + // "connect" button at the bottom + s_servers[serverindex].connect.generic.type = MTYPE_ACTION; + s_servers[serverindex].connect.generic.flags = QMF_BUTTON | QMF_RIGHT_COLUMN; + s_servers[serverindex].connect.generic.name = "Connect"; + s_servers[serverindex].connect.generic.callback = JoinServerFunc; + Menu_AddItem (&s_servers[serverindex].menu, &s_servers[serverindex].connect); + + s_servers[serverindex].serverinfo_submenu.statusbar = NULL; + s_servers[serverindex].connect.generic.statusbar = NULL; + if (serverIsOutdated (mservers[serverindex].szVersion)) + s_servers[serverindex].serverinfo_submenu.statusbar = "Warning: server is ^1outdated!^7 It may have bugs or different gameplay."; + else if (!PLAYER_NAME_UNIQUE) + s_servers[serverindex].connect.generic.statusbar = "You must change your player name from the default before connecting!"; + else + s_servers[serverindex].connect.generic.statusbar = "Hit ENTER or CLICK to connect"; + + M_PushMenu_Defaults (s_servers[serverindex].screen); + + s_servers[serverindex].menu.default_cursor_selection = (menuitem_s *)&s_servers[serverindex].connect; +} - float scale; +//TODO: Move this out of the menu section! +qboolean M_ParseServerInfo (netadr_t adr, char *status_string, SERVERDATA *destserver) +{ + char *rLine; + char *token; +#ifdef TACTICAL + char *token2; + char modstring[64]; + qboolean isTactical; + int i; +#endif + char skillLevel[24]; + char lasttoken[256]; + char seps[] = "\\"; + int players = 0; + int bots = 0; + int result; + + char playername[PLAYERNAME_SIZE]; + int score, ping, rankTotal, starttime; + PLAYERSTATS player; - scale = (float)(viddef.height)/600; + destserver->local_server_netadr = adr; + // starttime now sourced per server. + starttime = CL_GetPingStartTime(adr); + if (starttime != 0) + destserver->ping = Sys_Milliseconds() - starttime; + else + { + // Local LAN? + destserver->ping = 1; + } + if ( destserver->ping < 1 ) + destserver->ping = 1; /* for LAN and address book entries */ - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; + //parse it - M_Background( "menu_back"); //draw black background first - M_Banner( "m_irc", banneralpha ); + result = strlen(status_string); - //warn user that they cannot join until changing default player name - if(!pNameUnique) { - M_DrawTextBox( -32*scale, (int)(FONTSCALE*-95*scale), 40/scale, 2 ); - M_Print( (int)(FONTSCALE*32*scale), (int)(FONTSCALE*-85*scale), "You must create your player" ); - M_Print( (int)(FONTSCALE*32*scale), (int)(FONTSCALE*-75*scale), "name before joining a server!" ); - } else if(CL_IRCIsConnected()) { - M_DrawTextBox( -28*scale, (int)(FONTSCALE*-95*scale), 36/scale, 1 ); - M_Print( (int)(FONTSCALE*28*scale), (int)(FONTSCALE*-80*scale), "Connected to IRC server." ); - } else if(CL_IRCIsRunning()) { - M_DrawTextBox( -28*scale, (int)(FONTSCALE*-95*scale), 36/scale, 1 ); - M_Print( (int)(FONTSCALE*28*scale), (int)(FONTSCALE*-80*scale), "Connecting to IRC server..." ); - } + //server info + rLine = GetLine (&status_string, &result); - // Update join/quit menu entry - if ( CL_IRCIsRunning( ) ) { - s_irc_join.generic.name = "Quit IRC Chat"; - s_irc_join.generic.callback = QuitIRCFunc; - } else { - s_irc_join.generic.name = "Join IRC Chat"; - s_irc_join.generic.callback = JoinIRCFunc; + /* Establish string and get the first token: */ + token = strtok( rLine, seps ); + if ( token != NULL ) + { + Com_sprintf(lasttoken, sizeof(lasttoken), "%s", token); + token = strtok( NULL, seps ); } + + // HACK for backward compatibility + memset (destserver->modInfo, 0, sizeof(destserver->modInfo)); + + /* Loop through the rest of them */ + while( token != NULL ) + { + /* While there are tokens in "string" */ + if (!Q_strcasecmp (lasttoken, "admin")) + Com_sprintf(destserver->szAdmin, sizeof(destserver->szAdmin), "%s", token); + else if (!Q_strcasecmp (lasttoken, "website")) + Com_sprintf(destserver->szWebsite, sizeof(destserver->szWebsite), "%s", token); + else if (!Q_strcasecmp (lasttoken, "fraglimit")) + Com_sprintf(destserver->fraglimit, sizeof(destserver->fraglimit), "%s", token); + else if (!Q_strcasecmp (lasttoken, "timelimit")) + Com_sprintf(destserver->timelimit, sizeof(destserver->timelimit), "%s", token); + else if (!Q_strcasecmp (lasttoken, "version")) + Com_sprintf(destserver->szVersion, sizeof(destserver->szVersion), "%s", token); + else if (!Q_strcasecmp (lasttoken, "mapname")) + { + Com_sprintf(destserver->szMapName, sizeof(destserver->szMapName), "%s", token); + Com_sprintf(destserver->fullMapName, sizeof(destserver->fullMapName), "%s", token); + } + else if (!Q_strcasecmp (lasttoken, "hostname")) + Com_sprintf(destserver->szHostName, sizeof(destserver->szHostName), "%s", token); + else if (!Q_strcasecmp (lasttoken, "maxclients")) + Com_sprintf(destserver->maxClients, sizeof(destserver->maxClients), "%s", token); + else if (!Q_strcasecmp (lasttoken, "mods")) + Com_sprintf(destserver->modInfo, sizeof(destserver->modInfo), "%s", token); + else if (!Q_strcasecmp (lasttoken, "sv_joustmode")) + destserver->joust = atoi(token); - Menu_AdjustCursor( &s_irc_menu, 1 ); - Menu_Draw( &s_irc_menu ); -} - -const char *IRC_MenuKey( int key ) -{ - return Default_MenuKey( &s_irc_menu, key ); -} + /* Get next token: */ + Com_sprintf(lasttoken, sizeof(lasttoken), "%s", token); + token = strtok( NULL, seps ); + } + + free (rLine); +#ifdef TACTICAL + isTactical = false; -void M_Menu_IRC_f (void) -{ - IRC_MenuInit(); - M_PushMenu( IRC_MenuDraw, IRC_MenuKey ); - m_IRC_cursor = 1; -} + //Copy modstring over since strtok will modify it + Q_strncpyz(modstring, destserver->modInfo, sizeof(modstring)); + + // populate all the data + token2 = strtok(modstring, "%%"); + for (i = 0; i < MAX_SERVER_MODS; i++) + { + if (!token2) + break; + if(!strcmp("g_tactical", token2)) + isTactical = true; + token2 = strtok(NULL, "%%"); + } + if(!isTactical) + return false; +#endif -/* -============================================================================= + //playerinfo + rankTotal = 0; + strcpy (seps, " "); + while ((rLine = GetLine (&status_string, &result)) && players < MAX_PLAYERS) + { + /* Establish string and get the first token: */ + token = strtok( rLine, seps); + score = atoi(token); -IRC SETTINGS MENU + token = strtok( NULL, seps); + ping = atoi(token); -============================================================================= -*/ + token = strtok( NULL, "\""); -static menuframework_s s_irc_settings_menu; -static menuaction_s s_irc_settings_title; -static menufield_s s_irc_server; -static menufield_s s_irc_channel; -static menufield_s s_irc_port; -static menulist_s s_irc_ovnickname; -static menufield_s s_irc_nickname; -static menufield_s s_irc_kickrejoin; -static menufield_s s_irc_reconnectdelay; -static menuaction_s s_irc_settings_apply; + if (token) + strncpy (playername, token, sizeof(playername)-1); + else + playername[0] = '\0'; + free (rLine); -static void ApplyIRCSettings( void * self ) -{ - qboolean running = CL_IRCIsRunning( ); - if ( running ) { - CL_IRCInitiateShutdown( ); - CL_IRCWaitShutdown( ); - } + playername[sizeof(playername)-1] = '\0'; - Cvar_Set( "cl_IRC_server" , s_irc_server.buffer); - Cvar_Set( "cl_IRC_channel" , s_irc_channel.buffer); - Cvar_SetValue( "cl_IRC_port" , atoi( s_irc_port.buffer ) ); - Cvar_SetValue( "cl_IRC_override_nickname" , s_irc_ovnickname.curvalue ); - Cvar_Set( "cl_IRC_nickname" , s_irc_nickname.buffer ); - Cvar_SetValue( "cl_IRC_kick_rejoin" , atoi( s_irc_kickrejoin.buffer ) ); - Cvar_SetValue( "cl_IRC_reconnect_delay" , atoi( s_irc_reconnectdelay.buffer ) ); + //get ranking + Q_strncpyz2( player.playername, playername, sizeof(player.playername)); + player.totalfrags = player.totaltime = player.ranking = 0; + player = getPlayerRanking ( player ); - if ( running ) - CL_InitIRC( ); + Com_sprintf ( destserver->playerInfo[players][SVDATA_PLAYERINFO_NAME], + SVDATA_PLAYERINFO_COLSIZE, + "%s", playername + ); + Com_sprintf ( destserver->playerInfo[players][SVDATA_PLAYERINFO_SCORE], + SVDATA_PLAYERINFO_COLSIZE, + "%i", score + ); + Com_sprintf ( destserver->playerInfo[players][SVDATA_PLAYERINFO_PING], + SVDATA_PLAYERINFO_COLSIZE, + "%i", ping + ); + destserver->playerRankings[players] = player.ranking; - M_PopMenu( ); -} + rankTotal += player.ranking; + players++; -static void IRC_SettingsMenuInit( ) -{ - float scale; - extern cvar_t *name; + if(ping == 0) + bots++; + } - static const char *yes_no_names[] = + if(players) { - "no", "yes", 0 - }; - - scale = (float)(viddef.height)/600; - banneralpha = 0.1; - - s_irc_settings_menu.x = viddef.width * 0.50; - s_irc_settings_menu.nitems = 0; + if(thisPlayer.ranking < (rankTotal/players) - 100) + strcpy(skillLevel, "Your Skill is ^1Higher"); + else if(thisPlayer.ranking > (rankTotal/players + 100)) + strcpy(skillLevel, "Your Skill is ^4Lower"); + else + strcpy(skillLevel, "Your Skill is ^3Even"); - s_irc_settings_title.generic.type = MTYPE_COLORTXT; - s_irc_settings_title.generic.x = -124*scale; - s_irc_settings_title.generic.y = FONTSCALE*30*scale; - s_irc_settings_title.generic.name = "IRC Chat Settings"; + Com_sprintf(destserver->skill, sizeof(destserver->skill), "%s", skillLevel); + } + else + Com_sprintf(destserver->skill, sizeof(destserver->skill), "Unknown"); - s_irc_server.generic.type = MTYPE_FIELD; - s_irc_server.generic.name = "Server "; - s_irc_server.generic.x = -67*scale; - s_irc_server.generic.y = FONTSCALE*48*scale; - s_irc_server.generic.statusbar = "Address or name of the IRC server"; - s_irc_server.length = 32; - s_irc_server.visible_length = 16; - s_irc_server.generic.callback = 0; - s_irc_server.cursor = strlen( cl_IRC_server->string ); - strcpy( s_irc_server.buffer, Cvar_VariableString("cl_IRC_server") ); + destserver->players = players; - s_irc_channel.generic.type = MTYPE_FIELD; - s_irc_channel.generic.name = "Channel "; - s_irc_channel.generic.x = -67*scale; - s_irc_channel.generic.y = FONTSCALE*64*scale; - s_irc_channel.generic.statusbar = "Name of the channel to join"; - s_irc_channel.length = 16; - s_irc_channel.visible_length = 16; - s_irc_channel.generic.callback = 0; - s_irc_channel.cursor = strlen( cl_IRC_channel->string ); - strcpy( s_irc_channel.buffer, Cvar_VariableString("cl_IRC_channel") ); + //build the string for the server (hostname - address - mapname - players/maxClients) + if(strlen(destserver->maxClients) > 2) + strcpy(destserver->maxClients, "??"); + + Com_sprintf (destserver->szPlayers, sizeof(destserver->szPlayers), "%i(%i)/%s", min(99,players), min(99,bots), destserver->maxClients); + Com_sprintf (destserver->szPing, sizeof(destserver->szPing), "%i", min(9999,destserver->ping)); - s_irc_port.generic.type = MTYPE_FIELD; - s_irc_port.generic.name = "TCP Port "; - s_irc_port.generic.x = -67*scale; - s_irc_port.generic.y = FONTSCALE*80*scale; - s_irc_port.generic.statusbar = "Port to connect to on the server"; - s_irc_port.length = 5; - s_irc_port.visible_length = 6; - s_irc_port.generic.callback = 0; - s_irc_port.cursor = strlen( cl_IRC_port->string ); - strcpy( s_irc_port.buffer, Cvar_VariableString("cl_IRC_port") ); + return true; +} - s_irc_ovnickname.generic.type = MTYPE_SPINCONTROL; - s_irc_ovnickname.generic.x = 90*scale; - s_irc_ovnickname.generic.y = FONTSCALE*96*scale; - //s_irc_ovnickname.generic.cursor_offset = -24*scale; - s_irc_ovnickname.generic.name = "Override nick"; - s_irc_ovnickname.generic.callback = 0; - s_irc_ovnickname.generic.statusbar = "Enable this to override the default, player-based nick"; - s_irc_ovnickname.itemnames = yes_no_names; - s_irc_ovnickname.curvalue = cl_IRC_override_nickname->value ? 1 : 0; +static menuframework_s s_serverbrowser_screen; - s_irc_nickname.generic.type = MTYPE_FIELD; - s_irc_nickname.generic.name = "Nick "; - s_irc_nickname.generic.x = -67*scale; - s_irc_nickname.generic.y = FONTSCALE*112*scale; - s_irc_nickname.generic.statusbar = "Nickname override to use"; - s_irc_nickname.length = 15; - s_irc_nickname.visible_length = 16; - s_irc_nickname.generic.callback = 0; - s_irc_nickname.cursor = strlen( cl_IRC_nickname->string ); - strcpy( s_irc_nickname.buffer, Cvar_VariableString("cl_IRC_nickname") ); +static menuframework_s s_joinserver_menu; - s_irc_kickrejoin.generic.type = MTYPE_FIELD; - s_irc_kickrejoin.generic.name = "Autorejoin "; - s_irc_kickrejoin.generic.x = -67*scale; - s_irc_kickrejoin.generic.y = FONTSCALE*128*scale; - s_irc_kickrejoin.generic.statusbar = "Delay before automatic rejoin after kick (0 to disable)"; - s_irc_kickrejoin.length = 3; - s_irc_kickrejoin.visible_length = 4; - s_irc_kickrejoin.generic.callback = 0; - s_irc_kickrejoin.cursor = strlen( cl_IRC_kick_rejoin->string ); - strcpy( s_irc_kickrejoin.buffer, Cvar_VariableString("cl_IRC_kick_rejoin") ); +static menuframework_s s_joinserver_header; - s_irc_reconnectdelay.generic.type = MTYPE_FIELD; - s_irc_reconnectdelay.generic.name = "Reconnect "; - s_irc_reconnectdelay.generic.x = -67*scale; - s_irc_reconnectdelay.generic.y = FONTSCALE*144*scale; - s_irc_reconnectdelay.generic.statusbar = "Delay between reconnection attempts (minimum 5)"; - s_irc_reconnectdelay.length = 3; - s_irc_reconnectdelay.visible_length = 4; - s_irc_reconnectdelay.generic.callback = 0; - s_irc_reconnectdelay.cursor = strlen( cl_IRC_reconnect_delay->string ); - strcpy( s_irc_reconnectdelay.buffer, Cvar_VariableString("cl_IRC_reconnect_delay") ); +static menuframework_s s_serverlist_submenu; +static menuframework_s s_serverlist_header; +static menulist_s s_serverlist_header_columns[SERVER_LIST_COLUMNS]; +static menuframework_s s_serverlist_rows[MAX_LOCAL_SERVERS]; +static menutxt_s s_serverlist_columns[MAX_LOCAL_SERVERS][SERVER_LIST_COLUMNS]; - s_irc_settings_apply.generic.type = MTYPE_ACTION; - s_irc_settings_apply.generic.x = 124*scale; - s_irc_settings_apply.generic.y = FONTSCALE*170*scale; - s_irc_settings_apply.generic.cursor_offset = -24 * scale; - s_irc_settings_apply.generic.name = "Apply settings"; - s_irc_settings_apply.generic.callback = ApplyIRCSettings; - - Menu_AddItem( &s_irc_settings_menu, ( void * ) &s_irc_settings_title ); - Menu_AddItem( &s_irc_settings_menu, ( void * ) &s_irc_server ); - Menu_AddItem( &s_irc_settings_menu, ( void * ) &s_irc_channel ); - Menu_AddItem( &s_irc_settings_menu, ( void * ) &s_irc_port ); - Menu_AddItem( &s_irc_settings_menu, ( void * ) &s_irc_ovnickname ); - Menu_AddItem( &s_irc_settings_menu, ( void * ) &s_irc_nickname ); - Menu_AddItem( &s_irc_settings_menu, ( void * ) &s_irc_kickrejoin ); - Menu_AddItem( &s_irc_settings_menu, ( void * ) &s_irc_reconnectdelay ); - Menu_AddItem( &s_irc_settings_menu, ( void * ) &s_irc_settings_apply ); +void M_AddToServerList (netadr_t adr, char *status_string) +{ + //if by some chance this gets called without the menu being up, return + if(cls.key_dest != key_menu) + return; - Menu_Center( &s_irc_settings_menu ); + if (m_num_servers == MAX_LOCAL_SERVERS) + return; + + if(M_ParseServerInfo (adr, status_string, &mservers[m_num_servers])) + { + + CON_Clear(); + + m_num_servers++; + } } -void IRC_SettingsMenuDraw( void ) +void M_UpdateConnectedServerInfo (netadr_t adr, char *status_string) { + M_ParseServerInfo (adr, status_string, &connectedserver); + remoteserver_jousting = connectedserver.joust; +} - float scale; - scale = (float)(viddef.height)/600; +void DeselectServer (void) +{ + serverindex = -1; + s_servers[serverindex].serverinfo_submenu.nitems = 0; + s_servers[serverindex].playerlist_scrollingmenu.nitems = 0; + s_servers[serverindex].modlist_submenu.nitems = 0; +} - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; +void SelectServer (int index) +{ + // used if the player hits enter without his mouse over the server list + serverindex = index; + + M_Menu_SelectedServer_f (); +} - M_Background( "menu_back"); - M_Banner( "m_irc", banneralpha ); +//join on double click, return info on single click - to do - might consider putting player info in a tooltip on single click/right click +void ClickServerFunc( void *self ) +{ + int index = ( menuframework_s * ) self - s_serverlist_rows; - if(!pNameUnique) { - M_DrawTextBox( -32*scale, (int)(FONTSCALE*-95*scale), 40/scale, 2 ); - M_Print( (int)(FONTSCALE*32*scale), (int)(FONTSCALE*-85*scale), "You must create your player" ); - M_Print( (int)(FONTSCALE*32*scale), (int)(FONTSCALE*-75*scale), "name before joining a server!" ); - } else if(CL_IRCIsConnected()) { - M_DrawTextBox( -28*scale, (int)(FONTSCALE*-95*scale), 36/scale, 1 ); - M_Print( (int)(FONTSCALE*28*scale), (int)(FONTSCALE*-80*scale), "Connected to IRC server." ); - } else if(CL_IRCIsRunning()) { - M_DrawTextBox( -28*scale, (int)(FONTSCALE*-95*scale), 36/scale, 1 ); - M_Print( (int)(FONTSCALE*28*scale), (int)(FONTSCALE*-80*scale), "Connecting to IRC server..." ); + if(serverindex != index) + { + SelectServer (index); + if (cursor.buttonclicks[MOUSEBUTTON1] != 2) + return; } - Menu_AdjustCursor( &s_irc_settings_menu, 1 ); - Menu_Draw( &s_irc_settings_menu ); + if(!PLAYER_NAME_UNIQUE) { + M_Menu_PlayerConfig_f(); + return; + } + + JoinServerFunc (NULL); } -const char *IRC_SettingsMenuKey( int key ) +void AddressBookFunc( void *self ) { - return Default_MenuKey( &s_irc_settings_menu, key ); + M_Menu_AddressBook_f(); } - -void M_Menu_IRCSettings_f (void) +void PlayerRankingFunc( void *self ) { - IRC_SettingsMenuInit( ); - M_PushMenu( IRC_SettingsMenuDraw , IRC_SettingsMenuKey ); + M_Menu_PlayerRanking_f(); } +void SearchLocalGames( void ) +{ + m_num_servers = 0; + DeselectServer (); + s_serverlist_submenu.nitems = 0; + s_serverlist_submenu.yscroll = 0; + + Draw_Fill (0, 0, viddef.width, viddef.height, RGBA (0, 0, 0, 0.85)); + SCR_CenterPrint ("Fetching server list..."); + SCR_DrawCenterString (); + R_EndFrame (); + // send out info packets + CL_PingServers_f(); + + CON_Clear(); + + Com_Printf (" Got %d servers- stragglers may follow.\n", m_num_servers); +} -/* -============================================================================= - -JOIN SERVER MENU - -============================================================================= -*/ -#define MAX_LOCAL_SERVERS 128 - -static menuframework_s s_joinserver_menu; -static menuaction_s s_joinserver_search_action; -static menuaction_s s_joinserver_address_book_action; -static menuaction_s s_joinserver_player_ranking_action; -static menulist_s s_joinserver_filterempty_action; -static menuaction_s s_joinserver_server_actions[MAX_LOCAL_SERVERS]; -static menuaction_s s_joinserver_server_info[32]; -static menuaction_s s_joinserver_server_data[6]; -static menuaction_s s_joinserver_mods_data[6]; -static menuaction_s s_joinserver_moveup; -static menuaction_s s_joinserver_movedown; -static menuslider_s s_joinserver_scrollbar; -static menuaction_s s_playerlist_moveup; -static menuaction_s s_playerlist_movedown; -static menuslider_s s_playerlist_scrollbar; -static menuaction_s s_modlist_moveup; -static menuaction_s s_modlist_movedown; -static menuslider_s s_modlist_scrollbar; - -int m_num_servers; -int m_show_empty = true;; - -#define NO_SERVER_STRING "" - -static char local_server_info[256][256]; -static char local_server_data[6][64]; -static char local_mods_data[16][53]; //53 is measured max tooltip width -static int local_server_rankings[64]; -unsigned int starttime; - -//Lists for all stock mutators and game modes, plus some of the more popular -//custom ones. (NOTE: For non-boolean cvars, i.e. those which have values -//other than 0 or 1, you get a string of the form cvar=value. In the future, -//we may do something special to parse these, but since no such cvars are -//actually recognized right now anyway, we currently don't.) - -//TODO: Have a menu to explore this list? - -//Names. If a cvar isn't recognized, the name of the cvar itself is used. -static char mod_names[] = - //cannot be wider than this boundary: | - "\\ctf" "\\capture the flag" - "\\tca" "\\team core assault" - "\\cp" "\\cattle prod" - "\\instagib" "\\instagib" - "\\rocket_arena" "\\rocket arena" - "\\low_grav" "\\low gravity" - "\\regeneration" "\\regeneration" - "\\vampire" "\\vampire" - "\\excessive" "\\excessive" - "\\grapple" "\\grappling hook" - "\\classbased" "\\class based" - "\\g_duel" "\\duel mode" - "\\quickweap" "\\quick switch" - "\\anticamp" "\\anticamp" - "\\sv_joustmode" "\\joust mode" - "\\playerspeed" "\\player speed" - "\\insta_rockets" "\\insta/rockets" - "\\chaingun_arena" "\\chaingun arena" - "\\instavap" "\\vaporizer arena" - "\\vape_arena" "\\vaporizer arena" - "\\testcode" "\\code testing" - "\\testmap" "\\map testing" - "\\dodgedelay=0" "\\rapid dodging" - "\\"; +void SearchLocalGamesFunc( void *self ) +{ + SearchLocalGames(); +} -//Descriptions. If a cvar isn't recognized, "(no description)" is used. -static char mods_desc[] = - //cannot be wider than this boundary: | - "\\ctf" "\\capture the enemy team's flag to earn points" - "\\tca" "\\destroy the enemy team's spider node to win" - "\\cp" "\\herd cows through your team's goal for points" - "\\instagib" "\\disruptor only, instant kill, infinite ammo" - "\\rocket_arena" "\\rocket launcher only, infinite ammo" - "\\low_grav" "\\reduced gravity" - "\\regeneration" "\\regain health over time" - "\\vampire" "\\regain health by damaging people" - "\\excessive" "\\all weapons enhanced, infinite ammo" - "\\grapple" "\\spawn with a grappling hook" - "\\classbased" "\\different races have different strengths" - "\\g_duel" "\\wait in line for your turn to duel" - "\\quickweap" "\\switch weapons instantly" - "\\anticamp" "\\you are punished for holding still too long" - "\\sv_joustmode" "\\you can still jump while in midair" - "\\playerspeed" "\\run much faster than normal" - "\\insta_rockets" "\\hybrid of instagib and rocket_arena" - "\\chaingun_arena" "\\chaingun only, infinite ammo" - "\\instavap" "\\vaporizer only, infinite ammo" - "\\vape_arena" "\\vaporizer only, infinite ammo" - "\\testcode" "\\server is testing experimental code" - "\\testmap" "\\server is testing an unfinished map" - "\\dodgedelay=0" "\\no minimum time between dodges" - "\\"; +static qboolean QSortReverse; +static int QSortColumn; -int GetColorTokens( char *string) +static int SortServerList_Compare (const void *_a, const void *_b) { - int count; - char *pch; + int ret = 0; + const menuframework_s *a, *b; + const char *a_s, *b_s; + + a = *(menuframework_s **)_a; + b = *(menuframework_s **)_b; + + a_s = ((menutxt_s *)(a->items[QSortColumn]))->generic.name; + b_s = ((menutxt_s *)(b->items[QSortColumn]))->generic.name; + + if (QSortColumn > 1) + { + // do numeric sort for player count and ping + if (atoi (a_s) > atoi (b_s)) + ret = 1; + else if (atoi (a_s) < atoi (b_s)) + ret = -1; + } + else + // because strcmp doesn't handle ^colors + while (*a_s && *b_s) + { + if (*a_s == '^') + { + a_s++; + } + else if (*b_s == '^') + { + b_s++; + } + else if (tolower(*a_s) > tolower(*b_s)) + { + ret = 1; + break; + } + else if (tolower(*a_s) < tolower(*b_s)) + { + ret = -1; + break; + } + a_s++; + b_s++; + } + + if (QSortReverse) + return -ret; + return ret; +} - count = 0; - pch=string; - while ( *pch ) +static void SortServerList_Func ( void *_self ) +{ + int column_num, i; + menulist_s *self = (menulist_s *)_self; + + column_num = self-s_serverlist_header_columns; + + for (i = 0; i < SERVER_LIST_COLUMNS; i++) + if (i != column_num) + s_serverlist_header_columns[i].curvalue = 0; + + if (self->curvalue == 0) { - if ( Q_IsColorString( pch ) ) + if (column_num == 3) + { + self->curvalue = 1; + } + else { - ++count; - ++pch; + s_serverlist_header_columns[3].curvalue = 1; + SortServerList_Func (&s_serverlist_header_columns[3]); + return; } - ++pch; } - - return count; + + QSortColumn = column_num; + QSortReverse = self->curvalue == 2; + + qsort (s_serverlist_submenu.items, s_serverlist_submenu.nitems, sizeof (void*), SortServerList_Compare); + s_serverlist_submenu.yscroll = 0; } -char *GetLine (char **contents, int *len) +void ServerList_SubmenuInit (void) { - int num; - int i; - char line[2048]; - char *ret; + int i, j; + + s_serverlist_submenu.generic.type = MTYPE_SUBMENU; + s_serverlist_submenu.generic.flags = QMF_SUBMENU_CAPTURE; + s_serverlist_submenu.navagable = true; + s_serverlist_submenu.nitems = 0; + s_serverlist_submenu.bordertexture = "menu/sm_"; + + s_serverlist_header.generic.type = MTYPE_SUBMENU; + s_serverlist_header.horizontal = true; + s_serverlist_header.navagable = true; + s_serverlist_header.nitems = 0; + + s_serverlist_header_columns[0].generic.name = "^3Server"; + s_serverlist_header_columns[1].generic.name = "^3Map"; + s_serverlist_header_columns[2].generic.name = "^3Players"; + s_serverlist_header_columns[3].generic.name = "^3Ping"; + + for (j = 0; j < SERVER_LIST_COLUMNS; j++) + { + s_serverlist_header_columns[j].generic.type = MTYPE_SPINCONTROL; + s_serverlist_header_columns[j].generic.flags = QMF_RIGHT_COLUMN|QMF_ALLOW_WRAP; + s_serverlist_header_columns[j].itemnames = updown_names; + s_serverlist_header_columns[j].generic.itemsizecallback = IconSpinSizeFunc; + s_serverlist_header_columns[j].generic.itemdraw = IconSpinDrawFunc; + s_serverlist_header_columns[j].curvalue = 0; + s_serverlist_header_columns[j].generic.callback = SortServerList_Func; + Menu_AddItem (&s_serverlist_header, &s_serverlist_header_columns[j]); + } + s_serverlist_header_columns[3].curvalue = 1; + + Menu_AddItem (&s_joinserver_menu, &s_serverlist_header); + + for ( i = 0; i < MAX_LOCAL_SERVERS; i++ ) + { + s_serverlist_rows[i].generic.type = MTYPE_SUBMENU; + s_serverlist_rows[i].generic.callback = ClickServerFunc; + s_serverlist_rows[i].nitems = 0; + s_serverlist_rows[i].horizontal = true; + s_serverlist_rows[i].enable_highlight = true; + + s_serverlist_columns[i][0].generic.name = mservers[i].szHostName; + s_serverlist_columns[i][1].generic.name = mservers[i].szMapName; + s_serverlist_columns[i][2].generic.name = mservers[i].szPlayers; + s_serverlist_columns[i][3].generic.name = mservers[i].szPing; + + for (j = 0; j < SERVER_LIST_COLUMNS; j++) + { + s_serverlist_columns[i][j].generic.type = MTYPE_TEXT; + s_serverlist_columns[i][j].generic.flags = QMF_RIGHT_COLUMN; + LINK(s_serverlist_header_columns[j].generic.x, s_serverlist_columns[i][j].generic.x); + Menu_AddItem (&s_serverlist_rows[i], &s_serverlist_columns[i][j]); + } + + LINK(s_serverlist_header.lwidth, s_serverlist_rows[i].lwidth); + LINK(s_serverlist_header.rwidth, s_serverlist_rows[i].rwidth); + + Menu_AddItem( &s_serverlist_submenu, &s_serverlist_rows[i] ); + } + + Menu_AddItem (&s_joinserver_menu, &s_serverlist_submenu); + + s_serverlist_submenu.maxlines = 25; + +} + +void ServerListHeader_SubmenuInit (void) +{ + s_joinserver_header.generic.type = MTYPE_SUBMENU; + s_joinserver_header.nitems = 0; + s_joinserver_header.horizontal = true; + s_joinserver_header.navagable = true; + + // doesn't actually do anything yet + // add_action (s_joinserver_header, "Address Book", AddressBookFunc, 0); + add_action (s_joinserver_header, "Refresh", SearchLocalGamesFunc, 0); + add_action (s_joinserver_header, "Rank/Stats", PlayerRankingFunc, 0); - num = 0; - line[0] = '\0'; + Menu_AddItem (&s_joinserver_menu, &s_joinserver_header); +} - if (*len <= 0) - return NULL; +static void M_Menu_JoinServer_f (void) +{ + extern cvar_t *name; - for (i = 0; i < *len; i++) { - if ((*contents)[i] == '\n') { - *contents += (num + 1); - *len -= (num + 1); - line[num] = '\0'; - ret = (char *)malloc (sizeof(line)); - strcpy (ret, line); - return ret; - } else { - line[num] = (*contents)[i]; - num++; - } + static qboolean gotServers = false; + + if(!gotServers) + { + STATS_getStatsDB(); + getLatestGameVersion(); } + + ValidatePlayerName( name->string, (strlen(name->string)+1) ); + Q_strncpyz2( thisPlayer.playername, name->string, sizeof(thisPlayer.playername) ); + thisPlayer.totalfrags = thisPlayer.totaltime = thisPlayer.ranking = 0; + thisPlayer = getPlayerRanking ( thisPlayer ); - ret = (char *)malloc (sizeof(line)); - strcpy (ret, line); - return ret; -} + serverindex = -1; -typedef struct _SERVERDATA { + if (!gotServers) + { + setup_window (s_serverbrowser_screen, s_joinserver_menu, "SERVER LIST"); + + ServerListHeader_SubmenuInit (); + ServerList_SubmenuInit (); + + SearchLocalGames(); + + s_joinserver_menu.default_cursor_selection = (menuitem_s *)&s_serverlist_submenu; + } + + gotServers = true; + + M_PushMenu_Defaults (s_serverbrowser_screen); +} - char szHostName[64]; - char szMapName[64]; - char szAdmin[64]; - char szVersion[64]; - char szWebsite[64]; - char maxClients[32]; - char fraglimit[32]; - char timelimit[32]; - char playerInfo[64][80]; - int playerRankings[64]; - char skill[32]; - int players; - int ping; - netadr_t local_server_netadr; - char serverInfo[256]; - char modInfo[64]; +/* +============================================================================= -} SERVERDATA; +MUTATORS MENU -SERVERDATA mservers[MAX_LOCAL_SERVERS]; +============================================================================= +*/ +static menuframework_s s_mutators_screen; +static menuframework_s s_mutators_menu; -PLAYERSTATS thisPlayer; +// weapon modes are different from regular mutators in that they cannot be +// combined +static const char *weaponModeNames[][2] = +{ + {"instagib", "instagib"}, + {"rocket arena", "rocket_arena"}, + {"insta/rockets", "insta_rockets"}, + {"excessive", "excessive"}, + {"class based", "classbased"} +}; +#define num_weapon_modes static_array_size(weaponModeNames) +static menulist_s s_weaponmode_list[num_weapon_modes]; -void M_AddToServerList (netadr_t adr, char *status_string) +static const char *mutatorNames[][2] = { - char *rLine; - char *token; - char skillLevel[24]; - char lasttoken[256]; - char seps[] = "\\"; - int players = 0; - int result; - char playername[PLAYERNAME_SIZE]; - int score, ping, rankTotal, i, x; - PLAYERSTATS player; - - //if by some chance this gets called without the menu being up, return - if(cls.key_dest != key_menu) - return; + {"vampire", "vampire"}, + {"regen", "regeneration"}, + {"quick weapons", "quickweap"}, + {"anticamp", "anticamp"}, + {"speed", "playerspeed"}, + {"low gravity", "low_grav"}, + {"jousting", "sv_joustmode"}, + {"grapple hook", "grapple"} +}; +#define num_mutators static_array_size(mutatorNames) +static menulist_s s_mutator_list[num_mutators]; +static menufield_s s_camptime; - if (m_num_servers == MAX_LOCAL_SERVERS) - return; +static char dmflags_display_buffer[128]; - mservers[m_num_servers].local_server_netadr = adr; - mservers[m_num_servers].ping = Sys_Milliseconds() - starttime; +static void DMFlagCallback( void *self ) +{ + menulist_s *f = ( menulist_s * ) self; + int flags; + int bit; + qboolean invert, enabled; - //parse it + flags = Cvar_VariableValue( "dmflags" ); + + if (f != NULL) + { + bit = f->generic.localints[0]; + invert = f->generic.localints[1]; + enabled = f->curvalue != 0; + + if (invert != enabled) + flags |= bit; + else + flags &= ~bit; + } - result = strlen(status_string); + Cvar_SetValue ("dmflags", flags); - //server info - we may revisit this - rLine = GetLine (&status_string, &result); + Com_sprintf( dmflags_display_buffer, sizeof( dmflags_display_buffer ), "(dmflags = %d)", flags ); +} - //set the displayed default data first - Com_sprintf(mservers[m_num_servers].szAdmin, sizeof(mservers[m_num_servers].szAdmin), "Admin:"); - Com_sprintf(mservers[m_num_servers].szWebsite, sizeof(mservers[m_num_servers].szWebsite), "Website:"); - Com_sprintf(mservers[m_num_servers].fraglimit, sizeof(mservers[m_num_servers].fraglimit), "Fraglimit:"); - Com_sprintf(mservers[m_num_servers].timelimit, sizeof(mservers[m_num_servers].timelimit), "Timelimit:"); - Com_sprintf(mservers[m_num_servers].szVersion, sizeof(mservers[m_num_servers].szVersion), "Version:"); +typedef struct { + char *display_name; + qboolean invert; + int bit; +} DMFlag_control_t; + +static const DMFlag_control_t dmflag_control_names[] = { + {"falling damage", true, DF_NO_FALLING}, + {"weapons stay", false, DF_WEAPONS_STAY}, + {"instant powerups", false, DF_INSTANT_ITEMS}, + {"allow powerups", true, DF_NO_ITEMS}, + {"allow health", true, DF_NO_HEALTH}, + {"allow armor", true, DF_NO_ARMOR}, + {"spawn farthest", false, DF_SPAWN_FARTHEST}, + {"same map", false, DF_SAME_LEVEL}, + {"force respawn", false, DF_FORCE_RESPAWN}, + {"team deathmatch", false, DF_SKINTEAMS}, + {"allow exit", false, DF_ALLOW_EXIT}, + {"infinite ammo", false, DF_INFINITE_AMMO}, + {"quad drop", false, DF_QUAD_DROP}, + {"friendly fire", true, DF_NO_FRIENDLY_FIRE}, + {"bot chat", false, DF_BOTCHAT}, + {"bot fuzzy aim", false, DF_BOT_FUZZYAIM}, + {"auto node save", false, DF_BOT_AUTOSAVENODES}, + {"repeat level if " + "bot wins", true, DF_BOT_LEVELAD}, + {"bots in game", true, DF_BOTS} +}; +#define num_dmflag_controls static_array_size(dmflag_control_names) - /* Establish string and get the first token: */ - token = strtok( rLine, seps ); - while( token != NULL ) { - /* While there are tokens in "string" */ - if (!Q_strcasecmp (lasttoken, "admin")) - Com_sprintf(mservers[m_num_servers].szAdmin, sizeof(mservers[m_num_servers].szAdmin), "Admin: %s", token); - else if (!Q_strcasecmp (lasttoken, "website")) - Com_sprintf(mservers[m_num_servers].szWebsite, sizeof(mservers[m_num_servers].szWebsite), "%s", token); - else if (!Q_strcasecmp (lasttoken, "fraglimit")) - Com_sprintf(mservers[m_num_servers].fraglimit, sizeof(mservers[m_num_servers].fraglimit), "Fraglimit: %s", token); - else if (!Q_strcasecmp (lasttoken, "timelimit")) - Com_sprintf(mservers[m_num_servers].timelimit, sizeof(mservers[m_num_servers].timelimit), "Timelimit: %s", token); - else if (!Q_strcasecmp (lasttoken, "version")) - Com_sprintf(mservers[m_num_servers].szVersion, sizeof(mservers[m_num_servers].szVersion), "%s", token); - else if (!Q_strcasecmp (lasttoken, "mapname")) - Com_sprintf(mservers[m_num_servers].szMapName, sizeof(mservers[m_num_servers].szMapName), "%s", token); - else if (!Q_strcasecmp (lasttoken, "hostname")) - Com_sprintf(mservers[m_num_servers].szHostName, sizeof(mservers[m_num_servers].szHostName), "%s", token); - else if (!Q_strcasecmp (lasttoken, "maxclients")) - Com_sprintf(mservers[m_num_servers].maxClients, sizeof(mservers[m_num_servers].maxClients), "%s", token); - else if (!Q_strcasecmp (lasttoken, "mods")) - Com_sprintf(mservers[m_num_servers].modInfo, sizeof(mservers[m_num_servers].modInfo), "%s", token); +static menuframework_s s_dmflags_submenu; +static menulist_s s_dmflag_controls[num_dmflag_controls]; - /* Get next token: */ - Com_sprintf(lasttoken, sizeof(lasttoken), "%s", token); - token = strtok( NULL, seps ); +void SetWeaponModeFunc(void *_self) +{ + menulist_s *self; + int i, value; + + self = (menulist_s*)_self; + + value = self->curvalue; + + if (self->curvalue) + { + for (i = 0; i < num_weapon_modes; i++) + { + Cvar_SetValue (weaponModeNames[i][1], 0); + s_weaponmode_list[i].curvalue = 0; + } } + + Cvar_SetValue (self->generic.localstrings[0], value); + self->curvalue = value; +} - free (rLine); +static void M_Menu_Mutators_f (void) +{ + int i; + + int dmflags = Cvar_VariableValue( "dmflags" ); + + setup_window (s_mutators_screen, s_mutators_menu, "MUTATORS"); + + for (i = 0; i < num_weapon_modes; i++) + { + s_weaponmode_list[i].generic.name = weaponModeNames[i][0]; + s_weaponmode_list[i].generic.callback = SetWeaponModeFunc; + s_weaponmode_list[i].generic.localstrings[0] = weaponModeNames[i][1]; + s_weaponmode_list[i].curvalue = Cvar_VariableValue (weaponModeNames[i][1]); + setup_radiobutton (s_weaponmode_list[i]); + Menu_AddItem (&s_mutators_menu, &s_weaponmode_list[i]); + } + + s_camptime.generic.type = MTYPE_FIELD; + s_camptime.generic.name = "camp time"; + s_camptime.generic.flags = QMF_NUMBERSONLY; + s_camptime.generic.localstrings[0] = "camptime"; + s_camptime.length = 3; + s_camptime.generic.visible_length = 3; + strcpy( s_camptime.buffer, Cvar_VariableString("camptime") ); + s_camptime.generic.callback = IntFieldCallback; + + for (i = 0; i < num_mutators; i++) + { + s_mutator_list[i].generic.name = mutatorNames[i][0]; + s_mutator_list[i].generic.callback = SpinOptionFunc; + s_mutator_list[i].generic.localstrings[0] = weaponModeNames[i][1]; + s_mutator_list[i].curvalue = Cvar_VariableValue (mutatorNames[i][1]); + setup_tickbox (s_mutator_list[i]); + Menu_AddItem (&s_mutators_menu, &s_mutator_list[i]); + + // camptime goes after anticamp control-- we put this here so we can + // insert it in the right place in the menu + if (!strcmp (mutatorNames[i][0], "anticamp")) + Menu_AddItem( &s_mutators_menu, &s_camptime ); + } + + add_text (s_mutators_menu, dmflags_display_buffer, 0); + + s_dmflags_submenu.generic.type = MTYPE_SUBMENU; + s_dmflags_submenu.generic.flags = QMF_SNUG_LEFT | QMF_SUBMENU_CAPTURE; + s_dmflags_submenu.navagable = true; + s_dmflags_submenu.bordertexture = "menu/sm_"; + s_dmflags_submenu.nitems = 0; + s_dmflags_submenu.maxlines = 15; + for (i = 0; i < num_dmflag_controls; i++) + { + s_dmflag_controls[i].generic.name = dmflag_control_names[i].display_name; + s_dmflag_controls[i].generic.callback = DMFlagCallback; + setup_tickbox (s_dmflag_controls[i]); + s_dmflag_controls[i].generic.localints[0] = dmflag_control_names[i].bit; + s_dmflag_controls[i].generic.localints[1] = dmflag_control_names[i].invert; + s_dmflag_controls[i].curvalue = (dmflags & dmflag_control_names[i].bit) != 0; + if (dmflag_control_names[i].invert) + { + s_dmflag_controls[i].curvalue = s_dmflag_controls[i].curvalue == 0; + } + + Menu_AddItem (&s_dmflags_submenu, &s_dmflag_controls[i]); + } + + Menu_AddItem (&s_mutators_menu, &s_dmflags_submenu); + + // initialize the dmflags display buffer + DMFlagCallback( 0 ); + + M_PushMenu_Defaults (s_mutators_screen); +} - //playerinfo - rankTotal = 0; - strcpy (seps, " "); - while ((rLine = GetLine (&status_string, &result)) && players < 32) { - /* Establish string and get the first token: */ - token = strtok( rLine, seps); - score = atoi(token); +/* +============================================================================= - token = strtok( NULL, seps); - ping = atoi(token); +ADD BOTS MENU - token = strtok( NULL, "\""); +============================================================================= +*/ - if (token) - strncpy (playername, token, sizeof(playername)-1); - else - playername[0] = '\0'; +// For going from weapon pickup name to weapon icon. Used for displaying icon +// previews of the bots' favorite weapons. +static char *weapon_icon_names[][2] = +{ + {"Hover", "hover"}, + {"Bomber", "bomber"}, + {"Strafer", "strafer"}, + {"Grapple", "grapple"}, + {"Blaster", "blaster"}, + {"Violator", "violator"}, + {"Alien Smartgun", "smartgun"}, + {"Pulse Rifle", "chaingun"}, + {"Flame Thrower", "flamethrower"}, + {"Rocket Launcher", "rocketlauncher"}, + {"Alien Disruptor", "disruptor"}, + {"Disruptor", "beamgun"}, + {"Alien Vaporizer", "vaporizor"} // note the different spellings +}; +#define num_weapon_icons static_array_size(weapon_icon_names) - free (rLine); +static menuframework_s s_addbots_screen; +static menuframework_s s_addbots_menu; +static menuframework_s s_addbots_header; +static menutxt_s s_addbots_name_label; +static menutxt_s s_addbots_skill_label; +static menutxt_s s_addbots_faveweap_label; - playername[sizeof(playername)-1] = '\0'; +int totalbots; - //get ranking - Q_strncpyz2( player.playername, playername, sizeof(player.playername)); - player.totalfrags = player.totaltime = player.ranking = 0; - player = getPlayerRanking ( player ); +#define MAX_BOTS 16 +struct botdata { + char name[32]; + char model[64]; + char userinfo[MAX_INFO_STRING]; + char faveweap[64]; + int skill; + + // menu entities + menuframework_s row; + menuaction_s action; + char skill_buf[2]; + menutxt_s m_skill; + menutxt_s m_faveweap; +} bots[MAX_BOTS]; + +static menulist_s s_startmap_list; +static menulist_s s_rules_box; +static menulist_s s_bots_bot_action[8]; +#define MAX_MAPS 256 +static char *mapnames[MAX_MAPS + 2]; - // trim playername string - x = ValidatePlayerName( playername, sizeof(playername) ); - x = 15 - x; // calc space padding from visible glyph count - assert( x >= 0 ); - if ( x > 0 && ( (x + strlen(playername)) < sizeof(playername) ) ) - strncat( playername, " ", x ); +struct botinfo { + char name[32]; + char userinfo[MAX_INFO_STRING]; +} bot[8]; - Com_sprintf(mservers[m_num_servers].playerInfo[players], sizeof(mservers[m_num_servers].playerInfo[players]), - "%s %4i %4i", playername, score, ping); +int slot; - mservers[m_num_servers].playerRankings[players] = player.ranking; +void LoadBotInfo( void ) +{ + FILE *pIn; + int i, count; + char *name; + char *skin; - rankTotal += player.ranking; + char fullpath[MAX_OSPATH]; - players++; + if ( !FS_FullPath( fullpath, sizeof(fullpath), BOT_GAMEDATA"/allbots.tmp" ) ) + { + Com_DPrintf("LoadBotInfo: %s/allbots.tmp not found\n", BOT_GAMEDATA ); + return; } - - if(players) { - - if(thisPlayer.ranking < (rankTotal/players) - 100) - strcpy(skillLevel, "Your Skill is ^1Higher"); - else if(thisPlayer.ranking > (rankTotal/players + 100)) - strcpy(skillLevel, "Your Skill is ^4Lower"); - else - strcpy(skillLevel, "Your Skill is ^3Even"); - - Com_sprintf(mservers[m_num_servers].skill, sizeof(mservers[m_num_servers].skill), "Skill: %s", skillLevel); + if( (pIn = fopen( fullpath, "rb" )) == NULL ) + { + Com_DPrintf("LoadBotInfo: failed file open: %s\n", fullpath ); + return; } - else - Com_sprintf(mservers[m_num_servers].skill, sizeof(mservers[m_num_servers].skill), "Skill Level: Unknown"); - - if(!m_show_empty) - if(!players) - return; - mservers[m_num_servers].players = players; + szr = fread(&count,sizeof (int),1,pIn); + if(count>MAX_BOTS) + count = MAX_BOTS; - //build the string for the server (hostname - address - mapname - players/maxClients) - //pad the strings - gotta do this for both maps and hostname - x = 0; - for(i=0; i<32; i++) { - if(!mservers[m_num_servers].szHostName[i]) - mservers[m_num_servers].szHostName[i] = 32; - else if(mservers[m_num_servers].szHostName[i] == '^' && i < strlen( mservers[m_num_servers].szHostName )-1) { - if(mservers[m_num_servers].szHostName[i+1] != '^') - x += 2; - } - } - mservers[m_num_servers].szHostName[20+x] = 0; //fix me this is dangerous - for(i=0; i<12; i++) { - if(!mservers[m_num_servers].szMapName[i]) - mservers[m_num_servers].szMapName[i] = 32; - } - mservers[m_num_servers].szMapName[12] = 0; - Com_sprintf(mservers[m_num_servers].serverInfo, sizeof(mservers[m_num_servers].serverInfo), "%s %12s %2i/%2s %4i", mservers[m_num_servers].szHostName, - mservers[m_num_servers].szMapName, players, mservers[m_num_servers].maxClients, mservers[m_num_servers].ping); + for(i=0;i 112) - svridx = 112; - s_joinserver_scrollbar.curvalue++; -} -void JoinScrollMove ( void *self) -{ - svridx = s_joinserver_scrollbar.curvalue; - if(svridx > 112) - svridx = 112; + name = Info_ValueForKey (bots[i].userinfo, "name"); + skin = Info_ValueForKey (bots[i].userinfo, "skin"); + strncpy(bots[i].name, name, sizeof(bots[i].name)-1); + Com_sprintf (bots[i].model, sizeof(bots[i].model), "bots/%s_i", skin); + + // defaults for .cfg data + bots[i].skill = 1; //medium + strcpy (bots[i].faveweap, "None"); + Com_sprintf (bots[i].skill_buf, sizeof(bots[i].skill_buf), "%d", bots[i].skill); + + // load info from config file if possible + + Com_sprintf (cfgpath, sizeof(cfgpath), "%s/%s.cfg", BOT_GAMEDATA, name); + if( FS_LoadFile (cfgpath, &cfg) == -1 ) + { + Com_DPrintf("LoadBotInfo: failed file open: %s\n", fullpath ); + continue; + } + + if ( (s = strtok( cfg, delim )) != NULL ) + bots[i].skill = atoi( s ); + if ( bots[i].skill < 0 ) + bots[i].skill = 0; + + Com_sprintf (bots[i].skill_buf, sizeof(bots[i].skill_buf), "%d", bots[i].skill); + + if ( s && ((s = strtok( NULL, delim )) != NULL) ) + strncpy( bots[i].faveweap, s, sizeof(bots[i].faveweap)-1 ); + + Z_Free (cfg); + } + totalbots = count; + fclose(pIn); } -void MoveUp_plist ( void *self) -{ - playeridx--; - if(playeridx < 0) - playeridx = 0; - s_playerlist_scrollbar.curvalue--; -} -void MoveDown_plist ( void *self) -{ - playeridx++; - if(playeridx > 24) - playeridx = 24; - s_playerlist_scrollbar.curvalue++; -} -void PlayerScrollMove ( void *self) +void AddbotFunc(void *self) { - playeridx = s_playerlist_scrollbar.curvalue; - if(playeridx > 24) - playeridx = 24; -} - -void MoveUp_mlist ( void *self) -{ - modidx--; - if(modidx < 0) - modidx = 0; - s_modlist_scrollbar.curvalue--; -} -void MoveDown_mlist ( void *self) -{ - modidx++; - if(modidx > 18) - modidx = 18; - s_modlist_scrollbar.curvalue++; -} -void ModScrollMove ( void *self) -{ - modidx = s_modlist_scrollbar.curvalue; - if(modidx > 18) - modidx = 18; -} -//join on double click, return info on single click - to do - might consider putting player info in a tooltip on single click/right click -void JoinServerFunc( void *self ) -{ - char buffer[128]; - int index; - int i; - char modstring[64]; - char *token; - - index = ( menuaction_s * ) self - s_joinserver_server_actions; + int i, count; + char startmap[MAX_QPATH]; + char bot_filename[MAX_OSPATH]; + FILE *pOut; + menuframework_s *f = ( menuframework_s * ) self; - playeridx = s_playerlist_scrollbar.curvalue = 0; - modidx = s_modlist_scrollbar.curvalue = 0; + //get the name and copy that config string into the proper slot name + for(i = 0; i < totalbots; i++) + { + if (f == &bots[i].row) + { //this is our selected bot + strcpy(bot[slot].name, bots[i].name); + strcpy(bot[slot].userinfo, bots[i].userinfo); + s_bots_bot_action[slot].generic.name = bots[i].name; + } + } - if ( Q_strcasecmp( mservers[index+svridx].szHostName, NO_SERVER_STRING ) == 0 ) - return; + //save off bot file + count = 8; + for(i = 0; i < 8; i++) + { + if(!strcmp(bot[i].name, "...empty slot")) + count--; + } + strcpy( startmap, strchr( mapnames[s_startmap_list.curvalue], '\n' ) + 1 ); + for(i = 0; i < strlen(startmap); i++) + startmap[i] = tolower(startmap[i]); - if (index >= m_num_servers) - return; + if(s_rules_box.curvalue == 1 || s_rules_box.curvalue == 4 || s_rules_box.curvalue == 5) + { // team game + FS_FullWritePath( bot_filename, sizeof(bot_filename), BOT_GAMEDATA"/team.tmp" ); + } + else + { // non-team, bots per map + char relative_path[MAX_QPATH]; + Com_sprintf( relative_path, sizeof(relative_path), BOT_GAMEDATA"/%s.tmp", startmap ); + FS_FullWritePath( bot_filename, sizeof(bot_filename), relative_path ); + } - if(cursor.buttonclicks[MOUSEBUTTON1] != 2) + if((pOut = fopen(bot_filename, "wb" )) == NULL) { + Com_DPrintf("AddbotFunc: failed fopen for write: %s\n", bot_filename ); + return; // bail + } - //initialize - for (i=0 ; i<32 ; i++) - local_server_info[i][0] = '\0'; - - //set strings for output - mservers[index+svridx].szAdmin[24] = 0; //trim some potential box offenders - mservers[index+svridx].szWebsite[24] = 0; - mservers[index+svridx].szVersion[24] = 0; - Com_sprintf(local_server_data[0], sizeof(local_server_data[0]), mservers[index+svridx].skill); - Com_sprintf(local_server_data[1], sizeof(local_server_data[1]), mservers[index+svridx].szAdmin); - Com_sprintf(local_server_data[2], sizeof(local_server_data[2]), mservers[index+svridx].szWebsite); - Com_sprintf(local_server_data[3], sizeof(local_server_data[3]), mservers[index+svridx].fraglimit); - Com_sprintf(local_server_data[4], sizeof(local_server_data[4]), mservers[index+svridx].timelimit); - Com_sprintf(local_server_data[5], sizeof(local_server_data[5]), mservers[index+svridx].szVersion); - - //Copy modstring over since strtok will modify it - Q_strncpyz(modstring, mservers[index+svridx].modInfo, sizeof(modstring)); - token = strtok(modstring, "%%"); - for (i=0; i<16; i++) { - if (!token) - break; - Com_sprintf(local_mods_data[i], sizeof(local_mods_data[i]), token); - token = strtok(NULL, "%%"); - } - - //Reset all the rest of the strings that haven't been initialized - for (; i<16; i++) - local_mods_data[i][0] = 0; - - //players - for(i=0; i -1; i--) { + if(strcmp(bot[i].name, "...empty slot")) + szr = fwrite(bot[i].userinfo,sizeof (char) * MAX_INFO_STRING,1,pOut); } - if(!pNameUnique) { - M_Menu_PlayerConfig_f(); - return; - } + fclose(pOut); - Com_sprintf (buffer, sizeof(buffer), "connect %s\n", NET_AdrToString (mservers[index+svridx].local_server_netadr)); - Cbuf_AddText (buffer); - M_ForceMenuOff (); -} + //kick back to previous menu + M_PopMenu(); -void AddressBookFunc( void *self ) -{ - M_Menu_AddressBook_f(); } -void PlayerRankingFunc( void *self ) +static void M_Menu_AddBots_f (void) { - M_Menu_PlayerRanking_f(); -} + int i, j; -void NullCursorDraw( void *self ) -{ -} + totalbots = 0; -void SearchLocalGames( void ) -{ - int i; + LoadBotInfo(); - svridx = 0; - playeridx = 0; - modidx = 0; - m_num_servers = 0; - for (i=0 ; istring, (strlen(name->string)+1) ); - Q_strncpyz2( thisPlayer.playername, name->string, sizeof(thisPlayer.playername) ); - thisPlayer.totalfrags = thisPlayer.totaltime = thisPlayer.ranking = 0; - thisPlayer = getPlayerRanking ( thisPlayer ); +} - if(!strcmp(name->string, "Player")) - pNameUnique = false; - else - pNameUnique = true; +void MapInfoFunc( void *self ) { - s_joinserver_menu.x = viddef.width * 0.50; - offset = viddef.height/2 + 60*scale; + // FILE *map_file; // unused + FILE *desc_file; + char line[500]; + char *pLine; + char *rLine; + int result; + int i; + char seps[] = "//"; + char *token; + char startmap[128]; + char path[MAX_QPATH]; + static char levelshot[MAX_QPATH]; - s_joinserver_menu.nitems = 0; + //get a map description if it is there - s_joinserver_address_book_action.generic.type = MTYPE_ACTION; - s_joinserver_address_book_action.generic.name = "address book"; - s_joinserver_address_book_action.generic.x = 370*scale; - s_joinserver_address_book_action.generic.y = FONTSCALE*30*scale+offset; - s_joinserver_address_book_action.generic.cursor_offset = -16*scale; - s_joinserver_address_book_action.generic.callback = AddressBookFunc; - - s_joinserver_search_action.generic.type = MTYPE_ACTION; - s_joinserver_search_action.generic.name = "refresh list"; - s_joinserver_search_action.generic.x = -190*scale; - s_joinserver_search_action.generic.y = FONTSCALE*-290*scale+offset; - s_joinserver_search_action.generic.cursor_offset = -16*scale; - s_joinserver_search_action.generic.callback = SearchLocalGamesFunc; - s_joinserver_search_action.generic.statusbar = "search for servers"; - - s_joinserver_player_ranking_action.generic.type = MTYPE_ACTION; - s_joinserver_player_ranking_action.generic.name = "Rank/Stats"; - s_joinserver_player_ranking_action.generic.x = 55*scale; - s_joinserver_player_ranking_action.generic.y = FONTSCALE*-290*scale+offset; - s_joinserver_player_ranking_action.generic.cursor_offset = -16*scale; - s_joinserver_player_ranking_action.generic.callback = PlayerRankingFunc; - - s_joinserver_filterempty_action.generic.type = MTYPE_SPINCONTROL; - s_joinserver_filterempty_action.generic.name = "show empty"; - s_joinserver_filterempty_action.itemnames = yesno_names; - s_joinserver_filterempty_action.generic.x = 285*scale; - s_joinserver_filterempty_action.generic.y = FONTSCALE*-290*scale+offset; - s_joinserver_filterempty_action.generic.cursor_offset = -16*scale; - s_joinserver_filterempty_action.curvalue = m_show_empty; - s_joinserver_filterempty_action.generic.callback = FilterEmptyFunc; - - s_joinserver_moveup.generic.type = MTYPE_ACTION; - s_joinserver_moveup.generic.name = " "; - s_joinserver_moveup.generic.flags = QMF_LEFT_JUSTIFY; - s_joinserver_moveup.generic.x = 365*scale; - s_joinserver_moveup.generic.y = FONTSCALE*-232*scale+offset; - s_joinserver_moveup.generic.cursor_offset = -16*scale; - s_joinserver_moveup.generic.callback = MoveUp; - - s_joinserver_movedown.generic.type = MTYPE_ACTION; - s_joinserver_movedown.generic.name = " "; - s_joinserver_movedown.generic.flags = QMF_LEFT_JUSTIFY; - s_joinserver_movedown.generic.x = 365*scale; - s_joinserver_movedown.generic.y = FONTSCALE*-140*scale+offset; - s_joinserver_movedown.generic.cursor_offset = -16*scale; - s_joinserver_movedown.generic.callback = MoveDown; - - s_joinserver_scrollbar.generic.type = MTYPE_VERTSLIDER; - s_joinserver_scrollbar.generic.name = " "; - s_joinserver_scrollbar.generic.x = 370*scale; - s_joinserver_scrollbar.generic.y = FONTSCALE*-215*scale+offset; - s_joinserver_scrollbar.minvalue = 0; - s_joinserver_scrollbar.maxvalue = 16; - s_joinserver_scrollbar.size = 12; - s_joinserver_scrollbar.curvalue = 0; - s_joinserver_scrollbar.generic.callback = JoinScrollMove; - - s_playerlist_moveup.generic.type = MTYPE_ACTION; - s_playerlist_moveup.generic.name = " "; - s_playerlist_moveup.generic.flags = QMF_LEFT_JUSTIFY; - s_playerlist_moveup.generic.x = 131*scale; - s_playerlist_moveup.generic.y = FONTSCALE*6*scale+offset; - s_playerlist_moveup.generic.cursor_offset = -16*scale; - s_playerlist_moveup.generic.callback = MoveUp_plist; - - s_playerlist_movedown.generic.type = MTYPE_ACTION; - s_playerlist_movedown.generic.name = " "; - s_playerlist_movedown.generic.flags = QMF_LEFT_JUSTIFY; - s_playerlist_movedown.generic.x = 131*scale; - s_playerlist_movedown.generic.y = FONTSCALE*54*scale+offset; - s_playerlist_movedown.generic.cursor_offset = -16*scale; - s_playerlist_movedown.generic.callback = MoveDown_plist; - - s_playerlist_scrollbar.generic.type = MTYPE_VERTSLIDER; - s_playerlist_scrollbar.generic.name = " "; - s_playerlist_scrollbar.generic.x = 135*scale; - s_playerlist_scrollbar.generic.y = FONTSCALE*+24*scale+offset; - s_playerlist_scrollbar.minvalue = 0; - s_playerlist_scrollbar.maxvalue = 16; - s_playerlist_scrollbar.size = 4; - s_playerlist_scrollbar.curvalue = 0; - s_playerlist_scrollbar.generic.callback = PlayerScrollMove; - - s_modlist_moveup.generic.type = MTYPE_ACTION; - s_modlist_moveup.generic.name = " "; - s_modlist_moveup.generic.flags = QMF_LEFT_JUSTIFY; - s_modlist_moveup.generic.x = 365*scale; - s_modlist_moveup.generic.y = FONTSCALE*-86*scale+offset; - s_modlist_moveup.generic.cursor_offset = -16*scale; - s_modlist_moveup.generic.callback = MoveUp_mlist; - - s_modlist_movedown.generic.type = MTYPE_ACTION; - s_modlist_movedown.generic.name = " "; - s_modlist_movedown.generic.flags = QMF_LEFT_JUSTIFY; - s_modlist_movedown.generic.x = 365*scale; - s_modlist_movedown.generic.y = FONTSCALE*-46*scale+offset; - s_modlist_movedown.generic.cursor_offset = -16*scale; - s_modlist_movedown.generic.callback = MoveDown_mlist; - - s_modlist_scrollbar.generic.type = MTYPE_VERTSLIDER; - s_modlist_scrollbar.generic.name = " "; - s_modlist_scrollbar.generic.x = 370*scale; - s_modlist_scrollbar.generic.y = FONTSCALE*-70*scale+offset; - s_modlist_scrollbar.minvalue = 0; - s_modlist_scrollbar.maxvalue = 12; - s_modlist_scrollbar.size = 3; - s_modlist_scrollbar.curvalue = 0; - s_modlist_scrollbar.generic.callback = ModScrollMove; - - Menu_AddItem( &s_joinserver_menu, &s_joinserver_address_book_action ); - Menu_AddItem( &s_joinserver_menu, &s_joinserver_search_action ); - Menu_AddItem( &s_joinserver_menu, &s_joinserver_filterempty_action ); - Menu_AddItem( &s_joinserver_menu, &s_joinserver_player_ranking_action ); - - for ( i = 0; i < 16; i++ ) - Menu_AddItem( &s_joinserver_menu, &s_joinserver_server_actions[i] ); - - for ( i = 0; i < 8; i++ ) //same here - Menu_AddItem( &s_joinserver_menu, &s_joinserver_server_info[i] ); - - for ( i = 0; i < 6; i++ ) - Menu_AddItem( &s_joinserver_menu, &s_joinserver_server_data[i] ); - - for ( i = 0; i < 6; i++ ) - Menu_AddItem( &s_joinserver_menu, &s_joinserver_mods_data[i] ); - - //add items to move the index - Menu_AddItem( &s_joinserver_menu, &s_joinserver_moveup ); - Menu_AddItem( &s_joinserver_menu, &s_joinserver_movedown ); - Menu_AddItem( &s_joinserver_menu, &s_joinserver_scrollbar ); - Menu_AddItem( &s_joinserver_menu, &s_modlist_moveup ); - Menu_AddItem( &s_joinserver_menu, &s_modlist_movedown ); - Menu_AddItem( &s_joinserver_menu, &s_modlist_scrollbar ); - Menu_AddItem( &s_joinserver_menu, &s_playerlist_moveup ); - Menu_AddItem( &s_joinserver_menu, &s_playerlist_movedown ); - Menu_AddItem( &s_joinserver_menu, &s_playerlist_scrollbar ); + if(mapnames[0]) + strcpy( startmap, strchr( mapnames[s_startmap_list.curvalue], '\n' ) + 1 ); + else + strcpy( startmap, "missing"); - Menu_Center( &s_joinserver_menu ); + Com_sprintf(path, sizeof(path), "levelshots/%s.txt", startmap); + FS_FOpenFile(path, &desc_file); + if (desc_file) { + if(fgets(line, 500, desc_file)) + { + pLine = line; - if(!gotServers) - SearchLocalGames(); - gotServers = true; -} + result = strlen(line); -void JoinServer_MenuDraw(void) -{ - int i; - float scale, offset, xoffset; - char ranktxt[8][32]; - char modtxt[8][48]; - char modnames[8][24]; + rLine = GetLine (&pLine, &result); - scale = (float)(viddef.height)/600; + /* Establish string and get the first token: */ + token = strtok( rLine, seps ); + i = 0; + while( token != NULL && i < 5) { - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; + /* Get next token: */ + token = strtok( NULL, seps ); + /* While there are tokens in "string" */ + s_startserver_map_data[i].generic.type = MTYPE_TEXT; + s_startserver_map_data[i].generic.name = token; + s_startserver_map_data[i].generic.flags = QMF_RIGHT_COLUMN; - M_Background( "menu_back" ); //draw background first - M_Banner( "m_joinserver", banneralpha ); + i++; + } - //warn user that they cannot join until changing default player name - if(!pNameUnique) { - M_DrawTextBox( 68*scale, -50*scale, 28, 2 ); - M_Print( 93*scale, -46*scale, "You must create your player" ); - M_Print( 93*scale, -36*scale, "name before joining a server!" ); - } - - offset = viddef.height/2 - 326*scale; - for ( i = 0; i < 16; i++ ) - { - s_joinserver_server_actions[i].generic.type = MTYPE_COLORACTION; - s_joinserver_server_actions[i].generic.name = mservers[i+svridx].serverInfo; - s_joinserver_server_actions[i].generic.x = scale*-360; - s_joinserver_server_actions[i].generic.y = FONTSCALE*-1*scale + FONTSCALE*i*10*scale+offset; - s_joinserver_server_actions[i].generic.cursor_offset = -16*scale; - s_joinserver_server_actions[i].generic.callback = JoinServerFunc; - if(pNameUnique) - s_joinserver_server_actions[i].generic.statusbar = "press ENTER or DBL CLICK to connect"; - else - s_joinserver_server_actions[i].generic.statusbar = "you must change your player name from the default before connecting!"; - } + } - //draw the server info here + fclose(desc_file); - for ( i = 0; i < 8; i++) - { - Com_sprintf(ranktxt[i], sizeof(ranktxt[i]), "Player is ranked %i", local_server_rankings[i+playeridx]); - s_joinserver_server_info[i].generic.type = MTYPE_COLORACTION; - s_joinserver_server_info[i].generic.name = local_server_info[i+playeridx]; - s_joinserver_server_info[i].generic.flags = QMF_LEFT_JUSTIFY; - s_joinserver_server_info[i].generic.x = -360*scale; - s_joinserver_server_info[i].generic.callback = NULL; - s_joinserver_server_info[i].generic.y = FONTSCALE*254*scale + FONTSCALE*i*10*scale+offset; - s_joinserver_server_info[i].generic.statusbar = ranktxt[i]; } - - xoffset = GetColorTokens(local_server_data[0]); //only this line - for ( i = 0; i < 6; i++) + else { - s_joinserver_server_data[i].generic.type = MTYPE_COLORTXT; - s_joinserver_server_data[i].generic.name = local_server_data[i]; - s_joinserver_server_data[i].generic.flags = QMF_LEFT_JUSTIFY; - if(i == 0) - s_joinserver_server_data[i].generic.x = (-380-(FONTSCALE*xoffset*20))*scale; - else - s_joinserver_server_data[i].generic.x = -380*scale; - s_joinserver_server_data[i].generic.y = FONTSCALE*169*scale + FONTSCALE*i*10*scale+offset; + for (i = 0; i < 5; i++ ) + { + s_startserver_map_data[i].generic.type = MTYPE_TEXT; + s_startserver_map_data[i].generic.name = "no data"; + s_startserver_map_data[i].generic.flags = QMF_RIGHT_COLUMN; + } } + + Com_sprintf( levelshot, sizeof(levelshot), "/levelshots/%s", startmap ); + s_levelshot_preview.generic.localstrings[0] = levelshot; - for ( i = 0; i < 6; i++) - { - Com_sprintf ( modtxt[i], sizeof(modtxt[i]), - Info_ValueForKey(mods_desc, local_mods_data[i+modidx]) - ); - if (!strlen(modtxt[i])) - Com_sprintf (modtxt[i], sizeof(modtxt[i]), "(no description)"); - Com_sprintf ( modnames[i], sizeof(modnames[i]), - Info_ValueForKey(mod_names, local_mods_data[i+modidx]) - ); - if (!strlen(modnames[i])) - Com_sprintf (modnames[i], sizeof(modnames[i]), local_mods_data[i+modidx]); - s_joinserver_mods_data[i].generic.type = MTYPE_COLORACTION; - s_joinserver_mods_data[i].generic.name = modnames[i]; - s_joinserver_mods_data[i].generic.flags = QMF_LEFT_JUSTIFY; - s_joinserver_mods_data[i].generic.x = 80*scale; - s_joinserver_mods_data[i].generic.y = FONTSCALE*169*scale + FONTSCALE*i*10*scale+offset; - s_joinserver_mods_data[i].generic.statusbar = modtxt[i]; - s_joinserver_mods_data[i].generic.callback = NULL; - } - s_joinserver_scrollbar.maxvalue = m_num_servers - 16; - M_ArrowPics(); - Menu_Draw( &s_joinserver_menu ); } -const char *JoinServer_MenuKey( int key ) +static const char *game_mode_names[] = { - if ( key == K_ENTER ) - { - cursor.buttonclicks[MOUSEBUTTON1] = 2;//so we can still join without a mouse - } - if ( key == K_MWHEELDOWN ) - { - svridx++; - if(svridx > 112) - svridx = 112; - s_joinserver_scrollbar.curvalue++; - if(s_joinserver_scrollbar.curvalue > 16) - s_joinserver_scrollbar.curvalue = 16; - } - if( key == K_MWHEELUP ) - { - svridx--; - if(svridx < 0) - svridx = 0; - s_joinserver_scrollbar.curvalue--; - if(s_joinserver_scrollbar.curvalue < 0) - s_joinserver_scrollbar.curvalue = 0; - } - return Default_MenuKey( &s_joinserver_menu, key ); -} +#ifndef TACTICAL + "deathmatch", + "ctf", +#endif + "tactical", +#ifndef TACTICAL + "all out assault", + "deathball", + "team core assault", + "cattle prod", + "duel", +#endif + NULL +}; +#define num_game_modes (static_array_size(game_mode_names)-1) -void M_Menu_JoinServer_f (void) +//same order as game_mode_names +static const char *map_prefixes[num_game_modes][3] = { - JoinServer_MenuInit(); - M_PushMenu( JoinServer_MenuDraw, JoinServer_MenuKey ); -} +#ifndef TACTICAL + {"dm", "tourney", NULL}, + {"ctf", NULL}, + {"tac", NULL}, + {"aoa", NULL}, + {"db", NULL}, + {"tca", NULL}, + {"cp", NULL}, + {"dm", "tourney", NULL} +#else + {"tac", NULL} +#endif +}; -/* -============================================================================= +void RulesChangeFunc ( void *self ) //this has been expanded to rebuild map list +{ + char *buffer; + char mapsname[1024]; + char *s; + int length; + int i, k; + FILE *fp; + char shortname[MAX_TOKEN_CHARS]; + char longname[MAX_TOKEN_CHARS]; + char scratch[200]; + char *curMap; + int nmaps = 0; + int totalmaps; + char **mapfiles; + // char *path = NULL; // unused + static char **bspnames; + int j, l; -MUTATORS MENU + //clear out list first + for ( i = 0; i < nummaps; i++ ) + free( mapnames[i] ); -============================================================================= -*/ -static menuframework_s s_mutators_menu; -static menulist_s s_instagib_list; -static menulist_s s_rocketarena_list; -static menulist_s s_insta_rockets_list; -static menulist_s s_excessive_list; -static menulist_s s_vampire_list; -static menulist_s s_regen_list; -static menulist_s s_quickweaps_list; -static menulist_s s_anticamp_list; -static menufield_s s_camptime; -static menulist_s s_speed_list; -static menulist_s s_joust_list; -static menulist_s s_lowgrav_list; -static menulist_s s_classbased_list; - -void InstagibFunc(void *self) { - - if(s_instagib_list.curvalue) { - Cvar_SetValue ("instagib", 1); - Cvar_SetValue ("rocket_arena", 0); - s_rocketarena_list.curvalue = 0; - Cvar_SetValue( "insta_rockets", 0 ); - s_insta_rockets_list.curvalue = 0; - Cvar_SetValue ("excessive", 0); - s_excessive_list.curvalue = 0; - Cvar_SetValue("classbased", 0); - s_classbased_list.curvalue = 0; - } - else - Cvar_SetValue ("instagib", 0); -} -void RocketFunc(void *self) { + nummaps = 0; - if(s_rocketarena_list.curvalue) { - Cvar_SetValue ("rocket_arena", 1); - Cvar_SetValue ("instagib", 0); - s_instagib_list.curvalue = 0; - Cvar_SetValue( "insta_rockets", 0 ); - s_insta_rockets_list.curvalue = 0; - Cvar_SetValue ("excessive", 0); - s_excessive_list.curvalue = 0; - Cvar_SetValue("classbased", 0); - s_classbased_list.curvalue = 0; + /* + ** reload the list of map names, based on rules + */ + // maps.lst normally in "data1/" + // need to add a function to FS_ if that is the only place it is allowed + if ( !FS_FullPath( mapsname, sizeof( mapsname ), "maps.lst" ) ) + { + Com_Error( ERR_DROP, "couldn't find maps.lst\n" ); + return; // for show, no maps.lst is fatal error } - else - Cvar_SetValue ("rocket_arena", 0); -} -void InstaRocketsFunc(void *self) -{ - if ( s_insta_rockets_list.curvalue ) + if ( ( fp = fopen( mapsname, "rb" ) ) == 0 ) { - Cvar_SetValue( "insta_rockets", 1 ); - Cvar_SetValue ("rocket_arena", 0); - s_rocketarena_list.curvalue = 0; - Cvar_SetValue( "instagib", 0 ); - s_instagib_list.curvalue = 0; - Cvar_SetValue( "excessive", 0 ); - s_excessive_list.curvalue = 0; - Cvar_SetValue( "classbased", 0 ); - s_classbased_list.curvalue = 0; - } - else - Cvar_SetValue( "insta_rockets", 0 ); - -} -void ExcessiveFunc(void *self) { - - if(s_excessive_list.curvalue) { - Cvar_SetValue("excessive", 1); - Cvar_SetValue("instagib", 0); - s_instagib_list.curvalue = 0; - Cvar_SetValue("rocket_arena", 0); - s_rocketarena_list.curvalue = 0; - Cvar_SetValue( "insta_rockets", 0 ); - s_insta_rockets_list.curvalue = 0; - Cvar_SetValue("classbased", 0); - s_classbased_list.curvalue = 0; - } - else - Cvar_SetValue("excessive", 0); -} -void ClassbasedFunc(void *self) { - - if(s_classbased_list.curvalue) { - Cvar_SetValue("classbased", 1); - s_excessive_list.curvalue = 0; - Cvar_SetValue("excessive", 0); - Cvar_SetValue("instagib", 0); - s_instagib_list.curvalue = 0; - Cvar_SetValue("rocket_arena", 0); - s_rocketarena_list.curvalue = 0; - Cvar_SetValue( "insta_rockets", 0 ); - s_insta_rockets_list.curvalue = 0; - } - else - Cvar_SetValue("classbased", 0); -} -void MutatorsFunc(void *self) { - - Cvar_SetValue("vampire", s_vampire_list.curvalue); - - Cvar_SetValue("regeneration", s_regen_list.curvalue); - - Cvar_SetValue("quickweap", s_quickweaps_list.curvalue); - - Cvar_SetValue("anticamp", s_anticamp_list.curvalue); - - Cvar_SetValue("sv_joustmode", s_joust_list.curvalue); - - Cvar_SetValue("low_grav", s_lowgrav_list.curvalue); - - Cvar_SetValue("playerspeed", s_speed_list.curvalue); - -} - -void SetMutatorsFunc( void *self) { - //set the menu according to current cvar settings - s_instagib_list.curvalue = Cvar_VariableValue("instagib"); - s_rocketarena_list.curvalue = Cvar_VariableValue("rocket_arena"); - s_insta_rockets_list.curvalue = Cvar_VariableValue("insta_rockets"); - s_excessive_list.curvalue = Cvar_VariableValue("excessive"); - s_vampire_list.curvalue = Cvar_VariableValue("vampire"); - s_regen_list.curvalue = Cvar_VariableValue("regeneration"); - s_quickweaps_list.curvalue = Cvar_VariableValue("quickweap"); - s_lowgrav_list.curvalue = Cvar_VariableValue("low_grav"); - s_anticamp_list.curvalue = Cvar_VariableValue("anticamp"); - strcpy( s_camptime.buffer, Cvar_VariableString("camptime") ); - s_joust_list.curvalue = Cvar_VariableValue("sv_joustmode"); - s_speed_list.curvalue = Cvar_VariableValue("playerspeed"); - s_classbased_list.curvalue = Cvar_VariableValue("classbased"); -} -void Mutators_MenuInit( void ) -{ - int offset; - - - static const char *yn[] = - { - "no", - "yes", - 0 - }; - float scale; - - scale = (float)(viddef.height)/600; - - banneralpha = 0.1; - - /* - ** initialize the menu stuff - */ - s_mutators_menu.x = viddef.width * 0.50 + 50*scale; - s_mutators_menu.nitems = 0; - offset = viddef.height/2 - 80*scale; - - s_instagib_list.generic.type = MTYPE_SPINCONTROL; - s_instagib_list.generic.x = -8*scale; - s_instagib_list.generic.y = 0 + offset; - s_instagib_list.generic.name = "instagib"; - s_instagib_list.generic.callback = InstagibFunc; - s_instagib_list.itemnames = yn; - s_instagib_list.curvalue = 0; - - s_rocketarena_list.generic.type = MTYPE_SPINCONTROL; - s_rocketarena_list.generic.x = -8*scale; - s_rocketarena_list.generic.y = FONTSCALE*10*scale + offset; - s_rocketarena_list.generic.name = "rocket arena"; - s_rocketarena_list.generic.callback = RocketFunc; - s_rocketarena_list.itemnames = yn; - s_rocketarena_list.curvalue = 0; - - s_insta_rockets_list.generic.type = MTYPE_SPINCONTROL; - s_insta_rockets_list.generic.x = -8*scale; - s_insta_rockets_list.generic.y = FONTSCALE*20*scale + offset; - s_insta_rockets_list.generic.name = "insta rockets"; - s_insta_rockets_list.generic.callback = InstaRocketsFunc; - s_insta_rockets_list.itemnames = yn; - s_insta_rockets_list.curvalue = 0; - - s_excessive_list.generic.type = MTYPE_SPINCONTROL; - s_excessive_list.generic.x = -8*scale; - s_excessive_list.generic.y = FONTSCALE*30*scale + offset; - s_excessive_list.generic.name = "excessive"; - s_excessive_list.generic.callback = ExcessiveFunc; - s_excessive_list.itemnames = yn; - s_excessive_list.curvalue = 0; - - s_vampire_list.generic.type = MTYPE_SPINCONTROL; - s_vampire_list.generic.x = -8*scale; - s_vampire_list.generic.y = FONTSCALE*40*scale + offset; - s_vampire_list.generic.name = "vampire"; - s_vampire_list.generic.callback = MutatorsFunc; - s_vampire_list.itemnames = yn; - s_vampire_list.curvalue = 0; - - s_regen_list.generic.type = MTYPE_SPINCONTROL; - s_regen_list.generic.x = -8*scale; - s_regen_list.generic.y = FONTSCALE*50*scale + offset; - s_regen_list.generic.name = "regen"; - s_regen_list.generic.callback = MutatorsFunc; - s_regen_list.itemnames = yn; - s_regen_list.curvalue = 0; - - s_quickweaps_list.generic.type = MTYPE_SPINCONTROL; - s_quickweaps_list.generic.x = -8*scale; - s_quickweaps_list.generic.y = FONTSCALE*60*scale + offset; - s_quickweaps_list.generic.name = "quick weapons"; - s_quickweaps_list.generic.callback = MutatorsFunc; - s_quickweaps_list.itemnames = yn; - s_quickweaps_list.curvalue = 0; - - s_anticamp_list.generic.type = MTYPE_SPINCONTROL; - s_anticamp_list.generic.x = -8*scale; - s_anticamp_list.generic.y = FONTSCALE*70*scale + offset; - s_anticamp_list.generic.name = "anticamp"; - s_anticamp_list.generic.callback = MutatorsFunc; - s_anticamp_list.itemnames = yn; - s_anticamp_list.curvalue = 0; - - s_camptime.generic.type = MTYPE_FIELD; - s_camptime.generic.name = "camp time "; - s_camptime.generic.flags = QMF_NUMBERSONLY; - s_camptime.generic.x = 8*scale; - s_camptime.generic.y = FONTSCALE*86*scale + offset; - s_camptime.length = 3; - s_camptime.visible_length = 3; - strcpy( s_camptime.buffer, Cvar_VariableString("camptime") ); - - s_speed_list.generic.type = MTYPE_SPINCONTROL; - s_speed_list.generic.x = -8*scale; - s_speed_list.generic.y = FONTSCALE*102*scale + offset; - s_speed_list.generic.name = "speed"; - s_speed_list.generic.callback = MutatorsFunc; - s_speed_list.itemnames = yn; - s_speed_list.curvalue = 0; - - s_lowgrav_list.generic.type = MTYPE_SPINCONTROL; - s_lowgrav_list.generic.x = -8*scale; - s_lowgrav_list.generic.y = FONTSCALE*112*scale + offset; - s_lowgrav_list.generic.name = "low gravity"; - s_lowgrav_list.generic.callback = MutatorsFunc; - s_lowgrav_list.itemnames = yn; - s_lowgrav_list.curvalue = 0; - - s_joust_list.generic.type = MTYPE_SPINCONTROL; - s_joust_list.generic.x = -8*scale; - s_joust_list.generic.y = FONTSCALE*122*scale + offset; - s_joust_list.generic.name = "jousting"; - s_joust_list.generic.callback = MutatorsFunc; - s_joust_list.itemnames = yn; - s_joust_list.curvalue = 0; - - s_classbased_list.generic.type = MTYPE_SPINCONTROL; - s_classbased_list.generic.x = -8*scale; - s_classbased_list.generic.y = FONTSCALE*132*scale + offset; - s_classbased_list.generic.name = "classbased"; - s_classbased_list.generic.callback = ClassbasedFunc; - s_classbased_list.itemnames = yn; - s_classbased_list.curvalue = 0; - - Menu_AddItem( &s_mutators_menu, &s_instagib_list ); - Menu_AddItem( &s_mutators_menu, &s_rocketarena_list ); - Menu_AddItem( &s_mutators_menu, &s_insta_rockets_list ); - Menu_AddItem( &s_mutators_menu, &s_excessive_list ); - Menu_AddItem( &s_mutators_menu, &s_vampire_list ); - Menu_AddItem( &s_mutators_menu, &s_regen_list ); - Menu_AddItem( &s_mutators_menu, &s_quickweaps_list ); - Menu_AddItem( &s_mutators_menu, &s_anticamp_list ); - Menu_AddItem( &s_mutators_menu, &s_camptime ); - Menu_AddItem( &s_mutators_menu, &s_speed_list ); - Menu_AddItem( &s_mutators_menu, &s_lowgrav_list ); - Menu_AddItem( &s_mutators_menu, &s_joust_list ); - Menu_AddItem( &s_mutators_menu, &s_classbased_list ); - - // call this now to set proper inital state - SetMutatorsFunc ( NULL ); -} -void Mutators_MenuDraw(void) -{ - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "menu_back"); //draw black background first - M_Banner( "m_mutators", banneralpha ); - - Menu_Draw( &s_mutators_menu ); -} -const char *Mutators_MenuKey( int key ) -{ - - Cvar_SetValue("camptime", atoi(s_camptime.buffer)); - - if ( key == K_ENTER ) - { - cursor.buttonclicks[MOUSEBUTTON1] = 2; - } - return Default_MenuKey( &s_mutators_menu, key ); -} -void M_Menu_Mutators_f (void) -{ - Mutators_MenuInit(); - M_PushMenu( Mutators_MenuDraw, Mutators_MenuKey ); -} -/* -============================================================================= - -ADD BOTS MENU - -============================================================================= -*/ -static menuframework_s s_addbots_menu; -static menuaction_s s_addbots_bot_action[16]; -static menulist_s s_startmap_list; -static menulist_s s_rules_box; -static menulist_s s_bots_bot_action[8]; -static char **mapnames; -int totalbots; - -struct botdata { - char name[32]; - char model[64]; - char userinfo[MAX_INFO_STRING]; -} bots[16]; - -struct botinfo { - char name[32]; - char userinfo[MAX_INFO_STRING]; -} bot[8]; - -int slot; - -void LoadBotInfo( void ) -{ - FILE *pIn; - int i, count; - char *info; - char *skin; - - char fullpath[MAX_OSPATH]; - - if ( !FS_FullPath( fullpath, sizeof(fullpath), BOT_GAMEDATA"/allbots.tmp" ) ) - { - Com_DPrintf("LoadBotInfo: %s/allbots.tmp not found\n", BOT_GAMEDATA ); - return; - } - if( (pIn = fopen( fullpath, "rb" )) == NULL ) - { - Com_DPrintf("LoadBotInfo: failed file open: %s\n", fullpath ); - return; - } - - szr = fread(&count,sizeof (int),1,pIn); - if(count>16) - count = 16; - - for(i=0;igeneric.name, bots[i].name)) - { //this is our selected bot - strcpy(bot[slot].name, bots[i].name); - strcpy(bot[slot].userinfo, bots[i].userinfo); - s_bots_bot_action[slot].generic.name = bots[i].name; - } - } - - //save off bot file - count = 8; - for(i = 0; i < 8; i++) - { - if(!strcmp(bot[i].name, "...empty slot")) - count--; - } - strcpy( startmap, strchr( mapnames[s_startmap_list.curvalue], '\n' ) + 1 ); - for(i = 0; i < strlen(startmap); i++) - startmap[i] = tolower(startmap[i]); - - if(s_rules_box.curvalue == 1 || s_rules_box.curvalue == 4 || s_rules_box.curvalue == 5) - { // team game - FS_FullWritePath( bot_filename, sizeof(bot_filename), BOT_GAMEDATA"/team.tmp" ); - } - else - { // non-team, bots per map - char relative_path[MAX_QPATH]; - Com_sprintf( relative_path, sizeof(relative_path), BOT_GAMEDATA"/%s.tmp", startmap ); - FS_FullWritePath( bot_filename, sizeof(bot_filename), relative_path ); - } - - if((pOut = fopen(bot_filename, "wb" )) == NULL) - { - Com_DPrintf("AddbotFunc: failed fopen for write: %s\n", bot_filename ); - return; // bail - } - - szr = fwrite(&count,sizeof (int),1,pOut); // Write number of bots - - for (i = 7; i > -1; i--) { - if(strcmp(bot[i].name, "...empty slot")) - szr = fwrite(bot[i].userinfo,sizeof (char) * MAX_INFO_STRING,1,pOut); - } - - fclose(pOut); - - //kick back to previous menu - M_PopMenu(); - -} -void Addbots_MenuInit( void ) -{ - int i; - int y; - float scale; - - scale = (float)(viddef.height)/600; - - banneralpha = 0.1; - - totalbots = 0; - - LoadBotInfo(); - - s_addbots_menu.x = viddef.width * 0.50 - 50*scale; - s_addbots_menu.nitems = 0; - y = viddef.height/2 - 140*scale; - - for(i = 0; i < totalbots; i++) { - s_addbots_bot_action[i].generic.type = MTYPE_ACTION; - s_addbots_bot_action[i].generic.name = bots[i].name; - s_addbots_bot_action[i].generic.x = 64; - s_addbots_bot_action[i].generic.y = y+=20*scale; - s_addbots_bot_action[i].generic.cursor_offset = -16*scale; - s_addbots_bot_action[i].generic.callback = AddbotFunc; - - Menu_AddItem( &s_addbots_menu, &s_addbots_bot_action[i] ); - } - - -} - -void Addbots_MenuDraw(void) -{ - int i; - int y; - float scale; - - scale = (float)(viddef.height)/600; - - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "menu_back"); //draw black background first - M_Banner( "m_bots", banneralpha ); - - y = viddef.height/2 - 122*scale; - - //draw the pics for the bots here - for(i = 0; i < totalbots; i++) { - - Draw_StretchPic (viddef.width / 2 + 16*scale, y, 16*scale, 16*scale, bots[i].model); - y+=20*scale; - } - Menu_Draw( &s_addbots_menu ); -} -const char *Addbots_MenuKey( int key ) -{ - if ( key == K_ENTER ) - { - cursor.buttonclicks[MOUSEBUTTON1] = 2; - } - return Default_MenuKey( &s_addbots_menu, key ); -} -/* -============================================================================= - -START SERVER MENU - -============================================================================= -*/ -#define MAX_MAPS 256 - -static menuframework_s s_startserver_menu; -static int nummaps; - -static menuaction_s s_startserver_start_action; -static menuaction_s s_startserver_dmoptions_action; -static menufield_s s_timelimit_field; -static menufield_s s_fraglimit_field; -static menufield_s s_maxclients_field; -static menufield_s s_hostname_field; -static menufield_s s_mutators_action; -static menulist_s s_grapple_box; -static menulist_s s_antilag_box; -static menulist_s s_public_box; -static menulist_s s_dedicated_box; -static menulist_s s_skill_box; -static menulist_s s_startserver_map_data[5]; - -void DMOptionsFunc( void *self ) -{ - M_Menu_DMOptions_f(); -} - -void MutatorFunc( void *self ) -{ - M_Menu_Mutators_f(); -} -int Menu_FindFile (char *filename, FILE **file) -{ - *file = fopen (filename, "rb"); - if (!*file) { - *file = NULL; - return -1; - } - else - return 1; - -} - -void MapInfoFunc( void *self ) { - - // FILE *map_file; // unused - FILE *desc_file; - char line[500]; - char *pLine; - char *rLine; - int result; - int i; - char seps[] = "//"; - char *token; - char startmap[128]; - char path[1024]; - int offset = 5; - float scale; - - scale = (float)(viddef.height)/600; - - offset*=scale; - - mappicalpha = 0.1; - - //get a map description if it is there - - if(mapnames) - strcpy( startmap, strchr( mapnames[s_startmap_list.curvalue], '\n' ) + 1 ); - else - strcpy( startmap, "missing"); - - Com_sprintf(path, sizeof(path), "levelshots/%s.txt", startmap); - FS_FOpenFile(path, &desc_file); - if (desc_file) { - if(fgets(line, 500, desc_file)) - { - pLine = line; - - result = strlen(line); - - rLine = GetLine (&pLine, &result); - - /* Establish string and get the first token: */ - token = strtok( rLine, seps ); - i = 0; - while( token != NULL && i < 5) { - - /* Get next token: */ - token = strtok( NULL, seps ); - /* While there are tokens in "string" */ - s_startserver_map_data[i].generic.type = MTYPE_SEPARATOR; - s_startserver_map_data[i].generic.name = token; - s_startserver_map_data[i].generic.flags = QMF_LEFT_JUSTIFY; - s_startserver_map_data[i].generic.x = 120*scale; - s_startserver_map_data[i].generic.y = FONTSCALE*241*scale + offset + FONTSCALE*i*10*scale; - - i++; - } - - } - - fclose(desc_file); - - } - else - { - for (i = 0; i < 5; i++ ) - { - s_startserver_map_data[i].generic.type = MTYPE_SEPARATOR; - s_startserver_map_data[i].generic.name = "no data"; - s_startserver_map_data[i].generic.flags = QMF_LEFT_JUSTIFY; - s_startserver_map_data[i].generic.x = 120*scale; - s_startserver_map_data[i].generic.y = FONTSCALE*241*scale + offset + FONTSCALE*i*10*scale; - } - } - -} - -void RulesChangeFunc ( void *self ) //this has been expanded to rebuild map list -{ - char *buffer; - char mapsname[1024]; - char *s; - int length; - int i, k; - FILE *fp; - char shortname[MAX_TOKEN_CHARS]; - char longname[MAX_TOKEN_CHARS]; - char scratch[200]; - char *curMap; - int nmaps = 0; - int totalmaps; - char **mapfiles; - // char *path = NULL; // unused - static char **bspnames; - int j, l; - - s_maxclients_field.generic.statusbar = NULL; - s_startserver_dmoptions_action.generic.statusbar = NULL; - - //clear out list first - - mapnames = 0; - nummaps = 0; - - /* - ** reload the list of map names, based on rules - */ - // maps.lst normally in "data1/" - // need to add a function to FS_ if that is the only place it is allowed - if ( !FS_FullPath( mapsname, sizeof( mapsname ), "maps.lst" ) ) - { - Com_Error( ERR_DROP, "couldn't find maps.lst\n" ); - return; // for show, no maps.lst is fatal error - } - if ( ( fp = fopen( mapsname, "rb" ) ) == 0 ) - { - Com_Error( ERR_DROP, "couldn't open maps.lst\n" ); - return; // for "show". above is fatal error. + Com_Error( ERR_DROP, "couldn't open maps.lst\n" ); + return; // for "show". above is fatal error. } length = FS_filelength( fp ); @@ -4791,11 +4917,12 @@ if ( nummaps == 0 ) { + fclose( fp ); + free( buffer ); Com_Error( ERR_DROP, "no maps in maps.lst\n" ); return; // for showing above is fatal. } - mapnames = malloc( sizeof( char * ) * ( MAX_MAPS + 2 ) ); //was + 1, but caused memory errors memset( mapnames, 0, sizeof( char * ) * ( MAX_MAPS + 2 ) ); bspnames = malloc( sizeof( char * ) * ( MAX_MAPS + 2 ) ); //was + 1, but caused memory errors @@ -4819,50 +4946,22 @@ strcpy( longname, COM_Parse( &s ) ); Com_sprintf( scratch, sizeof( scratch ), "%s\n%s", longname, shortname ); - - if (s_rules_box.curvalue == 0 || s_rules_box.curvalue == 6) { - if((shortname[0] == 'd' && shortname[1] == 'm') || (shortname[0] == 't' && shortname[1] == 'o')) { - mapnames[k] = malloc( strlen( scratch ) + 1 ); - strcpy( mapnames[k], scratch ); - k++; - } - } - else if (s_rules_box.curvalue == 1) { - if(shortname[0] == 'c' && shortname[1] == 't' && shortname[2] == 'f') { - mapnames[k] = malloc( strlen( scratch ) + 1 ); - strcpy( mapnames[k], scratch ); - k++; - } - } - else if (s_rules_box.curvalue == 2) { - if(shortname[0] == 'a' && shortname[1] == 'o' && shortname[2] == 'a') { - mapnames[k] = malloc( strlen( scratch ) + 1 ); - strcpy( mapnames[k], scratch ); - k++; - } - } - else if (s_rules_box.curvalue == 3) { - if(shortname[0] == 'd' && shortname[1] == 'b') { - mapnames[k] = malloc( strlen( scratch ) + 1 ); - strcpy( mapnames[k], scratch ); - k++; - } - } - else if (s_rules_box.curvalue == 4) { - if(shortname[0] == 't' && shortname[1] == 'c' && shortname[2] == 'a') { - mapnames[k] = malloc( strlen( scratch ) + 1 ); - strcpy( mapnames[k], scratch ); - k++; - } - } - else if (s_rules_box.curvalue == 5) { - if(shortname[0] == 'c' && shortname[1] == 'p') { + + // Each game mode has one or more map name prefixes. For example, if + // the game mode is capture the flag, only maps that start with ctf + // should make it into the mapnames list. + for (j = 0; map_prefixes[s_rules_box.curvalue][j]; j++) + { + const char *curpfx = map_prefixes[s_rules_box.curvalue][j]; + if (!strncmp (curpfx, shortname, strlen(curpfx))) + { + // matched an allowable prefix mapnames[k] = malloc( strlen( scratch ) + 1 ); strcpy( mapnames[k], scratch ); k++; + break; } } - } // done with maps.lst fclose( fp ); @@ -4871,19 +4970,14 @@ //now, check the folders and add the maps not in the list yet mapfiles = FS_ListFilesInFS( "maps/*.bsp", &nmaps, 0, - SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); + SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); for (i=0;i 1) - mappicalpha = 1; - - offset*=scale; - - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "menu_back"); //draw black background first - strcpy( startmap, strchr( mapnames[s_startmap_list.curvalue], '\n' ) + 1 ); - sprintf(path, "/levelshots/%s", startmap); - M_Banner( "m_startserver", banneralpha ); - M_MapPic(path, mappicalpha); - - Menu_Draw( &s_startserver_menu ); -} - -const char *StartServer_MenuKey( int key ) -{ - if ( key == K_ESCAPE ) - { - if ( mapnames ) - { - int i; - - for ( i = 0; i < nummaps; i++ ) - free( mapnames[i] ); - free( mapnames ); - } - mapnames = 0; - nummaps = 0; - } - - return Default_MenuKey( &s_startserver_menu, key ); -} - -void M_Menu_StartServer_f (void) -{ - StartServer_MenuInit(); - M_PushMenu( StartServer_MenuDraw, StartServer_MenuKey ); -} - -/* -============================================================================= - -DMOPTIONS BOOK MENU - -============================================================================= -*/ -static char dmoptions_statusbar[128]; - -static menuframework_s s_dmoptions_menu; - -static menulist_s s_friendlyfire_box; -static menulist_s s_botchat_box; -static menulist_s s_bot_fuzzyaim_box; -static menulist_s s_bot_auto_save_nodes_box; -static menulist_s s_bots_box; -static menulist_s s_bot_levelad_box; -static menulist_s s_falls_box; -static menulist_s s_weapons_stay_box; -static menulist_s s_instant_powerups_box; -static menulist_s s_powerups_box; -static menulist_s s_health_box; -static menulist_s s_spawn_farthest_box; -static menulist_s s_teamplay_box; -static menulist_s s_samelevel_box; -static menulist_s s_force_respawn_box; -static menulist_s s_armor_box; -static menulist_s s_allow_exit_box; -static menulist_s s_infinite_ammo_box; -static menulist_s s_quad_drop_box; - -void M_Menu_Addbots_f (void) -{ - Addbots_MenuInit(); - M_PushMenu( Addbots_MenuDraw, Addbots_MenuKey ); -} - -void BotAction( void *self ) -{ - FILE *pOut; - int i, count; - - char stem[MAX_QPATH]; - char relative_path[MAX_QPATH]; - char bot_filename[MAX_OSPATH]; - - menulist_s *f = ( menulist_s * ) self; - - slot = f->curvalue; - - count = 8; - - if(!strcmp(f->generic.name, "...empty slot")) { - //open the bot menu - M_Menu_Addbots_f(); - for(i = 0; i < 8; i++) { - if(!strcmp(s_bots_bot_action[i].generic.name, "...empty slot")) { - //clear it, it's slot is empty - strcpy(bot[i].name, "...empty slot"); - bot[i].userinfo[0] = 0; - count--; - } - } - } - else { - f->generic.name = "...empty slot"; - //clear the bot out of the struct...hmmm...kinda hokey, but - need to know which slot - for(i = 0; i < 8; i++) { - if(!strcmp(s_bots_bot_action[i].generic.name, "...empty slot")) { - //clear it, it's slot is empty - strcpy(bot[i].name, "...empty slot"); - bot[i].userinfo[0] = 0; - count--; - } - } - } - - //write out bot file - if(s_rules_box.curvalue == 1 || s_rules_box.curvalue == 4 || s_rules_box.curvalue == 5) - { // team game - strcpy( stem, "team" ); - } - else - { // non-team, bots per map - strcpy( stem, strchr( mapnames[s_startmap_list.curvalue], '\n' ) + 1 ); - for(i = 0; i < strlen(stem); i++) - stem[i] = tolower( stem[i] ); + Cvar_ForceSet("dedicated", "1"); +#else + Cvar_ForceSet("dedicated", "0"); +#endif + Cvar_Set("sv_maplist", startmap); + Cbuf_AddText ("setmaster master.corservers.com master2.corservers.com\n"); } - Com_sprintf( relative_path, sizeof(relative_path), BOT_GAMEDATA"/%s.tmp", stem ); - FS_FullWritePath( bot_filename, sizeof(bot_filename), relative_path ); + Cvar_SetValue( "skill", s_skill_box.curvalue ); + Cvar_SetValue( "g_antilag", s_antilag_box.curvalue); - if((pOut = fopen(bot_filename, "wb" )) == NULL) + // The deathmatch cvar doesn't specifically indicate a pure frag-to-win + // game mode. It's actually the "enable multiplayer" cvar. + // TODO: Does Alien Arena even work with deathmatch set to 0? Might be + // able to remove it from the game. + Cvar_SetValue ("deathmatch", 1 ); + Cvar_SetValue ("ctf", 0); +#ifdef TACTICAL + Cvar_SetValue ("g_tactical", 1); +#else + Cvar_SetValue ("g_tactical", 0); +#endif + Cvar_SetValue ("tca", 0); + Cvar_SetValue ("cp", 0); + Cvar_SetValue ("g_duel", 0); + Cvar_SetValue ("gamerules", s_rules_box.curvalue ); + + switch (s_rules_box.curvalue) { - Com_DPrintf("BotAction: failed fopen for write: %s\n", bot_filename ); - return; // bail - } - - szr = fwrite(&count,sizeof (int),1,pOut); // Write number of bots - - for (i = 7; i > -1; i--) { - if(strcmp(bot[i].name, "...empty slot")) - szr = fwrite(bot[i].userinfo,sizeof (char) * MAX_INFO_STRING,1,pOut); + case 1: + Cvar_SetValue ("ctf", 1 ); + break; + case 2: + Cvar_SetValue ("g_tactical", 1); + break; + case 4: + Cvar_SetValue ("tca", 1); + break; + case 5: + Cvar_SetValue ("cp", 1); + break; + case 6: + Cvar_SetValue ("g_duel", 1); + break; + default: + break; } - fclose(pOut); + Cbuf_AddText (va("startmap %s\n", startmap)); + + M_ForceMenuOff (); - return; } -static void DMFlagCallback( void *self ) +static void M_Menu_StartServer_f (void) { - menulist_s *f = ( menulist_s * ) self; - int flags; - int bit = 0; - - flags = Cvar_VariableValue( "dmflags" ); + int i; - if ( f == &s_bots_box ) - { - if ( f->curvalue ) - flags &= ~DF_BOTS; - else - flags |= DF_BOTS; - goto setvalue; - } - if ( f == &s_bot_auto_save_nodes_box ) - { - if ( f->curvalue ) - flags &= ~DF_BOT_AUTOSAVENODES; - else - flags |= DF_BOT_AUTOSAVENODES; - goto setvalue; - } - if ( f == &s_bot_fuzzyaim_box ) - { - if ( f->curvalue ) - flags &= ~DF_BOT_FUZZYAIM; - else - flags |= DF_BOT_FUZZYAIM; - goto setvalue; - } - if ( f == &s_botchat_box ) - { - if ( f->curvalue ) - flags &= ~DF_BOTCHAT; - else - flags |= DF_BOTCHAT; - goto setvalue; - } - if ( f == &s_bot_levelad_box ) - { - if ( f->curvalue ) - flags &= ~DF_BOT_LEVELAD; - else - flags |= DF_BOT_LEVELAD; - goto setvalue; - } - if ( f == &s_friendlyfire_box ) - { - if ( f->curvalue ) - flags &= ~DF_NO_FRIENDLY_FIRE; - else - flags |= DF_NO_FRIENDLY_FIRE; - goto setvalue; - } - else if ( f == &s_falls_box ) - { - if ( f->curvalue ) - flags &= ~DF_NO_FALLING; - else - flags |= DF_NO_FALLING; - goto setvalue; - } - else if ( f == &s_weapons_stay_box ) - { - bit = DF_WEAPONS_STAY; - } - else if ( f == &s_instant_powerups_box ) - { - bit = DF_INSTANT_ITEMS; - } - else if ( f == &s_allow_exit_box ) - { - bit = DF_ALLOW_EXIT; - } - else if ( f == &s_powerups_box ) - { - if ( f->curvalue ) - flags &= ~DF_NO_ITEMS; - else - flags |= DF_NO_ITEMS; - goto setvalue; - } - else if ( f == &s_health_box ) - { - if ( f->curvalue ) - flags &= ~DF_NO_HEALTH; - else - flags |= DF_NO_HEALTH; - goto setvalue; - } - else if ( f == &s_spawn_farthest_box ) - { - bit = DF_SPAWN_FARTHEST; - } - else if ( f == &s_teamplay_box ) + + static const char *skill[] = { - if ( f->curvalue == 1 ) - { - flags |= DF_SKINTEAMS; - } - else - { - flags &= ~( DF_SKINTEAMS ); - } + "easy", + "medium", + "hard", + 0 + }; + + setup_window (s_startserver_screen, s_startserver_menu, "HOST SERVER"); + setup_panel (s_startserver_menu, s_startserver_main_submenu); - goto setvalue; - } - else if ( f == &s_samelevel_box ) - { - bit = DF_SAME_LEVEL; - } - else if ( f == &s_force_respawn_box ) - { - bit = DF_FORCE_RESPAWN; - } - else if ( f == &s_armor_box ) - { - if ( f->curvalue ) - flags &= ~DF_NO_ARMOR; - else - flags |= DF_NO_ARMOR; - goto setvalue; - } - else if ( f == &s_infinite_ammo_box ) - { - bit = DF_INFINITE_AMMO; - } - else if ( f == &s_quad_drop_box ) - { - bit = DF_QUAD_DROP; - } + s_startmap_list.generic.type = MTYPE_SPINCONTROL; + s_startmap_list.generic.name = "initial map"; + s_startmap_list.itemnames = (const char **) mapnames; + s_startmap_list.generic.callback = MapInfoFunc; + Menu_AddItem( &s_startserver_main_submenu, &s_startmap_list ); + + s_levelshot_submenu.generic.type = MTYPE_SUBMENU; + s_levelshot_submenu.generic.flags = QMF_SNUG_LEFT; + s_levelshot_submenu.nitems = 0; + + s_levelshot_preview.generic.type = MTYPE_NOT_INTERACTIVE; + s_levelshot_preview.generic.localstrings[0] = NULL; + VectorSet (s_levelshot_preview.generic.localints, 21, 12, 0); + s_levelshot_preview.generic.itemsizecallback = PicSizeFunc; + s_levelshot_preview.generic.itemdraw = PicDrawFunc; + Menu_AddItem (&s_levelshot_submenu, &s_levelshot_preview); - if ( f ) - { - if ( f->curvalue == 0 ) - flags &= ~bit; - else - flags |= bit; + for ( i = 0; i < 5; i++) { + s_startserver_map_data[i].generic.type = MTYPE_TEXT; + s_startserver_map_data[i].generic.name = "no data"; + s_startserver_map_data[i].generic.flags = QMF_RIGHT_COLUMN; + Menu_AddItem( &s_levelshot_submenu, &s_startserver_map_data[i] ); } + + Menu_AddItem (&s_startserver_main_submenu, &s_levelshot_submenu); + + add_text (s_startserver_main_submenu, NULL, 0); //spacer -setvalue: - Cvar_SetValue ("dmflags", flags); + s_rules_box.generic.type = MTYPE_SPINCONTROL; + s_rules_box.generic.name = "rules"; + s_rules_box.itemnames = game_mode_names; + s_rules_box.curvalue = 0; + s_rules_box.generic.callback = RulesChangeFunc; + Menu_AddItem( &s_startserver_main_submenu, &s_rules_box ); + + s_antilag_box.generic.name = "antilag"; + setup_tickbox (s_antilag_box); + s_antilag_box.curvalue = 1; + Menu_AddItem( &s_startserver_main_submenu, &s_antilag_box ); + + s_timelimit_field.generic.type = MTYPE_FIELD; + s_timelimit_field.generic.name = "time limit"; + s_timelimit_field.generic.flags = QMF_NUMBERSONLY; + s_timelimit_field.generic.tooltip = "0 = no limit"; + s_timelimit_field.length = 3; + s_timelimit_field.generic.visible_length = 3; + strcpy( s_timelimit_field.buffer, Cvar_VariableString("timelimit") ); + Menu_AddItem( &s_startserver_main_submenu, &s_timelimit_field ); + + s_fraglimit_field.generic.type = MTYPE_FIELD; + s_fraglimit_field.generic.name = "frag limit"; + s_fraglimit_field.generic.flags = QMF_NUMBERSONLY; + s_fraglimit_field.generic.tooltip = "0 = no limit"; + s_fraglimit_field.length = 3; + s_fraglimit_field.generic.visible_length = 3; + strcpy( s_fraglimit_field.buffer, Cvar_VariableString("fraglimit") ); + Menu_AddItem( &s_startserver_main_submenu, &s_fraglimit_field ); + + /* + ** maxclients determines the maximum number of players that can join + ** the game. If maxclients is only "1" then we should default the menu + ** option to 8 players, otherwise use whatever its current value is. + ** Clamping will be done when the server is actually started. + */ + s_maxclients_field.generic.type = MTYPE_FIELD; + s_maxclients_field.generic.name = "max players"; + s_maxclients_field.generic.flags = QMF_NUMBERSONLY; + s_maxclients_field.length = 3; + s_maxclients_field.generic.visible_length = 3; + if ( Cvar_VariableValue( "maxclients" ) == 1 ) + strcpy( s_maxclients_field.buffer, "8" ); + else + strcpy( s_maxclients_field.buffer, Cvar_VariableString("maxclients") ); + Menu_AddItem( &s_startserver_main_submenu, &s_maxclients_field ); + + s_hostname_field.generic.type = MTYPE_FIELD; + s_hostname_field.generic.name = "server name"; + s_hostname_field.generic.flags = 0; + s_hostname_field.length = 12; + s_hostname_field.generic.visible_length = LONGINPUT_SIZE; + strcpy( s_hostname_field.buffer, Cvar_VariableString("hostname") ); + Menu_AddItem( &s_startserver_main_submenu, &s_hostname_field ); - Com_sprintf( dmoptions_statusbar, sizeof( dmoptions_statusbar ), "dmflags = %d", flags ); + s_public_box.generic.name = "public server"; + setup_tickbox (s_public_box); + s_public_box.curvalue = 1; + Menu_AddItem( &s_startserver_main_submenu, &s_public_box ); + +#if defined WIN32_VARIANT + s_dedicated_box.generic.name = "dedicated server"; + setup_tickbox (s_dedicated_box); + Menu_AddItem( &s_startserver_main_submenu, &s_dedicated_box ); +#else + // may or may not need this when disabling dedicated server menu + s_dedicated_box.generic.type = -1; + s_dedicated_box.generic.name = NULL; + s_dedicated_box.curvalue = 0; +#endif + s_skill_box.generic.type = MTYPE_SPINCONTROL; + s_skill_box.generic.name = "skill level"; + s_skill_box.itemnames = skill; + s_skill_box.curvalue = 1; + Menu_AddItem( &s_startserver_main_submenu, &s_skill_box ); + +#ifndef TACTICAL + add_action (s_startserver_menu, "Mutators", MutatorFunc, QMF_RIGHT_COLUMN); +#endif + add_action (s_startserver_menu, "Bot Options", BotOptionsFunc, QMF_RIGHT_COLUMN); + add_action (s_startserver_menu, "Begin", StartServerActionFunc, QMF_RIGHT_COLUMN); + + + // call this now to set proper inital state + RulesChangeFunc (NULL); + MapInfoFunc (NULL); + + M_PushMenu_Defaults (s_startserver_screen); } + +/* +============================================================================= + +BOT OPTIONS MENU + +============================================================================= +*/ + +static menuframework_s s_botoptions_screen; +static menuframework_s s_botoptions_menu; + void Read_Bot_Info() { FILE *pIn; @@ -5700,298 +5310,104 @@ strcpy(bot[i].name, info); } - fclose(pIn); + fclose(pIn); } -void DMOptions_MenuInit( void ) -{ - int i, y; - - static const char *yes_no_names[] = - { - "no", "yes", 0 - }; - static const char *teamplay_names[] = - { - "disabled", "enabled", 0 - }; - int dmflags = Cvar_VariableValue( "dmflags" ); - - float scale; - scale = (float)(viddef.height)/600; +void BotAction (void *self); - banneralpha = 0.1; +static void M_Menu_BotOptions_f (void) +{ + int i; for(i = 0; i < 8; i++) strcpy(bot[i].name, "...empty slot"); Read_Bot_Info(); - - y = 20*scale; - s_dmoptions_menu.x = viddef.width*0.50 + 100*scale; - s_dmoptions_menu.nitems = 0; - - s_falls_box.generic.type = MTYPE_SPINCONTROL; - s_falls_box.generic.x = 0; - s_falls_box.generic.y = y; - s_falls_box.generic.name = "falling damage"; - s_falls_box.generic.callback = DMFlagCallback; - s_falls_box.itemnames = yes_no_names; - s_falls_box.curvalue = ( dmflags & DF_NO_FALLING ) == 0; - - s_weapons_stay_box.generic.type = MTYPE_SPINCONTROL; - s_weapons_stay_box.generic.x = 0; - s_weapons_stay_box.generic.y = y += FONTSCALE*10*scale; - s_weapons_stay_box.generic.name = "weapons stay"; - s_weapons_stay_box.generic.callback = DMFlagCallback; - s_weapons_stay_box.itemnames = yes_no_names; - s_weapons_stay_box.curvalue = ( dmflags & DF_WEAPONS_STAY ) != 0; - - s_instant_powerups_box.generic.type = MTYPE_SPINCONTROL; - s_instant_powerups_box.generic.x = 0; - s_instant_powerups_box.generic.y = y += FONTSCALE*10*scale; - s_instant_powerups_box.generic.name = "instant powerups"; - s_instant_powerups_box.generic.callback = DMFlagCallback; - s_instant_powerups_box.itemnames = yes_no_names; - s_instant_powerups_box.curvalue = ( dmflags & DF_INSTANT_ITEMS ) != 0; - - s_powerups_box.generic.type = MTYPE_SPINCONTROL; - s_powerups_box.generic.x = 0; - s_powerups_box.generic.y = y += FONTSCALE*10*scale; - s_powerups_box.generic.name = "allow powerups"; - s_powerups_box.generic.callback = DMFlagCallback; - s_powerups_box.itemnames = yes_no_names; - s_powerups_box.curvalue = ( dmflags & DF_NO_ITEMS ) == 0; - - s_health_box.generic.type = MTYPE_SPINCONTROL; - s_health_box.generic.x = 0; - s_health_box.generic.y = y += FONTSCALE*10*scale; - s_health_box.generic.callback = DMFlagCallback; - s_health_box.generic.name = "allow health"; - s_health_box.itemnames = yes_no_names; - s_health_box.curvalue = ( dmflags & DF_NO_HEALTH ) == 0; - - s_armor_box.generic.type = MTYPE_SPINCONTROL; - s_armor_box.generic.x = 0; - s_armor_box.generic.y = y += FONTSCALE*10*scale; - s_armor_box.generic.name = "allow armor"; - s_armor_box.generic.callback = DMFlagCallback; - s_armor_box.itemnames = yes_no_names; - s_armor_box.curvalue = ( dmflags & DF_NO_ARMOR ) == 0; - - s_spawn_farthest_box.generic.type = MTYPE_SPINCONTROL; - s_spawn_farthest_box.generic.x = 0; - s_spawn_farthest_box.generic.y = y += FONTSCALE*10*scale; - s_spawn_farthest_box.generic.name = "spawn farthest"; - s_spawn_farthest_box.generic.callback = DMFlagCallback; - s_spawn_farthest_box.itemnames = yes_no_names; - s_spawn_farthest_box.curvalue = ( dmflags & DF_SPAWN_FARTHEST ) != 0; - - s_samelevel_box.generic.type = MTYPE_SPINCONTROL; - s_samelevel_box.generic.x = 0; - s_samelevel_box.generic.y = y += FONTSCALE*10*scale; - s_samelevel_box.generic.name = "same map"; - s_samelevel_box.generic.callback = DMFlagCallback; - s_samelevel_box.itemnames = yes_no_names; - s_samelevel_box.curvalue = ( dmflags & DF_SAME_LEVEL ) != 0; - - s_force_respawn_box.generic.type = MTYPE_SPINCONTROL; - s_force_respawn_box.generic.x = 0; - s_force_respawn_box.generic.y = y += FONTSCALE*10*scale; - s_force_respawn_box.generic.name = "force respawn"; - s_force_respawn_box.generic.callback = DMFlagCallback; - s_force_respawn_box.itemnames = yes_no_names; - s_force_respawn_box.curvalue = ( dmflags & DF_FORCE_RESPAWN ) != 0; - - s_teamplay_box.generic.type = MTYPE_SPINCONTROL; - s_teamplay_box.generic.x = 0; - s_teamplay_box.generic.y = y += FONTSCALE*10*scale; - s_teamplay_box.generic.name = "teamplay"; - s_teamplay_box.generic.callback = DMFlagCallback; - s_teamplay_box.itemnames = teamplay_names; - - s_allow_exit_box.generic.type = MTYPE_SPINCONTROL; - s_allow_exit_box.generic.x = 0; - s_allow_exit_box.generic.y = y += FONTSCALE*10*scale; - s_allow_exit_box.generic.name = "allow exit"; - s_allow_exit_box.generic.callback = DMFlagCallback; - s_allow_exit_box.itemnames = yes_no_names; - s_allow_exit_box.curvalue = ( dmflags & DF_ALLOW_EXIT ) != 0; - - s_infinite_ammo_box.generic.type = MTYPE_SPINCONTROL; - s_infinite_ammo_box.generic.x = 0; - s_infinite_ammo_box.generic.y = y += FONTSCALE*10*scale; - s_infinite_ammo_box.generic.name = "infinite ammo"; - s_infinite_ammo_box.generic.callback = DMFlagCallback; - s_infinite_ammo_box.itemnames = yes_no_names; - s_infinite_ammo_box.curvalue = ( dmflags & DF_INFINITE_AMMO ) != 0; - - s_quad_drop_box.generic.type = MTYPE_SPINCONTROL; - s_quad_drop_box.generic.x = 0; - s_quad_drop_box.generic.y = y += FONTSCALE*10*scale; - s_quad_drop_box.generic.name = "quad drop"; - s_quad_drop_box.generic.callback = DMFlagCallback; - s_quad_drop_box.itemnames = yes_no_names; - s_quad_drop_box.curvalue = ( dmflags & DF_QUAD_DROP ) != 0; - - s_friendlyfire_box.generic.type = MTYPE_SPINCONTROL; - s_friendlyfire_box.generic.x = 0; - s_friendlyfire_box.generic.y = y += FONTSCALE*10*scale; - s_friendlyfire_box.generic.name = "friendly fire"; - s_friendlyfire_box.generic.callback = DMFlagCallback; - s_friendlyfire_box.itemnames = yes_no_names; - s_friendlyfire_box.curvalue = ( dmflags & DF_NO_FRIENDLY_FIRE ) == 0; - - s_botchat_box.generic.type = MTYPE_SPINCONTROL; - s_botchat_box.generic.x = 0; - s_botchat_box.generic.y = y += FONTSCALE*10*scale; - s_botchat_box.generic.name = "bot chat"; - s_botchat_box.generic.callback = DMFlagCallback; - s_botchat_box.itemnames = yes_no_names; - s_botchat_box.curvalue = ( dmflags & DF_BOTCHAT ) == 0; - - s_bot_fuzzyaim_box.generic.type = MTYPE_SPINCONTROL; - s_bot_fuzzyaim_box.generic.x = 0; - s_bot_fuzzyaim_box.generic.y = y += FONTSCALE*10*scale; - s_bot_fuzzyaim_box.generic.name = "bot fuzzy aim"; - s_bot_fuzzyaim_box.generic.callback = DMFlagCallback; - s_bot_fuzzyaim_box.itemnames = yes_no_names; - s_bot_fuzzyaim_box.curvalue = ( dmflags & DF_BOT_FUZZYAIM ) == 0; - - s_bot_auto_save_nodes_box.generic.type = MTYPE_SPINCONTROL; - s_bot_auto_save_nodes_box.generic.x = 0; - s_bot_auto_save_nodes_box.generic.y = y += FONTSCALE*10*scale; - s_bot_auto_save_nodes_box.generic.name = "auto node save"; - s_bot_auto_save_nodes_box.generic.callback = DMFlagCallback; - s_bot_auto_save_nodes_box.itemnames = yes_no_names; - s_bot_auto_save_nodes_box.curvalue = ( dmflags & DF_BOT_AUTOSAVENODES ) == 1; - - s_bot_levelad_box.generic.type = MTYPE_SPINCONTROL; - s_bot_levelad_box.generic.x = 0; - s_bot_levelad_box.generic.y = y += FONTSCALE*10*scale; - s_bot_levelad_box.generic.name = "repeat level if bot wins"; - s_bot_levelad_box.generic.callback = DMFlagCallback; - s_bot_levelad_box.itemnames = yes_no_names; - s_bot_levelad_box.curvalue = ( dmflags & DF_BOT_LEVELAD ) == 0; - - s_bots_box.generic.type = MTYPE_SPINCONTROL; - s_bots_box.generic.x = 0; - s_bots_box.generic.y = y += FONTSCALE*10*scale; - s_bots_box.generic.name = "bots in game"; - s_bots_box.generic.callback = DMFlagCallback; - s_bots_box.itemnames = yes_no_names; - s_bots_box.curvalue = ( dmflags & DF_BOTS ) == 0; - + + setup_window (s_botoptions_screen, s_botoptions_menu, "BOT OPTIONS"); + for (i = 0; i < 8; i++) { s_bots_bot_action[i].generic.type = MTYPE_ACTION; s_bots_bot_action[i].generic.name = bot[i].name; - s_bots_bot_action[i].generic.x = 0; - s_bots_bot_action[i].generic.y = y+FONTSCALE*10*scale*(i+2); - s_bots_bot_action[i].generic.cursor_offset = -8; + s_bots_bot_action[i].generic.flags = QMF_BUTTON; s_bots_bot_action[i].generic.callback = BotAction; s_bots_bot_action[i].curvalue = i; + Menu_AddItem( &s_botoptions_menu, &s_bots_bot_action[i]); } - //============ - - Menu_AddItem( &s_dmoptions_menu, &s_falls_box ); - Menu_AddItem( &s_dmoptions_menu, &s_weapons_stay_box ); - Menu_AddItem( &s_dmoptions_menu, &s_instant_powerups_box ); - Menu_AddItem( &s_dmoptions_menu, &s_powerups_box ); - Menu_AddItem( &s_dmoptions_menu, &s_health_box ); - Menu_AddItem( &s_dmoptions_menu, &s_armor_box ); - Menu_AddItem( &s_dmoptions_menu, &s_spawn_farthest_box ); - Menu_AddItem( &s_dmoptions_menu, &s_samelevel_box ); - Menu_AddItem( &s_dmoptions_menu, &s_force_respawn_box ); - Menu_AddItem( &s_dmoptions_menu, &s_teamplay_box ); - Menu_AddItem( &s_dmoptions_menu, &s_allow_exit_box ); - Menu_AddItem( &s_dmoptions_menu, &s_infinite_ammo_box ); - Menu_AddItem( &s_dmoptions_menu, &s_quad_drop_box ); - Menu_AddItem( &s_dmoptions_menu, &s_friendlyfire_box ); - Menu_AddItem( &s_dmoptions_menu, &s_botchat_box ); - Menu_AddItem( &s_dmoptions_menu, &s_bot_fuzzyaim_box ); - Menu_AddItem( &s_dmoptions_menu, &s_bot_auto_save_nodes_box ); - Menu_AddItem( &s_dmoptions_menu, &s_bot_levelad_box ); - Menu_AddItem( &s_dmoptions_menu, &s_bots_box ); - for(i = 0; i < 8; i++) - Menu_AddItem( &s_dmoptions_menu, &s_bots_bot_action[i]); - - //======= - - Menu_Center( &s_dmoptions_menu ); - - // set the original dmflags statusbar - DMFlagCallback( 0 ); - Menu_SetStatusBar( &s_dmoptions_menu, dmoptions_statusbar ); -} - -void DMOptions_MenuDraw(void) -{ - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "menu_back"); //draw black background first - M_Banner( "m_dmoptions", banneralpha ); - - Menu_Draw( &s_dmoptions_menu ); -} - -const char *DMOptions_MenuKey( int key ) -{ - return Default_MenuKey( &s_dmoptions_menu, key ); + M_PushMenu_Defaults (s_botoptions_screen); } -void M_Menu_DMOptions_f (void) +void BotAction( void *self ) { - DMOptions_MenuInit(); - M_PushMenu( DMOptions_MenuDraw, DMOptions_MenuKey ); -} + FILE *pOut; + int i, count; -/* -============================================================================= + char stem[MAX_QPATH]; + char relative_path[MAX_QPATH]; + char bot_filename[MAX_OSPATH]; -DOWNLOADOPTIONS BOOK MENU + menulist_s *f = ( menulist_s * ) self; -============================================================================= -*/ -// static menuframework_s s_downloadoptions_menu; // unused + slot = f->curvalue; -// static menuseparator_s s_download_title; // unused -static menulist_s s_allow_download_box; -static menulist_s s_allow_download_maps_box; -static menulist_s s_allow_download_models_box; -static menulist_s s_allow_download_players_box; -static menulist_s s_allow_download_sounds_box; + count = 8; -static void DownloadCallback( void *self ) -{ - menulist_s *f = ( menulist_s * ) self; + if(!strcmp(f->generic.name, "...empty slot")) { + //open the bot menu + M_Menu_AddBots_f(); + for(i = 0; i < 8; i++) { + if(!strcmp(s_bots_bot_action[i].generic.name, "...empty slot")) { + //clear it, it's slot is empty + strcpy(bot[i].name, "...empty slot"); + bot[i].userinfo[0] = 0; + count--; + } + } + } + else { + f->generic.name = "...empty slot"; + //clear the bot out of the struct...hmmm...kinda hokey, but - need to know which slot + for(i = 0; i < 8; i++) { + if(!strcmp(s_bots_bot_action[i].generic.name, "...empty slot")) { + //clear it, it's slot is empty + strcpy(bot[i].name, "...empty slot"); + bot[i].userinfo[0] = 0; + count--; + } + } + } - if (f == &s_allow_download_box) - { - Cvar_SetValue("allow_download", f->curvalue); + //write out bot file + if(s_rules_box.curvalue == 1 || s_rules_box.curvalue == 4 || s_rules_box.curvalue == 5) + { // team game + strcpy( stem, "team" ); + } + else + { // non-team, bots per map + strcpy( stem, strchr( mapnames[s_startmap_list.curvalue], '\n' ) + 1 ); + for(i = 0; i < strlen(stem); i++) + stem[i] = tolower( stem[i] ); } + Com_sprintf( relative_path, sizeof(relative_path), BOT_GAMEDATA"/%s.tmp", stem ); + FS_FullWritePath( bot_filename, sizeof(bot_filename), relative_path ); - else if (f == &s_allow_download_maps_box) + if((pOut = fopen(bot_filename, "wb" )) == NULL) { - Cvar_SetValue("allow_download_maps", f->curvalue); + Com_DPrintf("BotAction: failed fopen for write: %s\n", bot_filename ); + return; // bail } - else if (f == &s_allow_download_models_box) - { - Cvar_SetValue("allow_download_models", f->curvalue); + szr = fwrite(&count,sizeof (int),1,pOut); // Write number of bots + + for (i = 7; i > -1; i--) { + if(strcmp(bot[i].name, "...empty slot")) + szr = fwrite(bot[i].userinfo,sizeof (char) * MAX_INFO_STRING,1,pOut); } - else if (f == &s_allow_download_players_box) - { - Cvar_SetValue("allow_download_players", f->curvalue); - } + fclose(pOut); - else if (f == &s_allow_download_sounds_box) - { - Cvar_SetValue("allow_download_sounds", f->curvalue); - } + return; } /* @@ -6004,80 +5420,38 @@ #define NUM_ADDRESSBOOK_ENTRIES 9 static menuframework_s s_addressbook_menu; +static char s_addressbook_cvarnames[NUM_ADDRESSBOOK_ENTRIES][20]; static menufield_s s_addressbook_fields[NUM_ADDRESSBOOK_ENTRIES]; -void AddressBook_MenuInit( void ) +static void M_Menu_AddressBook_f (void) { int i; - float scale; - scale = (float)(viddef.height)/600; - - banneralpha = 0.1; - - s_addressbook_menu.x = viddef.width / 2 - 138*scale; - s_addressbook_menu.y = viddef.height / 2 - 158*scale; s_addressbook_menu.nitems = 0; for ( i = 0; i < NUM_ADDRESSBOOK_ENTRIES; i++ ) { cvar_t *adr; - char buffer[20]; - Com_sprintf( buffer, sizeof( buffer ), "adr%d", i ); + Com_sprintf( s_addressbook_cvarnames[i], sizeof( s_addressbook_cvarnames[i] ), "adr%d", i ); - adr = Cvar_Get( buffer, "", CVAR_ARCHIVE ); + adr = Cvar_Get( s_addressbook_cvarnames[i], "", CVAR_ARCHIVE ); - s_addressbook_fields[i].generic.type = MTYPE_FIELD; - s_addressbook_fields[i].generic.name = 0; - s_addressbook_fields[i].generic.callback = 0; - s_addressbook_fields[i].generic.x = 0; - s_addressbook_fields[i].generic.y = FONTSCALE*i * 18*scale + 0; - s_addressbook_fields[i].generic.localdata[0] = i; - s_addressbook_fields[i].cursor = 0; - s_addressbook_fields[i].length = 15*scale; - s_addressbook_fields[i].visible_length = 15*scale; + s_addressbook_fields[i].generic.type = MTYPE_FIELD; + s_addressbook_fields[i].generic.callback = StrFieldCallback; + s_addressbook_fields[i].generic.localstrings[0] = &s_addressbook_cvarnames[i][0]; + s_addressbook_fields[i].cursor = strlen (adr->string); + s_addressbook_fields[i].generic.visible_length = LONGINPUT_SIZE; strcpy( s_addressbook_fields[i].buffer, adr->string ); - //test(this is where we will read in a bunch of servers from our website - //strcpy( s_addressbook_fields[4].buffer, "27.0.0.1"); - Menu_AddItem( &s_addressbook_menu, &s_addressbook_fields[i] ); } -} - -const char *AddressBook_MenuKey( int key ) -{ - if ( key == K_ESCAPE ) - { - int index; - char buffer[20]; - - for ( index = 0; index < NUM_ADDRESSBOOK_ENTRIES; index++ ) - { - Com_sprintf( buffer, sizeof( buffer ), "adr%d", index ); - Cvar_Set( buffer, s_addressbook_fields[index].buffer ); - } - } - return Default_MenuKey( &s_addressbook_menu, key ); -} - -void AddressBook_MenuDraw(void) -{ - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "conback"); //draw black background first - M_Banner( "m_banner_main", banneralpha ); - Menu_Draw( &s_addressbook_menu ); -} - -void M_Menu_AddressBook_f(void) -{ - AddressBook_MenuInit(); - M_PushMenu( AddressBook_MenuDraw, AddressBook_MenuKey ); + + Menu_AutoArrange (&s_addressbook_menu); + Menu_Center (&s_addressbook_menu); + + M_PushMenu_Defaults (s_addressbook_menu); } /* @@ -6088,13 +5462,9 @@ ============================================================================= */ +static menuframework_s s_playerranking_screen; static menuframework_s s_playerranking_menu; static menuaction_s s_playerranking_title; -static menuaction_s s_playerranking_name; -static menuaction_s s_playerranking_rank; -static menuaction_s s_playerranking_fragrate; -static menuaction_s s_playerranking_totaltime; -static menuaction_s s_playerranking_totalfrags; static menuaction_s s_playerranking_ttheader; static menuaction_s s_playerranking_topten[10]; char rank[32]; @@ -6104,22 +5474,14 @@ char totalfrags[32]; char topTenList[10][64]; -void PlayerRanking_MenuInit( void ) +static void M_Menu_PlayerRanking_f (void) { extern cvar_t *name; PLAYERSTATS player; PLAYERSTATS topTenPlayers[10]; - float scale; - int offset; int i; - scale = (float)(viddef.height)/600; - - banneralpha = 0.1; - - s_playerranking_menu.x = viddef.width / 2 - 170*scale; - s_playerranking_menu.y = viddef.height / 2 - 160*scale; - s_playerranking_menu.nitems = 0; + setup_window (s_playerranking_screen, s_playerranking_menu, "PLAYER RANKINGS"); Q_strncpyz2( player.playername, name->string, sizeof(player.playername) ); @@ -6140,55 +5502,19 @@ s_playerranking_title.generic.type = MTYPE_ACTION; s_playerranking_title.generic.name = "Player Ranking and Stats"; - s_playerranking_title.generic.flags = QMF_LEFT_JUSTIFY; - s_playerranking_title.generic.x = 32*scale; - s_playerranking_title.generic.y = 0; - - offset = GetColorTokens(playername); - - s_playerranking_name.generic.type = MTYPE_COLORTXT; - s_playerranking_name.generic.name = playername; - s_playerranking_name.generic.flags = QMF_LEFT_JUSTIFY; - s_playerranking_name.generic.x = -31*offset*scale+16*scale; - s_playerranking_name.generic.y = FONTSCALE*20*scale; - - s_playerranking_rank.generic.type = MTYPE_COLORTXT; - s_playerranking_rank.generic.name = rank; - s_playerranking_rank.generic.flags = QMF_LEFT_JUSTIFY; - s_playerranking_rank.generic.x = -16*scale; - s_playerranking_rank.generic.y = FONTSCALE*40*scale; - - s_playerranking_fragrate.generic.type = MTYPE_COLORTXT; - s_playerranking_fragrate.generic.name = fragrate; - s_playerranking_fragrate.generic.flags = QMF_LEFT_JUSTIFY; - s_playerranking_fragrate.generic.x = 16*scale; - s_playerranking_fragrate.generic.y = FONTSCALE*60*scale; - - s_playerranking_totalfrags.generic.type = MTYPE_COLORTXT; - s_playerranking_totalfrags.generic.name = totalfrags; - s_playerranking_totalfrags.generic.flags = QMF_LEFT_JUSTIFY; - s_playerranking_totalfrags.generic.x = -16*scale; - s_playerranking_totalfrags.generic.y = FONTSCALE*80*scale; - - s_playerranking_totaltime.generic.type = MTYPE_COLORTXT; - s_playerranking_totaltime.generic.name = totaltime; - s_playerranking_totaltime.generic.flags = QMF_LEFT_JUSTIFY; - s_playerranking_totaltime.generic.x = 16*scale; - s_playerranking_totaltime.generic.y = FONTSCALE*100*scale; + s_playerranking_title.generic.flags = QMF_RIGHT_COLUMN; + Menu_AddItem( &s_playerranking_menu, &s_playerranking_title ); + + add_text(s_playerranking_menu, playername, QMF_RIGHT_COLUMN); + add_text(s_playerranking_menu, rank, QMF_RIGHT_COLUMN); + add_text(s_playerranking_menu, fragrate, QMF_RIGHT_COLUMN); + add_text(s_playerranking_menu, totalfrags, QMF_RIGHT_COLUMN); + add_text(s_playerranking_menu, totaltime, QMF_RIGHT_COLUMN); s_playerranking_ttheader.generic.type = MTYPE_ACTION; s_playerranking_ttheader.generic.name = "Top Ten Players"; - s_playerranking_ttheader.generic.flags = QMF_LEFT_JUSTIFY; - s_playerranking_ttheader.generic.x = 32*scale; - s_playerranking_ttheader.generic.y = FONTSCALE*120*scale; - - Menu_AddItem( &s_playerranking_menu, &s_playerranking_title ); - Menu_AddItem( &s_playerranking_menu, &s_playerranking_name ); - Menu_AddItem( &s_playerranking_menu, &s_playerranking_rank ); - Menu_AddItem( &s_playerranking_menu, &s_playerranking_fragrate ); - Menu_AddItem( &s_playerranking_menu, &s_playerranking_totalfrags ); - Menu_AddItem( &s_playerranking_menu, &s_playerranking_totaltime ); - Menu_AddItem( &s_playerranking_menu, &s_playerranking_ttheader ); + s_playerranking_ttheader.generic.flags = QMF_RIGHT_COLUMN; + Menu_AddItem (&s_playerranking_menu, &s_playerranking_ttheader); for(i = 0; i < 10; i++) { @@ -6200,60 +5526,153 @@ else Com_sprintf(topTenList[i], sizeof(topTenList[i]), "Rank:^1%i %s", topTenPlayers[i].ranking, topTenPlayers[i].playername); - offset = GetColorTokens(topTenPlayers[i].playername); - - s_playerranking_topten[i].generic.type = MTYPE_COLORTXT; + s_playerranking_topten[i].generic.type = MTYPE_TEXT; s_playerranking_topten[i].generic.name = topTenList[i]; - s_playerranking_topten[i].generic.flags = QMF_LEFT_JUSTIFY; - s_playerranking_topten[i].generic.x = -31*offset*scale - 16*scale; - s_playerranking_topten[i].generic.y = FONTSCALE*(140+(i*10))*scale; + s_playerranking_topten[i].generic.flags = QMF_RIGHT_COLUMN; Menu_AddItem( &s_playerranking_menu, &s_playerranking_topten[i] ); } + + M_PushMenu_Defaults (s_playerranking_screen); } -const char *PlayerRanking_MenuKey( int key ) +/* +============================================================================= + +PLAYER CONFIG MENU + +============================================================================= +*/ + +typedef struct { - return Default_MenuKey( &s_playerranking_menu, key ); + menucommon_s generic; + const char *name; + const char *skin; + float w, h; + float mframe, yaw; +} menumodel_s; + +static menuvec2_t PlayerModelSizeFunc (void *_self, FNT_font_t font) +{ + menuvec2_t ret; + menumodel_s *self = (menumodel_s*) _self; + + ret.x = (self->w+2)*font->size; + ret.y = (self->h+2)*font->size; + + return ret; } -void PlayerRanking_MenuDraw(void) +static void PlayerModelDrawFunc (void *_self, FNT_font_t font) { + refdef_t refdef; + char scratch[MAX_OSPATH]; + FILE *modelfile; + int i; + extern float CalcFov( float fov_x, float w, float h ); float scale; + entity_t entity[3]; + menumodel_s *self = (menumodel_s*) _self; + + self->mframe += cls.frametime*150; + if ( self->mframe > 390 ) + self->mframe = 10; + if ( self->mframe < 10) + self->mframe = 10; + + self->yaw += cls.frametime*50; + if (self->yaw > 360) + self->yaw = 0; scale = (float)(viddef.height)/600; + + memset( &refdef, 0, sizeof( refdef ) ); + + refdef.width = self->w*font->size; + refdef.height = self->h*font->size; + refdef.x = Item_GetX(*self); + refdef.y = Item_GetY(*self); + refdef.x -= refdef.width; + + Menu_DrawBox (refdef.x, refdef.y, refdef.width, refdef.height, 1, NULL, "menu/sm_"); + + refdef.width -= font->size; + refdef.height -= font->size; + + refdef.fov_x = 35; + refdef.fov_y = CalcFov( refdef.fov_x, refdef.width, refdef.height ); + refdef.time = cls.realtime*0.001; + + memset( &entity, 0, sizeof( entity ) ); - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "menu_back"); - M_Banner( "m_player", banneralpha ); - - Menu_Draw( &s_playerranking_menu ); -} - -void M_Menu_PlayerRanking_f(void) -{ - PlayerRanking_MenuInit(); - M_PushMenu( PlayerRanking_MenuDraw, PlayerRanking_MenuKey ); + Com_sprintf( scratch, sizeof( scratch ), "players/%s/tris.md2", self->name ); + entity[0].model = R_RegisterModel( scratch ); + Com_sprintf( scratch, sizeof( scratch ), "players/%s/%s.jpg", self->name, self->skin ); + entity[0].skin = R_RegisterSkin( scratch ); + entity[0].flags = RF_FULLBRIGHT | RF_MENUMODEL; + + Com_sprintf( scratch, sizeof( scratch ), "players/%s/weapon.md2", self->name ); + entity[1].model = R_RegisterModel( scratch ); + Com_sprintf( scratch, sizeof( scratch ), "players/%s/weapon.tga", self->name ); + entity[1].skin = R_RegisterSkin( scratch ); + entity[1].flags = RF_FULLBRIGHT | RF_MENUMODEL; + + refdef.num_entities = 2; + + //if a helmet or other special device + Com_sprintf( scratch, sizeof( scratch ), "players/%s/helmet.md2", self->name ); + FS_FOpenFile( scratch, &modelfile ); + if ( modelfile ) + { + fclose(modelfile); + + entity[2].model = R_RegisterModel( scratch ); + Com_sprintf( scratch, sizeof( scratch ), "players/%s/helmet.tga", self->name ); + entity[2].skin = R_RegisterSkin( scratch ); + entity[2].flags = RF_FULLBRIGHT | RF_TRANSLUCENT | RF_MENUMODEL; + entity[2].alpha = 0.4; + + refdef.num_entities = 3; + } + + for (i = 0; i < refdef.num_entities; i++) + { + // seems a little odd to use frame-1 for oldframe and frame%1 for + // backlerp, but it works out + entity[i].frame = (int)(self->mframe/10); + entity[i].oldframe = (int)(self->mframe/10) - 1; + entity[i].backlerp = (float)((int)self->mframe%10)/10.0f; + entity[i].angles[1] = (int)self->yaw; + + VectorSet (entity[i].origin, 80, 0, -5); + VectorCopy (entity[i].origin, entity[i].oldorigin); + } + + refdef.areabits = 0; + refdef.entities = entity; + refdef.lightstyles = 0; + refdef.rdflags = RDF_NOWORLDMODEL; + + R_RenderFramePlayerSetup( &refdef ); } -/* -============================================================================= - -PLAYER CONFIG MENU - -============================================================================= -*/ static menuframework_s s_player_config_menu; + static menufield_s s_player_name_field; + +static menuframework_s s_player_password_submenu; +static menuframework_s s_player_password_field_submenu; static menufield_s s_player_password_field; + +static menuframework_s s_player_skin_submenu; +static menuframework_s s_player_skin_controls_submenu; static menulist_s s_player_model_box; static menulist_s s_player_skin_box; -static menulist_s s_player_handedness_box; -static menulist_s s_player_rate_box; -static menufield_s s_player_fov_field; +static menuitem_s s_player_thumbnail; + +static menuframework_s s_player_skin_preview_submenu; +static menumodel_s s_player_skin_preview; #define MAX_DISPLAYNAME 16 #define MAX_PLAYERMODELS 1024 @@ -6268,47 +5687,25 @@ static playermodelinfo_s s_pmi[MAX_PLAYERMODELS]; static char *s_pmnames[MAX_PLAYERMODELS]; -static int s_numplayermodels; - -static int rate_tbl[] = { 2500, 3200, 5000, 10000, 25000, 0 }; -static const char *rate_names[] = { "28.8 Modem", "33.6 Modem", "Single ISDN", - "Dual ISDN/Cable", "T1/LAN", "User defined", 0 }; - -static void HandednessCallback( void *unused ) -{ - Cvar_SetValue( "hand", s_player_handedness_box.curvalue ); -} +static int s_numplayermodels = 0; -static void RateCallback( void *unused ) -{ - if (s_player_rate_box.curvalue != sizeof(rate_tbl) / sizeof(*rate_tbl) - 1) - Cvar_SetValue( "rate", rate_tbl[s_player_rate_box.curvalue] ); -} - -static void ModelCallback( void *unused ) +static void ModelCallback (void *unused) { s_player_skin_box.itemnames = (const char **) s_pmi[s_player_model_box.curvalue].skindisplaynames; s_player_skin_box.curvalue = 0; + + Menu_ActivateItem ((menuitem_s *)&s_player_skin_box); } -static void FovCallBack( void *unused ) -{ - Cvar_SetValue( "fov", atoi(s_player_fov_field.buffer)); -} - -static void FreeFileList( char **list, int n ) +static void SkinCallback (void *unused) { - int i; + char scratch[MAX_QPATH]; + + Com_sprintf( scratch, sizeof( scratch ), "%s/%s", + s_pmi[s_player_model_box.curvalue].directory, + s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] ); - for ( i = 0; i < n; i++ ) - { - if ( list[i] ) - { - free( list[i] ); - list[i] = 0; - } - } - free( list ); + Cvar_Set( "skin", scratch ); } static qboolean IconOfSkinExists( char *skin, char **pcxfiles, int npcxfiles ) @@ -6346,7 +5743,9 @@ char **dirnames; int i; - s_numplayermodels = 0; + // check if we need to do anything + if (s_numplayermodels != 0) + return; //get dirs from gamedir first. dirnames = FS_ListFilesInFS( "players/*.*", &ndirs, SFF_SUBDIR, 0 ); @@ -6393,7 +5792,7 @@ strcpy( scratch, dirnames[i] ); strcat( scratch, "/*.jpg" ); pcxnames = FS_ListFilesInFS( scratch, &npcxfiles, 0, - SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); + SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM ); if(!pcxnames) { // check for .tga, though this is no longer used for current models @@ -6471,7 +5870,7 @@ strncpy( s_pmi[s_numplayermodels].displayname, c + 1, MAX_DISPLAYNAME-1 ); strcpy( s_pmi[s_numplayermodels].directory, c + 1 ); - FreeFileList( pcxnames, npcxfiles ); + FS_FreeFileList( pcxnames, npcxfiles ); s_numplayermodels++; } @@ -6500,8 +5899,66 @@ return strcmp( a->directory, b->directory ); } +static void PlayerPicDrawFunc (void *_self, FNT_font_t font) +{ + int x, y; + char scratch[MAX_QPATH]; + menuitem_s *self = (menuitem_s *)_self; + x = Item_GetX (*self); + y = Item_GetY (*self); + + Com_sprintf( scratch, sizeof( scratch ), "/players/%s_i.tga", + Cvar_VariableString ("skin") ); + + Draw_StretchPic (x, y, font->size*5, font->size*5, scratch); +} + +static void PasswordCallback (void *_self) +{ + menufield_s *self = (menufield_s *)_self; + + //was the password changed? + if(strcmp("********", self->buffer)) + { + //if this is a virgin password, don't change, just authenticate + if(!strcmp(stats_password->string, "password")) + { + Cvar_FullSet( "stats_password", self->buffer, CVAR_PROFILE); + stats_password = Cvar_Get("stats_password", "password", CVAR_PROFILE); + Cvar_FullSet( "stats_pw_hashed", "0", CVAR_PROFILE); + currLoginState.validated = false; + STATS_RequestVerification(); + } + else + { + Cvar_FullSet( "stats_password", self->buffer, CVAR_PROFILE); + stats_password = Cvar_Get("stats_password", "password", CVAR_PROFILE); + Cvar_FullSet( "stats_pw_hashed", "0", CVAR_PROFILE); + STATS_RequestPwChange(); + } + } +} + +void PConfigApplyFunc (void *self) +{ + Menu_ApplyMenu (Menu_GetItemTree ((menuitem_s *)self)); +} + +static menuvec2_t PlayerConfigModelSizeFunc (void *_self, FNT_font_t font) +{ + menuvec2_t ret; + menumodel_s *self = (menumodel_s*) _self; + + ret.x = 20*font->size; + ret.y = 29*font->size; + + self->w = (float)ret.x/(float)font->size; + self->h = (float)ret.y/(float)font->size; + + return ret; +} -qboolean PlayerConfig_MenuInit( void ) +void PlayerConfig_MenuInit( void ) { extern cvar_t *name; // extern cvar_t *team; // unused @@ -6512,29 +5969,19 @@ float scale; int currentdirectoryindex = 0; int currentskinindex = 0; - static const char *yes_no_names[] = - { - "no", "yes", 0 - }; cvar_t *hand = Cvar_Get( "hand", "0", CVAR_USERINFO | CVAR_ARCHIVE ); - static const char *handedness[] = { "right", "left", "center", 0 }; - scale = (float)(viddef.height)/600; - banneralpha = 0.1; - PlayerConfig_ScanDirectories(); if (s_numplayermodels == 0) - return false; + return; if ( hand->value < 0 || hand->value > 2 ) Cvar_SetValue( "hand", 0 ); Q_strncpyz( currentdirectory, Cvar_VariableString ("skin"), sizeof(currentdirectory)-1); - // Richard Stanway's Q1 code says there is a buffer overflow here. - // strcpy( currentdirectory, skin->string ); if ( strchr( currentdirectory, '/' ) ) { @@ -6554,502 +6001,321 @@ qsort( s_pmi, s_numplayermodels, sizeof( s_pmi[0] ), pmicmpfnc ); - memset( s_pmnames, 0, sizeof( s_pmnames ) ); - for ( i = 0; i < s_numplayermodels; i++ ) - { - s_pmnames[i] = s_pmi[i].displayname; - if ( Q_strcasecmp( s_pmi[i].directory, currentdirectory ) == 0 ) - { - int j; - - currentdirectoryindex = i; - - for ( j = 0; j < s_pmi[i].nskins; j++ ) - { - if ( Q_strcasecmp( s_pmi[i].skindisplaynames[j], currentskin ) == 0 ) - { - currentskinindex = j; - break; - } - } - } - } - - s_player_config_menu.x = viddef.width / 2 - 120; - s_player_config_menu.y = viddef.height / 2 - 158*scale; - s_player_config_menu.nitems = 0; - - s_player_name_field.generic.type = MTYPE_FIELD; - s_player_name_field.generic.name = "name"; - s_player_name_field.generic.callback = 0; - s_player_name_field.generic.x = FONTSCALE*-32; - s_player_name_field.generic.y = 0; - s_player_name_field.length = 20; - s_player_name_field.visible_length = 20; - Q_strncpyz2( s_player_name_field.buffer, name->string, sizeof(s_player_name_field.buffer) ); - s_player_name_field.cursor = strlen( s_player_name_field.buffer ); - - s_player_password_field.generic.type = MTYPE_FIELD; - s_player_password_field.generic.name = "password"; - s_player_password_field.generic.callback = 0; - s_player_password_field.generic.x = FONTSCALE*-32; - s_player_password_field.generic.y = FONTSCALE*20*scale; - s_player_password_field.length = 20; - s_player_password_field.visible_length = 20; - s_player_password_field.generic.statusbar = "COR Entertainment is not responsible for lost or stolen passwords"; - Q_strncpyz2( s_player_password_field.buffer, "********", sizeof(s_player_password_field.buffer) ); - s_player_password_field.cursor = 0; - - s_player_model_box.generic.type = MTYPE_SPINCONTROL; - s_player_model_box.generic.name = "model"; - s_player_model_box.generic.x = FONTSCALE*-32; - s_player_model_box.generic.y = FONTSCALE*90*scale; - s_player_model_box.generic.callback = ModelCallback; - s_player_model_box.generic.cursor_offset = -56; - s_player_model_box.curvalue = currentdirectoryindex; - s_player_model_box.itemnames = (const char **) s_pmnames; - - s_player_skin_box.generic.type = MTYPE_SPINCONTROL; - s_player_skin_box.generic.name = "skin"; - s_player_skin_box.generic.x = FONTSCALE*-32; - s_player_skin_box.generic.y = FONTSCALE*114*scale; - s_player_skin_box.generic.callback = 0; - s_player_skin_box.generic.cursor_offset = -56; - s_player_skin_box.curvalue = currentskinindex; - s_player_skin_box.itemnames = (const char **) s_pmi[currentdirectoryindex].skindisplaynames; - - s_player_handedness_box.generic.type = MTYPE_SPINCONTROL; - s_player_handedness_box.generic.name = "handedness"; - s_player_handedness_box.generic.x = FONTSCALE*-32; - s_player_handedness_box.generic.y = FONTSCALE*138*scale; - s_player_handedness_box.generic.cursor_offset = -56; - s_player_handedness_box.generic.callback = HandednessCallback; - s_player_handedness_box.curvalue = Cvar_VariableValue( "hand" ); - s_player_handedness_box.itemnames = handedness; - - s_player_fov_field.generic.type = MTYPE_FIELD; - s_player_fov_field.generic.name = "fov"; - s_player_fov_field.generic.callback = 0; - s_player_fov_field.generic.x = FONTSCALE*-32; - s_player_fov_field.generic.y = FONTSCALE*152*scale; - s_player_fov_field.length = 6; - s_player_fov_field.visible_length = 6; - s_player_fov_field.generic.callback = FovCallBack; - strcpy( s_player_fov_field.buffer, fov->string ); - s_player_fov_field.cursor = strlen( fov->string ); - - for (i = 0; i < sizeof(rate_tbl) / sizeof(*rate_tbl) - 1; i++) - if (Cvar_VariableValue("rate") == rate_tbl[i]) - break; - - s_player_rate_box.generic.type = MTYPE_SPINCONTROL; - s_player_rate_box.generic.x = FONTSCALE*-32; - s_player_rate_box.generic.y = FONTSCALE*166*scale; - s_player_rate_box.generic.name = "connection"; - s_player_rate_box.generic.callback = RateCallback; - s_player_rate_box.curvalue = i; - s_player_rate_box.itemnames = rate_names; - - s_allow_download_box.generic.type = MTYPE_SPINCONTROL; - s_allow_download_box.generic.x = FONTSCALE*72; - s_allow_download_box.generic.y = FONTSCALE*186*scale; - s_allow_download_box.generic.name = "allow downloading"; - s_allow_download_box.generic.callback = DownloadCallback; - s_allow_download_box.itemnames = yes_no_names; - s_allow_download_box.curvalue = (Cvar_VariableValue("allow_download") != 0); - - s_allow_download_maps_box.generic.type = MTYPE_SPINCONTROL; - s_allow_download_maps_box.generic.x = FONTSCALE*72; - s_allow_download_maps_box.generic.y = FONTSCALE*196*scale; - s_allow_download_maps_box.generic.name = "maps"; - s_allow_download_maps_box.generic.callback = DownloadCallback; - s_allow_download_maps_box.itemnames = yes_no_names; - s_allow_download_maps_box.curvalue = (Cvar_VariableValue("allow_download_maps") != 0); - - s_allow_download_players_box.generic.type = MTYPE_SPINCONTROL; - s_allow_download_players_box.generic.x = FONTSCALE*72; - s_allow_download_players_box.generic.y = FONTSCALE*206*scale; - s_allow_download_players_box.generic.name = "player models/skins"; - s_allow_download_players_box.generic.callback = DownloadCallback; - s_allow_download_players_box.itemnames = yes_no_names; - s_allow_download_players_box.curvalue = (Cvar_VariableValue("allow_download_players") != 0); - - s_allow_download_models_box.generic.type = MTYPE_SPINCONTROL; - s_allow_download_models_box.generic.x = FONTSCALE*72; - s_allow_download_models_box.generic.y = FONTSCALE*216*scale; - s_allow_download_models_box.generic.name = "models"; - s_allow_download_models_box.generic.callback = DownloadCallback; - s_allow_download_models_box.itemnames = yes_no_names; - s_allow_download_models_box.curvalue = (Cvar_VariableValue("allow_download_models") != 0); - - s_allow_download_sounds_box.generic.type = MTYPE_SPINCONTROL; - s_allow_download_sounds_box.generic.x = FONTSCALE*72; - s_allow_download_sounds_box.generic.y = FONTSCALE*226*scale; - s_allow_download_sounds_box.generic.name = "sounds"; - s_allow_download_sounds_box.generic.callback = DownloadCallback; - s_allow_download_sounds_box.itemnames = yes_no_names; - s_allow_download_sounds_box.curvalue = (Cvar_VariableValue("allow_download_sounds") != 0); - - Menu_AddItem( &s_player_config_menu, &s_allow_download_box ); - Menu_AddItem( &s_player_config_menu, &s_allow_download_maps_box ); - Menu_AddItem( &s_player_config_menu, &s_allow_download_players_box ); - Menu_AddItem( &s_player_config_menu, &s_allow_download_models_box ); - Menu_AddItem( &s_player_config_menu, &s_allow_download_sounds_box ); - - Menu_AddItem( &s_player_config_menu, &s_player_name_field ); - Menu_AddItem( &s_player_config_menu, &s_player_password_field); - Menu_AddItem( &s_player_config_menu, &s_player_model_box ); - if ( s_player_skin_box.itemnames ) - { - Menu_AddItem( &s_player_config_menu, &s_player_skin_box ); - } - Menu_AddItem( &s_player_config_menu, &s_player_handedness_box ); - Menu_AddItem( &s_player_config_menu, &s_player_fov_field ); - Menu_AddItem( &s_player_config_menu, &s_player_rate_box ); - - //add in shader support for player models, if the player goes into the menu before entering a - //level, that way we see the shaders. We only want to do this if they are NOT loaded yet. - scriptsloaded = Cvar_Get("scriptsloaded", "0", 0); - if(!scriptsloaded->value) - { - Cvar_SetValue("scriptsloaded", 1); //this needs to be reset on vid_restart - RS_ScanPathForScripts(); - RS_LoadScript("scripts/models.rscript"); - RS_LoadScript("scripts/caustics.rscript"); - RS_LoadSpecialScripts(); - } - - return true; -} - -void PlayerConfig_MenuDraw( void ) -{ - extern float CalcFov( float fov_x, float w, float h ); - refdef_t refdef; - char scratch[MAX_OSPATH]; - FILE *modelfile; - int helmet = false; - float scale; - - scale = (float)(viddef.height)/600; - - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "menu_back"); //draw black background first - M_Banner( "m_player", banneralpha ); - - memset( &refdef, 0, sizeof( refdef ) ); - - refdef.width = viddef.width; - refdef.height = viddef.height; - refdef.x = 0; - refdef.y = 0; - if((float)viddef.width/(float)viddef.height > 1.5) - refdef.fov_x = 90; - else - refdef.fov_x = 75; - refdef.fov_y = CalcFov( refdef.fov_x, refdef.width, refdef.height ); - refdef.time = cls.realtime*0.001; - - if(!strcmp(s_player_name_field.buffer, "Player")) - pNameUnique = false; - else - pNameUnique = true; - - if(!pNameUnique) { - M_DrawTextBox( -32*scale, (int)(FONTSCALE*-95*scale), 40/scale, 2 ); - M_Print( (int)(FONTSCALE*32*scale), (int)(FONTSCALE*-85*scale), "You must change your player" ); - M_Print( (int)(FONTSCALE*32*scale), (int)(FONTSCALE*-75*scale), "name before joining a server!" ); - } - - if ( s_pmi[s_player_model_box.curvalue].skindisplaynames ) - { - static float mframe; - static float yaw; - entity_t entity[3]; - - memset( &entity, 0, sizeof( entity ) ); - - mframe += cls.frametime*150; - if ( mframe > 390 ) - mframe = 10; - if ( mframe < 10) - mframe = 10; - - yaw += cls.frametime*50; - if (yaw > 360) - yaw = 0; - - Com_sprintf( scratch, sizeof( scratch ), "players/%s/tris.md2", s_pmi[s_player_model_box.curvalue].directory ); - entity[0].model = R_RegisterModel( scratch ); - Com_sprintf( scratch, sizeof( scratch ), "players/%s/%s.jpg", s_pmi[s_player_model_box.curvalue].directory, s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] ); - entity[0].skin = R_RegisterSkin( scratch ); - - Com_sprintf( scratch, sizeof( scratch ), "players/%s/weapon.md2", s_pmi[s_player_model_box.curvalue].directory ); - entity[1].model = R_RegisterModel( scratch ); - Com_sprintf( scratch, sizeof( scratch ), "players/%s/weapon.tga", s_pmi[s_player_model_box.curvalue].directory ); - entity[1].skin = R_RegisterSkin( scratch ); - - //if a helmet or other special device - Com_sprintf( scratch, sizeof( scratch ), "players/%s/helmet.md2", s_pmi[s_player_model_box.curvalue].directory ); - FS_FOpenFile( scratch, &modelfile ); - if ( modelfile ) - { - helmet = true; - Com_sprintf( scratch, sizeof( scratch ), "players/%s/helmet.md2", s_pmi[s_player_model_box.curvalue].directory ); - entity[2].model = R_RegisterModel( scratch ); - Com_sprintf( scratch, sizeof( scratch ), "players/%s/helmet.tga", s_pmi[s_player_model_box.curvalue].directory ); - entity[2].skin = R_RegisterSkin( scratch ); - fclose(modelfile); - } - - entity[0].flags = RF_FULLBRIGHT | RF_MENUMODEL; - entity[0].origin[0] = 80; - entity[0].origin[1] = -30; - entity[0].origin[2] = -5; - - entity[1].flags = RF_FULLBRIGHT | RF_MENUMODEL; - entity[1].origin[0] = 80; - entity[1].origin[1] = -30; - entity[1].origin[2] = -5; - - if(helmet) - { - entity[2].flags = RF_FULLBRIGHT | RF_TRANSLUCENT | RF_MENUMODEL; - entity[2].origin[0] = 80; - entity[2].origin[1] = -30; - entity[2].origin[2] = -5; - entity[2].alpha = 0.4; - } - - VectorCopy( entity[0].origin, entity[0].oldorigin ); - - VectorCopy( entity[1].origin, entity[1].oldorigin ); - - VectorCopy( entity[2].origin, entity[2].oldorigin ); - - entity[0].frame = (int)(mframe/10); - entity[0].oldframe = (int)(mframe/10) - 1; - entity[0].backlerp = 1.0; - entity[0].angles[1] = (int)yaw; - - entity[1].frame = (int)(mframe/10); - entity[1].oldframe = (int)(mframe/10) - 1; - entity[1].backlerp = 1.0; - entity[1].angles[1] = (int)yaw; - - entity[2].frame = (int)(mframe/10); - entity[2].oldframe = (int)(mframe/10) - 1; - entity[2].backlerp = 1.0; - entity[2].angles[1] = (int)yaw; - - refdef.areabits = 0; - if(helmet) - refdef.num_entities = 3; - else - refdef.num_entities = 2; - - refdef.entities = entity; - refdef.lightstyles = 0; - refdef.rdflags = RDF_NOWORLDMODEL; - - Menu_Draw( &s_player_config_menu ); - - refdef.height += 4; - - R_RenderFramePlayerSetup( &refdef ); - - Com_sprintf( scratch, sizeof( scratch ), "/players/%s/%s_i.tga", - s_pmi[s_player_model_box.curvalue].directory, - s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] ); - - refdef.y = viddef.height / 2 - 45*scale; - Draw_StretchPic( s_player_config_menu.x - 120*scale, refdef.y - 56*scale, 64*scale, 64*scale, scratch ); - } -} -void PConfigAccept (void) -{ - int i; - char scratch[1024]; - - ValidatePlayerName( s_player_name_field.buffer, sizeof(s_player_name_field.buffer) ); - Cvar_Set( "name", s_player_name_field.buffer ); - - if(!strcmp(s_player_name_field.buffer, "Player")) - pNameUnique = false; - else - pNameUnique = true; - - //was the password changed? - if(strcmp("********", s_player_password_field.buffer)) - { - //if this is a virgin password, don't change, just authenticate - if(!strcmp(stats_password->string, "password")) - { - Cvar_FullSet( "stats_password", s_player_password_field.buffer, CVAR_PROFILE); - stats_password = Cvar_Get("stats_password", "password", CVAR_PROFILE); - Cvar_FullSet( "stats_pw_hashed", "0", CVAR_PROFILE); - pw_hashed = Cvar_Get("stats_pw_hashed", "0", CVAR_PROFILE); - currLoginState.validated = false; - STATS_RequestVerification(); - } - else - { - Cvar_FullSet( "stats_password", s_player_password_field.buffer, CVAR_PROFILE); - stats_password = Cvar_Get("stats_password", "password", CVAR_PROFILE); - Cvar_FullSet( "stats_pw_hashed", "0", CVAR_PROFILE); - pw_hashed = Cvar_Get("stats_pw_hashed", "0", CVAR_PROFILE); - STATS_RequestPwChange(); - } - } - - Com_sprintf( scratch, sizeof( scratch ), "%s/%s", - s_pmi[s_player_model_box.curvalue].directory, - s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue] ); - - Cvar_Set( "skin", scratch ); - + memset( s_pmnames, 0, sizeof( s_pmnames ) ); for ( i = 0; i < s_numplayermodels; i++ ) { - int j; - - for ( j = 0; j < s_pmi[i].nskins; j++ ) + s_pmnames[i] = s_pmi[i].displayname; + if ( Q_strcasecmp( s_pmi[i].directory, currentdirectory ) == 0 ) { - if ( s_pmi[i].skindisplaynames[j] ) - free( s_pmi[i].skindisplaynames[j] ); - s_pmi[i].skindisplaynames[j] = 0; + int j; + + currentdirectoryindex = i; + + for ( j = 0; j < s_pmi[i].nskins; j++ ) + { + if ( Q_strcasecmp( s_pmi[i].skindisplaynames[j], currentskin ) == 0 ) + { + currentskinindex = j; + break; + } + } } - free( s_pmi[i].skindisplaynames ); - s_pmi[i].skindisplaynames = 0; - s_pmi[i].nskins = 0; } -} -const char *PlayerConfig_MenuKey (int key) -{ - if ( key == K_ESCAPE ) - PConfigAccept(); + setup_window (s_player_config_screen, s_player_config_menu, "PLAYER SETUP"); - return Default_MenuKey( &s_player_config_menu, key ); -} + s_player_name_field.generic.type = MTYPE_FIELD; + s_player_name_field.generic.name = "name"; + s_player_name_field.generic.localstrings[0] = "name"; + s_player_name_field.generic.callback = StrFieldCallback; + s_player_name_field.length = 20; + s_player_name_field.generic.visible_length = LONGINPUT_SIZE; + Q_strncpyz2( s_player_name_field.buffer, name->string, sizeof(s_player_name_field.buffer) ); + s_player_name_field.cursor = strlen( s_player_name_field.buffer ); + + // Horizontal submenu with two items. The first is a password field. The + // second is an apply button for the password. + s_player_password_submenu.generic.type = MTYPE_SUBMENU; + // Keep the password field horizontally lined up: + s_player_password_submenu.generic.flags = QMF_SNUG_LEFT; + s_player_password_submenu.navagable = true; + s_player_password_submenu.horizontal = true; + s_player_password_submenu.nitems = 0; + + // sub-submenu for the password field. Purely for formatting/layout + // purposes. + s_player_password_field_submenu.generic.type = MTYPE_SUBMENU; + s_player_password_field_submenu.navagable = true; + s_player_password_field_submenu.horizontal = true; + s_player_password_field_submenu.nitems = 0; + // keep the password field horizontally lined up: + LINK (s_player_config_menu.lwidth, s_player_password_field_submenu.lwidth); + // keep it vertically centered on the apply button + LINK (s_player_password_submenu.height, s_player_password_field_submenu.height); + + s_player_password_field.generic.type = MTYPE_FIELD; + s_player_password_field.generic.name = "password"; + s_player_password_field.generic.flags = QMF_ACTION_WAIT; + s_player_password_field.generic.callback = PasswordCallback; + s_player_password_field.length = 20; + s_player_password_field.generic.visible_length = LONGINPUT_SIZE; + s_player_password_field.generic.statusbar = "COR Entertainment is not responsible for lost or stolen passwords"; + Q_strncpyz2( s_player_password_field.buffer, "********", sizeof(s_player_password_field.buffer) ); + s_player_password_field.cursor = 0; + Menu_AddItem( &s_player_password_submenu, &s_player_password_field_submenu); + Menu_AddItem( &s_player_password_field_submenu, &s_player_password_field); + + add_action (s_player_password_submenu, "Apply", PConfigApplyFunc, 0); + + // Horizontal submenu with two items. The first is a submenu with the + // model/skin controls. The second is just a thumbnail of the current + // selection. + s_player_skin_submenu.generic.type = MTYPE_SUBMENU; + // Keep the model/skin controls horizontally lined up: + s_player_skin_submenu.generic.flags = QMF_SNUG_LEFT; + s_player_skin_submenu.navagable = true; + s_player_skin_submenu.horizontal = true; + s_player_skin_submenu.nitems = 0; + + // Vertical sub-submenu with two items. The first is the model control. + // The second is the skin control. + s_player_skin_controls_submenu.generic.type = MTYPE_SUBMENU; + s_player_skin_controls_submenu.navagable = true; + s_player_skin_controls_submenu.nitems = 0; + // keep the model/skin controls horizontally lined up: + LINK (s_player_config_menu.lwidth, s_player_skin_controls_submenu.lwidth); + s_player_model_box.generic.type = MTYPE_SPINCONTROL; + s_player_model_box.generic.name = "model"; + s_player_model_box.generic.callback = ModelCallback; + s_player_model_box.curvalue = currentdirectoryindex; + s_player_model_box.itemnames = (const char **) s_pmnames; -void M_Menu_PlayerConfig_f (void) -{ - if (!PlayerConfig_MenuInit()) + s_player_skin_box.generic.type = MTYPE_SPINCONTROL; + s_player_skin_box.generic.callback = SkinCallback; + s_player_skin_box.generic.name = "skin"; + s_player_skin_box.curvalue = currentskinindex; + s_player_skin_box.itemnames = (const char **) s_pmi[currentdirectoryindex].skindisplaynames; + + Menu_AddItem( &s_player_skin_controls_submenu, &s_player_model_box ); + if ( s_player_skin_box.itemnames ) + Menu_AddItem( &s_player_skin_controls_submenu, &s_player_skin_box ); + + Menu_AddItem (&s_player_skin_submenu, &s_player_skin_controls_submenu); + + // TODO: click this to cycle skins + s_player_thumbnail.generic.type = MTYPE_NOT_INTERACTIVE; + VectorSet(s_player_thumbnail.generic.localints, 5, 5, 0); + s_player_thumbnail.generic.itemsizecallback = PicSizeFunc; + s_player_thumbnail.generic.itemdraw = PlayerPicDrawFunc; + Menu_AddItem (&s_player_skin_submenu, &s_player_thumbnail); + + s_player_skin_preview_submenu.generic.type = MTYPE_SUBMENU; + s_player_skin_preview_submenu.generic.flags = QMF_SNUG_LEFT; + s_player_skin_preview_submenu.nitems = 0; + + Menu_AddItem( &s_player_config_menu, &s_player_name_field ); + Menu_AddItem( &s_player_config_menu, &s_player_password_submenu); + Menu_AddItem( &s_player_config_menu, &s_player_skin_submenu); + + s_player_skin_preview.generic.type = MTYPE_NOT_INTERACTIVE; + s_player_skin_preview.generic.namesizecallback = PlayerConfigModelSizeFunc; + s_player_skin_preview.generic.namedraw = PlayerModelDrawFunc; + + Menu_AddItem (&s_player_config_menu, &s_player_skin_preview_submenu); + Menu_AddItem (&s_player_skin_preview_submenu, &s_player_skin_preview); + + //add in shader support for player models, if the player goes into the menu before entering a + //level, that way we see the shaders. We only want to do this if they are NOT loaded yet. + scriptsloaded = Cvar_Get("scriptsloaded", "0", 0); + if(!scriptsloaded->value) { - Menu_SetStatusBar( &s_options_menu, "No valid player models found" ); - return; + Cvar_SetValue("scriptsloaded", 1); //this needs to be reset on vid_restart + RS_ScanPathForScripts(); + RS_LoadScript("scripts/models.rscript"); + RS_LoadScript("scripts/caustics.rscript"); + RS_LoadSpecialScripts(); } - Menu_SetStatusBar( &s_options_menu, NULL ); - M_PushMenu( PlayerConfig_MenuDraw, PlayerConfig_MenuKey ); } +void PlayerConfig_MenuDraw (menuframework_s *dummy, menuvec2_t offset) +{ + if(!PLAYER_NAME_UNIQUE) + s_player_config_menu.statusbar = "You must change your player name before joining a server!"; -/* -======================================================================= - -GALLERY MENU + if ( s_pmi[s_player_model_box.curvalue].skindisplaynames ) + { + s_player_skin_preview.name = s_pmi[s_player_model_box.curvalue].directory; + s_player_skin_preview.skin = s_pmi[s_player_model_box.curvalue].skindisplaynames[s_player_skin_box.curvalue]; + Screen_Draw (&s_player_config_screen, offset); + } +} -======================================================================= -*/ -#if 0 -void M_Menu_Gallery_f( void ) +void M_Menu_PlayerConfig_f (void) { - extern void Gallery_MenuDraw( void ); - extern const char *Gallery_MenuKey( int key ); - - M_PushMenu( Gallery_MenuDraw, Gallery_MenuKey ); + PlayerConfig_MenuInit(); + M_PushMenu (PlayerConfig_MenuDraw, Default_MenuKey, &s_player_config_screen); } -#endif /* ======================================================================= -QUIT MENU +ALIEN ARENA TACTICAL MENU ======================================================================= */ -static menuframework_s s_quit_menu; -static menuseparator_s s_quit_question; -static menuaction_s s_quit_yes_action; -static menuaction_s s_quit_no_action; - -void M_Quit_Draw( void ) -{ - banneralpha += cls.frametime; - if (banneralpha > 1) - banneralpha = 1; - - M_Background( "conback"); //draw black background first - M_Banner( "m_quit", banneralpha ); - - Menu_AdjustCursor( &s_quit_menu, 1 ); +static menuframework_s s_tactical_screen; +static menuaction_s s_tactical_title_action; - Menu_Draw( &s_quit_menu ); -} +#define num_tactical_teams 2 +#define num_tactical_classes 3 +static const char *tactical_skin_names[num_tactical_teams][num_tactical_classes][2] = +{ + //ALIEN CLASSES + { + {"Enforcer", "martianenforcer"}, + {"Warrior", "martianwarrior"}, + {"Overlord", "martianoverlord"} + }, + //HUMAN CLASSES + { + {"Lauren", "lauren"}, + {"Enforcer", "enforcer"}, + {"Commander", "commander"} + } +}; -const char *M_Quit_MenuKey( int key ) +static const char *tactical_team_names[num_tactical_teams] = { - return Default_MenuKey( &s_quit_menu, key ); -} + "ALIENS", + "HUMANS" +}; -void quitActionNo (void *blah) -{ - M_PopMenu(); +static menuframework_s s_tactical_menus[num_tactical_teams]; +static menuframework_s s_tactical_columns[num_tactical_teams][num_tactical_classes]; +static menuaction_s s_tactical_skin_actions[num_tactical_teams][num_tactical_classes]; +static menumodel_s s_tactical_skin_previews[num_tactical_teams][num_tactical_classes]; + +static void TacticalJoinFunc ( void *item ) +{ + menuaction_s *self; + char buffer[128]; + + self = (menuaction_s*)item; + + cl.tactical = true; + + //set skin and model + Com_sprintf (buffer, sizeof(buffer), "%s/default", self->generic.localstrings[0]); + Cvar_Set ("skin", buffer); + + //join server + Com_sprintf (buffer, sizeof(buffer), "connect %s\n", NET_AdrToString (mservers[serverindex].local_server_netadr)); + Cbuf_AddText (buffer); + M_ForceMenuOff (); } -void quitActionYes (void *blah) + +static void TacticalScreen_Draw (menuframework_s *screen, menuvec2_t offset) { - CL_Quit_f(); + FNT_font_t font = FNT_AutoGet (CL_menuFont); + screen->x = offset.x; + Menu_AutoArrange (screen); + // force it to use up the whole screen + CHASELINK(s_tactical_screen.rwidth) = viddef.width - CHASELINK(s_tactical_screen.lwidth); + Menu_Draw (screen, font); } -void Quit_MenuInit (void) +static void M_Menu_Tactical_f (void) { + extern cvar_t *name; float scale; - + int i, j; + scale = (float)(viddef.height)/600; + + for (i = 0; i < num_tactical_teams; i++) + { + // kinda hacky but this is the only place we have two windows in one + // screen + setup_nth_window (s_tactical_screen, i, s_tactical_menus[i], tactical_team_names[i]); + + s_tactical_menus[i].horizontal = true; + + for (j = 0; j < num_tactical_classes; j++) + { + s_tactical_columns[i][j].generic.type = MTYPE_SUBMENU; + s_tactical_columns[i][j].nitems = 0; + s_tactical_columns[i][j].navagable = true; + Menu_AddItem (&s_tactical_menus[i], &s_tactical_columns[i][j]); + + s_tactical_skin_previews[i][j].generic.type = MTYPE_NOT_INTERACTIVE; + s_tactical_skin_previews[i][j].generic.namesizecallback = PlayerModelSizeFunc; + s_tactical_skin_previews[i][j].generic.namedraw = PlayerModelDrawFunc; + s_tactical_skin_previews[i][j].name = tactical_skin_names[i][j][1]; + s_tactical_skin_previews[i][j].skin = "default"; + s_tactical_skin_previews[i][j].h = 14; + s_tactical_skin_previews[i][j].w = 10; + Menu_AddItem (&s_tactical_columns[i][j], &s_tactical_skin_previews[i][j]); + + s_tactical_skin_actions[i][j].generic.type = MTYPE_ACTION; + s_tactical_skin_actions[i][j].generic.flags = QMF_BUTTON; + s_tactical_skin_actions[i][j].generic.name = tactical_skin_names[i][j][0]; + s_tactical_skin_actions[i][j].generic.localstrings[0] = tactical_skin_names[i][j][1]; + s_tactical_skin_actions[i][j].generic.callback = TacticalJoinFunc; + Menu_AddItem (&s_tactical_columns[i][j], &s_tactical_skin_actions[i][j]); + } + } - banneralpha = 0.1; - - s_quit_menu.x = viddef.width*0.50 + 48*scale; - s_quit_menu.y = viddef.height*0.50 - 48*scale; - s_quit_menu.nitems = 0; + //add in shader support for player models, if the player goes into the menu before entering a + //level, that way we see the shaders. We only want to do this if they are NOT loaded yet. + scriptsloaded = Cvar_Get("scriptsloaded", "0", 0); + if(!scriptsloaded->value) + { + Cvar_SetValue("scriptsloaded", 1); //this needs to be reset on vid_restart + RS_ScanPathForScripts(); + RS_LoadScript("scripts/models.rscript"); + RS_LoadScript("scripts/caustics.rscript"); + RS_LoadSpecialScripts(); + } + + M_PushMenu (TacticalScreen_Draw, Default_MenuKey, &s_tactical_screen); +} - s_quit_question.generic.type = MTYPE_SEPARATOR; - s_quit_question.generic.name = "Are you sure?"; - s_quit_question.generic.x = 32*scale; - s_quit_question.generic.y = FONTSCALE*scale*40; - s_quit_yes_action.generic.type = MTYPE_ACTION; - s_quit_yes_action.generic.x = -24*scale; - s_quit_yes_action.generic.y = FONTSCALE*scale*60; - s_quit_yes_action.generic.name = " yes"; - s_quit_yes_action.generic.callback = quitActionYes; +/* +======================================================================= - s_quit_no_action.generic.type = MTYPE_ACTION; - s_quit_no_action.generic.x = -24*scale; - s_quit_no_action.generic.y = FONTSCALE*scale*70; - s_quit_no_action.generic.name = " no"; - s_quit_no_action.generic.callback = quitActionNo; +QUIT MENU - Menu_AddItem( &s_quit_menu, ( void * ) &s_quit_question ); - Menu_AddItem( &s_quit_menu, ( void * ) &s_quit_yes_action ); - Menu_AddItem( &s_quit_menu, ( void * ) &s_quit_no_action ); +======================================================================= +*/ - Menu_SetStatusBar( &s_quit_menu, NULL ); +static menuframework_s s_quit_screen; +static menuframework_s s_quit_menu; - Menu_Center( &s_quit_menu ); +void quitActionNo (void *blah) +{ + M_PopMenu(); } - -void M_Menu_Quit_f (void) +void quitActionYes (void *blah) { - Quit_MenuInit(); - M_PushMenu (M_Quit_Draw, M_Quit_MenuKey); + CL_Quit_f(); } +static void M_Menu_Quit_f (void) +{ + setup_window (s_quit_screen, s_quit_menu, "EXIT ALIEN ARENA"); + + add_text (s_quit_menu, "Are you sure?", 0); + add_action (s_quit_menu, "Yes", quitActionYes, 0); + add_action (s_quit_menu, "No", quitActionNo, 0); + + Menu_AutoArrange (&s_quit_screen); + Menu_Center (&s_quit_screen); + + M_PushMenu_Defaults (s_quit_screen); +} //============================================================================= /* Menu Subsystem */ @@ -7063,52 +6329,28 @@ void M_Init (void) { Cmd_AddCommand ("menu_main", M_Menu_Main_f); - Cmd_AddCommand ("menu_game", M_Menu_Game_f); - Cmd_AddCommand ("menu_joinserver", M_Menu_JoinServer_f); - Cmd_AddCommand ("menu_addressbook", M_Menu_AddressBook_f); - Cmd_AddCommand ("menu_startserver", M_Menu_StartServer_f); - Cmd_AddCommand ("menu_dmoptions", M_Menu_DMOptions_f); - Cmd_AddCommand ("menu_playerconfig", M_Menu_PlayerConfig_f); - Cmd_AddCommand ("menu_credits", M_Menu_Credits_f ); - Cmd_AddCommand ("menu_video", M_Menu_Video_f); - Cmd_AddCommand ("menu_options", M_Menu_Options_f); - Cmd_AddCommand ("menu_keys", M_Menu_Keys_f); Cmd_AddCommand ("menu_quit", M_Menu_Quit_f); } /* ================================= -Menu Mouse Cursor - psychospaz +Menu Mouse Cursor ================================= */ -void refreshCursorMenu (void) -{ - cursor.menu = NULL; -} void refreshCursorLink (void) { - cursor.menuitem = NULL; + Cursor_SelectItem (NULL); + cursor.click_menuitem = NULL; } int Slider_CursorPositionX ( menuslider_s *s ) { - float range; - - range = ( s->curvalue - s->minvalue ) / ( float ) ( s->maxvalue - s->minvalue ); - - if ( range < 0) - range = 0; - if ( range > 1) - range = 1; - - return ( int )( (MENU_FONT_SIZE) + RCOLUMN_OFFSET + (SLIDER_RANGE)*(MENU_FONT_SIZE) * range ); -} - -int Slider_CursorPositionY ( menuslider_s *s ) -{ - float range; + float range; + FNT_font_t font; + + font = FNT_AutoGet( CL_menuFont ); range = ( s->curvalue - s->minvalue ) / ( float ) ( s->maxvalue - s->minvalue ); @@ -7117,28 +6359,21 @@ if ( range > 1) range = 1; - return ( int )( (MENU_FONT_SIZE) + (s->size)*(MENU_FONT_SIZE) * range ); + return ( int )( font->width + RCOLUMN_OFFSET + (LONGINPUT_SIZE) * font->width * range ); } int newSliderValueForX (int x, menuslider_s *s) { - float newValue; - int newValueInt; - int pos = x - (MENU_FONT_SIZE + RCOLUMN_OFFSET + s->generic.x) - s->generic.parent->x; - - newValue = ((float)pos)/((SLIDER_RANGE-1)*(MENU_FONT_SIZE)); - newValueInt = s->minvalue + newValue * (float)( s->maxvalue - s->minvalue ); - - return newValueInt; -} - -int newSliderValueForY (int y, menuslider_s *s) -{ - float newValue; - int newValueInt; - int pos = y - (MENU_FONT_SIZE + s->generic.y) - s->generic.parent->y; + float newValue; + int newValueInt; + FNT_font_t font; + int pos; + + font = FNT_AutoGet( CL_menuFont ); + + pos = x - (font->width + RCOLUMN_OFFSET + CHASELINK(s->generic.x)) - Menu_GetCtrX(*(s->generic.parent)); - newValue = ((float)pos)/((s->size-1)*(MENU_FONT_SIZE)); + newValue = ((float)pos)/((LONGINPUT_SIZE-1)*font->width); newValueInt = s->minvalue + newValue * (float)( s->maxvalue - s->minvalue ); return newValueInt; @@ -7155,233 +6390,184 @@ s->generic.callback( s ); } -void Menu_DragSlideItem (menuframework_s *menu, void *menuitem) +void Menu_DragSlideItem (void) { - // menucommon_s *item = ( menucommon_s * ) menuitem; // unused - menuslider_s *slider = ( menuslider_s * ) menuitem; + menuslider_s *slider = ( menuslider_s * ) cursor.menuitem; slider->curvalue = newSliderValueForX(cursor.x, slider); Slider_CheckSlide ( slider ); } - -void Menu_DragVertSlideItem (menuframework_s *menu, void *menuitem) -{ - // menucommon_s *item = ( menucommon_s * ) menuitem; // unused - menuslider_s *slider = ( menuslider_s * ) menuitem; - - slider->curvalue = newSliderValueForY(cursor.y, slider); - Slider_CheckSlide ( slider ); -} - -void Menu_ClickSlideItem (menuframework_s *menu, void *menuitem) +void Menu_ClickSlideItem (void) { int min, max; - menucommon_s *item = ( menucommon_s * ) menuitem; - menuslider_s *slider = ( menuslider_s * ) menuitem; + menuslider_s *slider = ( menuslider_s * ) cursor.menuitem; - min = menu->x + (item->x + Slider_CursorPositionX(slider) - 4); - max = menu->x + (item->x + Slider_CursorPositionX(slider) + 4); + min = Item_GetX (*slider) + Slider_CursorPositionX(slider) - 4; + max = Item_GetX (*slider) + Slider_CursorPositionX(slider) + 4; if (cursor.x < min) - Menu_SlideItem( menu, -1 ); + Menu_SlideItem (-1 ); if (cursor.x > max) - Menu_SlideItem( menu, 1 ); + Menu_SlideItem (1); } -void Menu_ClickVertSlideItem (menuframework_s *menu, void *menuitem) +void Menu_DragVertScrollItem (void) { - int min, max; - menucommon_s *item = ( menucommon_s * ) menuitem; - menuslider_s *slider = ( menuslider_s * ) menuitem; + float scrollbar_pos; + menuframework_s *menu = cursor.menuitem->generic.parent; + + scrollbar_pos = (float)cursor.y - menu->scroll_top; + menu->yscroll = scrollbar_pos*menu->maxscroll/(menu->scroll_range-menu->scrollbar_size); + + if (menu->yscroll < 0) + menu->yscroll = 0; + if (menu->yscroll > menu->maxscroll) + menu->yscroll = menu->maxscroll; +} + +void M_Draw_Cursor (void) +{ + Draw_Pic (cursor.x, cursor.y, "m_mouse_cursor"); +} - min = menu->y + (item->y + Slider_CursorPositionY(slider) - 4); - max = menu->y + (item->x + Slider_CursorPositionY(slider) + 4); - if (cursor.y < min) - Menu_SlideItem( menu, -1 ); - if (cursor.y > max) - Menu_SlideItem( menu, 1 ); +// draw all menus on screen +void M_Draw (void) +{ + if (cls.key_dest != key_menu) + return; + Draw_Fill (0, 0, viddef.width, viddef.height, RGBA(0, 0, 0, 1)); + Menuscreens_Animate (); + if (mstate.state == mstate_steady) + Menu_DrawHighlight (); + M_Draw_Cursor(); } +// send key presses to the appropriate menu +void M_Keydown (int key) +{ + const char *s; + + if (mstate.state != mstate_steady) + return; + + if (key == K_ESCAPE && mstate.active.num_layers > 0) + { + if ((s = layergroup_last(mstate.active).key (layergroup_last(mstate.active).screen, key))) + S_StartLocalSound (s); + return; + } + + if (cursor.menulayer == -1) + M_Main_Key (key); + else if (activelayer(cursor.menulayer).key != NULL && (s = activelayer(cursor.menulayer).key (activelayer(cursor.menulayer).screen, key))) + S_StartLocalSound (s); +} +// send mouse movement to the appropriate menu void M_Think_MouseCursor (void) { + int coordidx; + menuframework_s *m; char * sound = NULL; - menuframework_s *m = (menuframework_s *)cursor.menu; - - if (m_drawfunc == M_Main_Draw) //have to hack for main menu :p + + if (mstate.state != mstate_steady) + return; + + coordidx = activelayer_coordidx (cursor.x); + if (coordidx < 0) { - CheckMainMenuMouse(); + CheckMainMenuMouse (); return; } - if (m_drawfunc == M_Credits_MenuDraw) //have to hack for credits :p + + if (cursor.buttondown[MOUSEBUTTON2] && cursor.buttonclicks[MOUSEBUTTON2] == 2 && !cursor.buttonused[MOUSEBUTTON2]) { - if (cursor.buttonclicks[MOUSEBUTTON2]) - { - cursor.buttonused[MOUSEBUTTON2] = true; - cursor.buttonclicks[MOUSEBUTTON2] = 0; - cursor.buttonused[MOUSEBUTTON1] = true; - cursor.buttonclicks[MOUSEBUTTON1] = 0; - S_StartLocalSound( menu_out_sound ); - if (creditsBuffer) - FS_FreeFile (creditsBuffer); - M_PopMenu(); - return; - } + M_PopMenu (); + + // we've "used" the click sequence and will begin another + refreshCursorButton (MOUSEBUTTON2); + S_StartLocalSound (menu_out_sound); + return; } - + + if (coordidx == mstate.active.num_layers) + { + if (cursor.mouseaction) + cursor.menuitem = NULL; + return; + } + + if (coordidx != cursor.menulayer && cursor.mouseaction) + Cursor_SelectMenu(activelayer(coordidx).screen); + + Menu_AssignCursor (activelayer(coordidx).screen); + + if (cursor.menuitem == NULL) + return; + + m = cursor.menuitem->generic.parent; + if (!m) return; - - //Exit with double click 2nd mouse button - - if (cursor.menuitem) + + if (cursor.buttondown[MOUSEBUTTON1] && !cursor.suppress_drag) + { + if (cursor.click_menuitem != NULL) + Cursor_SelectItem (cursor.click_menuitem); + else if (cursor.menuitem != NULL) + cursor.click_menuitem = cursor.menuitem; + } + else + cursor.click_menuitem = NULL; + + if (!cursor.buttondown[MOUSEBUTTON1]) + cursor.suppress_drag = false; + else if (!cursor.menuitem) + cursor.suppress_drag = true; + + if (cursor.suppress_drag || cursor.menuitem == NULL) + return; + + //MOUSE1 + if (cursor.buttondown[MOUSEBUTTON1]) { - //MOUSE1 - if (cursor.buttondown[MOUSEBUTTON1]) + if (cursor.menuitem->generic.type == MTYPE_SLIDER) { - if (cursor.menuitemtype == MENUITEM_SLIDER) - { - Menu_DragSlideItem(m, cursor.menuitem); - } - else if (cursor.menuitemtype == MENUITEM_VERTSLIDER) - { - Menu_DragVertSlideItem(m, cursor.menuitem); - } - else if (!cursor.buttonused[MOUSEBUTTON1] && cursor.buttonclicks[MOUSEBUTTON1]) - { - if (cursor.menuitemtype == MENUITEM_ROTATE) - { - Menu_SlideItem( m, 1 ); - - sound = menu_move_sound; - cursor.buttonused[MOUSEBUTTON1] = true; - } - else - { - cursor.buttonused[MOUSEBUTTON1] = true; - Menu_MouseSelectItem( cursor.menuitem ); - sound = menu_move_sound; - } - } + Menu_DragSlideItem (); } - //MOUSE2 - if (cursor.buttondown[MOUSEBUTTON2] && cursor.buttonclicks[MOUSEBUTTON2]) + else if (cursor.menuitem->generic.type == MTYPE_VERT_SCROLLBAR) { - if (cursor.menuitemtype == MENUITEM_SLIDER && !cursor.buttonused[MOUSEBUTTON2]) - { - Menu_ClickSlideItem(m, cursor.menuitem); - sound = menu_move_sound; - cursor.buttonused[MOUSEBUTTON2] = true; - } - else if (cursor.menuitemtype == MENUITEM_VERTSLIDER && !cursor.buttonused[MOUSEBUTTON2]) - { - Menu_ClickVertSlideItem(m, cursor.menuitem); - sound = menu_move_sound; - cursor.buttonused[MOUSEBUTTON2] = true; - } - else if (!cursor.buttonused[MOUSEBUTTON2]) - { - if (cursor.menuitemtype == MENUITEM_ROTATE) - { - Menu_SlideItem( m, -1 ); - - sound = menu_move_sound; - cursor.buttonused[MOUSEBUTTON2] = true; - } - } + Menu_DragVertScrollItem (); } - - if(hover_time == 0) { + else if (!cursor.buttonused[MOUSEBUTTON1]) + { + if (cursor.menuitem->generic.type == MTYPE_SPINCONTROL) + Menu_SlideItem (1); + else + Menu_ActivateItem (cursor.menuitem); + + // we've "used" the click sequence and will begin another + refreshCursorButton (MOUSEBUTTON1); sound = menu_move_sound; - hover_time = 1; } - } - else if (!cursor.buttonused[MOUSEBUTTON2] && cursor.buttonclicks[MOUSEBUTTON2]==2 && cursor.buttondown[MOUSEBUTTON2]) + //MOUSE2 + else if (cursor.buttondown[MOUSEBUTTON2] && !cursor.buttonused[MOUSEBUTTON2]) { - if (m_drawfunc==PlayerConfig_MenuDraw) - PConfigAccept(); - - if (m_drawfunc==Options_MenuDraw) - { - Cvar_SetValue( "options_menu", 0 ); - refreshCursorLink(); - M_PopMenu(); - } + if (cursor.menuitem->generic.type == MTYPE_SPINCONTROL) + Menu_SlideItem (-1); + else if (cursor.menuitem->generic.type == MTYPE_SLIDER) + Menu_ClickSlideItem (); else - M_PopMenu(); - - sound = menu_out_sound; - cursor.buttonused[MOUSEBUTTON2] = true; - cursor.buttonclicks[MOUSEBUTTON2] = 0; - cursor.buttonused[MOUSEBUTTON1] = true; - cursor.buttonclicks[MOUSEBUTTON1] = 0; + return; + + // we've "used" the click sequence and will begin another + refreshCursorButton (MOUSEBUTTON2); + sound = menu_move_sound; } - else - hover_time = 0; - if ( sound ) S_StartLocalSound( sound ); -} - -void M_Draw_Cursor (void) -{ - int w,h; - - //get sizing vars - Draw_GetPicSize( &w, &h, "m_mouse_cursor" ); - Draw_StretchPic (cursor.x-w/2, cursor.y-h/2, w, h, "m_mouse_cursor"); -} - -/* -================= -M_Draw -================= -*/ -void M_Draw (void) -{ - if (cls.key_dest != key_menu) - return; - - // dim everything behind it down - Draw_FadeScreen (); - - // Knigthmare- added Psychospaz's mouse support - refreshCursorMenu(); - - m_drawfunc (); - - // delay playing the enter sound until after the - // menu has been drawn, to avoid delay while - // caching images - if (m_entersound) - { - S_StartLocalSound( menu_in_sound ); - m_entersound = false; - } - - // Knigthmare- added Psychospaz's mouse support - //menu cursor for mouse usage :) - M_Draw_Cursor(); - -} - - -/* -================= -M_Keydown -================= -*/ -void M_Keydown (int key) -{ - const char *s; - - if (m_keyfunc) - if ( ( s = m_keyfunc( key ) ) != 0 ) - S_StartLocalSound( ( char * ) s ); -} - - +} diff -Nru alien-arena-7.53+dfsg/source/client/qmenu.c alien-arena-7.66+dfsg/source/client/qmenu.c --- alien-arena-7.53+dfsg/source/client/qmenu.c 2011-12-02 17:30:58.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/qmenu.c 2013-08-19 03:26:16.000000000 +0000 @@ -1,5 +1,6 @@ /* Copyright (C) 1997-2001 Id Software, Inc. +Copyright (C) 2013 COR Entertainment, LLC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -28,130 +29,153 @@ #include "client.h" #include "qmenu.h" -static void Action_DoEnter( menuaction_s *a ); -static void Action_Draw( menuaction_s *a ); +static void ItemName_Draw (menuaction_s *a, FNT_font_t font, const float *color); +static void Action_Draw (menuaction_s *a, FNT_font_t font); static void Menu_DrawStatusBar( const char *string ); -// static void Menulist_DoEnter( menulist_s *l ); // unused -static void MenuList_Draw( menulist_s *l ); -static void Separator_Draw( menuseparator_s *s ); -static void Separator2_Draw( menuseparator_s *s ); -static void ColorTxt_Draw( menutxt_s *s ); +static void Menu_DrawToolTip (const menuitem_s *item); +static void Label_Draw (menutxt_s *s, FNT_font_t font, const float *color); static void Slider_DoSlide( menuslider_s *s, int dir ); -static void Slider_Draw( menuslider_s *s ); -static void VertSlider_Draw( menuslider_s *s ); -// static void SpinControl_DoEnter( menulist_s *s ); // unused -static void SpinControl_Draw( menulist_s *s ); +static void Slider_Draw (menuslider_s *s, FNT_font_t font); +static void SpinControl_Draw (menulist_s *s, FNT_font_t font); static void SpinControl_DoSlide( menulist_s *s, int dir ); +static void SubMenu_Draw (menuframework_s *s, FNT_font_t font); -int color_offset; +static void Menu_DrawHorizBar (const char *pathbase, float x, float y, float w, float base_size, float alpha); +static void Menu_DrawVertBar (const char *pathbase, float x, float y, float h, float base_size, float alpha); -//#define RCOLUMN_OFFSET 16 //for menu mouse -//#define LCOLUMN_OFFSET -16 +void Menu_DrawBorder (menuframework_s *menu, const char *title, const char *prefix); + +static menuvec2_t Menu_GetBorderSize (menuframework_s *s); + +// dark color = same blue as icons, light color = white +const float dark_color[4] = {0, 1, 200.0f/255.0f, 1}; +const float light_color[4] = {1, 1, 1, 1}; +const float highlight_color[4] = {1, 1, 1, 0.95}; #define VID_WIDTH viddef.width #define VID_HEIGHT viddef.height -void Action_DoEnter( menuaction_s *a ) +int Menu_PredictSize (const char *str) { - if ( a->generic.callback ) - a->generic.callback( a ); -} - -void Action_Draw( menuaction_s *a ) -{ - if ( a->generic.flags & QMF_LEFT_JUSTIFY ) - { - if ( !(a->generic.flags & QMF_GRAYED) ) - Menu_DrawStringDark( a->generic.x + a->generic.parent->x + LCOLUMN_OFFSET, a->generic.y + a->generic.parent->y, a->generic.name ); + FNT_font_t font; + + font = FNT_AutoGet( CL_menuFont ); + + return FNT_PredictSize (font, str, true); +} + +void ItemName_Draw (menuitem_s *a, FNT_font_t font, const float *color) +{ + int text_x, text_y; + unsigned int align, cmode; + + if (a->generic.namedraw != NULL) + { + a->generic.namedraw (a, font); + return; + } + + if (a->generic.name == NULL) + return; + + text_x = Item_GetX (*a); + text_y = Item_GetY (*a) + MenuText_UpperMargin (a, font->size); + + if ((a->generic.flags & QMF_BUTTON)) + { + int border_x, width; + + width = CHASELINK(a->generic.lsize).x+CHASELINK(a->generic.rsize).x; + + if (!a->generic.parent->horizontal) + { + align = FNT_ALIGN_CENTER; + text_x = a->generic.parent->x + width/2; + border_x = a->generic.parent->x; + } else - Menu_DrawString( a->generic.x + a->generic.parent->x + LCOLUMN_OFFSET, a->generic.y + a->generic.parent->y, a->generic.name ); + { + align = FNT_ALIGN_RIGHT; + border_x = text_x - width + RCOLUMN_OFFSET/2; + } + + // HACK + if (color == dark_color) + Menu_DrawHorizBar ("menu/button_border", border_x, Item_GetY(*a)+2, width, font->height*2-4, a->generic.highlight_alpha*a->generic.highlight_alpha); + } + else if ( a->generic.flags & QMF_RIGHT_COLUMN ) + { + align = FNT_ALIGN_LEFT; } else { - if ( !(a->generic.flags & QMF_GRAYED) ) - Menu_DrawStringR2LDark( a->generic.x + a->generic.parent->x + LCOLUMN_OFFSET, a->generic.y + a->generic.parent->y, a->generic.name ); + if (a->generic.parent->horizontal) + { + align = FNT_ALIGN_RIGHT; + text_x += LCOLUMN_OFFSET; + } else - Menu_DrawStringR2L( a->generic.x + a->generic.parent->x + LCOLUMN_OFFSET, a->generic.y + a->generic.parent->y, a->generic.name ); + { + align = FNT_ALIGN_LEFT; + text_x = a->generic.parent->x; + } } - if ( a->generic.ownerdraw ) - a->generic.ownerdraw( a ); -} -void ColorAction_Draw( menuaction_s *a ) -{ - if ( a->generic.flags & QMF_GRAYED ) - Menu_DrawStringDark( a->generic.x + a->generic.parent->x + LCOLUMN_OFFSET, a->generic.y + a->generic.parent->y, a->generic.name ); + + if ( a->generic.flags & QMF_STRIP_COLOR || color == highlight_color ) + cmode = FNT_CMODE_TWO; else - Menu_DrawColorString( a->generic.x + a->generic.parent->x + LCOLUMN_OFFSET, a->generic.y + a->generic.parent->y, a->generic.name ); - - if ( a->generic.ownerdraw ) - a->generic.ownerdraw( a ); + cmode = FNT_CMODE_QUAKE_SRS; + + Menu_DrawString ( + text_x, text_y, + a->generic.name, cmode, align, color + ); } -qboolean Field_DoEnter( menufield_s *f ) + +void Action_Draw (menuaction_s *a, FNT_font_t font) { - if ( f->generic.callback ) - { - f->generic.callback( f ); - return true; - } - return false; + if ( a->generic.itemdraw ) + a->generic.itemdraw( a, font ); } -void Field_Draw( menufield_s *f ) +void Field_Draw (menufield_s *f, FNT_font_t font) { - int i; char tempbuffer[128]=""; - int charscale; - - charscale = (float)(viddef.height)*16/600; - - color_offset = 0; - - if ( f->generic.name ) - Menu_DrawStringR2LDark( f->generic.x + f->generic.parent->x + LCOLUMN_OFFSET, f->generic.y + f->generic.parent->y, f->generic.name ); - - strncpy( tempbuffer, f->buffer + f->visible_offset, f->visible_length); - - Draw_ScaledChar( f->generic.x + f->generic.parent->x + 8, f->generic.y + f->generic.parent->y - 4, 18, charscale, true ); - Draw_ScaledChar( f->generic.x + f->generic.parent->x + 8, f->generic.y + f->generic.parent->y + 4, 24, charscale, true ); - - Draw_ScaledChar( f->generic.x + f->generic.parent->x + 16 + f->visible_length * charscale, f->generic.y + f->generic.parent->y - 4, 20, charscale, true ); - Draw_ScaledChar( f->generic.x + f->generic.parent->x + 16 + f->visible_length * charscale, f->generic.y + f->generic.parent->y + 4, 26, charscale, true ); - - for ( i = 0; i < f->visible_length; i++ ) + int x, y; + + y = Item_GetY (*f) + MenuText_UpperMargin (f, font->size); + x = Item_GetX (*f) + RCOLUMN_OFFSET; + + strncpy( tempbuffer, f->buffer, f->generic.visible_length); + + Menu_DrawHorizBar ( + "menu/slide_border", (float)x, (float)y-2.0, + (float)(f->generic.visible_length*font->size)+4.0, (float)(font->size)+4.0, + f->generic.highlight_alpha*f->generic.highlight_alpha + ); + + menu_box.x = x+4; + menu_box.y = y; + menu_box.height = 0; + menu_box.width = f->generic.visible_length*font->width; + FNT_BoundedPrint (font, f->buffer, FNT_CMODE_QUAKE_SRS, FNT_ALIGN_LEFT, &menu_box, light_color); + + if ( cursor.menuitem == f ) { - Draw_ScaledChar( f->generic.x + f->generic.parent->x + 16 + i * charscale, f->generic.y + f->generic.parent->y - 4, 19, charscale, true ); - Draw_ScaledChar( f->generic.x + f->generic.parent->x + 16 + i * charscale, f->generic.y + f->generic.parent->y + 4, 25, charscale, true); - } - - Menu_DrawColorString( f->generic.x + f->generic.parent->x + 1*charscale, f->generic.y + f->generic.parent->y, tempbuffer ); - - if ( Menu_ItemAtCursor( f->generic.parent ) == f ) - { - int offset; - - if ( f->visible_offset ) - offset = f->visible_length; - else - offset = f->cursor - color_offset; - - if ( ( ( int ) ( Sys_Milliseconds() / 250 ) ) & 1 ) - { - Draw_ScaledChar( f->generic.x + f->generic.parent->x + offset * charscale + charscale, - f->generic.y + f->generic.parent->y, - 11, charscale, true ); - } - else - { - Draw_ScaledChar( f->generic.x + f->generic.parent->x + offset * charscale + charscale, - f->generic.y + f->generic.parent->y, - ' ', charscale, true ); - } + if ( ( ( int ) ( Sys_Milliseconds() / 300 ) ) & 1 ) + Draw_StretchPic (menu_box.x + menu_box.width - font->size / 8, menu_box.y-1, font->size, font->size+4, "menu/field_cursor"); } } -qboolean Field_Key( menufield_s *f, int key ) +qboolean Field_Key (int key) { + menufield_s *f; extern int keydown[]; + + f = cursor.menuitem; + + if (f == NULL || f->generic.type != MTYPE_FIELD || key > 127) + return false; switch ( key ) { @@ -199,16 +223,6 @@ break; } - if ( key > 127 ) - { - switch ( key ) - { - case K_DEL: - default: - return false; - } - } - /* ** support pasting from the clipboard */ @@ -223,9 +237,6 @@ strncpy( f->buffer, cbd, f->length - 1 ); f->cursor = strlen( f->buffer ); - f->visible_offset = f->cursor - f->visible_length; - if ( f->visible_offset < 0 ) - f->visible_offset = 0; free( cbd ); } @@ -241,11 +252,6 @@ { memmove( &f->buffer[f->cursor-1], &f->buffer[f->cursor], strlen( &f->buffer[f->cursor] ) + 1 ); f->cursor--; - - if ( f->visible_offset ) - { - f->visible_offset--; - } } break; @@ -265,14 +271,16 @@ if ( !isdigit( key ) && ( f->generic.flags & QMF_NUMBERSONLY ) ) return false; - if ( f->cursor < f->length ) { - f->buffer[f->cursor++] = key; - f->buffer[f->cursor] = 0; - - if ( f->cursor > f->visible_length ) + int maxlength = f->length; + if (f->length > sizeof(f->buffer)-2 || f->length == 0) { - f->visible_offset++; + maxlength = sizeof(f->buffer)-2; + } + if ( f->cursor < maxlength ) + { + f->buffer[f->cursor++] = key; + f->buffer[f->cursor] = 0; } } } @@ -280,574 +288,1146 @@ return true; } -void Menu_AddItem( menuframework_s *menu, void *item ) +void _Menu_AddItem( menuframework_s *menu, menucommon_s *item ) { - if ( menu->nitems == 0 ) - menu->nslots = 0; - if ( menu->nitems < MAXMENUITEMS ) { menu->items[menu->nitems] = item; ( ( menucommon_s * ) menu->items[menu->nitems] )->parent = menu; menu->nitems++; } +} - menu->nslots = Menu_TallySlots( menu ); +// Returns true or false depending on whether the given item is selectable. +static inline qboolean Menu_ItemSelectable (menuitem_s *item) +{ + if (item->generic.type == MTYPE_NOT_INTERACTIVE) + return false; + if (item->generic.type == MTYPE_SUBMENU) + return ((menuframework_s *)item)->enable_highlight; + return true; } -/* -** Menu_AdjustCursor -** -** This function takes the given menu, the direction, and attempts -** to adjust the menu's cursor so that it's at the next available -** slot. -*/ -void Menu_AdjustCursor( menuframework_s *m, int dir ) +void Cursor_SelectItem (menuitem_s *item) { - menucommon_s *citem; + cursor.menuitem = item; + if (item == NULL) + { + cursor.menulayer = -1; + return; + } + cursor.menulayer = Cursor_GetLayer (); +} - /* - ** see if it's in a valid spot - */ - if ( m->cursor >= 0 && m->cursor < m->nitems ) +// Returns the top level node of the menu tree that contains the item +menuframework_s *Menu_GetItemTree (menuitem_s *item) +{ + if (item->generic.parent == NULL) + return (menuframework_s *)item; + return Menu_GetItemTree ((menuitem_s *)item->generic.parent); +} + +// Returns true if the current cursor item is within the specified menu tree. +qboolean Menu_ContainsCursorItem (menuframework_s *menu) +{ + menuitem_s *item; + + item = cursor.menuitem; + + if (item != NULL) { - if ( ( citem = Menu_ItemAtCursor( m ) ) != 0 ) + menuframework_s *menu2 = item->generic.parent; + while (menu2 != NULL) { - if ( citem->type != MTYPE_SEPARATOR && citem->type != MTYPE_COLORTXT ) - return; + if (menu2 == menu) + return true; + menu2 = menu2->generic.parent; } } + + return false; +} - /* - ** it's not in a valid spot, so crawl in the direction indicated until we - ** find a valid spot - */ - if ( dir == 1 ) +// Attempt to select the first reasonable menu item in the specified menu tree +// as the cursor item. Returns false if unsuccessful (if there are no +// selectable menu items within the menu or any of its submenus.) Does nothing +// if the cursor item is already within the menu or one of its submenus. +qboolean Cursor_SelectMenu (menuframework_s *menu) +{ + int i; + menuitem_s *item; + + if (Menu_ContainsCursorItem (menu)) + return true; + + refreshCursorLink (); + + if (menu->default_cursor_selection != NULL) { - while ( 1 ) + if (Menu_ItemSelectable (menu->default_cursor_selection)) + { + Cursor_SelectItem (menu->default_cursor_selection); + return true; + } + if (menu->default_cursor_selection->generic.type == MTYPE_SUBMENU) { - citem = Menu_ItemAtCursor( m ); - if ( citem ) - if ( citem->type != MTYPE_SEPARATOR && citem->type != MTYPE_COLORTXT ) - break; - m->cursor += dir; - if ( m->cursor >= m->nitems ) - m->cursor = 0; + if (Cursor_SelectMenu ((menuframework_s *)menu->default_cursor_selection)) + return true; } } - else + + for (i = 0; i < menu->nitems; i++) { - while ( 1 ) + item = menu->items[i]; + if (Menu_ItemSelectable (item)) { - citem = Menu_ItemAtCursor( m ); - if ( citem ) - if ( citem->type != MTYPE_SEPARATOR && citem->type != MTYPE_COLORTXT) - break; - m->cursor += dir; - if ( m->cursor < 0 ) - m->cursor = m->nitems - 1; + Cursor_SelectItem (item); + return true; + } + if (item->generic.type == MTYPE_SUBMENU) + { + menuframework_s *sm = (menuframework_s *)item; + if (sm->navagable && Cursor_SelectMenu (sm)) + return true; } } + + return false; } -void Menu_Center( menuframework_s *menu ) +// Find the index of the item within its parent menu. +int Menu_ItemIndex (menuitem_s *item) { - int height; + int ret; + menuframework_s *menu; + + menu = item->generic.parent; + + for (ret = 0; ret < menu->nitems; ret++) + { + if (menu->items[ret] == item) + return ret; + } + + Com_Error (ERR_FATAL, "CAN'T HAPPEN: Item is not in its own parent menu!"); - height = ( ( menucommon_s * ) menu->items[menu->nitems-1])->y; - height += 10; + return 0; +} - menu->y = ( VID_HEIGHT - height ) / 2; +// returns true if the item is a submenu that the cursor can advance "into." +static qboolean CanAdvanceInto (menuitem_s *item, qboolean allow_capture) +{ + if (item->generic.type != MTYPE_SUBMENU) + return false; + + // if the submenu will "capture" the cursor, only advance into it if the + // tab key has been pressed instead an arrow key. + if (!allow_capture && (item->generic.flags & QMF_SUBMENU_CAPTURE)) + return false; + + // selectable submenus aren't treated like submenus + if (Menu_ItemSelectable (item)) + return false; + + return true; } -void Menu_Draw( menuframework_s *menu ) +// returns true if the cursor can advance out of the submenu +static qboolean CanAdvanceOutOf (menuframework_s *submenu, qboolean allow_capture) { - int i; - menucommon_s *item; - menuslider_s *slider; - int charscale; + // if the submenu has "captured" the cursor, only advance out of it if the + // tab key has been pressed instead of an arrow key. + if (!allow_capture && (submenu->generic.flags & QMF_SUBMENU_CAPTURE)) + return false; + + return true; +} + +// Selects either the next or the previous menu item. +void Menu_AdvanceCursor (int dir, qboolean allow_capture) +{ + int item_index; + menuframework_s *menu; + menuitem_s *item, *newitem; + + item = cursor.menuitem; + + if (item == NULL) + return; + + menu = item->generic.parent; + + if (item->generic.type == MTYPE_VERT_SCROLLBAR) + { + menu->yscroll += 2*dir; + if (menu->yscroll < 0) + menu->yscroll = 0; + if (menu->yscroll > menu->maxscroll) + menu->yscroll = menu->maxscroll; + return; + } + + item_index = Menu_ItemIndex (item); + + do + { + item_index += dir; + while (item_index < 0 || item_index >= menu->nitems) + { + menuframework_s *parent = menu->generic.parent; + if (parent == NULL || !CanAdvanceOutOf (menu, allow_capture)) + { + item_index += menu->nitems; + item_index %= menu->nitems; + } + else + { + item_index = Menu_ItemIndex ((menuitem_s *)menu) + dir; + menu = parent; + } + } + newitem = menu->items[item_index]; + while (CanAdvanceInto (newitem, allow_capture)) + { + menu = (menuframework_s *)newitem; + if (dir == 1) + item_index = 0; + else + item_index = menu->nitems-1; + newitem = menu->items[item_index]; + } + } while (!Menu_ItemSelectable (newitem)); + + Cursor_SelectItem (newitem); +} + +void Menu_Center( menuframework_s *menu ) +{ + menu->y = ( (int)VID_HEIGHT - Menu_TrueHeight(*menu) ) / 2; +} - charscale = (float)(viddef.height)*16/600; +int SpinControl_MaxLines (menulist_s *s) +{ + int i; + + for (i = 0; s->itemnames[i]; i++) + { + if (strchr( s->itemnames[i], '\n' )) + return 2; + } + + return 1; +} - /* - ** draw contents - */ - for ( i = 0; i < menu->nitems; i++ ) +int SpinControl_MaxWidth (menulist_s *s) +{ + char buffer[100]; + int i; + int ret = 0; + + for (i = 0; s->itemnames[i]; i++) { - switch ( ( ( menucommon_s * ) menu->items[i] )->type ) + if ( !strchr( s->itemnames[i], '\n' ) ) { - case MTYPE_FIELD: - Field_Draw( ( menufield_s * ) menu->items[i] ); - break; + int npix = Menu_PredictSize (s->itemnames[i]); + if (npix > ret) + ret = npix; + } + else + { + int npix; + strcpy( buffer, s->itemnames[i] ); + *strchr( buffer, '\n' ) = 0; + npix = Menu_PredictSize (buffer); + if (npix > ret) + ret = npix; + strcpy( buffer, strchr( s->itemnames[i], '\n' ) + 1 ); + npix = Menu_PredictSize (buffer); + if (npix > ret) + ret = npix; + } + } + + return ret; +} + +static inline menuvec2_t Menu_Item_LeftSize (menucommon_s *self, FNT_font_t font) +{ + menuvec2_t ret; + ret.x = ret.y = 0; + + if (self->type == MTYPE_SUBMENU) + { + ret = Menu_GetBorderSize ((menuframework_s *)self); + if (self->flags & QMF_SNUG_LEFT) + ret.x += CHASELINK(self->parent->lwidth); + return ret; + } + + if (self->name && !(self->flags & QMF_RIGHT_COLUMN)) + { + ret.x = Menu_PredictSize (self->name); + if (self->type != MTYPE_TEXT) + ret.x -= LCOLUMN_OFFSET; + } + + if ((self->flags & QMF_BUTTON)) + { + ret.y = 2*font->height; + if (ret.x < CHASELINK(self->parent->lwidth) && !self->parent->horizontal) + ret.x = CHASELINK(self->parent->lwidth); + } + else + { + ret.y = font->height; + } + + return ret; +} + +static inline menuvec2_t Menu_Item_RightSize (menucommon_s *self, FNT_font_t font) +{ + menuvec2_t ret; + ret.x = ret.y = 0; + + ret.y = font->height; + + if (self->name && (self->flags & QMF_RIGHT_COLUMN)) + { + ret.x = Menu_PredictSize (self->name); + if (self->type != MTYPE_TEXT) + ret.x += RCOLUMN_OFFSET; + } + + if (self->visible_length != 0) + ret.x += font->width * self->visible_length + RCOLUMN_OFFSET; + + switch ( self->type ) + { case MTYPE_SLIDER: - Slider_Draw( ( menuslider_s * ) menu->items[i] ); + ret.x = font->width * LONGINPUT_SIZE + RCOLUMN_OFFSET; break; - case MTYPE_LIST: - MenuList_Draw( ( menulist_s * ) menu->items[i] ); + case MTYPE_FIELD: + ret.y += 4; break; case MTYPE_SPINCONTROL: - SpinControl_Draw( ( menulist_s * ) menu->items[i] ); + ret.x += SpinControl_MaxWidth ((menulist_s *)self); + ret.y = SpinControl_MaxLines ((menulist_s *)self)*font->height; + if (ret.y > font->height) + ret.y += font->height-font->size; break; - case MTYPE_ACTION: - Action_Draw( ( menuaction_s * ) menu->items[i] ); - break; - case MTYPE_SEPARATOR: - Separator_Draw( ( menuseparator_s * ) menu->items[i] ); - break; - case MTYPE_SEPARATOR2: - Separator2_Draw( ( menuseparator_s * ) menu->items[i] ); - break; - case MTYPE_VERTSLIDER: - VertSlider_Draw( ( menuslider_s * ) menu->items[i] ); - break; - case MTYPE_COLORTXT: - ColorTxt_Draw ( ( menutxt_s * ) menu->items[i] ); + case MTYPE_SUBMENU: + ret.y = Menu_TrueHeight(*(menuframework_s *)self); + ret.x = CHASELINK(((menuframework_s *)self)->lwidth) + + CHASELINK(((menuframework_s *)self)->rwidth); + if (self->flags & QMF_SNUG_LEFT) + ret.x -= CHASELINK(self->parent->lwidth); + { + menuvec2_t border = Menu_GetBorderSize ((menuframework_s*)self); + if (ret.x < border.x + border.x/2) + ret.x = border.x + border.x/2; + ret.x += border.x; + ret.y += border.y; + } break; - case MTYPE_COLORACTION: - ColorAction_Draw( ( menuaction_s * ) menu->items[i] ); + case MTYPE_ACTION: + case MTYPE_TEXT: break; - } } + + if ((self->flags & QMF_BUTTON) && ret.x < CHASELINK(self->parent->rwidth) && !self->parent->horizontal) + ret.x = CHASELINK(self->parent->rwidth); + + return ret; +} - // Knightmare- added Psychspaz's mouse support - /* - ** now check mouseovers - psychospaz - */ - cursor.menu = menu; - - if (cursor.mouseaction) - { - menucommon_s *lastitem = cursor.menuitem; - refreshCursorLink(); - - for ( i = menu->nitems; i >= 0 ; i-- ) - { - int type; - int len; - int min[2], max[2]; - - item = ((menucommon_s * )menu->items[i]); - - if (!item || item->type == MTYPE_SEPARATOR || item->type == MTYPE_COLORTXT) - continue; +/* +============= +Menu_AutoArrange - max[0] = min[0] = menu->x + (item->x + RCOLUMN_OFFSET); //+ 2 chars for space + cursor - max[1] = min[1] = menu->y + (item->y); - max[1] += (charscale); +This section of code is responsible for taking a menu tree and arranging all +the submenus and menu items on screen, in such a way that they fit the +constraints imposed on them. I'm afraid this is complicated enough to justify +a small essay. + +The reason this is so complicated is because of those constraints. Menu width, +menu item x, and menu item y are all "linkable" attributes, meaning they can +be linked together so they always have the same value. If updated in one +place, the updates show up everywhere else. Here's the problem: these linkable +attributes depend on each other, sometimes in complex ways. + +For example, take a table with two rows: +ITEMA ITEMB ITEMC +ITEMD ITEME ITEMF +ITEMA and ITEMD's x-coordinates are linked, ITEMB and ITEME's x-coordinates +are linked, etc. + +Now the easy way to do this would be to lay out the entirety of row 1, then +the entirety of row 2. But suppose you have a case where ITEMA and ITEME are +narrow, while ITEMD and ITEMB are wide? Here's what the table looks like +before it's been laid out at all: +[ITEMA][=ITEMB=][ITEMC] +[=ITEMD=][ITEME][ITEMF] + +Laying out the first row goes well. The required amount of space is inserted +between ITEMA and ITEMB, and because ITEMB and ITEME are linked, that change +is propagated to the second row automatically. Likewise for the space between +ITEMB and ITEMC, and the propagation from ITEMC to ITEMF. +[ITEMA]---[=ITEMB=]---[ITEMC] +[=ITEMD=]-[ITEME]-----[ITEMF] + +Then the second row is laid out. Since ITEMD is wider, the space between it +and ITEME isn't enough, so ITEME has to be moved for the space to be +sufficient. Because ITEMF is still far enough away from ITEME, it doesn't get +moved, and as a result, ITEMC doesn't get moved either! ITEMC's position is no +longer valid, so the first row has to be laid out again. +[ITEMA]-----[=ITEMB=]-[ITEMC] +[=ITEMD=]---[ITEME]---[ITEMF] + +To insure a proper layout, Menu_Arrange is simply called over and over again +until no more movement is detected. Actually, the number of calls is limited +at 5 to prevent things from getting too out of hand. +============= +*/ - switch ( item->type ) - { - case MTYPE_ACTION: - case MTYPE_COLORACTION: - { - len = strlen(item->name); - - if (item->flags & QMF_LEFT_JUSTIFY || item->type == MTYPE_COLORACTION) - { - min[0] += (LCOLUMN_OFFSET*2); - max[0] = min[0] + (len*charscale); - } - else - { - min[0] -= (len*charscale + charscale*3); - } - - type = MENUITEM_ACTION; - } - break; - case MTYPE_SLIDER: - { - min[0] -= (16); - max[0] += ((SLIDER_RANGE + 4)*MENU_FONT_SIZE); - type = MENUITEM_SLIDER; - } - break; - case MTYPE_VERTSLIDER: - { - slider = ((menuslider_s * )menu->items[i]); - min[0] -= (2*charscale); - max[0] += (2*charscale); - min[1] -= (charscale); - max[1] += ((slider->size)*MENU_FONT_SIZE - charscale); - type = MENUITEM_VERTSLIDER; - } - break; - case MTYPE_LIST: - case MTYPE_SPINCONTROL: - { - int len; - menulist_s *spin = menu->items[i]; - - - if (item->name) - { - len = strlen(item->name); - min[0] -= (len*charscale - LCOLUMN_OFFSET*2); - } - - len = strlen(spin->itemnames[spin->curvalue]); - max[0] += (len*charscale); - - type = MENUITEM_ROTATE; - } - break; - case MTYPE_FIELD: - { - menufield_s *text = menu->items[i]; - - len = text->visible_length + 2; - - max[0] += (len*charscale); - type = MENUITEM_TEXT; - } - break; - default: - continue; - } +static int changes = 0; +#define MENU_INCREASELINK(l,v) \ +{\ + if ((l).status == linkstatus_link) \ + {\ + if (*((l).ptr) < v) \ + { \ + changes++; \ + *((l).ptr) = v; \ + } \ + else \ + v = *((l).ptr); \ + }\ + else if (reset || (l).val < v) \ + {\ + changes++;\ + (l).val = v; \ + }\ + else \ + {\ + v = (l).val;\ + }\ +} - if (cursor.x>=min[0] && - cursor.x<=max[0] && - cursor.y>=min[1] && - cursor.y<=max[1]) +void Menu_Arrange (menuframework_s *menu, qboolean reset, FNT_font_t font) +{ + int i, x, y; + int itemheight, horiz_height; + menucommon_s *item; + + // TODO: move this into its own function? + if (!menu->initialized) + { + menu->initialized = true; + menu->vertical_scrollbar.parent = menu; + menu->vertical_scrollbar.type = MTYPE_VERT_SCROLLBAR; + } + + x = y = 0; + + horiz_height = 0; + + if (reset) + { + RESETLINK (menu->rwidth, 0); + RESETLINK (menu->lwidth, 0); + RESETLINK (menu->height, 0); + } + + for (i = 0; i < menu->nitems; i++ ) + { + int lwidth; + int rwidth; + + item = ((menucommon_s * )menu->items[i]); + + if (item->type == MTYPE_SUBMENU) + { + menuvec2_t border; + int ntries; + int old_nchanges = changes; + + border = Menu_GetBorderSize ((menuframework_s*)item); + + y += border.y; + MENU_INCREASELINK (item->y, y); + y -= border.y; + + Menu_Arrange ((menuframework_s *)item, reset, font); + + ntries = 0; + // attempt to keep repetition localized where possible + while (old_nchanges != changes && ++ntries < 3) { - //new item - if (lastitem!=item) - { - int j; - - for (j=0;jcursor = i; - - break; + old_nchanges = changes; + Menu_Arrange ((menuframework_s *)item, false, font); } } - } - - cursor.mouseaction = false; - // end Knightmare - - item = Menu_ItemAtCursor( menu ); - - if ( item && item->cursordraw ) - { - item->cursordraw( item ); - } - else if ( menu->cursordraw ) - { - menu->cursordraw( menu ); - } - else if ( item && (item->type == MTYPE_ACTION || item->type == MTYPE_COLORACTION) ) //change to a "highlite" - { - if ( item->flags & QMF_LEFT_JUSTIFY || item->type == MTYPE_COLORACTION) - { - if(item->name && item->type == MTYPE_COLORACTION) - Menu_DrawFilteredString(menu->x + item->x - 24, menu->y + item->y, item->name); - else if(item->name) - Menu_DrawStringDark(menu->x + item->x - 24, menu->y + item->y, item->name); - } else + MENU_INCREASELINK (item->y, y); + + if (item->namesizecallback) + CHASELINK(item->lsize) = item->namesizecallback (item, font); + else + CHASELINK(item->lsize) = Menu_Item_LeftSize (item, font); + if (item->itemsizecallback) + CHASELINK(item->rsize) = item->itemsizecallback (item, font); + else + CHASELINK(item->rsize) = Menu_Item_RightSize (item, font); + + itemheight = Item_GetHeight(*((menuitem_s *)item)); + lwidth = CHASELINK(item->lsize).x; + rwidth = CHASELINK(item->rsize).x; + + if (menu->horizontal) { - if(item->name) - Menu_DrawStringR2L(menu->x + item->x - 24, menu->y + item->y, item->name); + if (horiz_height < itemheight) + horiz_height = itemheight; } - } - else if ( item && item->type != MTYPE_FIELD ) //change to a "highlite" - { - if ( item->flags & QMF_LEFT_JUSTIFY ) + else + y += itemheight; + + if (menu->horizontal) { - if(item->name) - Menu_DrawStringDark(menu->x + item->x - 24, menu->y + item->y, item->name); + if (i == 0) + MENU_INCREASELINK (menu->lwidth, lwidth) + else + x += lwidth + RCOLUMN_OFFSET - LCOLUMN_OFFSET; + MENU_INCREASELINK (item->x, x) + x += rwidth; } else { - if(item->name) - Menu_DrawStringR2L(menu->x + item->x - 24, menu->y + item->y, item->name); + MENU_INCREASELINK (menu->lwidth, lwidth); + MENU_INCREASELINK (menu->rwidth, rwidth); } } - - if ( item ) + + if (menu->horizontal) { - if ( item->statusbarfunc ) - item->statusbarfunc( ( void * ) item ); - else if ( item->statusbar ) - Menu_DrawStatusBar( item->statusbar ); - else - Menu_DrawStatusBar( menu->statusbar ); - + MENU_INCREASELINK (menu->rwidth, x); + MENU_INCREASELINK (menu->height, horiz_height); } else - { - Menu_DrawStatusBar( menu->statusbar ); + MENU_INCREASELINK (menu->height, y); + + if (!menu->horizontal && menu->maxlines != 0 && menu->maxlines < menu->nitems) + menu->maxheight = CHASELINK (((menucommon_s*)menu->items[menu->maxlines])->y); + + menu->maxscroll = CHASELINK(menu->height) - menu->maxheight; + menu->scroll_range = (float)menu->maxheight - font->size/2.0; + menu->scrollbar_size = menu->scroll_range - menu->maxscroll; + if (menu->scrollbar_size < font->size) + menu->scrollbar_size = font->size; + menu->scroll_top = (float)menu->y+font->size/4.0; +} + +void Menu_AutoArrange (menuframework_s *menu) +{ + int ntries; + FNT_font_t font; + + font = FNT_AutoGet( CL_menuFont ); + + Menu_Arrange (menu, true, font); + ntries = 0; + while (changes && ++ntries < 5) + { + changes = 0; + Menu_Arrange (menu, false, font); } } -void Menu_DrawStatusBar( const char *string ) -{ - int charscale; - - charscale = (float)(viddef.height)*16/600; +static inline qboolean Item_ScrollVisible (menuitem_s *item) +{ + menuframework_s *menu = item->generic.parent; + // scrolling disabled on this item + if (menu->maxheight == 0) + return true; + if (CHASELINK(item->generic.y)-menu->yscroll < 0) + return false; + if (CHASELINK(item->generic.y)-menu->yscroll + Item_GetHeight(*item) > menu->maxheight) + return false; + return true; +} - if ( string ) +void Item_UpdateHighlightAlpha (menuitem_s *item) +{ + if (cursor.menuitem == item) { - int l = strlen( string ); - // int maxrow = VID_HEIGHT / charscale; // unused - int maxcol = VID_WIDTH / charscale; - int col = maxcol / 2 - l / 2; - - Draw_Fill( 0, VID_HEIGHT-charscale, VID_WIDTH, charscale, 4 ); - Menu_DrawString( col*charscale, VID_HEIGHT - charscale, string ); + item->generic.highlight_alpha += cls.frametime*0.5f; + if (item->generic.highlight_alpha > 1.0) + item->generic.highlight_alpha = 1.0; } else { - Draw_Fill( 0, VID_HEIGHT-charscale, VID_WIDTH, charscale, 0 ); + item->generic.highlight_alpha -= cls.frametime*0.5f; + if (item->generic.highlight_alpha < 0.9) + item->generic.highlight_alpha = 0.9; } } -void Menu_DrawString( int x, int y, const char *string ) +void Menu_Draw (menuframework_s *menu, FNT_font_t font) { - unsigned i; - int charscale; - - charscale = (float)(viddef.height)*16/600; - - for ( i = 0; i < strlen( string ); i++ ) + int i; + menuitem_s *item; + + if (menu->bordertexture != NULL) + Menu_DrawBorder (menu, menu->bordertitle, menu->bordertexture); + + // may get covered up later by a higher-priority status bar + if (menu->num_apply_pending != 0) + Menu_DrawStatusBar ("Some changes must be applied!\n"); + else + Menu_DrawStatusBar (menu->statusbar); + + Item_UpdateHighlightAlpha ((menuitem_s *)&menu->vertical_scrollbar); + + /* + ** draw contents + */ + for ( i = 0; i < menu->nitems; i++ ) { - Draw_ScaledChar( ( x + i*charscale ), y, string[i], charscale, true ); - } -} -vec4_t Color_Table[8] = -{ - {0.0, 0.0, 0.0, 1.0}, - {1.0, 0.0, 0.0, 1.0}, - {0.0, 1.0, 0.0, 1.0}, - {1.0, 1.0, 0.0, 1.0}, - {0.0, 0.0, 1.0, 1.0}, - {0.0, 1.0, 1.0, 1.0}, - {1.0, 0.0, 1.0, 1.0}, - {1.0, 1.0, 1.0, 1.0}, -}; -void Menu_DrawColorString ( int x, int y, const char *str ) -{ - int num; - vec4_t scolor; - int charscale; - - charscale = (float)(viddef.height)*16/600; - - scolor[0] = 0; - scolor[1] = 1; - scolor[2] = 0; - scolor[3] = 1; - - while (*str) { - if ( Q_IsColorString( str ) ) { - VectorCopy ( Color_Table[ColorIndex(str[1])], scolor ); - str += 2; - color_offset +=2; + item = ((menuitem_s * )menu->items[i]); + + if (!Item_ScrollVisible (item)) continue; + + Item_UpdateHighlightAlpha (item); + + // TODO: cleaner method + if (item->generic.type == MTYPE_NOT_INTERACTIVE) + { + if (item->generic.itemdraw != NULL) + item->generic.itemdraw (item, font); + + if (item->generic.namedraw != NULL) + item->generic.namedraw (item, font); + else + Label_Draw ((menutxt_s *) menu->items[i], font, dark_color); } - - Draw_ScaledColorChar (x, y, *str, scolor, charscale, true); //this is only ever used for names. - - num = *str++; - num &= 255; - - if ( (num&127) == 32 ) { //spaces reset colors - scolor[0] = 0; - scolor[1] = 1; - scolor[2] = 0; - scolor[3] = 1; + else if (item->generic.type != MTYPE_SUBMENU) + { + ItemName_Draw ((menuitem_s *) menu->items[i], font, dark_color); + } + + switch ( item->generic.type ) + { + case MTYPE_FIELD: + Field_Draw ((menufield_s *) menu->items[i], font); + break; + case MTYPE_SLIDER: + Slider_Draw ((menuslider_s *) menu->items[i], font); + break; + case MTYPE_SPINCONTROL: + SpinControl_Draw ((menulist_s *) menu->items[i], font); + break; + case MTYPE_ACTION: + Action_Draw ((menuaction_s *) menu->items[i], font); + break; + case MTYPE_TEXT: + break; + case MTYPE_SUBMENU: + SubMenu_Draw ((menuframework_s *) menu->items[i], font); + break; } - - x += charscale; } } -void Menu_DrawColorStringL2R ( int x, int y, const char *str ) -{ - int num, i; - vec4_t scolor; - int charscale; - - charscale = (float)(viddef.height)*16/600; - - scolor[0] = 0; - scolor[1] = 1; - scolor[2] = 0; - scolor[3] = 1; - //need to know just how many color chars there are before hand, so that it will draw in - //correct place - for ( i = 0; i < strlen( str ); i++ ) +static void Cursor_MouseSelectItem (menuitem_s *item) +{ + menuitem_s *lastitem = (menuitem_s *)cursor.menuitem; + + // Selected a new item-- reset double-click count + if (lastitem != item) { - if(str[i] == '^' && i < strlen( str )-1) { - if(str[i+1] != '^') - x += 2*charscale; - } + memset (cursor.buttonclicks, 0, sizeof(cursor.buttonclicks)); + memset (cursor.buttontime, 0, sizeof(cursor.buttontime)); } - while (*str) { - if ( Q_IsColorString( str ) ) { - VectorCopy ( Color_Table[ColorIndex(str[1])], scolor ); - str += 2; - color_offset +=2; - continue; - } - - Draw_ScaledColorChar (x, y, *str, scolor, charscale, true); //this is only ever used for names. - - num = *str++; - num &= 255; - - if ( (num&127) == 32 ) { //spaces reset colors - scolor[0] = 0; - scolor[1] = 1; - scolor[2] = 0; - scolor[3] = 1; - } - - x += charscale; - } + Cursor_SelectItem (item); + cursor.mouseaction = false; } -void Menu_DrawFilteredString ( int x, int y, const char *str ) +void Menu_AssignCursor (menuframework_s *menu) { - int num; - vec4_t scolor; - int charscale; - - charscale = (float)(viddef.height)*16/600; + int i; + float right; + menuitem_s *item; + + if (!menu->navagable || !cursor.mouseaction) + return; - while (*str) { - if ( Q_IsColorString( str ) ) { - str += 2; - color_offset +=2; - continue; - } + right = menu->x + CHASELINK(menu->rwidth) + CHASELINK(menu->lwidth); + + if (menu->maxheight != 0 && CHASELINK(menu->height) > menu->maxheight && cursor.x > right) + { + // select the scrollbar + item = &menu->vertical_scrollbar; + Cursor_MouseSelectItem (item); + } + else for ( i = 0; i < menu->nitems; i++ ) + { + int mincoord, maxcoord; - Draw_ScaledChar (x, y, *str, charscale, true); + item = ((menuitem_s * )menu->items[i]); - num = *str++; - num &= 255; + if (!item) + continue; - if ( (num&127) == 32 ) { //spaces reset colors - scolor[0] = 0; - scolor[1] = 1; - scolor[2] = 0; - scolor[3] = 1; + if (menu->horizontal) + { + maxcoord = mincoord = Item_GetX (*item); + maxcoord += CHASELINK(item->generic.rsize).x; + mincoord -= CHASELINK(item->generic.lsize).x; + if (cursor.x < mincoord || cursor.x > maxcoord) + continue; } - - x += charscale; + else + { + maxcoord = mincoord = Item_GetY (*item); + maxcoord += Item_GetHeight (*item); + if (cursor.y < mincoord || cursor.y > maxcoord) + continue; + } + + if (item->generic.type == MTYPE_SUBMENU && ((menuframework_s *)item)->navagable) + { + // navagable menus should have at least one selectable item in + // them. + Menu_AssignCursor ((menuframework_s *)item); + return; + } + + if (!Menu_ItemSelectable (item)) + continue; + + // We've found a valid candiate for selection + Cursor_MouseSelectItem (item); + return; } } -void Menu_DrawStringDark( int x, int y, const char *string ) -{ - unsigned i; - int charscale; - - charscale = (float)(viddef.height)*16/600; +void Menu_DrawHighlightItem (menuitem_s *item); - for ( i = 0; i < strlen( string ); i++ ) +// Draws only the item labels, and draws everything highlighted. For cases +// where the menu itself is being used as a sort of complex widget. +void Menu_DrawHighlightMenu (menuframework_s *menu, FNT_font_t font) +{ + int i; + menuitem_s *item; + + for ( i = 0; i < menu->nitems; i++ ) { - Draw_ScaledChar( ( x + i*charscale ), y, string[i] + 128, charscale, true ); + item = ((menuitem_s * )menu->items[i]); + + Menu_DrawHighlightItem (item); } } -void Menu_DrawStringR2L( int x, int y, const char *string ) -{ - unsigned i; - int charscale; - - charscale = (float)(viddef.height)*16/600; +void Menu_DrawHighlightItem (menuitem_s *item) +{ + FNT_font_t font = FNT_AutoGet (CL_menuFont); + + if (!Item_ScrollVisible (item)) + return; + + if (item->generic.cursorcallback) + item->generic.cursorcallback (item, font); + + // highlighting + if (item->generic.cursordraw != NULL) + { + item->generic.cursordraw( item, font ); + return; + } + + if (item->generic.namedraw != NULL) + return; + + if (item->generic.type == MTYPE_SUBMENU && ((menuframework_s *)item)->enable_highlight) + Menu_DrawHighlightMenu ((menuframework_s *)item, font); + else if (item->generic.type == MTYPE_TEXT) + Label_Draw (item, font, highlight_color); + else + ItemName_Draw (item, font, highlight_color); +} - for ( i = 0; i < strlen( string ); i++ ) +void Menu_DrawHighlight (void) +{ + menuframework_s *menu; + menuitem_s *item = cursor.menuitem; + + if (item == NULL || item->generic.type == MTYPE_VERT_SCROLLBAR) + return; + + menu = item->generic.parent; + + // Scrolling - make sure the selected item is entirely on screen if + // possible. TODO: add smoothing? + if (menu->maxheight != 0) + { + int newscroll; + int y = CHASELINK(item->generic.y); + newscroll = clamp (menu->yscroll, y + Item_GetHeight(*item) - menu->maxheight, y); + if (newscroll != menu->yscroll) + { + menu->yscroll = newscroll; + return; // we'll draw it next frame - not in the right position now + } + } + + if (item->generic.cursordraw == NULL && menu->cursordraw != NULL) { - Draw_ScaledChar( ( x - i*charscale ), y, string[strlen(string)-i-1], charscale, true ); + menu->cursordraw( menu ); + return; } + + if (item->generic.type == MTYPE_SUBMENU) + Menu_DrawBorder ((menuframework_s *)item, NULL, "menu/sm_"); + + // no actions you can do with these types, so use them only for scrolling + // and then return + if (item->generic.type == MTYPE_NOT_INTERACTIVE) + return; + + Menu_DrawHighlightItem (item); + + if ( item->generic.statusbar ) + Menu_DrawStatusBar( item->generic.statusbar ); + + if ( item->generic.tooltip ) + Menu_DrawToolTip (item); +} + +// needed because global_menu_xoffset must be added to only the top level of +// any menu tree. +void Screen_Draw (menuframework_s *screen, menuvec2_t offset) +{ + FNT_font_t font = FNT_AutoGet (CL_menuFont); + screen->x = offset.x; + //TODO: figure out what to do about centered windows +/* screen->y = offset.y;*/ + Menu_AutoArrange (screen); + Menu_Draw (screen, font); +} + +static menuvec2_t Menu_GetBorderSize (menuframework_s *s) +{ + char topcorner_name[MAX_QPATH]; + menuvec2_t ret; + FNT_font_t font; + + font = FNT_AutoGet( CL_menuFont ); + + ret.x = ret.y = 0; + + if (s->bordertexture != NULL) + { + Com_sprintf (topcorner_name, MAX_QPATH, "%stopcorner.tga", s->bordertexture); + Draw_GetPicSize (&ret.x, &ret.y, topcorner_name ); + ret.x = (int)((float)ret.x/64.0*(float)font->size*4.0); + ret.y = (int)((float)ret.y/64.0*(float)font->size*4.0); + ret.x -= font->size; + ret.y -= font->size; + } + + return ret; +} + +void Menu_DrawBox (int x, int y, int w, int h, float alpha, const char *title, const char *prefix) +{ + char topcorner_name[MAX_QPATH]; + char bottomcorner_name[MAX_QPATH]; + char top_name[MAX_QPATH]; + char bottom_name[MAX_QPATH]; + char side_name[MAX_QPATH]; + char background_name[MAX_QPATH]; + int _tile_w, _tile_h; + float tile_w, tile_h; + FNT_font_t font; + + font = FNT_AutoGet( CL_menuFont ); + + Com_sprintf (topcorner_name, MAX_QPATH, "%stopcorner.tga", prefix); + Com_sprintf (bottomcorner_name, MAX_QPATH, "%sbottomcorner.tga", prefix); + Com_sprintf (top_name, MAX_QPATH, "%stop.tga", prefix); + Com_sprintf (bottom_name, MAX_QPATH, "%sbottom.tga", prefix); + Com_sprintf (side_name, MAX_QPATH, "%sside.tga", prefix); + Com_sprintf (background_name, MAX_QPATH, "%sbackground.tga", prefix); + + // assume all tiles are the same size + Draw_GetPicSize (&_tile_w, &_tile_h, topcorner_name ); + + tile_w = (float)_tile_w/64.0*(float)font->size*4.0; + tile_h = (float)_tile_h/64.0*(float)font->size*4.0; + + // make room for the scrollbar + if (!strcmp (prefix, "menu/sm_")) + { + w += font->size; + x -= font->size/2; + } + + if (w < tile_w) + { + w = tile_w; + } + + if (h < tile_h) + { + h = tile_h; + } + + // hacky stuff to make things look right + if (strcmp (prefix, "menu/sm_")) + { + x -= tile_w/2; + w += tile_w; + } + if (!strcmp (prefix, "menu/m_")) + { + y -= tile_h/8; + if (h > tile_h) + h += tile_h/4; + } + + + Draw_AlphaStretchTilingPic( x-tile_w/2, y-tile_h/2, tile_w, tile_h, topcorner_name, alpha ); + Draw_AlphaStretchTilingPic( x+w+tile_w/2, y-tile_h/2, -tile_w, tile_h, topcorner_name, alpha ); + Draw_AlphaStretchTilingPic( x-tile_w/2, y+h-tile_h/2, tile_w, tile_h, bottomcorner_name, alpha ); + Draw_AlphaStretchTilingPic( x+w+tile_w/2, y+h-tile_h/2, -tile_w, tile_h, bottomcorner_name, alpha ); + if (w > tile_w) + { + Draw_AlphaStretchTilingPic( x+tile_w/2, y-tile_h/2, w-tile_w, tile_h, top_name, alpha ); + Draw_AlphaStretchTilingPic( x+tile_w/2, y+h-tile_h/2, w-tile_w, tile_h, bottom_name, alpha ); + } + + if (h > tile_h) + { + Draw_AlphaStretchTilingPic( x-tile_w/2, y+tile_h/2, tile_w, h-tile_h, side_name, alpha ); + Draw_AlphaStretchTilingPic( x+w+tile_w/2, y+tile_h/2, -tile_w, h-tile_h, side_name, alpha ); + if (w > tile_w) + Draw_AlphaStretchTilingPic( x+tile_w/2, y+tile_h/2, w-tile_w, h-tile_h, background_name, alpha ); + } + + if (title != NULL) + { + int i; + int textwidth = Menu_PredictSize (title); + Menu_DrawHorizBar ("menu/slide_border", x+w/2-textwidth/2-2, y-font->size-2, textwidth+4, font->size+4, 1); + // Redraw multiple times to get a bold effect + for (i = 0; i < 4; i++) + Menu_DrawString (x+w/2, y-font->size, title, FNT_CMODE_QUAKE, FNT_ALIGN_CENTER, highlight_color); + } +} + + +void Menu_DrawVertBar (const char *pathbase, float x, float y, float h, float base_size, float alpha) +{ + char scratch[MAX_QPATH]; + + Com_sprintf( scratch, sizeof( scratch ), "%s%s", pathbase, "_end"); + + Draw_AlphaStretchTilingPic (x, y-base_size/2.0, base_size, base_size, scratch, alpha); + Draw_AlphaStretchTilingPic (x+base_size, y+h+base_size/2.0, -base_size, -base_size, scratch, alpha); + if (h > base_size) + Draw_AlphaStretchTilingPic (x, y+base_size/2.0, base_size, h-base_size, pathbase, alpha); +} + +void Menu_DrawHorizBar (const char *pathbase, float x, float y, float w, float base_size, float alpha) +{ + char scratch[MAX_QPATH]; + + Com_sprintf( scratch, sizeof( scratch ), "%s%s", pathbase, "_end"); + + Draw_AlphaStretchTilingPic (x-base_size/2.0, y, base_size, base_size, scratch, alpha); + Draw_AlphaStretchTilingPic (x+w+base_size/2.0, y+base_size, -base_size, -base_size, scratch, alpha); + if (w > base_size) + Draw_AlphaStretchTilingPic (x+base_size/2.0, y, w-base_size, base_size, pathbase, alpha); +} + +void Menu_DrawScrollbar (menuframework_s *menu) +{ + float scrollbar_pos; + float charscale, right; + float alpha; + FNT_font_t font; + + font = FNT_AutoGet( CL_menuFont ); + charscale = font->size; + + if (menu->maxheight == 0 || CHASELINK(menu->height) <= menu->maxheight) + return; + + right = menu->x + CHASELINK(menu->rwidth) + CHASELINK(menu->lwidth) + charscale/2.0; + + scrollbar_pos = menu->scroll_top + (float)menu->yscroll*(menu->scroll_range-menu->scrollbar_size)/menu->maxscroll; + alpha = menu->vertical_scrollbar.highlight_alpha; + + Menu_DrawVertBar ("menu/scroll_border", right, menu->y, menu->maxheight, charscale, alpha*alpha); + Menu_DrawVertBar ("menu/scroll_cursor", right, scrollbar_pos, menu->scrollbar_size, charscale, alpha); +} + +void Menu_DrawBorder (menuframework_s *menu, const char *title, const char *prefix) +{ + int height, width; + + height = CHASELINK(menu->height); + + if (menu->maxheight != 0 && height > menu->maxheight) + height = menu->maxheight; + + if (strcmp (prefix, "menu/m_")) + { + menu->borderalpha = 0.50; + } + else if (Menu_ContainsCursorItem (menu)) + { + menu->borderalpha += cls.frametime*2; + if (menu->borderalpha > 1.0) + menu->borderalpha = 1.0; + } + else + { + menu->borderalpha -= cls.frametime*2; + if (menu->borderalpha < 0.5) + menu->borderalpha = 0.5; + } + + width = CHASELINK(menu->lwidth) + CHASELINK(menu->rwidth); + Menu_DrawBox (menu->x, menu->y, width, height, menu->borderalpha, title, prefix); +} + +void Menu_DrawToolTip (const menuitem_s *item) +{ + + int x, y; + int width; + FNT_font_t font; + + font = FNT_AutoGet (CL_menuFont); + + width = Menu_PredictSize (item->generic.tooltip); + + x = clamp (cursor.x, Item_GetX (*item) - width, VID_WIDTH - width); + + y = clamp (cursor.y - font->size - 4, Item_GetY(*item) - font->size, Item_GetY(*item)); + + Menu_DrawHorizBar ("menu/slide_border", x-2, y, width+4, font->size+4, 1); + Menu_DrawString ( + x, y, + item->generic.tooltip, FNT_CMODE_QUAKE_SRS, FNT_ALIGN_LEFT, + light_color + ); +} + +void Menu_DrawString (int x, int y, const char *string, unsigned int cmode, unsigned int align, const float *color) +{ + FNT_font_t font; + + font = FNT_AutoGet( CL_menuFont ); + + if (align == FNT_ALIGN_RIGHT) + { + menu_box.x = 0; + menu_box.width = x; + } + else if (align == FNT_ALIGN_CENTER) + { + //width only needs to be an upper bound + int width = strlen(string)*font->size; + menu_box.x = x-width/2; + menu_box.width = width; + } + else + { + menu_box.x = x; + menu_box.width = 0; + } + + menu_box.y = y; + menu_box.height = 0; + + FNT_BoundedPrint (font, string, cmode, align, &menu_box, color); + + if (align == FNT_ALIGN_RIGHT) + menu_box.x = x-menu_box.width; + else if (align == FNT_ALIGN_CENTER) + menu_box.x = x-menu_box.width/2; } -void Menu_DrawStringR2LDark( int x, int y, const char *string ) +void Menu_DrawStatusBar( const char *string ) { - unsigned i; - int charscale; + FNT_font_t font; + + font = FNT_AutoGet( CL_menuFont ); - charscale = (float)(viddef.height)*16/600; - - for ( i = 0; i < strlen( string ); i++ ) + if ( string ) { - Draw_ScaledChar( ( x - i*charscale ), y, string[strlen(string)-i-1]+128, charscale, true ); + Draw_Fill (0, VID_HEIGHT-font->size-10, VID_WIDTH, font->size+10, RGBA(0.25, 0.25, 0.25, 1)); + Menu_DrawString (VID_WIDTH/2, VID_HEIGHT-font->size-5, string, FNT_CMODE_QUAKE, FNT_ALIGN_CENTER, light_color); } } -void *Menu_ItemAtCursor( menuframework_s *m ) +void Menu_ActivateItem (menuitem_s *item) { - if ( m->cursor < 0 || m->cursor >= m->nitems ) - return 0; - - return m->items[m->cursor]; + if (item == NULL || item->generic.callback == NULL) + return; + if ((item->generic.flags & QMF_ACTION_WAIT)) + { + if (!item->generic.apply_pending) + { + item->generic.apply_pending = true; + Menu_GetItemTree (item)->num_apply_pending++; + } + } + else + { + item->generic.callback (item); + } } -qboolean Menu_SelectItem( menuframework_s *s ) +void Menu_ApplyItem (menuitem_s *item) { - menucommon_s *item = ( menucommon_s * ) Menu_ItemAtCursor( s ); - - if ( item ) + if (item != NULL && item->generic.callback != NULL && (item->generic.flags & QMF_ACTION_WAIT) && item->generic.apply_pending) { - switch ( item->type ) - { - case MTYPE_FIELD: - return Field_DoEnter( ( menufield_s * ) item ) ; - case MTYPE_ACTION: - case MTYPE_COLORACTION: - Action_DoEnter( ( menuaction_s * ) item ); - return true; - case MTYPE_LIST: -// Menulist_DoEnter( ( menulist_s * ) item ); - return false; - case MTYPE_SPINCONTROL: -// SpinControl_DoEnter( ( menulist_s * ) item ); - return false; - } + Menu_GetItemTree (item)->num_apply_pending--; + item->generic.callback (item); + item->generic.apply_pending = false; } - return false; } -qboolean Menu_MouseSelectItem( menucommon_s *item ) + +void Menu_ApplyMenu (menuframework_s *menu) { - if ( item ) + int i; + menuitem_s *item; + + for ( i = 0; i < menu->nitems; i++ ) { - switch ( item->type ) - { - case MTYPE_FIELD: - return Field_DoEnter( ( menufield_s * ) item ) ; - case MTYPE_ACTION: - case MTYPE_COLORACTION: - Action_DoEnter( ( menuaction_s * ) item ); - return true; - case MTYPE_LIST: - case MTYPE_SPINCONTROL: - return false; - } + item = ((menuitem_s * )menu->items[i]); + + if (item->generic.type == MTYPE_SUBMENU) + Menu_ApplyMenu ((menuframework_s *)item); + else + Menu_ApplyItem (item); } - return false; } + void Menu_SetStatusBar( menuframework_s *m, const char *string ) { m->statusbar = string; } -void Menu_SlideItem( menuframework_s *s, int dir ) +void Menu_SlideItem (int dir) { - menucommon_s *item = ( menucommon_s * ) Menu_ItemAtCursor( s ); - + menucommon_s *item = cursor.menuitem; + if ( item ) { switch ( item->type ) @@ -855,9 +1435,6 @@ case MTYPE_SLIDER: Slider_DoSlide( ( menuslider_s * ) item, dir ); break; - case MTYPE_VERTSLIDER: - Slider_DoSlide( ( menuslider_s * ) item, dir ); - break; case MTYPE_SPINCONTROL: SpinControl_DoSlide( ( menulist_s * ) item, dir ); break; @@ -865,81 +1442,29 @@ } } -int Menu_TallySlots( menuframework_s *menu ) +void Label_Draw (menutxt_s *s, FNT_font_t font, const float *color) { - int i; - int total = 0; - - for ( i = 0; i < menu->nitems; i++ ) - { - if ( ( ( menucommon_s * ) menu->items[i] )->type == MTYPE_LIST ) - { - int nitems = 0; - const char **n = ( ( menulist_s * ) menu->items[i] )->itemnames; - - while (*n) - nitems++, n++; - - total += nitems; - } - else - { - total++; - } - } - - return total; -} - -#if 0 -// unused -void Menulist_DoEnter( menulist_s *l ) -{ - int start; - - start = l->generic.y / 10 + 1; - - l->curvalue = l->generic.parent->cursor - start; - - if ( l->generic.callback ) - l->generic.callback( l ); -} -#endif - -void MenuList_Draw( menulist_s *l ) -{ - const char **n; - int y = 0; - - Menu_DrawStringR2LDark( l->generic.x + l->generic.parent->x + LCOLUMN_OFFSET, l->generic.y + l->generic.parent->y, l->generic.name ); - - n = l->itemnames; - - Draw_Fill( l->generic.x - 112 + l->generic.parent->x, l->generic.parent->y + l->generic.y + l->curvalue*10 + 10, 128, 10, 16 ); - while ( *n ) - { - Menu_DrawStringR2LDark( l->generic.x + l->generic.parent->x + LCOLUMN_OFFSET, l->generic.y + l->generic.parent->y + y + 10, *n ); - - n++; - y += 10; - } + unsigned int align; + unsigned int cmode; + + if ( s->generic.name == NULL) + return; + + if ( s->generic.flags & QMF_RIGHT_COLUMN ) + align = FNT_ALIGN_LEFT; + else + align = FNT_ALIGN_RIGHT; + + cmode = FNT_CMODE_QUAKE_SRS; + if (color == highlight_color) + cmode = FNT_CMODE_TWO; + + Menu_DrawString ( + Item_GetX (*s), Item_GetY (*s) + MenuText_UpperMargin (s, font->size), + s->generic.name, cmode, align, color + ); } -void Separator_Draw( menuseparator_s *s ) -{ - if ( s->generic.name ) - Menu_DrawStringR2LDark( s->generic.x + s->generic.parent->x, s->generic.y + s->generic.parent->y, s->generic.name ); -} -void Separator2_Draw( menuseparator_s *s ) -{ - if ( s->generic.name ) - Menu_DrawStringR2L( s->generic.x + s->generic.parent->x, s->generic.y + s->generic.parent->y, s->generic.name ); -} -void ColorTxt_Draw( menutxt_s *s ) -{ - if ( s->generic.name ) - Menu_DrawColorStringL2R( s->generic.x + s->generic.parent->x, s->generic.y + s->generic.parent->y, s->generic.name ); -} void Slider_DoSlide( menuslider_s *s, int dir ) { s->curvalue += dir; @@ -949,124 +1474,160 @@ else if ( s->curvalue < s->minvalue ) s->curvalue = s->minvalue; - if ( s->generic.callback ) - s->generic.callback( s ); -} - -void Slider_Draw( menuslider_s *s ) -{ - int i; - int charscale; - - charscale = (float)(viddef.height)*8/600; - - - Menu_DrawStringR2LDark( s->generic.x + s->generic.parent->x + LCOLUMN_OFFSET, - s->generic.y + s->generic.parent->y, - s->generic.name ); - - s->range = ( s->curvalue - s->minvalue ) / ( float ) ( s->maxvalue - s->minvalue ); - - if ( s->range < 0) - s->range = 0; - if ( s->range > 1) - s->range = 1; - Draw_ScaledChar( s->generic.x + s->generic.parent->x + RCOLUMN_OFFSET, - s->generic.y + s->generic.parent->y + charscale/2, 128, charscale, true); - for ( i = 0; i < SLIDER_RANGE; i++ ) - Draw_ScaledChar( RCOLUMN_OFFSET + s->generic.x + i*charscale + s->generic.parent->x + charscale, - s->generic.y + s->generic.parent->y + charscale/2, 129, charscale, true); - Draw_ScaledChar( RCOLUMN_OFFSET + s->generic.x + i*charscale + s->generic.parent->x + charscale, - s->generic.y + s->generic.parent->y + charscale/2, 130, charscale, true); - - Draw_ScaledChar( ( int ) ( charscale + RCOLUMN_OFFSET + s->generic.parent->x + s->generic.x + (SLIDER_RANGE-1)*charscale * s->range ), - s->generic.y + s->generic.parent->y + charscale/2, 139, charscale, true); + Menu_ActivateItem (s); } -void VertSlider_Draw( menuslider_s *s ) +void Slider_Draw (menuslider_s *s, FNT_font_t font) { - int i; - int charscale; - - charscale = (float)(viddef.height)*8/600; - - s->range = ( s->curvalue - s->minvalue ) / ( float ) ( s->maxvalue - s->minvalue ); - - if ( s->range < 0) - s->range = 0; - if ( s->range > 1) - s->range = 1; - //top - Draw_ScaledChar( s->generic.x + s->generic.parent->x + charscale, - s->generic.y + s->generic.parent->y - charscale, 18, charscale, true); - Draw_ScaledChar( s->generic.x + s->generic.parent->x + 2*charscale, - s->generic.y + s->generic.parent->y - charscale, 20, charscale, true); - - for ( i = 0; i <= s->size; i++ ) { - Draw_ScaledChar( s->generic.x + s->generic.parent->x + charscale, - s->generic.y + i*charscale + s->generic.parent->y, 21, charscale, true); - Draw_ScaledChar( s->generic.x + s->generic.parent->x + 2*charscale, - s->generic.y + i*charscale + s->generic.parent->y, 23, charscale, true); - } - //bottom - Draw_ScaledChar( s->generic.parent->x + s->generic.x + charscale, - (s->size+1)*charscale + s->generic.y + s->generic.parent->y, 24, charscale, true); - Draw_ScaledChar( s->generic.parent->x + s->generic.x + 2*charscale, - (s->size+1)*charscale + s->generic.y + s->generic.parent->y, 26, charscale, true); - - //cursor - Draw_ScaledChar( (int)( s->generic.parent->x + s->generic.x + 1.5*charscale), - ( int ) (s->generic.y + s->generic.parent->y + (s->size)*charscale * s->range), 11, charscale, true); + float maxscroll, curscroll, scroll_range, cursor_size, x, y, width; + float charscale; + charscale = font->size; + + x = Item_GetX (*s) + RCOLUMN_OFFSET; + y = Item_GetY (*s) + MenuText_UpperMargin (s, font->size); + + curscroll = s->curvalue - s->minvalue; + maxscroll = s->maxvalue - s->minvalue; + + s->range = (float) curscroll / ( float ) maxscroll; + + width = charscale * (float)LONGINPUT_SIZE; + scroll_range = width-charscale/2.0; + cursor_size = charscale; + + Menu_DrawHorizBar ( + "menu/slide_border", x, y, width, charscale, + s->generic.highlight_alpha*s->generic.highlight_alpha + ); + Menu_DrawHorizBar ( + "menu/slide_cursor", x+charscale/4.0+s->range*(scroll_range-cursor_size), y, + cursor_size, charscale, + s->generic.highlight_alpha + ); } -#if 0 -// unused -void SpinControl_DoEnter( menulist_s *s ) -{ - s->curvalue++; - if ( s->itemnames[s->curvalue] == 0 ) - s->curvalue = 0; - - if ( s->generic.callback ) - s->generic.callback( s ); -} -#endif - void SpinControl_DoSlide( menulist_s *s, int dir ) { + int i; s->curvalue += dir; if ( s->curvalue < 0 ) - s->curvalue = 0; + { + if (s->generic.flags & QMF_ALLOW_WRAP) + { + for (i = 0; s->itemnames[i]; i++) + continue; + s->curvalue += i; + } + else + s->curvalue = 0; + } else if ( s->itemnames[s->curvalue] == 0 ) - s->curvalue--; + { + if (s->generic.flags & QMF_ALLOW_WRAP) + s->curvalue = 0; + else + s->curvalue--; + } - if ( s->generic.callback ) - s->generic.callback( s ); + Menu_ActivateItem (s); } -void SpinControl_Draw( menulist_s *s ) +void SpinControl_Draw (menulist_s *s, FNT_font_t font) { char buffer[100]; + int item_x, item_y; + + item_x = Item_GetX (*s) + RCOLUMN_OFFSET; + item_y = Item_GetY (*s) + MenuText_UpperMargin (s, SpinControl_MaxLines (s)*font->size); - if ( s->generic.name ) + if (s->generic.namedraw == NULL && s->generic.name != NULL && s->generic.flags & QMF_RIGHT_COLUMN) + { + // Both the name and item go in the right column. + item_x += Menu_PredictSize (s->generic.name); + } + + if (s->generic.itemdraw != NULL) { - Menu_DrawStringR2LDark( s->generic.x + s->generic.parent->x + LCOLUMN_OFFSET, - s->generic.y + s->generic.parent->y, - s->generic.name ); + s->generic.itemdraw (s, font); } - if ( !strchr( s->itemnames[s->curvalue], '\n' ) ) + else if ( !strchr( s->itemnames[s->curvalue], '\n' ) ) { - Menu_DrawString( RCOLUMN_OFFSET + s->generic.x + s->generic.parent->x, s->generic.y + s->generic.parent->y, s->itemnames[s->curvalue] ); + Menu_DrawString ( + item_x, item_y, + s->itemnames[s->curvalue], FNT_CMODE_QUAKE_SRS, FNT_ALIGN_LEFT, + light_color + ); } else { strcpy( buffer, s->itemnames[s->curvalue] ); *strchr( buffer, '\n' ) = 0; - Menu_DrawString( RCOLUMN_OFFSET + s->generic.x + s->generic.parent->x, s->generic.y + s->generic.parent->y, buffer ); + Menu_DrawString ( + item_x, item_y, + buffer, FNT_CMODE_QUAKE_SRS, FNT_ALIGN_LEFT, + light_color + ); strcpy( buffer, strchr( s->itemnames[s->curvalue], '\n' ) + 1 ); - Menu_DrawString( RCOLUMN_OFFSET + s->generic.x + s->generic.parent->x, s->generic.y + s->generic.parent->y + 18, buffer ); + Menu_DrawString ( + item_x, menu_box.y + font->height, + buffer, FNT_CMODE_QUAKE_SRS, FNT_ALIGN_LEFT, + light_color + ); } } +void SubMenu_Draw (menuframework_s *sm, FNT_font_t font) +{ + sm->x = Item_GetX (*sm); + if (sm->generic.flags & QMF_SNUG_LEFT) + sm->x -= CHASELINK(sm->generic.parent->lwidth); + sm->y = Item_GetY (*sm); + if (sm->navagable) + Menu_DrawScrollbar (sm); + Menu_Draw (sm, font); +} + +// utility functions + +void Menu_MakeTable (menuframework_s *menu, int nrows, int ncolumns, size_t *celltype_size, menuframework_s *header, menuframework_s *rows, void *columns, const char **contents) +{ + int i, j; + menuframework_s *cur_row = rows; + // char because the measurements in celltype_size are in bytes + char *cur_cell_p = columns; + + menu->nitems = 0; + for (i = 0; i < nrows; i++) + { + cur_row->nitems = 0; + cur_row->generic.type = MTYPE_SUBMENU; + cur_row->horizontal = true; + cur_row->navagable = false; + cur_row->enable_highlight = true; + if (cur_row != header) + { + LINK(header->lwidth, cur_row->lwidth); + LINK(header->rwidth, cur_row->rwidth); + } + for (j = 0; j < ncolumns; j++) + { + menuitem_s *cur_cell = (menuitem_s *)cur_cell_p; + if (cur_row != header) + { + menucommon_s *header_cell = (menucommon_s *)header->items[j]; + memcpy (cur_cell, header_cell, sizeof (menucommon_s)); + //reset after memcpy + cur_cell->generic.x.status = linkstatus_literal; + LINK(header_cell->x, cur_cell->generic.x); + } + cur_cell->generic.name = contents[i*ncolumns+j]; + Menu_AddItem (cur_row, cur_cell); + cur_cell_p += celltype_size[j]; + } + Menu_AddItem (menu, cur_row); + cur_row++; + } + Menu_AutoArrange (menu); +} diff -Nru alien-arena-7.53+dfsg/source/client/qmenu.h alien-arena-7.66+dfsg/source/client/qmenu.h --- alien-arena-7.53+dfsg/source/client/qmenu.h 2011-06-07 20:06:30.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/qmenu.h 2013-08-19 03:26:16.000000000 +0000 @@ -1,5 +1,6 @@ /* Copyright (C) 1997-2001 Id Software, Inc. +Copyright (C) 2013 COR Entertainment, LLC. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License @@ -20,18 +21,146 @@ #ifndef __QMENU_H__ #define __QMENU_H__ +// TODO: This stuff could be useful outside the menu as well. + +typedef enum +{ + linkstatus_literal, + linkstatus_linktarget, + linkstatus_link +} linkable_status_t; + +// NOTE: if the compiler complains that this is defined but not used, that is +// GOOD! It means the optimizing compiler has detected that the code in the +// ASSERTFAILLINK macro never runs, optimized that code out of the binary, +// and as a result there's no code that uses this array. But we still need +// the ASSERTFAILLINK macro so that invalid code will be detected as soon as +// it's tested. So DON'T DELETE THIS! +static const char *LINK_STATUS_NAMES[] = { + "literal", + "linktarget", + "link" +}; + +#define LINKABLE(type) \ +struct \ +{ \ + /*For determining whether an encapsulated variable has been linked to + another, and if so, how. */ \ + linkable_status_t status; \ + /*Contents do not matter if status == linkstatus_link*/\ + type val; \ + /*points to val within another struct of this type */ \ + /*Contents do not matter unless status == linkstatus_link*/\ + type *ptr; \ +} + +#define ASSERTFAILLINK(a,b)\ + Com_Error (ERR_FATAL, "CANNOT CREATE LINK!\n%s (%p) type %s\n%s (%p) type %s", \ + #a, &a, LINK_STATUS_NAMES[a.status], #b, &b, LINK_STATUS_NAMES[b.status]); + +#define _ASSERTLINK(a,b)\ +{\ + if (b.status == linkstatus_link)\ + {\ + if (a.ptr != b.ptr)\ + ASSERTFAILLINK (a,b)\ + }\ + else if (b.status != linkstatus_linktarget || a.ptr != &(b.val))\ + ASSERTFAILLINK (a,b)\ +} + +#define ASSERTLINK(a,b)\ +{\ + if (a.status == linkstatus_link)\ + _ASSERTLINK(a,b)\ + else if (b.status == linkstatus_link)\ + _ASSERTLINK(b,a)\ + else\ + ASSERTFAILLINK (a,b)\ +} + +#define _LINK(a,b) \ +{\ + b.status = linkstatus_link;\ + if (a.status == linkstatus_link)\ + {\ + b.ptr = a.ptr;\ + }\ + else\ + {\ + a.status = linkstatus_linktarget;\ + b.ptr = &(a.val);\ + }\ +} + +#define LINK(a,b) \ +{\ + if (&(a) != &(b)) \ + {\ + if ((a).status != linkstatus_literal && (b).status != linkstatus_literal)\ + ASSERTLINK ((a),(b))\ + else if ((b).status == linkstatus_literal)\ + _LINK((a),(b))\ + else\ + _LINK((b),(a))\ + }\ +} + +// The reason this macro is so odd is because you need to be able to do +// CHASELINK(var) = value directly. +#define CHASELINK(l) \ +(*\ + (\ + ((l).status == linkstatus_link)?\ + ( /* Macro evaluates to (*((l).ptr)) */ \ + (l).ptr\ + )\ + :\ + ( /* Macro evaluates to (*(&((l).val))) which simplifies to (l).val + The compiler should figure that out and come up with something + you can assign directly. + */ \ + &((l).val)\ + )\ + )\ +) + +#define RESETLINK(l,v) \ +{\ + if ((l).status != linkstatus_link) \ + (l).val = v; \ +} + +#define INCREASELINK(l,v) \ +{\ + if ((l).status == linkstatus_link) \ + {\ + if (*((l).ptr) < v) \ + *((l).ptr) = v; \ + else \ + v = *((l).ptr); \ + }\ + else \ + {\ + (l).val = v; \ + }\ +} + + + #define MAXMENUITEMS 64 -#define MTYPE_SLIDER 0 -#define MTYPE_LIST 1 -#define MTYPE_ACTION 2 -#define MTYPE_SPINCONTROL 3 -#define MTYPE_SEPARATOR 4 -#define MTYPE_FIELD 5 -#define MTYPE_SEPARATOR2 6 -#define MTYPE_VERTSLIDER 7 -#define MTYPE_COLORTXT 8 -#define MTYPE_COLORACTION 9 +typedef enum { + MTYPE_SLIDER, + MTYPE_VERT_SCROLLBAR, + MTYPE_ACTION, + MTYPE_FIELD, + MTYPE_NOT_INTERACTIVE, + MTYPE_SPINCONTROL, + MTYPE_SUBMENU +} menutype_t ; +#define MTYPE_TEXT MTYPE_NOT_INTERACTIVE #define K_TAB 9 #define K_ENTER 13 @@ -39,9 +168,9 @@ #define K_SPACE 32 //menu mouse -#define RCOLUMN_OFFSET MENU_FONT_SIZE*2 // was 16 -#define LCOLUMN_OFFSET -MENU_FONT_SIZE*2 // was -16 -#define SLIDER_RANGE 10 +#define RCOLUMN_OFFSET 12 +#define LCOLUMN_OFFSET -12 +#define LONGINPUT_SIZE 13 // times font width #define NUM_CURSOR_FRAMES 15 #define FONTSCALE 1.5 @@ -58,118 +187,203 @@ #define K_LEFTARROW 130 #define K_RIGHTARROW 131 -#define QMF_LEFT_JUSTIFY 0x00000001 -#define QMF_GRAYED 0x00000002 -#define QMF_NUMBERSONLY 0x00000004 +#define QMF_RIGHT_COLUMN 0x00000001 +#define QMF_NUMBERSONLY 0x00000002 +#define QMF_ALLOW_WRAP 0x00000004 +#define QMF_STRIP_COLOR 0x00000008 +#define QMF_SNUG_LEFT 0x00000010 +#define QMF_ACTION_WAIT 0x00000020 +#define QMF_BUTTON 0x00000040 +#define QMF_SUBMENU_CAPTURE 0x00000080 -typedef struct _tag_menuframework +typedef struct { int x, y; - int cursor; - - int nitems; - int nslots; - void *items[64]; - - const char *statusbar; - - void (*cursordraw)( struct _tag_menuframework *m ); - -} menuframework_s; +} menuvec2_t; typedef struct { - int type; + menutype_t type; const char *name; - int x, y; - menuframework_s *parent; - int cursor_offset; - int localdata[4]; + LINKABLE(int) x, y; + int visible_length; + struct _tag_menuframework *parent; + int localints[3]; + const char *localstrings[1]; + void *localptrs[1]; unsigned flags; - + const char *statusbar; - void (*callback)( void *self ); - void (*statusbarfunc)( void *self ); - void (*ownerdraw)( void *self ); - void (*cursordraw)( void *self ); + const char *tooltip; + + float highlight_alpha; + + // action callbacks + void (*callback) (void *self); // clicked on/activated + void (*cursorcallback) (void *self, FNT_font_t font); // moused over + + // layout callbacks for each column + menuvec2_t (*namesizecallback) (void *self, FNT_font_t font); // left + menuvec2_t (*itemsizecallback) (void *self, FNT_font_t font); // right + + // rendering callbacks + void (*itemdraw) (void *self, FNT_font_t font); + void (*namedraw) (void *self, FNT_font_t font); + void (*cursordraw) (void *self, FNT_font_t font); + + // Each menu item may draw different things in the left column and/or the + // right column. The size of whatever gets drawn in each column is tracked + // separately. + LINKABLE(menuvec2_t) lsize, rsize; + + // only used for non-submenus with QMF_ACTION_WAIT + qboolean apply_pending; } menucommon_s; -typedef struct -{ - menucommon_s generic; - - char buffer[80]; - int cursor; - int length; - int visible_length; - int visible_offset; -} menufield_s; - -typedef struct +typedef struct _tag_menuframework { menucommon_s generic; + + qboolean initialized; + + int x, y; + LINKABLE(int) lwidth, rwidth, height; + int maxwidth, maxheight; // 0 for no limit + int maxlines; // for generating maxheight automatically + int xscroll, yscroll; + qboolean horizontal; + + float scroll_top, scroll_range, scrollbar_size, maxscroll; + menucommon_s vertical_scrollbar; + + qboolean navagable; + + qboolean enable_highlight; + + float borderalpha; - float minvalue; - float maxvalue; - float curvalue; + int nitems; + void *items[64]; - float range; - int size; -} menuslider_s; + const char *statusbar; + const char *tooltip; + const char *bordertitle; + const char *bordertexture; + + void (*cursordraw)( struct _tag_menuframework *m ); + + // only used at the top level of the menu tree: + int num_apply_pending; + struct _tag_menuitem *default_cursor_selection; // will auto-pick if not set +} menuframework_s; typedef struct { menucommon_s generic; - + + // slider only + int minvalue; + int maxvalue; + float range; + int size; + + // slider and list int curvalue; - + + // list only const char **itemnames; -} menulist_s; - -typedef struct -{ - menucommon_s generic; -} menuaction_s; + + // fields + char buffer[80]; + int cursor; + int length; +} menumultival_s; -typedef struct -{ - menucommon_s generic; -} menuseparator_s; +typedef menumultival_s menuslider_s; +typedef menumultival_s menulist_s; +typedef menumultival_s menufield_s; -typedef struct +typedef struct _tag_menuitem { menucommon_s generic; -} menutxt_s; +} menuitem_s; -typedef struct -{ - float x; - float y; - float avg; -} menuscale_t; +typedef menuitem_s menuaction_s; +typedef menuitem_s menutxt_s; void refreshCursorLink (void); -menuscale_t menuScale; -qboolean Field_Key( menufield_s *field, int key ); +qboolean Field_Key (int key); + +void _Menu_AddItem( menuframework_s *menu, menucommon_s *item ); + +// Hushes up the incompatible pointer compiler warnings while still preventing +// a genuinely incorrect value from being used: +#define Menu_AddItem(menu,item)\ + _Menu_AddItem((menu), &((item)->generic)) + +menuframework_s *Menu_GetItemTree (menuitem_s *item); -void Menu_AddItem( menuframework_s *menu, void *item ); -void Menu_AdjustCursor( menuframework_s *menu, int dir ); +int Cursor_GetLayer (void); +qboolean Cursor_SelectMenu (menuframework_s *menu); +void Cursor_SelectItem (menuitem_s *item); + +void Menu_AdvanceCursor (int dir, qboolean allow_capture); void Menu_Center( menuframework_s *menu ); -void Menu_Draw( menuframework_s *menu ); -void *Menu_ItemAtCursor( menuframework_s *m ); -qboolean Menu_SelectItem( menuframework_s *s ); -qboolean Menu_MouseSelectItem( menucommon_s *item ); //menu mouse +void Menu_AutoArrange( menuframework_s *menu ); +void Screen_Draw (menuframework_s *menu, menuvec2_t offset); +void Menu_AssignCursor (menuframework_s *menu); +void Menu_DrawHighlightItem (menuitem_s *item); +void Menu_DrawHighlight (void); +void Menu_ActivateItem (menuitem_s *item); +void Menu_ApplyItem (menuitem_s *item); +void Menu_ApplyMenu (menuframework_s *menu); void Menu_SetStatusBar( menuframework_s *s, const char *string ); -void Menu_SlideItem( menuframework_s *s, int dir ); -int Menu_TallySlots( menuframework_s *menu ); +void Menu_SlideItem (int dir); + +void Menu_Draw (menuframework_s *menu, FNT_font_t font); +void Menu_DrawString (int x, int y, const char *string, unsigned int cmode, unsigned int align, const float *color); +void Menu_DrawBox (int x, int y, int w, int h, float alpha, const char *title, const char *prefix); +int Menu_PredictSize (const char *str); + +// utility layout functions +void Menu_MakeTable (menuframework_s *menu, int nrows, int ncolumns, size_t *celltype_size, menuframework_s *header, menuframework_s *rows, void *columns, const char **contents); + +#if !defined min +#define min(a,b) (((a)<(b)) ? (a) : (b)) +#endif + +#if !defined max +#define max(a,b) (((a)>(b)) ? (a) : (b)) +#endif + +#if !defined clamp +#define clamp(x,low,high) (min(max(low,x),high)) +#endif + +#define Item_GetHeight(i) \ + (max(CHASELINK((i).generic.lsize).y, CHASELINK((i).generic.rsize).y)) + +#define Menu_GetCtrX(m) ((m).x + CHASELINK((m).lwidth)) +#define Item_GetX(i) (CHASELINK((i).generic.x) + Menu_GetCtrX(*((i).generic.parent))) + +#define Menu_TrueHeight(m) \ + ((m).maxheight!=0?min((m).maxheight,CHASELINK((m).height)):CHASELINK((m).height)) + +#define Menu_TrueWidth(m) \ + (CHASELINK((m).lwidth) + CHASELINK((m).rwidth)) + +#define Menu_GetBaseY(m) ((m).y - (m).yscroll) +#define Item_GetY(i) (CHASELINK((i).generic.y) + Menu_GetBaseY(*((i).generic.parent))) + +#define Menu_ContainsMouse(m) \ + ( cursor.y > (m).y && cursor.y < (m).y+Menu_TrueHeight(m) && \ + cursor.x > (m).x && cursor.x < (m).x+CHASELINK((m).rwidth)+CHASELINK((m).lwidth) \ + ) + +#define MenuText_UpperMargin(item,height) ( (((item)->generic.parent->horizontal ? Menu_TrueHeight (*((item)->generic.parent)) : Item_GetHeight(*(item)))-height)/2) -void Menu_DrawString( int, int, const char * ); -void Menu_DrawColorString( int, int, const char * ); -void Menu_DrawStringDark( int, int, const char * ); -void Menu_DrawStringR2L( int, int, const char * ); -void Menu_DrawStringR2LDark( int, int, const char * ); -void Menu_DrawFilteredString( int, int, const char * ); +struct FNT_window_s menu_box; #endif diff -Nru alien-arena-7.53+dfsg/source/client/ref.h alien-arena-7.66+dfsg/source/client/ref.h --- alien-arena-7.53+dfsg/source/client/ref.h 2011-12-21 18:02:30.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/ref.h 2013-08-19 03:26:16.000000000 +0000 @@ -28,7 +28,7 @@ #define DIV512 (0.001953125f) #define MAX_DLIGHTS 32 -#define MAX_ENTITIES 128 +#define MAX_ENTITIES 256 //was 128 - use of static meshes necessitates an increase. #define MAX_PARTICLES 8192 #define MAX_LIGHTSTYLES 256 @@ -44,6 +44,7 @@ int style; float alpha; float time; + int leafnum; } flare_t; typedef struct @@ -55,6 +56,9 @@ int texsize; int texnum; char name[MAX_QPATH]; + int leafnum; + qboolean sunVisible; //can cast shadows in sunlight + vec3_t static_light; } grass_t; typedef struct @@ -69,6 +73,8 @@ int texsize; int texnum; char name[MAX_QPATH]; + int leafnum; + int leafnum2; } beam_t; #define SHELL_RED_COLOR 0xF2 @@ -94,11 +100,13 @@ #define PARTICLE_DECAL 3 #define PARTICLE_FLAT 4 #define PARTICLE_WEATHER 5 -#define PARTICLE_RAISEDDECAL 6 -#define PARTICLE_ROTATINGYAW 7 -#define PARTICLE_ROTATINGROLL 8 -#define PARTICLE_ROTATINGYAWMINUS 9 -#define PARTICLE_VERT 10 +#define PARTICLE_FLUTTERWEATHER 6 +#define PARTICLE_RAISEDDECAL 7 +#define PARTICLE_ROTATINGYAW 8 +#define PARTICLE_ROTATINGROLL 9 +#define PARTICLE_ROTATINGYAWMINUS 10 +#define PARTICLE_VERT 11 +#define PARTICLE_CHAINED 12 #define RDF_BLOOM 4 //BLOOMS @@ -115,8 +123,6 @@ VBO_STORE_XYZ, VBO_STORE_INDICES, VBO_STORE_ST, - VBO_STORE_SHADOWXYZ, - VBO_STORE_SHADOWINDICES, VBO_STORE_NORMAL, VBO_STORE_BINORMAL, VBO_STORE_TANGENT @@ -133,13 +139,9 @@ void *pointer; - vec3_t position; - vertStoreMode_t store; struct model_s *mod; -#ifdef SHADOWVBO - struct entity_s *ent; -#endif + unsigned id; } vertCache_t; @@ -194,11 +196,28 @@ int team; float bob; + + int number; //edict number; struct rscript_s *script; } entity_t; +//for saving persistent data about entities across frames +typedef struct { + /* + ** for saving non-dynamic lighting of static meshes + */ + qboolean setlightstuff; + float oldnumlights; + vec3_t oldlightadd; + vec3_t oldorigin; + float oldlightintens; +} cl_entity_pers_t; + +cl_entity_pers_t cl_persistent_ents[MAX_EDICTS]; + + #define ENTITY_FLAGS 68 typedef struct @@ -206,7 +225,6 @@ vec3_t origin; vec3_t color; float intensity; - int team; //so we can add team lights like UT } dlight_t; typedef struct @@ -247,7 +265,7 @@ float alpha; float alphavel; int type; // 0 standard, 1 smoke, etc etc... - int texnum; + struct image_s *image; int blenddst; int blendsrc; float scale; @@ -263,6 +281,11 @@ float current_alpha; float current_scale; + // For particle chains-- the particle renderer will automatically play + // connect-the-dots with these. + struct particle_s *chain_prev; + vec3_t current_pspan; + } particle_t; @@ -282,7 +305,8 @@ float time; // time is uesed to auto animate int rdflags; // RDF_UNDERWATER, etc - byte *areabits; // if not NULL, only areas with set bits will be drawn + byte *areabits; // must not be NULL if you want to do BSP rendering + qboolean areabits_changed; lightstyle_t *lightstyles; // [MAX_LIGHTSTYLES] @@ -294,18 +318,21 @@ int num_dlights; dlight_t *dlights; + qboolean dlights_changed; + int num_dlight_surfaces; int num_particles; particle_t **particles; - int num_flares; - flare_t *flares; - int num_grasses; grass_t *grasses; int num_beams; beam_t *beams; + + // Because the mirror texture doesn't have to updatea more than 60 times + // per second. + int last_mirrorupdate_time; // in ms } refdef_t; @@ -321,26 +348,25 @@ //cursor - psychospaz #define MENU_CURSOR_BUTTON_MAX 2 -#define MENUITEM_ACTION 1 -#define MENUITEM_ROTATE 2 -#define MENUITEM_SLIDER 3 -#define MENUITEM_TEXT 4 -#define MENUITEM_VERTSLIDER 5 - typedef struct { //only 2 buttons for menus float buttontime[MENU_CURSOR_BUTTON_MAX]; int buttonclicks[MENU_CURSOR_BUTTON_MAX]; - int buttonused[MENU_CURSOR_BUTTON_MAX]; + qboolean buttonused[MENU_CURSOR_BUTTON_MAX]; qboolean buttondown[MENU_CURSOR_BUTTON_MAX]; qboolean mouseaction; //this is the active item that cursor is on. - int menuitemtype; - void *menuitem; - void *menu; + int menulayer; + struct _tag_menuitem + *menuitem; + //this is whatever menuitem it was on when a click-and-drag maneuver was + //begun. + struct _tag_menuitem + *click_menuitem; + qboolean suppress_drag; //started clicking with nothing selected //coords int x; @@ -350,18 +376,18 @@ int oldy; } cursor_t; -void Draw_GetPicSize (int *w, int *h, char *name); -void Draw_Pic (int x, int y, char *name); -void Draw_ScaledPic (int x, int y, float scale, char *pic); -void Draw_StretchPic (int x, int y, int w, int h, char *name); -void Draw_AlphaStretchPic (int x, int y, int w, int h, char *name, float alphaval); -void Draw_AlphaStretchPlayerIcon (int x, int y, int w, int h, char *pic, float alphaval); -void Draw_Char (int x, int y, int c); -void Draw_ColorChar (int x, int y, int num, vec4_t color); -void Draw_ScaledChar (float x, float y, int num, float scale, int from_menu); -void Draw_ScaledColorChar (float x, float y, int num, vec4_t color, float scale, int from_menu); -void Draw_TileClear (int x, int y, int w, int h, char *name); -void Draw_Fill (int x, int y, int w, int h, int c); +float *RGBA (float r, float g, float b, float a); +#define RGBA8(a,b,c,d) RGBA((a)/255.0f, (b)/255.0f, (c)/255.0f, (d)/255.0f) + +qboolean Draw_PicExists (const char *name); +void Draw_GetPicSize (int *w, int *h, const char *name); +void Draw_Pic (float x, float y, const char *name); +void Draw_ScaledPic (float x, float y, float scale, const char *pic); +void Draw_StretchPic (float x, float y, float w, float h, const char *name); +void Draw_AlphaStretchTilingPic (float x, float y, float w, float h, const char *name, float alphaval); +void Draw_AlphaStretchPic (float x, float y, float w, float h, const char *name, float alphaval); +void Draw_AlphaStretchPlayerIcon (int x, int y, int w, int h, const char *pic, float alphaval); +void Draw_Fill (float x, float y, float w, float h, const float rgba[]); void Draw_FadeScreen (void); void R_BeginFrame( float camera_separation ); @@ -376,6 +402,7 @@ void R_RegisterBasePlayerModels(void); void R_RegisterCustomPlayerModels(void); +void S_RegisterSoundsForPlayer (char *playername); void R_BeginRegistration (char *map); void R_EndRegistration (void); diff -Nru alien-arena-7.53+dfsg/source/client/screen.h alien-arena-7.66+dfsg/source/client/screen.h --- alien-arena-7.53+dfsg/source/client/screen.h 2010-11-27 18:30:10.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/screen.h 2013-06-22 20:07:36.000000000 +0000 @@ -29,7 +29,7 @@ void SCR_BeginLoadingPlaque (void); void SCR_EndLoadingPlaque (void); -void SCR_DebugGraph (float value, int color); +void SCR_DebugGraph (float value, const float color[]); void SCR_TouchPics (void); diff -Nru alien-arena-7.53+dfsg/source/client/snd_file.c alien-arena-7.66+dfsg/source/client/snd_file.c --- alien-arena-7.53+dfsg/source/client/snd_file.c 2010-08-19 23:55:34.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/snd_file.c 2013-06-22 20:07:36.000000000 +0000 @@ -45,6 +45,13 @@ int dataofs; // chunk starts this many bytes from file start } pcminfo_t; +/* return 0 for little endian, 1 for big endian */ +int bigendian( void ) +{ + long one = 1; + return !(*((char*)(&one))); +} + /* == .WAV file parsing @@ -120,7 +127,7 @@ int format; int samples; - memset( info, 0, sizeof( info ) ); + memset( info, 0, sizeof(pcminfo_t) ); if( !wav ) return false; @@ -181,6 +188,15 @@ info->samples = samples; info->dataofs = data_p - wav; + if ( (info->width == 2) && bigendian() ) + { /* for big-endian byte swap little-endian 16-bit samples */ + short *psample = (short*)data_p; + while ( samples-- ) + { + *psample++ = GetLittleShort(); /* note: increments data_p */ + } + } + return true; } @@ -268,6 +284,7 @@ // function pointers for Ogg Vorbis file-like io ov_callbacks ovbfr_callbacks = { ovbfr_read, ovbfr_seek, NULL, ovbfr_tell }; + /* ============ ReadVorbisFile @@ -287,10 +304,11 @@ size_t bytes_remaining; long read_result; int bitstream; + int bigendianp; Com_DPrintf("ReadVorbisFile: %s\n", name ); - memset( info, 0, sizeof( info ) ); // clear return data + memset( info, 0, sizeof(pcminfo_t) ); // clear return data *pcmbfr = NULL; info->width = 2; // always 16-bit @@ -329,9 +347,10 @@ return false; } + bigendianp = bigendian(); do - { // decode Ogg Vorbis data to little-endian, 16-bit, signed PCM data - read_result = ov_read( &vf, pdest, bytes_remaining, 0, 2, 1, &bitstream ); + { // decode Ogg Vorbis data to host endian, 16-bit, signed PCM data + read_result = ov_read( &vf, pdest, bytes_remaining, bigendianp, 2, 1, &bitstream ); if ( read_result > 0 ) { bytes_remaining -= (size_t)read_result; diff -Nru alien-arena-7.53+dfsg/source/client/snd_openal.c alien-arena-7.66+dfsg/source/client/snd_openal.c --- alien-arena-7.53+dfsg/source/client/snd_openal.c 2010-10-22 17:14:19.000000000 +0000 +++ alien-arena-7.66+dfsg/source/client/snd_openal.c 2013-06-22 20:07:36.000000000 +0000 @@ -58,7 +58,8 @@ * Sound CVARS */ #define MAX_SRC 128 -#define MIN_SRC_DEFAULT 96 +#define MAX_SRC_DEFAULT 96 +#define MIN_SRC_DEFAULT 64 /*--- previous system ---*/ // These 2 are defined in cl_main.c //cvar_t *background_music; // enable/disable music @@ -240,7 +241,7 @@ ALfloat cone_outer_gain; ALfloat cone_inner_angle; ALfloat cone_outer_angle; - int stop_timer_delay; + // int stop_timer_delay; } source_default = { (ALfloat)1.0f, // AL_PITCH @@ -1812,7 +1813,7 @@ == */ -sfx_t *S_FindName( char *name, qboolean create ) +sfx_t *S_FindName( const char *name, qboolean create ) { sfxlink_t *sfxlink; sfx_t *sfx = NULL; @@ -2000,6 +2001,38 @@ /* == + S_RegisterSoundsForPlayer() + + Register the model-specific sounds (pain, jumping, etc.) that should be + present for each player model. + + This function is called from the model loading code. It relies on the fact + that the server precaches sounds before models, so the generic (fallback) + version of each model-specific sound is already in the precache list at this + point. + == + */ +void S_RegisterSoundsForPlayer (char *playername) +{ + int i; + char soundpath[MAX_QPATH]; + + return; // FIXME: figure out why Windows doesn't like this. + + for (i=1 ; icurvalue/10.0; - Cvar_SetValue( "vid_gamma", gamma ); -} - -static void ContrastCallback( void *s ) -{ - menuslider_s *slider = ( menuslider_s * ) s; - float contrast = slider->curvalue/10.0; - Cvar_SetValue( "vid_contrast", contrast ); -} - -static void BloomCallback( void *s ) -{ - menuslider_s *slider = ( menuslider_s * ) s; - - Cvar_SetValue( "r_bloom_intensity", slider->curvalue/10); -} - -static void BloomSetCallback( void *s) -{ - Cvar_SetValue("r_bloom", s_bloom_box.curvalue); -} - -static void ModulateCallback( void *s ) -{ - menuslider_s *slider = ( menuslider_s * ) s; - - Cvar_SetValue( "gl_modulate", slider->curvalue); -} - -static void NormalMapsCallback( void *s ) -{ - Cvar_SetValue("gl_normalmaps", s_normalmaps_box.curvalue); - if(s_normalmaps_box.curvalue) { //must turn this on for normal - Cvar_SetValue("gl_glsl_shaders", s_normalmaps_box.curvalue); - s_glsl_box.curvalue = s_normalmaps_box.curvalue; - } -} - -static void ShadowMapsCallback( void *s ) -{ - Cvar_SetValue("gl_shadowmaps", s_shadowmaps_box.curvalue); - if(s_shadowmaps_box.curvalue) { //must turn this on for shadowmaps - Cvar_SetValue("gl_glsl_shaders", s_shadowmaps_box.curvalue); - Cvar_SetValue("gl_shadows", 0); - s_glsl_box.curvalue = s_shadowmaps_box.curvalue; - } -} - -static void PostProcessCallback( void *s ) -{ - if(s_postprocess_box.curvalue) { - Cvar_SetValue("gl_glsl_postprocess", s_postprocess_box.curvalue); - s_glsl_box.curvalue = s_postprocess_box.curvalue; - } -} - -static void GlslCallback( void *s ) -{ - Cvar_SetValue("gl_glsl_shaders", s_glsl_box.curvalue); - if(!s_glsl_box.curvalue) { - Cvar_SetValue("gl_normalmaps", s_glsl_box.curvalue); - s_normalmaps_box.curvalue = s_glsl_box.curvalue; - Cvar_SetValue("gl_shadowmaps", s_glsl_box.curvalue); - s_shadowmaps_box.curvalue = s_glsl_box.curvalue; - Cvar_SetValue("gl_glsl_postprocess", s_glsl_box.curvalue); - s_postprocess_box.curvalue = s_glsl_box.curvalue; - } -} - -static void VboCallback( void *s ) -{ - Cvar_SetValue("gl_usevbo", s_vbo_box.curvalue); -} - -static void SetLowest( void *unused ) -{ - Cvar_SetValue("r_bloom", 0); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 0); - Cvar_SetValue("gl_shadowmaps", 0); - Cvar_SetValue("gl_glsl_postprocess", 0); - Cvar_SetValue("gl_glsl_shaders", 0); - - //do other things that aren't in the vid menu per se, but are related "high end" effects - Cvar_SetValue("r_shaders", 0); - Cvar_SetValue("gl_shadows", 0); - Cvar_SetValue("gl_dynamic", 0); - Cvar_SetValue("gl_mirror", 0); - Cvar_SetValue("gl_vlights", 0); - - VID_MenuInit(); -} -static void SetLow( void *unused ) -{ - Cvar_SetValue("r_bloom", 0); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 0); - Cvar_SetValue("gl_shadowmaps", 0); - Cvar_SetValue("gl_glsl_postprocess", 0); - Cvar_SetValue("gl_glsl_shaders", 0); - - //do other things that aren't in the vid menu per se, but are related "high end" effects - Cvar_SetValue("r_shaders", 1); - Cvar_SetValue("gl_shadows", 2); - Cvar_SetValue("gl_dynamic", 0); - Cvar_SetValue("gl_mirror", 1); - Cvar_SetValue("gl_vlights", 0); - - VID_MenuInit(); -} - -static void SetMedium( void *unused ) -{ - Cvar_SetValue("r_bloom", 0); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 0); - Cvar_SetValue("gl_shadowmaps", 0); - Cvar_SetValue("gl_glsl_postprocess", 1); - Cvar_SetValue("gl_glsl_shaders", 1); - - //do other things that aren't in the vid menu per se, but are related "high end" effects - Cvar_SetValue("r_shaders", 1); - Cvar_SetValue("gl_shadows", 2); - Cvar_SetValue("gl_dynamic", 1); - Cvar_SetValue("gl_mirror", 1); - Cvar_SetValue("gl_vlights", 1); - - VID_MenuInit(); -} - -static void SetHigh( void *unused ) -{ - Cvar_SetValue("r_bloom", 1); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 1); - Cvar_SetValue("gl_shadowmaps", 0); - Cvar_SetValue("gl_glsl_postprocess", 1); - Cvar_SetValue("gl_glsl_shaders", 1); - - //do other things that aren't in the vid menu per se, but are related "high end" effects - Cvar_SetValue("r_shaders", 1); - Cvar_SetValue("gl_shadows", 2); - Cvar_SetValue("gl_dynamic", 1); - Cvar_SetValue("gl_mirror", 1); - Cvar_SetValue("gl_vlights", 1); - - VID_MenuInit(); -} - -static void SetHighest( void *unused ) -{ - Cvar_SetValue("r_bloom", 1); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 1); - Cvar_SetValue("gl_shadowmaps", 1); - Cvar_SetValue("gl_glsl_postprocess", 1); - Cvar_SetValue("gl_glsl_shaders", 1); - - //do other things that aren't in the vid menu per se, but are related "high end" effects - Cvar_SetValue("r_shaders", 1); - Cvar_SetValue("gl_shadows", 0); - Cvar_SetValue("gl_dynamic", 1); - Cvar_SetValue("gl_mirror", 1); - Cvar_SetValue("gl_vlights", 1); - - VID_MenuInit(); -} - -static void ApplyChanges( void *unused ) -{ - float gamma; - float contrast; - int w, h; - - gamma = s_brightness_slider.curvalue/10.0; - contrast = s_contrast_slider.curvalue/10.0; - - Cvar_SetValue( "vid_gamma", gamma ); - Cvar_SetValue( "vid_contrast", contrast ); - Cvar_SetValue( "gl_picmip", 3 - s_tq_slider.curvalue ); - Cvar_SetValue( "vid_fullscreen", s_fs_box.curvalue ); - Cvar_SetValue( "gl_finish", s_finish_box.curvalue ); - Cvar_SetValue( "gl_swapinterval", s_vsync_box.curvalue ); - - if (s_mode_list.curvalue == 13) { - Cvar_SetValue( "gl_mode", -1); - - //set custom width and height only in this case - //check for sane values - w = atoi(s_width_field.buffer); - if ( w > 2048 ) - { - strcpy(s_width_field.buffer, "2048"); - w = 2048; - } - else if ( w < 640 ) - { - strcpy(s_width_field.buffer, "640"); - w = 640; - } - - h = atoi(s_height_field.buffer); - if (h > 1536) - { - strcpy(s_height_field.buffer, "1536"); - h = 1536; - } - else if (h < 480) - { - strcpy(s_height_field.buffer, "480"); - h = 480; - } - - Cvar_SetValue("vid_width", w); - Cvar_SetValue("vid_height", h); - } - else - Cvar_SetValue( "gl_mode", s_mode_list.curvalue ); - - Cvar_SetValue( "r_bloom", s_bloom_box.curvalue); - Cvar_SetValue( "r_bloom_intensity", s_bloom_slider.curvalue/10); - Cvar_SetValue( "r_overbrightbits", - (s_overbright_slider.curvalue == 3.0f ? 4.0f : s_overbright_slider.curvalue) ); - Cvar_SetValue( "_windowed_mouse", s_windowed_mouse.curvalue); - Cvar_SetValue( "gl_modulate", s_modulate_slider.curvalue); - Cvar_SetValue( "gl_normalmaps", s_normalmaps_box.curvalue); - Cvar_SetValue( "gl_shadowmaps", s_shadowmaps_box.curvalue); - Cvar_SetValue( "gl_glsl_postprocess", s_postprocess_box.curvalue); - Cvar_SetValue( "gl_glsl_shaders", s_glsl_box.curvalue); - if(s_normalmaps_box.curvalue) - Cvar_SetValue("r_shaders", 1); //shaders must be enabled for this to work - Cvar_SetValue( "gl_usevbo", s_vbo_box.curvalue); - - RS_FreeUnmarked(); - Cvar_SetValue("scriptsloaded", 0); //scripts get flushed - - vid_ref->modified = true; -#if defined UNIX_VARIANT - vid_restart = true; -#endif - - M_ForceMenuOff(); -} - -static void CancelChanges( void *unused ) -{ - extern void M_PopMenu( void ); - - M_PopMenu(); -} - -/* -** VID_MenuInit -*/ -void VID_MenuInit( void ) -{ - static const char *resolutions[] = - { - "[640 480 ]", - "[800 600 ]", - "[960 720 ]", - "[1024 768 ]", - "[1152 864 ]", - "[1280 960 ]", - "[1280 1024]", - "[1360 768 ]", - "[1366 768 ]", - "[1600 1200]", - "[1680 1050]", - "[1920 1080]", - "[2048 1536]", - "[custom ]", - 0 - }; - - static const char *yesno_names[] = - { - "no", - "yes", - 0 - }; - static const char *onoff_names[] = - { - "off", - "on", - 0 - }; - float scale; - - scale = (float)viddef.height/600; - - banneralpha = 0.1; - - if ( !gl_picmip ) - gl_picmip = Cvar_Get( "gl_picmip", "0", CVAR_ARCHIVE ); - if ( !gl_mode ) - gl_mode = Cvar_Get( "gl_mode", "3", CVAR_ARCHIVE ); - if ( !gl_finish ) - gl_finish = Cvar_Get( "gl_finish", "0", CVAR_ARCHIVE ); - if ( !gl_swapinterval ) - gl_swapinterval = Cvar_Get( "gl_swapinterval", "1", CVAR_ARCHIVE ); - if ( !r_bloom ) - r_bloom = Cvar_Get( "r_bloom", "0", CVAR_ARCHIVE ); - if ( !r_bloom_intensity ) - r_bloom_intensity = Cvar_Get( "r_bloom_intensity", "0.5", CVAR_ARCHIVE); - if ( !r_overbrightbits ) - r_overbrightbits = Cvar_Get( "r_overbrightbits", "2", CVAR_ARCHIVE); - if ( !gl_modulate ) - gl_modulate = Cvar_Get( "gl_modulate", "2", CVAR_ARCHIVE); - if ( !vid_width ) - vid_width = Cvar_Get( "vid_width", "640", CVAR_ARCHIVE); - if ( !vid_height ) - vid_height = Cvar_Get( "vid_height", "400", CVAR_ARCHIVE); - if (!gl_normalmaps) - gl_normalmaps = Cvar_Get( "gl_normalmaps", "0", CVAR_ARCHIVE); - if (!gl_shadowmaps) - gl_shadowmaps = Cvar_Get( "gl_shadowmaps", "0", CVAR_ARCHIVE); - if (!gl_glsl_postprocess) - gl_glsl_postprocess = Cvar_Get( "gl_glsl_postprocess", "1", CVAR_ARCHIVE); - if (!gl_glsl_shaders) - gl_glsl_shaders = Cvar_Get( "gl_glsl_shaders", "1", CVAR_ARCHIVE); - if (!gl_usevbo) - gl_usevbo = Cvar_Get( "gl_usevbo", "1", CVAR_ARCHIVE); - - if ( !_windowed_mouse) - _windowed_mouse = Cvar_Get( "_windowed_mouse", "1", CVAR_ARCHIVE ); - - if(gl_mode->value == -1) - s_mode_list.curvalue = 13; - else - s_mode_list.curvalue = gl_mode->value; - - if ( s_mode_list.curvalue < 0 ) - s_mode_list.curvalue = 0; - - s_bloom_slider.curvalue = r_bloom_intensity->value*10; - - s_opengl_menu.x = viddef.width*0.50 + 40*scale; - s_opengl_menu.nitems = 0; - - s_mode_list.generic.type = MTYPE_SPINCONTROL; - s_mode_list.generic.name = "video mode"; - s_mode_list.generic.x = 24*scale; - s_mode_list.generic.y = FONTSCALE*10*scale; - s_mode_list.itemnames = resolutions; - - s_width_field.generic.type = MTYPE_FIELD; - s_width_field.generic.name = "custom width"; - s_width_field.generic.flags = QMF_NUMBERSONLY; - s_width_field.generic.x = 32*scale; - s_width_field.generic.y = FONTSCALE*30*scale; - s_width_field.generic.statusbar = "set custom width"; - s_width_field.length = 4*scale; - s_width_field.visible_length = 4*scale; - strcpy(s_width_field.buffer, Cvar_VariableString("vid_width")); - - s_height_field.generic.type = MTYPE_FIELD; - s_height_field.generic.name = "custom height"; - s_height_field.generic.flags = QMF_NUMBERSONLY; - s_height_field.generic.x = 32*scale; - s_height_field.generic.y = FONTSCALE*50*scale; - s_height_field.generic.statusbar = "set custom height"; - s_height_field.length = 4*scale; - s_height_field.visible_length = 4*scale; - strcpy(s_height_field.buffer, Cvar_VariableString("vid_height")); - - s_brightness_slider.generic.type = MTYPE_SLIDER; - s_brightness_slider.generic.x = 24*scale; - s_brightness_slider.generic.y = FONTSCALE*70*scale; - s_brightness_slider.generic.name = "texture brightness"; - s_brightness_slider.generic.callback = BrightnessCallback; - s_brightness_slider.minvalue = 1; - s_brightness_slider.maxvalue = 20; - s_brightness_slider.curvalue = vid_gamma->value * 10; - - s_contrast_slider.generic.type = MTYPE_SLIDER; - s_contrast_slider.generic.x = 24*scale; - s_contrast_slider.generic.y = FONTSCALE*80*scale; - s_contrast_slider.generic.name = "texture contrast"; - s_contrast_slider.generic.callback = ContrastCallback; - s_contrast_slider.minvalue = 1; - s_contrast_slider.maxvalue = 20; - s_contrast_slider.curvalue = vid_contrast->value * 10; - - s_modulate_slider.generic.type = MTYPE_SLIDER; - s_modulate_slider.generic.x = 24*scale; - s_modulate_slider.generic.y = FONTSCALE*90*scale; - s_modulate_slider.generic.name = "lightmap brightness"; - s_modulate_slider.minvalue = 1; - s_modulate_slider.maxvalue = 5; - s_modulate_slider.generic.callback = ModulateCallback; - s_modulate_slider.curvalue = gl_modulate->value; - - s_fs_box.generic.type = MTYPE_SPINCONTROL; - s_fs_box.generic.x = 24*scale; - s_fs_box.generic.y = FONTSCALE*100*scale; - s_fs_box.generic.name = "fullscreen"; - s_fs_box.itemnames = yesno_names; - s_fs_box.curvalue = vid_fullscreen->value; - - s_bloom_box.generic.type = MTYPE_SPINCONTROL; - s_bloom_box.generic.x = 24*scale; - s_bloom_box.generic.y = FONTSCALE*110*scale; - s_bloom_box.generic.name = "light bloom"; - s_bloom_box.itemnames = onoff_names; - s_bloom_box.generic.callback = BloomSetCallback; - s_bloom_box.curvalue = r_bloom->value; - - s_bloom_slider.generic.type = MTYPE_SLIDER; - s_bloom_slider.generic.x = 24*scale; - s_bloom_slider.generic.y = FONTSCALE*120*scale; - s_bloom_slider.generic.name = "bloom intensity"; - s_bloom_slider.minvalue = 0; - s_bloom_slider.maxvalue = 20; - s_bloom_slider.generic.callback = BloomCallback; - - s_overbright_slider.generic.type = MTYPE_SLIDER; - s_overbright_slider.generic.x = 24*scale; - s_overbright_slider.generic.y = FONTSCALE*130*scale; - s_overbright_slider.generic.name = "overbright bits"; - s_overbright_slider.minvalue = 1; - s_overbright_slider.maxvalue = 3; - s_overbright_slider.curvalue = - (r_overbrightbits->value == 4.0f) ? 3.0f : r_overbrightbits->value; - - s_tq_slider.generic.type = MTYPE_SLIDER; - s_tq_slider.generic.x = 24*scale; - s_tq_slider.generic.y = FONTSCALE*140*scale; - s_tq_slider.generic.name = "texture quality"; - s_tq_slider.minvalue = 0; - s_tq_slider.maxvalue = 3; - s_tq_slider.curvalue = 3-gl_picmip->value; - - s_normalmaps_box.generic.type = MTYPE_SPINCONTROL; - s_normalmaps_box.generic.x = 24*scale; - s_normalmaps_box.generic.y = FONTSCALE*160*scale; - s_normalmaps_box.generic.name = "normal maps"; - s_normalmaps_box.curvalue = gl_normalmaps->value; - s_normalmaps_box.itemnames = yesno_names; - s_normalmaps_box.generic.callback = NormalMapsCallback; - - s_shadowmaps_box.generic.type = MTYPE_SPINCONTROL; - s_shadowmaps_box.generic.x = 24*scale; - s_shadowmaps_box.generic.y = FONTSCALE*170*scale; - s_shadowmaps_box.generic.name = "shadow maps"; - s_shadowmaps_box.curvalue = gl_shadowmaps->value; - s_shadowmaps_box.itemnames = yesno_names; - s_shadowmaps_box.generic.callback = ShadowMapsCallback; - - s_postprocess_box.generic.type = MTYPE_SPINCONTROL; - s_postprocess_box.generic.x = 24*scale; - s_postprocess_box.generic.y = FONTSCALE*180*scale; - s_postprocess_box.generic.name = "post process effects"; - s_postprocess_box.curvalue = gl_glsl_postprocess->value; - s_postprocess_box.itemnames = yesno_names; - s_postprocess_box.generic.callback = PostProcessCallback; - - s_glsl_box.generic.type = MTYPE_SPINCONTROL; - s_glsl_box.generic.x = 24*scale; - s_glsl_box.generic.y = FONTSCALE*190*scale; - s_glsl_box.generic.name = "GLSL shaders"; - s_glsl_box.curvalue = gl_glsl_shaders->value; - s_glsl_box.itemnames = yesno_names; - s_glsl_box.generic.callback = GlslCallback; - - s_vbo_box.generic.type = MTYPE_SPINCONTROL; - s_vbo_box.generic.x = 24*scale; - s_vbo_box.generic.y = FONTSCALE*200*scale; - s_vbo_box.generic.name = "vertex buffer objects"; - s_vbo_box.curvalue = gl_usevbo->value; - s_vbo_box.itemnames = yesno_names; - s_vbo_box.generic.statusbar = "increase performance - may be unstable"; - s_vbo_box.generic.callback = VboCallback; - - s_finish_box.generic.type = MTYPE_SPINCONTROL; - s_finish_box.generic.x = 24*scale; - s_finish_box.generic.y = FONTSCALE*210*scale; - s_finish_box.generic.name = "draw frame completely"; - s_finish_box.curvalue = gl_finish->value; - s_finish_box.itemnames = yesno_names; - - s_vsync_box.generic.type = MTYPE_SPINCONTROL; - s_vsync_box.generic.x = 24*scale; - s_vsync_box.generic.y = FONTSCALE*220*scale; - s_vsync_box.generic.name = "vertical sync"; - s_vsync_box.curvalue = gl_swapinterval->value; - s_vsync_box.itemnames = onoff_names; - - s_windowed_mouse.generic.type = MTYPE_SPINCONTROL; - s_windowed_mouse.generic.x = 24*scale; - s_windowed_mouse.generic.y = FONTSCALE*230*scale; - s_windowed_mouse.generic.name = "windowed mouse"; - s_windowed_mouse.curvalue = _windowed_mouse->value; - s_windowed_mouse.itemnames = yesno_names; - - s_lowest_action.generic.type = MTYPE_ACTION; - s_lowest_action.generic.name = "lowest settings"; - s_lowest_action.generic.x = 24*scale; - s_lowest_action.generic.y = FONTSCALE*250*scale; - s_lowest_action.generic.callback = SetLowest; - s_lowest_action.generic.statusbar = "no shaders, no dynamic lighting"; - - s_low_action.generic.type = MTYPE_ACTION; - s_low_action.generic.name = "low settings"; - s_low_action.generic.x = 24*scale; - s_low_action.generic.y = FONTSCALE*260*scale; - s_low_action.generic.callback = SetLow; - s_low_action.generic.statusbar = "shaders, but no dynamic lighting"; - - s_medium_action.generic.type = MTYPE_ACTION; - s_medium_action.generic.name = "medium settings"; - s_medium_action.generic.x = 24*scale; - s_medium_action.generic.y = FONTSCALE*270*scale; - s_medium_action.generic.callback = SetMedium; - s_medium_action.generic.statusbar = "GLSL per-pixel dynamic lighting and postprocess"; - - s_high_action.generic.type = MTYPE_ACTION; - s_high_action.generic.name = "high settings"; - s_high_action.generic.x = 24*scale; - s_high_action.generic.y = FONTSCALE*280*scale; - s_high_action.generic.callback = SetHigh; - s_high_action.generic.statusbar = "GLSL per-pixel effects on most surfaces"; - - s_highest_action.generic.type = MTYPE_ACTION; - s_highest_action.generic.name = "highest settings"; - s_highest_action.generic.x = 24*scale; - s_highest_action.generic.y = FONTSCALE*290*scale; - s_highest_action.generic.callback = SetHighest; - s_highest_action.generic.statusbar = "GLSL per-pixel effects on all surfaces"; - - s_apply_action.generic.type = MTYPE_ACTION; - s_apply_action.generic.name = "apply changes"; - s_apply_action.generic.x = 24*scale; - s_apply_action.generic.y = FONTSCALE*310*scale; - s_apply_action.generic.callback = ApplyChanges; - - Menu_AddItem( &s_opengl_menu, ( void * ) &s_mode_list); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_width_field); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_height_field); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_brightness_slider); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_contrast_slider); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_modulate_slider); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_fs_box); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_bloom_box ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_bloom_slider); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_overbright_slider ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_tq_slider ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_normalmaps_box ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_shadowmaps_box ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_postprocess_box ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_glsl_box ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_vbo_box ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_finish_box ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_vsync_box ); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_windowed_mouse ); - - Menu_AddItem( &s_opengl_menu, ( void * ) &s_lowest_action); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_low_action); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_medium_action); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_high_action); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_highest_action); - Menu_AddItem( &s_opengl_menu, ( void * ) &s_apply_action); - - Menu_Center( &s_opengl_menu ); - s_opengl_menu.x -= 8; -} - -/* -================ -VID_MenuDraw -================ -*/ -void VID_MenuDraw (void) -{ - int w, h; - float scale; - - scale = (float)(viddef.height)/600; - - banneralpha += 0.01; - if (banneralpha > 1) - banneralpha = 1; - - s_current_menu = &s_opengl_menu; - /* - ** draw the banner - */ - Draw_StretchPic(0, 0, viddef.width, viddef.height, "menu_back"); - Draw_GetPicSize( &w, &h, "m_video" ); - w*=scale; - h*=scale; - Draw_AlphaStretchPic( viddef.width / 2 - w / 2, viddef.height /2 - 275*scale, w, h, "m_video", banneralpha ); - - - /* - ** move cursor to a reasonable starting position - */ - Menu_AdjustCursor( s_current_menu, 1 ); - - /* - ** draw the menu - */ - Menu_Draw( s_current_menu ); -} - -/* -================ -VID_MenuKey -================ -*/ -const char *VID_MenuKey( int key ) -{ - extern void M_PopMenu( void ); - - menucommon_s *item; - menuframework_s *m = s_current_menu; - static const char *sound = "misc/menu1.wav"; - - if ( m ) - { - if ( ( item = Menu_ItemAtCursor( m ) ) != 0 ) - { - if ( item->type == MTYPE_FIELD ) - { - if ( Field_Key( ( menufield_s * ) item, key ) ) - return NULL; - } - } - } - - switch ( key ) - { - case K_ESCAPE: - CancelChanges( 0 ); - return NULL; - case K_KP_UPARROW: - case K_UPARROW: - m->cursor--; - Menu_AdjustCursor( m, -1 ); - break; - case K_KP_DOWNARROW: - case K_DOWNARROW: - m->cursor++; - Menu_AdjustCursor( m, 1 ); - break; - case K_KP_LEFTARROW: - case K_LEFTARROW: - Menu_SlideItem( m, -1 ); - break; - case K_KP_RIGHTARROW: - case K_RIGHTARROW: - Menu_SlideItem( m, 1 ); - break; - case K_KP_ENTER: - case K_ENTER: - if ( !Menu_SelectItem( m ) ) - ApplyChanges( NULL ); - break; - } - - return sound; -} diff -Nru alien-arena-7.53+dfsg/source/game/acesrc/acebot_ai.c alien-arena-7.66+dfsg/source/game/acesrc/acebot_ai.c --- alien-arena-7.53+dfsg/source/game/acesrc/acebot_ai.c 2011-12-12 05:04:02.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/acesrc/acebot_ai.c 2013-08-19 03:26:16.000000000 +0000 @@ -1,144 +1,144 @@ -/* -Copyright (C) 1997-2001 Id Software, Inc. -Copyright (C) 1998 Steve Yeager -Copyright (C) 2010 COR Entertainment, LLC. - -See below for Steve Yeager's original copyright notice. -Modified to GPL in 2002. - -This program 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. - -This program 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 this program; if not, write to the Free Software Foundation, Inc., -51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. -*/ -/////////////////////////////////////////////////////////////////////// -// -// ACE - Quake II Bot Base Code -// -// Version 1.0 -// -// This file is Copyright(c), Steve Yeager 1998, All Rights Reserved -// -// -// All other files are Copyright(c) Id Software, Inc. -// -// Please see liscense.txt in the source directory for the copyright -// information regarding those files belonging to Id Software, Inc. -// -// Should you decide to release a modified version of ACE, you MUST -// include the following text (minus the BEGIN and END lines) in the -// documentation for your modification. -// -// --- BEGIN --- -// -// The ACE Bot is a product of Steve Yeager, and is available from -// the ACE Bot homepage, at http://www.axionfx.com/ace. -// -// This program is a modification of the ACE Bot, and is therefore -// in NO WAY supported by Steve Yeager. - -// This program MUST NOT be sold in ANY form. If you have paid for -// this product, you should contact Steve Yeager immediately, via -// the ACE Bot homepage. -// -// --- END --- -// -// I, Steve Yeager, hold no responsibility for any harm caused by the -// use of this source code, especially to small children and animals. -// It is provided as-is with no implied warranty or support. -// -// I also wish to thank and acknowledge the great work of others -// that has helped me to develop this code. -// -// John Cricket - For ideas and swapping code. -// Ryan Feltrin - For ideas and swapping code. -// SABIN - For showing how to do true client based movement. -// BotEpidemic - For keeping us up to date. -// Telefragged.com - For giving ACE a home. -// Microsoft - For giving us such a wonderful crash free OS. -// id - Need I say more. -// -// And to all the other testers, pathers, and players and people -// who I can't remember who the heck they were, but helped out. -// -/////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////// -// -// acebot_ai.c - This file contains all of the -// AI routines for the ACE II bot. -// -// -// NOTE: I went back and pulled out most of the brains from -// a number of these functions. They can be expanded on -// to provide a "higher" level of AI. -//////////////////////////////////////////////////////////////////////// - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "game/g_local.h" -#include "game/m_player.h" - -#include "acebot.h" - -/////////////////////////////////////////////////////////////////////// -// Main Think function for bot -/////////////////////////////////////////////////////////////////////// -void ACEAI_Think (edict_t *self) -{ - usercmd_t ucmd; - - if ( !self->inuse || !self->is_bot ) - { - gi.dprintf("ACEAI_Think: bad call program error\n"); - return; - } - - // Set up client movement - VectorCopy(self->client->ps.viewangles,self->s.angles); - VectorSet (self->client->ps.pmove.delta_angles, 0, 0, 0); - memset (&ucmd, 0, sizeof (ucmd)); - self->enemy = NULL; - self->movetarget = NULL; - - // Force respawn - if (self->deadflag) - { - self->client->buttons = 0; - ucmd.buttons = BUTTON_ATTACK; - /* - * do nothing else until respawned. - */ - ClientThink (self, &ucmd); - self->nextthink = level.time + FRAMETIME; - return; - } - - if(self->state == STATE_WANDER && self->wander_timeout < level.time) - ACEAI_PickLongRangeGoal(self); // pick a new long range goal - - // Kill the bot if completely stuck somewhere - if(VectorLength(self->velocity) > 37) - self->suicide_timeout = level.time + 10.0; - - if(self->suicide_timeout < level.time && self->takedamage == DAMAGE_AIM && !level.intermissiontime) - { - self->health = 0; - player_die (self, self, self, 100000, vec3_origin); - // bot suicide, branch around irrelevant stuff. - goto clientthink; +/* +Copyright (C) 1997-2001 Id Software, Inc. +Copyright (C) 1998 Steve Yeager +Copyright (C) 2010 COR Entertainment, LLC. + +See below for Steve Yeager's original copyright notice. +Modified to GPL in 2002. + +This program 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. + +This program 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 this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ +/////////////////////////////////////////////////////////////////////// +// +// ACE - Quake II Bot Base Code +// +// Version 1.0 +// +// This file is Copyright(c), Steve Yeager 1998, All Rights Reserved +// +// +// All other files are Copyright(c) Id Software, Inc. +// +// Please see liscense.txt in the source directory for the copyright +// information regarding those files belonging to Id Software, Inc. +// +// Should you decide to release a modified version of ACE, you MUST +// include the following text (minus the BEGIN and END lines) in the +// documentation for your modification. +// +// --- BEGIN --- +// +// The ACE Bot is a product of Steve Yeager, and is available from +// the ACE Bot homepage, at http://www.axionfx.com/ace. +// +// This program is a modification of the ACE Bot, and is therefore +// in NO WAY supported by Steve Yeager. + +// This program MUST NOT be sold in ANY form. If you have paid for +// this product, you should contact Steve Yeager immediately, via +// the ACE Bot homepage. +// +// --- END --- +// +// I, Steve Yeager, hold no responsibility for any harm caused by the +// use of this source code, especially to small children and animals. +// It is provided as-is with no implied warranty or support. +// +// I also wish to thank and acknowledge the great work of others +// that has helped me to develop this code. +// +// John Cricket - For ideas and swapping code. +// Ryan Feltrin - For ideas and swapping code. +// SABIN - For showing how to do true client based movement. +// BotEpidemic - For keeping us up to date. +// Telefragged.com - For giving ACE a home. +// Microsoft - For giving us such a wonderful crash free OS. +// id - Need I say more. +// +// And to all the other testers, pathers, and players and people +// who I can't remember who the heck they were, but helped out. +// +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +// +// acebot_ai.c - This file contains all of the +// AI routines for the ACE II bot. +// +// +// NOTE: I went back and pulled out most of the brains from +// a number of these functions. They can be expanded on +// to provide a "higher" level of AI. +//////////////////////////////////////////////////////////////////////// + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "game/g_local.h" +#include "game/m_player.h" + +#include "acebot.h" + +/////////////////////////////////////////////////////////////////////// +// Main Think function for bot +/////////////////////////////////////////////////////////////////////// +void ACEAI_Think (edict_t *self) +{ + usercmd_t ucmd; + + if ( !self->inuse || !self->is_bot ) + { + gi.dprintf("ACEAI_Think: bad call program error\n"); + return; + } + + // Set up client movement + VectorCopy(self->client->ps.viewangles,self->s.angles); + VectorSet (self->client->ps.pmove.delta_angles, 0, 0, 0); + memset (&ucmd, 0, sizeof (ucmd)); + self->enemy = NULL; + self->movetarget = NULL; + + // Force respawn + if (self->deadflag) + { + self->client->buttons = 0; + ucmd.buttons = BUTTON_ATTACK; + /* + * do nothing else until respawned. + */ + ClientThink (self, &ucmd); + self->nextthink = level.time + FRAMETIME; + return; + } + + if(self->state == STATE_WANDER && self->wander_timeout < level.time) + ACEAI_PickLongRangeGoal(self); // pick a new long range goal + + // Kill the bot if completely stuck somewhere + if(VectorLength(self->velocity) > 37) + self->suicide_timeout = level.time + 10.0; + + if(self->suicide_timeout < level.time && self->takedamage == DAMAGE_AIM && !level.intermissiontime) + { + self->health = 0; + player_die (self, self, self, 100000, vec3_origin); + // bot suicide, branch around irrelevant stuff. + goto clientthink; } //reset the state from pauses for taunting @@ -147,197 +147,251 @@ //times up on spawn protection if(level.time > self->client->spawnprotecttime + g_spawnprotect->integer) - self->client->spawnprotected = false; - + self->client->spawnprotected = false; + // Find any short range goal - but not if in air(ie, jumping a jumppad) - if (self->groundentity) - ACEAI_PickShortRangeGoal(self); - - // Look for enemies - if ( ACEAI_FindEnemy( self ) ) - { - ACEAI_ChooseWeapon( self ); - ACEMV_Attack( self, &ucmd ); - } - else - { - // Execute the move, or wander - ACEAI_ChooseWeapon( self ); // for deselecting violator - if ( self->state == STATE_WANDER ) - { - ACEMV_Wander( self, &ucmd ); - } - else if ( self->state == STATE_MOVE ) - { - ACEMV_Move( self, &ucmd ); - } - - } - -clientthink: - // debug_printf("State: %d\n",self->state); - ucmd.msec = 100; // bots "client loop" runs at server frame rate - self->client->ping = 0; //show in scoreboard ping of 0 - - // set bot's view angle - ucmd.angles[PITCH] = ANGLE2SHORT( self->s.angles[PITCH] ); - ucmd.angles[YAW] = ANGLE2SHORT( self->s.angles[YAW] ); - ucmd.angles[ROLL] = ANGLE2SHORT( self->s.angles[ROLL] ); - - // send command through id's code - ClientThink (self, &ucmd); - - self->nextthink = level.time + FRAMETIME; -} - -/////////////////////////////////////////////////////////////////////// -// Evaluate the best long range goal and send the bot on -// its way. This is a good time waster, so use it sparingly. -// Do not call it for every think cycle. -/////////////////////////////////////////////////////////////////////// -void ACEAI_PickLongRangeGoal(edict_t *self) -{ - int i; - int node; - float weight,best_weight=0.0; - int current_node,goal_node=0; - edict_t *goal_ent=NULL, *ent; - float cost; -#ifdef CTFNODES - gitem_t *flag1_item, *flag2_item; - qboolean hasFlag = false; - - // look for a target - - //if flag in possession, try to find base nodes - if(ctf->value) - { - flag1_item = FindItemByClassname("item_flag_red"); - flag2_item = FindItemByClassname("item_flag_blue"); + if (self->groundentity) + ACEAI_PickShortRangeGoal(self); + + // Look for enemies + if ( ACEAI_FindEnemy( self ) ) + { + ACEAI_ChooseWeapon( self ); + ACEMV_Attack( self, &ucmd ); + } + else + { + // Execute the move, or wander + ACEAI_ChooseWeapon( self ); // for deselecting violator + if ( self->state == STATE_WANDER ) + { + ACEMV_Wander( self, &ucmd ); + } + else if ( self->state == STATE_MOVE ) + { + ACEMV_Move( self, &ucmd ); + } + } + +clientthink: + // debug_printf("State: %d\n",self->state); + ucmd.msec = 100; // bots "client loop" runs at server frame rate + self->client->ping = 0; //show in scoreboard ping of 0 + + // set bot's view angle + ucmd.angles[PITCH] = ANGLE2SHORT( self->s.angles[PITCH] ); + ucmd.angles[YAW] = ANGLE2SHORT( self->s.angles[YAW] ); + ucmd.angles[ROLL] = ANGLE2SHORT( self->s.angles[ROLL] ); + + // send command through id's code + ClientThink (self, &ucmd); + + self->nextthink = level.time + FRAMETIME; +} + +/////////////////////////////////////////////////////////////////////// +// Evaluate the best long range goal and send the bot on +// its way. This is a good time waster, so use it sparingly. +// Do not call it for every think cycle. +/////////////////////////////////////////////////////////////////////// +void ACEAI_PickLongRangeGoal(edict_t *self) +{ + int i; + int node; + float weight,best_weight=0.0; + int current_node,goal_node=0; + edict_t *goal_ent=NULL, *ent; + float cost; + gitem_t *flag1_item, *flag2_item; + qboolean hasFlag = false; + + // look for a target + + flag1_item = FindItemByClassname("item_flag_red"); + flag2_item = FindItemByClassname("item_flag_blue"); + + //if flag in possession, try to find base nodes + if(ctf->value) + { if (self->client->pers.inventory[ITEM_INDEX(flag1_item)]) { current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_BLUEBASE); - hasFlag = true; + if(current_node == -1) + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_ALL); + else + hasFlag = true; } else if (self->client->pers.inventory[ITEM_INDEX(flag2_item)]) { - current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_REDBASE); - hasFlag = true; - } - else - current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_ALL); - } - else -#endif - current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_ALL); - - self->current_node = current_node; - - if(current_node == -1) - { - self->state = STATE_WANDER; - self->wander_timeout = level.time + 1.0; - self->goal_node = -1; - return; - } -#ifdef CTFNODES - if(!hasFlag) - { -#endif - /////////////////////////////////////////////////////// - // Items - /////////////////////////////////////////////////////// - for(i=0;isolid == SOLID_NOT) // ignore items that are not there. - continue; - - cost = ACEND_FindCost(current_node,item_table[i].node); - - if(cost == INVALID || cost < 2) // ignore invalid and very short hops - continue; - - weight = ACEIT_ItemNeed(self, item_table[i].item); - - weight *= random(); // Allow random variations - weight /= cost; // Check against cost of getting there - - if(weight > best_weight) - { - best_weight = weight; - goal_node = item_table[i].node; - goal_ent = item_table[i].ent; - } - } - - /////////////////////////////////////////////////////// - // Players - /////////////////////////////////////////////////////// - // This should be its own function and is for now just - // finds a player to set as the goal. - for(i=0;iinuse || (ent->client->invis_framenum > level.framenum)) - continue; - - node = ACEND_FindClosestReachableNode(ent,NODE_DENSITY,NODE_ALL); - cost = ACEND_FindCost(current_node, node); - - if(cost == INVALID || cost < 3) // ignore invalid and very short hops - continue; - - weight = 0.3; - - weight *= random(); // Allow random variations - weight /= cost; // Check against cost of getting there - - //to do - check for flag, and if enemy has the flag, up the weight. - if(weight > best_weight) - { - best_weight = weight; - goal_node = node; - goal_ent = ent; - } - } -#ifdef CTFNODES - } - else - { - goal_node = current_node; - best_weight = 1.0; - } -#endif - // If do not find a goal, go wandering.... - if(best_weight == 0.0 || goal_node == INVALID) - { - self->goal_node = INVALID; - self->state = STATE_WANDER; - self->wander_timeout = level.time + 1.0; - - if(debug_mode) - debug_printf("%s did not find a LR goal, wandering.\n",self->client->pers.netname); - return; // no path? - } - - // OK, everything valid, let's start moving to our goal. - self->state = STATE_MOVE; - self->tries = 0; // Reset the count of how many times we tried this goal - - if(goal_ent != NULL && debug_mode) - debug_printf("%s selected a %s at node %d (type: %i) for LR goal.\n",self->client->pers.netname, goal_ent->classname, goal_node, nodes[goal_node].type); - else if(debug_mode) - debug_printf("%s selected node %d (type: %i) for LR goal.\n",self->client->pers.netname, goal_node, nodes[goal_node].type); - - ACEND_SetGoal(self,goal_node); - -} - -/////////////////////////////////////////////////////////////////////// -// Pick best goal based on importance and range. This function -// overrides the long range goal selection for items that -// are very close to the bot and are reachable. + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_REDBASE); + if(current_node == -1) + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_ALL); + else + hasFlag = true; + } + else + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_ALL); + } + else if(g_tactical->value) //when a base's laser barriers shut off, go into a more direct attack route + { + if (self->ctype == 1 && (!tacticalScore.alienComputer || !tacticalScore.alienPowerSource)) + { + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_BLUEBASE); + if(current_node == -1) + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_ALL); + else + hasFlag = true; //we can use this from CTF - bots will ignore most anything and attack base components + } + else if (self->ctype == 0 && (!tacticalScore.humanComputer || !tacticalScore.humanPowerSource)) + { + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_REDBASE); + if(current_node == -1) + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_ALL); + else + hasFlag = true; + } + else + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_ALL); + } + else + current_node = ACEND_FindClosestReachableNode(self,NODE_DENSITY,NODE_ALL); + + self->current_node = current_node; + + if(current_node == -1) + { + self->state = STATE_WANDER; + self->wander_timeout = level.time + 1.0; + self->goal_node = -1; + return; + } + + if(!hasFlag) + { + /////////////////////////////////////////////////////// + // Items + /////////////////////////////////////////////////////// + for(i=0;isolid == SOLID_NOT) // ignore items that are not there. + continue; + + cost = ACEND_FindCost(current_node,item_table[i].node); + + if(cost == INVALID || cost < 2) // ignore invalid and very short hops + continue; + + weight = ACEIT_ItemNeed(self, item_table[i].item); + + weight *= random(); // Allow random variations + weight /= cost; // Check against cost of getting there + + if(weight > best_weight) + { + best_weight = weight; + goal_node = item_table[i].node; + goal_ent = item_table[i].ent; + } + } + + /////////////////////////////////////////////////////// + // Players + /////////////////////////////////////////////////////// + // This should be its own function and is for now just + // finds a player to set as the goal. + for(i = 0; i < game.maxclients; i++) + { + ent = g_edicts + i + 1; + if(ent == self || !ent->inuse || (ent->client->invis_framenum > level.framenum)) + continue; + + node = ACEND_FindClosestReachableNode(ent,NODE_DENSITY,NODE_ALL); + cost = ACEND_FindCost(current_node, node); + + if(cost == INVALID || cost < 3) // ignore invalid and very short hops + continue; + + weight = 0.3; + + weight *= random(); // Allow random variations + weight /= cost; // Check against cost of getting there + + //to do - check for flag, and if enemy has the flag, up the weight. + if(weight > best_weight) + { + best_weight = weight; + goal_node = node; + goal_ent = ent; + } + } + } + else + { + qboolean hadCTFnode = false; + //we need to get node at the end of the path + //We can walk the node table and get the last linked node of this type further down the list than this node + for(i = 0;i < bot_numnodes; i++) + { + if (self->client->pers.inventory[ITEM_INDEX(flag1_item)] || (g_tactical->value && self->ctype == 1)) + { + if(nodes[i].type == NODE_BLUEBASE) + { + goal_node = i; + hadCTFnode = true; + } + } + + if (self->client->pers.inventory[ITEM_INDEX(flag2_item)] || (g_tactical->value && self->ctype == 0)) + { + if(nodes[i].type == NODE_REDBASE) + { + goal_node = i; + hadCTFnode = true; + } + } + } + + if(!hadCTFnode) + { + self->state = STATE_WANDER; + self->wander_timeout = level.time + 1.0; + self->goal_node = -1; + return; + } + + best_weight = 1.0; + } + + // If do not find a goal, go wandering.... + if(best_weight == 0.0 || goal_node == INVALID) + { + self->goal_node = INVALID; + self->state = STATE_WANDER; + self->wander_timeout = level.time + 1.0; + + if(debug_mode) + debug_printf("%s did not find a LR goal, wandering.\n",self->client->pers.netname); + return; // no path? + } + + // OK, everything valid, let's start moving to our goal. + self->state = STATE_MOVE; + self->tries = 0; // Reset the count of how many times we tried this goal + + if(goal_ent != NULL && debug_mode) + debug_printf("%s selected a %s at node %d (type: %i) for LR goal.\n",self->client->pers.netname, goal_ent->classname, goal_node, nodes[goal_node].type); + else if(debug_mode) + debug_printf("%s selected node %d (type: %i) for LR goal.\n",self->client->pers.netname, goal_node, nodes[goal_node].type); + + ACEND_SetGoal(self,goal_node); + +} + +/////////////////////////////////////////////////////////////////////// +// Pick best goal based on importance and range. This function +// overrides the long range goal selection for items that +// are very close to the bot and are reachable. /////////////////////////////////////////////////////////////////////// //use this so that bots aren't trying to get to an enemy or item that is behind grating or glass. @@ -359,139 +413,147 @@ return true; } - -void ACEAI_PickShortRangeGoal(edict_t *self) -{ - edict_t *target; - float weight,best_weight=0.0; - edict_t *best = NULL; - int index; - - // look for a target (should make more efficent later) - target = findradius(NULL, self->s.origin, 200); - - while(target) - { - if(target->classname == NULL) - return; - - // Missle avoidance code - // Set our movetarget to be the rocket or grenade fired at us. - if(strcmp(target->classname,"rocket")==0 || strcmp(target->classname,"grenade") ==0) - { - if(debug_mode) - debug_printf("ROCKET ALERT!\n"); - - self->movetarget = target; - return; - } - if (strcmp(target->classname, "player") == 0) //so players can't sneak RIGHT up on a bot - { - if(!target->deadflag && !self->in_deathball && !OnSameTeam(self, target) && !(target->client->invis_framenum > level.framenum)) - { - self->movetarget = target; - } - } - if (ACEIT_IsReachable(self,target->s.origin)) - { - if (infront(self, target) && ACEIT_IsVisibleSolid(self, target)) - { - index = ACEIT_ClassnameToIndex(target->classname); - weight = ACEIT_ItemNeed(self, index); - - if(weight > best_weight) - { - best_weight = weight; - best = target; - } - } - } - - // next target - target = findradius(target, self->s.origin, 200); //was 200 - } - - if(best_weight) - { - self->movetarget = best; - - if(debug_mode && self->goalentity != self->movetarget) - debug_printf("%s selected a %s for SR goal.\n",self->client->pers.netname, self->movetarget->classname); - - self->goalentity = best; - - } - -} - -/////////////////////////////////////////////////////////////////////// -// Scan for enemy -/////////////////////////////////////////////////////////////////////// - -qboolean ACEAI_infront (edict_t *self, edict_t *other) -{ - vec3_t vec; - float dot; - vec3_t forward; - gitem_t *vehicle; - - vehicle = FindItemByClassname("item_bomber"); - - if (self->client->pers.inventory[ITEM_INDEX(vehicle)]) { - return true; //do this so that they aren't getting lost and just flying off - } - vehicle = FindItemByClassname("item_strafer"); - - if (self->client->pers.inventory[ITEM_INDEX(vehicle)]) { - return true; //do this so that they aren't getting lost and just flying off - } - - AngleVectors (self->s.angles, forward, NULL, NULL); - VectorSubtract (other->s.origin, self->s.origin, vec); - VectorNormalize (vec); - dot = DotProduct (vec, forward); - - if (dot > (1.0 - self->awareness)) - return true; - - return false; -} - -qboolean ACEAI_FindEnemy(edict_t *self) -{ - int i; - vec3_t dist; - edict_t *bestenemy = NULL; - float bestweight = 99999; - float weight; + +void ACEAI_PickShortRangeGoal(edict_t *self) +{ + edict_t *target; + float weight,best_weight=0.0; + edict_t *best = NULL; + int index; + + // look for a target (should make more efficent later) + target = findradius(NULL, self->s.origin, 200); + + while(target) + { + if(target->classname == NULL) + return; + + // Missle avoidance code + // Set our movetarget to be the rocket or grenade fired at us. + if(strcmp(target->classname,"rocket") == 0 || strcmp(target->classname,"grenade") == 0 + || strcmp(target->classname,"seeker") == 0) + { + if(debug_mode) + debug_printf("PROJECTILE ALERT!\n"); + + self->movetarget = target; + return; + } + if (strcmp(target->classname, "player") == 0) //so players can't sneak RIGHT up on a bot + { + if(!target->deadflag && !self->in_deathball && !OnSameTeam(self, target) && !(target->client->invis_framenum > level.framenum)) + { + self->movetarget = target; + } + } + if (ACEIT_IsReachable(self,target->s.origin)) + { + if (infront(self, target) && ACEIT_IsVisibleSolid(self, target)) + { + index = ACEIT_ClassnameToIndex(target->classname); + weight = ACEIT_ItemNeed(self, index); + + if(weight > best_weight) + { + best_weight = weight; + best = target; + } + } + } + + // next target + target = findradius(target, self->s.origin, 200); //was 200 + } + + if(best_weight) + { + self->movetarget = best; + + if(debug_mode && self->goalentity != self->movetarget) + debug_printf("%s selected a %s for SR goal.\n",self->client->pers.netname, self->movetarget->classname); + + self->goalentity = best; + + } + +} + +/////////////////////////////////////////////////////////////////////// +// Scan for enemy +/////////////////////////////////////////////////////////////////////// + +qboolean ACEAI_infront (edict_t *self, edict_t *other) +{ + vec3_t vec; + float dot; + vec3_t forward; + gitem_t *vehicle; + + vehicle = FindItemByClassname("item_bomber"); + + if (self->client->pers.inventory[ITEM_INDEX(vehicle)]) + { + return true; //do this so that they aren't getting lost and just flying off + } + vehicle = FindItemByClassname("item_strafer"); + + if (self->client->pers.inventory[ITEM_INDEX(vehicle)]) + { + return true; //do this so that they aren't getting lost and just flying off + } + + AngleVectors (self->s.angles, forward, NULL, NULL); + VectorSubtract (other->s.origin, self->s.origin, vec); + VectorNormalize (vec); + dot = DotProduct (vec, forward); + + if (dot > (1.0 - self->awareness)) + return true; + + return false; +} + +qboolean ACEAI_FindEnemy(edict_t *self) +{ + int i; + vec3_t dist; + edict_t *bestenemy = NULL; + float bestweight = 99999; + float weight; gitem_t *flag1_item=NULL, *flag2_item=NULL; edict_t *target; - edict_t *ent; - - if(ctf->value) { - flag1_item = FindItemByClassname("item_flag_red"); - flag2_item = FindItemByClassname("item_flag_blue"); + edict_t *ent; + + if(ctf->value) + { + flag1_item = FindItemByClassname("item_flag_red"); + flag2_item = FindItemByClassname("item_flag_blue"); } - if(self->in_deathball && (self->health > 25)) { //cannot, or should not, fire at players when in a deathball + if(self->in_deathball && (self->health > 25)) + { + //cannot, or should not, fire at players when in a deathball //look for goal - if health is too low, drop the ball and fight back target = findradius(NULL, self->s.origin, 200); self->enemy = NULL; while(target) { - if(target->classname == NULL) { + if(target->classname == NULL) + { self->enemy = NULL; return false; } - if(self->dmteam == RED_TEAM && (strcmp(target->classname, "item_blue_dbtarget") == 0)) + if(self->dmteam == RED_TEAM && target->classname == "item_blue_dbtarget") self->enemy = target; - else if(self->dmteam == BLUE_TEAM && (strcmp(target->classname, "item_red_dbtarget") == 0)) + else if(self->dmteam == BLUE_TEAM && target->classname == "item_red_dbtarget") self->enemy = target; - else if(self->dmteam == NO_TEAM && (strcmp(target->classname, "item_dbtarget") == 0)) + else if(self->dmteam == NO_TEAM && target->classname == "item_dbtarget") self->enemy = target; target = findradius(target, self->s.origin, 200); } - if(self->enemy) { + if(self->enemy) + { //safe_bprintf(PRINT_MEDIUM, "Target Aquired!\n"); self->movetarget = self->enemy; self->goalentity= self->enemy; //face it, and fire @@ -500,26 +562,31 @@ else return false; } + //only look for these if your team's spider is vulnerable if(tca->value && ((self->dmteam == RED_TEAM && red_team_score < 2) || (self->dmteam == BLUE_TEAM && blue_team_score < 2))) { target = findradius(NULL, self->s.origin, 300); self->enemy = NULL; while(target) { - if(target->classname == NULL) { + if(target->classname == NULL) + { self->enemy = NULL; return false; } - if(self->dmteam == RED_TEAM) { - if(strcmp(target->classname, "misc_bluespidernode") == 0) + if(self->dmteam == RED_TEAM) + { + if(target->classname == "misc_bluespidernode") self->enemy = target; } - if(self->dmteam == BLUE_TEAM) { - if(strcmp(target->classname, "misc_redspidernode") == 0) + else if(self->dmteam == BLUE_TEAM) + { + if(target->classname == "misc_redspidernode") self->enemy = target; } target = findradius(target, self->s.origin, 300); - if(self->enemy) { + if(self->enemy) + { //safe_bprintf(PRINT_MEDIUM, "Target Aquired!\n"); self->movetarget = self->enemy; self->goalentity= self->enemy; //face it, and fire @@ -528,82 +595,130 @@ else return false; } - } - - if(self->oldenemy != NULL) //(was shot from behind) - { - if(!OnSameTeam(self, self->oldenemy)) - { - //to do - add code to ask for help if carrying the flag - self->enemy = self->oldenemy; - self->oldenemy = NULL; - return true; - } - } - - for(i=0;ivalue) + { + target = findradius(NULL, self->s.origin, 200); + self->enemy = NULL; + while(target) + { + if(target->classname == NULL) + { + self->enemy = NULL; + return false; + } + if(self->ctype == 1) + { + if(target->classname == "hbomb") + return false; //prevents them from accidently destorying a planted bomb + else if(target->classname == "alien computer") + self->enemy = target; + else if(target->classname == "alien powersrc") + self->enemy = target; + else if(target->classname == "alien ammodepot") + self->enemy = target; + else if(target->classname == "alien backupgen") + self->enemy = target; + } + else if(self->ctype == 0) + { + if(target->classname == "abomb") + return false; + else if(target->classname == "human computer") + self->enemy = target; + else if(target->classname == "human powersrc") + self->enemy = target; + else if(target->classname == "human ammodepot") + self->enemy = target; + else if(target->classname == "human backupgen") + self->enemy = target; + } + target = findradius(target, self->s.origin, 200); + if(self->enemy) + { + self->movetarget = self->enemy; + self->goalentity= self->enemy; //face it, and fire + return true; + } + } + } + + if(self->oldenemy != NULL) //(was shot from behind) + { + if(!OnSameTeam(self, self->oldenemy)) + { + //to do - add code to ask for help if carrying the flag + self->enemy = self->oldenemy; + self->oldenemy = NULL; + return true; + } + } + + for(i=0;iinuse || + ent = g_edicts + i + 1; + if(ent == NULL || ent == self || !ent->inuse || ent->solid == SOLID_NOT) - continue; - - if(!ent->deadflag && ACEAI_infront(self, ent) && ACEIT_IsVisibleSolid(self, ent) && gi.inPVS (self->s.origin, ent->s.origin) - && (!OnSameTeam(self, ent))) - { - VectorSubtract(self->s.origin, ent->s.origin, dist); - weight = VectorLength( dist ); - - //add some more checks here, for health and armor, just slight, but enough to make them favor going for the weaker player - - // Check if best target, or better than current target - if (weight < bestweight) - { - bestweight = weight; - bestenemy = ent; - } - - } - } - if(bestenemy) { - - self->enemy = bestenemy; - //if using a blaster, and it's far away, don't fire, it's pointless - if((self->client->pers.weapon == FindItem("blaster")) && (bestweight > 1500)) { - self->enemy = NULL; - return false; - } - //if carrying a flag, and not close to an enemy, continue running to goal - if(ctf->value) { - if (((self->client->pers.inventory[ITEM_INDEX(flag1_item)]) || - (self->client->pers.inventory[ITEM_INDEX(flag2_item)])) && bestweight > 300) { - self->enemy = NULL; - return false; - } - } - return true; - } - return false; - -} - -/////////////////////////////////////////////////////////////////////// -// Hold fire with RL/BFG? -/////////////////////////////////////////////////////////////////////// -qboolean ACEAI_CheckShot(edict_t *self) -{ - trace_t tr; - - assert( self->enemy != NULL ); - - tr = gi.trace (self->s.origin, tv(-8,-8,-8), tv(8,8,8), self->enemy->s.origin, self, MASK_SOLID); - - // Blocked, do not shoot - if ( tr.fraction < 1.0f ) - return false; - - return true; -} + continue; + + if(!ent->deadflag && ACEAI_infront(self, ent) && ACEIT_IsVisibleSolid(self, ent) && gi.inPVS (self->s.origin, ent->s.origin) + && (!OnSameTeam(self, ent))) + { + VectorSubtract(self->s.origin, ent->s.origin, dist); + weight = VectorLength( dist ); + + //add some more checks here, for health and armor, just slight, but enough to make them favor going for the weaker player + + // Check if best target, or better than current target + if (weight < bestweight) + { + bestweight = weight; + bestenemy = ent; + } + + } + } + if(bestenemy) { + + self->enemy = bestenemy; + //if using a blaster, and it's far away, don't fire, it's pointless + if((self->client->pers.weapon == FindItem("Blaster") || self->client->pers.weapon == FindItem("Alien Blaster")) && (bestweight > 1500)) { + self->enemy = NULL; + return false; + } + //if carrying a flag, and not close to an enemy, continue running to goal + if(ctf->value) { + if (((self->client->pers.inventory[ITEM_INDEX(flag1_item)]) || + (self->client->pers.inventory[ITEM_INDEX(flag2_item)])) && bestweight > 300) { + self->enemy = NULL; + return false; + } + } + return true; + } + return false; + +} + +/////////////////////////////////////////////////////////////////////// +// Hold fire with RL/BFG? +/////////////////////////////////////////////////////////////////////// +qboolean ACEAI_CheckShot(edict_t *self) +{ + trace_t tr; + + assert( self->enemy != NULL ); + + tr = gi.trace (self->s.origin, tv(-8,-8,-8), tv(8,8,8), self->enemy->s.origin, self, MASK_SOLID); + + // Blocked, do not shoot - JKD 4/25/2013 - changed the threshold from 1.0 to 0.6 - this seemed to work much better and solved problems where bots + // would not fire at items even though they had an obviously clear shot. + if ( tr.fraction < 0.6f ) + return false; + + return true; +} void ACEAI_Use_Invisibility (edict_t *ent) @@ -680,48 +795,48 @@ gi.sound(ent, CHAN_ITEM, gi.soundindex("items/powerup.wav"), 1, ATTN_NORM, 0); } - -/////////////////////////////////////////////////////////////////////// -// Choose the best weapon for bot -/////////////////////////////////////////////////////////////////////// - -/* - -1 : 1.0 //blaster accuracy -2 : 1.0 //alien disruptor accuracy -3 : 1.0 //pulse rifle accuracy -4 : 1.0 //flame thrower accuracy -5 : 1.0 //homing rocket launcher accuracy -6 : 1.0 //rocket launcher accuracy -7 : 1.0 //alien smartgun accuracy -8 : 1.0 //alien beamgun accuracy -9 : 1.0 //alien vaporizer accuracy - - */ -#define ACCURACY_BLASTER 1 -#define ACCURACY_DISRUPTOR 2 -#define ACCURACY_CHAINGUN 3 -#define ACCURACY_FLAMETHROWER 4 -#define ACCURACY_NOTUSED 5 -#define ACCURACY_ROCKETLAUNCHER 6 -#define ACCURACY_SMARTGUN 7 -#define ACCURACY_BEAMGUN 8 -#define ACCURACY_VAPORIZER 9 - -void ACEAI_ChooseWeapon(edict_t *self) -{ - float range; + +/////////////////////////////////////////////////////////////////////// +// Choose the best weapon for bot +/////////////////////////////////////////////////////////////////////// + +/* + +1 : 1.0 //blaster accuracy +2 : 1.0 //alien disruptor accuracy +3 : 1.0 //pulse rifle accuracy +4 : 1.0 //flame thrower accuracy +5 : 1.0 //homing rocket launcher accuracy +6 : 1.0 //rocket launcher accuracy +7 : 1.0 //alien smartgun accuracy +8 : 1.0 //alien beamgun accuracy +9 : 1.0 //alien vaporizer accuracy + + */ +#define ACCURACY_BLASTER 1 +#define ACCURACY_DISRUPTOR 2 +#define ACCURACY_CHAINGUN 3 +#define ACCURACY_FLAMETHROWER 4 +#define ACCURACY_NOTUSED 5 +#define ACCURACY_ROCKETLAUNCHER 6 +#define ACCURACY_SMARTGUN 7 +#define ACCURACY_BEAMGUN 8 +#define ACCURACY_VAPORIZER 9 + +void ACEAI_ChooseWeapon(edict_t *self) +{ + float range; vec3_t v; - float c; - qboolean selected; - qboolean clear_shot; + float c; + qboolean selected; + qboolean clear_shot; - if (self->in_vehicle || self->in_deathball) - { + if (self->in_vehicle || self->in_deathball) + { return; - } + } - if(self->client->resp.powered) + if(self->client->resp.powered) { //got enough reward points, use something c = random(); if( c < 0.5) @@ -731,229 +846,269 @@ else ACEAI_Use_Sproing(self); } - - // calculate distance to enemy target for range-based weapon selection + + // calculate distance to enemy target for range-based weapon selection clear_shot = true; - if ( self->enemy != NULL ) - { - VectorSubtract( self->s.origin, self->enemy->s.origin, v ); - range = VectorLength( v ); - clear_shot = ACEAI_CheckShot( self ); - } - else if ( self->client->pers.weapon->weapmodel == WEAP_VIOLATOR ) - { - // put away the violator, and select something else - // using a fake range. - range = 500.0F; - } - else - { // otherwise, keep current weapon when there is no target. - return; - } - - //mutators - /* - * Unconditionally choose for insta and rockets. - */ - if ( instagib->integer ) - { - // TODO: consider whether this prevents using violator - // and whether or not that is a good thing. - if ( self->client->pers.weapon->weapmodel != WEAP_DISRUPTOR ) - { - self->client->newweapon = FindItem( "Alien Disruptor" ); - assert( self->client->newweapon != NULL ); - ChangeWeapon( self ); - } - self->accuracy = self->weapacc[ACCURACY_DISRUPTOR]; - return; - } - - if ( rocket_arena->integer ) - { - if ( self->client->pers.weapon->weapmodel != WEAP_ROCKETLAUNCHER ) - { - self->client->newweapon = FindItem( "Rocket Launcher" ); - assert( self->client->newweapon != NULL ); - ChangeWeapon( self ); - } - self->accuracy = self->weapacc[ACCURACY_ROCKETLAUNCHER]; - return; - } - - // insta/rockets hybrid - if ( insta_rockets->integer ) - { - if ( self->skill > 0 && range < 170.0F ) // Little closer than usual (normally 200) - { - if ( self->client->pers.weapon->weapmodel != WEAP_VIOLATOR ) - { - self->client->newweapon = FindItem( "Violator" ); - assert( self->client->newweapon != NULL ); - ChangeWeapon( self ); - } - self->accuracy = 1.0; - return; - } - if ( clear_shot && range > 169.0F && range < 450.0F ) // Medium Range, use Rockets - { - if ( self->client->pers.weapon->weapmodel != WEAP_ROCKETLAUNCHER ) - { - self->client->newweapon = FindItem( "Rocket Launcher" ); - assert( self->client->newweapon != NULL ); - ChangeWeapon( self ); - } - self->accuracy = self->weapacc[ACCURACY_ROCKETLAUNCHER]; - return; - } - // Long range (or possibly short range for skill 0 bots) - if ( self->client->pers.weapon->weapmodel != WEAP_DISRUPTOR ) - { - self->client->newweapon = FindItem( "Alien Disruptor" ); - assert( self->client->newweapon != NULL ); - ChangeWeapon( self ); - } - self->accuracy = self->weapacc[ACCURACY_DISRUPTOR]; - return; - } - - // what is the bot's favorite weapon? - // The bot will always check for it's favorite weapon first, - // which is set in the bot's config file. - if ( !strcmp( self->faveweap, "Alien Vaporizer" ) && self->skill > 1 ) - { - if ( ACEIT_ChangeWeapon( self, FindItem( self->faveweap ) ) ) - { - self->accuracy = self->weapacc[ACCURACY_VAPORIZER]; - return; - } - } - if ( !strcmp( self->faveweap, "Alien Disruptor" ) ) - { - if ( ACEIT_ChangeWeapon( self, FindItem( self->faveweap ) ) ) - { - self->accuracy = self->weapacc[ACCURACY_DISRUPTOR]; - return; - } - } - if ( !strcmp( self->faveweap, "Disruptor" ) ) - { - if ( ACEIT_ChangeWeapon( self, FindItem( self->faveweap ) ) ) - { - self->accuracy = self->weapacc[ACCURACY_BEAMGUN]; - return; - } - } - if ( !strcmp( self->faveweap, "Pulse Rifle" ) ) - { - if ( ACEIT_ChangeWeapon( self, FindItem( self->faveweap ) ) ) - { - self->accuracy = self->weapacc[ACCURACY_CHAINGUN]; - return; - } - } - if ( !strcmp( self->faveweap, "Alien Smartgun" ) ) - { - if ( clear_shot && ACEIT_ChangeWeapon( self, FindItem( "Alien Smartgun" ))) - { - self->accuracy = self->weapacc[ACCURACY_SMARTGUN]; - return; - } - } - if ( !strcmp( self->faveweap, "Rocket Launcher" ) ) - { - if ( range > 200.0f ) - { - if ( clear_shot && ACEIT_ChangeWeapon( self, FindItem( "Rocket Launcher" ))) - { - self->accuracy = self->weapacc[ACCURACY_ROCKETLAUNCHER]; - return; - } - } - } - if ( !strcmp( self->faveweap, "Flame Thrower" ) ) - { - if ( range < 500.0f || (range < 800.0f && self->skill == 3) ) - { - if ( ACEIT_ChangeWeapon( self, FindItem( "Flame Thrower" ) ) ) - { - self->accuracy = self->weapacc[ACCURACY_FLAMETHROWER]; - return; - } - } - } - if ( !strcmp( self->faveweap, "Violator" ) && self->skill > 0 ) - { - if ( range < 300.0f ) - { //because it's a fav weap, we want them to really try and use it - if ( ACEIT_ChangeWeapon( self, FindItem( "Violator" ) ) ) - { - self->accuracy = 1.0; - return; - } - } - } - - // now go through normal weapon favoring routine + if ( self->enemy != NULL ) + { + VectorSubtract( self->s.origin, self->enemy->s.origin, v ); + range = VectorLength( v ); + clear_shot = ACEAI_CheckShot( self ); + } + else if ( self->client->pers.weapon->weapmodel == WEAP_VIOLATOR ) + { + // put away the violator, and select something else + // using a fake range. + range = 500.0F; + } + else + { // otherwise, keep current weapon when there is no target. + return; + } + + //mutators + /* + * Unconditionally choose for insta and rockets. + */ + if ( instagib->integer ) + { + // TODO: consider whether this prevents using violator + // and whether or not that is a good thing. + if ( self->client->pers.weapon->weapmodel != WEAP_DISRUPTOR ) + { + self->client->newweapon = FindItem( "Alien Disruptor" ); + assert( self->client->newweapon != NULL ); + ChangeWeapon( self ); + } + self->accuracy = self->weapacc[ACCURACY_DISRUPTOR]; + return; + } + + if ( rocket_arena->integer ) + { + if ( self->client->pers.weapon->weapmodel != WEAP_ROCKETLAUNCHER ) + { + self->client->newweapon = FindItem( "Rocket Launcher" ); + assert( self->client->newweapon != NULL ); + ChangeWeapon( self ); + } + self->accuracy = self->weapacc[ACCURACY_ROCKETLAUNCHER]; + return; + } + + // insta/rockets hybrid + if ( insta_rockets->integer ) + { + if ( self->skill > 0 && range < 170.0F ) // Little closer than usual (normally 200) + { + if ( self->client->pers.weapon->weapmodel != WEAP_VIOLATOR ) + { + self->client->newweapon = FindItem( "Violator" ); + assert( self->client->newweapon != NULL ); + ChangeWeapon( self ); + } + self->accuracy = 1.0; + return; + } + if ( clear_shot && range > 169.0F && range < 450.0F ) // Medium Range, use Rockets + { + if ( self->client->pers.weapon->weapmodel != WEAP_ROCKETLAUNCHER ) + { + self->client->newweapon = FindItem( "Rocket Launcher" ); + assert( self->client->newweapon != NULL ); + ChangeWeapon( self ); + } + self->accuracy = self->weapacc[ACCURACY_ROCKETLAUNCHER]; + return; + } + // Long range (or possibly short range for skill 0 bots) + if ( self->client->pers.weapon->weapmodel != WEAP_DISRUPTOR ) + { + self->client->newweapon = FindItem( "Alien Disruptor" ); + assert( self->client->newweapon != NULL ); + ChangeWeapon( self ); + } + self->accuracy = self->weapacc[ACCURACY_DISRUPTOR]; + return; + } + + //drop bombs if they have one, and the target is something that we want to plant a bomb near + if(g_tactical->integer) + { + if(self->has_bomb && self->ctype == 0 + && (self->enemy->classname == "human computer" || self->enemy->classname == "human powersrc" + || self->enemy->classname == "human ammodepot")) + { + if(range < 300.0f) + { + if(ACEIT_ChangeWeapon( self, FindItem( "Alien Bomb" ))) + return; + } + } + else if(self->has_bomb && self->ctype == 1 + && (self->enemy->classname == "alien computer" || self->enemy->classname == "alien powersrc" + || self->enemy->classname == "alien ammodepot")) + { + if(range < 300.0f) + { + if(ACEIT_ChangeWeapon( self, FindItem( "Human Bomb" ))) + return; + } + } + } + + // what is the bot's favorite weapon? + // The bot will always check for it's favorite weapon first, + // which is set in the bot's config file, + // unless it has a minderaser + if ( clear_shot ) + { + if ( ACEIT_ChangeWeapon( self, FindItem( "Minderaser" ) ) ) + { + //keep same accurace as if firing a rocket + self->accuracy = self->weapacc[ACCURACY_ROCKETLAUNCHER]; + return; + } + } + if ( !strcmp( self->faveweap, "Alien Vaporizer" ) && self->skill > 1 ) + { + if ( ACEIT_ChangeWeapon( self, FindItem( self->faveweap ) ) ) + { + self->accuracy = self->weapacc[ACCURACY_VAPORIZER]; + return; + } + } + if ( !strcmp( self->faveweap, "Alien Disruptor" ) ) + { + if ( ACEIT_ChangeWeapon( self, FindItem( self->faveweap ) ) ) + { + self->accuracy = self->weapacc[ACCURACY_DISRUPTOR]; + return; + } + } + if ( !strcmp( self->faveweap, "Disruptor" ) ) + { + if ( ACEIT_ChangeWeapon( self, FindItem( self->faveweap ) ) ) + { + self->accuracy = self->weapacc[ACCURACY_BEAMGUN]; + return; + } + } + if ( !strcmp( self->faveweap, "Pulse Rifle" ) ) + { + if ( ACEIT_ChangeWeapon( self, FindItem( self->faveweap ) ) ) + { + self->accuracy = self->weapacc[ACCURACY_CHAINGUN]; + return; + } + } + if ( !strcmp( self->faveweap, "Alien Smartgun" ) ) + { + if ( clear_shot && ACEIT_ChangeWeapon( self, FindItem( "Alien Smartgun" ))) + { + self->accuracy = self->weapacc[ACCURACY_SMARTGUN]; + return; + } + } + if ( !strcmp( self->faveweap, "Rocket Launcher" ) ) + { + if ( range > 200.0f ) + { + if ( clear_shot && ACEIT_ChangeWeapon( self, FindItem( "Rocket Launcher" ))) + { + self->accuracy = self->weapacc[ACCURACY_ROCKETLAUNCHER]; + return; + } + } + } + if ( !strcmp( self->faveweap, "Flame Thrower" ) ) + { + if ( range < 500.0f || (range < 800.0f && self->skill == 3) ) + { + if ( ACEIT_ChangeWeapon( self, FindItem( "Flame Thrower" ) ) ) + { + self->accuracy = self->weapacc[ACCURACY_FLAMETHROWER]; + return; + } + } + } + if ( !strcmp( self->faveweap, "Violator" ) && self->skill > 0 ) + { + if ( range < 300.0f ) + { //because it's a fav weap, we want them to really try and use it + if ( ACEIT_ChangeWeapon( self, FindItem( "Violator" ) ) ) + { + self->accuracy = 1.0; + return; + } + } + } + + // now go through normal weapon favoring routine // always favor the Vaporizor, unless close, then use the violator - if ( range < 200.0f && self->skill > 0 ) - { - selected = ACEIT_ChangeWeapon( self, FindItem( "Violator" )); - assert( selected ); - self->accuracy = 1.0f; - return; - } - if ( self->skill > 1 ) - { - if ( ACEIT_ChangeWeapon( self, FindItem( "Alien Vaporizer" ))) - { - self->accuracy = self->weapacc[ACCURACY_VAPORIZER]; - return; - } - } - if ( clear_shot && ACEIT_ChangeWeapon( self, FindItem( "Alien Smartgun" ))) - { - self->accuracy = self->weapacc[ACCURACY_SMARTGUN]; - return; - } - - // Longer range so the bot doesn't blow himself up! - if ( clear_shot && range > 200.0f ) - { - if ( ACEIT_ChangeWeapon( self, FindItem( "Rocket Launcher" ))) - { - self->accuracy = self->weapacc[ACCURACY_ROCKETLAUNCHER]; - return; - } - } - - // Only use FT in certain ranges - if ( range < 500.0f || (range < 800.0f && self->skill == 3) ) - { - if ( ACEIT_ChangeWeapon( self, FindItem( "Flame Thrower" ) )) - { - self->accuracy = self->weapacc[ACCURACY_FLAMETHROWER]; - return; - } - } - if ( ACEIT_ChangeWeapon( self, FindItem( "Disruptor" ) )) - { - self->accuracy = self->weapacc[ACCURACY_BEAMGUN]; - return; - } - if ( ACEIT_ChangeWeapon( self, FindItem( "Pulse Rifle" ) )) - { - self->accuracy = self->weapacc[ACCURACY_CHAINGUN]; - return; - } - if ( ACEIT_ChangeWeapon( self, FindItem( "Alien Disruptor" ) )) - { - self->accuracy = self->weapacc[ACCURACY_DISRUPTOR]; - return; - } - - selected = ACEIT_ChangeWeapon( self, FindItem( "Blaster" ) ); - assert( selected ); - self->accuracy = self->weapacc[ACCURACY_BLASTER]; - -} +#ifndef TACTICAL + if ( range < 200.0f && self->skill > 0 ) + { + selected = ACEIT_ChangeWeapon( self, FindItem( "Violator" )); + assert( selected ); + self->accuracy = 1.0f; + return; + } +#endif + if ( self->skill > 1 ) + { + if ( ACEIT_ChangeWeapon( self, FindItem( "Alien Vaporizer" ))) + { + self->accuracy = self->weapacc[ACCURACY_VAPORIZER]; + return; + } + } + if ( clear_shot && ACEIT_ChangeWeapon( self, FindItem( "Alien Smartgun" ))) + { + self->accuracy = self->weapacc[ACCURACY_SMARTGUN]; + return; + } + + // Longer range so the bot doesn't blow himself up! + if ( clear_shot && range > 200.0f ) + { + if ( ACEIT_ChangeWeapon( self, FindItem( "Rocket Launcher" ))) + { + self->accuracy = self->weapacc[ACCURACY_ROCKETLAUNCHER]; + return; + } + } + + // Only use FT in certain ranges + if ( range < 500.0f || (range < 800.0f && self->skill == 3) ) + { + if ( ACEIT_ChangeWeapon( self, FindItem( "Flame Thrower" ) )) + { + self->accuracy = self->weapacc[ACCURACY_FLAMETHROWER]; + return; + } + } + if ( ACEIT_ChangeWeapon( self, FindItem( "Disruptor" ) )) + { + self->accuracy = self->weapacc[ACCURACY_BEAMGUN]; + return; + } + if ( ACEIT_ChangeWeapon( self, FindItem( "Pulse Rifle" ) )) + { + self->accuracy = self->weapacc[ACCURACY_CHAINGUN]; + return; + } + if ( ACEIT_ChangeWeapon( self, FindItem( "Alien Disruptor" ) )) + { + self->accuracy = self->weapacc[ACCURACY_DISRUPTOR]; + return; + } + + if(g_tactical->integer && self->ctype == 0) + selected = ACEIT_ChangeWeapon( self, FindItem( "Alien Blaster" ) ); + else + selected = ACEIT_ChangeWeapon( self, FindItem( "Blaster" ) ); + assert( selected ); + self->accuracy = self->weapacc[ACCURACY_BLASTER]; + +} diff -Nru alien-arena-7.53+dfsg/source/game/acesrc/acebot.h alien-arena-7.66+dfsg/source/game/acesrc/acebot.h --- alien-arena-7.53+dfsg/source/game/acesrc/acebot.h 2011-12-10 06:06:35.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/acesrc/acebot.h 2013-06-22 20:07:36.000000000 +0000 @@ -157,6 +157,9 @@ #define ITEMLIST_DEATHBALL 38 #define ITEMLIST_HOVER 39 +//mind eraser +#define ITEMLIST_MINDERASER 40 + // Special CONTENT mask for acebots, so they can detect and climb ladders // replaces MASK_OPAQUE defined in game/q_shared.h #define BOTMASK_OPAQUE (CONTENTS_SOLID|CONTENTS_SLIME|CONTENTS_LAVA|CONTENTS_LADDER) diff -Nru alien-arena-7.53+dfsg/source/game/acesrc/acebot_items.c alien-arena-7.66+dfsg/source/game/acesrc/acebot_items.c --- alien-arena-7.53+dfsg/source/game/acesrc/acebot_items.c 2011-05-17 03:24:21.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/acesrc/acebot_items.c 2013-06-22 20:07:36.000000000 +0000 @@ -1,625 +1,649 @@ -/////////////////////////////////////////////////////////////////////// -// -// ACE - Quake II Bot Base Code -// -// Version 1.0 -// -// This file is Copyright(c), Steve Yeager 1998, All Rights Reserved -// -// -// All other files are Copyright(c) Id Software, Inc. -// -// Please see liscense.txt in the source directory for the copyright -// information regarding those files belonging to Id Software, Inc. -// -// Should you decide to release a modified version of ACE, you MUST -// include the following text (minus the BEGIN and END lines) in the -// documentation for your modification. -// -// --- BEGIN --- -// -// The ACE Bot is a product of Steve Yeager, and is available from -// the ACE Bot homepage, at http://www.axionfx.com/ace. -// -// This program is a modification of the ACE Bot, and is therefore -// in NO WAY supported by Steve Yeager. - -// This program MUST NOT be sold in ANY form. If you have paid for -// this product, you should contact Steve Yeager immediately, via -// the ACE Bot homepage. -// -// --- END --- -// -// I, Steve Yeager, hold no responsibility for any harm caused by the -// use of this source code, especially to small children and animals. -// It is provided as-is with no implied warranty or support. -// -// I also wish to thank and acknowledge the great work of others -// that has helped me to develop this code. -// -// John Cricket - For ideas and swapping code. -// Ryan Feltrin - For ideas and swapping code. -// SABIN - For showing how to do true client based movement. -// BotEpidemic - For keeping us up to date. -// Telefragged.com - For giving ACE a home. -// Microsoft - For giving us such a wonderful crash free OS. -// id - Need I say more. -// -// And to all the other testers, pathers, and players and people -// who I can't remember who the heck they were, but helped out. -// -/////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////// -// -// acebot_items.c - This file contains all of the -// item handling routines for the -// ACE bot, including fact table support -// -/////////////////////////////////////////////////////////////////////// - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "game/g_local.h" -#include "acebot.h" - -int num_items = 0; -item_table_t item_table[MAX_EDICTS]; - -static gitem_t *redflag; -static gitem_t *blueflag; - - -void ACEAI_InitKnownCTFItems(void) -{ - //int i; - - //define gitem_t pointers commonly used for comparisons inside this archive. - redflag = FindItemByClassname("item_flag_red"); - blueflag = FindItemByClassname("item_flag_blue"); - -} - -/////////////////////////////////////////////////////////////////////// -// Can we get there? -/////////////////////////////////////////////////////////////////////// -qboolean ACEIT_IsReachable(edict_t *self, vec3_t goal) -{ - trace_t trace; - vec3_t v; - - VectorCopy(self->mins,v); - v[2] += 18; // Stepsize - - trace = gi.trace (self->s.origin, v, self->maxs, goal, self, BOTMASK_OPAQUE); - - // Yes we can see it - if (trace.fraction == 1.0) - return true; - else - return false; - -} - -/////////////////////////////////////////////////////////////////////// -// Visiblilty check -/////////////////////////////////////////////////////////////////////// -qboolean ACEIT_IsVisible(edict_t *self, vec3_t goal) -{ - trace_t trace; - - trace = gi.trace (self->s.origin, vec3_origin, vec3_origin, goal, self, BOTMASK_OPAQUE); - - // Yes we can see it - if (trace.fraction == 1.0) - return true; - else - return false; - -} - -/////////////////////////////////////////////////////////////////////// -// Weapon changing support -/////////////////////////////////////////////////////////////////////// -qboolean ACEIT_ChangeWeapon (edict_t *ent, gitem_t *item) -{ - int ammo_index; - gitem_t *ammo_item; - - // see if we're already using it - if (item == ent->client->pers.weapon) - return true; - - // Has not picked up weapon yet - if(!ent->client->pers.inventory[ITEM_INDEX(item)]) - return false; - - // Do we have ammo for it? - if (item->ammo) - { - ammo_item = FindItem(item->ammo); - ammo_index = ITEM_INDEX(ammo_item); - if (!ent->client->pers.inventory[ammo_index] && !g_select_empty->value) - return false; - } - - // Change to this weapon - ent->client->newweapon = item; - - // Make weapon swap visible. - ChangeWeapon( ent ); - - return true; -} - - -extern gitem_armor_t jacketarmor_info; -extern gitem_armor_t combatarmor_info; -extern gitem_armor_t bodyarmor_info; - -/////////////////////////////////////////////////////////////////////// -// Check if we can use the armor -/////////////////////////////////////////////////////////////////////// -qboolean ACEIT_CanUseArmor (gitem_t *item, edict_t *other) -{ - int old_armor_index; - gitem_armor_t *oldinfo; - gitem_armor_t *newinfo; - int newcount; - float salvage; - int salvagecount; - - // get info on new armor - newinfo = (gitem_armor_t *)item->info; - - old_armor_index = ArmorIndex (other); - - // handle armor shards specially - if (item->tag == ARMOR_SHARD) - return true; - - // get info on old armor - if (old_armor_index == ITEM_INDEX(FindItem("Jacket Armor"))) - oldinfo = &jacketarmor_info; - else if (old_armor_index == ITEM_INDEX(FindItem("Combat Armor"))) - oldinfo = &combatarmor_info; - else // (old_armor_index == body_armor_index) - oldinfo = &bodyarmor_info; - - if (newinfo->normal_protection <= oldinfo->normal_protection) - { - // calc new armor values - salvage = newinfo->normal_protection / oldinfo->normal_protection; - salvagecount = salvage * newinfo->base_count; - newcount = other->client->pers.inventory[old_armor_index] + salvagecount; - - if (newcount > oldinfo->max_count) - newcount = oldinfo->max_count; - - // if we're already maxed out then we don't need the new armor - if (other->client->pers.inventory[old_armor_index] >= newcount) - return false; - - } - - return true; -} -//========================================== -// find needed flag -// -//========================================== -gitem_t *ACEIT_WantedFlag (edict_t *self) -{ - qboolean hasflag; - - if (!ctf->value) - return NULL; - - //find out if the player has a flag, and what flag is it - if (redflag && self->client->pers.inventory[ITEM_INDEX(redflag)]) - hasflag = true; - else if (blueflag && self->client->pers.inventory[ITEM_INDEX(blueflag)]) - hasflag = true; - else - hasflag = false; - - //jalToDo: see if our flag is at base - - if (!hasflag)//if we don't have a flag we want other's team flag - { - if (self->dmteam == RED_TEAM) - return blueflag; - else - return redflag; - } - else //we have a flag - { - if (self->dmteam == BLUE_TEAM) - return redflag; - else - return blueflag; - } - - return NULL; -} - - -/////////////////////////////////////////////////////////////////////// -// Determins the NEED for an item -// -// This function can be modified to support new items to pick up -// Any other logic that needs to be added for custom decision making -// can be added here. For now it is very simple. -/////////////////////////////////////////////////////////////////////// -float ACEIT_ItemNeed(edict_t *self, int item) -{ - gitem_t *wantedFlag; - // Make sure item is at least close to being valid - if(item < 0 || item > 100) - return 0.0; - - switch(item) - { - // Health - case ITEMLIST_HEALTH_SMALL: - case ITEMLIST_HEALTH_MEDIUM: - case ITEMLIST_HEALTH_LARGE: - case ITEMLIST_HEALTH_MEGA: - if(self->health < 100) - return 1.0 - (float)self->health/100.0f; // worse off, higher priority - else - return 0.0; - - case ITEMLIST_QUADDAMAGE: - case ITEMLIST_INVULNERABILITY: - case ITEMLIST_HASTE: - case ITEMLIST_SPROING: - case ITEMLIST_ADRENALINE: - return 0.6; - - // Weapons - case ITEMLIST_ROCKETLAUNCHER: - case ITEMLIST_RAILGUN: - case ITEMLIST_CHAINGUN: - case ITEMLIST_SHOTGUN: - case ITEMLIST_SUPERSHOTGUN: - case ITEMLIST_BFG10K: - case ITEMLIST_HYPERBLASTER: - if(!self->client->pers.inventory[item]) - return 0.9; //was .7 - else - return 0.0; - - // Ammo - case ITEMLIST_SLUGS: - if(self->client->pers.inventory[ITEMLIST_SLUGS] < self->client->pers.max_slugs) - return 0.4; - else - return 0.0; - - case ITEMLIST_BULLETS: - if(self->client->pers.inventory[ITEMLIST_BULLETS] < self->client->pers.max_bullets) - return 0.3; - else - return 0.0; - - case ITEMLIST_SHELLS: - if(self->client->pers.inventory[ITEMLIST_SHELLS] < self->client->pers.max_shells) - return 0.3; - else - return 0.0; - - case ITEMLIST_CELLS: - if(self->client->pers.inventory[ITEMLIST_CELLS] < self->client->pers.max_cells) - return 0.3; - else - return 0.0; - - case ITEMLIST_ROCKETS: - if(self->client->pers.inventory[ITEMLIST_ROCKETS] < self->client->pers.max_rockets) - return 1.5; - else - return 0.0; - - case ITEMLIST_GRENADES: - if(self->client->pers.inventory[ITEMLIST_GRENADES] < self->client->pers.max_grenades) - return 0.3; - else - return 0.0; - - case ITEMLIST_BODYARMOR: - if(ACEIT_CanUseArmor (FindItem("Body Armor"), self)) - return 0.6; - else - return 0.0; - - case ITEMLIST_COMBATARMOR: - if(ACEIT_CanUseArmor (FindItem("Combat Armor"), self)) - return 0.6; - else - return 0.0; - - case ITEMLIST_JACKETARMOR: - if(ACEIT_CanUseArmor (FindItem("Jacket Armor"), self)) - return 0.6; - else - return 0.0; - //flags - case ITEMLIST_FLAG1: - wantedFlag = ACEIT_WantedFlag (self); //Returns the flag gitem_t - if (redflag != wantedFlag) - return 0.0; - else - return 3.0; - case ITEMLIST_FLAG2: - wantedFlag = ACEIT_WantedFlag (self); //Returns the flag gitem_t - if (blueflag != wantedFlag) - return 0.0; - else - return 3.0; - //vehicles +/////////////////////////////////////////////////////////////////////// +// +// ACE - Quake II Bot Base Code +// +// Version 1.0 +// +// This file is Copyright(c), Steve Yeager 1998, All Rights Reserved +// +// +// All other files are Copyright(c) Id Software, Inc. +// +// Please see liscense.txt in the source directory for the copyright +// information regarding those files belonging to Id Software, Inc. +// +// Should you decide to release a modified version of ACE, you MUST +// include the following text (minus the BEGIN and END lines) in the +// documentation for your modification. +// +// --- BEGIN --- +// +// The ACE Bot is a product of Steve Yeager, and is available from +// the ACE Bot homepage, at http://www.axionfx.com/ace. +// +// This program is a modification of the ACE Bot, and is therefore +// in NO WAY supported by Steve Yeager. + +// This program MUST NOT be sold in ANY form. If you have paid for +// this product, you should contact Steve Yeager immediately, via +// the ACE Bot homepage. +// +// --- END --- +// +// I, Steve Yeager, hold no responsibility for any harm caused by the +// use of this source code, especially to small children and animals. +// It is provided as-is with no implied warranty or support. +// +// I also wish to thank and acknowledge the great work of others +// that has helped me to develop this code. +// +// John Cricket - For ideas and swapping code. +// Ryan Feltrin - For ideas and swapping code. +// SABIN - For showing how to do true client based movement. +// BotEpidemic - For keeping us up to date. +// Telefragged.com - For giving ACE a home. +// Microsoft - For giving us such a wonderful crash free OS. +// id - Need I say more. +// +// And to all the other testers, pathers, and players and people +// who I can't remember who the heck they were, but helped out. +// +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +// +// acebot_items.c - This file contains all of the +// item handling routines for the +// ACE bot, including fact table support +// +/////////////////////////////////////////////////////////////////////// + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "game/g_local.h" +#include "acebot.h" + +int num_items = 0; +item_table_t item_table[MAX_EDICTS]; + +static gitem_t *redflag; +static gitem_t *blueflag; + + +void ACEAI_InitKnownCTFItems(void) +{ + //int i; + + //define gitem_t pointers commonly used for comparisons inside this archive. + redflag = FindItemByClassname("item_flag_red"); + blueflag = FindItemByClassname("item_flag_blue"); + +} + +/////////////////////////////////////////////////////////////////////// +// Can we get there? +/////////////////////////////////////////////////////////////////////// +qboolean ACEIT_IsReachable(edict_t *self, vec3_t goal) +{ + trace_t trace; + vec3_t v; + + VectorCopy(self->mins,v); + v[2] += 18; // Stepsize + + trace = gi.trace (self->s.origin, v, self->maxs, goal, self, BOTMASK_OPAQUE); + + // Yes we can see it + if (trace.fraction == 1.0) + return true; + else + return false; + +} + +/////////////////////////////////////////////////////////////////////// +// Visiblilty check +/////////////////////////////////////////////////////////////////////// +qboolean ACEIT_IsVisible(edict_t *self, vec3_t goal) +{ + trace_t trace; + + trace = gi.trace (self->s.origin, vec3_origin, vec3_origin, goal, self, BOTMASK_OPAQUE); + + // Yes we can see it + if (trace.fraction == 1.0) + return true; + else + return false; + +} + +/////////////////////////////////////////////////////////////////////// +// Weapon changing support +/////////////////////////////////////////////////////////////////////// +qboolean ACEIT_ChangeWeapon (edict_t *ent, gitem_t *item) +{ + int ammo_index; + gitem_t *ammo_item; + + // see if we're already using it + if (item == ent->client->pers.weapon) + return true; + + // Has not picked up weapon yet + if(!ent->client->pers.inventory[ITEM_INDEX(item)]) + return false; + + // Do we have ammo for it? + if (item->ammo) + { + ammo_item = FindItem(item->ammo); + ammo_index = ITEM_INDEX(ammo_item); + if (!ent->client->pers.inventory[ammo_index] && !g_select_empty->value) + return false; + } + + // Change to this weapon + ent->client->newweapon = item; + + // Make weapon swap visible. + ChangeWeapon( ent ); + + return true; +} + + +extern gitem_armor_t jacketarmor_info; +extern gitem_armor_t combatarmor_info; +extern gitem_armor_t bodyarmor_info; + +/////////////////////////////////////////////////////////////////////// +// Check if we can use the armor +/////////////////////////////////////////////////////////////////////// +qboolean ACEIT_CanUseArmor (gitem_t *item, edict_t *other) +{ + int old_armor_index; + gitem_armor_t *oldinfo; + gitem_armor_t *newinfo; + int newcount; + float salvage; + int salvagecount; + + // get info on new armor + newinfo = (gitem_armor_t *)item->info; + + old_armor_index = ArmorIndex (other); + + // handle armor shards specially + if (item->tag == ARMOR_SHARD) + return true; + + // get info on old armor + if (old_armor_index == ITEM_INDEX(FindItem("Jacket Armor"))) + oldinfo = &jacketarmor_info; + else if (old_armor_index == ITEM_INDEX(FindItem("Combat Armor"))) + oldinfo = &combatarmor_info; + else // (old_armor_index == body_armor_index) + oldinfo = &bodyarmor_info; + + if (newinfo->normal_protection <= oldinfo->normal_protection) + { + // calc new armor values + salvage = newinfo->normal_protection / oldinfo->normal_protection; + salvagecount = salvage * newinfo->base_count; + newcount = other->client->pers.inventory[old_armor_index] + salvagecount; + + if (newcount > oldinfo->max_count) + newcount = oldinfo->max_count; + + // if we're already maxed out then we don't need the new armor + if (other->client->pers.inventory[old_armor_index] >= newcount) + return false; + + } + + return true; +} +//========================================== +// find needed flag +// +//========================================== +gitem_t *ACEIT_WantedFlag (edict_t *self) +{ + qboolean hasflag; + + if (!ctf->value) + return NULL; + + //find out if the player has a flag, and what flag is it + if (redflag && self->client->pers.inventory[ITEM_INDEX(redflag)]) + hasflag = true; + else if (blueflag && self->client->pers.inventory[ITEM_INDEX(blueflag)]) + hasflag = true; + else + hasflag = false; + + //jalToDo: see if our flag is at base + + if (!hasflag)//if we don't have a flag we want other's team flag + { + if (self->dmteam == RED_TEAM) + return blueflag; + else + return redflag; + } + else //we have a flag + { + if (self->dmteam == BLUE_TEAM) + return redflag; + else + return blueflag; + } + + return NULL; +} + + +/////////////////////////////////////////////////////////////////////// +// Determins the NEED for an item +// +// This function can be modified to support new items to pick up +// Any other logic that needs to be added for custom decision making +// can be added here. For now it is very simple. +/////////////////////////////////////////////////////////////////////// +float ACEIT_ItemNeed(edict_t *self, int item) +{ + gitem_t *wantedFlag; + // Make sure item is at least close to being valid + if(item < 0 || item > 100) + return 0.0; + + switch(item) + { + // Health + case ITEMLIST_HEALTH_SMALL: + case ITEMLIST_HEALTH_MEDIUM: + case ITEMLIST_HEALTH_LARGE: + case ITEMLIST_HEALTH_MEGA: + if(self->health < 100) + return 1.0 - (float)self->health/100.0f; // worse off, higher priority + else + return 0.0; + + case ITEMLIST_QUADDAMAGE: + case ITEMLIST_INVULNERABILITY: + case ITEMLIST_HASTE: + case ITEMLIST_SPROING: + case ITEMLIST_ADRENALINE: + return 0.6; + + // Weapons + case ITEMLIST_ROCKETLAUNCHER: + case ITEMLIST_CHAINGUN: + case ITEMLIST_SUPERSHOTGUN: + case ITEMLIST_BFG10K: + if(g_tactical->integer && self->ctype == 0) + return 0.0; + else if(g_tactical->integer && self->ctype == 1) + { + if(!self->client->pers.inventory[item]) + return 0.9; + else + return 0.0; + } + case ITEMLIST_SHOTGUN: + case ITEMLIST_HYPERBLASTER: + case ITEMLIST_RAILGUN: + case ITEMLIST_MINDERASER: + if(g_tactical->integer && self->ctype == 1) + return 0.0; + else if(g_tactical->integer && self->ctype == 0) + { + if(!self->client->pers.inventory[item]) + return 0.9; + else + return 0.0; + } + + //normal game mode + if(!self->client->pers.inventory[item]) + return 0.9; //was .7 + else + return 0.0; + + // Ammo + case ITEMLIST_SLUGS: + if(self->client->pers.inventory[ITEMLIST_SLUGS] < self->client->pers.max_slugs) + return 0.4; + else + return 0.0; + + case ITEMLIST_BULLETS: + if(self->client->pers.inventory[ITEMLIST_BULLETS] < self->client->pers.max_bullets) + return 0.3; + else + return 0.0; + + case ITEMLIST_SHELLS: + if(self->client->pers.inventory[ITEMLIST_SHELLS] < self->client->pers.max_shells) + return 0.3; + else + return 0.0; + + case ITEMLIST_CELLS: + if(self->client->pers.inventory[ITEMLIST_CELLS] < self->client->pers.max_cells) + return 0.3; + else + return 0.0; + + case ITEMLIST_ROCKETS: + if(self->client->pers.inventory[ITEMLIST_ROCKETS] < self->client->pers.max_rockets) + return 1.5; + else + return 0.0; + + case ITEMLIST_GRENADES: + if(self->client->pers.inventory[ITEMLIST_GRENADES] < self->client->pers.max_grenades) + return 0.3; + else + return 0.0; + + case ITEMLIST_BODYARMOR: + if(ACEIT_CanUseArmor (FindItem("Body Armor"), self)) + return 0.6; + else + return 0.0; + + case ITEMLIST_COMBATARMOR: + if(ACEIT_CanUseArmor (FindItem("Combat Armor"), self)) + return 0.6; + else + return 0.0; + + case ITEMLIST_JACKETARMOR: + if(ACEIT_CanUseArmor (FindItem("Jacket Armor"), self)) + return 0.6; + else + return 0.0; + //flags + case ITEMLIST_FLAG1: + wantedFlag = ACEIT_WantedFlag (self); //Returns the flag gitem_t + if (redflag != wantedFlag) + return 0.0; + else + return 3.0; + case ITEMLIST_FLAG2: + wantedFlag = ACEIT_WantedFlag (self); //Returns the flag gitem_t + if (blueflag != wantedFlag) + return 0.0; + else + return 3.0; + //vehicles case ITEMLIST_BOMBER: case ITEMLIST_STRAFER: - case ITEMLIST_HOVER: - if(!self->client->pers.inventory[item]) - return 0.9; - else - return 0.0; + case ITEMLIST_HOVER: + if(!self->client->pers.inventory[item]) + return 0.9; + else + return 0.0; //deathball case ITEMLIST_DEATHBALL: return 3.0; - - default: - return 0.0; - - } - -} - -/////////////////////////////////////////////////////////////////////// -// Convert a classname to its index value -// -// I prefer to use integers/defines for simplicity sake. This routine -// can lead to some slowdowns I guess, but makes the rest of the code -// easier to deal with. -/////////////////////////////////////////////////////////////////////// -int ACEIT_ClassnameToIndex(char *classname) -{ - if(strcmp(classname,"item_armor_body")==0) - return ITEMLIST_BODYARMOR; - - if(strcmp(classname,"item_armor_combat")==0) - return ITEMLIST_COMBATARMOR; - - if(strcmp(classname,"item_armor_jacket")==0) - return ITEMLIST_JACKETARMOR; - - if(strcmp(classname,"item_armor_shard")==0) - return ITEMLIST_ARMORSHARD; - - if(strcmp(classname,"weapon_blaster")==0) - return ITEMLIST_BLASTER; - - if(strcmp(classname,"weapon_shotgun")==0) - return ITEMLIST_SHOTGUN; - - if(strcmp(classname,"weapon_supershotgun")==0) - return ITEMLIST_SUPERSHOTGUN; - - if(strcmp(classname,"weapon_chaingun")==0) - return ITEMLIST_CHAINGUN; - - if(strcmp(classname,"ammo_grenades")==0) - return ITEMLIST_GRENADES; - - if(strcmp(classname,"weapon_rocketlauncher")==0) - return ITEMLIST_ROCKETLAUNCHER; - - if(strcmp(classname,"weapon_hyperblaster")==0) - return ITEMLIST_HYPERBLASTER; - - if(strcmp(classname,"weapon_railgun")==0) - return ITEMLIST_RAILGUN; - - if(strcmp(classname,"weapon_bfg")==0) - return ITEMLIST_BFG10K; - - if(strcmp(classname,"ammo_shells")==0) - return ITEMLIST_SHELLS; - - if(strcmp(classname,"ammo_bullets")==0) - return ITEMLIST_BULLETS; - - if(strcmp(classname,"ammo_cells")==0) - return ITEMLIST_CELLS; - - if(strcmp(classname,"ammo_rockets")==0) - return ITEMLIST_ROCKETS; - - if(strcmp(classname,"ammo_slugs")==0) - return ITEMLIST_SLUGS; - - if(strcmp(classname,"item_quad")==0) - return ITEMLIST_QUADDAMAGE; - - if(strcmp(classname,"item_invunerability")==0) - return ITEMLIST_INVULNERABILITY; - - if(strcmp(classname,"item_haste")==0) - return ITEMLIST_HASTE; - - if(strcmp(classname,"item_sproing")==0) - return ITEMLIST_SPROING; - - if(strcmp(classname,"item_adrenaline")==0) - return ITEMLIST_ADRENALINE; - - if(strcmp(classname,"item_health")==0) // ?? - return ITEMLIST_HEALTH; - - if(strcmp(classname,"item_health_small")==0) - return ITEMLIST_HEALTH_SMALL; - - if(strcmp(classname,"item_health_medium")==0) - return ITEMLIST_HEALTH_MEDIUM; - - if(strcmp(classname,"item_health_large")==0) - return ITEMLIST_HEALTH_LARGE; - - if(strcmp(classname,"item_health_mega")==0) - return ITEMLIST_HEALTH_MEGA; - - if(strcmp(classname, "item_flag_red") == 0) - return ITEMLIST_FLAG1; - - if(strcmp(classname, "item_flag_blue") == 0) - return ITEMLIST_FLAG2; - - if(strcmp(classname, "item_bomber") == 0) - return ITEMLIST_BOMBER; - - if(strcmp(classname, "item_strafer") == 0) + + default: + return 0.0; + + } + +} + +/////////////////////////////////////////////////////////////////////// +// Convert a classname to its index value +// +// I prefer to use integers/defines for simplicity sake. This routine +// can lead to some slowdowns I guess, but makes the rest of the code +// easier to deal with. +/////////////////////////////////////////////////////////////////////// +int ACEIT_ClassnameToIndex(char *classname) +{ + if(strcmp(classname,"item_armor_body")==0) + return ITEMLIST_BODYARMOR; + + if(strcmp(classname,"item_armor_combat")==0) + return ITEMLIST_COMBATARMOR; + + if(strcmp(classname,"item_armor_jacket")==0) + return ITEMLIST_JACKETARMOR; + + if(strcmp(classname,"item_armor_shard")==0) + return ITEMLIST_ARMORSHARD; + + if(strcmp(classname,"weapon_blaster")==0) + return ITEMLIST_BLASTER; + + if(strcmp(classname,"weapon_shotgun")==0) + return ITEMLIST_SHOTGUN; + + if(strcmp(classname,"weapon_supershotgun")==0) + return ITEMLIST_SUPERSHOTGUN; + + if(strcmp(classname,"weapon_chaingun")==0) + return ITEMLIST_CHAINGUN; + + if(strcmp(classname,"ammo_grenades")==0) + return ITEMLIST_GRENADES; + + if(strcmp(classname,"weapon_rocketlauncher")==0) + return ITEMLIST_ROCKETLAUNCHER; + + if(strcmp(classname,"weapon_hyperblaster")==0) + return ITEMLIST_HYPERBLASTER; + + if(strcmp(classname,"weapon_railgun")==0) + return ITEMLIST_RAILGUN; + + if(strcmp(classname,"weapon_bfg")==0) + return ITEMLIST_BFG10K; + + if(strcmp(classname, "weapon_minderaser") == 0) + return ITEMLIST_MINDERASER; + + if(strcmp(classname,"ammo_shells")==0) + return ITEMLIST_SHELLS; + + if(strcmp(classname,"ammo_bullets")==0) + return ITEMLIST_BULLETS; + + if(strcmp(classname,"ammo_cells")==0) + return ITEMLIST_CELLS; + + if(strcmp(classname,"ammo_rockets")==0) + return ITEMLIST_ROCKETS; + + if(strcmp(classname,"ammo_slugs")==0) + return ITEMLIST_SLUGS; + + if(strcmp(classname,"item_quad")==0) + return ITEMLIST_QUADDAMAGE; + + if(strcmp(classname,"item_invunerability")==0) + return ITEMLIST_INVULNERABILITY; + + if(strcmp(classname,"item_haste")==0) + return ITEMLIST_HASTE; + + if(strcmp(classname,"item_sproing")==0) + return ITEMLIST_SPROING; + + if(strcmp(classname,"item_adrenaline")==0) + return ITEMLIST_ADRENALINE; + + if(strcmp(classname,"item_health")==0) // ?? + return ITEMLIST_HEALTH; + + if(strcmp(classname,"item_health_small")==0) + return ITEMLIST_HEALTH_SMALL; + + if(strcmp(classname,"item_health_medium")==0) + return ITEMLIST_HEALTH_MEDIUM; + + if(strcmp(classname,"item_health_large")==0) + return ITEMLIST_HEALTH_LARGE; + + if(strcmp(classname,"item_health_mega")==0) + return ITEMLIST_HEALTH_MEGA; + + if(strcmp(classname, "item_flag_red") == 0) + return ITEMLIST_FLAG1; + + if(strcmp(classname, "item_flag_blue") == 0) + return ITEMLIST_FLAG2; + + if(strcmp(classname, "item_bomber") == 0) + return ITEMLIST_BOMBER; + + if(strcmp(classname, "item_strafer") == 0) return ITEMLIST_STRAFER; if(strcmp(classname, "item_deathball") == 0) - return ITEMLIST_DEATHBALL; - - return INVALID; -} - - -/////////////////////////////////////////////////////////////////////// -// Only called once per level, when saved will not be called again -// -// Downside of the routine is that items can not move about. If the level -// has been saved before and reloaded, it could cause a problem if there -// are items that spawn at random locations. -// -//#define DEBUG // uncomment to write out items to a file. -/////////////////////////////////////////////////////////////////////// -void ACEIT_BuildItemNodeTable (qboolean rebuild) -{ - edict_t *items; - int i,item_index; - vec3_t v,v1,v2; - -#ifdef DEBUG - FILE *pOut; // for testing - if((pOut = fopen("items.txt","wt"))==NULL) - return; -#endif - - num_items = 0; - - // Add game items - for(items = g_edicts; items < &g_edicts[globals.num_edicts]; items++) - { - // filter out crap - if(items->solid == SOLID_NOT) - continue; - - if(!items->classname) - continue; - - ///////////////////////////////////////////////////////////////// - // Items - ///////////////////////////////////////////////////////////////// - item_index = ACEIT_ClassnameToIndex(items->classname); - - //////////////////////////////////////////////////////////////// - // SPECIAL NAV NODE DROPPING CODE - //////////////////////////////////////////////////////////////// - // Special node dropping for platforms - if(strcmp(items->classname,"func_plat")==0) - { - if(!rebuild) - ACEND_AddNode(items,NODE_PLATFORM); - item_index = 99; // to allow to pass the item index test - } - - // Special node dropping for teleporters - if(strcmp(items->classname,"misc_teleporter_dest")==0 || strcmp(items->classname,"misc_teleporter")==0) - { - if(!rebuild) - ACEND_AddNode(items,NODE_TELEPORTER); - item_index = 99; - } - - #ifdef DEBUG - if(item_index == INVALID) - fprintf(pOut,"Rejected item: %s node: %d pos: %f %f %f\n",items->classname,item_table[num_items].node,items->s.origin[0],items->s.origin[1],items->s.origin[2]); - else - fprintf(pOut,"item: %s node: %d pos: %f %f %f\n",items->classname,item_table[num_items].node,items->s.origin[0],items->s.origin[1],items->s.origin[2]); - #endif - - if(item_index == INVALID) - continue; - - // add a pointer to the item entity - item_table[num_items].ent = items; - item_table[num_items].item = item_index; - - // If new, add nodes for items - if(!rebuild) - { - // Add a new node at the item's location. - item_table[num_items].node = ACEND_AddNode(items,NODE_ITEM); - num_items++; - } - else // Now if rebuilding, just relink ent structures - { - // Find stored location - for(i=0;is.origin,v); - - // Add 16 to item type nodes - if(nodes[i].type == NODE_ITEM) - v[2] += 16; - - // Add 32 to teleporter - if(nodes[i].type == NODE_TELEPORTER) - v[2] += 32; - - if(nodes[i].type == NODE_PLATFORM) - { - VectorCopy(items->maxs,v1); - VectorCopy(items->mins,v2); - - // To get the center - v[0] = (v1[0] - v2[0]) / 2 + v2[0]; - v[1] = (v1[1] - v2[1]) / 2 + v2[1]; - v[2] = items->mins[2]+64; - } - - if(v[0] == nodes[i].origin[0] && - v[1] == nodes[i].origin[1] && - v[2] == nodes[i].origin[2]) - { - // found a match now link to facts - item_table[num_items].node = i; - -#ifdef DEBUG - fprintf(pOut,"Relink item: %s node: %d pos: %f %f %f\n",items->classname,item_table[num_items].node,items->s.origin[0],items->s.origin[1],items->s.origin[2]); -#endif - num_items++; - } - } - } - } - - - } - -#ifdef DEBUG - fclose(pOut); -#endif - -} + return ITEMLIST_DEATHBALL; + + return INVALID; +} + + +/////////////////////////////////////////////////////////////////////// +// Only called once per level, when saved will not be called again +// +// Downside of the routine is that items can not move about. If the level +// has been saved before and reloaded, it could cause a problem if there +// are items that spawn at random locations. +// +//#define DEBUG // uncomment to write out items to a file. +/////////////////////////////////////////////////////////////////////// +void ACEIT_BuildItemNodeTable (qboolean rebuild) +{ + edict_t *items; + int i,item_index; + vec3_t v,v1,v2; + +#ifdef DEBUG + FILE *pOut; // for testing + if((pOut = fopen("items.txt","wt"))==NULL) + return; +#endif + + num_items = 0; + + // Add game items + for(items = g_edicts; items < &g_edicts[globals.num_edicts]; items++) + { + // filter out crap + if(items->solid == SOLID_NOT) + continue; + + if(!items->classname) + continue; + + ///////////////////////////////////////////////////////////////// + // Items + ///////////////////////////////////////////////////////////////// + item_index = ACEIT_ClassnameToIndex(items->classname); + + //////////////////////////////////////////////////////////////// + // SPECIAL NAV NODE DROPPING CODE + //////////////////////////////////////////////////////////////// + // Special node dropping for platforms + if(strcmp(items->classname,"func_plat")==0) + { + if(!rebuild) + ACEND_AddNode(items,NODE_PLATFORM); + item_index = 99; // to allow to pass the item index test + } + + // Special node dropping for teleporters + if(strcmp(items->classname,"misc_teleporter_dest")==0 || strcmp(items->classname,"misc_teleporter")==0) + { + if(!rebuild) + ACEND_AddNode(items,NODE_TELEPORTER); + item_index = 99; + } + + #ifdef DEBUG + if(item_index == INVALID) + fprintf(pOut,"Rejected item: %s node: %d pos: %f %f %f\n",items->classname,item_table[num_items].node,items->s.origin[0],items->s.origin[1],items->s.origin[2]); + else + fprintf(pOut,"item: %s node: %d pos: %f %f %f\n",items->classname,item_table[num_items].node,items->s.origin[0],items->s.origin[1],items->s.origin[2]); + #endif + + if(item_index == INVALID) + continue; + + // add a pointer to the item entity + item_table[num_items].ent = items; + item_table[num_items].item = item_index; + + // If new, add nodes for items + if(!rebuild) + { + // Add a new node at the item's location. + item_table[num_items].node = ACEND_AddNode(items,NODE_ITEM); + num_items++; + } + else // Now if rebuilding, just relink ent structures + { + // Find stored location + for(i=0;is.origin,v); + + // Add 16 to item type nodes + if(nodes[i].type == NODE_ITEM) + v[2] += 16; + + // Add 32 to teleporter + if(nodes[i].type == NODE_TELEPORTER) + v[2] += 32; + + if(nodes[i].type == NODE_PLATFORM) + { + VectorCopy(items->maxs,v1); + VectorCopy(items->mins,v2); + + // To get the center + v[0] = (v1[0] - v2[0]) / 2 + v2[0]; + v[1] = (v1[1] - v2[1]) / 2 + v2[1]; + v[2] = items->mins[2]+64; + } + + if(v[0] == nodes[i].origin[0] && + v[1] == nodes[i].origin[1] && + v[2] == nodes[i].origin[2]) + { + // found a match now link to facts + item_table[num_items].node = i; + +#ifdef DEBUG + fprintf(pOut,"Relink item: %s node: %d pos: %f %f %f\n",items->classname,item_table[num_items].node,items->s.origin[0],items->s.origin[1],items->s.origin[2]); +#endif + num_items++; + } + } + } + } + + + } + +#ifdef DEBUG + fclose(pOut); +#endif + +} diff -Nru alien-arena-7.53+dfsg/source/game/acesrc/acebot_movement.c alien-arena-7.66+dfsg/source/game/acesrc/acebot_movement.c --- alien-arena-7.53+dfsg/source/game/acesrc/acebot_movement.c 2011-12-14 18:23:21.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/acesrc/acebot_movement.c 2013-06-22 20:07:36.000000000 +0000 @@ -154,6 +154,12 @@ vec3_t dir,forward,right,start,end,offset; vec3_t top; trace_t tr; + short mSpeed; + + if(g_tactical->integer) + mSpeed = 200; + else + mSpeed = 400; // Get current direction VectorCopy(self->client->ps.viewangles,dir); @@ -185,9 +191,9 @@ if(!tr.allsolid) { if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; else if(ACEMV_CanMove(self, MOVE_BACK)) - ucmd->forwardmove = -400; + ucmd->forwardmove = -mSpeed; ucmd->upmove = -400; return true; } @@ -200,9 +206,9 @@ if(!tr.allsolid) { if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; else if(ACEMV_CanMove(self, MOVE_BACK)) - ucmd->forwardmove = -400; + ucmd->forwardmove = -mSpeed; ucmd->upmove = 400; return true; } @@ -226,9 +232,14 @@ vec3_t leftstart, rightstart,focalpoint; vec3_t upstart,upend; vec3_t dir,offset; - + short mSpeed; trace_t traceRight,traceLeft,traceUp, traceFront; // for eyesight - + + if(g_tactical->integer) + mSpeed = 200; + else + mSpeed = 400; + // Get current angle and set up "eyes" /* make sure bot's "eyes" are straight ahead @@ -258,7 +269,7 @@ { ucmd->upmove = 400; if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; return true; } @@ -266,7 +277,7 @@ if ( traceFront.fraction >= 1.0f ) { if ( ACEMV_CanMove( self, MOVE_FORWARD ) ) - ucmd->forwardmove = 400; //only try forward, bot should be looking to move in direction of eyes + ucmd->forwardmove = mSpeed; //only try forward, bot should be looking to move in direction of eyes return true; } @@ -306,7 +317,7 @@ else self->s.angles[YAW] += -(1.0 - traceRight.fraction) * 45.0; if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; return true; } } @@ -403,21 +414,43 @@ /////////////////////////////////////////////////////////////////////// void ACEMV_MoveToGoal(edict_t *self, usercmd_t *ucmd) { + short mSpeed; + + if(g_tactical->integer) + mSpeed = 200; + else + mSpeed = 400; + // If a rocket or grenade is around deal with it // Simple, but effective (could be rewritten to be more accurate) - if(strcmp(self->movetarget->classname,"rocket")==0 || - strcmp(self->movetarget->classname,"grenade")==0) - { - VectorSubtract (self->movetarget->s.origin, self->s.origin, self->move_vector); - ACEMV_ChangeBotAngle(self); + if(strcmp(self->movetarget->classname,"rocket") == 0 || + strcmp(self->movetarget->classname,"grenade") == 0 || + strcmp(self->movetarget->classname,"seeker") == 0 ) + { if(debug_mode) debug_printf("%s: Oh crap a rocket!\n",self->client->pers.netname); - // strafe left/right - if(rand()%1 && ACEMV_CanMove(self, MOVE_LEFT)) - ucmd->sidemove = -400; - else if(ACEMV_CanMove(self, MOVE_RIGHT)) - ucmd->sidemove = 400; + if(strcmp(self->movetarget->classname,"seeker") == 0) + { + VectorSubtract (self->s.origin, self->movetarget->s.origin, self->move_vector); + ACEMV_ChangeBotAngle(self); + + //turn and run like hell away from it + //to do - needs improvement - bot should run when getting hit by seeker as well + if(ACEMV_CanMove(self, MOVE_FORWARD)) + ucmd->forwardmove = mSpeed; + } + else + { + VectorSubtract (self->movetarget->s.origin, self->s.origin, self->move_vector); + ACEMV_ChangeBotAngle(self); + + // strafe left/right + if(rand()%1 && ACEMV_CanMove(self, MOVE_LEFT)) + ucmd->sidemove = -mSpeed; + else if(ACEMV_CanMove(self, MOVE_RIGHT)) + ucmd->sidemove = mSpeed; + } return; } @@ -429,13 +462,13 @@ //try moving forward, if blocked, strafe around it if possible. if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; else if(ACEMV_CanMove(self, MOVE_BACK)) - ucmd->forwardmove = -400; + ucmd->forwardmove = -mSpeed; else if(ACEMV_CanMove(self, MOVE_RIGHT)) - ucmd->sidemove = 400; + ucmd->sidemove = mSpeed; else if(ACEMV_CanMove(self, MOVE_LEFT)) - ucmd->sidemove = -400; + ucmd->sidemove = -mSpeed; return; } } @@ -450,6 +483,12 @@ int next_node_type=-1; int i; float c; + short mSpeed; + + if(g_tactical->integer) + mSpeed = 200; + else + mSpeed = 400; // Get current and next node back from nav code. if(!ACEND_FollowPath(self)) @@ -501,7 +540,7 @@ (current_node_type == NODE_JUMP && next_node_type != NODE_ITEM && nodes[self->next_node].origin[2] > self->s.origin[2])) { // Set up a jump move - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; ucmd->upmove = 400; ACEMV_ChangeBotAngle(self); @@ -518,7 +557,7 @@ if(next_node_type == NODE_LADDER && nodes[self->next_node].origin[2] > self->s.origin[2]) { // Otherwise move as fast as we can - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; self->velocity[2] = 320; ACEMV_ChangeBotAngle(self); @@ -530,7 +569,7 @@ if(current_node_type == NODE_LADDER && next_node_type != NODE_LADDER && nodes[self->next_node].origin[2] > self->s.origin[2]) { - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; ucmd->upmove = 200; self->velocity[2] = 200; ACEMV_ChangeBotAngle(self); @@ -576,22 +615,22 @@ self->s.angles[YAW] += random() * 180 - 90; // Try moving foward, if not, try to strafe around obstacle if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; else if(ACEMV_CanMove(self, MOVE_BACK)) - ucmd->forwardmove = -400; + ucmd->forwardmove = -mSpeed; else if(ACEMV_CanMove(self, MOVE_RIGHT)) - ucmd->sidemove = 400; + ucmd->sidemove = mSpeed; else if(ACEMV_CanMove(self, MOVE_LEFT)) - ucmd->sidemove = -400; + ucmd->sidemove = -mSpeed; return; } // Otherwise move as fast as we can if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; if(self->skill == 3) - { //ultra skill level(will be 3) + { //ultra skill level(will be 3) c = random(); if(!self->in_deathball && grapple->value && c <= .7) @@ -612,7 +651,7 @@ } else if(self->client->ctf_grapplestate != CTF_GRAPPLE_STATE_PULL && self->client->ctf_grapplestate != CTF_GRAPPLE_STATE_HANG) - { //don't interrupt a pull + { //don't interrupt a pull float weight; int strafeJump = false; @@ -620,7 +659,7 @@ //and not wandering. We really don't want them to jump around when wandering //as it seems to hinder locating a goal. - VectorSubtract(self->s.origin, nodes[self->current_node].origin, dist); + VectorSubtract(self->s.origin, nodes[self->current_node].origin, dist); weight = VectorLength( dist ); if(weight > 300) strafeJump = true; @@ -654,6 +693,12 @@ { vec3_t temp; float c; + short mSpeed; + + if(g_tactical->integer) + mSpeed = 200; + else + mSpeed = 400; // Do not move if(self->next_move_time > level.time) @@ -705,7 +750,7 @@ { // safe_bprintf(PRINT_MEDIUM,"lava jump\n"); self->s.angles[YAW] += random() * 360 - 180; - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; ucmd->upmove = 400; return; } @@ -724,25 +769,25 @@ // Try to move forward, if blocked, try to strafe around obstacle if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; else if(ACEMV_CanMove(self, MOVE_BACK)) - ucmd->forwardmove = -400; + ucmd->forwardmove = -mSpeed; else if(ACEMV_CanMove(self, MOVE_RIGHT)) - ucmd->sidemove = 400; + ucmd->sidemove = mSpeed; else if(ACEMV_CanMove(self, MOVE_LEFT)) - ucmd->sidemove = -400; + ucmd->sidemove = -mSpeed; if(!M_CheckBottom(self) || !self->groundentity) // if there is ground continue, otherwise wait for next move. { if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; } return; } if(ACEMV_CanMove(self, MOVE_FORWARD)) - ucmd->forwardmove = 400; + ucmd->forwardmove = mSpeed; if(self->skill == 3) { //ultra skill level(will be 3) @@ -849,6 +894,12 @@ float range = 0.0f; vec3_t v; qboolean use_fuzzy_aim; + short mSpeed; + + if(g_tactical->integer) + mSpeed = 200; + else + mSpeed = 400; ucmd->buttons = 0; use_fuzzy_aim = true; // unless overridden by special cases @@ -859,7 +910,8 @@ vehicle = FindItemByClassname("item_bomber"); - if (self->client->pers.inventory[ITEM_INDEX(vehicle)]) { + if (self->client->pers.inventory[ITEM_INDEX(vehicle)]) + { //if we are too low, don't shoot, and move up. Should be fairly simple, right? if(self->enemy->s.origin[2] >= self->s.origin[2] - 128) { //we want to be well above our target ucmd->upmove += 400; @@ -918,18 +970,19 @@ //machinegun/blaster/beamgun strafing for level 2/3 bots if ( !joustmode->value && self->skill >= 2 - && (self->client->pers.weapon == FindItem( "blaster" ) + && (self->client->pers.weapon == FindItem( "Blaster" ) + || self->client->pers.weapon == FindItem( "Alien Blaster" ) || self->client->pers.weapon == FindItem( "Pulse Rifle" ) || self->client->pers.weapon == FindItem( "Disruptor" ))) { //strafe no matter what if ( c < 0.5f && ACEMV_CanMove( self, MOVE_LEFT ) ) { - ucmd->sidemove -= 400; + ucmd->sidemove -= mSpeed; } else if ( c < 1.0f && ACEMV_CanMove( self, MOVE_RIGHT ) ) { - ucmd->sidemove += 400; + ucmd->sidemove += mSpeed; } else { //don't want high skill level bots just standing around @@ -939,15 +992,15 @@ //allow for some circle strafing if ( self->health < 50 && ACEMV_CanMove( self, MOVE_BACK ) ) { - ucmd->forwardmove -= 400; + ucmd->forwardmove -= mSpeed; } else if ( c < 0.6f && ACEMV_CanMove( self, MOVE_FORWARD ) ) { //keep this at default, not make them TOO hard - ucmd->forwardmove += 400; + ucmd->forwardmove += mSpeed; } else if ( c < 0.8f && ACEMV_CanMove( self, MOVE_BACK ) ) { - ucmd->forwardmove -= 400; + ucmd->forwardmove -= mSpeed; } goto attack; //skip any jumping or crouching @@ -970,15 +1023,15 @@ if ( self->health < 50 && ACEMV_CanMove( self, MOVE_BACK ) ) { //run away if wounded - ucmd->forwardmove -= 400; + ucmd->forwardmove -= mSpeed; } else if ( c < 0.6f && ACEMV_CanMove( self, MOVE_FORWARD ) ) { //keep this at default, not make them TOO hard - ucmd->forwardmove += 400; + ucmd->forwardmove += mSpeed; } else if ( c < 0.8f && ACEMV_CanMove( self, MOVE_BACK ) ) { - ucmd->forwardmove -= 400; + ucmd->forwardmove -= mSpeed; } c = random(); //really mix this up some @@ -988,6 +1041,7 @@ } else if ( c > jump_thresh ) { +#ifndef ALTERIA c = random(); if ( self->health >= 70 && self->skill >= 2 @@ -1008,6 +1062,7 @@ return; } else +#endif { // Normal Jump ucmd->upmove += 200; } @@ -1015,8 +1070,8 @@ attack: // Set the attack - if(ACEAI_CheckShot(self)) { - + if(ACEAI_CheckShot(self)) + { //bot is taking a shot, lose spawn protection // and calculate distance to enemy range = 0.0f; @@ -1029,21 +1084,24 @@ { // point blank range, avoid potentially odd behaviour use_fuzzy_aim = false; } - } + } - if(self->skill == 3) { //skill 3 bots can use alt-fires! + if(self->skill >= 2) + { //skill 2/3 bots can use alt-fires! // Base selection on distance. ucmd->buttons = BUTTON_ATTACK; - if (self->client->pers.weapon == FindItem("blaster")) { + if (self->client->pers.weapon == FindItem("Blaster") || self->client->pers.weapon == FindItem("Alien Blaster")) + { if( range > 500) ucmd->buttons = BUTTON_ATTACK2; else ucmd->buttons = BUTTON_ATTACK; } - if (self->client->pers.weapon == FindItem("alien disruptor")) { + if (self->client->pers.weapon == FindItem("Alien Disruptor")) + { if(range > 1000) { ucmd->buttons = BUTTON_ATTACK2; use_fuzzy_aim = false; @@ -1053,43 +1111,57 @@ ucmd->buttons = BUTTON_ATTACK; } - if (self->client->pers.weapon == FindItem("flame thrower")) { + if (self->client->pers.weapon == FindItem("Flame Thrower")) + { if(range < 500) ucmd->buttons = BUTTON_ATTACK; else ucmd->buttons = BUTTON_ATTACK2; } - if (self->client->pers.weapon == FindItem("pulse rifle")) { + if (self->client->pers.weapon == FindItem("Pulse Rifle")) + { if(range < 200) ucmd->buttons = BUTTON_ATTACK2; else ucmd->buttons = BUTTON_ATTACK; } - if (self->client->pers.weapon == FindItem("disruptor")) { - if(range < 500) + if (self->client->pers.weapon == FindItem("Disruptor")) + { + if(range < 300) ucmd->buttons = BUTTON_ATTACK2; else ucmd->buttons = BUTTON_ATTACK; } - if (self->client->pers.weapon == FindItem("alien vaporizer")) { + if (self->client->pers.weapon == FindItem("Alien Vaporizer")) + { if(range < 300) ucmd->buttons = BUTTON_ATTACK2; else ucmd->buttons = BUTTON_ATTACK; } + if (self->client->pers.weapon == FindItem("Minderaser")) + { + if(range < 400) + ucmd->buttons = BUTTON_ATTACK; + else + ucmd->buttons = BUTTON_ATTACK2; + } + //vehicle alt-fires if (self->client->pers.weapon == FindItem("bomber") - || self->client->pers.weapon == FindItem("strafer")) { + || self->client->pers.weapon == FindItem("strafer")) + { if(range > 500) ucmd->buttons = BUTTON_ATTACK2; else ucmd->buttons = BUTTON_ATTACK; } - if (self->client->pers.weapon == FindItem("hover")) { + if (self->client->pers.weapon == FindItem("hover")) + { if(range < 300) ucmd->buttons = BUTTON_ATTACK2; else diff -Nru alien-arena-7.53+dfsg/source/game/acesrc/acebot_nodes.c alien-arena-7.66+dfsg/source/game/acesrc/acebot_nodes.c --- alien-arena-7.53+dfsg/source/game/acesrc/acebot_nodes.c 2011-12-10 06:06:35.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/acesrc/acebot_nodes.c 2013-06-22 20:07:36.000000000 +0000 @@ -1,688 +1,710 @@ -/////////////////////////////////////////////////////////////////////// -// -// ACE - Quake II Bot Base Code -// -// Version 1.0 -// -// This file is Copyright(c), Steve Yeager 1998, All Rights Reserved -// -// -// All other files are Copyright(c) Id Software, Inc. -// -// Please see liscense.txt in the source directory for the copyright -// information regarding those files belonging to Id Software, Inc. -// -// Should you decide to release a modified version of ACE, you MUST -// include the following text (minus the BEGIN and END lines) in the -// documentation for your modification. -// -// --- BEGIN --- -// -// The ACE Bot is a product of Steve Yeager, and is available from -// the ACE Bot homepage, at http://www.axionfx.com/ace. -// -// This program is a modification of the ACE Bot, and is therefore -// in NO WAY supported by Steve Yeager. - -// This program MUST NOT be sold in ANY form. If you have paid for -// this product, you should contact Steve Yeager immediately, via -// the ACE Bot homepage. -// -// --- END --- -// -// I, Steve Yeager, hold no responsibility for any harm caused by the -// use of this source code, especially to small children and animals. -// It is provided as-is with no implied warranty or support. -// -// I also wish to thank and acknowledge the great work of others -// that has helped me to develop this code. -// -// John Cricket - For ideas and swapping code. -// Ryan Feltrin - For ideas and swapping code. -// SABIN - For showing how to do true client based movement. -// BotEpidemic - For keeping us up to date. -// Telefragged.com - For giving ACE a home. -// Microsoft - For giving us such a wonderful crash free OS. -// id - Need I say more. -// -// And to all the other testers, pathers, and players and people -// who I can't remember who the heck they were, but helped out. -// -/////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////// -// -// acebot_nodes.c - This file contains all of the -// pathing routines for the ACE bot. -// -/////////////////////////////////////////////////////////////////////// - -#ifdef HAVE_CONFIG_H -#include "config.h" -#endif - -#include "game/g_local.h" -#include "acebot.h" - -// flags -qboolean newmap=true; - -// Total number of nodes that are items -int numitemnodes; - -// Total number of nodes -int bot_numnodes; - -// For debugging paths -int show_path_from = -1; -int show_path_to = -1; - -// array for node data -node_t nodes[MAX_NODES]; -edict_t *node_showents[MAX_NODES]; -short int path_table[MAX_NODES][MAX_NODES]; - -/////////////////////////////////////////////////////////////////////// -// NODE INFORMATION FUNCTIONS -/////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////// -// Determine cost of moving from one node to another -/////////////////////////////////////////////////////////////////////// -int ACEND_FindCost(int from, int to) -{ - int curnode; - int cost=1; // Shortest possible is 1 - - // If we can not get there then return invalid - if (path_table[from][to] == INVALID) - { - //if(debug_mode) - // debug_printf("Found invalid path!"); - return INVALID; - } - // Otherwise check the path and return the cost - curnode = path_table[from][to]; - - // Find a path (linear time, very fast) - while(curnode != to) - { - curnode = path_table[curnode][to]; - if(curnode == INVALID) // something has corrupted the path abort - { - //if(debug_mode) - // debug_printf("Found invalid path!"); - - return INVALID; - } - cost++; - if(cost > 500) { - if(debug_mode) - debug_printf("Cost exceeded maximum!\n"); - break; - } - } - - return cost; -} - -/////////////////////////////////////////////////////////////////////// -// Find the closest node to the player within a certain range -/////////////////////////////////////////////////////////////////////// -int ACEND_FindClosestReachableNode(edict_t *self, int range, int type) -{ - int i; - float closest = 99999; - float dist; - int node=-1; - vec3_t v; - trace_t tr; - float rng; - vec3_t maxs,mins; - - VectorCopy(self->mins,mins); - VectorCopy(self->maxs,maxs); - - // For Ladders, do not worry so much about reachability - if(type == NODE_LADDER) - { - VectorCopy(vec3_origin,maxs); - VectorCopy(vec3_origin,mins); - } - else - mins[2] += 18; // Stepsize - - rng = (float)(range); // square range for distance comparison (eliminate sqrt) - - for(i=0;is.origin, v); // subtract first - - dist = VectorLength(v); - - if(self->current_node != -1) - { - dist = dist + abs(self->current_node - i); //try to keep the bot on the current path(i.e - nodes in sequence are weighted over those out) - } - - if(dist < closest && dist < rng) - { - // make sure it is visible - tr = gi.trace (self->s.origin, mins, maxs, nodes[i].origin, self, MASK_SOLID); - if(tr.fraction == 1.0) - { - node = i; - closest = dist; - } - } - } - } - - return node; -} - -/////////////////////////////////////////////////////////////////////// -// BOT NAVIGATION ROUTINES -/////////////////////////////////////////////////////////////////////// - -/////////////////////////////////////////////////////////////////////// -// Set up the goal -/////////////////////////////////////////////////////////////////////// -void ACEND_SetGoal(edict_t *self, int goal_node) -{ - int node; -#ifdef CTFNODES - gitem_t *flag1_item, *flag2_item; -#endif - self->goal_node = goal_node; -#ifdef CTFNODES - //if flag in possession only use base nodes - if(ctf->value) - { +/////////////////////////////////////////////////////////////////////// +// +// ACE - Quake II Bot Base Code +// +// Version 1.0 +// +// This file is Copyright(c), Steve Yeager 1998, All Rights Reserved +// +// +// All other files are Copyright(c) Id Software, Inc. +// +// Please see liscense.txt in the source directory for the copyright +// information regarding those files belonging to Id Software, Inc. +// +// Should you decide to release a modified version of ACE, you MUST +// include the following text (minus the BEGIN and END lines) in the +// documentation for your modification. +// +// --- BEGIN --- +// +// The ACE Bot is a product of Steve Yeager, and is available from +// the ACE Bot homepage, at http://www.axionfx.com/ace. +// +// This program is a modification of the ACE Bot, and is therefore +// in NO WAY supported by Steve Yeager. + +// This program MUST NOT be sold in ANY form. If you have paid for +// this product, you should contact Steve Yeager immediately, via +// the ACE Bot homepage. +// +// --- END --- +// +// I, Steve Yeager, hold no responsibility for any harm caused by the +// use of this source code, especially to small children and animals. +// It is provided as-is with no implied warranty or support. +// +// I also wish to thank and acknowledge the great work of others +// that has helped me to develop this code. +// +// John Cricket - For ideas and swapping code. +// Ryan Feltrin - For ideas and swapping code. +// SABIN - For showing how to do true client based movement. +// BotEpidemic - For keeping us up to date. +// Telefragged.com - For giving ACE a home. +// Microsoft - For giving us such a wonderful crash free OS. +// id - Need I say more. +// +// And to all the other testers, pathers, and players and people +// who I can't remember who the heck they were, but helped out. +// +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +// +// acebot_nodes.c - This file contains all of the +// pathing routines for the ACE bot. +// +/////////////////////////////////////////////////////////////////////// + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "game/g_local.h" +#include "acebot.h" + +// flags +qboolean newmap=true; + +// Total number of nodes that are items +int numitemnodes; + +// Total number of nodes +int bot_numnodes; + +// For debugging paths +int show_path_from = -1; +int show_path_to = -1; + +// array for node data +node_t nodes[MAX_NODES]; +edict_t *node_showents[MAX_NODES]; +short int path_table[MAX_NODES][MAX_NODES]; + +/////////////////////////////////////////////////////////////////////// +// NODE INFORMATION FUNCTIONS +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +// Determine cost of moving from one node to another +/////////////////////////////////////////////////////////////////////// +int ACEND_FindCost(int from, int to) +{ + int curnode; + int cost=1; // Shortest possible is 1 + + // If we can not get there then return invalid + if (path_table[from][to] == INVALID) + { + //if(debug_mode) + // debug_printf("Found invalid path!"); + return INVALID; + } + // Otherwise check the path and return the cost + curnode = path_table[from][to]; + + // Find a path (linear time, very fast) + while(curnode != to) + { + curnode = path_table[curnode][to]; + if(curnode == INVALID) // something has corrupted the path abort + { + //if(debug_mode) + // debug_printf("Found invalid path!"); + + return INVALID; + } + cost++; + if(cost > 500) { + if(debug_mode) + debug_printf("Cost exceeded maximum!\n"); + break; + } + } + + return cost; +} + +/////////////////////////////////////////////////////////////////////// +// Find the closest node to the player within a certain range +/////////////////////////////////////////////////////////////////////// +int ACEND_FindClosestReachableNode(edict_t *self, int range, int type) +{ + int i; + float closest = 99999; + float dist; + int node=-1; + vec3_t v; + trace_t tr; + float rng; + vec3_t maxs,mins; + + VectorCopy(self->mins,mins); + VectorCopy(self->maxs,maxs); + + // For Ladders, do not worry so much about reachability + if(type == NODE_LADDER) + { + VectorCopy(vec3_origin,maxs); + VectorCopy(vec3_origin,mins); + } + else + mins[2] += 18; // Stepsize + + rng = (float)(range); // square range for distance comparison (eliminate sqrt) + + for(i=0;is.origin, v); // subtract first + + dist = VectorLength(v); + + if(self->current_node != -1) + { + dist = dist + abs(self->current_node - i); //try to keep the bot on the current path(i.e - nodes in sequence are weighted over those out) + } + + if(dist < closest && dist < rng) + { + // make sure it is visible + tr = gi.trace (self->s.origin, mins, maxs, nodes[i].origin, self, MASK_SOLID); + if(tr.fraction == 1.0) + { + node = i; + closest = dist; + } + } + } + } + + return node; +} + +/////////////////////////////////////////////////////////////////////// +// BOT NAVIGATION ROUTINES +/////////////////////////////////////////////////////////////////////// + +/////////////////////////////////////////////////////////////////////// +// Set up the goal +/////////////////////////////////////////////////////////////////////// +void ACEND_SetGoal(edict_t *self, int goal_node) +{ + int node; + gitem_t *flag1_item, *flag2_item; + self->goal_node = goal_node; + + //if flag in possession only use base nodes + if(ctf->value) + { flag1_item = FindItemByClassname("item_flag_red"); flag2_item = FindItemByClassname("item_flag_blue"); if (self->client->pers.inventory[ITEM_INDEX(flag1_item)]) + { node = ACEND_FindClosestReachableNode(self,NODE_DENSITY*3,NODE_BLUEBASE); + if(node == -1) + node = ACEND_FindClosestReachableNode(self,NODE_DENSITY*3,NODE_ALL); + } else if (self->client->pers.inventory[ITEM_INDEX(flag2_item)]) - node = ACEND_FindClosestReachableNode(self,NODE_DENSITY*3,NODE_REDBASE); - else - node = ACEND_FindClosestReachableNode(self,NODE_DENSITY*3,NODE_ALL); - } - else -#endif - node = ACEND_FindClosestReachableNode(self, NODE_DENSITY*3, NODE_ALL); - - if(node == -1) - return; - - if(debug_mode) - debug_printf("%s new start node (type: %i) selected %d\n",self->client->pers.netname, nodes[node].type, node); - - self->current_node = node; - self->next_node = self->current_node; // make sure we get to the nearest node first - self->node_timeout = 0; - -} - -/////////////////////////////////////////////////////////////////////// -// Move closer to goal by pointing the bot to the next node -// that is closer to the goal -/////////////////////////////////////////////////////////////////////// -qboolean ACEND_FollowPath(edict_t *self) -{ - vec3_t v; - - ////////////////////////////////////////// - // Show the path - if(debug_mode) { - show_path_from = self->current_node; - show_path_to = self->goal_node; - } - ////////////////////////////////////////// - - // Try again? - if(self->node_timeout ++ > 30) - { - if(self->tries++ > 3) - return false; - else - ACEND_SetGoal(self,self->goal_node); - } - - // Are we there yet? - VectorSubtract(self->s.origin,nodes[self->next_node].origin,v); - - if(VectorLength(v) < 32) - { - // reset timeout - self->node_timeout = 0; - - if(self->next_node == self->goal_node) - { - if(debug_mode) - debug_printf("%s reached goal!\n",self->client->pers.netname); - - ACEAI_PickLongRangeGoal(self); // Pick a new goal - } - else - { - self->current_node = self->next_node; - self->next_node = path_table[self->current_node][self->goal_node]; - } - } - - if(self->current_node == -1 || self->next_node ==-1) - return false; - - // Set bot's movement vector - VectorSubtract (nodes[self->next_node].origin, self->s.origin , self->move_vector); - - return true; -} - -/////////////////////////////////////////////////////////////////////// -// Init node array (set all to INVALID) -/////////////////////////////////////////////////////////////////////// -void ACEND_InitNodes(void) -{ - bot_numnodes = 1; - numitemnodes = 1; - memset(nodes,0,sizeof(node_t) * MAX_NODES); - memset(path_table,INVALID,sizeof(short int)*MAX_NODES*MAX_NODES); - memset(node_showents,0,sizeof(edict_t *)*MAX_NODES); - -} - -/////////////////////////////////////////////////////////////////////// -// Show the node for debugging (utility function) -// Previously there was a warning comment here about overflows, however it -// seems to be just fine on a private server. -/////////////////////////////////////////////////////////////////////// -void ACEND_ShowNode(int node) -{ - edict_t *ent; - - if (node_showents[node]) { - safe_bprintf(PRINT_MEDIUM, "node %d already being shown\n", node); - return; - } - - ent = G_Spawn(); - - ent->movetype = MOVETYPE_NONE; - ent->solid = SOLID_NOT; - - if(nodes[node].type == NODE_MOVE) - ent->s.renderfx = RF_SHELL_BLUE; - else if (nodes[node].type == NODE_WATER) - ent->s.renderfx = RF_SHELL_RED; - else - ent->s.renderfx = RF_SHELL_GREEN; // action nodes - - ent->s.modelindex = gi.modelindex ("models/items/ammo/grenades/medium/tris.md2"); - ent->owner = ent; - ent->nextthink = level.time + 200000.0; - ent->think = G_FreeEdict; - ent->dmg = 0; - - VectorCopy(nodes[node].origin,ent->s.origin); - gi.linkentity (ent); - - node_showents[node] = ent; - -} - -/////////////////////////////////////////////////////////////////////// -// Draws the current path (utility function) -/////////////////////////////////////////////////////////////////////// -void ACEND_DrawPath() -{ - int current_node, goal_node, next_node; - - if (!debug_mode) - return; - - current_node = show_path_from; - goal_node = show_path_to; - - next_node = path_table[current_node][goal_node]; - - // Now set up and display the path - while(current_node != goal_node && current_node != -1) - { - gi.WriteByte (svc_temp_entity); - gi.WriteByte (TE_REDLASER); - gi.WritePosition (nodes[current_node].origin); - gi.WritePosition (nodes[next_node].origin); - gi.multicast (nodes[current_node].origin, MULTICAST_PVS); - current_node = next_node; - next_node = path_table[current_node][goal_node]; - } -} - -/////////////////////////////////////////////////////////////////////// -// Turns on showing of the path, set goal to -1 to -// shut off. (utility function) -/////////////////////////////////////////////////////////////////////// -void ACEND_ShowPath(edict_t *self, int goal_node) -{ - show_path_from = ACEND_FindClosestReachableNode(self, NODE_DENSITY, NODE_ALL); - show_path_to = goal_node; -} - -/////////////////////////////////////////////////////////////////////// -// Add a node of type ? -/////////////////////////////////////////////////////////////////////// -int ACEND_AddNode(edict_t *self, int type) -{ - vec3_t v1,v2; - - // Block if we exceed maximum - if (bot_numnodes + 1 > MAX_NODES) - return false; - - // Set location - VectorCopy(self->s.origin,nodes[bot_numnodes].origin); - - // Set type - nodes[bot_numnodes].type = type; - - ///////////////////////////////////////////////////// - // ITEMS - // Move the z location up just a bit. - if(type == NODE_ITEM) - { - nodes[bot_numnodes].origin[2] += 16; - numitemnodes++; - } - - // Teleporters - if(type == NODE_TELEPORTER) - { - // Up 32 - nodes[bot_numnodes].origin[2] += 32; - } - - if(type == NODE_LADDER) - { - nodes[bot_numnodes].type = NODE_LADDER; - - if(debug_mode) - { - debug_printf("Node added %d type: Ladder\n",bot_numnodes); - ACEND_ShowNode(bot_numnodes); - } - - bot_numnodes++; - return bot_numnodes-1; // return the node added - - } - - // For platforms drop two nodes one at top, one at bottom - if(type == NODE_PLATFORM) - { - VectorCopy(self->maxs,v1); - VectorCopy(self->mins,v2); - - // To get the center - nodes[bot_numnodes].origin[0] = (v1[0] - v2[0]) / 2 + v2[0]; - nodes[bot_numnodes].origin[1] = (v1[1] - v2[1]) / 2 + v2[1]; - nodes[bot_numnodes].origin[2] = self->maxs[2]; - - if(debug_mode) - ACEND_ShowNode(bot_numnodes); - - bot_numnodes++; - - nodes[bot_numnodes].origin[0] = nodes[bot_numnodes-1].origin[0]; - nodes[bot_numnodes].origin[1] = nodes[bot_numnodes-1].origin[1]; - nodes[bot_numnodes].origin[2] = self->mins[2]+64; - - nodes[bot_numnodes].type = NODE_PLATFORM; - - // Add a link - ACEND_UpdateNodeEdge(bot_numnodes,bot_numnodes-1); - - if(debug_mode) - { - debug_printf("Node added %d type: Platform\n",bot_numnodes); - ACEND_ShowNode(bot_numnodes); - } - - bot_numnodes++; - - return bot_numnodes -1; - } - - if(debug_mode) - { - if(nodes[bot_numnodes].type == NODE_MOVE) - debug_printf("Node added %d type: Move\n",bot_numnodes); - else if(nodes[bot_numnodes].type == NODE_TELEPORTER) - debug_printf("Node added %d type: Teleporter\n",bot_numnodes); - else if(nodes[bot_numnodes].type == NODE_ITEM) - debug_printf("Node added %d type: Item\n",bot_numnodes); - else if(nodes[bot_numnodes].type == NODE_WATER) - debug_printf("Node added %d type: Water\n",bot_numnodes); - else if(nodes[bot_numnodes].type == NODE_GRAPPLE) - debug_printf("Node added %d type: Grapple\n",bot_numnodes); - else if(nodes[bot_numnodes].type == NODE_REDBASE) - debug_printf("Node added %d type: Red Base\n",bot_numnodes); - else if(nodes[bot_numnodes].type == NODE_BLUEBASE) - debug_printf("Node added %d type: Blue Base\n",bot_numnodes); - else if(nodes[bot_numnodes].type == NODE_DEFEND) - debug_printf("Node added %d type: Defend Base\n",bot_numnodes); - - ACEND_ShowNode(bot_numnodes); - } - - bot_numnodes++; - - return bot_numnodes-1; // return the node added -} - -/////////////////////////////////////////////////////////////////////// -// Add/Update node connections (paths) -/////////////////////////////////////////////////////////////////////// -void ACEND_UpdateNodeEdge(int from, int to) -{ - int i; - - if(from == -1 || to == -1 || from == to) - return; // safety - - // Add the link - path_table[from][to] = to; - - // Now for the self-referencing part, linear time for each link added - for(i=0;i %d\n", from, to); -} - -/////////////////////////////////////////////////////////////////////// -// Remove a node edge -/////////////////////////////////////////////////////////////////////// -void ACEND_RemoveNodeEdge(edict_t *self, int from, int to) -{ - int i; - - if(debug_mode) - debug_printf("%s: Removing Edge %d -> %d\n", self->client->pers.netname, from, to); - - path_table[from][to] = INVALID; // set to invalid - - // Make sure this gets updated in our path array - for(i=0;ivalue) //when a base's laser barriers shut off, go into a more direct attack route + { + if (self->ctype == 1 && (!tacticalScore.alienComputer || !tacticalScore.alienPowerSource)) + { + node = ACEND_FindClosestReachableNode(self,NODE_DENSITY*3,NODE_BLUEBASE); + if(node == -1) + node = ACEND_FindClosestReachableNode(self,NODE_DENSITY*3,NODE_ALL); + } + else if (self->ctype == 0 && (!tacticalScore.humanComputer || !tacticalScore.humanPowerSource)) + { + node = ACEND_FindClosestReachableNode(self,NODE_DENSITY*3,NODE_REDBASE); + if(node == -1) + node = ACEND_FindClosestReachableNode(self,NODE_DENSITY*3,NODE_ALL); + } + else + node = ACEND_FindClosestReachableNode(self,NODE_DENSITY*3,NODE_ALL); + } + else + node = ACEND_FindClosestReachableNode(self, NODE_DENSITY*3, NODE_ALL); + + if(node == -1) + return; + + if(debug_mode) + debug_printf("%s new start node (type: %i) selected %d\n",self->client->pers.netname, nodes[node].type, node); + + self->current_node = node; + self->next_node = self->current_node; // make sure we get to the nearest node first + self->node_timeout = 0; + +} + +/////////////////////////////////////////////////////////////////////// +// Move closer to goal by pointing the bot to the next node +// that is closer to the goal +/////////////////////////////////////////////////////////////////////// +qboolean ACEND_FollowPath(edict_t *self) +{ + vec3_t v; + + ////////////////////////////////////////// + // Show the path + if(debug_mode) { + show_path_from = self->current_node; + show_path_to = self->goal_node; + } + ////////////////////////////////////////// + + // Try again? + if(self->node_timeout ++ > 30) + { + if(self->tries++ > 3) + return false; + else + ACEND_SetGoal(self,self->goal_node); + } + + // Are we there yet? + VectorSubtract(self->s.origin,nodes[self->next_node].origin,v); + + if(VectorLength(v) < 32) + { + // reset timeout + self->node_timeout = 0; + + if(self->next_node == self->goal_node) + { + if(debug_mode) + debug_printf("%s reached goal!\n",self->client->pers.netname); + + ACEAI_PickLongRangeGoal(self); // Pick a new goal + } + else + { + self->current_node = self->next_node; + self->next_node = path_table[self->current_node][self->goal_node]; + } + } + + if(self->current_node == -1 || self->next_node ==-1) + return false; + + // Set bot's movement vector + VectorSubtract (nodes[self->next_node].origin, self->s.origin , self->move_vector); + + return true; +} + +/////////////////////////////////////////////////////////////////////// +// Init node array (set all to INVALID) +/////////////////////////////////////////////////////////////////////// +void ACEND_InitNodes(void) +{ + bot_numnodes = 1; + numitemnodes = 1; + memset(nodes,0,sizeof(node_t) * MAX_NODES); + memset(path_table,INVALID,sizeof(short int)*MAX_NODES*MAX_NODES); + memset(node_showents,0,sizeof(edict_t *)*MAX_NODES); + +} + +/////////////////////////////////////////////////////////////////////// +// Show the node for debugging (utility function) +// Previously there was a warning comment here about overflows, however it +// seems to be just fine on a private server. +/////////////////////////////////////////////////////////////////////// +void ACEND_ShowNode(int node) +{ + edict_t *ent; + + if (node_showents[node]) { + safe_bprintf(PRINT_MEDIUM, "node %d already being shown\n", node); + return; + } + + ent = G_Spawn(); + + ent->movetype = MOVETYPE_NONE; + ent->solid = SOLID_NOT; + + if(nodes[node].type == NODE_MOVE) + ent->s.renderfx = RF_SHELL_BLUE; + else if (nodes[node].type == NODE_WATER) + ent->s.renderfx = RF_SHELL_RED; + else + ent->s.renderfx = RF_SHELL_GREEN; // action nodes + + ent->s.modelindex = gi.modelindex ("models/items/ammo/grenades/medium/tris.md2"); + ent->owner = ent; + ent->nextthink = level.time + 200000.0; + ent->think = G_FreeEdict; + ent->dmg = 0; + + VectorCopy(nodes[node].origin,ent->s.origin); + gi.linkentity (ent); + + node_showents[node] = ent; + +} + +/////////////////////////////////////////////////////////////////////// +// Draws the current path (utility function) +/////////////////////////////////////////////////////////////////////// +void ACEND_DrawPath() +{ + int current_node, goal_node, next_node; + + if (!debug_mode) + return; + + current_node = show_path_from; + goal_node = show_path_to; + + next_node = path_table[current_node][goal_node]; + + // Now set up and display the path + while(current_node != goal_node && current_node != -1) + { + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_REDLASER); + gi.WritePosition (nodes[current_node].origin); + gi.WritePosition (nodes[next_node].origin); + gi.multicast (nodes[current_node].origin, MULTICAST_PVS); + current_node = next_node; + next_node = path_table[current_node][goal_node]; + } +} + +/////////////////////////////////////////////////////////////////////// +// Turns on showing of the path, set goal to -1 to +// shut off. (utility function) +/////////////////////////////////////////////////////////////////////// +void ACEND_ShowPath(edict_t *self, int goal_node) +{ + show_path_from = ACEND_FindClosestReachableNode(self, NODE_DENSITY, NODE_ALL); + show_path_to = goal_node; +} + +/////////////////////////////////////////////////////////////////////// +// Add a node of type ? +/////////////////////////////////////////////////////////////////////// +int ACEND_AddNode(edict_t *self, int type) +{ + vec3_t v1,v2; + + // Block if we exceed maximum + if (bot_numnodes + 1 > MAX_NODES) + return false; + + // Set location + VectorCopy(self->s.origin,nodes[bot_numnodes].origin); + + // Set type + nodes[bot_numnodes].type = type; + + ///////////////////////////////////////////////////// + // ITEMS + // Move the z location up just a bit. + if(type == NODE_ITEM) + { + nodes[bot_numnodes].origin[2] += 16; + numitemnodes++; + } + + // Teleporters + if(type == NODE_TELEPORTER) + { + // Up 32 + nodes[bot_numnodes].origin[2] += 32; + } + + if(type == NODE_LADDER) + { + nodes[bot_numnodes].type = NODE_LADDER; + + if(debug_mode) + { + debug_printf("Node added %d type: Ladder\n",bot_numnodes); + ACEND_ShowNode(bot_numnodes); + } + + bot_numnodes++; + return bot_numnodes-1; // return the node added + + } + + // For platforms drop two nodes one at top, one at bottom + if(type == NODE_PLATFORM) + { + VectorCopy(self->maxs,v1); + VectorCopy(self->mins,v2); + + // To get the center + nodes[bot_numnodes].origin[0] = (v1[0] - v2[0]) / 2 + v2[0]; + nodes[bot_numnodes].origin[1] = (v1[1] - v2[1]) / 2 + v2[1]; + nodes[bot_numnodes].origin[2] = self->maxs[2]; + + if(debug_mode) + ACEND_ShowNode(bot_numnodes); + + bot_numnodes++; + + nodes[bot_numnodes].origin[0] = nodes[bot_numnodes-1].origin[0]; + nodes[bot_numnodes].origin[1] = nodes[bot_numnodes-1].origin[1]; + nodes[bot_numnodes].origin[2] = self->mins[2]+64; + + nodes[bot_numnodes].type = NODE_PLATFORM; + + // Add a link + ACEND_UpdateNodeEdge(bot_numnodes,bot_numnodes-1); + + if(debug_mode) + { + debug_printf("Node added %d type: Platform\n",bot_numnodes); + ACEND_ShowNode(bot_numnodes); + } + + bot_numnodes++; + + return bot_numnodes -1; + } + + if(debug_mode) + { + if(nodes[bot_numnodes].type == NODE_MOVE) + debug_printf("Node added %d type: Move\n",bot_numnodes); + else if(nodes[bot_numnodes].type == NODE_TELEPORTER) + debug_printf("Node added %d type: Teleporter\n",bot_numnodes); + else if(nodes[bot_numnodes].type == NODE_ITEM) + debug_printf("Node added %d type: Item\n",bot_numnodes); + else if(nodes[bot_numnodes].type == NODE_WATER) + debug_printf("Node added %d type: Water\n",bot_numnodes); + else if(nodes[bot_numnodes].type == NODE_GRAPPLE) + debug_printf("Node added %d type: Grapple\n",bot_numnodes); + else if(nodes[bot_numnodes].type == NODE_REDBASE) + debug_printf("Node added %d type: Red Base\n",bot_numnodes); + else if(nodes[bot_numnodes].type == NODE_BLUEBASE) + debug_printf("Node added %d type: Blue Base\n",bot_numnodes); + else if(nodes[bot_numnodes].type == NODE_DEFEND) + debug_printf("Node added %d type: Defend Base\n",bot_numnodes); + + ACEND_ShowNode(bot_numnodes); + } + + bot_numnodes++; + + return bot_numnodes-1; // return the node added +} + +/////////////////////////////////////////////////////////////////////// +// Add/Update node connections (paths) +/////////////////////////////////////////////////////////////////////// +void ACEND_UpdateNodeEdge(int from, int to) +{ + int i; + + if(from == -1 || to == -1 || from == to) + return; // safety + + // Add the link + path_table[from][to] = to; + + // Now for the self-referencing part, linear time for each link added + for(i=0;i %d\n", from, to); +} + +/////////////////////////////////////////////////////////////////////// +// Remove a node edge +/////////////////////////////////////////////////////////////////////// +void ACEND_RemoveNodeEdge(edict_t *self, int from, int to) +{ + int i; + + if(debug_mode) + debug_printf("%s: Removing Edge %d -> %d\n", self->client->pers.netname, from, to); + + path_table[from][to] = INVALID; // set to invalid + + // Make sure this gets updated in our path array + for(i=0;iclient->ps.botnum = pclient->client->resp.botnum = 0; } } + return 0; } botidx = 0; @@ -244,12 +245,14 @@ botname = Info_ValueForKey( pbot->client->pers.userinfo, "name" ); firstclient = true; for ( pclient = &g_edicts[1], clients=game.maxclients ; clients--; ++pclient ) - { // for every client, always update first client for server + { // for every active client, plus always update first client for server if ( pclient->inuse || firstclient ) { pclient->client->ps.botnum = pclient->client->resp.botnum = botnum; strcpy( pclient->client->resp.bots[botidx].name, botname ); strcpy( pclient->client->ps.bots[botidx].name, botname ); + pclient->client->resp.bots[botidx].score = pbot->client->resp.score; + pclient->client->ps.bots[botidx].score = pbot->client->resp.score; firstclient = false; } } @@ -262,9 +265,9 @@ } /** - * \brief Update bot info in client records + * @brief Update bot info in client records * - * \detail Intended to be called once per frame, in RunFrame. First client + * @detail Intended to be called once per frame, in RunFrame. First client * record should always have current bot info, so that server status * shows bots even when in intermission. * In ACE debug mode, reports when bot count changes. ACE debug mode @@ -938,7 +941,8 @@ // find a spawn point // do it before setting health back up, so farthest // ranging doesn't count this client - SelectSpawnPoint (bot, spawn_origin, spawn_angles); + if(!g_tactical->integer) + SelectSpawnPoint (bot, spawn_origin, spawn_angles); index = bot - g_edicts - 1; client = bot->client; @@ -1012,10 +1016,6 @@ // clear playerstate values memset (&bot->client->ps, 0, sizeof(client->ps)); - client->ps.pmove.origin[0] = spawn_origin[0]*8; - client->ps.pmove.origin[1] = spawn_origin[1]*8; - client->ps.pmove.origin[2] = spawn_origin[2]*8; - //ZOID client->ps.pmove.pm_flags &= ~PMF_NO_PREDICTION; //ZOID @@ -1074,27 +1074,57 @@ bot->ctype = 0; sprintf(modelpath, "players/%s/human", playermodel); Q2_FindFile (modelpath, &file); - if(file) { //human + if(file) + { + fclose(file); + + //human bot->ctype = 1; - if(classbased->value && !(rocket_arena->value || instagib->value || insta_rockets->value || excessive->value)) + if(g_tactical->integer || (classbased->value && !(rocket_arena->integer || instagib->integer || insta_rockets->value || excessive->value))) { + if(g_tactical->integer) + { + //read class file(tactical only) + //example: + //100-150 (health) + //0-3 (armor type) + //0-1 (has bomb) + //0-1 (has detonator) + //0-1 (has mind eraser) + //0-1 (has vaporizor) + + ParseClassFile(modelpath, bot); + if(bot->has_bomb) + { + bot->client->pers.inventory[ITEM_INDEX(FindItem("Human Bomb"))] = 1; + bot->client->pers.inventory[ITEM_INDEX(FindItem("bombs"))] = 1; //tactical note - humans will use same ammo, etc, just different weapons + } + item = FindItem("Blaster"); + } + else + { + bot->health = bot->max_health = client->pers.max_health = client->pers.health = 100; armor_index = ITEM_INDEX(FindItem("Jacket Armor")); client->pers.inventory[armor_index] += 30; + client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] = 1; client->pers.inventory[ITEM_INDEX(FindItem("rockets"))] = 10; - item = FindItem("Rocket Launcher"); - client->pers.selected_item = ITEM_INDEX(item); - client->pers.inventory[client->pers.selected_item] = 1; - client->pers.weapon = item; + item = FindItem("Rocket Launcher"); + } + client->pers.selected_item = ITEM_INDEX(item); + client->pers.inventory[client->pers.selected_item] = 1; + client->pers.weapon = item; } - fclose(file); } - else { + else + { sprintf(modelpath, "players/%s/robot", playermodel); Q2_FindFile (modelpath, &file); - if(file) { //robot + if(file && !g_tactical->integer) + { + //robot - not used in tactical bot->ctype = 2; - if(classbased->value && !(rocket_arena->value || instagib->value || insta_rockets->value || excessive->value)) + if(classbased->value && !(rocket_arena->integer || instagib->integer || insta_rockets->value || excessive->value)) { bot->health = bot->max_health = client->pers.max_health = client->pers.health = 85; armor_index = ITEM_INDEX(FindItem("Jacket Armor")); @@ -1102,20 +1132,53 @@ } fclose(file); } - else { //alien - if(classbased->value && !(rocket_arena->value || instagib->value || insta_rockets->value || excessive->value)) + else + { + //alien + bot->ctype = 0; + if(g_tactical->integer || (classbased->value && !(rocket_arena->integer || instagib->integer || insta_rockets->value || excessive->value))) { bot->health = bot->max_health = client->pers.max_health = client->pers.health = 150; - client->pers.inventory[ITEM_INDEX(FindItem("Alien Disruptor"))] = 1; - client->pers.inventory[ITEM_INDEX(FindItem("cells"))] = 100; - item = FindItem("Alien Disruptor"); + if(g_tactical->integer) + { + sprintf(modelpath, "players/%s/alien", playermodel); + Q2_FindFile (modelpath, &file); + if(file) + { + ParseClassFile(modelpath, bot); + if(bot->has_bomb) + { + bot->client->pers.inventory[ITEM_INDEX(FindItem("Alien Bomb"))] = 1; + bot->client->pers.inventory[ITEM_INDEX(FindItem("bombs"))] = 1; //tactical note - humans will use same ammo, etc, just different weapons + } + } + item = FindItem("Blaster"); + client->pers.selected_item = ITEM_INDEX(item); + client->pers.inventory[client->pers.selected_item] = 0; + + item = FindItem("Alien Blaster"); + } + else + { + client->pers.inventory[ITEM_INDEX(FindItem("Alien Disruptor"))] = 1; + client->pers.inventory[ITEM_INDEX(FindItem("cells"))] = 100; + item = FindItem("Alien Disruptor"); + } client->pers.selected_item = ITEM_INDEX(item); client->pers.inventory[client->pers.selected_item] = 1; - client->pers.weapon = item; + client->pers.weapon = item; } } } + //has to be done after determining the class/team - note - we don't care about spawn distances in tactical + if(g_tactical->integer) + SelectSpawnPoint (bot, spawn_origin, spawn_angles); + + client->ps.pmove.origin[0] = spawn_origin[0]*8; + client->ps.pmove.origin[1] = spawn_origin[1]*8; + client->ps.pmove.origin[2] = spawn_origin[2]*8; + bot->s.frame = 0; VectorCopy (spawn_origin, bot->s.origin); bot->s.origin[2] += 1; // make sure off ground @@ -1483,7 +1546,7 @@ ACESP_SaveBots(); // update bots.tmp and clients bot information - if ( g_duel->value ) + if ( g_duel->integer ) { ClientPlaceInQueue( pbot ); ClientCheckQueue( pbot ); @@ -1526,7 +1589,7 @@ DeadDropDeathball(bot); } - if ( g_duel->value ) + if ( g_duel->integer ) {// duel mode, we need to bump people down the queue if its the player in game leaving MoveClientsDownQueue(bot); if( !bot->client->resp.spectator ) @@ -1552,6 +1615,7 @@ bot->s.angles[2] = 0; // ? bot->s.sound = 0; bot->client->weapon_sound = 0; + bot->s.effects = 0; // remove powerups bot->client->quad_framenum = 0; diff -Nru alien-arena-7.53+dfsg/source/game/cow.h alien-arena-7.66+dfsg/source/game/cow.h --- alien-arena-7.53+dfsg/source/game/cow.h 2007-05-16 04:27:35.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/cow.h 2013-06-22 20:07:36.000000000 +0000 @@ -1,7 +1,3 @@ -// G:\quake2\baseq2\models/monsters/berserk - -// This file generated by ModelGen - Do NOT Modify - #define FRAME_walk01 0 #define FRAME_walk02 1 #define FRAME_walk03 2 diff -Nru alien-arena-7.53+dfsg/source/game/g_ai.c alien-arena-7.66+dfsg/source/game/g_ai.c --- alien-arena-7.53+dfsg/source/game/g_ai.c 2010-11-09 21:54:46.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_ai.c 2013-06-22 20:07:36.000000000 +0000 @@ -537,7 +537,11 @@ if (enemy_range == RANGE_FAR) return false; - if (self->monsterinfo.aiflags & AI_STAND_GROUND) + if(strcmp(self->classname, "proj_spider")) + { + chance = 0.8; + } + else if (self->monsterinfo.aiflags & AI_STAND_GROUND) { chance = 0.4; } @@ -775,6 +779,11 @@ if(self->enemy->client->rayImmunity && ((level.time - self->enemy->client->rayTime) < 60)) return false; + if(!strcmp(self->classname, "proj_spider")) + if(self->enemy->client && self->enemy->inuse) + if(self->enemy == self->owner) + return false; + // JDC self->ideal_yaw = enemy_yaw; if (self->monsterinfo.attack_state == AS_MISSILE) @@ -848,6 +857,10 @@ return; } + if(!strcmp(self->classname, "proj_spider")) + if(self->goalentity == self->owner) + return; + if (enemy_vis) { // if (self.aiflags & AI_LOST_SIGHT) @@ -997,6 +1010,5 @@ G_FreeEdict(tempgoal); - if (self) - self->goalentity = save; + self->goalentity = save; } diff -Nru alien-arena-7.53+dfsg/source/game/game.h alien-arena-7.66+dfsg/source/game/game.h --- alien-arena-7.53+dfsg/source/game/game.h 2010-08-21 05:39:08.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/game.h 2013-06-22 20:07:36.000000000 +0000 @@ -90,10 +90,18 @@ solid_t solid; int clipmask; edict_t *owner; + + int redirect_number; //for ghost mode + + // must be accessible to server code for collision detection + int dmteam; + int teamset; +#define RED_TEAM 0 +#define BLUE_TEAM 1 +#define NO_TEAM 2 // the game dll can add anything it wants after // this point in the structure - edict_t *orb; }; #endif // GAME_INCLUDE @@ -126,6 +134,11 @@ int (*modelindex) (char *name); int (*soundindex) (char *name); int (*imageindex) (char *name); + + // for checking if assets are already loaded - return 0 if they are not + int (*checkmodelindex) (char *name); + int (*checksoundindex) (char *name); + int (*checkimageindex) (char *name); void (*setmodel) (edict_t *ent, char *name); @@ -165,8 +178,9 @@ // console variable interaction cvar_t *(*cvar) (char *var_name, char *value, int flags); - cvar_t *(*cvar_set) (char *var_name, char *value); + void (*cvar_set) (char *var_name, char *value); cvar_t *(*cvar_forceset) (char *var_name, char *value); + void (*cvar_describe) (cvar_t *var, char *description_string); // ClientCommand and ServerCommand parameter access int (*argc) (void); @@ -177,7 +191,7 @@ // for map changing, etc void (*AddCommandString) (char *text); - void (*DebugGraph) (float value, int color); + void (*DebugGraph) (float value, const float color[]); int (*Sys_Milliseconds) (void); @@ -214,6 +228,7 @@ int (*ACESP_FindBotNum) (void); void (*RunFrame) (void); + void (*ForceExitIntermission) (void); // ServerCommand will be called when an "sv " command is issued on the // server console. diff -Nru alien-arena-7.53+dfsg/source/game/g_chase.c alien-arena-7.66+dfsg/source/game/g_chase.c --- alien-arena-7.53+dfsg/source/game/g_chase.c 2010-11-21 00:06:55.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_chase.c 2013-06-22 20:07:36.000000000 +0000 @@ -29,14 +29,6 @@ void UpdateChaseCam(edict_t *ent) { - vec3_t o, ownerv, goal; - edict_t *targ; - vec3_t forward, right; - trace_t trace; - int i; - vec3_t oldgoal; - vec3_t angles; - // is our chase target gone? if (!ent->client->chase_target->inuse || ent->client->chase_target->client->resp.spectator) { @@ -48,66 +40,7 @@ return; } } - - targ = ent->client->chase_target; - - VectorCopy(targ->s.origin, ownerv); - VectorCopy(ent->s.origin, oldgoal); - - ownerv[2] += targ->viewheight; - - VectorCopy(targ->client->v_angle, angles); - if (angles[PITCH] > 56) - angles[PITCH] = 56; - AngleVectors (angles, forward, right, NULL); - VectorNormalize(forward); - - VectorMA(ownerv, -30, forward, o); - - if (o[2] < targ->s.origin[2] + 20) - o[2] = targ->s.origin[2] + 20; - - // jump animation lifts - if (!targ->groundentity) - o[2] += 16; - - trace = gi.trace(ownerv, vec3_origin, vec3_origin, o, targ, MASK_SOLID); - - VectorCopy(trace.endpos, goal); - - VectorMA(goal, 2, forward, goal); - - // pad for floors and ceilings - VectorCopy(goal, o); - o[2] += 6; - trace = gi.trace(goal, vec3_origin, vec3_origin, o, targ, MASK_SOLID); - if (trace.fraction < 1) { - VectorCopy(trace.endpos, goal); - goal[2] -= 6; - } - - VectorCopy(goal, o); - o[2] -= 6; - trace = gi.trace(goal, vec3_origin, vec3_origin, o, targ, MASK_SOLID); - if (trace.fraction < 1) { - VectorCopy(trace.endpos, goal); - goal[2] += 6; - } - - if (targ->deadflag) - ent->client->ps.pmove.pm_type = PM_DEAD; - else - ent->client->ps.pmove.pm_type = PM_FREEZE; - - VectorCopy(goal, ent->s.origin); - for (i=0 ; i<3 ; i++) - ent->client->ps.pmove.delta_angles[i] = ANGLE2SHORT(targ->client->v_angle[i] - ent->client->resp.cmd_angles[i]); - - VectorCopy(targ->client->v_angle, ent->client->ps.viewangles); - VectorCopy(targ->client->v_angle, ent->client->v_angle); - - ent->viewheight = 0; - ent->client->ps.pmove.pm_flags |= PMF_NO_PREDICTION; + gi.linkentity(ent); } diff -Nru alien-arena-7.53+dfsg/source/game/g_cmds.c alien-arena-7.66+dfsg/source/game/g_cmds.c --- alien-arena-7.53+dfsg/source/game/g_cmds.c 2010-11-09 21:54:46.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_cmds.c 2013-06-22 20:07:36.000000000 +0000 @@ -49,6 +49,12 @@ char ent1Team [512]; char ent2Team [512]; + if(g_tactical->value) + { + if(ent1->ctype == ent2->ctype) + return true; + } + if (!((dmflags->integer & DF_SKINTEAMS) || ctf->value || tca->value || cp->value)) return false; @@ -57,6 +63,7 @@ if (strcmp(ent1Team, ent2Team) == 0) return true; + return false; } @@ -423,6 +430,10 @@ if (!ent->client->pers.inventory[index]) { safe_cprintf (ent, PRINT_HIGH, "Out of item: %s\n", s); + if (it->flags & IT_WEAPON) { + ent->client->pers.lastfailedswitch = it; + ent->client->pers.failedswitch_framenum = level.framenum; + } return; } @@ -683,8 +694,14 @@ anum = *(int *)a; bnum = *(int *)b; - anum = game.clients[anum].ps.stats[STAT_FRAGS]; - bnum = game.clients[bnum].ps.stats[STAT_FRAGS]; + if ( game.clients[anum].ps.stats[STAT_SPECTATOR] == 0 ) + anum = game.clients[anum].ps.stats[STAT_FRAGS]; + else + anum = 0; + if ( game.clients[bnum].ps.stats[STAT_SPECTATOR] == 0 ) + bnum = game.clients[bnum].ps.stats[STAT_FRAGS]; + else + bnum = 0; if (anum < bnum) return -1; @@ -722,9 +739,11 @@ for (i = 0 ; i < count ; i++) { + Com_sprintf (small, sizeof(small), "%3i %s\n", game.clients[index[i]].ps.stats[STAT_FRAGS], game.clients[index[i]].pers.netname); + if (strlen (small) + strlen(large) > sizeof(large) - 100 ) { // can't print all of them in one packet strcat (large, "...\n"); @@ -1091,6 +1110,13 @@ strcpy(name, ent->client->pers.netname); info = Info_ValueForKey (ent->client->pers.userinfo, "skin"); + + if ( *info == '\0' ) + { /* could not find skin. probable programming error. */ + gi.dprintf("Cmd_VoiceTaunt_f: skin not found in userinfo\n"); + return; + } + info[96] = 0; //truncate to prevent bad people from harming the server i = 0; @@ -1156,11 +1182,6 @@ Cmd_Score_f (ent); return; } - if (Q_strcasecmp (cmd, "help") == 0) - { - Cmd_Help_f (ent); - return; - } if (Q_strcasecmp (cmd, "callvote") == 0) { Cmd_CallVote_f(ent); diff -Nru alien-arena-7.53+dfsg/source/game/g_combat.c alien-arena-7.66+dfsg/source/game/g_combat.c --- alien-arena-7.53+dfsg/source/game/g_combat.c 2011-07-31 20:13:29.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_combat.c 2013-06-22 20:07:36.000000000 +0000 @@ -346,7 +346,7 @@ if (targ->flags & FL_NO_KNOCKBACK) knockback = 0; -// figure momentum add + // figure momentum add if (!(dflags & DAMAGE_NO_KNOCKBACK)) { if ((knockback) && (targ->movetype != MOVETYPE_NONE) && (targ->movetype != MOVETYPE_BOUNCE) && (targ->movetype != MOVETYPE_PUSH) && (targ->movetype != MOVETYPE_STOP)) @@ -440,6 +440,21 @@ if(!(strcmp(targ->classname, "misc_redspidernode")) || !(strcmp(targ->classname, "misc_bluespidernode"))) safe_centerprintf(attacker, "Spider health at %i percent", 100*(targ->health-take)/600); } + if(g_tactical->value) + { + if(!strcmp(targ->classname, "alien computer")) + safe_centerprintf(attacker, "Alien Computer health at %i percent", 100*(targ->health-take)/1500); + else if(!strcmp(targ->classname, "human computer")) + safe_centerprintf(attacker, "Human Computer health at %i percent", 100*(targ->health-take)/1500); + else if(!strcmp(targ->classname, "alien powersrc")) + safe_centerprintf(attacker, "Alien Power Source health at %i percent", 100*(targ->health-take)/1500); + else if(!strcmp(targ->classname, "human powersrc")) + safe_centerprintf(attacker, "Human Power Source health at %i percent", 100*(targ->health-take)/1500); + else if(!strcmp(targ->classname, "alien ammodepot")) + safe_centerprintf(attacker, "Alien Ammo Depot health at %i percent", 100*(targ->health-take)/1500); + else if(!strcmp(targ->classname, "human ammodepot")) + safe_centerprintf(attacker, "Human Ammo Depot health at %i percent", 100*(targ->health-take)/1500); + } } targ->health = targ->health - take; diff -Nru alien-arena-7.53+dfsg/source/game/g_ctf.c alien-arena-7.66+dfsg/source/game/g_ctf.c --- alien-arena-7.53+dfsg/source/game/g_ctf.c 2011-12-10 06:06:35.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_ctf.c 2013-06-22 20:07:36.000000000 +0000 @@ -324,7 +324,7 @@ } -void SV_AddGravity (edict_t *ent); +void SV_AddGravity (edict_t *ent, float timespan); // pull the player toward the grapple void CTFGrapplePull(edict_t *self) @@ -398,7 +398,7 @@ VectorNormalize (hookdir); VectorScale(hookdir, CTF_GRAPPLE_PULL_SPEED, hookdir); VectorCopy(hookdir, self->owner->velocity); - SV_AddGravity(self->owner); + SV_AddGravity(self->owner, FRAMETIME); } } @@ -636,7 +636,7 @@ } } -void CTFDeadDropFlag(edict_t *self, edict_t *other) +void CTFDeadDropFlag(edict_t *self, edict_t *other) { edict_t *dropped = NULL; gitem_t *flag1_item, *flag2_item; @@ -647,32 +647,32 @@ flag1_item = FindItemByClassname("item_flag_red"); flag2_item = FindItemByClassname("item_flag_blue"); - /* notes on assist bonus: - * other can be NULL, if self is disconnecting, or self is a bot being kicked. - * other can be self for suicides, but that is handled with team check. - */ + /* notes on assist bonus: + * other can be NULL, if self is disconnecting, or self is a bot being kicked. + * other can be self for suicides, but that is handled with team check. + */ if (self->client->pers.inventory[ITEM_INDEX(flag1_item)]) { - - if ( other != NULL && other->client - && ( (other->dmteam == RED_TEAM && self->dmteam == BLUE_TEAM) - || (other->dmteam == BLUE_TEAM && self->dmteam == RED_TEAM) )) - {//kill enemy w flag; assist bonus (1 for frag + 4 = 5 total) - other->client->resp.score += 4; - } - + + if ( other != NULL && other->client + && ( (other->dmteam == RED_TEAM && self->dmteam == BLUE_TEAM) + || (other->dmteam == BLUE_TEAM && self->dmteam == RED_TEAM) )) + {//kill enemy w flag; assist bonus (1 for frag + 4 = 5 total) + other->client->resp.score += 4; + } + dropped = Drop_Item(self, flag1_item); self->client->pers.inventory[ITEM_INDEX(flag1_item)] = 0; safe_bprintf(PRINT_HIGH, "%s lost the %s flag!\n", self->client->pers.netname, "Red"); } else if (self->client->pers.inventory[ITEM_INDEX(flag2_item)]) { - - if ( other != NULL && other->client - && ( (other->dmteam == RED_TEAM && self->dmteam == BLUE_TEAM) - || (other->dmteam == BLUE_TEAM && self->dmteam == RED_TEAM ) )) - { //kill enemy w flag; assist bonus (1 for frag + 4 = 5 total) - other->client->resp.score += 4; - } - + + if ( other != NULL && other->client + && ( (other->dmteam == RED_TEAM && self->dmteam == BLUE_TEAM) + || (other->dmteam == BLUE_TEAM && self->dmteam == RED_TEAM ) )) + { //kill enemy w flag; assist bonus (1 for frag + 4 = 5 total) + other->client->resp.score += 4; + } + dropped = Drop_Item(self, flag2_item); self->client->pers.inventory[ITEM_INDEX(flag2_item)] = 0; safe_bprintf(PRINT_HIGH, "%s lost the %s flag!\n", @@ -810,7 +810,7 @@ // hey, its not home. return it by teleporting it back safe_bprintf(PRINT_HIGH, "%s returned the %s flag!\n", other->client->pers.netname, team_name); - other->client->resp.score += 5;//CTF_RECOVERY_BONUS; + other->client->resp.score += 5;//CTF_RECOVERY_BONUS; if(!strcmp("Red", team_name)) gi.sound (ent, CHAN_AUTO, gi.soundindex("misc/red_returned.wav"), 1, ATTN_NONE, 0); else @@ -849,14 +849,14 @@ gi.sound (ent, CHAN_AUTO, gi.soundindex("misc/blue_picked.wav"), 1, ATTN_NONE, 0); other->client->resp.reward_pts+=2; -#ifdef CTFNODES + //if a bot, break off of path, so we can find base path if(other->is_bot) { other->state = STATE_WANDER; other->wander_timeout = level.time + 1.0; } -#endif + if(other->client->resp.reward_pts >= g_reward->integer && !other->client->resp.powered) { //give them speed and invis powerups it = FindItem("Invisibility"); other->client->pers.inventory[ITEM_INDEX(it)] += 1; diff -Nru alien-arena-7.53+dfsg/source/game/g_deathray.c alien-arena-7.66+dfsg/source/game/g_deathray.c --- alien-arena-7.53+dfsg/source/game/g_deathray.c 2010-08-21 05:39:08.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_deathray.c 2013-06-22 20:07:36.000000000 +0000 @@ -92,6 +92,84 @@ int damage = 50; trace_t tr; + //tactical + if(g_tactical->value) + { + if(self->spawnflags & 1) + { + //if power source is down, and backup gen is on, get erratic + if(!tacticalScore.humanPowerSource) + { + if(!tacticalScore.humanBackupGen) + return; + + if(random() < 0.5) + { + if(self->enemy->ctype == 1) + { + if(random() < 0.5) + return; + } + else + return; + } + } + else if(!tacticalScore.humanComputer) //we have power, but no computer, so behave erratically + { + if(random() < 0.5) + { + if(self->enemy->ctype == 1) + { + if(random() < 0.5) + return; + } + else + return; + } + } + + //do not fire on humans + if(self->enemy->ctype == 1) + return; + } + else + { + if(!tacticalScore.alienPowerSource) + { + if(!tacticalScore.alienBackupGen) + return; + + if(random() < 0.5) + { + if(self->enemy->ctype == 0) + { + if(random() < 0.5) + return; + } + else + return; + } + } + else if(!tacticalScore.alienComputer) + { + if(random() < 0.5) + { + if(self->enemy->ctype == 0) + { + if(random() < 0.5) + return; + } + else + return; + } + } + + //do not fire on aliens + if(self->enemy->ctype == 0) + return; + } + } + AngleVectors (self->s.angles, forward, right, NULL); VectorSet(offset, 32, 0, 48); G_ProjectSource (self->s.origin, offset, forward, right, start); @@ -113,9 +191,13 @@ gi.WriteShort (self-g_edicts); gi.WriteByte (MZ_RAILGUN); gi.multicast (self->s.origin, MULTICAST_PVS); - + gi.WriteByte (svc_temp_entity); - gi.WriteByte (TE_VAPORBEAM); + //tactical + if(self->spawnflags & 1) + gi.WriteByte (TE_REDLASER); + else + gi.WriteByte (TE_VAPORBEAM); gi.WritePosition (start); gi.WritePosition (end); gi.multicast (self->s.origin, MULTICAST_PHS); @@ -142,12 +224,12 @@ mframe_t deathray_frames_attack_shoot [] = { {ai_charge, 0, NULL}, - {ai_charge, 0, NULL}, + {ai_charge, 0, deathrayShot}, {ai_charge, 0, NULL}, {ai_charge, 0, NULL}, {ai_charge, 0, deathrayShot}, {ai_charge, 0, NULL}, - {ai_charge, 0, NULL} + {ai_charge, 0, deathrayShot} }; mmove_t deathray_move_attack_shoot = {FRAME_stand01, FRAME_stand06, deathray_frames_attack_shoot, deathray_run}; @@ -215,14 +297,16 @@ void deathray_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) { - gi.sound (self, CHAN_VOICE, sound_die, 1, ATTN_NORM, 0); - gi.WriteByte (svc_temp_entity); gi.WriteByte (TE_EXPLOSION1); gi.WritePosition (self->s.origin); gi.multicast (self->s.origin, MULTICAST_PVS); self->deadflag = DEAD_DEAD; + + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "world/explosion1.wav" ), 1, ATTN_NONE, 0 ); + + G_FreeEdict (self); } void SP_npc_deathray (edict_t *self) @@ -247,6 +331,51 @@ self->health = self->max_health; self->gib_health = 0; self->mass = 5000; + + self->pain = deathray_pain; + self->die = deathray_die; + + self->monsterinfo.stand = deathray_stand; + self->monsterinfo.walk = deathray_run; + self->monsterinfo.run = deathray_run; + self->monsterinfo.dodge = NULL; + self->monsterinfo.attack = deathray_attack; + self->monsterinfo.melee = deathray_attack; + self->monsterinfo.sight = deathray_sight; + self->monsterinfo.search = deathray_search; + self->s.renderfx |= RF_MONSTER; + + self->monsterinfo.currentmove = &deathray_move_stand; + self->monsterinfo.scale = MODEL_SCALE; + + gi.linkentity (self); + + walkmonster_start (self); +} + +void SP_misc_deathray (edict_t *self) +{ + + // pre-caches + sound_pain = gi.soundindex ("misc/deathray/fizz.wav"); + sound_die = gi.soundindex ("misc/deathray/fizz.wav"); + sound_idle = gi.soundindex ("misc/deathray/weird2.wav"); + sound_punch = gi.soundindex ("misc/deathray/shoot.wav"); + sound_search = gi.soundindex ("misc/deathray/weird2.wav"); + sound_sight = gi.soundindex ("misc/deathray/weird2.wav"); + + //to do - make different mesh for human weapon + self->s.modelindex = gi.modelindex("models/misc/deathray/deathray.md2"); + + VectorSet (self->mins, -16, -16, 0); + VectorSet (self->maxs, 16, 16, 48); + self->movetype = MOVETYPE_STEP; + self->solid = SOLID_BBOX; + self->takedamage = DAMAGE_YES; + self->max_health = 300; + self->health = self->max_health; + self->gib_health = 0; + self->mass = 5000; self->pain = deathray_pain; self->die = deathray_die; diff -Nru alien-arena-7.53+dfsg/source/game/g_func.c alien-arena-7.66+dfsg/source/game/g_func.c --- alien-arena-7.53+dfsg/source/game/g_func.c 2010-09-22 09:37:06.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_func.c 2013-06-22 20:07:36.000000000 +0000 @@ -1205,13 +1205,14 @@ ent->moveinfo.state = STATE_BOTTOM; - if (ent->health) - { - ent->takedamage = DAMAGE_YES; - ent->die = door_killed; - ent->max_health = ent->health; + if (!ent->targetname && (!ent->health || ent->health > 8)) + ent->health = 1; + if (ent->health) { + ent->takedamage = DAMAGE_YES; + ent->die = door_killed; + ent->max_health = ent->health; } - else if (ent->targetname && ent->message) + if (ent->targetname && ent->message) { gi.soundindex ("misc/talk.wav"); ent->touch = door_touch; @@ -1238,10 +1239,10 @@ gi.linkentity (ent); ent->nextthink = level.time + FRAMETIME; - if (ent->health || ent->targetname) - ent->think = Think_CalcMoveSpeed; + if (ent->targetname) + ent->think = Think_CalcMoveSpeed; else - ent->think = Think_SpawnDoorTrigger; + ent->think = Think_SpawnDoorTrigger; } @@ -1980,7 +1981,7 @@ // give it a chance to go away on it's own terms (like gibs) T_Damage (other, self, self, vec3_origin, other->s.origin, vec3_origin, 100000, 1, 0, MOD_CRUSH); // if it's still there, nuke it - if (other) + if (other->inuse) BecomeExplosion1 (other); return; } diff -Nru alien-arena-7.53+dfsg/source/game/g_items.c alien-arena-7.66+dfsg/source/game/g_items.c --- alien-arena-7.53+dfsg/source/game/g_items.c 2011-09-14 05:29:48.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_items.c 2013-06-22 20:07:36.000000000 +0000 @@ -28,7 +28,11 @@ void Use_Weapon (edict_t *ent, gitem_t *inv); void Drop_Weapon (edict_t *ent, gitem_t *inv); +#ifdef ALTERIA +void Weapon_Punch ( edict_t *ent); +#else void Weapon_Blaster (edict_t *ent); +void Weapon_AlienBlaster (edict_t *ent); void Weapon_Violator (edict_t *ent); void Weapon_Smartgun (edict_t *ent); void Weapon_Chain (edict_t *ent); @@ -37,10 +41,13 @@ void Weapon_RocketLauncher (edict_t *ent); void Weapon_Beamgun (edict_t *ent); void Weapon_Vaporizer (edict_t *ent); +void Weapon_Minderaser (edict_t *ent); void Weapon_Bomber (edict_t *ent); void Weapon_Strafer (edict_t *ent); void Weapon_Deathball (edict_t *ent); void Weapon_Hover (edict_t *ent); +void Weapon_TacticalBomb ( edict_t *ent); +#endif gitem_armor_t jacketarmor_info = { 25, 50, .30, .00, ARMOR_JACKET}; gitem_armor_t combatarmor_info = { 50, 100, .60, .30, ARMOR_COMBAT}; @@ -120,8 +127,84 @@ //====================================================================== +static void drop_temp_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) +{ + if (other == ent->owner) + return; + + Touch_Item (ent, other, plane, surf); +} + +static void drop_make_touchable (edict_t *ent) +{ + ent->touch = Touch_Item; + if (deathmatch->integer) + { + if(!g_tactical->integer) //in tactical mode, we don't remove dropped items + { + ent->nextthink = level.time + 29; + ent->think = G_FreeEdict; + } + } +} + +float mindEraserTime; +void SpawnMinderaser(edict_t *ent) +{ + edict_t *minderaser, *cl_ent; + int i; + + for (i = 0; i < g_maxclients->integer; i++) + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "A Mind Eraser has spawned!\n"); + } + + //to do - play level wide klaxxon + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "misc/minderaser.wav" ), 1, ATTN_NONE, 0 ); + + minderaser = G_Spawn(); + VectorCopy(ent->s.origin, minderaser->s.origin); + minderaser->spawnflags = DROPPED_PLAYER_ITEM; + minderaser->model = "models/weapons/g_minderaser/tris.md2"; + minderaser->classname = "weapon_minderaser"; + minderaser->item = FindItem ("Minderaser"); + minderaser->s.effects = minderaser->item->world_model_flags; + minderaser->s.renderfx = RF_GLOW; + VectorSet (minderaser->mins, -15, -15, -15); + VectorSet (minderaser->maxs, 15, 15, 15); + gi.setmodel (minderaser, minderaser->item->world_model); + minderaser->solid = SOLID_TRIGGER; + minderaser->health = 100; + minderaser->movetype = MOVETYPE_TOSS; + minderaser->touch = drop_temp_touch; + minderaser->owner = NULL; + + SetRespawn (ent, 1000000); //huge delay until ME is picked up from pad. + minderaser->replaced_weapon = ent; //remember this entity + + mindEraserTime = level.time; +} + void DoRespawn (edict_t *ent) { + char szTmp[64]; + //Add mind eraser spawn here, if it's been two minutes since last respawn of it, + //go ahead and set the next weapon spawned to be the mind eraser + //need to check if first part of name is weapon + if(level.time > mindEraserTime + 120.0) + { + strcpy(szTmp, ent->classname); + szTmp[6] = 0; + if(!Q_strcasecmp(szTmp, "weapon")) + { + SpawnMinderaser(ent); + return; + } + } + if (ent->team) { edict_t *master; @@ -149,6 +232,28 @@ void SetRespawn (edict_t *ent, float delay) { + + if ( ent->item && g_duel->integer && + ent->item->weapmodel != WEAP_MINDERASER ) + { + switch (ent->item->flags) + { + //TODO: playtest this and adjust the scaling factors. + case IT_WEAPON: + delay *= 3.0; + break; + case IT_POWERUP: + case IT_AMMO: //intentional fallthrough + delay *= 2.0; + break; + case IT_ARMOR: + case IT_HEALTH: //intentional fallthrough + delay *= 1.5; + break; + default: + break; + } + } ent->flags |= FL_RESPAWN; ent->svflags |= SVF_NOCLIENT; ent->solid = SOLID_NOT; @@ -170,11 +275,11 @@ other->client->pers.inventory[ITEM_INDEX(ent->item)]++; - if (deathmatch->value) + if (deathmatch->integer) { int randomSpawn; //Phenax - Add random time to quad spawn - if(ent->item->use == Use_Quad && g_randomquad->value) + if(ent->item->use == Use_Quad && g_randomquad->integer) randomSpawn = 10 + rand() % (30 - 10); //10 to 30 seconds randomness else randomSpawn = 0; @@ -204,13 +309,13 @@ qboolean Pickup_Adrenaline (edict_t *ent, edict_t *other) { - if (!deathmatch->value) + if (!deathmatch->integer) other->max_health += 1; if (other->health < other->max_health) other->health = other->max_health; - if (!(ent->spawnflags & DROPPED_ITEM) && (deathmatch->value)) + if (!(ent->spawnflags & DROPPED_ITEM) && (deathmatch->integer)) SetRespawn (ent, ent->item->quantity); return true; @@ -355,34 +460,51 @@ { int index; int max, base; + gitem_t *failedswitch; if (!ent->client) return false; - if (item->tag == AMMO_BULLETS) { + if (item->tag == AMMO_BULLETS) + { max = ent->client->pers.max_bullets; base = BASE_BULLETS; } - else if (item->tag == AMMO_SHELLS) { + else if (item->tag == AMMO_SHELLS) + { max = ent->client->pers.max_shells; base = BASE_SHELLS; } - else if (item->tag == AMMO_ROCKETS) { + else if (item->tag == AMMO_ROCKETS) + { max = ent->client->pers.max_rockets; base = BASE_ROCKETS; } - else if (item->tag == AMMO_GRENADES) { + else if (item->tag == AMMO_GRENADES) + { max = ent->client->pers.max_grenades; base = BASE_GRENADES; } - else if (item->tag == AMMO_CELLS) { + else if (item->tag == AMMO_CELLS) + { max = ent->client->pers.max_cells; base = BASE_CELLS; } - else if (item->tag == AMMO_SLUGS) { + else if (item->tag == AMMO_SLUGS) + { max = ent->client->pers.max_slugs; base = BASE_SLUGS; } + else if (item->tag == AMMO_SEEKERS) + { + max = ent->client->pers.max_seekers; + base = BASE_SEEKERS; + } + else if (item->tag == AMMO_BOMBS) + { + max = ent->client->pers.max_bombs; + base = BASE_BOMBS; + } else return false; @@ -402,6 +524,12 @@ if (ent->client->pers.inventory[index] > max) ent->client->pers.inventory[index] = max; + + failedswitch = ent->client->pers.lastfailedswitch; + if (failedswitch && failedswitch->ammo && + (FindItem(failedswitch->ammo) == item) && + (level.framenum - ent->client->pers.failedswitch_framenum) < 5) + ent->client->newweapon = failedswitch; return true; } @@ -427,12 +555,43 @@ if (weapon && !oldcount) { - if (other->client->pers.weapon != ent->item && ( !deathmatch->value || other->client->pers.weapon == FindItem("blaster") ) ) + if (other->client->pers.weapon != ent->item && ( !deathmatch->integer || other->client->pers.weapon == FindItem("Blaster") || other->client->pers.weapon == FindItem("Alien Blaster")) ) other->client->newweapon = ent->item; } - if (!(ent->spawnflags & (DROPPED_ITEM | DROPPED_PLAYER_ITEM)) && (deathmatch->value)) - SetRespawn (ent, 30); + if (!(ent->spawnflags & (DROPPED_ITEM | DROPPED_PLAYER_ITEM)) && (deathmatch->integer)) + { + if(g_tactical->integer) + { + if(!strcmp(ent->classname, "ammo_cells") || !strcmp(ent->classname, "ammo_shells")) + { + if(!tacticalScore.alienPowerSource) + { + if(tacticalScore.alienBackupGen) + SetRespawn (ent, 20); //on backup power, generate ammo much slower + else + SetRespawn (ent, 40); //for the most part, dead + } + else + SetRespawn (ent, 5); + } + else if(!strcmp(ent->classname, "ammo_rockets") || !strcmp(ent->classname, "ammo_bullets") || !strcmp(ent->classname, "ammo_grenades")) + { + if(!tacticalScore.humanPowerSource) + { + if(tacticalScore.humanBackupGen) + SetRespawn (ent, 20); + else + SetRespawn (ent, 40); + } + else + SetRespawn (ent, 5); + } + } + else + SetRespawn (ent, 30); + } + return true; } @@ -473,7 +632,7 @@ return; } - if (!(self->spawnflags & DROPPED_ITEM) && (deathmatch->value)) + if (!(self->spawnflags & DROPPED_ITEM) && (deathmatch->integer)) SetRespawn (self, 20); else G_FreeEdict (self); @@ -516,7 +675,7 @@ } else { - if (!(ent->spawnflags & DROPPED_ITEM) && (deathmatch->value)) + if (!(ent->spawnflags & DROPPED_ITEM) && (deathmatch->integer)) SetRespawn (ent, 30); } @@ -615,9 +774,9 @@ } } - if (!(ent->spawnflags & DROPPED_ITEM) && (deathmatch->value)) + if (!(ent->spawnflags & DROPPED_ITEM) && (deathmatch->integer)) SetRespawn (ent, 20); - + return true; } @@ -647,8 +806,6 @@ other->client->bonus_alpha = 0.25; // show icon and name on status bar - other->client->ps.stats[STAT_PICKUP_ICON] = gi.imageindex(ent->item->icon); - other->client->ps.stats[STAT_PICKUP_STRING] = CS_ITEMS+ITEM_INDEX(ent->item); other->client->pickup_msg_time = level.time + 3.0; // change selected item @@ -681,6 +838,17 @@ if (!taken) return; + if(g_tactical->integer) //items do not respawn in tactical mode(except ammo when ammo depots are running) + { + if((!strcmp(ent->classname, "ammo_cells") || !strcmp(ent->classname, "ammo_shells")) && tacticalScore.alienAmmoDepot) + return; + else if((!strcmp(ent->classname, "ammo_rockets") || !strcmp(ent->classname, "ammo_bullets") || !strcmp(ent->classname, "ammo_grenades")) && tacticalScore.humanAmmoDepot) + return; + + G_FreeEdict (ent); + return; + } + if (ent->spawnflags & (DROPPED_ITEM | DROPPED_PLAYER_ITEM)) { if (ent->flags & FL_RESPAWN) @@ -692,24 +860,6 @@ //====================================================================== -static void drop_temp_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) -{ - if (other == ent->owner) - return; - - Touch_Item (ent, other, plane, surf); -} - -static void drop_make_touchable (edict_t *ent) -{ - ent->touch = Touch_Item; - if (deathmatch->value) - { - ent->nextthink = level.time + 29; - ent->think = G_FreeEdict; - } -} - edict_t *Drop_Item (edict_t *ent, gitem_t *item) { edict_t *dropped; @@ -945,7 +1095,7 @@ } // some items will be prevented in deathmatch - if (deathmatch->value) + if (deathmatch->integer) { if ( dmflags->integer & DF_NO_ARMOR ) { @@ -979,7 +1129,7 @@ return; } } - if(excessive->value || instagib->value || rocket_arena->value || insta_rockets->value ) + if(excessive->integer || instagib->integer || rocket_arena->integer || insta_rockets->integer ) { if (item->flags == IT_AMMO || (strcmp(ent->classname, "weapon_bfg") == 0) || (strcmp(ent->classname, "weapon_hyperblaster") == 0) || @@ -998,7 +1148,7 @@ //CTF //Don't spawn the flags unless enabled - if (!ctf->value && + if (!ctf->integer && (strcmp(ent->classname, "item_flag_red") == 0 || strcmp(ent->classname, "item_flag_blue") == 0)) { G_FreeEdict(ent); @@ -1191,6 +1341,7 @@ /* precache */ "misc/blue_scores.wav misc/blue_takes.wav misc/blue_increases.wav misc/blue_wins.wav misc/blue_picked.wav" }, +#ifndef ALTERIA /*QUAKED item_bomber (1 0.2 0) (-16 -16 -24) (16 16 32) */ { @@ -1259,6 +1410,49 @@ NULL }, +//Tactical bombs + { + "item_alien_bomb", + NULL, //Pickup_alienBomb, //only owner will be able to pick this item back up + Use_Weapon, + NULL, + Weapon_TacticalBomb, //fire out bomb, not too far, like prox mines + NULL, + "models/tactical/alien_bomb.iqm", 0, + "vehicles/deathball/v_wep.md2", //will use db's vweap for bombs and detonators +/* icon */ "abomb", +/* pickup */ "Alien Bomb", + 0, + 1, + "bombs", + IT_WEAPON, + WEAP_ABOMB, + NULL, + 0, + NULL + }, + + { + "item_human_bomb", + NULL, //Pickup_humanBomb, //only owner will be able to pick this item back up + Use_Weapon, + NULL, + Weapon_TacticalBomb, //fire out bomb, not too far, like prox mines + NULL, + "models/tactical/human_bomb.iqm", 0, + "vehicles/deathball/v_wep.md2", //will use db's vweap for bombs and detonators +/* icon */ "abomb", +/* pickup */ "Human Bomb", + 0, + 1, + "bombs", + IT_WEAPON, + WEAP_HBOMB, + NULL, + 0, + NULL + }, + /*QUAKED item_deathball (1 0.2 0) (-16 -16 -24) (16 16 32) */ { @@ -1283,7 +1477,7 @@ }, //a fake item for bots to use as a target for throwing a deathball at. - { + { "item_dbtarget", NULL, NULL, @@ -1343,6 +1537,7 @@ 0, NULL }, +#endif // // WEAPONS // @@ -1369,6 +1564,51 @@ 0, /* precache */ "weapons/electroball.wav" }, + +#ifdef ALTERIA + //note some of this is clearly temporary placeholder + { + "weapon_warrior_punch", + NULL, + Use_Weapon, + NULL, + Weapon_Punch, + "misc/w_pkup.wav", + NULL, 0, + "models/weapons/v_warriorhands/tris.md2", +/* icon */ "warriorpunch", +/* pickup */ "Warriorpunch", + 0, + 0, + NULL, + IT_WEAPON, + WEAP_VIOLATOR, + NULL, + 0, +/* precache */ "weapons/viofire1.wav weapons/viofire2.wav" + }, + + { + "weapon_wizard_punch", + NULL, + Use_Weapon, + NULL, + Weapon_Punch, + "misc/w_pkup.wav", + NULL, 0, + "models/weapons/v_wizardhands/tris.md2", +/* icon */ "wizardpunch", +/* pickup */ "Wizardpunch", + 0, + 0, + NULL, + IT_WEAPON, + WEAP_VIOLATOR, + NULL, + 0, +/* precache */ "weapons/viofire1.wav weapons/viofire2.wav" + }, +#else /* weapon_blaster (.3 .3 1) (-16 -16 -16) (16 16 16) always owned, never in the world */ @@ -1393,6 +1633,30 @@ /* precache */ "weapons/blastf1a.wav misc/lasfly.wav" }, + /* weapon_blaster (.3 .3 1) (-16 -16 -16) (16 16 16) +always owned, never in the world +*/ + { + "weapon_alienblaster", + NULL, + Use_Weapon, + NULL, + Weapon_AlienBlaster, + "misc/w_pkup.wav", + NULL, 0, + "models/weapons/v_alienblast/tris.md2", +/* icon */ "alienblaster", +/* pickup */ "Alien Blaster", + 0, + 0, + NULL, + IT_WEAPON, + WEAP_BLASTER, + NULL, + 0, +/* precache */ "weapons/blastf1a.wav misc/lasfly.wav" //to do tactical - change sound + }, + { "weapon_violator", NULL, @@ -1575,6 +1839,27 @@ /* precache */ "weapons/energyfield.wav smallmech/sight.wav weapons/vaporizer_hum.wav" }, + { + "weapon_minderaser", + Pickup_Weapon, + Use_Weapon, + NULL, //never drop + Weapon_Minderaser, + "misc/w_pkup.wav", + "models/weapons/g_minderaser/tris.md2", EF_ROTATE, + "models/weapons/v_minderaser/tris.md2", +/* icon */ "minderaser", +/* pickup */ "Minderaser", + 0, + 1, + "Seekers", + IT_WEAPON, + WEAP_MINDERASER, + NULL, + 0, +/* precache */ "weapons/clank.wav weapons/minderaserfire.wav weapons/shotgf1b.wav weapons/smartgun_hum.wav" + }, +#endif // // AMMO ITEMS // @@ -1716,6 +2001,49 @@ /* precache */ "" }, + { + "ammo_seekers", + Pickup_Ammo, //set to null + NULL, + Drop_Ammo, //set to null + NULL, + "misc/am_pkup.wav", + NULL, + 0, + NULL, +/* icon */ "a_seekers", +/* pickup */ "Seekers", +/* width */ 3, + 1, + NULL, + IT_AMMO, + 0, + NULL, + AMMO_SEEKERS, +/* precache */ "" + }, + + { + "ammo_bombs", + Pickup_Ammo, //set to null + NULL, + Drop_Ammo, //set to null + NULL, + "misc/am_pkup.wav", + NULL, + 0, + NULL, +/* icon */ "a_bombs", +/* pickup */ "Bombs", +/* width */ 3, + 1, + NULL, + IT_AMMO, + 0, + NULL, + AMMO_BOMBS, +/* precache */ "" + }, // // POWERUP ITEMS @@ -1783,7 +2111,7 @@ /* width */ 2, 60, NULL, - 0, + IT_HEALTH, 0, NULL, 0, @@ -1804,7 +2132,7 @@ /* width */ 3, 0, NULL, - 0, + IT_HEALTH, 0, NULL, 0, @@ -1884,7 +2212,7 @@ */ void SP_item_health (edict_t *self) { - if ( deathmatch->value && (dmflags->integer & DF_NO_HEALTH) ) + if ( deathmatch->integer && (dmflags->integer & DF_NO_HEALTH) ) { G_FreeEdict (self); return; @@ -1900,7 +2228,7 @@ */ void SP_item_health_small (edict_t *self) { - if ( deathmatch->value && (dmflags->integer & DF_NO_HEALTH) ) + if ( deathmatch->integer && (dmflags->integer & DF_NO_HEALTH) ) { G_FreeEdict (self); return; @@ -1918,7 +2246,7 @@ */ void SP_item_health_large (edict_t *self) { - if ( deathmatch->value && (dmflags->integer & DF_NO_HEALTH) ) + if ( deathmatch->integer && (dmflags->integer & DF_NO_HEALTH) ) { G_FreeEdict (self); return; @@ -1935,7 +2263,7 @@ */ void SP_item_health_mega (edict_t *self) { - if ( deathmatch->value && (dmflags->integer & DF_NO_HEALTH) ) + if ( deathmatch->integer && (dmflags->integer & DF_NO_HEALTH) ) { G_FreeEdict (self); return; diff -Nru alien-arena-7.53+dfsg/source/game/g_local.h alien-arena-7.66+dfsg/source/game/g_local.h --- alien-arena-7.53+dfsg/source/game/g_local.h 2011-11-22 03:49:41.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_local.h 2013-06-22 20:07:36.000000000 +0000 @@ -121,7 +121,9 @@ AMMO_ROCKETS, AMMO_GRENADES, AMMO_CELLS, - AMMO_SLUGS + AMMO_SLUGS, + AMMO_SEEKERS, + AMMO_BOMBS } ammo_t; //teams @@ -143,10 +145,6 @@ #define TEAM_GAME ( (dmflags->integer & (DF_SKINTEAMS)) \ || ctf->integer || tca->integer || cp->integer ) -#define RED_TEAM 0 -#define BLUE_TEAM 1 -#define NO_TEAM 2 - //clientinfo origins #define INGAME 0 #define SPAWN 1 @@ -266,7 +264,9 @@ #define IT_ARMOR 4 #define IT_KEY 8 #define IT_POWERUP 16 +#define IT_HEALTH 32 +//to do - add alteria items - will require a number of other changes, particularly in bot code as well // gitem_t->weapmodel for weapons indicates model index #define WEAP_BLASTER 1 #define WEAP_SMARTGUN 2 @@ -278,12 +278,13 @@ #define WEAP_BEAMGUN 10 #define WEAP_VAPORIZER 11 #define WEAP_VIOLATOR 12 -#define WEAP_BOMBER 13 -#define WEAP_STRAFER 14 -#define WEAP_DEATHBALL 15 -#define WEAP_HOVER 16 - - +#define WEAP_MINDERASER 13 +#define WEAP_BOMBER 14 +#define WEAP_STRAFER 15 +#define WEAP_DEATHBALL 16 +#define WEAP_HOVER 17 +#define WEAP_ABOMB 18 +#define WEAP_HBOMB 19 typedef struct gitem_s { @@ -314,8 +315,6 @@ char *precaches; // string of all models, sounds, and images this item will use } gitem_t; - - // // this structure is left intact through an entire game // it should be initialized at dll load time, and read/written to @@ -343,7 +342,6 @@ qboolean autosaved; } game_locals_t; - // // this structure is cleared as each map is entered // it is read/written to the level.sav file for savegames @@ -395,7 +393,6 @@ } level_locals_t; - // spawn_temp_t is only used to hold entity field values that // can be set from the editor, but aren't actualy present // in edict_t during gameplay @@ -421,7 +418,6 @@ float maxpitch; } spawn_temp_t; - typedef struct { // fixed data @@ -452,7 +448,6 @@ void (*endfunc)(edict_t *); } moveinfo_t; - typedef struct { void (*aifunc)(edict_t *self, float dist); @@ -500,7 +495,26 @@ } monsterinfo_t; +//tactical +typedef struct +{ + qboolean alienComputer; + int alienComputerHealth; + qboolean alienPowerSource; + int alienPowerSourceHealth; + qboolean alienAmmoDepot; + int alienAmmoDepotHealth; + qboolean alienBackupGen; + + qboolean humanComputer; + int humanComputerHealth; + qboolean humanPowerSource; + int humanPowerSourceHealth; + qboolean humanAmmoDepot; + int humanAmmoDepotHealth; + qboolean humanBackupGen; +} tactical_t; extern game_locals_t game; extern level_locals_t level; @@ -508,11 +522,14 @@ extern game_export_t globals; extern spawn_temp_t st; extern g_vote_t playervote; +extern tactical_t tacticalScore; extern int sm_meat_index; extern int red_team_score; extern int blue_team_score; +extern int red_team_matches; //for tca +extern int blue_team_matches; //for tca extern int reddiff; extern int bluediff; extern int redwinning; @@ -554,6 +571,8 @@ #define MOD_TARGET_BLASTER 33 #define MOD_GRAPPLE 34 #define MOD_HEADSHOT 35 +#define MOD_MINDERASER 36 +#define MOD_SPIDER 37 #define MOD_FRIENDLY_FIRE 0x8000000 extern int meansOfDeath; @@ -629,6 +648,9 @@ //duel mode extern cvar_t *g_duel; +//tactical mode +extern cvar_t *g_tactical; + extern cvar_t *g_losehealth; extern cvar_t *g_losehealth_num; @@ -644,6 +666,8 @@ extern cvar_t *g_maxgrenades; extern cvar_t *g_maxcells; extern cvar_t *g_maxslugs; +extern cvar_t *g_maxseekers; +extern cvar_t *g_maxbombs; //quick weapon change extern cvar_t *quickweap; @@ -728,11 +752,12 @@ extern field_t fields[]; extern gitem_t itemlist[]; +//mind eraser globals +extern float mindEraserTime; // // g_cmds.c // -void Cmd_Help_f (edict_t *ent); void Cmd_Score_f (edict_t *ent); void Cmd_VoiceTaunt_f (edict_t *ent); @@ -883,25 +908,30 @@ void ThrowDebris (edict_t *self, char *modelname, float speed, vec3_t origin); void ThrowDebris2 (edict_t *self, char *modelname, float speed, vec3_t origin); +#ifdef ALTERIA +void fire_punch(edict_t *self, vec3_t start, vec3_t aimdir, int damage); +#else void fire_bullet (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick, int hspread, int vspread, int mod); void fire_shotgun (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick, int hspread, int vspread, int count, int mod); -void fire_blaster (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, int effect, qboolean hyper); +void fire_blaster (edict_t *self, vec3_t start, vec3_t muzzle, vec3_t aimdir, int damage, int speed, int effect, qboolean hyper); void fire_rocket (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage); void fire_homingrocket (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage); -void fire_plasma (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick); +void fire_disruptor (edict_t *self, vec3_t start, vec3_t muzzle, vec3_t aimdir, int damage, int kick); void fire_bomb (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage, float timer); -void fire_blaster_beam (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick, qboolean detonate); -void fire_floater (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage, float timer); -void fire_floater_alien (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage, float timer); +void fire_blaster_beam (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick, qboolean detonate, qboolean alien); +void fire_smartgrenade (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage, float timer); +void fire_smartgrenade_alien (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage, float timer); void fire_flamethrower(edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius); void fire_hover_beam (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick, qboolean detonate); - -//new weapon code -void fire_energy_field (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick); -void fire_blasterball (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int effect, qboolean hyper); +void fire_minderaser (edict_t *self, vec3_t start, vec3_t dir, float timer); +void fire_spider (edict_t *self, vec3_t start, vec3_t aimdir, int speed); +void fire_vaporizer (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick); +void fire_blasterball (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int effect, qboolean hyper, qboolean alien); void fire_prox (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage, float timer); void fire_fireball (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float damage_radius, int radius_damage); void fire_violator(edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick, int alt); +void fire_tacticalbomb (edict_t *self, vec3_t start, vec3_t aimdir, int speed); +#endif //deathball void fire_deathball (edict_t *self, vec3_t start, vec3_t dir, int speed); @@ -950,6 +980,7 @@ void SaveClientData (void); void FetchClientEntData (edict_t *ent); void TeamCensus( teamcensus_t* team_census ); +void ParseClassFile( char *config_file, edict_t *ent ); //unlagged - g_unlagged.c void G_ResetHistory( edict_t *ent ); @@ -959,7 +990,7 @@ void G_DoTimeShiftFor( edict_t *ent ); void G_UndoTimeShiftFor( edict_t *ent ); void G_UnTimeShiftClient( edict_t *ent ); -void G_PredictPlayerMove( edict_t *ent, float frametime ); +void G_AntilagProjectile( edict_t *ent ); //unlagged - g_unlagged.c // @@ -983,9 +1014,7 @@ // p_hud.c // void MoveClientToIntermission (edict_t *client); -void G_SetStats (edict_t *ent); -void G_SetSpectatorStats (edict_t *ent); -void G_CheckChaseStats (edict_t *ent); +void G_UpdateStats (edict_t *ent); void ValidateSelectedItem (edict_t *ent); void DeathmatchScoreboardMessage (edict_t *client, edict_t *killer, int mapvote); @@ -1007,8 +1036,8 @@ // // g_phys.c // -void G_RunEntity (edict_t *ent); - +void G_RunEntity (edict_t *ent, float timespan); +void SV_CheckVelocity (edict_t *ent); // // g_chase.c @@ -1023,6 +1052,104 @@ // qboolean G_NameMatch( const char* netname, const char *kickname ); +// +// Spawn functions +// +extern void SP_item_health (edict_t *self); +extern void SP_item_health_small (edict_t *self); +extern void SP_item_health_large (edict_t *self); +extern void SP_item_health_mega (edict_t *self); + +extern void SP_info_player_start (edict_t *ent); +extern void SP_info_player_deathmatch (edict_t *ent); +extern void SP_info_player_intermission (edict_t *ent); +extern void SP_info_player_red (edict_t *ent); +extern void SP_info_player_blue(edict_t *ent); + +extern void SP_func_plat (edict_t *ent); +extern void SP_func_rotating (edict_t *ent); +extern void SP_func_button (edict_t *ent); +extern void SP_func_door (edict_t *ent); +extern void SP_func_door_secret (edict_t *ent); +extern void SP_func_door_rotating (edict_t *ent); +extern void SP_func_water (edict_t *ent); +extern void SP_func_train (edict_t *ent); +extern void SP_func_conveyor (edict_t *self); +extern void SP_func_wall (edict_t *self); +extern void SP_func_object (edict_t *self); +extern void SP_func_explosive (edict_t *self); +extern void SP_func_timer (edict_t *self); +extern void SP_func_areaportal (edict_t *ent); +extern void SP_func_killbox (edict_t *ent); + +extern void SP_trigger_always (edict_t *ent); +extern void SP_trigger_once (edict_t *ent); +extern void SP_trigger_multiple (edict_t *ent); +extern void SP_trigger_relay (edict_t *ent); +extern void SP_trigger_push (edict_t *ent); +extern void SP_trigger_hurt (edict_t *ent); +extern void SP_trigger_key (edict_t *ent); +extern void SP_trigger_counter (edict_t *ent); +extern void SP_trigger_elevator (edict_t *ent); +extern void SP_trigger_gravity (edict_t *ent); +extern void SP_trigger_monsterjump (edict_t *ent); +extern void SP_trigger_deathballtarget (edict_t *ent); +extern void SP_trigger_reddeathballtarget (edict_t *ent); +extern void SP_trigger_bluedeathballtarget (edict_t *ent); +extern void SP_trigger_redcowtarget ( edict_t *ent); +extern void SP_trigger_bluecowtarget (edict_t *ent); + +extern void SP_target_temp_entity (edict_t *ent); +extern void SP_target_speaker (edict_t *ent); +extern void SP_target_explosion (edict_t *ent); +extern void SP_target_secret (edict_t *ent); +extern void SP_target_splash (edict_t *ent); +extern void SP_target_steam (edict_t *ent); +extern void SP_target_spawner (edict_t *ent); +extern void SP_target_blaster (edict_t *ent); +extern void SP_target_laser (edict_t *self); +extern void SP_target_lightramp (edict_t *self); +extern void SP_target_earthquake (edict_t *ent); +extern void SP_target_fire (edict_t *ent); +extern void SP_target_changelevel (edict_t *ent); + +extern void SP_worldspawn (edict_t *ent); + +extern void SP_light (edict_t *self); +extern void SP_info_null (edict_t *self); +extern void SP_info_notnull (edict_t *self); +extern void SP_path_corner (edict_t *self); +extern void SP_point_combat (edict_t *self); + +extern void SP_misc_teleporter (edict_t *self); +extern void SP_misc_teleporter_dest (edict_t *self); + +extern void SP_npc_cow (edict_t *self); +extern void SP_npc_deathray(edict_t *self); + +//TCA +extern void SP_misc_spiderpod (edict_t *self); +extern void SP_misc_rednode (edict_t *self); +extern void SP_misc_bluenode (edict_t *self); +extern void SP_misc_bluespidernode (edict_t *self); +extern void SP_misc_redspidernode (edict_t *self); + +//Tactical +extern void SP_misc_aliencomputer (edict_t *self); +extern void SP_misc_humancomputer (edict_t *self); +extern void SP_misc_alienpowersrc (edict_t *self); +extern void SP_misc_humanpowersrc (edict_t *self); +extern void SP_misc_alienammodepot (edict_t *self); +extern void SP_misc_humanammodepot (edict_t *self); +extern void SP_misc_alienbackupgen (edict_t *self); +extern void SP_misc_humanbackupgen (edict_t *self); +extern void SP_misc_deathray (edict_t *self); +extern void SP_misc_laser (edict_t *self); + +extern void SP_misc_mapmodel (edict_t *self); +extern void SP_misc_watersplash (edict_t *ent); +extern void SP_misc_electroflash (edict_t *ent); + //============================================================================ @@ -1041,6 +1168,8 @@ #define BASE_SLUGS 10 #define BASE_GRENADES 50 #define BASE_BULLETS 50 +#define BASE_SEEKERS 1 +#define BASE_BOMBS 1 // client data that stays across multiple level loads @@ -1071,9 +1200,13 @@ int max_grenades; int max_cells; int max_slugs; + int max_seekers; + int max_bombs; gitem_t *weapon; gitem_t *lastweapon; + gitem_t *lastfailedswitch; + float failedswitch_framenum; int game_helpchanged; int helpchanged; @@ -1292,8 +1425,10 @@ //movetime - used for special moves float lastmovetime; int lastsidemove; + int lastforwardmove; int dodge; int moved; + int keydown; float lastdodge; float spawnprotecttime; @@ -1359,6 +1494,15 @@ solid_t solid; int clipmask; edict_t *owner; + + int redirect_number; //for ghost mode + + // must be accessible to server code for collision detection + int dmteam; + int teamset; +#define RED_TEAM 0 +#define BLUE_TEAM 1 +#define NO_TEAM 2 // DO NOT MODIFY ANYTHING ABOVE THIS, THE SERVER @@ -1479,9 +1623,8 @@ monsterinfo_t monsterinfo; edict_t *flashlight; - - int dmteam; - int teamset; + + edict_t *replaced_weapon; // ACEBOT_ADD qboolean is_bot; @@ -1536,6 +1679,12 @@ int Flames; int FlameDamage; edict_t *orb; + + //Prox mines and grenades + int nade_timer; + + //bombs + int armed; //alt-fires qboolean altfire; @@ -1546,6 +1695,14 @@ //class(human = 0; alien = 1; robot = 2;) int ctype; + //tactical mode + qboolean has_bomb; + qboolean has_detonator; + qboolean has_vaporizor; + qboolean has_minderaser; + int armor_type; + char charModel[128]; + //model specific gibs int usegibs; char head[64]; @@ -1616,6 +1773,7 @@ //unlagged extern cvar_t *g_antilag; extern cvar_t *g_antilagdebug; +extern cvar_t *g_antilagprojectiles; // ACEBOT_ADD #include "acesrc/acebot.h" diff -Nru alien-arena-7.53+dfsg/source/game/g_main.c alien-arena-7.66+dfsg/source/game/g_main.c --- alien-arena-7.53+dfsg/source/game/g_main.c 2011-11-22 03:49:41.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_main.c 2013-08-19 03:26:16.000000000 +0000 @@ -42,6 +42,7 @@ game_export_t globals; spawn_temp_t st; g_vote_t playervote; +tactical_t tacticalScore; int sm_meat_index; int meansOfDeath; @@ -69,6 +70,9 @@ //duel mode cvar_t *g_duel; +//tactical mode +cvar_t *g_tactical; + cvar_t *g_losehealth; cvar_t *g_losehealth_num; @@ -84,6 +88,8 @@ cvar_t *g_maxgrenades; cvar_t *g_maxcells; cvar_t *g_maxslugs; +cvar_t *g_maxseekers; +cvar_t *g_maxbombs; //quick weapon change cvar_t *quickweap; @@ -203,6 +209,7 @@ //unlagged cvar_t *g_antilag; cvar_t *g_antilagdebug; +cvar_t *g_antilagprojectiles; void SpawnEntities (char *mapname, char *entities, char *spawnpoint); void ClientThink (edict_t *ent, usercmd_t *cmd); @@ -265,6 +272,25 @@ gi.FreeTags (TAG_GAME); } +/* +============= +G_ForceExitIntermission + +To prevent those annoying occurrences when you join a server which has been +idling at intermission for a long time, then it instantly switches maps as +soon as the old one is done loading. + +Now new player joins will force intermission to end after twenty seconds, even +if there are still players in the server. +============= +*/ +void ExitLevel (void); +void G_ForceExitIntermission (void) +{ + if (level.time < level.intermissiontime + 20.0 || !level.intermissiontime) + return; + ExitLevel(); +} /* ================= @@ -292,6 +318,7 @@ globals.ACESP_FindBotNum = ACESP_FindBotNum; globals.RunFrame = G_RunFrame; + globals.ForceExitIntermission = G_ForceExitIntermission; globals.ServerCommand = ServerCommand; @@ -325,6 +352,9 @@ int i; edict_t *ent; + /* make sure bot info in first client is up to date */ + ACESP_UpdateBots(); + // calc the player views now that all pushing // and damage has been added for (i=0 ; ivalue ; i++) @@ -379,18 +409,18 @@ * 8: "violator" * *--- weapon_hit[] incremented --- - * 0 : blasterball_touch : Weapon_Beamgun, Weapon_Blaster, Weapon_Hover - * 0 : fire_blaster_beam : Weapon_Beamgun, Weapon_Blaster, Weapon_Strafer - * 1 : fire_plasma : Weapon_Disruptor - * 2 : floater_think : Weapon_Smartgun - * 3 : fire_lead : Weapon_Chain - * 4 : fireball_touch : Weapon_Flame - * 4 : flame_touch : Weapon_Flame - * 5 : rocket_touch : Weapon_RocketLauncher, Weapon_Bomber, Weapon_Strafer - * 6 : fire_blaster : Weapon_Beamgun, Weapon_Blaster - * 7 : bomb_touch : Weapon_Bomber, Weapon_Vaporizer - * 7 : fire_energy_field : Weapon_Vaporizer - * 8 : fire_violator : Weapon_Violator + * 0 : blasterball_touch : Weapon_Beamgun, Weapon_Blaster, Weapon_Hover + * 0 : fire_blaster_beam : Weapon_Beamgun, Weapon_Blaster, Weapon_Alienblaster, Weapon_Strafer + * 1 : fire_disruptor : Weapon_Disruptor + * 2 : smartgrenade_think : Weapon_Smartgun + * 3 : fire_lead : Weapon_Chain + * 4 : fireball_touch : Weapon_Flame + * 4 : flame_touch : Weapon_Flame + * 5 : rocket_touch : Weapon_RocketLauncher, Weapon_Bomber, Weapon_Strafer + * 6 : fire_blaster : Weapon_Beamgun, Weapon_Blaster + * 7 : bomb_touch : Weapon_Bomber, Weapon_Vaporizer + * 7 : fire_vaporizer : Weapon_Vaporizer + * 8 : fire_violator : Weapon_Violator * --- from sample.cfg accuracy * weapon_hit[] :to: bot weapacc[] @@ -536,7 +566,8 @@ } //call voting - if(g_callvote->value) { + if(g_callvote->value) + { playervote.called = false; playervote.yay = 0; playervote.nay = 0; @@ -544,7 +575,8 @@ } //map voting - if(g_mapvote->value) { + if(g_mapvote->value) + { level.changemap = level.mapname; // initialise map list using the current map's name @@ -740,9 +772,14 @@ //stick something in here to filter out CTF, and just make it loop back for (i = 0; i < nummaps; i++) { if (Q_strcasecmp(mapnames[i], level.mapname) == 0) { - if(mapnames[i+1][0]) - BeginIntermission (CreateTargetChangeLevel (mapnames[i+1]) ); - else if(mapnames[0][0]) //no more maps, repeat list + if(mapnames[i+1]) + { + if(mapnames[i+1][0]) + BeginIntermission (CreateTargetChangeLevel (mapnames[i+1]) ); + else if(mapnames[0][0]) //no more maps, repeat list + BeginIntermission (CreateTargetChangeLevel (mapnames[0]) ); + } + else BeginIntermission (CreateTargetChangeLevel (mapnames[0]) ); } } @@ -792,9 +829,9 @@ ResetLevel ================= */ -void ResetLevel (void) //for resetting players and items after warmup +void ResetLevel (qboolean keepscores) //for resetting players and items after warmup { - int i; + int i, backup_score = 0; //initialize to shut gcc up edict_t *ent; gitem_t *item; @@ -803,6 +840,8 @@ ent = g_edicts + i + 1; if (!ent->inuse || ent->client->resp.spectator) continue; + if (keepscores) + backup_score = ent->client->resp.score; // locate ent at a spawn point and reset everything InitClientResp (ent->client); if(ent->is_bot) @@ -816,6 +855,8 @@ PutClientInServer (ent); } ent->client->homing_shots = 0; + if (keepscores) + ent->client->resp.score = backup_score; } ACESP_SaveBots(); // update bots.tmp and client bot information @@ -823,6 +864,21 @@ blue_team_score = 0; red_team_score = 0; + if(g_tactical->integer) + { + tacticalScore.alienAmmoDepot = + tacticalScore.alienComputer = + tacticalScore.alienPowerSource = + tacticalScore.alienBackupGen = + tacticalScore.humanAmmoDepot = + tacticalScore.humanComputer = + tacticalScore.humanPowerSource = + tacticalScore.humanBackupGen = + true; + } + + mindEraserTime = level.time; + //reset level items for (i=1, ent=g_edicts+i ; i < globals.num_edicts ; i++,ent++) { @@ -843,15 +899,27 @@ break; } } - + + if (!strcmp(ent->classname, "misc_bluenode") || !strcmp(ent->classname, "misc_rednode")) + ent->powered = true; + if (!strcmp(ent->classname, "misc_redspidernode")) + { + gi.unlinkentity (ent); + SP_misc_redspidernode (ent); + } + if (!strcmp(ent->classname, "misc_bluespidernode")) + { + gi.unlinkentity (ent); + SP_misc_bluespidernode (ent); + } } - if(g_callvote->value) + if(g_callvote->integer) safe_bprintf(PRINT_HIGH, "Call voting is ^2ENABLED\n"); else safe_bprintf(PRINT_HIGH, "Call voting is ^1DISABLED\n"); - if(g_antilag->value) + if(g_antilag->integer) safe_bprintf(PRINT_HIGH, "Antilag is ^2ENABLED\n"); else safe_bprintf(PRINT_HIGH, "Antilag is ^1DISABLED\n"); @@ -874,7 +942,7 @@ gi.cvar_set ("g_teamgame", va("%d", TEAM_GAME)); - if ( !tca->value && !ctf->value && !cp->value && !(dmflags->integer & DF_SKINTEAMS) ) + if ( !g_tactical->integer && !tca->integer && !ctf->integer && !cp->integer && !(dmflags->integer & DF_SKINTEAMS) ) { /*--- non-team game warmup ---*/ /* @@ -895,21 +963,20 @@ --warmup_state; switch ( warmup_state ) { - case 3: - gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "misc/three.wav" ), 1, ATTN_NONE, 0 ); - break; - case 2: - gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "misc/two.wav" ), 1, ATTN_NONE, 0 ); - break; - case 1: - gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "misc/one.wav" ), 1, ATTN_NONE, 0 ); - break; - case 0: - gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "misc/fight.wav" ), 1, ATTN_NONE, 0 ); - break; - default: - break; - + case 3: + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "misc/three.wav" ), 1, ATTN_NONE, 0 ); + break; + case 2: + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "misc/two.wav" ), 1, ATTN_NONE, 0 ); + break; + case 1: + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "misc/one.wav" ), 1, ATTN_NONE, 0 ); + break; + case 0: + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "misc/fight.wav" ), 1, ATTN_NONE, 0 ); + break; + default: + break; } if ( warmup_state > 0 ) { @@ -924,7 +991,7 @@ { safe_centerprintf( &g_edicts[i], "FIGHT!\n" ); } - ResetLevel(); + ResetLevel(false); } } } @@ -933,12 +1000,12 @@ if (level.intermissiontime) return; - if (!deathmatch->value) + if (!deathmatch->integer) return; if (timelimit->value) { - if (level.time >= timelimit->value*60 && ((tca->value || ctf->value || cp->value || (dmflags->integer & DF_SKINTEAMS)) || level.time > warmuptime->value)) + if (level.time >= timelimit->value*60.0 && ((tca->integer || ctf->integer || cp->integer || (dmflags->integer & DF_SKINTEAMS)) || level.time > warmuptime->value)) { safe_bprintf (PRINT_HIGH, "Timelimit hit.\n"); EndDMLevel (); @@ -946,19 +1013,19 @@ } } - if (fraglimit->value && ((tca->value || ctf->value || cp->value || (dmflags->integer & DF_SKINTEAMS)) || level.time > warmuptime->value)) + if (fraglimit->integer && ((tca->integer || ctf->integer || cp->integer || (dmflags->integer & DF_SKINTEAMS)) || level.time > warmuptime->value)) { //team scores - if ((dmflags->integer & DF_SKINTEAMS) || ctf->value || cp->value) //it's all about the team! + if ((dmflags->integer & DF_SKINTEAMS) || ctf->integer || cp->integer) //it's all about the team! { - if(blue_team_score >= fraglimit->value) + if(blue_team_score >= fraglimit->integer) { safe_bprintf(PRINT_HIGH, "Blue Team wins!\n"); bot_won = 0; //we don't care if it's a bot that wins EndDMLevel(); return; } - if(red_team_score >= fraglimit->value) + if(red_team_score >= fraglimit->integer) { safe_bprintf(PRINT_HIGH, "Red Team wins!\n"); bot_won = 0; //we don't care if it's a bot that wins @@ -966,9 +1033,10 @@ return; } } - else { + else + { top_score = 0; - for (i=0 ; ivalue ; i++) + for (i=0 ; iinteger ; i++) { cl = game.clients + i; if (!g_edicts[i+1].inuse) @@ -977,9 +1045,10 @@ if(cl->resp.score > top_score) top_score = cl->resp.score; //grab the top score - if (cl->resp.score >= fraglimit->value) + if (cl->resp.score >= fraglimit->integer) { - if(cl->is_bot){ + if(cl->is_bot) + { bot_won = 1; //a bot has won the match safe_bprintf (PRINT_HIGH, "Fraglimit hit by bot.\n"); } @@ -993,12 +1062,15 @@ return; } } - if(!tca->value && !ctf->value && !cp->value) { - i = fraglimit->value - top_score; - switch(i) { + if(!tca->integer && !ctf->integer && !cp->integer) + { + i = fraglimit->integer - top_score; + switch(i) + { case 3: - if(!print3){ - for (i=0 ; ivalue ; i++) + if(!print3) + { + for (i=0 ; iinteger ; i++) { cl_ent = g_edicts + 1 + i; if (!cl_ent->inuse || cl_ent->is_bot) @@ -1011,8 +1083,9 @@ } break; case 2: - if(!print2) { - for (i=0 ; ivalue ; i++) + if(!print2) + { + for (i=0 ; iinteger ; i++) { cl_ent = g_edicts + 1 + i; if (!cl_ent->inuse || cl_ent->is_bot) @@ -1025,8 +1098,9 @@ } break; case 1: - if(!print1) { - for (i=0 ; ivalue ; i++) + if(!print1) + { + for (i=0 ; iinteger ; i++) { cl_ent = g_edicts + 1 + i; if (!cl_ent->inuse || cl_ent->is_bot) @@ -1044,19 +1118,57 @@ } } } - if(tca->value) { - if(blue_team_score == 0) { + + if(tca->integer) + { + if(red_team_matches == 2) + { safe_bprintf(PRINT_HIGH, "Red Team wins!\n"); bot_won = 0; //we don't care if it's a bot that wins EndDMLevel(); return; } - if(red_team_score == 0) { + if(blue_team_matches == 2) + { safe_bprintf(PRINT_HIGH, "Blue Team wins!\n"); bot_won = 0; //we don't care if it's a bot that wins EndDMLevel(); return; } + if (blue_team_score == 0) + { + safe_bprintf(PRINT_HIGH, "Red Team wins match %d out of 3!\n", red_team_matches); + bot_won = 0; + ResetLevel(true); + blue_team_score = red_team_score = 4; + return; + } + if (red_team_score == 0) + { + safe_bprintf(PRINT_HIGH, "Blue Team wins match %d out of 3!\n", blue_team_matches); + bot_won = 0; + ResetLevel(true); + blue_team_score = red_team_score = 4; + return; + } + } + + if(g_tactical->integer) + { + if(!tacticalScore.alienAmmoDepot && !tacticalScore.alienComputer && !tacticalScore.alienPowerSource) + { + safe_bprintf(PRINT_HIGH, "The Humans have defeated the Aliens!\n"); + bot_won = 0; //we don't care if it's a bot that wins + EndDMLevel(); + return; + } + if(!tacticalScore.humanAmmoDepot && !tacticalScore.humanComputer && !tacticalScore.humanPowerSource) + { + safe_bprintf(PRINT_HIGH, "The Aliens have defeated the Humans!\n"); + bot_won = 0; //we don't care if it's a bot that wins + EndDMLevel(); + return; + } } } @@ -1071,7 +1183,8 @@ edict_t *ent; char command [256]; - if(strcmp(level.mapname, level.changemap) || timelimit->value) { + if(strcmp(level.mapname, level.changemap) || timelimit->value || g_tactical->value) + { Com_sprintf( command, sizeof(command), "map \"%s\"\n", level.changemap ); gi.AddCommandString( command ); } @@ -1091,7 +1204,7 @@ EndIntermission(); // clear some things before going to next level - for (i=0 ; ivalue ; i++) + for (i=0 ; iinteger ; i++) { ent = g_edicts + 1 + i; if (!ent->inuse) @@ -1106,37 +1219,67 @@ ent->takedamage = DAMAGE_AIM; ent->solid = SOLID_BBOX; ent->deadflag = DEAD_NO; - if(ent->is_bot) { + if(ent->is_bot) + { ACESP_PutClientInServer( ent, true ); - } else { + } + else + { PutClientInServer (ent); } - if(g_duel->value) { + if(g_duel->integer) + { ClientPlaceInQueue(ent); ClientCheckQueue(ent); } } - for (i=1, ent=g_edicts+i ; i < globals.num_edicts ; i++,ent++) { + for (i=1, ent=g_edicts+i ; i < globals.num_edicts ; i++,ent++) + { if (!ent->inuse || ent->client) continue; //remove podiums if(!strcmp(ent->classname, "pad")) G_FreeEdict(ent); - if(tca->value) { + if(tca->integer) + { if(strstr(ent->classname, "spidernode")) ED_CallSpawn (ent); ent->powered = true; } } - if(tca->value) { - blue_team_score = 4; - red_team_score = 4; + if(tca->integer) + { + blue_team_score = red_team_score = 4; + red_team_matches = blue_team_matches = 0; } - else { + else + { red_team_score = 0; blue_team_score = 0; } + + if(g_tactical->integer) + { + tacticalScore.alienAmmoDepot = + tacticalScore.alienComputer = + tacticalScore.alienPowerSource = + tacticalScore.alienBackupGen = + tacticalScore.humanAmmoDepot = + tacticalScore.humanComputer = + tacticalScore.humanPowerSource = + tacticalScore.humanBackupGen = + true; + + tacticalScore.alienAmmoDepotHealth = + tacticalScore.alienComputerHealth = + tacticalScore.alienPowerSourceHealth = + tacticalScore.humanAmmoDepotHealth = + tacticalScore.humanComputerHealth = + tacticalScore.humanPowerSourceHealth = + 100; + } + print1 = print2 = print3 = false; } @@ -1453,14 +1596,14 @@ } } - if (i > 0 && i <= g_maxclients->value) + if (i > 0 && i <= g_maxclients->integer) { ClientBeginServerFrame (ent); } if(ent->inuse && ent->client && !ent->is_bot) { - if ( ent->s.number <= g_maxclients->value ) + if ( ent->s.number <= g_maxclients->integer ) { // count actual players, not deathcam entities numActiveClients++; } @@ -1476,10 +1619,10 @@ //unlagged if ( g_antilag->integer) - G_UnTimeShiftAllClients( NULL ); + G_UnTimeShiftAllClients( NULL ); } else*/ - G_RunEntity (ent); + G_RunEntity (ent, FRAMETIME); } // see if it is time to end a deathmatch @@ -1499,7 +1642,7 @@ level.frameStartTime = level.time; //call voting - if(g_callvote->value && playervote.called) { + if(g_callvote->integer && playervote.called) { playervote.time = level.time; if(playervote.time-playervote.starttime > 15 ){ //15 seconds @@ -1527,7 +1670,7 @@ playervote.command[0] = 0; //do each ent - for (i=0 ; ivalue ; i++) + for (i=0 ; iinteger ; i++) { ent = g_edicts + 1 + i; if (!ent->inuse || ent->is_bot) diff -Nru alien-arena-7.53+dfsg/source/game/g_misc.c alien-arena-7.66+dfsg/source/game/g_misc.c --- alien-arena-7.53+dfsg/source/game/g_misc.c 2011-08-15 03:28:40.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_misc.c 2013-06-22 20:07:36.000000000 +0000 @@ -982,10 +982,13 @@ return; } + // The actual misc_teleporter is converted into a cosmetic object for the + // glowing effect, while a new entity is spawned to act as the functioning + // teleporter. gi.setmodel (ent, "models/objects/blank/tris.md2"); ent->s.skinnum = 1; ent->s.effects = EF_TELEPORTER; - ent->solid = SOLID_BBOX; + ent->solid = SOLID_BBOX; VectorSet (ent->mins, -32, -32, -24); VectorSet (ent->maxs, 32, 32, -16); @@ -1016,6 +1019,104 @@ gi.linkentity (ent); } +void misc_mapmodel_think (edict_t *ent) +{ + if(ent->spawnflags & 2) + ent->s.frame = (ent->s.frame + 1) % 39; + else + ent->s.frame = (ent->s.frame + 1) % 24; + ent->nextthink = level.time + FRAMETIME; +} +void SP_misc_mapmodel (edict_t *ent) //random .md2 map models +{ + gi.setmodel (ent, ent->model); + + ent->solid = SOLID_NOT; //will need clipping brushes around it + + //disable shadows(also disables per-pixel dynamic lighting unless minlight set + if(ent->spawnflags & 1) + ent->s.renderfx = RF_NOSHADOWS; + + if(ent->spawnflags & 16) + ent->s.renderfx = RF_TRANSLUCENT; + + if(ent->spawnflags & 32) { //animated mesh + if(ent->spawnflags & 128) + ent->s.frame = 0; + else + ent->s.frame = rand()%24; + ent->think = misc_mapmodel_think; + ent->nextthink = level.time + FRAMETIME; + } + else //static mesh + ent->s.frame = 0; + + //allow dynamic per-pixel lighting + if(ent->spawnflags & 64) + ent->s.renderfx |= RF_MINLIGHT; + + gi.linkentity (ent); +} + +void watersplash_think (edict_t *ent) +{ + vec3_t up; + + up[0] = 0; + up[1] = 0; + up[2] = 1; + + //write effect + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_SPLASH); + gi.WriteByte (8); + gi.WritePosition (ent->s.origin); + gi.WriteDir (up); + gi.WriteByte (SPLASH_BLUE_WATER); //we should allow spawnflags to change this + gi.multicast (ent->s.origin, MULTICAST_PVS); + + ent->nextthink = level.time + 1.0; +} + +void SP_misc_watersplash (edict_t *ent) +{ + gi.setmodel(ent, NULL); + ent->solid = SOLID_NOT; + ent->movetype = MOVETYPE_NONE; + ent->takedamage = DAMAGE_NO; + + ent->think = watersplash_think; + ent->nextthink = level.time + 0.5 + random(); + + gi.linkentity (ent); +} + +void misc_electroflash_think (edict_t *ent) +{ + gi.WriteByte (svc_muzzleflash); + gi.WriteShort (ent-g_edicts); + gi.WriteByte (MZ_RAILGUN); + gi.multicast (ent->s.origin, MULTICAST_PVS); + + ent->nextthink = level.time + 0.05 + random(); +} + +void SP_misc_electroflash (edict_t *ent) //random electrical pulses +{ + gi.setmodel (ent, NULL); + + ent->solid = SOLID_NOT; + ent->movetype = MOVETYPE_NONE; + ent->takedamage = DAMAGE_NO; + ent->s.sound = gi.soundindex("world/electricity.wav"); + ent->think = misc_electroflash_think; + ent->nextthink = level.time + 0.05 + random(); + + gi.linkentity (ent); +} + +//Team Core Assault + void spidervolts (edict_t *self) { @@ -1147,6 +1248,12 @@ } void SP_misc_rednode (edict_t *ent) { + if (!tca->integer) + { + G_FreeEdict (ent); + return; + } + ent->movetype = MOVETYPE_NONE; ent->solid = SOLID_BBOX; ent->takedamage = DAMAGE_NO; @@ -1222,6 +1329,12 @@ } void SP_misc_bluenode (edict_t *ent) { + if (!tca->integer) + { + G_FreeEdict (ent); + return; + } + ent->movetype = MOVETYPE_NONE; ent->solid = SOLID_BBOX; ent->takedamage = DAMAGE_NO; @@ -1253,8 +1366,10 @@ ent->s.frame = (ent->s.frame + 1) % 13; ent->nextthink = level.time + FRAMETIME; } -void red_roundend(edict_t *ent) { +void red_roundend(edict_t *ent) +{ red_team_score = 0; + blue_team_matches++; } void redspidernode_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) { @@ -1275,13 +1390,20 @@ } void SP_misc_redspidernode (edict_t *ent) { + if (!tca->integer) + { + G_FreeEdict (ent); + return; + } + ent->movetype = MOVETYPE_NONE; ent->solid = SOLID_BBOX; ent->takedamage = DAMAGE_NO; ent->s.modelindex = gi.modelindex ("models/misc/spiderpod/tris.md2"); + ent->s.modelindex3 = gi.modelindex ("models/misc/spiderpod/helmet.md2"); - ent->s.renderfx = (RF_FULLBRIGHT | RF_GLOW | RF_NOSHADOWS); + ent->s.renderfx = (RF_FULLBRIGHT | RF_GLOW); VectorSet (ent->mins, -64, -64, 0); VectorSet (ent->maxs, 64, 64, 128); ent->health = 600; @@ -1303,8 +1425,10 @@ ent->s.frame = (ent->s.frame + 1) % 13; ent->nextthink = level.time + FRAMETIME; } -void blue_roundend(edict_t *self) { +void blue_roundend(edict_t *self) +{ blue_team_score = 0; + red_team_matches++; } void bluespidernode_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) { @@ -1325,13 +1449,20 @@ } void SP_misc_bluespidernode (edict_t *ent) { + if (!tca->integer) + { + G_FreeEdict (ent); + return; + } + ent->movetype = MOVETYPE_NONE; ent->solid = SOLID_BBOX; ent->takedamage = DAMAGE_NO; ent->s.modelindex = gi.modelindex ("models/misc/spiderpod/tris.md2"); + ent->s.modelindex3 = gi.modelindex ("models/misc/spiderpod/helmet.md2"); - ent->s.renderfx = (RF_FULLBRIGHT | RF_GLOW | RF_NOSHADOWS); + ent->s.renderfx = (RF_FULLBRIGHT | RF_GLOW); VectorSet (ent->mins, -64, -64, 0); VectorSet (ent->maxs, 64, 64, 128); ent->health = 600; @@ -1343,98 +1474,627 @@ M_droptofloor (ent); } -void misc_mapmodel_think (edict_t *ent) +//Tactical base items +//Rules: When a computer is destroyed, that base's turrents/deathrays will behave eratically, even firing on it's own team on occasion. Laser barriers shut off. +//When a powersource is destroyed, the backup generators(if not already destroyed) for the computer and ammo generator turn on(generator models will animate, emit sound). Ammo will generate from depot at half speed. +//Laser barriers shut off, turrets and deathrays are weak. +//When an ammo depot is destroyed, ammo stops being produced. +//When all three are disabled, the other team wins. + +//lasers +void misc_laser_think (edict_t *self) { - if(ent->spawnflags & 2) - ent->s.frame = (ent->s.frame + 1) % 39; + edict_t *ent; + edict_t *ignore; + vec3_t start; + vec3_t end; + trace_t tr; + vec3_t point; + vec3_t last_movedir; + int count; + + if(self->spawnflags & 1) + { + if(!tacticalScore.humanComputer || !tacticalScore.humanPowerSource) + { + self->nextthink = 0; + return; + } + } + else if(!tacticalScore.alienComputer || !tacticalScore.alienPowerSource) + { + self->nextthink = 0; + return; + } + + count = 8; + + if (!self->enemy) + { + if (self->target) + { + ent = G_Find (NULL, FOFS(targetname), self->target); + if (!ent) + gi.dprintf ("%s at %s: %s is a bad target\n", self->classname, vtos(self->s.origin), self->target); + self->enemy = ent; + } + else + { + G_SetMovedir (self->s.angles, self->movedir); + } + } + else + { + VectorCopy (self->movedir, last_movedir); + VectorMA (self->enemy->absmin, 0.5, self->enemy->size, point); + VectorSubtract (point, self->s.origin, self->movedir); + VectorNormalize (self->movedir); + } + + ignore = self; + VectorCopy (self->s.origin, start); + VectorCopy (self->enemy->s.origin, end); + while(1) + { + tr = gi.trace (start, NULL, NULL, end, ignore, CONTENTS_SOLID|CONTENTS_MONSTER|CONTENTS_DEADMONSTER); + gi.WriteByte (svc_temp_entity); + if (self->spawnflags & 1) + gi.WriteByte (TE_REDLASER); + else + gi.WriteByte (TE_LASERBEAM); + gi.WritePosition (start); + gi.WritePosition (end); + gi.multicast (start, MULTICAST_PHS); + + if (!tr.ent) + break; + + //don't hurt anyone on the same team as the laser - spawnflag 1 = human + if(self->spawnflags & 1) + { + if(tr.ent->ctype == 1) + break; + } + else if(!tr.ent->ctype) + break; + + // hurt it if we can + if (tr.ent->takedamage) + T_Damage (tr.ent, self, self->activator, self->movedir, tr.endpos, vec3_origin, self->dmg, 1, DAMAGE_ENERGY, MOD_TARGET_LASER); + + // if we hit something that's not a player, we're done + if (!tr.ent->client) + { + break; + } + + ignore = tr.ent; + VectorCopy (tr.endpos, start); + } + + VectorCopy (tr.endpos, self->s.old_origin); + + self->nextthink = level.time + FRAMETIME; +} + +void misc_laser_start (edict_t *self) +{ + + self->think = misc_laser_think; +} + +void laser_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +{ + self->takedamage = DAMAGE_NO; + self->activator = attacker; + + gi.WriteByte (svc_temp_entity); + if(self->spawnflags & 1) + { + gi.WriteByte (TE_ROCKET_EXPLOSION); + } else - ent->s.frame = (ent->s.frame + 1) % 24; - ent->nextthink = level.time + FRAMETIME; + { + gi.WriteByte (TE_BFG_BIGEXPLOSION); + } + gi.WritePosition (self->s.origin); + gi.multicast (self->s.origin, MULTICAST_PHS); + + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "world/explosion1.wav" ), 1, ATTN_NONE, 0 ); + + G_FreeEdict (self); } -void SP_misc_mapmodel (edict_t *ent) //random .md2 map models + +void SP_misc_laser (edict_t *ent) { - gi.setmodel (ent, ent->model); + if (!g_tactical->integer) + { + G_FreeEdict (ent); + return; + } - ent->solid = SOLID_NOT; //will need clipping brushes around it + ent->movetype = MOVETYPE_NONE; + ent->solid = SOLID_BBOX; + ent->takedamage = DAMAGE_YES; + ent->health = 1000; + ent->die = laser_die; + + ent->dmg = 500; //cause severe damage, especially if multiples(most cases) - //disable shadows(also disables per-pixel dynamic lighting unless minlight set if(ent->spawnflags & 1) - ent->s.renderfx = RF_NOSHADOWS; + ent->s.modelindex = gi.modelindex ("models/tactical/human_laser.iqm"); + else + ent->s.modelindex = gi.modelindex ("models/tactical/alien_laser.iqm"); - if(ent->spawnflags & 16) - ent->s.renderfx = RF_TRANSLUCENT; + VectorSet (ent->mins, -16, -16, -16); + VectorSet (ent->maxs, 16, 16, 16); - if(ent->spawnflags & 32) { //animated mesh - if(ent->spawnflags & 128) - ent->s.frame = 0; - else - ent->s.frame = rand()%24; - ent->think = misc_mapmodel_think; - ent->nextthink = level.time + FRAMETIME; + // let everything else get spawned before we start firing + ent->think = misc_laser_think; + ent->nextthink = level.time + 1; + + gi.linkentity (ent); +} + + +//computers +void computer_think (edict_t *ent) +{ + if(ent->classname == "alien computer") + tacticalScore.alienComputerHealth = ent->health/15; + else + tacticalScore.humanComputerHealth = ent->health/15; + + ent->s.frame = (ent->s.frame + 1) % 24; + ent->nextthink = level.time + FRAMETIME; +} + +void computer_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +{ + edict_t *cl_ent; + int i; + + self->takedamage = DAMAGE_NO; + self->activator = attacker; + + gi.WriteByte (svc_temp_entity); + if(self->classname == "alien computer") + { + tacticalScore.alienComputer = false; + tacticalScore.alienComputerHealth = 0; + gi.WriteByte (TE_BFG_BIGEXPLOSION); } - else //static mesh - ent->s.frame = 0; + else + { + tacticalScore.humanComputer = false; + tacticalScore.humanComputerHealth = 0; + gi.WriteByte (TE_ROCKET_EXPLOSION); + } + gi.WritePosition (self->s.origin); + gi.multicast (self->s.origin, MULTICAST_PHS); - //allow dynamic per-pixel lighting - if(ent->spawnflags & 64) - ent->s.renderfx |= RF_MINLIGHT; + if(self->classname == "alien computer") + { + for (i=0 ; ivalue ; i++) + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "Alien Central Computer has been destroyed!"); + } + } + else + { + for (i=0 ; ivalue ; i++) + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "Human Central Computer has been destroyed!"); + } + } + + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "world/explosion1.wav" ), 1, ATTN_NONE, 0 ); + + G_FreeEdict (self); +} + +void SP_misc_aliencomputer (edict_t *ent) +{ + if (!g_tactical->integer) + { + G_FreeEdict (ent); + return; + } + + ent->movetype = MOVETYPE_NONE; + ent->solid = SOLID_BBOX; + ent->takedamage = DAMAGE_YES; + + ent->s.modelindex = gi.modelindex ("models/tactical/alien_computer.iqm"); + + VectorSet (ent->mins, -64, -64, 0); + VectorSet (ent->maxs, 64, 64, 64); + ent->health = 1500; + ent->die = computer_die; + ent->think = computer_think; + ent->nextthink = level.time + FRAMETIME; + ent->classname = "alien computer"; gi.linkentity (ent); + M_droptofloor (ent); } -void watersplash_think (edict_t *ent) +void SP_misc_humancomputer (edict_t *ent) { - vec3_t up; + if (!g_tactical->integer) + { + G_FreeEdict (ent); + return; + } - up[0] = 0; - up[1] = 0; - up[2] = 1; + ent->movetype = MOVETYPE_NONE; + ent->solid = SOLID_BBOX; + ent->takedamage = DAMAGE_YES; + + ent->s.modelindex = gi.modelindex ("models/tactical/human_computer.iqm"); + + VectorSet (ent->mins, -64, -64, 0); + VectorSet (ent->maxs, 64, 64, 64); + ent->health = 1500; + ent->die = computer_die; + ent->think = computer_think; + ent->nextthink = level.time + FRAMETIME; + ent->classname = "human computer"; + + gi.linkentity (ent); + M_droptofloor (ent); +} + +//power sources +void powersrc_think (edict_t *ent) +{ + if(ent->classname == "alien powersrc") + tacticalScore.alienPowerSourceHealth = ent->health/15; + else + tacticalScore.humanPowerSourceHealth = ent->health/15; + ent->s.frame = (ent->s.frame + 1) % 24; + ent->nextthink = level.time + FRAMETIME; +} + +void powersrc_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +{ + edict_t *cl_ent; + int i; + + self->takedamage = DAMAGE_NO; + self->activator = attacker; - //write effect gi.WriteByte (svc_temp_entity); - gi.WriteByte (TE_SPLASH); - gi.WriteByte (8); - gi.WritePosition (ent->s.origin); - gi.WriteDir (up); - gi.WriteByte (SPLASH_BLUE_WATER); //we should allow spawnflags to change this - gi.multicast (ent->s.origin, MULTICAST_PVS); + if(self->classname == "alien powersrc") + { + tacticalScore.alienPowerSource = false; + tacticalScore.alienPowerSourceHealth = 0; + gi.WriteByte (TE_BFG_BIGEXPLOSION); + } + else + { + tacticalScore.humanPowerSource = false; + tacticalScore.humanPowerSourceHealth = 0; + gi.WriteByte (TE_ROCKET_EXPLOSION); + } + gi.WritePosition (self->s.origin); + gi.multicast (self->s.origin, MULTICAST_PHS); - ent->nextthink = level.time + 1.0; + if(self->classname == "alien powersrc") + { + for (i=0 ; ivalue ; i++) + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "Alien Power Source has been destroyed!"); + } + } + else + { + for (i=0 ; ivalue ; i++) + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "Human Power Source has been destroyed!"); + } + } + + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "world/explosion1.wav" ), 1, ATTN_NONE, 0 ); + + G_FreeEdict (self); } -void SP_misc_watersplash (edict_t *ent) +void SP_misc_alienpowersrc (edict_t *ent) { - gi.setmodel(ent, NULL); - ent->solid = SOLID_NOT; + if (!g_tactical->integer) + { + G_FreeEdict (ent); + return; + } + ent->movetype = MOVETYPE_NONE; - ent->takedamage = DAMAGE_NO; + ent->solid = SOLID_BBOX; + ent->takedamage = DAMAGE_YES; - ent->think = watersplash_think; - ent->nextthink = level.time + 0.5 + random(); + ent->s.modelindex = gi.modelindex ("models/tactical/alien_powersrc.iqm"); + + VectorSet (ent->mins, -64, -64, 0); + VectorSet (ent->maxs, 64, 64, 72); + ent->health = 1500; + ent->die = powersrc_die; + ent->think = powersrc_think; + ent->nextthink = level.time + FRAMETIME; + ent->classname = "alien powersrc"; gi.linkentity (ent); + M_droptofloor (ent); } -void misc_electroflash_think (edict_t *ent) +void SP_misc_humanpowersrc (edict_t *ent) { - gi.WriteByte (svc_muzzleflash); - gi.WriteShort (ent-g_edicts); - gi.WriteByte (MZ_RAILGUN); - gi.multicast (ent->s.origin, MULTICAST_PVS); + if (!g_tactical->integer) + { + G_FreeEdict (ent); + return; + } - ent->nextthink = level.time + 0.05 + random(); + ent->movetype = MOVETYPE_NONE; + ent->solid = SOLID_BBOX; + ent->takedamage = DAMAGE_YES; + + ent->s.modelindex = gi.modelindex ("models/tactical/human_powersrc.iqm"); + + VectorSet (ent->mins, -32, -32, 0); + VectorSet (ent->maxs, 32, 32, 72); + ent->health = 1500; + ent->die = powersrc_die; + ent->think = powersrc_think; + ent->nextthink = level.time + FRAMETIME; + ent->classname = "human powersrc"; + + gi.linkentity (ent); + M_droptofloor (ent); } -void SP_misc_electroflash (edict_t *ent) //random electrical pulses +//ammo depots +void ammodepot_think (edict_t *ent) { - gi.setmodel (ent, NULL); + if(ent->classname == "alien ammodepot") + tacticalScore.alienAmmoDepotHealth = ent->health/15; + else + tacticalScore.humanAmmoDepotHealth = ent->health/15; + ent->nextthink = level.time + FRAMETIME; +} + +void ammodepot_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +{ + edict_t *cl_ent; + int i; + + self->takedamage = DAMAGE_NO; + self->activator = attacker; + + gi.WriteByte (svc_temp_entity); + if(self->classname == "alien ammodepot") + { + tacticalScore.alienAmmoDepot = false; + tacticalScore.alienAmmoDepotHealth = 0; + gi.WriteByte (TE_BFG_BIGEXPLOSION); + } + else + { + tacticalScore.humanAmmoDepot = false; + tacticalScore.humanAmmoDepotHealth = 0; + gi.WriteByte (TE_ROCKET_EXPLOSION); + } + gi.WritePosition (self->s.origin); + gi.multicast (self->s.origin, MULTICAST_PHS); + + if(self->classname == "alien ammodepot") + { + for (i=0 ; ivalue ; i++) + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "Alien Ammo Depot has been destroyed!"); + } + } + else + { + for (i=0 ; ivalue ; i++) + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "Human Ammo Depot has been destroyed!"); + } + } + + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "world/explosion1.wav" ), 1, ATTN_NONE, 0 ); + + G_FreeEdict (self); +} + +void SP_misc_alienammodepot (edict_t *ent) +{ + if (!g_tactical->integer) + { + G_FreeEdict (ent); + return; + } - ent->solid = SOLID_NOT; ent->movetype = MOVETYPE_NONE; - ent->takedamage = DAMAGE_NO; - ent->s.sound = gi.soundindex("world/electricity.wav"); - ent->think = misc_electroflash_think; - ent->nextthink = level.time + 0.05 + random(); + ent->solid = SOLID_BBOX; + ent->takedamage = DAMAGE_YES; + + ent->s.modelindex = gi.modelindex ("models/tactical/ammopad.md2"); + + VectorSet (ent->mins, -32, -32, 0); + VectorSet (ent->maxs, 32, 32, 16); + ent->health = 1500; + ent->die = ammodepot_die; + ent->think = ammodepot_think; + ent->nextthink = level.time + FRAMETIME; + ent->classname = "alien ammodepot"; + + gi.linkentity (ent); + M_droptofloor (ent); +} + +void SP_misc_humanammodepot (edict_t *ent) +{ + if (!g_tactical->integer) + { + G_FreeEdict (ent); + return; + } + + ent->movetype = MOVETYPE_NONE; + ent->solid = SOLID_BBOX; + ent->takedamage = DAMAGE_YES; + + ent->s.modelindex = gi.modelindex ("maps/meshes/flagpad.md2"); + + VectorSet (ent->mins, -32, -32, 0); + VectorSet (ent->maxs, 32, 32, 16); + ent->health = 1500; + ent->die = ammodepot_die; + ent->think = ammodepot_think; + ent->nextthink = level.time + FRAMETIME; + ent->classname = "human ammodepot"; gi.linkentity (ent); -} \ No newline at end of file + M_droptofloor (ent); +} + +//Backup generators +void backupgen_think (edict_t *ent) +{ + if(ent->classname == "alien backupgen") + { + if(!tacticalScore.alienPowerSource) + { + //animate + ent->s.frame = (ent->s.frame + 1) % 24; + gi.sound (ent, CHAN_AUTO, gi.soundindex("misc/reject.wav"), 1, ATTN_STATIC, 0); + } + } + else + { + if(!tacticalScore.humanPowerSource) + { + ent->s.frame = (ent->s.frame + 1) % 24; + gi.sound (ent, CHAN_AUTO, gi.soundindex("misc/reject.wav"), 1, ATTN_STATIC, 0); + } + } + ent->nextthink = level.time + FRAMETIME; +} + +void backupgen_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +{ + edict_t *cl_ent; + int i; + + self->takedamage = DAMAGE_NO; + self->activator = attacker; + + gi.WriteByte (svc_temp_entity); + if(self->classname == "alien backupgen") + { + tacticalScore.alienBackupGen = false; + gi.WriteByte (TE_BFG_BIGEXPLOSION); + } + else + { + tacticalScore.humanBackupGen = false; + gi.WriteByte (TE_ROCKET_EXPLOSION); + } + gi.WritePosition (self->s.origin); + gi.multicast (self->s.origin, MULTICAST_PHS); + + if(self->classname == "alien backupgen") + { + for (i=0 ; ivalue ; i++) + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "Alien Backup Generator has been destroyed!"); + } + } + else + { + for (i=0 ; ivalue ; i++) + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "Human Backup Generator has been destroyed!"); + } + } + + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "world/explosion1.wav" ), 1, ATTN_NONE, 0 ); + + G_FreeEdict (self); +} + +void SP_misc_alienbackupgen (edict_t *ent) +{ + if (!g_tactical->integer) + { + G_FreeEdict (ent); + return; + } + + ent->movetype = MOVETYPE_NONE; + ent->solid = SOLID_BBOX; + ent->takedamage = DAMAGE_YES; + + ent->s.modelindex = gi.modelindex ("models/tactical/alien_backupgen.iqm"); + + VectorSet (ent->mins, -24, -24, 0); + VectorSet (ent->maxs, 24, 24, 48); + ent->health = 300; + ent->die = backupgen_die; + ent->think = backupgen_think; + ent->nextthink = level.time + FRAMETIME; + ent->classname = "alien backupgen"; + + gi.linkentity (ent); + M_droptofloor (ent); +} + +void SP_misc_humanbackupgen (edict_t *ent) +{ + if (!g_tactical->integer) + { + G_FreeEdict (ent); + return; + } + + ent->movetype = MOVETYPE_NONE; + ent->solid = SOLID_BBOX; + ent->takedamage = DAMAGE_YES; + + ent->s.modelindex = gi.modelindex ("models/tactical/human_backupgen.iqm"); + + VectorSet (ent->mins, -24, -24, 0); + VectorSet (ent->maxs, 24, 24, 48); + ent->health = 300; + ent->die = backupgen_die; + ent->think = backupgen_think; + ent->nextthink = level.time + FRAMETIME; + ent->classname = "human backupgen"; + + gi.linkentity (ent); + M_droptofloor (ent); +} diff -Nru alien-arena-7.53+dfsg/source/game/g_monster.c alien-arena-7.66+dfsg/source/game/g_monster.c --- alien-arena-7.53+dfsg/source/game/g_monster.c 2010-08-21 05:39:08.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_monster.c 2013-06-22 20:07:36.000000000 +0000 @@ -427,7 +427,6 @@ self->nextthink = level.time + FRAMETIME; self->svflags |= SVF_MONSTER; - self->s.renderfx |= RF_FRAMELERP; self->takedamage = DAMAGE_AIM; self->air_finished = level.time + 12; self->use = monster_use; diff -Nru alien-arena-7.53+dfsg/source/game/g_phys.c alien-arena-7.66+dfsg/source/game/g_phys.c --- alien-arena-7.53+dfsg/source/game/g_phys.c 2010-08-19 23:55:34.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_phys.c 2013-06-22 20:07:36.000000000 +0000 @@ -82,7 +82,7 @@ // for (i=0 ; i<3 ; i++) { - if (ent->velocity[i] > sv_maxvelocity->value) + if (ent->velocity[i] > sv_maxvelocity->value) ent->velocity[i] = sv_maxvelocity->value; else if (ent->velocity[i] < -sv_maxvelocity->value) ent->velocity[i] = -sv_maxvelocity->value; @@ -191,7 +191,7 @@ ============ */ #define MAX_CLIP_PLANES 5 -int SV_FlyMove (edict_t *ent, float time, int mask) +int SV_FlyMove (edict_t *ent, float timespan, int mask) { edict_t *hit; int bumpcount, numbumps; @@ -213,7 +213,7 @@ VectorCopy (ent->velocity, primal_velocity); numplanes = 0; - time_left = time; + time_left = timespan; ent->groundentity = NULL; for (bumpcount=0 ; bumpcountvelocity[2] -= ent->gravity * sv_gravity->value * FRAMETIME; + ent->velocity[2] -= ent->gravity * sv_gravity->value * timespan; } /* @@ -576,7 +576,7 @@ push all box objects ================ */ -void SV_Physics_Pusher (edict_t *ent) +void SV_Physics_Pusher (edict_t *ent, float timespan) { vec3_t move, amove; edict_t *part, *mv; @@ -596,8 +596,8 @@ part->avelocity[0] || part->avelocity[1] || part->avelocity[2] ) { // object is moving - VectorScale (part->velocity, FRAMETIME, move); - VectorScale (part->avelocity, FRAMETIME, amove); + VectorScale (part->velocity, timespan, move); + VectorScale (part->avelocity, timespan, amove); if (!SV_Push (part, move, amove)) break; // move was blocked @@ -612,7 +612,7 @@ for (mv = ent ; mv ; mv=mv->teamchain) { if (mv->nextthink > 0) - mv->nextthink += FRAMETIME; + mv->nextthink += timespan; } // if the pusher has a "blocked" function, call it @@ -657,14 +657,14 @@ A moving object that doesn't obey physics ============= */ -void SV_Physics_Noclip (edict_t *ent) +void SV_Physics_Noclip (edict_t *ent, float timespan) { // regular thinking if (!SV_RunThink (ent)) return; - VectorMA (ent->s.angles, FRAMETIME, ent->avelocity, ent->s.angles); - VectorMA (ent->s.origin, FRAMETIME, ent->velocity, ent->s.origin); + VectorMA (ent->s.angles, timespan, ent->avelocity, ent->s.angles); + VectorMA (ent->s.origin, timespan, ent->velocity, ent->s.origin); gi.linkentity (ent); } @@ -684,7 +684,7 @@ Toss, bounce, and fly movement. When onground, do nothing. ============= */ -void SV_Physics_Toss (edict_t *ent) +void SV_Physics_Toss (edict_t *ent, float timespan) { trace_t trace; vec3_t move; @@ -720,13 +720,13 @@ // add gravity if (ent->movetype != MOVETYPE_FLY && ent->movetype != MOVETYPE_FLYMISSILE) - SV_AddGravity (ent); + SV_AddGravity (ent, timespan); // move angles - VectorMA (ent->s.angles, FRAMETIME, ent->avelocity, ent->s.angles); + VectorMA (ent->s.angles, timespan, ent->avelocity, ent->s.angles); // move origin - VectorScale (ent->velocity, FRAMETIME, move); + VectorScale (ent->velocity, timespan, move); trace = SV_PushEntity (ent, move); if (!ent->inuse) return; @@ -800,13 +800,13 @@ #define sv_friction 6 #define sv_waterfriction 1 -void SV_AddRotationalFriction (edict_t *ent) +void SV_AddRotationalFriction (edict_t *ent, float timespan) { int n; float adjustment; - VectorMA (ent->s.angles, FRAMETIME, ent->avelocity, ent->s.angles); - adjustment = FRAMETIME * sv_stopspeed * sv_friction; + VectorMA (ent->s.angles, timespan, ent->avelocity, ent->s.angles); + adjustment = timespan * sv_stopspeed * sv_friction; for (n = 0; n < 3; n++) { if (ent->avelocity[n] > 0) @@ -824,7 +824,7 @@ } } -void SV_Physics_Step (edict_t *ent) +void SV_Physics_Step (edict_t *ent, float timespan) { qboolean wasonground; qboolean hitsound = false; @@ -848,7 +848,7 @@ wasonground = false; if (ent->avelocity[0] || ent->avelocity[1] || ent->avelocity[2]) - SV_AddRotationalFriction (ent); + SV_AddRotationalFriction (ent, timespan); // add gravity except: // flying monsters @@ -860,7 +860,7 @@ if (ent->velocity[2] < sv_gravity->value*-0.1) hitsound = true; if (ent->waterlevel == 0) - SV_AddGravity (ent); + SV_AddGravity (ent, timespan); } // friction for flying monsters that have been given vertical velocity @@ -869,7 +869,7 @@ speed = fabs(ent->velocity[2]); control = speed < sv_stopspeed ? sv_stopspeed : speed; friction = sv_friction/3; - newspeed = speed - (FRAMETIME * control * friction); + newspeed = speed - (timespan * control * friction); if (newspeed < 0) newspeed = 0; newspeed /= speed; @@ -881,7 +881,7 @@ { speed = fabs(ent->velocity[2]); control = speed < sv_stopspeed ? sv_stopspeed : speed; - newspeed = speed - (FRAMETIME * control * sv_waterfriction * ent->waterlevel); + newspeed = speed - (timespan * control * sv_waterfriction * ent->waterlevel); if (newspeed < 0) newspeed = 0; newspeed /= speed; @@ -902,7 +902,7 @@ friction = sv_friction; control = speed < sv_stopspeed ? sv_stopspeed : speed; - newspeed = speed - FRAMETIME*control*friction; + newspeed = speed - timespan*control*friction; if (newspeed < 0) newspeed = 0; @@ -917,7 +917,7 @@ mask = MASK_MONSTERSOLID; else mask = MASK_SOLID; - SV_FlyMove (ent, FRAMETIME, mask); + SV_FlyMove (ent, timespan, mask); gi.linkentity (ent); G_TouchTriggers (ent); @@ -936,7 +936,7 @@ ================ */ -void G_RunEntity (edict_t *ent) +void G_RunEntity (edict_t *ent, float timespan) { if (ent->prethink) ent->prethink (ent); @@ -950,22 +950,22 @@ // ACEBOT_END case MOVETYPE_PUSH: case MOVETYPE_STOP: - SV_Physics_Pusher (ent); + SV_Physics_Pusher (ent, timespan); break; case MOVETYPE_NONE: SV_Physics_None (ent); break; case MOVETYPE_NOCLIP: - SV_Physics_Noclip (ent); + SV_Physics_Noclip (ent, timespan); break; case MOVETYPE_STEP: - SV_Physics_Step (ent); + SV_Physics_Step (ent, timespan); break; case MOVETYPE_TOSS: case MOVETYPE_BOUNCE: case MOVETYPE_FLY: case MOVETYPE_FLYMISSILE: - SV_Physics_Toss (ent); + SV_Physics_Toss (ent, timespan); break; default: gi.error ("SV_Physics: bad movetype %i", (int)ent->movetype); diff -Nru alien-arena-7.53+dfsg/source/game/g_save.c alien-arena-7.66+dfsg/source/game/g_save.c --- alien-arena-7.53+dfsg/source/game/g_save.c 2011-12-03 02:12:20.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_save.c 2013-06-22 20:07:36.000000000 +0000 @@ -28,6 +28,8 @@ int red_team_score; int blue_team_score; +int red_team_matches; //for tca +int blue_team_matches; //for tca int reddiff; int bluediff; int redwinning; @@ -179,71 +181,86 @@ g_dedicated = gi.cvar ("dedicated", "0", CVAR_NOSET); // latched vars - sv_cheats = gi.cvar ("cheats", "0", CVAR_SERVERINFO|CVAR_LATCH); + sv_cheats = gi.cvar ("cheats", "0", CVAR_SERVERINFO | CVAR_LATCH); gi.cvar ("gamename", GAMEVERSION , CVAR_SERVERINFO | CVAR_LATCH); gi.cvar ("gamedate", __DATE__ , CVAR_SERVERINFO | CVAR_LATCH); - g_maxclients = gi.cvar ("maxclients", "4", CVAR_SERVERINFO | CVAR_LATCH); - maxspectators = gi.cvar ("maxspectators", "4", CVAR_SERVERINFO); - deathmatch = gi.cvar ("deathmatch", "0", CVAR_LATCH); - ctf = gi.cvar ("ctf", "0", CVAR_LATCH|CVAR_GAMEINFO); - tca = gi.cvar ("tca", "0", CVAR_LATCH|CVAR_GAMEINFO); - cp = gi.cvar ("cp", "0", CVAR_LATCH|CVAR_GAMEINFO); - skill = gi.cvar ("skill", "1", CVAR_LATCH); - maxentities = gi.cvar ("maxentities", "1024", CVAR_LATCH); - sv_botkickthreshold = gi.cvar("sv_botkickthreshold", "0", CVAR_LATCH); - sv_custombots = gi.cvar("sv_custombots", "0", CVAR_LATCH); + g_maxclients = gi.cvar ("maxclients", "1", CVAR_SERVERINFO | CVAR_LATCH | CVARDOC_INT); + maxspectators = gi.cvar ("maxspectators", "4", CVAR_SERVERINFO | CVARDOC_INT); + deathmatch = gi.cvar ("deathmatch", "0", CVAR_LATCH | CVARDOC_BOOL); + ctf = gi.cvar ("ctf", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + tca = gi.cvar ("tca", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + cp = gi.cvar ("cp", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + skill = gi.cvar ("skill", "1", CVAR_LATCH | CVARDOC_INT); + maxentities = gi.cvar ("maxentities", "1024", CVAR_LATCH | CVARDOC_INT); + sv_botkickthreshold = gi.cvar("sv_botkickthreshold", "0", CVAR_LATCH | CVARDOC_INT); + sv_custombots = gi.cvar("sv_custombots", "0", CVAR_LATCH | CVARDOC_INT); + gi.cvar_describe (sv_custombots, "0 uses default botfile. Any other value selects a botfile of the form botinfo/custom.tmp."); //mutator - instagib = gi.cvar ("instagib", "0", CVAR_LATCH|CVAR_GAMEINFO); - rocket_arena = gi.cvar ("rocket_arena", "0", CVAR_LATCH|CVAR_GAMEINFO); - insta_rockets = gi.cvar ("insta_rockets", "0", CVAR_LATCH|CVAR_GAMEINFO); - low_grav = gi.cvar ("low_grav", "0", CVAR_LATCH|CVAR_GAMEINFO); - regeneration = gi.cvar ("regeneration", "0", CVAR_LATCH|CVAR_GAMEINFO); - vampire = gi.cvar ("vampire", "0", CVAR_LATCH|CVAR_GAMEINFO); - excessive = gi.cvar ("excessive", "0", CVAR_LATCH|CVAR_GAMEINFO); - grapple = gi.cvar ("grapple", "0", CVAR_LATCH|CVAR_GAMEINFO); - classbased = gi.cvar ("classbased", "0", CVAR_LATCH|CVAR_GAMEINFO); + instagib = gi.cvar ("instagib", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + rocket_arena = gi.cvar ("rocket_arena", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + insta_rockets = gi.cvar ("insta_rockets", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + low_grav = gi.cvar ("low_grav", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + regeneration = gi.cvar ("regeneration", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + vampire = gi.cvar ("vampire", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + excessive = gi.cvar ("excessive", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + grapple = gi.cvar ("grapple", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + classbased = gi.cvar ("classbased", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); //duel mode - g_duel = gi.cvar ("g_duel", "0", CVAR_LATCH|CVAR_GAMEINFO); + g_duel = gi.cvar ("g_duel", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); - g_losehealth = gi.cvar ("g_losehealth", "1", CVAR_LATCH); - g_losehealth_num = gi.cvar ("g_losehealth_num", "100", CVAR_LATCH); + //tactical mode + g_tactical = gi.cvar ("g_tactical", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + + g_losehealth = gi.cvar ("g_losehealth", "1", CVAR_LATCH | CVARDOC_BOOL); + g_losehealth_num = gi.cvar ("g_losehealth_num", "100", CVAR_LATCH | CVARDOC_INT); //weapons - wep_selfdmgmulti = gi.cvar("wep_selfdmgmulti", "1.0", 0); + wep_selfdmgmulti = gi.cvar("wep_selfdmgmulti", "1.0", CVARDOC_FLOAT); //health/max health/max ammo - g_spawnhealth = gi.cvar("g_spawnhealth", "125", 0); - g_maxhealth = gi.cvar("g_maxhealth", "100", 0); - g_maxbullets = gi.cvar("g_maxbullets", "200", 0); - g_maxshells = gi.cvar("g_maxshells", "100", 0); - g_maxrockets = gi.cvar("g_maxrockets", "50", 0); - g_maxgrenades = gi.cvar("g_maxgrenades", "50", 0); - g_maxcells = gi.cvar("g_maxcells", "200", 0); - g_maxslugs = gi.cvar("g_maxslugs", "50", 0); + g_spawnhealth = gi.cvar("g_spawnhealth", "125", CVARDOC_INT); + g_maxhealth = gi.cvar("g_maxhealth", "100", CVARDOC_INT); + g_maxbullets = gi.cvar("g_maxbullets", "200", CVARDOC_INT); + g_maxshells = gi.cvar("g_maxshells", "100", CVARDOC_INT); + g_maxrockets = gi.cvar("g_maxrockets", "50", CVARDOC_INT); + g_maxgrenades = gi.cvar("g_maxgrenades", "50", CVARDOC_INT); + g_maxcells = gi.cvar("g_maxcells", "200", CVARDOC_INT); + g_maxslugs = gi.cvar("g_maxslugs", "50", CVARDOC_INT); + g_maxseekers = gi.cvar("g_maxseekers", "1", CVARDOC_INT); + g_maxbombs = gi.cvar("g_maxbombs", "1", CVARDOC_INT); //quick weapon change - quickweap = gi.cvar ("quickweap", "0", CVAR_LATCH|CVAR_GAMEINFO); + quickweap = gi.cvar ("quickweap", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_INT); + gi.cvar_describe (quickweap, "fast weapon switching."); //anti-camp - anticamp = gi.cvar("anticamp", "0", CVAR_LATCH|CVAR_GAMEINFO); - camptime = gi.cvar("camptime", "10", CVAR_LATCH); - ac_frames = gi.cvar("ac_frames", "0", CVAR_LATCH); - ac_threshold = gi.cvar("ac_threshold", "0", CVAR_LATCH); + anticamp = gi.cvar("anticamp", "0", CVAR_LATCH | CVAR_GAMEINFO | CVARDOC_BOOL); + camptime = gi.cvar("camptime", "10", CVAR_LATCH | CVARDOC_INT); + ac_frames = gi.cvar("ac_frames", "0", CVAR_LATCH | CVARDOC_INT); + ac_threshold = gi.cvar("ac_threshold", "0", CVAR_LATCH | CVARDOC_INT); //random quad - g_randomquad = gi.cvar("g_randomquad", "0", CVAR_LATCH); + g_randomquad = gi.cvar("g_randomquad", "0", CVAR_LATCH | CVARDOC_BOOL); //warmup time - warmuptime = gi.cvar("warmuptime", "30", CVAR_LATCH); + if (g_maxclients->integer > 1) + warmuptime = gi.cvar("warmuptime", "30", CVAR_LATCH | CVARDOC_INT); + else + // You can override this default if you want to, but a default of 0 is + // nice if you're just loading a map to test code or to test the map + // itself, over and over again. + warmuptime = gi.cvar("warmuptime", "0", CVAR_LATCH | CVARDOC_INT); //spawn protection - g_spawnprotect = gi.cvar("g_spawnprotect", "2", CVAR_SERVERINFO); + g_spawnprotect = gi.cvar("g_spawnprotect", "2", CVAR_SERVERINFO | CVARDOC_INT); + gi.cvar_describe (g_spawnprotect, "number of seconds of spawn protection."); //joust mode - joustmode = gi.cvar("sv_joustmode", "0", CVAR_SERVERINFO|CVAR_GAMEINFO); + joustmode = gi.cvar("sv_joustmode", "0", CVAR_SERVERINFO | CVAR_GAMEINFO | CVARDOC_BOOL); + gi.cvar_describe (joustmode, "players can jump in midair."); //map voting g_mapvote = gi.cvar("g_mapvote", "0", CVAR_SERVERINFO); @@ -252,7 +269,7 @@ g_votesame = gi.cvar("g_votesame", "1", 0); //call voting - g_callvote = gi.cvar("g_callvote", "1", CVAR_SERVERINFO); //change after testing + g_callvote = gi.cvar("g_callvote", "1", CVAR_SERVERINFO | CVARDOC_BOOL); //change after testing //forced autobalanced teams g_autobalance = gi.cvar("g_autobalance", "0", 0); @@ -261,7 +278,8 @@ g_reward = gi.cvar("g_reward", "20", CVAR_SERVERINFO); //antilag - g_antilag = gi.cvar("g_antilag", "1", CVAR_SERVERINFO); + g_antilag = gi.cvar("g_antilag", "1", CVAR_SERVERINFO | CVARDOC_BOOL); + g_antilagprojectiles = gi.cvar ("g_antilagprojectiles", "0", CVAR_GAMEINFO | CVARDOC_BOOL); g_antilagdebug = gi.cvar("g_antilagdebug", "0", 0 /*CVAR_SERVERINFO*/); // change anytime vars @@ -277,7 +295,7 @@ g_select_empty = gi.cvar ("g_select_empty", "0", CVAR_ARCHIVE); - g_dmlights = gi.cvar ("g_dm_lights", "0", CVAR_ARCHIVE|CVAR_GAMEINFO); + g_dmlights = gi.cvar ("g_dm_lights", "0", CVAR_ARCHIVE | CVAR_GAMEINFO); run_pitch = gi.cvar ("run_pitch", "0.002", 0); run_roll = gi.cvar ("run_roll", "0.005", 0); @@ -302,7 +320,7 @@ InitItems (); //set this if you're running experimental code on your server - gi.cvar("testcode", "0", CVAR_GAMEINFO|CVAR_ROM); + gi.cvar("testcode", "0", CVAR_GAMEINFO | CVAR_ROM); //set this in your config if you're testing an unfinished map gi.cvar("testmap", "0", CVAR_GAMEINFO); @@ -311,25 +329,52 @@ Com_sprintf (game.helpmessage2, sizeof(game.helpmessage2), ""); // initialize all entities for this game - game.maxentities = maxentities->value; + game.maxentities = maxentities->integer; g_edicts = gi.TagMalloc (game.maxentities * sizeof(g_edicts[0]), TAG_GAME); globals.edicts = g_edicts; globals.max_edicts = game.maxentities; // initialize all clients for this game - game.maxclients = g_maxclients->value; + game.maxclients = g_maxclients->integer; game.clients = gi.TagMalloc (game.maxclients * sizeof(game.clients[0]), TAG_GAME); globals.num_edicts = game.maxclients+1; //clear out team scores and player counts - if(tca->value) { - blue_team_score = 4; - red_team_score = 4; + if(tca->integer) + { + blue_team_score = red_team_score = 4; + blue_team_matches = red_team_matches = 0; } - else { + else + { red_team_score = 0; blue_team_score = 0; } + + if(g_tactical->integer) + { + tacticalScore.alienAmmoDepot = + tacticalScore.alienComputer = + tacticalScore.alienPowerSource = + tacticalScore.alienBackupGen = + tacticalScore.humanAmmoDepot = + tacticalScore.humanComputer = + tacticalScore.humanPowerSource = + tacticalScore.humanBackupGen = + true; + + tacticalScore.alienAmmoDepotHealth = + tacticalScore.alienComputerHealth = + tacticalScore.alienPowerSourceHealth = + tacticalScore.humanAmmoDepotHealth = + tacticalScore.humanComputerHealth = + tacticalScore.humanPowerSourceHealth = + 100; + } + + //reset minderaser + mindEraserTime = level.time; + print1 = print2 = print3 = false; } diff -Nru alien-arena-7.53+dfsg/source/game/g_spawn.c alien-arena-7.66+dfsg/source/game/g_spawn.c --- alien-arena-7.53+dfsg/source/game/g_spawn.c 2011-11-07 01:25:04.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_spawn.c 2013-06-22 20:07:36.000000000 +0000 @@ -30,88 +30,6 @@ void (*spawn)(edict_t *ent); } spawn_t; - -void SP_item_health (edict_t *self); -void SP_item_health_small (edict_t *self); -void SP_item_health_large (edict_t *self); -void SP_item_health_mega (edict_t *self); - -void SP_info_player_start (edict_t *ent); -void SP_info_player_deathmatch (edict_t *ent); -void SP_info_player_intermission (edict_t *ent); -void SP_info_player_red (edict_t *ent); -void SP_info_player_blue(edict_t *ent); - -void SP_func_plat (edict_t *ent); -void SP_func_rotating (edict_t *ent); -void SP_func_button (edict_t *ent); -void SP_func_door (edict_t *ent); -void SP_func_door_secret (edict_t *ent); -void SP_func_door_rotating (edict_t *ent); -void SP_func_water (edict_t *ent); -void SP_func_train (edict_t *ent); -void SP_func_conveyor (edict_t *self); -void SP_func_wall (edict_t *self); -void SP_func_object (edict_t *self); -void SP_func_explosive (edict_t *self); -void SP_func_timer (edict_t *self); -void SP_func_areaportal (edict_t *ent); -void SP_func_killbox (edict_t *ent); - -void SP_trigger_always (edict_t *ent); -void SP_trigger_once (edict_t *ent); -void SP_trigger_multiple (edict_t *ent); -void SP_trigger_relay (edict_t *ent); -void SP_trigger_push (edict_t *ent); -void SP_trigger_hurt (edict_t *ent); -void SP_trigger_key (edict_t *ent); -void SP_trigger_counter (edict_t *ent); -void SP_trigger_elevator (edict_t *ent); -void SP_trigger_gravity (edict_t *ent); -void SP_trigger_monsterjump (edict_t *ent); -void SP_trigger_deathballtarget (edict_t *ent); -void SP_trigger_reddeathballtarget (edict_t *ent); -void SP_trigger_bluedeathballtarget (edict_t *ent); -void SP_trigger_redcowtarget ( edict_t *ent); -void SP_trigger_bluecowtarget (edict_t *ent); - -void SP_target_temp_entity (edict_t *ent); -void SP_target_speaker (edict_t *ent); -void SP_target_explosion (edict_t *ent); -void SP_target_secret (edict_t *ent); -void SP_target_splash (edict_t *ent); -void SP_target_steam (edict_t *ent); -void SP_target_spawner (edict_t *ent); -void SP_target_blaster (edict_t *ent); -void SP_target_laser (edict_t *self); -void SP_target_lightramp (edict_t *self); -void SP_target_earthquake (edict_t *ent); -void SP_target_fire (edict_t *ent); -void SP_target_changelevel (edict_t *ent); - -void SP_worldspawn (edict_t *ent); - -void SP_light (edict_t *self); -void SP_info_null (edict_t *self); -void SP_info_notnull (edict_t *self); -void SP_path_corner (edict_t *self); -void SP_point_combat (edict_t *self); - -void SP_misc_teleporter (edict_t *self); -void SP_misc_teleporter_dest (edict_t *self); - -void SP_npc_cow (edict_t *self); -void SP_npc_deathray(edict_t *self); - -void SP_misc_spiderpod (edict_t *self); -void SP_misc_rednode (edict_t *self); -void SP_misc_bluenode (edict_t *self); -void SP_misc_bluespidernode (edict_t *self); -void SP_misc_redspidernode (edict_t *self); -void SP_misc_mapmodel (edict_t *self); -void SP_misc_watersplash (edict_t *ent); -void SP_misc_electroflash (edict_t *ent); - spawn_t spawns[] = { {"item_health", SP_item_health}, {"item_health_small", SP_item_health_small}, @@ -164,8 +82,10 @@ {"target_splash", SP_target_splash}, {"target_steam", SP_target_steam}, {"target_spawner", SP_target_spawner}, +#ifndef ALTERIA {"target_blaster", SP_target_blaster}, {"target_laser", SP_target_laser}, +#endif {"target_lightramp", SP_target_lightramp}, {"target_earthquake", SP_target_earthquake}, {"target_fire", SP_target_fire}, @@ -186,11 +106,25 @@ {"npc_cow", SP_npc_cow}, {"npc_deathray", SP_npc_deathray}, + //TCA {"misc_spiderpod", SP_misc_spiderpod}, {"misc_rednode", SP_misc_rednode}, {"misc_bluenode", SP_misc_bluenode}, {"misc_redspidernode", SP_misc_redspidernode}, {"misc_bluespidernode", SP_misc_bluespidernode}, + + //Tactical + {"misc_aliencomputer", SP_misc_aliencomputer}, + {"misc_humancomputer", SP_misc_humancomputer}, + {"misc_alienpowersrc", SP_misc_alienpowersrc}, + {"misc_humanpowersrc", SP_misc_humanpowersrc}, + {"misc_alienammodepot", SP_misc_alienammodepot}, + {"misc_humanammodepot", SP_misc_humanammodepot}, + {"misc_alienbackupgen", SP_misc_alienbackupgen}, + {"misc_humanbackupgen", SP_misc_humanbackupgen}, + {"misc_deathray", SP_misc_deathray}, //note - spawnflags determine team for this item(1 for human) + {"misc_laser", SP_misc_laser}, //spawnflag 1 for human + {"misc_mapmodel", SP_misc_mapmodel}, {"misc_watersplash", SP_misc_watersplash}, {"misc_electroflash", SP_misc_electroflash}, @@ -227,6 +161,8 @@ ent->classname = "weapon_rocketlauncher"; //hack to remove old weapons if(!Q_strcasecmp(ent->classname, "weapon_machinegun")) ent->classname = "weapon_bfg"; //hack to remove old weapons + if(!Q_strcasecmp(ent->classname, "weapon_minderaser")) + continue; //never place one of these traditionally if (!strcmp(item->classname, ent->classname)) { // found it @@ -460,6 +396,7 @@ parsing textual entity definitions out of an ent file. ============== */ +int levelnum; void SpawnEntities (char *mapname, char *entities, char *spawnpoint) { edict_t *ent; @@ -491,6 +428,7 @@ ent = NULL; inhibit = 0; + levelnum++; // parse ents while (1) @@ -546,6 +484,9 @@ gi.dprintf ("%i entities inhibited\n", inhibit); + //reset minderaser + mindEraserTime = level.time; + ACEND_InitNodes(); ACEND_LoadNodes(); @@ -777,6 +718,196 @@ "pic 31 " "endif " ; + +char *tca_statusbar = +// background +"yb -256 " +"xl 0 " +"pic 0 " +"xr -130 " +"yt 2 " +"pic 18 " + +// health +"yb -29 " +"xl 11 " +"hnum " + +// ammo +"if 2 " +" xl 76 " +" anum " +"endif " + +// armor +" xl 142 " +" rnum " + +// timer +"if 9 " +" xv 324 " +" yb -24 " +" num 2 10 " +" xv 358 " +" yb -32 " +" pic 9 " +"endif " + +// weapon icon +"if 11 " +" xr -72 " +" yt 196 " +" pic 11 " +"endif " + +// frags +"xr -67 " +"yt 16 " +"num 3 14" + +// deaths +"xr -67 " +"yt 48 " +"num 3 19 " + +// high scorer +"yt 80 " +"num 3 20 " + +// red team +"yt 132 " +"num 1 6 " +"xr -27 " +"num 1 21 " +// blue team +"yt 166 " +"num 1 22 " +"xr -67 " +"num 1 7 " +// red label +"yt 124 " +"xr -30 " +"string nodes " +"xr -70 " +"string matches " +// blue label +"yt 158 " +"xr -30 " +"string nodes " +"xr -70 " +"string matches " + +// flag +" xv 128 " +" yb -64 " +" pic 23 " + +// weapon stats +"if 25 " +"xr -72 " +"yt 227 " +"pic 25 " +"endif" + +"if 26 " +"yt 258 " +"pic 26 " +"endif " + +"if 27 " +"yt 289 " +"pic 27 " +"endif " + +"if 28 " +"yt 320 " +"pic 28 " +"endif " + +"if 29 " +"yt 351 " +"pic 29 " +"endif " + +"if 30 " +"yt 382 " +"pic 30 " +"endif " + +"if 31 " +"yt 413 " +"pic 31 " +"endif " +; + +char *tactical_statusbar = +// background +"yb -256 " +"xl 0 " +"pic 0 " +"xr -130 " +"yt 2 " +"pic 8 " + +// health +"yb -29 " +"xl 11 " +"hnum " + +// ammo +"if 2 " +" xl 76 " +" anum " +"endif " + +// armor +" xl 142 " +" rnum " + +// Human Computer +"xr -67 " +"yt 16 " +"num 3 25 " + +// Human Power +"yt 48 " +"num 3 26 " + +// Human Ammo Depot +"yt 80 " +"num 3 27 " + +// Alien Computer +"yt 122 " +"num 3 28 " + +// Alien Power +"yt 154 " +"num 3 29 " + +// Alien Ammo Depot +"yt 186 " +"num 3 30 " + +// timer +"if 9 " +" xv 324 " +" yb -24 " +" num 2 10 " +" xv 358 " +" yb -32 " +" pic 9 " +"endif " + +// weapon icon +"if 11 " +" xr -72 " +" yt 196 " +" pic 11 " +"endif " + + +; /*QUAKED worldspawn (0 0 0) ? Only used for the world. @@ -828,12 +959,16 @@ gi.configstring (CS_MAXCLIENTS, va("%i", g_maxclients->integer ) ); // status bar program - if ((dmflags->integer & DF_SKINTEAMS) || ctf->value || tca->value || cp->value) + if ((dmflags->integer & DF_SKINTEAMS) || ctf->integer || cp->integer) { gi.configstring (CS_STATUSBAR, team_statusbar); if(ctf->value) CTFPrecache(); } + else if (tca->integer) + gi.configstring (CS_STATUSBAR, tca_statusbar); + else if (g_tactical->integer) + gi.configstring (CS_STATUSBAR, tactical_statusbar); else gi.configstring (CS_STATUSBAR, dm_statusbar); @@ -911,6 +1046,7 @@ gi.soundindex ("misc/godlike.wav"); gi.soundindex ("misc/rampage.wav"); gi.soundindex ("misc/fight.wav"); + gi.soundindex ("misc/minderaser.wav"); //if maxclients is 0 or 1, it means someone is probably just testing a map //or testing some code, so we really don't need to precache all this crap @@ -958,6 +1094,18 @@ gi.soundindex ("taunts/martiancyborg/taunt4.wav"); gi.soundindex ("taunts/martiancyborg/taunt5.wav"); + gi.soundindex ("taunts/martianoverlord/taunt1.wav"); + gi.soundindex ("taunts/martianoverlord/taunt2.wav"); + gi.soundindex ("taunts/martianoverlord/taunt3.wav"); + gi.soundindex ("taunts/martianoverlord/taunt4.wav"); + gi.soundindex ("taunts/martianoverlord/taunt5.wav"); + + gi.soundindex ("taunts/martianwarrior/taunt1.wav"); + gi.soundindex ("taunts/martianwarrior/taunt2.wav"); + gi.soundindex ("taunts/martianwarrior/taunt3.wav"); + gi.soundindex ("taunts/martianwarrior/taunt4.wav"); + gi.soundindex ("taunts/martianwarrior/taunt5.wav"); + //precache any gibs sm_meat_index = gi.modelindex ("models/objects/gibs/sm_meat/tris.md2"); gi.modelindex ("models/objects/gibs/mart_gut/tris.md2"); @@ -968,6 +1116,8 @@ //this should be here for the cases of 7.45 clients and older gi.modelindex ("players/martianenforcer/tris.md2"); gi.modelindex ("players/martiancyborg/tris.md2"); + gi.modelindex ("players/martianoverlord/tris.md2"); + gi.modelindex ("players/martianwarrior/tris.md2"); gi.modelindex ("players/enforcer/tris.md2"); gi.modelindex ("players/lauren/tris.md2"); gi.modelindex ("players/slashbot/tris.md2"); @@ -985,6 +1135,7 @@ gi.modelindex ("players/martianenforcer/w_railgun.md2"); gi.modelindex ("players/martianenforcer/w_bfg.md2"); gi.modelindex ("players/martianenforcer/w_violator.md2"); + gi.modelindex ("players/martianenforcer/w_minderaser.md2"); gi.modelindex ("players/martiancyborg/weapon.md2"); gi.modelindex ("players/martiancyborg/w_blaster.md2"); @@ -997,6 +1148,7 @@ gi.modelindex ("players/martiancyborg/w_railgun.md2"); gi.modelindex ("players/martiancyborg/w_bfg.md2"); gi.modelindex ("players/martiancyborg/w_violator.md2"); + gi.modelindex ("players/martiancyborg/w_minderaser.md2"); gi.modelindex ("players/enforcer/weapon.md2"); gi.modelindex ("players/enforcer/w_blaster.md2"); @@ -1009,6 +1161,7 @@ gi.modelindex ("players/enforcer/w_railgun.md2"); gi.modelindex ("players/enforcer/w_bfg.md2"); gi.modelindex ("players/enforcer/w_violator.md2"); + gi.modelindex ("players/enforcer/w_minderaser.md2"); gi.modelindex ("players/lauren/weapon.md2"); gi.modelindex ("players/lauren/w_blaster.md2"); @@ -1021,6 +1174,7 @@ gi.modelindex ("players/lauren/w_railgun.md2"); gi.modelindex ("players/lauren/w_bfg.md2"); gi.modelindex ("players/lauren/w_violator.md2"); + gi.modelindex ("players/lauren/w_minderaser.md2"); gi.modelindex ("players/slashbot/weapon.md2"); gi.modelindex ("players/slashbot/w_blaster.md2"); @@ -1033,6 +1187,7 @@ gi.modelindex ("players/slashbot/w_railgun.md2"); gi.modelindex ("players/slashbot/w_bfg.md2"); gi.modelindex ("players/slashbot/w_violator.md2"); + gi.modelindex ("players/slashbot/w_minderaser.md2"); gi.modelindex ("players/commander/weapon.md2"); gi.modelindex ("players/commander/w_blaster.md2"); @@ -1045,8 +1200,42 @@ gi.modelindex ("players/commander/w_railgun.md2"); gi.modelindex ("players/commander/w_bfg.md2"); gi.modelindex ("players/commander/w_violator.md2"); + gi.modelindex ("players/commander/w_minderaser.md2"); + + gi.modelindex ("players/martianoverlord/weapon.md2"); + gi.modelindex ("players/martianoverlord/w_blaster.md2"); + gi.modelindex ("players/martianoverlord/w_shotgun.md2"); + gi.modelindex ("players/martianoverlord/w_sshotgun.md2"); + gi.modelindex ("players/martianoverlord/w_machinegun.md2"); + gi.modelindex ("players/martianoverlord/w_chaingun.md2"); + gi.modelindex ("players/martianoverlord/w_rlauncher.md2"); + gi.modelindex ("players/martianoverlord/w_hyperblaster.md2"); + gi.modelindex ("players/martianoverlord/w_railgun.md2"); + gi.modelindex ("players/martianoverlord/w_bfg.md2"); + gi.modelindex ("players/martianoverlord/w_violator.md2"); + gi.modelindex ("players/martianoverlord/w_minderaser.md2"); + + gi.modelindex ("players/martianwarrior/weapon.md2"); + gi.modelindex ("players/martianwarrior/w_blaster.md2"); + gi.modelindex ("players/martianwarrior/w_shotgun.md2"); + gi.modelindex ("players/martianwarrior/w_sshotgun.md2"); + gi.modelindex ("players/martianwarrior/w_machinegun.md2"); + gi.modelindex ("players/martianwarrior/w_chaingun.md2"); + gi.modelindex ("players/martianwarrior/w_rlauncher.md2"); + gi.modelindex ("players/martianwarrior/w_hyperblaster.md2"); + gi.modelindex ("players/martianwarrior/w_railgun.md2"); + gi.modelindex ("players/martianwarrior/w_bfg.md2"); + gi.modelindex ("players/martianwarrior/w_violator.md2"); + gi.modelindex ("players/martianwarrior/w_minderaser.md2"); + + //weapon models that aren't placed in levels + gi.modelindex ("models/weapons/v_minderaser/tris.md2"); + gi.modelindex ("models/weapons/g_minderaser/tris.md2"); + gi.modelindex ("models/objects/spud/tris.md2"); + gi.modelindex ("models/weapons/v_blast/tris.md2"); + gi.modelindex ("models/weapons/v_violator/tris.md2"); } - + //these are needed for custom player models for when they enter a game gi.modelindex ("#w_blaster.md2"); gi.modelindex ("#w_shotgun.md2"); @@ -1060,6 +1249,7 @@ gi.modelindex ("#w_railgun.md2"); gi.modelindex ("#w_bfg.md2"); gi.modelindex ("#w_violator.md2"); + gi.modelindex ("#w_minderaser.md2"); // // Setup light animation tables. 'a' is total darkness, 'z' is doublebright. diff -Nru alien-arena-7.53+dfsg/source/game/g_spider.c alien-arena-7.66+dfsg/source/game/g_spider.c --- alien-arena-7.53+dfsg/source/game/g_spider.c 1970-01-01 00:00:00.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_spider.c 2013-06-22 20:07:36.000000000 +0000 @@ -0,0 +1,331 @@ +/* +Copyright (C) 2012 COR Entertainment, LLC. + +This program 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. + +This program 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 this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +*/ + +/* +============================================================================== + +Spider projectile bot + +============================================================================== +*/ + +#ifdef HAVE_CONFIG_H +#include "config.h" +#endif + +#include "g_local.h" +#include "g_spider.h" + +static int sound_pain; +static int sound_die; +static int sound_walk; +static int sound_punch; +static int sound_sight; +static int sound_search; + +void spider_search (edict_t *self) +{ + gi.sound (self, CHAN_VOICE, sound_search, 1, ATTN_NORM, 0); +} + +mframe_t spider_frames_stand [] = +{ + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL}, + {ai_stand, 0, NULL} + +}; +mmove_t spider_move_stand = {FRAME_stand01, FRAME_stand13, spider_frames_stand, NULL}; + +void spider_stand (edict_t *self) +{ + self->monsterinfo.currentmove = &spider_move_stand; +} + +void spider_step(edict_t *self) +{ + gi.sound (self, CHAN_VOICE, sound_walk, 1, ATTN_NORM, 0); +} + +mframe_t spider_frames_walk1 [] = +{ + {ai_run, 4, NULL}, + {ai_run, 8, spider_step}, + {ai_run, 12, NULL}, + {ai_run, 12, spider_step}, + {ai_run, 8, NULL}, + {ai_run, 12, spider_step} +}; +mmove_t spider_move_walk1 = {FRAME_walk01, FRAME_walk06, spider_frames_walk1, NULL}; + +void spider_walk (edict_t *self) +{ + if (self->monsterinfo.aiflags & AI_STAND_GROUND) + self->monsterinfo.currentmove = &spider_move_stand; + else + self->monsterinfo.currentmove = &spider_move_walk1; +} + +void spiderShot (edict_t *self) //same as deathray shot +{ + vec3_t forward, right; + vec3_t start; + vec3_t end; + vec3_t dir; + vec3_t from; + vec3_t offset; + int damage = 50; + trace_t tr; + + AngleVectors (self->s.angles, forward, right, NULL); + VectorSet(offset, 16, 0, 16); + G_ProjectSource (self->s.origin, offset, forward, right, start); + VectorCopy (self->s.origin, start); + VectorCopy (self->enemy->s.origin, end); + end[2] += self->enemy->viewheight; + VectorSubtract (end, start, dir); + right[0] = forward[0] * 32; + right[1] = forward[1] * 32; + VectorAdd(start, right, start); + start[2] += 16; + VectorCopy (start, from); + tr = gi.trace (from, NULL, NULL, end, self, MASK_SHOT); + VectorCopy (tr.endpos, from); + + // send muzzle flash + gi.WriteByte (svc_muzzleflash); + gi.WriteShort (self-g_edicts); + gi.WriteByte (MZ_RAILGUN); + gi.multicast (self->s.origin, MULTICAST_PVS); + + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_VAPORBEAM); + gi.WritePosition (start); + gi.WritePosition (end); + gi.multicast (self->s.origin, MULTICAST_PHS); + + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_BFG_BIGEXPLOSION); + gi.WritePosition (end); + gi.multicast (end, MULTICAST_PVS); + + gi.sound (self, CHAN_VOICE, sound_punch, 1, ATTN_NORM, 0); + + if ((tr.ent != self) && (tr.ent->takedamage)) + T_Damage (tr.ent, self, self, dir, tr.endpos, tr.plane.normal, damage, 0, 0, MOD_SPIDER); + else if (!((tr.surface) && (tr.surface->flags & SURF_SKY))) + { + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_SCREEN_SPARKS); + gi.WritePosition (tr.endpos); + gi.WriteDir (tr.plane.normal); + gi.multicast (self->s.origin, MULTICAST_PVS); + } +} + +mframe_t spider_frames_attack_shoot [] = +{ + {ai_charge, 0, NULL}, + {ai_charge, 0, spiderShot}, + {ai_charge, 0, NULL}, + {ai_charge, 0, NULL}, + {ai_charge, 0, NULL}, + {ai_charge, 0, NULL} +}; +mmove_t spider_move_attack_shoot = {FRAME_shoot01, FRAME_shoot06, spider_frames_attack_shoot, spider_walk}; + +void spider_sight (edict_t *self, edict_t *other) +{ + gi.sound (self, CHAN_VOICE, sound_sight, 1, ATTN_NORM, 0); + self->monsterinfo.currentmove = &spider_move_walk1; +} + +void spider_attack (edict_t *self) +{ + self->monsterinfo.currentmove = &spider_move_attack_shoot; +} + +mframe_t spider_frames_pain1 [] = +{ + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL}, + {ai_move, 0, NULL} +}; +mmove_t spider_move_pain1 = {FRAME_pain01, FRAME_pain05, spider_frames_pain1, spider_walk}; + +void spider_pain (edict_t *self, edict_t *other, float kick, int damage) +{ + if (level.time < self->pain_debounce_time) + return; + + self->pain_debounce_time = level.time + 3; + gi.sound (self, CHAN_VOICE, sound_pain, 1, ATTN_NORM, 0); + self->monsterinfo.currentmove = &spider_move_pain1; +} + +void spider_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +{ + gi.sound (self, CHAN_VOICE, sound_die, 1, ATTN_NORM, 0); + + self->movetype = MOVETYPE_TOSS; + self->svflags |= SVF_DEADMONSTER; + + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_EXPLOSION1); + gi.WritePosition (self->s.origin); + gi.multicast (self->s.origin, MULTICAST_PVS); + + self->deadflag = DEAD_DEAD; + + self->think = G_FreeEdict; + + gi.linkentity (self); + + G_FreeEdict(self); +} + +void spawn_spider (edict_t *owner, vec3_t origin, vec3_t angle) +{ + edict_t *self = G_Spawn(); + + VectorCopy(origin, self->s.origin); + VectorCopy(angle, self->s.angles); + self->s.origin[2] += 16; + + sound_pain = gi.soundindex ("misc/deathray/fizz.wav"); + sound_die = gi.soundindex ("misc/deathray/fizz.wav"); + sound_walk = gi.soundindex ("weapons/spidermov.wav"); + sound_punch = gi.soundindex ("misc/deathray/shoot.wav"); + sound_search = gi.soundindex ("weapons/seeker.wav"); + sound_sight = gi.soundindex ("misc/deathray/weird2.wav"); + + self->s.modelindex = gi.modelindex("models/objects/spider/tris.md2"); + self->s.modelindex3 = gi.modelindex("models/objects/spider/helmet.md2"); + + self->classname = "proj_spider"; + + VectorSet (self->mins, -16, -16, 0); + VectorSet (self->maxs, 16, 16, 32); + self->movetype = MOVETYPE_STEP; + self->solid = SOLID_BBOX; + self->takedamage = DAMAGE_YES; + self->max_health = 100; + self->health = self->max_health; + self->gib_health = 0; + self->mass = 100; + + self->pain = spider_pain; + self->die = spider_die; + + self->monsterinfo.stand = spider_stand; + self->monsterinfo.walk = spider_walk; + self->monsterinfo.run = spider_walk; + self->monsterinfo.dodge = NULL; + self->monsterinfo.attack = spider_attack; + self->monsterinfo.melee = spider_attack; + self->monsterinfo.sight = spider_sight; + self->monsterinfo.search = spider_search; + self->s.renderfx |= RF_MONSTER; + + self->monsterinfo.currentmove = &spider_move_stand; + self->monsterinfo.scale = MODEL_SCALE; + self->enemy = NULL; + + self->owner = owner; + + gi.linkentity (self); + + walkmonster_start (self); +} + +void spider_think (edict_t *self) +{ + self->nextthink = level.time + FRAMETIME; +} + +void spider_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) +{ + if (other == ent->owner) + return; + + if (surf && (surf->flags & SURF_SKY)) + { + G_FreeEdict (ent); + return; + } + else if(surf) + { + spawn_spider(ent->owner, ent->s.origin, ent->s.angles); + + G_FreeEdict (ent); + return; + } + + //just bounce off of anything else + gi.sound (ent, CHAN_VOICE, gi.soundindex ("weapons/clank.wav"), 1, ATTN_NORM, 0); + return; + +} + +void fire_spider (edict_t *self, vec3_t start, vec3_t aimdir, int speed) +{ + edict_t *spider; + vec3_t dir, forward, right, up; + + self->client->resp.weapon_shots[2]++; + + vectoangles(aimdir, dir); + AngleVectors(dir, forward, right, up); + + spider = G_Spawn(); + VectorCopy (start, spider->s.origin); + VectorScale (aimdir, speed, spider->velocity); + VectorMA (spider->velocity, 200 + crandom() * 10.0, up, spider->velocity); + VectorMA (spider->velocity, crandom() * 10.0, right, spider->velocity); + VectorSet (spider->avelocity, 300, 300, 300); + spider->movetype = MOVETYPE_BOUNCE; + spider->clipmask = MASK_SHOT; + spider->solid = SOLID_BBOX; + VectorClear (spider->mins); + VectorClear (spider->maxs); + spider->s.modelindex = gi.modelindex("models/objects/spider/tris.md2"); + spider->s.modelindex3 = gi.modelindex("models/objects/spider/helmet.md2"); + spider->s.frame = 31; + spider->owner = self; + spider->touch = spider_touch; + spider->nextthink = level.time + .1; + spider->think = spider_think; + + spider->s.sound = gi.soundindex ("weapons/electroball.wav"); + spider->classname = "proj_spider"; + + gi.linkentity (spider); +} \ No newline at end of file diff -Nru alien-arena-7.53+dfsg/source/game/g_spider.h alien-arena-7.66+dfsg/source/game/g_spider.h --- alien-arena-7.53+dfsg/source/game/g_spider.h 1970-01-01 00:00:00.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_spider.h 2013-06-22 20:07:36.000000000 +0000 @@ -0,0 +1,37 @@ + +#define FRAME_stand01 0 +#define FRAME_stand02 1 +#define FRAME_stand03 2 +#define FRAME_stand04 3 +#define FRAME_stand05 4 +#define FRAME_stand06 5 +#define FRAME_stand07 6 +#define FRAME_stand08 7 +#define FRAME_stand09 8 +#define FRAME_stand10 9 +#define FRAME_stand11 10 +#define FRAME_stand12 11 +#define FRAME_stand13 12 +#define FRAME_stand14 13 + +#define FRAME_walk01 14 +#define FRAME_walk02 15 +#define FRAME_walk03 16 +#define FRAME_walk04 17 +#define FRAME_walk05 18 +#define FRAME_walk06 19 + +#define FRAME_shoot01 20 +#define FRAME_shoot02 21 +#define FRAME_shoot03 22 +#define FRAME_shoot04 23 +#define FRAME_shoot05 24 +#define FRAME_shoot06 25 + +#define FRAME_pain01 26 +#define FRAME_pain02 27 +#define FRAME_pain03 28 +#define FRAME_pain04 29 +#define FRAME_pain05 30 + +#define MODEL_SCALE 1.000000 diff -Nru alien-arena-7.53+dfsg/source/game/g_target.c alien-arena-7.66+dfsg/source/game/g_target.c --- alien-arena-7.53+dfsg/source/game/g_target.c 2011-09-29 05:09:17.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_target.c 2013-06-22 20:07:36.000000000 +0000 @@ -90,10 +90,11 @@ ent->nextthink = level.time + 1; } +extern int levelnum; void SP_target_speaker (edict_t *ent) { char buffer[MAX_QPATH]; - + static int prev_levelnum; if(!st.noise) { @@ -102,7 +103,13 @@ } if (strstr (st.noise, "music")) { - gi.dprintf("SHUT UP SHUT UP SHUT UP YOU INFERNAL BONGO DRUMS!\n"); + if (levelnum != prev_levelnum) //only warn once per level + { + prev_levelnum = levelnum; + gi.dprintf("SHUT UP SHUT UP SHUT UP YOU INFERNAL BONGO DRUMS!\n"); + gi.dprintf("Map contains one or more target_speakers with \"music\" in its sound file name.\n"); + gi.dprintf("These have been disabled.\n"); + } return; } if (!strstr (st.noise, ".wav")) @@ -357,6 +364,7 @@ speed default is 1000 */ +#ifndef ALTERIA void use_target_blaster (edict_t *self, edict_t *other, edict_t *activator) { int effect; @@ -368,7 +376,7 @@ else effect = EF_BLASTER; - fire_blaster (self, self->s.origin, self->movedir, self->dmg, self->speed, EF_BLASTER, MOD_TARGET_BLASTER); + fire_blaster (self, self->s.origin, self->s.origin, self->movedir, self->dmg, self->speed, EF_BLASTER, MOD_TARGET_BLASTER); gi.sound (self, CHAN_VOICE, self->noise_index, 1, ATTN_NORM, 0); } @@ -385,7 +393,7 @@ self->svflags = SVF_NOCLIENT; } - +#endif //========================================================== /*QUAKED target_laser (0 .5 .8) (-8 -8 -8) (8 8 8) START_ON RED GREEN BLUE YELLOW ORANGE FAT diff -Nru alien-arena-7.53+dfsg/source/game/g_unlagged.c alien-arena-7.66+dfsg/source/game/g_unlagged.c --- alien-arena-7.53+dfsg/source/game/g_unlagged.c 2010-11-09 21:54:46.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_unlagged.c 2013-06-22 20:07:36.000000000 +0000 @@ -30,7 +30,8 @@ Clear out the given client's history (should be called when the teleport bit is flipped) ============ */ -void G_ResetHistory( edict_t *ent ) { +void G_ResetHistory( edict_t *ent ) +{ int i; int time; @@ -38,7 +39,8 @@ // fill up the history with data (assume the current position) ent->client->historyHead = NUM_CLIENT_HISTORY - 1; - for ( i = ent->client->historyHead; i >= 0; i--, time -= 50 ) { + for ( i = ent->client->historyHead; i >= 0; i--, time -= 100 ) + { VectorCopy( ent->mins, ent->client->history[i].mins ); VectorCopy( ent->maxs, ent->client->history[i].maxs ); VectorCopy( ent->s.origin, ent->client->history[i].currentOrigin ); @@ -54,11 +56,13 @@ Keep track of where the client's been ============ */ -void G_StoreHistory( edict_t *ent ) { +void G_StoreHistory( edict_t *ent ) +{ int head; ent->client->historyHead++; - if ( ent->client->historyHead >= NUM_CLIENT_HISTORY ) { + if ( ent->client->historyHead >= NUM_CLIENT_HISTORY ) + { ent->client->historyHead = 0; } @@ -81,8 +85,8 @@ Returns a vector "frac" times the distance between "start" and "end" ============= */ -static void TimeShiftLerp( float frac, vec3_t start, vec3_t end, vec3_t result ) { - +static void TimeShiftLerp( float frac, vec3_t start, vec3_t end, vec3_t result ) +{ result[0] = start[0] + frac * ( end[0] - start[0] ); result[1] = start[1] + frac * ( end[1] - start[1] ); result[2] = start[2] + frac * ( end[2] - start[2] ); @@ -96,9 +100,9 @@ Move a client back to where he was at the specified time ================= */ -void G_TimeShiftClient( edict_t *ent, int time, qboolean debug, edict_t *debugger ) { +void G_TimeShiftClient( edict_t *ent, int time, qboolean debug, edict_t *debugger ) +{ int j, k; - char str[MAX_STRING_CHARS]; VectorCopy( ent->mins, ent->client->saved.mins ); @@ -106,8 +110,10 @@ VectorCopy( ent->s.origin, ent->client->saved.currentOrigin ); ent->client->saved.leveltime = gi.Sys_Milliseconds(); - if(g_antilagdebug->integer > 1) { //debug - Com_sprintf(str, sizeof(str), "print \"head: %i, %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i time: %i\n\"", + if(g_antilagdebug->integer > 1) + { + //debug + Com_sprintf(str, sizeof(str), "head: %i, %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i %i time: %i\n", ent->client->historyHead, ent->client->history[0].leveltime, ent->client->history[1].leveltime, @@ -127,7 +133,7 @@ ent->client->history[15].leveltime, ent->client->history[16].leveltime, time ); - safe_bprintf(PRINT_HIGH, "%s\n", str); + safe_cprintf(debugger, PRINT_HIGH, "%s\n", str); } // find two entries in the history whose times sandwich "time" @@ -140,21 +146,23 @@ k = j; j--; - if ( j < 0 ) { + if ( j < 0 ) + { j = NUM_CLIENT_HISTORY - 1; } } while ( j != ent->client->historyHead ); if(g_antilagdebug->value) - safe_bprintf(PRINT_HIGH, "reconciled time at: %i\n", k); - + safe_cprintf(debugger, PRINT_HIGH, "reconciled time at: %i\n", k); + // if we got past the first iteration above, we've sandwiched (or wrapped) - if ( j != k ) { - + if ( j != k ) + { // if we haven't wrapped back to the head, we've sandwiched, so // we shift the client's position back to where he was at "time" - if ( j != ent->client->historyHead ) { + if ( j != ent->client->historyHead ) + { float frac = (float)(time - ent->client->history[j].leveltime) / (float)(ent->client->history[k].leveltime - ent->client->history[j].leveltime); @@ -175,8 +183,8 @@ // this will recalculate absmin and absmax gi.linkentity( ent ); - - } else { + } else + { // we wrapped, so grab the earliest VectorCopy( ent->client->history[k].currentOrigin, ent->s.origin ); VectorCopy( ent->client->history[k].mins, ent->mins ); @@ -197,7 +205,8 @@ except for "skip" ===================== */ -void G_TimeShiftAllClients( int time, edict_t *skip ) { +void G_TimeShiftAllClients( int time, edict_t *skip ) +{ int i; edict_t *ent; @@ -207,7 +216,8 @@ if (!ent->inuse || !ent->client) continue; - if ( ent->client && ent->inuse && !ent->client->resp.spectator && ent != skip ) { + if ( ent->client && ent->inuse && !ent->client->resp.spectator && ent != skip ) + { G_TimeShiftClient( ent, time, false, skip ); } } @@ -230,12 +240,14 @@ int time; // don't time shift for mistakes or bots - if ( !ent->inuse || !ent->client || ent->is_bot ) { + if ( !ent->inuse || !ent->client || ent->is_bot ) + { return; } // do the full lag compensation - time = ent->client->attackTime - ent->client->ping; + time = ent->client->attackTime - ent->client->ping - 100; + //100 ms is our "built-in" lag due to the 10fps server frame G_TimeShiftAllClients( time, ent ); } @@ -248,7 +260,8 @@ Move a client back to where he was before the time shift =================== */ -void G_UnTimeShiftClient( edict_t *ent ) { +void G_UnTimeShiftClient( edict_t *ent ) +{ // move it back VectorCopy( ent->client->saved.mins, ent->mins ); VectorCopy( ent->client->saved.maxs, ent->maxs ); @@ -268,7 +281,8 @@ except for "skip" ======================= */ -void G_UnTimeShiftAllClients( edict_t *skip ) { +void G_UnTimeShiftAllClients( edict_t *skip ) +{ int i; edict_t *ent; @@ -277,7 +291,8 @@ ent = g_edicts + 1 + i; if (!ent->inuse || !ent->client) continue; - if ( ent->client && ent->inuse && !ent->client->resp.spectator && ent != skip ) { + if ( ent->client && ent->inuse && !ent->client->resp.spectator && ent != skip ) + { G_UnTimeShiftClient( ent ); } } @@ -294,9 +309,52 @@ void G_UndoTimeShiftFor( edict_t *ent ) { // don't un-time shift for mistakes or bots - if ( !ent->inuse || !ent->client || (ent->is_bot) ) { + if ( !ent->inuse || !ent->client || (ent->is_bot) ) + { return; } G_UnTimeShiftAllClients( ent ); } + + +/* +================== +G_AntilagProjectile + +Simulate any extra frames to get the projectile "caught up" on the current +state of the game. +================== +*/ +void G_AntilagProjectile( edict_t *ent ) +{ + int ping, time; + edict_t *owner; + + // Save a copy of the player who fired the shot. The reason not to refer + // to ent->owner directly is because if the projectile hits something, + // its contents will be cleared during the call to G_RunEntity. + owner = ent->owner; + + // don't antilag mistakes or bots + if ( !ent || !ent->inuse || !owner || !owner->inuse || !owner->client || owner->is_bot ) + { + return; + } + + for (ping = owner->client->ping; ping > FRAMETIME*1000; ping -= FRAMETIME*1000) + { + // do the full lag compensation, without the "built in" lag + time = owner->client->attackTime - ping; + G_TimeShiftAllClients( time, owner ); + G_RunEntity (ent, FRAMETIME); + G_UnTimeShiftAllClients( owner ); + if ( !ent->inuse ) + return; + } + + time = owner->client->attackTime - ping; + G_TimeShiftAllClients( time, owner ); + G_RunEntity (ent, (float)ping/1000.0f); + G_UnTimeShiftAllClients( owner ); +} diff -Nru alien-arena-7.53+dfsg/source/game/g_vehicles.c alien-arena-7.66+dfsg/source/game/g_vehicles.c --- alien-arena-7.53+dfsg/source/game/g_vehicles.c 2011-05-17 03:24:21.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_vehicles.c 2013-06-22 20:07:36.000000000 +0000 @@ -1,6 +1,10 @@ /* Copyright (C) 20?? COR Entertainment, LLC. +Copyright (C) 1998 by "Attila." Based on the email address provided, Attila is +likely the pseudonym of Jens Bohnwagner, but this isn't certain. Original +code: http://www.quakewiki.net/archives/qdevels/quake2/1_2_98.html + This program 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 diff -Nru alien-arena-7.53+dfsg/source/game/g_weapon.c alien-arena-7.66+dfsg/source/game/g_weapon.c --- alien-arena-7.53+dfsg/source/game/g_weapon.c 2011-06-28 04:39:56.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/g_weapon.c 2013-06-22 20:07:36.000000000 +0000 @@ -24,8 +24,50 @@ #include "g_local.h" -int floater_timer; -int prox_timer; +#ifdef ALTERIA + + //add Alteria weapon code + +void fire_punch(edict_t *self, vec3_t start, vec3_t aimdir, int damage) +{ + + vec3_t from; + vec3_t end; + trace_t tr; + edict_t *ignore; + + if ( g_antilag->integer) + G_DoTimeShiftFor( self ); + + VectorMA (start, 32, aimdir, end); + + VectorCopy (start, from); + ignore = self; + + tr = gi.trace (from, NULL, NULL, end, ignore, MASK_SHOT); + + if (tr.ent != self) + { + if(tr.ent->takedamage || (tr.fraction < 1.0)) + { + if(tr.ent->takedamage) + T_Damage (tr.ent, self, self, aimdir, tr.endpos, tr.plane.normal, damage, 4, 0, MOD_VIOLATOR); //add alteria mod types + + gi.sound (self, CHAN_VOICE, gi.soundindex("misc/hit.wav"), 1, ATTN_STATIC, 0); //change to impact sound + + //change this to smoke puffs or similar + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_CHAINGUNSMOKE); //note TE_SMOKE is available and unused if we want better impact effects + gi.WritePosition (tr.endpos); + gi.multicast (start, MULTICAST_PVS); + } + } + + if ( g_antilag->integer) + G_UndoTimeShiftFor( self ); +} + +#else /* ================= @@ -299,7 +341,48 @@ G_FreeEdict (self); } -void fire_blasterball (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int effect, qboolean hyper) +void alienblasterball_touch (edict_t *self, edict_t *other, cplane_t *plane, csurface_t *surf) +{ + int mod; + + if (other == self->owner) + return; + + if (surf && (surf->flags & SURF_SKY)) + { + G_FreeEdict (self); + return; + } + + if (self->owner->client) + PlayerNoise(self->owner, self->s.origin, PNOISE_IMPACT); + + if (other->takedamage) + { + if (self->spawnflags & 1) + mod = MOD_BEAMGUN; + else + mod = MOD_BLASTER; + T_Damage (other, self, self->owner, self->velocity, self->s.origin, plane->normal, self->dmg, 1, DAMAGE_ENERGY, mod); + self->owner->client->resp.weapon_hits[0]++; + gi.sound (self->owner, CHAN_VOICE, gi.soundindex("misc/hit.wav"), 1, ATTN_STATIC, 0); + } + else + { + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_SCREEN_SPARKS); + gi.WritePosition (self->s.origin); + if (!plane) + gi.WriteDir (vec3_origin); + else + gi.WriteDir (plane->normal); + gi.multicast (self->s.origin, MULTICAST_PVS); + } + T_RadiusDamage(self, self->owner, 95, other, 150, MOD_PLASMA_SPLASH, 0); + G_FreeEdict (self); +} + +void fire_blasterball (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, int effect, qboolean hyper, qboolean alien) { edict_t *bolt; trace_t tr; @@ -317,19 +400,28 @@ bolt->movetype = MOVETYPE_FLYMISSILE; bolt->clipmask = MASK_SHOT; bolt->solid = SOLID_BBOX; - if(effect == EF_ROCKET) { //ack, kinda assbackwards, but the past mistakes haunt us + if(effect == EF_ROCKET) + { //ack, kinda assbackwards, but the past mistakes haunt us bolt->s.effects |= EF_BLASTER; bolt->s.modelindex = gi.modelindex ("models/objects/laser/tris.md2"); } - else { + else + { bolt->s.effects |= EF_PLASMA; bolt->s.modelindex = gi.modelindex ("models/objects/fireball/tris.md2"); } + // All we care about is the effects. However, old clients will refuse to + // draw them unless the modelindex is set. To work around this, newer + // clients have an RF_NODRAW flag. + bolt->s.renderfx |= RF_NODRAW; VectorClear (bolt->mins); VectorClear (bolt->maxs); bolt->s.sound = gi.soundindex ("misc/lasfly.wav"); bolt->owner = self; - bolt->touch = blasterball_touch; + if(alien) + bolt->touch = alienblasterball_touch; + else + bolt->touch = blasterball_touch; bolt->nextthink = level.time + 2; bolt->think = G_FreeEdict; bolt->dmg = damage; @@ -344,9 +436,11 @@ VectorMA (bolt->s.origin, -10, dir, bolt->s.origin); bolt->touch (bolt, tr.ent, NULL, NULL); } + + if ( g_antilag->integer && g_antilagprojectiles->integer) + G_AntilagProjectile (bolt); } -void fire_blaster (edict_t *self, vec3_t start, vec3_t aimdir, int damage, -int speed, int effect, qboolean hyper) +void fire_blaster (edict_t *self, vec3_t start, vec3_t muzzle, vec3_t aimdir, int damage, int speed, int effect, qboolean hyper) { vec3_t from; vec3_t end; @@ -375,7 +469,8 @@ } else { - if ((tr.ent != self) && (tr.ent->takedamage)) { + if ((tr.ent != self) && (tr.ent->takedamage)) + { T_Damage (tr.ent, self, self, aimdir, tr.endpos, tr.plane.normal, damage, 0, 0, MOD_BLASTER); self->client->resp.weapon_hits[6]++; gi.sound (self, CHAN_VOICE, gi.soundindex("misc/hit.wav"), 1, ATTN_STATIC, 0); @@ -395,13 +490,13 @@ gi.WriteByte (svc_temp_entity); gi.WriteByte (TE_LASERBEAM); - gi.WritePosition (start); + gi.WritePosition (muzzle); gi.WritePosition (tr.endpos); gi.multicast (self->s.origin, MULTICAST_PHS); if ((tr.ent != self) && (tr.ent->takedamage)) { - T_Damage (tr.ent, self, self, aimdir, tr.endpos, tr.plane.normal, damage, 0, 0, MOD_BEAMGUN); + T_Damage (tr.ent, self, self, aimdir, tr.endpos, tr.plane.normal, damage, 0, 0, MOD_BEAMGUN); self->client->resp.weapon_hits[6]++; gi.sound (self, CHAN_VOICE, gi.soundindex("misc/hit.wav"), 1, ATTN_STATIC, 0); } @@ -476,7 +571,11 @@ rocket->movetype = MOVETYPE_FLYMISSILE; rocket->clipmask = MASK_SHOT; rocket->solid = SOLID_BBOX; - rocket->s.effects |= EF_ROCKET | EF_ROCKETEXHAUST ; + rocket->s.effects |= EF_ROCKETEXHAUST ; + rocket->s.renderfx |= RF_FULLBRIGHT ; + if (!excessive->integer && self->client->invincible_framenum <= level.framenum) + //With too many rockets, lots of smoke trails hurt performance. + rocket->s.effects |= EF_ROCKET; VectorClear (rocket->mins); VectorClear (rocket->maxs); rocket->s.modelindex = gi.modelindex ("models/objects/rocket/tris.md2"); @@ -491,6 +590,9 @@ rocket->classname = "rocket"; gi.linkentity (rocket); + + if ( g_antilag->integer && g_antilagprojectiles->integer) + G_AntilagProjectile (rocket); } /* @@ -551,7 +653,7 @@ G_FreeEdict (ent); } -void fire_blaster_beam (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick, qboolean detonate) +void fire_blaster_beam (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick, qboolean detonate, qboolean alien) { vec3_t from; vec3_t end; @@ -583,8 +685,8 @@ } else { - - if ((tr.ent != self) && (tr.ent->takedamage)) { + if ((tr.ent != self) && (tr.ent->takedamage)) + { T_Damage (tr.ent, self, self, aimdir, tr.endpos, tr.plane.normal, damage, kick, 0, MOD_BLASTER); self->client->resp.weapon_hits[0]++; gi.sound (self, CHAN_VOICE, gi.soundindex("misc/hit.wav"), 1, ATTN_STATIC, 0); @@ -604,18 +706,25 @@ VectorCopy (tr.endpos, from); gi.WriteByte (svc_temp_entity); - gi.WriteByte (TE_BLASTERBEAM); + if(alien) + gi.WriteByte (TE_LASERBEAM); + else + gi.WriteByte (TE_BLASTERBEAM); gi.WritePosition (start); gi.WritePosition (tr.endpos); gi.multicast (self->s.origin, MULTICAST_PHS); gi.WriteByte (svc_temp_entity); - gi.WriteByte (TE_BLASTER); + if(alien) + gi.WriteByte (TE_SCREEN_SPARKS); + else + gi.WriteByte (TE_BLASTER); gi.WritePosition (tr.endpos); gi.WriteDir (tr.plane.normal); gi.multicast (tr.endpos, MULTICAST_PVS); - if(detonate) { + if(detonate) + { //spawn a new ent at end of explosion - and detonate it bomb = G_Spawn(); VectorCopy (tr.endpos, bomb->s.origin); @@ -631,11 +740,11 @@ } if (gi.pointcontents (start) & MASK_WATER) - { - water = true; - VectorCopy (start, water_start); - content_mask &= ~MASK_WATER; - } + { + water = true; + VectorCopy (start, water_start); + content_mask &= ~MASK_WATER; + } tr = gi.trace (start, NULL, NULL, end, self, content_mask); @@ -857,7 +966,7 @@ } -void fire_plasma (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick) +void fire_disruptor (edict_t *self, vec3_t start, vec3_t muzzle, vec3_t aimdir, int damage, int kick) { vec3_t from; vec3_t end; @@ -907,7 +1016,7 @@ gi.WriteByte (svc_temp_entity); gi.WriteByte (TE_RAILTRAIL); - gi.WritePosition (start); + gi.WritePosition (muzzle); gi.WritePosition (tr.endpos); gi.multicast (self->s.origin, MULTICAST_PHS); @@ -932,7 +1041,7 @@ } //vaporizer code -void fire_energy_field (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick) +void fire_vaporizer (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int kick) { vec3_t from; @@ -1058,7 +1167,7 @@ VectorScale(targetdir, speed, ent->velocity); } - ent->nextthink = level.time + .1; + ent->nextthink = level.time + FRAMETIME; } void fire_homingrocket (edict_t *self, vec3_t start, vec3_t dir, int damage, int speed, float damage_radius, int radius_damage) @@ -1108,11 +1217,191 @@ /* ================= -fire_floater +fire_minderaser ================= */ -void floater_think (edict_t *self) +void minderaser_think (edict_t *ent) +{ + edict_t *target = NULL; + edict_t *blip = NULL; + vec3_t targetdir, blipdir; + vec_t speed; + + while ((blip = findradius(blip, ent->s.origin, 1000)) != NULL) + { + if (!(blip->svflags & SVF_MONSTER) && !blip->client) + continue; + if (blip == ent->owner) + continue; + if (!blip->takedamage) + continue; + if (blip->health <= 0) + continue; + if (!visible(ent, blip)) + continue; + + VectorSubtract(blip->s.origin, ent->s.origin, blipdir); + blipdir[2] += 16; + if ((target == NULL) || (VectorLength(blipdir) < VectorLength(targetdir))) + { + target = blip; + VectorCopy(blipdir, targetdir); + } + } + + if (target != NULL) + { + trace_t tr; + + tr = gi.trace (ent->s.origin, NULL, NULL, target->s.origin, ent, MASK_SOLID); + + // only move to it if path is not blocked + if (tr.fraction == 1.0) + { + // target acquired, nudge our direction toward it + VectorNormalize(targetdir); + VectorScale(targetdir, 0.2, targetdir); + VectorAdd(targetdir, ent->movedir, targetdir); + VectorNormalize(targetdir); + VectorCopy(targetdir, ent->movedir); + vectoangles(targetdir, ent->s.angles); + speed = 450; //speed it up we have a target + VectorScale(targetdir, speed, ent->velocity); + ent->s.frame = (ent->s.frame + 1) % 24; + ent->s.effects = EF_SHIPEXHAUST; + ent->s.sound = gi.soundindex ("weapons/seeker_fast.wav"); + ent->s.renderfx = 0; + } + + //zap it if close enough and clear + if(VectorLength(blipdir) < 128) + { + //we are close, slow it down + speed = 30; + VectorScale(targetdir, speed, ent->velocity); + + ent->s.effects = EF_COLOR_SHELL; + ent->s.renderfx = RF_SHELL_BLUE; + + // hurt it if we can + if ((target->takedamage) && (target != ent->owner)) + { + T_Damage (target, ent, ent->owner, targetdir, target->s.origin, vec3_origin, 35, 1, DAMAGE_ENERGY, MOD_MINDERASER); + gi.sound (ent->owner, CHAN_VOICE, gi.soundindex("misc/hit.wav"), 1, ATTN_STATIC, 0); + } + + ent->s.sound = gi.soundindex ("weapons/seeker_zap.wav"); + + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_LIGHTNING); + gi.WritePosition (ent->s.origin); + gi.WritePosition (target->s.origin); + gi.multicast (ent->s.origin, MULTICAST_PHS); + + ent->s.frame = 27; + } + } + else + { + speed = 30; + VectorScale(ent->movedir, speed, ent->velocity); + ent->s.effects = 0; + ent->s.renderfx = 0; + ent->s.sound = gi.soundindex ("weapons/seeker.wav"); + ent->s.frame = (ent->s.frame + 1) % 24; + } + + ent->nade_timer++; + ent->nextthink = level.time + FRAMETIME; + + if(ent->nade_timer > 300) + { //explode + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_BFG_BIGEXPLOSION); + gi.WritePosition (ent->s.origin); + gi.multicast (ent->s.origin, MULTICAST_PHS); + + gi.sound (ent, CHAN_WEAPON, gi.soundindex("vehicles/explodebomb.wav"), 1, ATTN_NORM, 0); + + T_RadiusDamage(ent, ent->owner, 400, ent->enemy, 120, MOD_R_SPLASH, 2); + + G_FreeEdict (ent); + } +} + +void minderaser_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) +{ + if (other == ent->owner) + return; + + if (surf && (surf->flags & SURF_SKY)) + { + G_FreeEdict (ent); + return; + } + else if(surf) + { + //explode + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_BFG_BIGEXPLOSION); + gi.WritePosition (ent->s.origin); + gi.multicast (ent->s.origin, MULTICAST_PHS); + + gi.sound (ent, CHAN_WEAPON, gi.soundindex("vehicles/explodebomb.wav"), 1, ATTN_NORM, 0); + + T_RadiusDamage(ent, ent->owner, 400, ent->enemy, 120, MOD_R_SPLASH, 2); + + G_FreeEdict (ent); + return; + } + + //just bounce off of anything else + gi.sound (ent, CHAN_VOICE, gi.soundindex ("weapons/clank.wav"), 1, ATTN_NORM, 0); + return; + +} + +void fire_minderaser (edict_t *self, vec3_t start, vec3_t dir, float timer) +{ + edict_t *spud; + float *v; + + spud = G_Spawn(); + VectorCopy (start, spud->s.origin); + VectorCopy (dir, spud->movedir); + vectoangles (dir, spud->s.angles); + VectorScale (dir, 30, spud->velocity); + spud->movetype = MOVETYPE_FLYMISSILE; + spud->clipmask = MASK_SHOT; + spud->solid = SOLID_BBOX; + spud->s.effects = 0; + spud->s.renderfx = 0; + v = tv(-8,-8,-8); + VectorCopy (v, spud->mins); + v = tv(8,8,8); + VectorCopy (v, spud->maxs); + spud->s.modelindex = gi.modelindex ("models/objects/spud/tris.md2"); + spud->owner = self; + spud->touch = minderaser_touch; + spud->nade_timer = 0; + + spud->nextthink = level.time + FRAMETIME; + spud->think = minderaser_think; + + spud->s.sound = gi.soundindex ("weapons/seeker.wav"); + spud->classname = "seeker"; //to do - make sure bots know to run like hell away from these things + + gi.linkentity (spud); +} + +/* +================= +fire_smartgrenade +================= +*/ + +void smartgrenade_think (edict_t *self) { edict_t *ent; edict_t *target = NULL; @@ -1193,9 +1482,9 @@ self->s.frame = (self->s.frame + 1) % 23; //pulse grotesquely self->nextthink = level.time + FRAMETIME; - floater_timer++; + self->nade_timer++; - if(floater_timer > 10) { //explode + if(self->nade_timer > 10) { //explode T_RadiusDamage(self, self->owner, self->radius_dmg, self->enemy, self->dmg_radius, MOD_R_SPLASH, 2); gi.WriteByte (svc_temp_entity); @@ -1207,6 +1496,7 @@ } } +void prox_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point); void prox_think (edict_t *self) { edict_t *ent; @@ -1222,8 +1512,14 @@ if (!ent->takedamage) continue; + + if (ent->die == prox_die) + continue; + + //avoid infinite recursion + self->takedamage = DAMAGE_NO; - T_RadiusDamage(self, self->owner, self->radius_dmg, self->enemy, self->dmg_radius, MOD_R_SPLASH, -1); + T_RadiusDamage(self, self->owner, self->radius_dmg, NULL, self->dmg_radius, MOD_R_SPLASH, -1); self->owner->client->resp.weapon_hits[2]++; gi.WriteByte (svc_temp_entity); @@ -1237,11 +1533,16 @@ self->s.frame = (self->s.frame + 1) % 23; //pulse grotesquely self->nextthink = level.time + FRAMETIME; - prox_timer++; + self->nade_timer++; - if(prox_timer > 300) + if(self->nade_timer > 300) { //explode - T_RadiusDamage(self, self->owner, self->radius_dmg, self->enemy, self->dmg_radius, MOD_R_SPLASH, 2); + + //avoid infinite recursion + self->takedamage = DAMAGE_NO; + + T_RadiusDamage(self, self->owner, self->radius_dmg, NULL, self->dmg_radius, MOD_R_SPLASH, 2); + gi.WriteByte (svc_temp_entity); gi.WriteByte (TE_BFG_BIGEXPLOSION); @@ -1252,7 +1553,7 @@ } } -void floater_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) +void smartgrenade_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) { if (other == ent->owner) return; @@ -1268,8 +1569,23 @@ return; } +void prox_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +{ + //avoid infinite recursion + self->takedamage = DAMAGE_NO; + + //explode + T_RadiusDamage(self, self->owner, self->radius_dmg, NULL, self->dmg_radius, MOD_R_SPLASH, 2); + + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_BFG_BIGEXPLOSION); + gi.WritePosition (self->s.origin); + gi.multicast (self->s.origin, MULTICAST_PHS); + + G_FreeEdict (self); +} -void fire_floater (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float damage_radius, int radius_damage, float timer) +void fire_smartgrenade (edict_t *self, vec3_t start, vec3_t aimdir, int damage, int speed, float damage_radius, int radius_damage, float timer) { edict_t *floater; vec3_t dir, forward, right, up; @@ -1294,16 +1610,15 @@ VectorClear (floater->maxs); floater->s.modelindex = gi.modelindex ("models/objects/electroball/tris.md2"); floater->owner = self; - floater->touch = floater_touch; + floater->touch = smartgrenade_touch; floater->nextthink = level.time + .1; - floater->think = floater_think; + floater->think = smartgrenade_think; floater->dmg = damage; floater->radius_dmg = radius_damage; floater->dmg_radius = damage_radius; floater->s.sound = gi.soundindex ("weapons/electroball.wav"); floater->classname = "grenade"; - floater_timer = 0; - + floater->nade_timer = 0; gi.linkentity (floater); } @@ -1330,14 +1645,17 @@ VectorClear (prox->maxs); prox->s.modelindex = gi.modelindex ("models/objects/electroball/tris.md2"); prox->owner = self; - prox->touch = floater_touch; + prox->touch = smartgrenade_touch; prox->nextthink = level.time + .1; prox->think = prox_think; prox->dmg = damage; prox->radius_dmg = radius_damage; prox->dmg_radius = damage_radius; prox->classname = "mine"; - prox_timer = 0; + prox->takedamage = DAMAGE_YES; + prox->health = 20; + prox->die = prox_die; + prox->nade_timer = 0; gi.linkentity (prox); } @@ -1574,6 +1892,10 @@ VectorClear (flame->mins); VectorClear (flame->maxs); flame->s.modelindex = gi.modelindex ("models/objects/fireball/tris.md2"); + // All we care about is the effects. However, old clients will refuse to + // draw them unless the modelindex is set. To work around this, newer + // clients have an RF_NODRAW flag. + flame->s.renderfx |= RF_NODRAW; flame->owner = self; flame->touch = flame_touch; flame->nextthink = level.time + 500/speed; @@ -1783,3 +2105,185 @@ if ( g_antilag->integer) G_UndoTimeShiftFor( self ); } + +//Tactical - bombs + +void tactical_bomb_think (edict_t *self) +{ + self->nextthink = level.time + FRAMETIME; + + if(self->armed) + { + self->s.frame++; + if(self->s.frame > 10) + self->s.frame = 10; + self->nade_timer++; //this should only start after armed + } + else //in cases of being disarmed + { + self->s.frame--; + if(self->s.frame < 0) + self->s.frame = 0; + self->nade_timer = 0; + } + + if(self->nade_timer > 100) //10 seconds + { //explode + + //avoid infinite recursion + self->takedamage = DAMAGE_NO; + + T_RadiusDamage(self, self->owner, self->radius_dmg, NULL, self->dmg_radius, MOD_R_SPLASH, 0); + + //just send this bad boy to whole level, make it sound BIG + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "world/explosion1.wav" ), 1, ATTN_NONE, 0 ); + + gi.WriteByte (svc_temp_entity); + if(self->classname == "abomb") + gi.WriteByte (TE_BFG_BIGEXPLOSION); + else + gi.WriteByte (TE_ROCKET_EXPLOSION); //might want different, massive effect here + gi.WritePosition (self->s.origin); + gi.multicast (self->s.origin, MULTICAST_PHS); + + G_FreeEdict (self); + } + +} +void abomb_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) +{ + if (other == ent->owner) + return; + + //detonator will set arming + + if (surf && (surf->flags & SURF_SKY)) + { + G_FreeEdict (ent); + return; + } + + //do we just want players with detonators to just touch them? Touch for now...maybe actually fire one off in future? + if(other->has_detonator && other->ctype == 0) + { + + ent->armed = true; + other->has_detonator = false; //only get one + safe_bprintf(PRINT_HIGH, "Alien bomb is armed!\n"); + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "weapons/adetonatorup.wav" ), 1, ATTN_NONE, 0 ); + } + else if((other->has_minderaser || other->has_vaporizor) && ent->armed) + { + ent->armed = false; + safe_bprintf(PRINT_HIGH, "Alien bomb is disarmed!\n"); + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "weapons/adetonatordown.wav" ), 1, ATTN_NONE, 0 ); + } + + return; +} +void hbomb_touch (edict_t *ent, edict_t *other, cplane_t *plane, csurface_t *surf) +{ + if (other == ent->owner) + return; + + //detonator will set arming + + if (surf && (surf->flags & SURF_SKY)) + { + G_FreeEdict (ent); + return; + } + + //do we just want players with detonators to just touch them? Touch for now...maybe actually fire one off in future? + if(other->has_detonator && other->ctype == 1) + { + ent->armed = true; + other->has_detonator = false; //only get one + safe_bprintf(PRINT_HIGH, "Bomb is armed!\n"); + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "weapons/hdetonatorup.wav" ), 1, ATTN_NONE, 0 ); + } + else if((other->has_minderaser || other->has_vaporizor) && ent->armed) + { + ent->armed = false; + safe_bprintf(PRINT_HIGH, "Bomb is disarmed!\n"); + gi.sound( &g_edicts[1], CHAN_AUTO, gi.soundindex( "weapons/hdetonatordown.wav" ), 1, ATTN_NONE, 0 ); + } + + return; +} +void bomb_die (edict_t *self, edict_t *inflictor, edict_t *attacker, int damage, vec3_t point) +{ + float div; + + //blowing up an armed bomb is still pretty bad, but it would be smarter to get it prior to being armed. + if(self->armed) + div = 2; + else + div = 10; + + //avoid infinite recursion + self->takedamage = DAMAGE_NO; + + //explode - much smaller explosion. + T_RadiusDamage(self, self->owner, self->radius_dmg/div, NULL, self->dmg_radius/div, MOD_R_SPLASH, 0); + + gi.WriteByte (svc_temp_entity); + if(self->classname == "abomb") + gi.WriteByte (TE_BFG_BIGEXPLOSION); + else + gi.WriteByte (TE_ROCKET_EXPLOSION); + gi.WritePosition (self->s.origin); + gi.multicast (self->s.origin, MULTICAST_PHS); + + G_FreeEdict (self); +} +void fire_tacticalbomb (edict_t *self, vec3_t start, vec3_t aimdir, int speed) +{ + edict_t *bomb; + vec3_t dir, forward, right, up; + float *v; + + vectoangles(aimdir, dir); + AngleVectors(dir, forward, right, up); + + bomb = G_Spawn(); + VectorCopy (start, bomb->s.origin); + VectorScale (aimdir, speed, bomb->velocity); + VectorMA (bomb->velocity, 20 + crandom() * 10.0, up, bomb->velocity); + VectorMA (bomb->velocity, crandom() * 10.0, right, bomb->velocity); + VectorSet (bomb->avelocity, 20, 20, 20); + bomb->movetype = MOVETYPE_BOUNCE; + bomb->clipmask = MASK_SHOT; + bomb->solid = SOLID_BBOX; + v = tv(-8,-8,0); + VectorCopy (v, bomb->mins); + v = tv(8,8,16); + VectorCopy (v, bomb->maxs); + if(self->ctype) + { + bomb->s.modelindex = gi.modelindex ("models/tactical/human_bomb.iqm"); + bomb->touch = hbomb_touch; + bomb->classname = "hbomb"; + } + else + { + bomb->s.modelindex = gi.modelindex ("models/tactical/alien_bomb.iqm"); + bomb->touch = abomb_touch; + bomb->classname = "abomb"; + } + bomb->owner = self; + bomb->think = tactical_bomb_think; + bomb->nextthink = level.time + .1; + bomb->dmg = 1000; //insane amount of damage power + bomb->radius_dmg = 1000; + bomb->dmg_radius = 512; + bomb->takedamage = DAMAGE_YES; + bomb->health = 500; //make it somewhat hard to destroy + bomb->die = bomb_die; + bomb->armed = false; + bomb->nade_timer = 0; + + gi.linkentity (bomb); +} + +#endif diff -Nru alien-arena-7.53+dfsg/source/game/p_client.c alien-arena-7.66+dfsg/source/game/p_client.c --- alien-arena-7.53+dfsg/source/game/p_client.c 2011-11-01 23:55:39.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/p_client.c 2013-06-22 20:07:36.000000000 +0000 @@ -28,6 +28,7 @@ /* Number of gibs to throw on death with lots of damage (including Client Head, where applicable) */ #define DEATH_GIBS_TO_THROW 5 void ClientUserinfoChanged (edict_t *ent, char *userinfo, int whereFrom); +void ClientDisconnect (edict_t *ent); void SP_misc_teleporter_dest (edict_t *ent); /*QUAKED info_player_start (1 0 0) (-16 -16 -24) (16 16 32) @@ -73,7 +74,7 @@ The deathmatch intermission point will be at one of these Use 'angles' instead of 'angle', so you can set pitch or roll as well as yaw. 'pitch yaw roll' */ -void SP_info_player_intermission(void) +void SP_info_player_intermission(edict_t *ent) { } @@ -296,6 +297,10 @@ message = "couldn't hide from"; message2 = "'s vaporizer"; break; + case MOD_MINDERASER: + message = "had it's mind erased by"; + message2 = "'s alien seeker"; + break; case MOD_PLASMA_SPLASH: //blaster splash damage message = "was melted"; message2 = "'s plasma"; @@ -431,7 +436,14 @@ if (deathmatch->value) { - if (ff) { + if(mod == MOD_MINDERASER) + { + self->client->resp.reward_pts = 0; + self->client->resp.powered = false; + } + + if (ff) + { attacker->client->resp.score--; attacker->client->resp.deaths++; if ((dmflags->integer & DF_SKINTEAMS) && !ctf->value) { @@ -441,38 +453,45 @@ blue_team_score--; } } - else { - + else + { attacker->client->resp.score++; - if(!self->groundentity) { + if(!self->groundentity) + { attacker->client->resp.reward_pts+=3; safe_centerprintf(attacker, "Midair shot!\n"); } else attacker->client->resp.reward_pts++; - if(mod == MOD_HEADSHOT) { //3 more pts for a headshot + if(mod == MOD_HEADSHOT) + { + //3 more pts for a headshot attacker->client->resp.reward_pts+=3; safe_centerprintf(attacker, "HEADSHOT!\n"); gi.sound(attacker, CHAN_AUTO, gi.soundindex("misc/headshot.wav"), 1, ATTN_STATIC, 0); } //mutators - if(vampire->value) { + if(vampire->value) + { attacker->health+=20; if(attacker->health > attacker->max_health) attacker->health = attacker->max_health; } self->client->resp.deaths++; - if ((dmflags->integer & DF_SKINTEAMS) && !ctf->value) { - if(attacker->dmteam == RED_TEAM){ + if ((dmflags->integer & DF_SKINTEAMS) && !ctf->value) + { + if(attacker->dmteam == RED_TEAM) + { red_team_score++; safe_bprintf(PRINT_MEDIUM, "Red Team scores!\n"); gi.sound (self, CHAN_AUTO, gi.soundindex("misc/red_scores.wav"), 1, ATTN_NONE, 0); } - else { + else + { blue_team_score++; safe_bprintf(PRINT_MEDIUM, "Blue Team scores!\n"); gi.sound (self, CHAN_AUTO, gi.soundindex("misc/blue_scores.wav"), 1, ATTN_NONE, 0); @@ -481,7 +500,8 @@ } //kill streaks attacker->client->kill_streak++; - switch(attacker->client->kill_streak) { + switch(attacker->client->kill_streak) + { case 3: for (i=0 ; ivalue ; i++) { @@ -525,19 +545,22 @@ default: break; } - if(self->client->kill_streak >=3) { + if(self->client->kill_streak >=3) + { for (i=0 ; ivalue ; i++) - { - cl_ent = g_edicts + 1 + i; - if (!cl_ent->inuse || cl_ent->is_bot) - continue; - safe_centerprintf(cl_ent, "%s's killing spree\nended by %s!\n", cleanname, cleanname2); + { + cl_ent = g_edicts + 1 + i; + if (!cl_ent->inuse || cl_ent->is_bot) + continue; + safe_centerprintf(cl_ent, "%s's killing spree\nended by %s!\n", cleanname, cleanname2); } } } } - if(attacker->client->resp.reward_pts >= g_reward->integer && !attacker->client->resp.powered) { //give them speed and invis powerups + if(attacker->client->resp.reward_pts >= g_reward->integer && !attacker->client->resp.powered) + { + //give them speed and invis powerups it = FindItem("Invisibility"); attacker->client->pers.inventory[ITEM_INDEX(it)] += 1; @@ -558,7 +581,8 @@ } - if(mod == MOD_DEATHRAY) { + if(mod == MOD_DEATHRAY) + { safe_bprintf(PRINT_MEDIUM, "%s killed by Deathray!\n", self->client->pers.netname); //immune player (activator) gets score increase @@ -574,8 +598,21 @@ return; } + if(mod == MOD_SPIDER) + { + safe_bprintf(PRINT_MEDIUM, "%s killed by Spiderbot!\n", self->client->pers.netname); + + self->client->resp.reward_pts = 0; + self->client->resp.powered = false; + + if(inflictor->owner->client) + inflictor->owner->client->resp.score++; + return; + } + safe_bprintf (PRINT_MEDIUM,"%s died.\n", self->client->pers.netname); - if (deathmatch->value) { + if (deathmatch->value) + { self->client->resp.score--; self->client->resp.deaths++; } @@ -594,72 +631,165 @@ qboolean haste; float spread; - if ((!deathmatch->value) || instagib->value || rocket_arena->value || insta_rockets->value) + if ((!deathmatch->value) || instagib->integer || rocket_arena->integer || insta_rockets->value) { return; } item = self->client->pers.weapon; - if (! self->client->pers.inventory[self->client->ammo_index] ) + if (!self->client->pers.inventory[self->client->ammo_index] ) + item = NULL; + +#ifdef ALTERIA + if (item && (strcmp (item->pickup_name, "Warriorpunch") == 0)) + item = NULL; + if (item && (strcmp (item->pickup_name, "Wizardpunch") == 0)) item = NULL; +#else if (item && (strcmp (item->pickup_name, "Blaster") == 0)) item = NULL; + if (item && (strcmp (item->pickup_name, "Alien Blaster") == 0)) + item = NULL; if (item && (strcmp (item->pickup_name, "Violator") == 0)) item = NULL; + if (item && (strcmp (item->pickup_name, "Minderaser") == 0)) + item = NULL; + if (g_tactical->integer && item && (strcmp (item->pickup_name, "Alien Vaporizer") == 0)) + item = NULL; +#endif - if (!(dmflags->integer & DF_QUAD_DROP)) - quad = false; + if(g_tactical->integer) + { + //always drop your weapon on death, even if it isn't the current held item. + if(self->client->pers.inventory[ITEM_INDEX(FindItem("Flame Thrower"))] == 1) + { + item = FindItem( "Flame Thrower" ); + if(item) + { + spread = 0; + self->client->v_angle[YAW] -= spread; + drop = Drop_Item (self, item); + self->client->v_angle[YAW] += spread; + drop->spawnflags = DROPPED_PLAYER_ITEM; + } + } + if(self->client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] == 1) + { + item = FindItem( "Rocket Launcher" ); + if(item) + { + spread = 35; + self->client->v_angle[YAW] -= spread; + drop = Drop_Item (self, item); + self->client->v_angle[YAW] += spread; + drop->spawnflags = DROPPED_PLAYER_ITEM; + } + } + if(self->client->pers.inventory[ITEM_INDEX(FindItem("Pulse Rifle"))] == 1) + { + item = FindItem( "Pulse Rifle" ); + if(item) + { + spread = 70; + self->client->v_angle[YAW] -= spread; + drop = Drop_Item (self, item); + self->client->v_angle[YAW] += spread; + drop->spawnflags = DROPPED_PLAYER_ITEM; + } + } + if(self->client->pers.inventory[ITEM_INDEX(FindItem("Disruptor"))] == 1) + { + item = FindItem( "Disruptor" ); + if(item) + { + spread = 105; + self->client->v_angle[YAW] -= spread; + drop = Drop_Item (self, item); + self->client->v_angle[YAW] += spread; + drop->spawnflags = DROPPED_PLAYER_ITEM; + } + } + if(self->client->pers.inventory[ITEM_INDEX(FindItem("Alien Disruptor"))] == 1) + { + item = FindItem( "Alien Disruptor" ); + if(item) + { + spread = 140; + self->client->v_angle[YAW] -= spread; + drop = Drop_Item (self, item); + self->client->v_angle[YAW] += spread; + drop->spawnflags = DROPPED_PLAYER_ITEM; + } + } + if(self->client->pers.inventory[ITEM_INDEX(FindItem("Alien Smartgun"))] == 1) + { + item = FindItem( "Alien Smartgun" ); + if(item) + { + spread = 175; + self->client->v_angle[YAW] -= spread; + drop = Drop_Item (self, item); + self->client->v_angle[YAW] += spread; + drop->spawnflags = DROPPED_PLAYER_ITEM; + } + } + } else - quad = (self->client->quad_framenum > (level.framenum + 10)); + { + if (!(dmflags->integer & DF_QUAD_DROP)) + quad = false; + else + quad = (self->client->quad_framenum > (level.framenum + 10)); - sproing = (self->client->sproing_framenum > (level.framenum + 10)); - haste = (self->client->haste_framenum > (level.framenum + 10)); + sproing = (self->client->sproing_framenum > (level.framenum + 10)); + haste = (self->client->haste_framenum > (level.framenum + 10)); - if ((item && quad) || (item && haste) || (item && sproing)) - spread = 22.5; - else - spread = 0.0; + if ((item && quad) || (item && haste) || (item && sproing)) + spread = 22.5; + else + spread = 0.0; - if (item) - { - self->client->v_angle[YAW] -= spread; - drop = Drop_Item (self, item); - self->client->v_angle[YAW] += spread; - drop->spawnflags = DROPPED_PLAYER_ITEM; - } + if (item) + { + self->client->v_angle[YAW] -= spread; + drop = Drop_Item (self, item); + self->client->v_angle[YAW] += spread; + drop->spawnflags = DROPPED_PLAYER_ITEM; + } - if (quad) - { - self->client->v_angle[YAW] += spread; - drop = Drop_Item (self, FindItemByClassname ("item_quad")); - self->client->v_angle[YAW] -= spread; - drop->spawnflags |= DROPPED_PLAYER_ITEM; + if (quad) + { + self->client->v_angle[YAW] += spread; + drop = Drop_Item (self, FindItemByClassname ("item_quad")); + self->client->v_angle[YAW] -= spread; + drop->spawnflags |= DROPPED_PLAYER_ITEM; - drop->touch = Touch_Item; - drop->nextthink = level.time + (self->client->quad_framenum - level.framenum) * FRAMETIME; - drop->think = G_FreeEdict; - } - if (sproing && !self->client->resp.powered) - { - self->client->v_angle[YAW] += spread; - drop = Drop_Item (self, FindItemByClassname ("item_sproing")); - self->client->v_angle[YAW] -= spread; - drop->spawnflags |= DROPPED_PLAYER_ITEM; + drop->touch = Touch_Item; + drop->nextthink = level.time + (self->client->quad_framenum - level.framenum) * FRAMETIME; + drop->think = G_FreeEdict; + } + if (sproing && !self->client->resp.powered) + { + self->client->v_angle[YAW] += spread; + drop = Drop_Item (self, FindItemByClassname ("item_sproing")); + self->client->v_angle[YAW] -= spread; + drop->spawnflags |= DROPPED_PLAYER_ITEM; - drop->touch = Touch_Item; - drop->nextthink = level.time + (self->client->sproing_framenum - level.framenum) * FRAMETIME; - drop->think = G_FreeEdict; - } - if (haste && !self->client->resp.powered) - { - self->client->v_angle[YAW] += spread; - drop = Drop_Item (self, FindItemByClassname ("item_haste")); - self->client->v_angle[YAW] -= spread; - drop->spawnflags |= DROPPED_PLAYER_ITEM; + drop->touch = Touch_Item; + drop->nextthink = level.time + (self->client->sproing_framenum - level.framenum) * FRAMETIME; + drop->think = G_FreeEdict; + } + if (haste && !self->client->resp.powered) + { + self->client->v_angle[YAW] += spread; + drop = Drop_Item (self, FindItemByClassname ("item_haste")); + self->client->v_angle[YAW] -= spread; + drop->spawnflags |= DROPPED_PLAYER_ITEM; - drop->touch = Touch_Item; - drop->nextthink = level.time + (self->client->haste_framenum - level.framenum) * FRAMETIME; - drop->think = G_FreeEdict; + drop->touch = Touch_Item; + drop->nextthink = level.time + (self->client->haste_framenum - level.framenum) * FRAMETIME; + drop->think = G_FreeEdict; + } } } @@ -722,8 +852,6 @@ info = Info_ValueForKey (self->client->pers.userinfo, "skin"); self->s.modelindex2 = 0; // remove linked weapon model - if(info[0] == 'b') //fix this ugly crap before ver 3.0! - self->s.modelindex4 = 0; //remove brainlet gunrack if(ctf->value) self->s.modelindex4 = 0; // remove linked ctf flag @@ -751,12 +879,14 @@ ClientObituary (self, inflictor, attacker); if(got_vehicle) //special for vehicles VehicleDeadDrop(self); - else { + else + { if(!excessive->value) TossClientWeapon (self); } - if(ctf->value) { + if(ctf->value) + { //check to see if they had a flag flag1_item = flag2_item = NULL; @@ -766,9 +896,9 @@ if (self->client->pers.inventory[ITEM_INDEX(flag1_item)] || self->client->pers.inventory[ITEM_INDEX(flag1_item)]) hasFlag = true; - CTFDeadDropFlag(self, attacker); - if(anticamp->value && meansOfDeath == MOD_SUICIDE && hasFlag) { - + CTFDeadDropFlag(self, attacker); + if(anticamp->value && meansOfDeath == MOD_SUICIDE && hasFlag) + { //make campers really pay for hiding flags if(self->dmteam == BLUE_TEAM) CTFResetFlag(RED_TEAM); @@ -781,27 +911,35 @@ CTFPlayerResetGrapple(self); - if (deathmatch->value) - Cmd_Help_f (self); // show scores + if (deathmatch->integer && !self->is_bot) + { + ACESP_UpdateBots(); + self->client->showscores = false; // override toggle + Cmd_Score_f( self ); + } - if(self->health < -40 && attacker->client) { - attacker->client->resp.reward_pts++; - if(attacker->client->resp.reward_pts >= g_reward->integer && !attacker->client->resp.powered) { //give them speed and invis powerups - it = FindItem("Invisibility"); - attacker->client->pers.inventory[ITEM_INDEX(it)] += 1; + if(attacker) + { + if(self->health < -40 && attacker->client) + { + attacker->client->resp.reward_pts++; + if(attacker->client->resp.reward_pts >= g_reward->integer && !attacker->client->resp.powered) + { //give them speed and invis powerups + it = FindItem("Invisibility"); + attacker->client->pers.inventory[ITEM_INDEX(it)] += 1; - it = FindItem("Sproing"); - attacker->client->pers.inventory[ITEM_INDEX(it)] += 1; + it = FindItem("Sproing"); + attacker->client->pers.inventory[ITEM_INDEX(it)] += 1; - it = FindItem("Haste"); - attacker->client->pers.inventory[ITEM_INDEX(it)] += 1; + it = FindItem("Haste"); + attacker->client->pers.inventory[ITEM_INDEX(it)] += 1; - attacker->client->resp.powered = true; + attacker->client->resp.powered = true; - gi.sound (attacker, CHAN_VOICE, gi.soundindex("misc/pc_up.wav"), 1, ATTN_STATIC, 0); + gi.sound (attacker, CHAN_VOICE, gi.soundindex("misc/pc_up.wav"), 1, ATTN_STATIC, 0); + } } } - } // remove powerups @@ -823,6 +961,7 @@ { /* If deathcam is active, switch client model to nothing */ self->s.modelindex = 0; + self->s.effects = 0; self->solid = SOLID_NOT; number_of_gibs = DEATH_GIBS_TO_THROW; @@ -834,8 +973,8 @@ number_of_gibs = DEATH_GIBS_TO_THROW - 1; } - if(self->ctype == 0) { //alien - + if(self->ctype == 0) + { //alien gi.WriteByte (svc_temp_entity); gi.WriteByte (TE_DEATHFIELD); gi.WritePosition (self->s.origin); @@ -849,9 +988,11 @@ ThrowGib (self, "models/objects/debris2/tris.md2", damage, GIB_METALLIC, 0); } } - else if(self->ctype == 2) { //robot + else if(self->ctype == 2) + { //robot gib_effect = 0; - for (n= 0; n < number_of_gibs; n++) { + for (n= 0; n < number_of_gibs; n++) + { ThrowGib (self, "models/objects/debris3/tris.md2", damage, GIB_METALLIC, 0); ThrowGib (self, "models/objects/debris1/tris.md2", damage, GIB_METALLIC, 0); } @@ -861,8 +1002,8 @@ gi.WritePosition (self->s.origin); gi.multicast (self->s.origin, MULTICAST_PHS); } - else { //human - + else + { //human gi.WriteByte (svc_temp_entity); gi.WriteByte (TE_DEATHFIELD2); gi.WritePosition (self->s.origin); @@ -870,7 +1011,8 @@ gi.multicast (self->s.origin, MULTICAST_PVS); gib_effect = EF_GIB; - for (n= 0; n < number_of_gibs; n++) { + for (n= 0; n < number_of_gibs; n++) + { if(mod == MOD_R_SPLASH || mod == MOD_ROCKET) ThrowGib (self, "models/objects/gibs/sm_meat/tris.md2", damage, GIB_METALLIC, EF_SHIPEXHAUST); else @@ -878,7 +1020,8 @@ } } - if(self->usegibs) { + if(self->usegibs) + { if(mod == MOD_R_SPLASH || mod == MOD_ROCKET) gib_effect = EF_SHIPEXHAUST; ThrowGib (self, self->head, damage, GIB_ORGANIC, gib_effect); @@ -943,15 +1086,19 @@ gitem_t *item; int queue=0; - if(g_duel->value) //need to save this off in duel mode. Potentially dangerous? + if(g_duel->integer) //need to save this off in duel mode. Potentially dangerous? queue = client->pers.queue; memset (&client->pers, 0, sizeof(client->pers)); - if(g_duel->value) + if(g_duel->integer) client->pers.queue = queue; - if(!rocket_arena->value) { //gets a violator, unless RA +#ifdef ALTERIA + item = FindItem("Warriorpunch"); +#else + if(!rocket_arena->integer && !g_tactical->integer) + { //gets a violator, unless RA or Tactical item = FindItem("Violator"); client->pers.selected_item = ITEM_INDEX(item); client->pers.inventory[client->pers.selected_item] = 1; @@ -959,17 +1106,19 @@ } //mutator - will need to have item - if(instagib->value) { + if(instagib->integer) + { client->pers.inventory[ITEM_INDEX(FindItem("Alien Disruptor"))] = 1; client->pers.inventory[ITEM_INDEX(FindItem("cells"))] = g_maxcells->value; item = FindItem("Alien Disruptor"); } - else if(rocket_arena->value) { + else if(rocket_arena->integer) + { client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] = 1; client->pers.inventory[ITEM_INDEX(FindItem("rockets"))] = g_maxrockets->value; item = FindItem("Rocket Launcher"); } - else if ( insta_rockets->integer ) + else if (insta_rockets->integer ) { client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] = 1; client->pers.inventory[ITEM_INDEX(FindItem("rockets"))] = g_maxrockets->value; @@ -978,15 +1127,16 @@ client->pers.inventory[ITEM_INDEX(FindItem("cells"))] = g_maxcells->value; item = FindItem("Alien Disruptor"); } - else + else item = FindItem("Blaster"); - +#endif client->pers.selected_item = ITEM_INDEX(item); client->pers.inventory[client->pers.selected_item] = 1; client->pers.weapon = item; - if(excessive->value) { + if(excessive->value) + { //Allow custom health, even in excessive. client->pers.health = g_spawnhealth->value * 3; client->pers.max_bullets = g_maxbullets->value * 2.5; @@ -995,6 +1145,8 @@ client->pers.max_grenades = g_maxgrenades->value * 10; client->pers.max_cells = g_maxcells->value * 2.5; client->pers.max_slugs = g_maxslugs->value * 10; + client->pers.max_seekers = g_maxseekers->value * 2; + client->pers.max_bombs = g_maxbombs->value * 2; client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] = 1; client->pers.inventory[ITEM_INDEX(FindItem("rockets"))] = g_maxrockets->value * 10; @@ -1009,7 +1161,12 @@ client->pers.inventory[ITEM_INDEX(FindItem("slugs"))] = g_maxslugs->value * 10; client->pers.inventory[ITEM_INDEX(FindItem("Flame Thrower"))] = 1; client->pers.inventory[ITEM_INDEX(FindItem("napalm"))] = g_maxgrenades->value * 10; - } else { + client->pers.inventory[ITEM_INDEX(FindItem("Minderaser"))] = 1; + client->pers.inventory[ITEM_INDEX(FindItem("seekers"))] = g_maxseekers->value * 2; + client->pers.inventory[ITEM_INDEX(FindItem("bombs"))] = g_maxbombs->value * 2; + } + else + { client->pers.health = g_spawnhealth->value; client->pers.max_bullets = g_maxbullets->value; client->pers.max_shells = g_maxshells->value; @@ -1017,6 +1174,8 @@ client->pers.max_grenades = g_maxgrenades->value; client->pers.max_cells = g_maxcells->value; client->pers.max_slugs = g_maxslugs->value; + client->pers.max_seekers = g_maxseekers->value; + client->pers.max_bombs = g_maxbombs->value; } if(vampire->value) @@ -1026,13 +1185,15 @@ else client->pers.max_health = g_maxhealth->value; - if(grapple->value) { + if(grapple->value) + { item = FindItem("Grapple"); client->pers.inventory[ITEM_INDEX(item)] = 1; } //if powered up, give back powerups - if(client->resp.powered) { + if(client->resp.powered) + { item = FindItem("Invisibility"); client->pers.inventory[ITEM_INDEX(item)] += 1; @@ -1329,17 +1490,27 @@ float range, range1, range2; char *cname; - - switch (ent->dmteam) { - case RED_TEAM: - cname = "info_player_red"; - break; - case BLUE_TEAM: - cname = "info_player_blue"; - break; - case NO_TEAM: - default: - return SelectRandomCTFSpawnPoint(); + if(g_tactical->value) + { + if(ent->ctype == 1) + cname = "info_player_red"; + else + cname = "info_player_blue"; + } + else + { + switch (ent->dmteam) + { + case RED_TEAM: + cname = "info_player_red"; + break; + case BLUE_TEAM: + cname = "info_player_blue"; + break; + case NO_TEAM: + default: + return SelectRandomCTFSpawnPoint(); + } } spot = NULL; @@ -1397,13 +1568,16 @@ { edict_t *spot = NULL; - if (deathmatch->value) { - if (ctf->value || tca->value || cp->value || (dmflags->integer & DF_SKINTEAMS)) { + if (deathmatch->value) + { + if (g_tactical->value || ctf->value || tca->value || cp->value || (dmflags->integer & DF_SKINTEAMS)) + { spot = SelectCTFSpawnPoint(ent); if(!spot) spot = SelectDeathmatchSpawnPoint (); } - else { + else + { spot = SelectDeathmatchSpawnPoint (); if(!spot) spot = SelectCTFSpawnPoint(ent); //dm on team based maps @@ -1454,6 +1628,7 @@ ent->s.modelindex2 = 0; ent->s.modelindex3 = 0; ent->s.modelindex4 = 0; + ent->s.effects = 0; return; } ent->nextthink = level.time + .1; @@ -1660,6 +1835,112 @@ /* =========== +ParseClassFile + +Used in tactical mode for setting class items +=========== +*/ + +void ParseClassFile( char *config_file, edict_t *ent ) +{ + char full_path[MAX_OSPATH]; + FILE *fp; + int length; + char a_string[128]; + char *buffer; + char *s; + size_t result; + + if ( gi.FullPath( full_path, sizeof(full_path), config_file ) ) + { + + if((fp = fopen(full_path, "rb" )) == NULL) + { + return; + } + if ( fseek(fp, 0, SEEK_END) ) + { // seek error + fclose( fp ); + return; + } + if ( (length = ftell(fp)) == (size_t)-1L ) + { // tell error + fclose( fp ); + return; + } + if ( fseek(fp, 0, SEEK_SET) ) + { // seek error + fclose( fp ); + return; + } + + buffer = malloc( length + 1 ); + if ( buffer != NULL ) + { + buffer[length] = 0; + result = fread( buffer, length, 1, fp ); + if ( result == 1 ) + { + s = buffer; + + strcpy( a_string, COM_Parse( &s ) ); + ent->max_health = atoi(a_string); + strcpy( a_string, COM_Parse( &s ) ); + ent->armor_type = atoi(a_string); + strcpy( a_string, COM_Parse( &s ) ); + ent->has_bomb = atoi(a_string); + strcpy( a_string, COM_Parse( &s ) ); + ent->has_detonator = atoi(a_string); + strcpy( a_string, COM_Parse( &s ) ); + ent->has_minderaser = atoi(a_string); + strcpy( a_string, COM_Parse( &s ) ); + ent->has_vaporizor = atoi(a_string); + + //note - we may or may not need the ent vars, for now keep them + if(ent->max_health > 0) + ent->health = ent->client->pers.max_health = ent->client->pers.health = ent->max_health; + else + ent->max_health = 100; + + switch(ent->armor_type) + { + default: + case 0: + break; + case 1: + ent->client->pers.inventory[ITEM_INDEX(FindItem("Jacket Armor"))] += 30; + break; + case 2: + ent->client->pers.inventory[ITEM_INDEX(FindItem("Body Armor"))] += 50; + break; + case 3: + ent->client->pers.inventory[ITEM_INDEX(FindItem("Jacket Armor"))] += 30; + break; + } + + if(ent->has_minderaser) + { + ent->client->pers.inventory[ITEM_INDEX(FindItem("Minderaser"))] = 1; + ent->client->pers.inventory[ITEM_INDEX(FindItem("seekers"))] = 1; + } + + if(ent->has_vaporizor) + { + ent->client->pers.inventory[ITEM_INDEX(FindItem("Alien Vaporizer"))] = 1; + ent->client->pers.inventory[ITEM_INDEX(FindItem("slugs"))] = 4; + } + } + + free( buffer ); + } + fclose( fp ); + } + + return; +} + +/* +=========== PutClientInServer Called when a player connects to a server or respawns in @@ -1686,7 +1967,8 @@ // find a spawn point // do it before setting health back up, so farthest // ranging doesn't count this client - SelectSpawnPoint (ent, spawn_origin, spawn_angles); + if(!g_tactical->integer) + SelectSpawnPoint (ent, spawn_origin, spawn_angles); index = ent-g_edicts-1; client = ent->client; @@ -1758,11 +2040,7 @@ // clear playerstate values memset (&ent->client->ps, 0, sizeof(client->ps)); - - client->ps.pmove.origin[0] = spawn_origin[0]*8; - client->ps.pmove.origin[1] = spawn_origin[1]*8; - client->ps.pmove.origin[2] = spawn_origin[2]*8; - + //remove these if there are there if(ent->client->oldplayer) G_FreeEdict (ent->client->oldplayer); @@ -1800,7 +2078,8 @@ sprintf(modelpath, "players/%s/helmet.md2", playermodel); Q2_FindFile (modelpath, &file); //does a helmet exist? - if(file) { + if(file) + { sprintf(modelpath, "players/%s/helmet.md2", playermodel); ent->s.modelindex3 = gi.modelindex(modelpath); fclose(file); @@ -1811,31 +2090,92 @@ ent->s.modelindex4 = 0; //check for class file +#ifdef ALTERIA + ent->ctype = 0; //wizard is default + sprintf(modelpath, "players/%s/human", playermodel); + Q2_FindFile (modelpath, &file); + if(file) + { //warrior + ent->ctype = 1; + + ent->health = ent->max_health = client->pers.max_health = client->pers.health = 100; + armor_index = ITEM_INDEX(FindItem("Jacket Armor")); + client->pers.inventory[armor_index] += 30; + client->pers.inventory[ITEM_INDEX(FindItem("Warriorpunch"))] = 1; + item = FindItem("Warriorpunch"); + client->pers.selected_item = ITEM_INDEX(item); + client->pers.inventory[client->pers.selected_item] = 1; + client->pers.weapon = item; + + fclose(file); + } + else + { //wizard + + ent->health = ent->max_health = client->pers.max_health = client->pers.health = 150; + client->pers.inventory[ITEM_INDEX(FindItem("Wizardpunch"))] = 1; + //client->pers.inventory[ITEM_INDEX(FindItem("cells"))] = 100; //to to - blue or yellow mana + item = FindItem("Wizardpunch"); + client->pers.selected_item = ITEM_INDEX(item); + client->pers.inventory[client->pers.selected_item] = 1; + client->pers.weapon = item; + } +#else ent->ctype = 0; //alien is default sprintf(modelpath, "players/%s/human", playermodel); + sprintf(ent->charModel, playermodel); Q2_FindFile (modelpath, &file); - if(file) { //human + if(file) + { + fclose(file); + + //human ent->ctype = 1; - if(classbased->value && !(rocket_arena->value || instagib->value || insta_rockets->value || excessive->value)) - { - ent->health = ent->max_health = client->pers.max_health = client->pers.health = 100; - armor_index = ITEM_INDEX(FindItem("Jacket Armor")); - client->pers.inventory[armor_index] += 30; - client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] = 1; - client->pers.inventory[ITEM_INDEX(FindItem("rockets"))] = 10; - item = FindItem("Rocket Launcher"); + if(g_tactical->integer || (classbased->value && !(rocket_arena->integer || instagib->integer || insta_rockets->value || excessive->value))) + { + if(g_tactical->integer) + { + //read class file(tactical only) + //example: + //100-150 (health) + //0-3 (armor type) + //0-1 (has bomb) + //0-1 (has detonator) + //0-1 (has mind eraser) + //0-1 (has vaporizor) + + ParseClassFile(modelpath, ent); + if(ent->has_bomb) + { + ent->client->pers.inventory[ITEM_INDEX(FindItem("Human Bomb"))] = 1; + ent->client->pers.inventory[ITEM_INDEX(FindItem("bombs"))] = 1; //tactical note - humans will use same ammo, etc, just different weapons + } + item = FindItem("Blaster"); + } + else + { + ent->health = ent->max_health = client->pers.max_health = client->pers.health = 100; + armor_index = ITEM_INDEX(FindItem("Jacket Armor")); + client->pers.inventory[armor_index] += 30; + + client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] = 1; + client->pers.inventory[ITEM_INDEX(FindItem("rockets"))] = 10; + item = FindItem("Rocket Launcher"); + } client->pers.selected_item = ITEM_INDEX(item); client->pers.inventory[client->pers.selected_item] = 1; client->pers.weapon = item; - } - fclose(file); + } } - else { //robot + else + { + //robot - not used in tactical - should we kick them out at this point, or just let them continue on the alien team? sprintf(modelpath, "players/%s/robot", playermodel); Q2_FindFile (modelpath, &file); - if(file) { + if(file && !g_tactical->integer) + { ent->ctype = 2; - if(classbased->value && !(rocket_arena->value || instagib->value || insta_rockets->value || excessive->value)) + if(classbased->value && !(rocket_arena->integer || instagib->integer || insta_rockets->value || excessive->value)) { ent->health = ent->max_health = client->pers.max_health = client->pers.health = 85; armor_index = ITEM_INDEX(FindItem("Combat Armor")); @@ -1844,19 +2184,52 @@ fclose(file); } else - { //alien - if(classbased->value && !(rocket_arena->value || instagib->value || insta_rockets->value || excessive->value)) + { + //alien + ent->ctype = 0; + if(g_tactical->integer || (classbased->value && !(rocket_arena->integer || instagib->integer || insta_rockets->value || excessive->value))) { ent->health = ent->max_health = client->pers.max_health = client->pers.health = 150; - client->pers.inventory[ITEM_INDEX(FindItem("Alien Disruptor"))] = 1; - client->pers.inventory[ITEM_INDEX(FindItem("cells"))] = 100; - item = FindItem("Alien Disruptor"); + if(g_tactical->integer) + { + sprintf(modelpath, "players/%s/alien", playermodel); + Q2_FindFile (modelpath, &file); + if(file) + { + ParseClassFile(modelpath, ent); + if(ent->has_bomb) + { + ent->client->pers.inventory[ITEM_INDEX(FindItem("Alien Bomb"))] = 1; + ent->client->pers.inventory[ITEM_INDEX(FindItem("bombs"))] = 1; //tactical note - humans will use same ammo, etc, just different weapons + } + } + item = FindItem("Blaster"); + client->pers.selected_item = ITEM_INDEX(item); + client->pers.inventory[client->pers.selected_item] = 0; + + item = FindItem("Alien Blaster"); + } + else + { + client->pers.inventory[ITEM_INDEX(FindItem("Alien Disruptor"))] = 1; + client->pers.inventory[ITEM_INDEX(FindItem("cells"))] = 100; + item = FindItem("Alien Disruptor"); + } client->pers.selected_item = ITEM_INDEX(item); client->pers.inventory[client->pers.selected_item] = 1; - client->pers.weapon = item; + client->pers.weapon = item; } } } +#endif + + //has to be done after determining the class/team - note - we don't care about spawn distances in tactical + if(g_tactical->integer) + SelectSpawnPoint (ent, spawn_origin, spawn_angles); + + client->ps.pmove.origin[0] = spawn_origin[0]*8; + client->ps.pmove.origin[1] = spawn_origin[1]*8; + client->ps.pmove.origin[2] = spawn_origin[2]*8; ent->s.frame = 0; VectorCopy (spawn_origin, ent->s.origin); @@ -1903,13 +2276,15 @@ client->spawnprotecttime = level.time; //unlagged - if ( g_antilag->integer) { + if ( g_antilag->integer) + { G_ResetHistory( ent ); // and this is as good a time as any to clear the saved state client->saved.leveltime = 0; } } +//DUEL MODE void ClientPlaceInQueue(edict_t *ent) { int i; @@ -1917,8 +2292,10 @@ highestpos = induel = numplayers = 0; - for (i = 0; i < g_maxclients->value; i++) { - if(g_edicts[i+1].inuse && g_edicts[i+1].client) { + for (i = 0; i < g_maxclients->value; i++) + { + if(g_edicts[i+1].inuse && g_edicts[i+1].client) + { if(g_edicts[i+1].client->pers.queue > highestpos) //only count players that are actually in highestpos = g_edicts[i+1].client->pers.queue; if(g_edicts[i+1].client->pers.queue && g_edicts[i+1].client->pers.queue < 3) @@ -1942,7 +2319,9 @@ int i; int numplayers = 0; - if(ent->client->pers.queue > 2) { //everyone in line remains a spectator + if(ent->client->pers.queue > 2) + { + //everyone in line remains a spectator ent->client->pers.spectator = ent->client->resp.spectator = 1; ent->client->chase_target = NULL; ent->movetype = MOVETYPE_NOCLIP; @@ -1951,9 +2330,12 @@ ent->client->ps.gunindex = 0; gi.linkentity (ent); } - else { - for (i = 0; i < g_maxclients->value; i++) { - if(g_edicts[i+1].inuse && g_edicts[i+1].client) { + else + { + for (i = 0; i < g_maxclients->value; i++) + { + if(g_edicts[i+1].inuse && g_edicts[i+1].client) + { if(!g_edicts[i+1].client->pers.spectator && g_edicts[i+1].client->pers.queue) numplayers++; } @@ -1967,12 +2349,17 @@ int i; qboolean putonein = false; - for (i = 0; i < g_maxclients->value; i++) { //move everyone down - if(g_edicts[i+1].inuse && g_edicts[i+1].client) { + for (i = 0; i < g_maxclients->value; i++) + { + //move everyone down + if(g_edicts[i+1].inuse && g_edicts[i+1].client) + { if(g_edicts[i+1].client->pers.queue > ent->client->pers.queue) g_edicts[i+1].client->pers.queue--; - if(!putonein && g_edicts[i+1].client->pers.queue == 2 && g_edicts[i+1].client->resp.spectator) { //make sure those who should be in game are + if(!putonein && g_edicts[i+1].client->pers.queue == 2 && g_edicts[i+1].client->resp.spectator) + { + //make sure those who should be in game are g_edicts[i+1].client->pers.spectator = g_edicts[i+1].client->resp.spectator = false; g_edicts[i+1].svflags &= ~SVF_NOCLIENT; g_edicts[i+1].movetype = MOVETYPE_WALK; @@ -1990,7 +2377,7 @@ if(ent->client) ent->client->pers.queue = 0; } - +//END DUEL MODE #define MAX_MOTD_SIZE 500 @@ -2062,8 +2449,28 @@ ent->svflags &= ~SVF_NOCLIENT; PutClientInServer (ent); + //kick and blackhole a player in tactical that is not using an authorized character! + if(g_tactical->integer) + { + //we want to actually check their model to be one of the valid ones we use + if(strcmp("martianenforcer", ent->charModel) && strcmp("martianwarrior", ent->charModel) && strcmp("martianoverlord", ent->charModel) + && strcmp("lauren", ent->charModel) && strcmp("enforcer", ent->charModel) && strcmp("commander", ent->charModel)) + { + if ( ent->is_bot ) + { + ACESP_KickBot( ent ); + } + else + { + safe_bprintf(PRINT_HIGH, "%s was kicked for using invalid character class!\n", ent->client->pers.netname); + ClientDisconnect (ent); + } + } + } + //in ctf, initially start in chase mode, and allow them to choose a team - if( TEAM_GAME ) { + if( TEAM_GAME ) + { ent->client->pers.spectator = 1; ent->client->chase_target = NULL; ent->client->resp.spectator = 1; @@ -2084,7 +2491,8 @@ //if duel mode, then check number of existing players. If more there are already two in the game, force //this player to spectator mode, and assign a queue position(we can use the spectator cvar for this) - else if(g_duel->value) { + else if(g_duel->integer) + { ClientPlaceInQueue(ent); ClientCheckQueue(ent); } @@ -2192,13 +2600,13 @@ if(whereFrom != SPAWN && whereFrom != CONNECT) whereFrom = INGAME; - if(playervote.called && whereFrom == INGAME) - return; //do not allow people to change info during votes + if((playervote.called || g_tactical->integer ) && whereFrom == INGAME) + return; //do not allow people to change info during votes or in tactical mode(yet) - if(((dmflags->integer & DF_SKINTEAMS) || ctf->value || tca->value || cp->value) && !whereFrom && (ent->dmteam != NO_TEAM)) { + /*if(((dmflags->integer & DF_SKINTEAMS) || ctf->value || tca->value || cp->value) && !whereFrom && (ent->dmteam != NO_TEAM)) { safe_bprintf (PRINT_MEDIUM, "Changing settings not allowed during a team game\n"); return; - } + }*/ // validate and set name s = Info_ValueForKey (userinfo, "name"); @@ -2211,14 +2619,16 @@ // end name validate //spectator mode - if ( !g_duel->value ) - { // never fool with spectating in duel mode + if ( !g_duel->integer ) + { + // never fool with spectating in duel mode // set spectator s = Info_ValueForKey (userinfo, "spectator"); if ( TEAM_GAME ) { // if ( strcmp( s, "2" ) ) - { // not special team game spectate + { + // not special team game spectate // so make sure it stays 0 Info_SetValueForKey( userinfo, "spectator", "0"); } @@ -2290,10 +2700,10 @@ //check for duplicates(but not on respawns) duplicate = false; - if(whereFrom != SPAWN) { - - for (j=0; jvalue ; j++) { - + if(whereFrom != SPAWN) + { + for (j=0; jvalue ; j++) + { cl_ent = g_edicts + 1 + j; if (!cl_ent->inuse) continue; @@ -2305,7 +2715,9 @@ } } - if(duplicate && playernum < 100) { //just paranoia, should never be more than 64 + if(duplicate && playernum < 100) + { + //just paranoia, should never be more than 64 #if defined WIN32_VARIANT i = sprintf_s(slot, sizeof(slot), "%i", playernum); @@ -2349,7 +2761,8 @@ sprintf(modelpath, "players/%s/helmet.md2", playermodel); Q2_FindFile (modelpath, &file); //does a helmet exist? - if(file) { + if(file) + { sprintf(modelpath, "players/%s/helmet.md2", playermodel); ent->s.modelindex3 = gi.modelindex(modelpath); fclose(file); @@ -2359,12 +2772,14 @@ ent->s.modelindex4 = 0; - //do gib checking here + //do gib checking here - to do - let's replace these model specific gibs with class type specific(alien/robot/human) //check for gib file ent->usegibs = 0; //alien is default sprintf(modelpath, "players/%s/usegibs", playermodel); Q2_FindFile (modelpath, &file); - if(file) { //use model specific gibs + if(file) + { + //use model specific gibs ent->usegibs = 1; sprintf(ent->head, "players/%s/head.md2", playermodel); sprintf(ent->body, "players/%s/body.md2", playermodel); @@ -2424,6 +2839,7 @@ // fix player name if corrupted if ( s != NULL && s[0] ) { + Q_strncpyz2( tmp_playername, s, sizeof(tmp_playername ) ); ValidatePlayerName( tmp_playername, sizeof(tmp_playername ) ); Q_strncpyz2(ent->client->pers.netname, tmp_playername, @@ -2608,9 +3024,9 @@ safe_bprintf (PRINT_HIGH, "%s disconnected\n", ent->client->pers.netname); if(ctf->value) - { //if carrying flag, don't take it with you! no attacker points. - CTFDeadDropFlag(ent, NULL); - } + { //if carrying flag, don't take it with you! no attacker points. + CTFDeadDropFlag(ent, NULL); + } DeadDropDeathball(ent); @@ -2618,7 +3034,7 @@ DeathcamRemove(ent, "off"); //if in duel mode, we need to bump people down the queue if its the player in game leaving - if(g_duel->value) { + if(g_duel->integer) { MoveClientsDownQueue(ent); if(!ent->client->resp.spectator) { for (i = 0; i < g_maxclients->value; i++) //clear scores if player was in duel @@ -2634,6 +3050,8 @@ gi.unlinkentity (ent); ent->s.modelindex = 0; + ent->s.effects = 0; + ent->s.sound = 0; ent->solid = SOLID_NOT; ent->inuse = false; ent->classname = "disconnected"; @@ -2952,8 +3370,10 @@ // If the MOTD is being forced on, decrease frame counter // and re-send the file if necessary - if ( client->motd_frames ) { - if ( level.time - floor( level.time ) != 0 ) { + if ( client->motd_frames ) + { + if ( level.time - floor( level.time ) != 0 ) + { SendMessageOfTheDay( ent ); } client->motd_frames --; @@ -2969,12 +3389,13 @@ // can exit intermission after 10 seconds, or 20 if map voting enables // (voting will only work if g_mapvote wasn't modified during intermission) - if (g_mapvote->value && ! g_mapvote->modified) { - + if (g_mapvote->value && ! g_mapvote->modified) + { //print out results, track winning map mostvotes = 0; - for (j = 0; j < 4; j++) { + for (j = 0; j < 4; j++) + { if (votedmap[j].tally > mostvotes) mostvotes = votedmap[j].tally; } @@ -2984,7 +3405,8 @@ // we're using a random value for the next map // if a choice needs to be done n_candidates = 0; - for ( j = 0 ; j < 4 ; j ++ ) { + for ( j = 0 ; j < 4 ; j ++ ) + { if ( votedmap[j].tally < mostvotes ) continue; map_candidates[n_candidates ++] = j; @@ -2997,7 +3419,8 @@ { // "old" voting system, take the first map that // has enough votes - for ( j = 0 ; j < 4 ; j ++ ) { + for ( j = 0 ; j < 4 ; j ++ ) + { i = (j + 1) % 4; if ( votedmap[i].tally < mostvotes ) continue; @@ -3010,7 +3433,8 @@ && (ucmd->buttons & BUTTON_ANY) ) level.exitintermission = true; } - else { + else + { if (level.time > level.intermissiontime + 10.0 && (ucmd->buttons & BUTTON_ANY) ) level.exitintermission = true; @@ -3024,15 +3448,14 @@ pm_passent = ent; - if (ent->client->chase_target) { - + if (ent->client->chase_target) + { client->resp.cmd_angles[0] = SHORT2ANGLE(ucmd->angles[0]); client->resp.cmd_angles[1] = SHORT2ANGLE(ucmd->angles[1]); client->resp.cmd_angles[2] = SHORT2ANGLE(ucmd->angles[2]); - } else { - - + } else + { // set up for pmove memset (&pm, 0, sizeof(pm)); @@ -3071,26 +3494,73 @@ pm.snapinitial = true; } + if(g_tactical->integer) + { + //limit acceleration + if(ucmd->forwardmove > 200) + ucmd->forwardmove = 200; + if(ucmd->forwardmove < -200) + ucmd->forwardmove = -200; + if(ucmd->sidemove > 200) + ucmd->sidemove = 200; + if(ucmd->sidemove < -200) + ucmd->sidemove = -200; + } + ucmd->forwardmove *= 1.3; - //dodging - client->dodge = false; - if((level.time - client->lastdodge) > 1.0 && ent->groundentity && ucmd->forwardmove == 0 && ucmd->sidemove != 0 && client->moved == false - && ((level.time - client->lastmovetime) < .15)) - { - if((ucmd->sidemove < 0 && client->lastsidemove < 0) || (ucmd->sidemove > 0 && client->lastsidemove > 0)) { - if(ucmd->sidemove > 0) - client->dodge = 1; - else - client->dodge = -1; - ucmd->upmove += 100; + //tactical + if(g_tactical->integer) + { + client->dodge = false; + } + else + { + //dodging + client->dodge = false; + + if((level.time - client->lastdodge) > 1.0 && ent->groundentity && ucmd->forwardmove == 0 && ucmd->sidemove != 0 && client->moved == false + && client->keydown < 10 && ((level.time - client->lastmovetime) < .15)) + { + if((ucmd->sidemove < 0 && client->lastsidemove < 0) || (ucmd->sidemove > 0 && client->lastsidemove > 0)) + { + if(ucmd->sidemove > 0) + client->dodge = 1; + else + client->dodge = -1; + ucmd->upmove += 100; + } } + if((level.time - client->lastdodge) > 1.0 && ent->groundentity && ucmd->forwardmove != 0 && ucmd->sidemove == 0 && client->moved == false + && client->keydown < 10 && ((level.time - client->lastmovetime) < .15)) + { + if((ucmd->forwardmove < 0 && client->lastforwardmove < 0) || (ucmd->forwardmove > 0 && client->lastforwardmove > 0)) + { + if(ucmd->forwardmove > 0) + client->dodge = 2; + else + client->dodge = -2; + ucmd->upmove += 100; + } + } + } + + //checking previous frame's movement + if(client->moved == true && (ucmd->buttons & BUTTON_ANY)) + { + client->keydown++; + } + else if (ucmd->sidemove != 0 || ucmd->forwardmove != 0) + { + client->keydown = 0; } - if(ucmd->sidemove != 0 || ucmd->forwardmove != 0) { + if(ucmd->sidemove != 0 || ucmd->forwardmove != 0) + { client->lastmovetime = level.time; client->lastsidemove = ucmd->sidemove; - client->moved = true; + client->lastforwardmove = ucmd->forwardmove; + client->moved = true; } else //we had a frame with no movement client->moved = false; @@ -3101,13 +3571,16 @@ pm.pointcontents = gi.pointcontents; //joust mode - if(joustmode->value) { + if(joustmode->value) + { if(ent->groundentity) client->joustattempts = 0; - if(pm.cmd.upmove >= 10) { + if(pm.cmd.upmove >= 10) + { client->joustattempts++; pm.joustattempts = client->joustattempts; - if(pm.joustattempts == 10 || pm.joustattempts == 20) { + if(pm.joustattempts == 10 || pm.joustattempts == 20) + { gi.sound(ent, CHAN_VOICE, gi.soundindex("*jump1.wav"), 1, ATTN_NORM, 0); PlayerNoise(ent, ent->s.origin, PNOISE_SELF); } @@ -3124,24 +3597,33 @@ for (i=0 ; i<3 ; i++) { ent->s.origin[i] = pm.s.origin[i]*0.125; - //vehicles - if ( !Jet_Active(ent) || (Jet_Active(ent)&&(fabs((float)pm.s.velocity[i]*0.125) < fabs(ent->velocity[i]))) ) - ent->velocity[i] = pm.s.velocity[i]*0.125; + ent->velocity[i] = pm.s.velocity[i]*0.125; } //check for a dodge, and peform if true - if(client->dodge != 0) { - AngleVectors (ent->s.angles, forward, addspeed, up); + if(client->dodge != 0) + { + //check for dodge direction + if(client->dodge == 2 || client->dodge == -2) + { + //was forward or backward + AngleVectors (ent->s.angles, addspeed, right, up); + client->dodge /= 2; + } + else + { + //was sideways + AngleVectors (ent->s.angles, forward, addspeed, up); + } + addspeed[0] *= 300*client->dodge; addspeed[1] *= 300*client->dodge; - //limit to reasonable - for(i = 0; i < 2; i++) { - if(addspeed[i] > 800) - addspeed[i] = 800; - if(addspeed[i] < -800) - addspeed[i] = -800; - } + VectorAdd(ent->velocity, addspeed, ent->velocity); + + //check velocity + SV_CheckVelocity(ent); + client->dodge = false; client->lastdodge = client->lastmovetime = level.time; } @@ -3163,17 +3645,20 @@ { sproing = client->sproing_framenum > level.framenum; haste = client->haste_framenum > level.framenum; - if(sproing) { + if(sproing) + { gi.sound(ent, CHAN_VOICE, gi.soundindex("items/sproing.wav"), 1, ATTN_NORM, 0); ent->velocity[2] += 400; } - if(haste && ucmd->forwardmove > 0) { + if(haste && ucmd->forwardmove > 0) + { AngleVectors (ent->s.angles, addspeed, right, up); addspeed[0] *= 400; addspeed[1] *= 400; - for(i = 0; i < 2; i++) { - if(addspeed[i] > 200) - addspeed[i] = 200; + for(i = 0; i < 2; i++) + { + if(addspeed[i] > 200) + addspeed[i] = 200; } VectorAdd(ent->velocity, addspeed, ent->velocity); @@ -3251,7 +3736,6 @@ } else { // spectator mode - if ( TEAM_GAME && client->resp.spectator < 2 ) { // team selection state ClientTeamSelection( ent , client , ucmd ); @@ -3290,15 +3774,18 @@ } /* spectator mode */ // update chase cam if being followed - for (i = 1; i <= g_maxclients->value; i++) { + for (i = 1; i <= g_maxclients->value; i++) + { other = g_edicts + i; if (other->inuse && other->client->chase_target == ent) UpdateChaseCam(other); } //mutators - if((regeneration->value || excessive->value) && !ent->deadflag) { - if((ent->health < ent->max_health) && (client->regen_framenum < level.framenum)) { + if((regeneration->value || excessive->value) && !ent->deadflag) + { + if((ent->health < ent->max_health) && (client->regen_framenum < level.framenum)) + { client->regen_framenum = level.framenum + 5; ent->health+=2; } @@ -3309,10 +3796,12 @@ ent->client->spawnprotected = false; //lose one health every second - if(g_losehealth->value && !ent->deadflag) { + if(g_losehealth->value && !ent->deadflag) + { if(regeneration->value || excessive->value || vampire->value) return; - if((ent->health > g_losehealth_num->value) && (client->losehealth_framenum < level.framenum)) { + if((ent->health > g_losehealth_num->value) && (client->losehealth_framenum < level.framenum)) + { client->losehealth_framenum = level.framenum + 10; ent->health-=1; } diff -Nru alien-arena-7.53+dfsg/source/game/p_hud.c alien-arena-7.66+dfsg/source/game/p_hud.c --- alien-arena-7.53+dfsg/source/game/p_hud.c 2011-05-25 08:12:05.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/p_hud.c 2013-06-22 20:07:36.000000000 +0000 @@ -36,7 +36,7 @@ void MoveClientToIntermission (edict_t *ent) { - if (deathmatch->value) + if (deathmatch->integer) ent->client->showscores = true; VectorCopy (level.intermission_origin, ent->s.origin); ent->client->ps.pmove.origin[0] = level.intermission_origin[0]*8; @@ -44,7 +44,7 @@ ent->client->ps.pmove.origin[2] = level.intermission_origin[2]*8; VectorCopy (level.intermission_angle, ent->client->ps.viewangles); - // 2011-05 stop spectator from drifting, + // 2011-05 stop spectator from drifting, // and, possibly, other intermission bogus movement. VectorClear( ent->velocity ); VectorClear( ent->avelocity); @@ -58,8 +58,8 @@ ent->client->quad_framenum = 0; ent->client->invincible_framenum = 0; ent->client->haste_framenum = 0; - ent->client->sproing_framenum = 0; - ent->client->invis_framenum = 0; + ent->client->sproing_framenum = 0; + ent->client->invis_framenum = 0; ent->client->grenade_blew_up = false; ent->client->grenade_time = 0; @@ -67,19 +67,16 @@ ent->s.modelindex = 0; ent->s.modelindex2 = 0; ent->s.modelindex3 = 0; - ent->s.modelindex = 0; + ent->s.modelindex4 = 0; ent->s.effects = 0; ent->s.sound = 0; ent->solid = SOLID_NOT; // add the layout - if (deathmatch->value) - { - if(g_mapvote->value) - DeathmatchScoreboardMessage (ent, NULL, true); - else - DeathmatchScoreboardMessage (ent, NULL, false); + if (deathmatch->integer) + { + DeathmatchScoreboardMessage (ent, NULL, g_mapvote->integer); gi.unicast (ent, true); } @@ -96,15 +93,9 @@ edict_t *chasecam; gclient_t *cl; vec3_t forward, right, movedir, origin; - int zoffset; //for moving dead players to the right place - if(winner->deadflag == DEAD_DEAD) - zoffset = -40; - else { - zoffset = 0; - if(winner->in_vehicle) - Reset_player(winner); - } + if(winner->in_vehicle) + Reset_player(winner); VectorCopy (level.intermission_angle, winner->s.angles); @@ -119,12 +110,10 @@ winner->client->ps.pmove.origin[1] = winner->s.origin[1]; winner->client->ps.pmove.origin[2] = winner->s.origin[2]; - // 2011-05- no velocity nor angular velocity, - // might stop bogus movement. VectorClear( winner->velocity ); VectorClear( winner->avelocity ); - if (deathmatch->value) + if (deathmatch->integer) winner->client->showscores = true; winner->client->ps.gunindex = 0; @@ -136,8 +125,8 @@ winner->client->quad_framenum = 0; winner->client->invincible_framenum = 0; winner->client->haste_framenum = 0; - winner->client->sproing_framenum = 0; - winner->client->invis_framenum = 0; + winner->client->sproing_framenum = 0; + winner->client->invis_framenum = 0; winner->client->grenade_blew_up = false; winner->client->grenade_time = 0; @@ -149,12 +138,9 @@ // add the layout - if (deathmatch->value) + if (deathmatch->integer) { - if(g_mapvote->value) - DeathmatchScoreboardMessage (winner, NULL, true); - else - DeathmatchScoreboardMessage (winner, NULL, false); + DeathmatchScoreboardMessage (winner, NULL, g_mapvote->integer); gi.unicast (winner, true); } @@ -175,10 +161,10 @@ movedir[0] = movedir[1] = 0; movedir[2] = -1; VectorCopy(pad->s.origin, origin); - origin[2] -= 24; - - //if map is going to repeat - don't put these here as we have no way to remove them - //if map is not reloaded + origin[2] -= 24; + + //if map is going to repeat - don't put these here as we have no way to remove them + //if map is not reloaded if(strcmp(level.mapname, level.changemap)) { gi.WriteByte (svc_temp_entity); gi.WriteByte (TE_STEAM); @@ -186,14 +172,12 @@ gi.WritePosition (origin); gi.WriteDir (movedir); gi.WriteByte (0); - gi.multicast (origin, MULTICAST_PVS); + gi.multicast (origin, MULTICAST_PVS); } //now we want to allow the winners to actually see themselves on the podium, creating a //simple chasecam - winner->s.origin[2] += zoffset; - if(winner->is_bot) { //who cares if bots can not see themselves! winner->takedamage = DAMAGE_NO; //so they stop burning and suiciding gi.linkentity(winner); //link because we changed position! @@ -274,17 +258,34 @@ game.autosaved = false; - // respawn any dead clients - for (i=0 ; ivalue ; i++) + for (i=0 ; iinteger ; i++) { client = g_edicts + 1 + i; if (!client->inuse) continue; - if (client->health <= 0) { + // remove from vehicle. + // note: vehicle hud is client-side, so may remain in view + if (client->in_vehicle) + { + Reset_player( client ); + } + // respawn the dead + if (client->health <= 0) + { respawn(client); - client->deadflag = DEAD_DEAD; //so we can know if he's dead for placement offsetting - } - if(!client->is_bot && g_mapvote->value) + } + client->s.frame = 0; + // disconnect spectators from target to prevent point-of-view errors + if ( client->client && client->client->resp.spectator ) + { + if ( client->client->chase_target != NULL ) + { + client->client->chase_target = NULL; + client->client->ps.pmove.pm_flags &= ~PMF_NO_PREDICTION; + } + } + + if(!client->is_bot && g_mapvote->integer) safe_centerprintf(client, "Use F1-F4 to vote for next map!"); } @@ -313,7 +314,10 @@ ent = G_Find (ent, FOFS(classname), "info_player_intermission"); } } - assert( ent != NULL ); + if ( ent == NULL ) + { /* can occur when running a demo .dm2 file */ + return; + } VectorCopy (ent->s.origin, level.intermission_origin); VectorCopy (ent->s.angles, level.intermission_angle); @@ -379,7 +383,7 @@ secondrunnerup = g_edicts; // move all clients but the winners to the intermission point - for (i=0 ; ivalue ; i++) + for (i=0 ; iinteger ; i++) { client = g_edicts + 1 + i; if (!client->inuse) @@ -388,36 +392,36 @@ MoveClientToIntermission (client); } - if ((dmflags->integer & DF_SKINTEAMS) || ctf->value || tca->value || cp->value) //team stuff + if ((dmflags->integer & DF_SKINTEAMS) || ctf->integer || tca->integer || cp->integer) //team stuff { - if ( blue_team_score > red_team_score ) - { - if(ctf->value || tca->value || cp->value) + if ( blue_team_score > red_team_score ) + { + if(ctf->integer || tca->integer || cp->integer) gi.sound (client, CHAN_AUTO, gi.soundindex("misc/blue_wins_ctf.wav"), 1, ATTN_NONE, 0); else gi.sound (client, CHAN_AUTO, gi.soundindex("misc/blue_wins.wav"), 1, ATTN_NONE, 0); } - else if ( blue_team_score < red_team_score ) - { - if(ctf->value || tca->value || cp->value) + else if ( blue_team_score < red_team_score ) + { + if(ctf->integer || tca->integer || cp->integer) gi.sound (client, CHAN_AUTO, gi.soundindex("misc/red_wins_ctf.wav"), 1, ATTN_NONE, 0); else gi.sound (client, CHAN_AUTO, gi.soundindex("misc/red_wins.wav"), 1, ATTN_NONE, 0); } - else - { + else + { if ( ctf->integer ) - { + { gi.sound( client, CHAN_AUTO, gi.soundindex("misc/game_tied_ctf.wav"), 1, ATTN_NONE, 0); - } + } else - { + { gi.sound( client, CHAN_AUTO, gi.soundindex("misc/game_tied.wav"), 1, ATTN_NONE, 0); } - } + } } else if ( !(dmflags->integer & DF_BOT_LEVELAD) ) { @@ -435,81 +439,81 @@ if(secondrunnerup && secondrunnerup->client && secondrunnerup->inuse) PlaceWinnerOnVictoryPad(secondrunnerup, -32); -} - -//duel code +} + +//duel code int highestpos, numplayers; -void MoveEveryoneDownQueue(void) { - int i, induel = 0; - - for (i = 0; i < g_maxclients->value; i++) { - if(g_edicts[i+1].inuse && g_edicts[i+1].client) { - //move everyone else down a notch(never less than 0) - if(induel > 1 && g_edicts[i+1].client->pers.queue <= 3) //houston, we have a problem - return; //abort, stop moving people - if(g_edicts[i+1].client->pers.queue > 1) - g_edicts[i+1].client->pers.queue-=1; - if(g_edicts[i+1].client->pers.queue < 3) - induel++; - } - } +void MoveEveryoneDownQueue(void) { + int i, induel = 0; + + for (i = 0; i < g_maxclients->integer; i++) { + if(g_edicts[i+1].inuse && g_edicts[i+1].client) { + //move everyone else down a notch(never less than 0) + if(induel > 1 && g_edicts[i+1].client->pers.queue <= 3) //houston, we have a problem + return; //abort, stop moving people + if(g_edicts[i+1].client->pers.queue > 1) + g_edicts[i+1].client->pers.queue-=1; + if(g_edicts[i+1].client->pers.queue < 3) + induel++; + } + } +} +void CheckDuelWinner(void) { + int i; + int highscore, induel; + + highscore = 0; + numplayers = 0; + highestpos = 0; + induel = 0; + + for (i = 0; i < g_maxclients->integer; i++) { + if(g_edicts[i+1].inuse && g_edicts[i+1].client) { + if(g_edicts[i+1].client->resp.score > highscore) + highscore = g_edicts[i+1].client->resp.score; + if(g_edicts[i+1].client->pers.queue > highestpos) + highestpos = g_edicts[i+1].client->pers.queue; + numplayers++; + } + } + if(highestpos < numplayers) + highestpos = numplayers; + + for (i = 0; i < g_maxclients->integer; i++) { + if(g_edicts[i+1].inuse && g_edicts[i+1].client) { + if((g_edicts[i+1].client->resp.score < highscore) && g_edicts[i+1].client->pers.queue < 3) { + g_edicts[i+1].client->pers.queue = highestpos+1; //loser, kicked to the back of the line + highestpos++; + } + } + } + + MoveEveryoneDownQueue(); + + //last resort checking after positions have changed + //check for any screwups and correct the queue + while(induel < 2 && numplayers > 1) { + induel = 0; + for (i = 0; i < g_maxclients->integer; i++) { + if(g_edicts[i+1].inuse && g_edicts[i+1].client) { + if(g_edicts[i+1].client->pers.queue < 3 && g_edicts[i+1].client->pers.queue) + induel++; + } + } + if(induel < 2) //something is wrong(i.e winner left), move everyone down. + MoveEveryoneDownQueue(); + } } -void CheckDuelWinner(void) { - int i; - int highscore, induel; - - highscore = 0; - numplayers = 0; - highestpos = 0; - induel = 0; - - for (i = 0; i < g_maxclients->value; i++) { - if(g_edicts[i+1].inuse && g_edicts[i+1].client) { - if(g_edicts[i+1].client->resp.score > highscore) - highscore = g_edicts[i+1].client->resp.score; - if(g_edicts[i+1].client->pers.queue > highestpos) - highestpos = g_edicts[i+1].client->pers.queue; - numplayers++; - } - } - if(highestpos < numplayers) - highestpos = numplayers; - - for (i = 0; i < g_maxclients->value; i++) { - if(g_edicts[i+1].inuse && g_edicts[i+1].client) { - if((g_edicts[i+1].client->resp.score < highscore) && g_edicts[i+1].client->pers.queue < 3) { - g_edicts[i+1].client->pers.queue = highestpos+1; //loser, kicked to the back of the line - highestpos++; - } - } - } - - MoveEveryoneDownQueue(); - - //last resort checking after positions have changed - //check for any screwups and correct the queue - while(induel < 2 && numplayers > 1) { - induel = 0; - for (i = 0; i < g_maxclients->value; i++) { - if(g_edicts[i+1].inuse && g_edicts[i+1].client) { - if(g_edicts[i+1].client->pers.queue < 3 && g_edicts[i+1].client->pers.queue) - induel++; - } - } - if(induel < 2) //something is wrong(i.e winner left), move everyone down. - MoveEveryoneDownQueue(); - } -} void EndIntermission(void) { int i; edict_t *ent; - - if(g_duel->value) - CheckDuelWinner(); - for (i=0 ; ivalue; i++) + if(g_duel->integer) + CheckDuelWinner(); + + for (i=0 ; iinteger; i++) { ent = g_edicts + 1 + i; if (!ent->inuse || ent->client->resp.spectator) @@ -558,10 +562,13 @@ char acc[16]; char weapname[16]; #endif - + if (ent->is_bot) return; + if (g_tactical->integer) + return; //no scoreboard in tactical mode + if ((dmflags->integer & DF_SKINTEAMS) || ctf->value || tca->value || cp->value) { CTFScoreboardMessage (ent, killer, mapvote); return; @@ -571,7 +578,7 @@ for (i=0 ; iinuse || (!g_duel->value && game.clients[i].resp.spectator)) + if (!cl_ent->inuse || (!g_duel->integer && game.clients[i].resp.spectator)) continue; score = game.clients[i].resp.score; @@ -593,12 +600,12 @@ // print level name and exit rules string[0] = 0; - stringlength = strlen(string); - - Com_sprintf (entry, sizeof(entry), "newsb "); - j = strlen(entry); - strcpy (string + stringlength, entry); - stringlength += j; + stringlength = strlen(string); + + Com_sprintf (entry, sizeof(entry), "newsb "); + j = strlen(entry); + strcpy (string + stringlength, entry); + stringlength += j; // add the clients in sorted order if (total > 12) @@ -608,30 +615,30 @@ { cl = &game.clients[sorted[i]]; cl_ent = g_edicts + 1 + sorted[i]; - - x = 0; - y = 32 + 32 * (i%12); - - // add a background - Com_sprintf (entry, sizeof(entry), - "xv %i yv %i picn %s ",x, y, "playerbox"); + + x = 0; + y = 32 + 32 * (i%12); + + // add a background + Com_sprintf (entry, sizeof(entry), + "xv %i yv %i picn %s ",x, y, "playerbox"); j = strlen(entry); if (stringlength + j > 1024) break; strcpy (string + stringlength, entry); stringlength += j; - - // send the layout + + // send the layout if(!cl->resp.spectator) Com_sprintf (entry, sizeof(entry), "client %i %i %i %i %i %i ", x, y, sorted[i], cl->resp.score, cl->ping, (level.framenum - cl->resp.enterframe)/600); - else //duel mode will have queued spectators - Com_sprintf (entry, sizeof(entry), - "queued %i %i %i %i %i %i ", - x, y, sorted[i], cl->resp.score, cl->ping, cl->pers.queue-2); - + else //duel mode will have queued spectators + Com_sprintf (entry, sizeof(entry), + "queued %i %i %i %i %i %i ", + x, y, sorted[i], cl->resp.score, cl->ping, cl->pers.queue-2); + j = strlen(entry); if (stringlength + j > 1024) break; @@ -646,17 +653,17 @@ */ //weapon accuracy(don't do if map voting) if(!mapvote) { - //add a background - x = 96; - y = 16*(total+1); - - Com_sprintf (entry, sizeof(entry), - "xv %i yv %i picn %s ", x-4, y+48, "statbox"); - j = strlen(entry); - if(stringlength + j < 1024) { - strcpy(string + stringlength, entry); - stringlength +=j; - } + //add a background + x = 96; + y = 16*(total+1); + + Com_sprintf (entry, sizeof(entry), + "xv %i yv %i picn %s ", x-4, y+48, "statbox"); + j = strlen(entry); + if(stringlength + j < 1024) { + strcpy(string + stringlength, entry); + stringlength +=j; + } Com_sprintf(entry, sizeof(entry), "xv %i yv %i string Accuracy ", x, y+56); @@ -701,9 +708,9 @@ break; case 7: strcpy(weapname, "vaporizer"); - break; - case 8: - strcpy(weapname, "violator"); + break; + case 8: + strcpy(weapname, "violator"); break; } Com_sprintf(entry, sizeof(entry), @@ -713,58 +720,58 @@ strcpy(string + stringlength, entry); stringlength +=j; } - } + } } #endif - //map voting - if(mapvote) { - y = 64; - x = 96; - Com_sprintf(entry, sizeof(entry), - "xv %i yt %i string Vote ", x, y); - j = strlen(entry); - if(stringlength + j < 1024) { - strcpy(string + stringlength, entry); - stringlength +=j; - } - x = 136; - Com_sprintf(entry, sizeof(entry), - "xv %i yt %i string for ", x, y); - j = strlen(entry); - if(stringlength + j < 1024) { - strcpy(string + stringlength, entry); - stringlength +=j; - } - x = 168; - Com_sprintf(entry, sizeof(entry), - "xv %i yt %i string next ", x, y); - j = strlen(entry); - if(stringlength + j < 1024) { - strcpy(string + stringlength, entry); - stringlength +=j; - } - x = 208; - Com_sprintf(entry, sizeof(entry), - "xv %i yt %i string map: ", x, y); - j = strlen(entry); - if(stringlength + j < 1024) { - strcpy(string + stringlength, entry); - stringlength +=j; - } - x = 96; - for(i=0; i<4; i++) { - - Com_sprintf(entry, sizeof(entry), - "xv %i yt %i string F%i.%s ", x, y+((i+1)*9)+9, i+1, votedmap[i].mapname); - j = strlen(entry); - if(stringlength + j < 1024) { - strcpy(string + stringlength, entry); - stringlength +=j; - } - } - - } + //map voting + if(mapvote) { + y = 64; + x = 96; + Com_sprintf(entry, sizeof(entry), + "xv %i yt %i string Vote ", x, y); + j = strlen(entry); + if(stringlength + j < 1024) { + strcpy(string + stringlength, entry); + stringlength +=j; + } + x = 136; + Com_sprintf(entry, sizeof(entry), + "xv %i yt %i string for ", x, y); + j = strlen(entry); + if(stringlength + j < 1024) { + strcpy(string + stringlength, entry); + stringlength +=j; + } + x = 168; + Com_sprintf(entry, sizeof(entry), + "xv %i yt %i string next ", x, y); + j = strlen(entry); + if(stringlength + j < 1024) { + strcpy(string + stringlength, entry); + stringlength +=j; + } + x = 208; + Com_sprintf(entry, sizeof(entry), + "xv %i yt %i string map: ", x, y); + j = strlen(entry); + if(stringlength + j < 1024) { + strcpy(string + stringlength, entry); + stringlength +=j; + } + x = 96; + for(i=0; i<4; i++) { + + Com_sprintf(entry, sizeof(entry), + "xv %i yt %i string F%i.%s ", x, y+((i+1)*9)+9, i+1, votedmap[i].mapname); + j = strlen(entry); + if(stringlength + j < 1024) { + strcpy(string + stringlength, entry); + stringlength +=j; + } + } + + } gi.WriteByte (svc_layout); gi.WriteString (string); @@ -781,10 +788,8 @@ */ void DeathmatchScoreboard (edict_t *ent) { -// ACEBOT_ADD if (ent->is_bot) return; -// ACEBOT_END DeathmatchScoreboardMessage (ent, ent->enemy, false); gi.unicast (ent, true); @@ -803,7 +808,9 @@ ent->client->showinventory = false; ent->client->showhelp = false; - if (!deathmatch->value) + if (!deathmatch->integer) + // Should we ever wish to do a singleplayer game, we could bring the + // "help computer" back here. return; if (ent->client->showscores) @@ -816,39 +823,70 @@ DeathmatchScoreboard (ent); } -/* -================== -Cmd_Help_f +//======================================================================= -Display the current help message -================== +/* +=============== +G_SetScoreStats +Common with G_SetStats and G_SetSpectatorStats +=============== */ -void Cmd_Help_f (edict_t *ent) + +void G_SetScoreStats (edict_t *ent) { - // this is for backwards compatability - if (deathmatch->value) + edict_t *e2; + int i; + int high_score = 0; + + // highest scorer + for (i = 0, e2 = g_edicts + 1; i < g_maxclients->integer; i++, e2++) { - Cmd_Score_f (ent); - return; + if (!e2->inuse) + continue; + + if(e2->client->resp.score > high_score) + high_score = e2->client->resp.score; } -} + ent->client->ps.stats[STAT_HIGHSCORE] = high_score; + + ent->client->ps.stats[STAT_SCOREBOARD] = gi.imageindex ("i_score"); + //team + ent->client->ps.stats[STAT_REDSCORE] = red_team_score; + ent->client->ps.stats[STAT_BLUESCORE] = blue_team_score; + + if (tca->integer) + { + ent->client->ps.stats[STAT_RED_MATCHES] = red_team_matches; + ent->client->ps.stats[STAT_BLUE_MATCHES] = blue_team_matches; + } -//======================================================================= + if (g_tactical->integer) //just use the weapon slots since these aren't displayed in tactical anyway + { + ent->client->ps.stats[STAT_TACTICAL_SCORE] = gi.imageindex ("i_tactical"); + + ent->client->ps.stats[STAT_WEAPN1] = tacticalScore.humanComputerHealth; + ent->client->ps.stats[STAT_WEAPN2] = tacticalScore.humanPowerSourceHealth; + ent->client->ps.stats[STAT_WEAPN3] = tacticalScore.humanAmmoDepotHealth; + + ent->client->ps.stats[STAT_WEAPN4] = tacticalScore.alienComputerHealth; + ent->client->ps.stats[STAT_WEAPN5] = tacticalScore.alienPowerSourceHealth; + ent->client->ps.stats[STAT_WEAPN6] = tacticalScore.alienAmmoDepotHealth; + } +} /* =============== G_SetStats =============== */ + void G_SetStats (edict_t *ent) { gitem_t *item; int index; - edict_t *e2; - int i, j; - int high_score = 0; - gitem_t *flag1_item, *flag2_item; + int i; + gitem_t *flag1_item, *flag2_item; flag1_item = FindItemByClassname("item_flag_red"); @@ -879,27 +917,18 @@ // armor // - index = ArmorIndex (ent); - if (index) - { - item = GetItemByIndex (index); - ent->client->ps.stats[STAT_ARMOR_ICON] = 0; - ent->client->ps.stats[STAT_ARMOR] = ent->client->pers.inventory[index]; - } - else - { - ent->client->ps.stats[STAT_ARMOR_ICON] = 0; - ent->client->ps.stats[STAT_ARMOR] = 0; - } - - // - // pickup message - // - if (level.time > ent->client->pickup_msg_time) - { - ent->client->ps.stats[STAT_PICKUP_ICON] = 0; - ent->client->ps.stats[STAT_PICKUP_STRING] = 0; - } + index = ArmorIndex (ent); + if (index) + { + item = GetItemByIndex (index); + ent->client->ps.stats[STAT_ARMOR_ICON] = 0; + ent->client->ps.stats[STAT_ARMOR] = ent->client->pers.inventory[index]; + } + else + { + ent->client->ps.stats[STAT_ARMOR_ICON] = 0; + ent->client->ps.stats[STAT_ARMOR] = 0; + } // // timers @@ -923,17 +952,17 @@ { ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_sproing"); ent->client->ps.stats[STAT_TIMER] = (ent->client->sproing_framenum - level.framenum)/10; - } - else if (ent->client->invis_framenum > level.framenum) - { - ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_invis"); - ent->client->ps.stats[STAT_TIMER] = (ent->client->invis_framenum - level.framenum)/10; - } - else if (ent->client->resp.powered) - { - ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_powered"); - ent->client->ps.stats[STAT_TIMER] = ent->client->resp.reward_pts; - } + } + else if (ent->client->invis_framenum > level.framenum) + { + ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_invis"); + ent->client->ps.stats[STAT_TIMER] = (ent->client->invis_framenum - level.framenum)/10; + } + else if (ent->client->resp.powered) + { + ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_powered"); + ent->client->ps.stats[STAT_TIMER] = ent->client->resp.reward_pts; + } else { ent->client->ps.stats[STAT_TIMER_ICON] = gi.imageindex ("p_rewardpts"); @@ -943,15 +972,10 @@ // // selected item // - if (ent->client->pers.selected_item == -1) - ent->client->ps.stats[STAT_SELECTED_ICON] = 0; - else - ent->client->ps.stats[STAT_SELECTED_ICON] = gi.imageindex (itemlist[ent->client->pers.selected_item].icon); - ent->client->ps.stats[STAT_SELECTED_ITEM] = ent->client->pers.selected_item; //ctf - if(ctf->value) { + if(ctf->integer) { if (ent->client->pers.inventory[ITEM_INDEX(flag1_item)]) ent->client->ps.stats[STAT_FLAG_ICON] = gi.imageindex ("i_flag1"); else if (ent->client->pers.inventory[ITEM_INDEX(flag2_item)]) @@ -979,7 +1003,7 @@ // ent->client->ps.stats[STAT_LAYOUTS] = 0; - if (deathmatch->value) + if (deathmatch->integer) { if (ent->client->pers.health <= 0 || level.intermissiontime || ent->client->showscores) @@ -1000,69 +1024,53 @@ // ent->client->ps.stats[STAT_FRAGS] = ent->client->resp.score; ent->client->ps.stats[STAT_DEATHS] = ent->client->resp.deaths; + + G_SetScoreStats (ent); - // highest scorer - for (i = 0, e2 = g_edicts + 1; i < g_maxclients->value; i++, e2++) { - if (!e2->inuse) - continue; - - if(e2->client->resp.score > high_score) - high_score = e2->client->resp.score; - } - ent->client->ps.stats[STAT_HIGHSCORE] = high_score; +#ifndef ALTERIA - //bot score info - ent->client->ps.botnum = ent->client->resp.botnum; - if(ent->client->resp.botnum) { - for(i = 0; i < ent->client->resp.botnum; i++) { - strcpy(ent->client->ps.bots[i].name, ent->client->resp.bots[i].name); - //tally bot scores - for(j = 0, e2 = g_edicts + 1; j < g_maxclients->value; j++, e2++) { - if(!strcmp(ent->client->resp.bots[i].name, e2->client->pers.netname)) - ent->client->ps.bots[i].score = e2->client->resp.score; - } + if(!g_tactical->integer) + { + //weapon/ammo inventories + for(i = 0; i < 7; i++) + ent->client->ps.stats[STAT_WEAPN1+i] = 0; + i = 0; + if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Alien Disruptor"))] && + ent->client->pers.weapon != (FindItem("Alien Disruptor"))) { + ent->client->ps.stats[STAT_WEAPN1] = gi.imageindex ("disruptor"); + i++; + } + if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Alien Smartgun"))] && + ent->client->pers.weapon != (FindItem("Alien Smartgun"))) { + ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("smartgun"); + i++; + } + if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Pulse Rifle"))] && + ent->client->pers.weapon != (FindItem("Pulse Rifle"))) { + ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("chaingun"); + i++; + } + if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Flame Thrower"))] && + ent->client->pers.weapon != (FindItem("Flame Thrower"))) { + ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("flamethrower"); + i++; + } + if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] && + ent->client->pers.weapon != (FindItem("Rocket Launcher"))) { + ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("rocketlauncher"); + i++; + } + if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Disruptor"))] && + ent->client->pers.weapon != (FindItem("Disruptor"))) { + ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("beamgun"); + i++; + } + if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Alien Vaporizer"))] && + ent->client->pers.weapon != (FindItem("Alien Vaporizer"))) { + ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("vaporizor"); } } - //end bot score info - - //weapon/ammo inventories - for(i = 0; i < 7; i++) - ent->client->ps.stats[STAT_WEAPN1+i] = 0; - i = 0; - if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Alien Disruptor"))] && - ent->client->pers.weapon != (FindItem("Alien Disruptor"))) { - ent->client->ps.stats[STAT_WEAPN1] = gi.imageindex ("disruptor"); - i++; - } - if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Alien Smartgun"))] && - ent->client->pers.weapon != (FindItem("Alien Smartgun"))) { - ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("smartgun"); - i++; - } - if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Pulse Rifle"))] && - ent->client->pers.weapon != (FindItem("Pulse Rifle"))) { - ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("chaingun"); - i++; - } - if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Flame Thrower"))] && - ent->client->pers.weapon != (FindItem("Flame Thrower"))) { - ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("flamethrower"); - i++; - } - if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] && - ent->client->pers.weapon != (FindItem("Rocket Launcher"))) { - ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("rocketlauncher"); - i++; - } - if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Disruptor"))] && - ent->client->pers.weapon != (FindItem("Disruptor"))) { - ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("beamgun"); - i++; - } - if(ent->client->pers.inventory[ITEM_INDEX(FindItem("Alien Vaporizer"))] && - ent->client->pers.weapon != (FindItem("Alien Vaporizer"))) { - ent->client->ps.stats[STAT_WEAPN1+i] = gi.imageindex ("vaporizor"); - } +#endif // // current weapon @@ -1071,36 +1079,15 @@ ent->client->ps.stats[STAT_HELPICON] = gi.imageindex (ent->client->pers.weapon->icon); else ent->client->ps.stats[STAT_HELPICON] = 0; - - ent->client->ps.stats[STAT_SPECTATOR] = 0; - - ent->client->ps.stats[STAT_SCOREBOARD] = gi.imageindex ("i_score"); - - //team - ent->client->ps.stats[STAT_REDSCORE] = red_team_score; - ent->client->ps.stats[STAT_BLUESCORE] = blue_team_score; - - //spectator mode - ent->client->ps.stats[STAT_SPECTATOR] = 0; -} - -/* -=============== -G_CheckChaseStats -=============== -*/ -void G_CheckChaseStats (edict_t *ent) -{ - int i; - gclient_t *cl; - - for (i = 1; i <= g_maxclients->value; i++) { - cl = g_edicts[i].client; - if (!g_edicts[i].inuse || cl->chase_target != ent) - continue; - memcpy(cl->ps.stats, ent->client->ps.stats, sizeof(cl->ps.stats)); - G_SetSpectatorStats(g_edicts + i); - } + + ent->client->ps.stats[STAT_FLAGS] &= ~STAT_FLAGS_CROSSHAIRPOSITION; + if ( ent->client->pers.weapon == FindItem ("Alien Disruptor") || + ent->client->pers.weapon == FindItem ("Violator") || + ent->client->pers.weapon == FindItem ("Disruptor") || + ent->client->pers.weapon == FindItem ("Pulse Rifle")) + ent->client->ps.stats[STAT_FLAGS] |= STAT_FLAGS_CROSSHAIRCENTER; + else if (ent->client->pers.weapon == FindItem ("Rocket Launcher")) + ent->client->ps.stats[STAT_FLAGS] |= STAT_FLAGS_CROSSHAIRPOS2; } /* @@ -1112,22 +1099,59 @@ { gclient_t *cl = ent->client; - if (!cl->chase_target) - G_SetStats (ent); - - cl->ps.stats[STAT_SPECTATOR] = 1; - - // layouts are independant in spectator - cl->ps.stats[STAT_LAYOUTS] = 0; - if (cl->pers.health <= 0 || level.intermissiontime || cl->showscores) - cl->ps.stats[STAT_LAYOUTS] |= 1; - if (cl->showinventory && cl->pers.health > 0) - cl->ps.stats[STAT_LAYOUTS] |= 2; + if (ent->client->showscores) + cl->ps.stats[STAT_LAYOUTS] = 1; + else + cl->ps.stats[STAT_LAYOUTS] = 0; if (cl->chase_target && cl->chase_target->inuse) + { + // XXX: is this code ever active? cl->ps.stats[STAT_CHASE] = CS_PLAYERSKINS + (cl->chase_target - g_edicts) - 1; + } else + { cl->ps.stats[STAT_CHASE] = 0; + G_SetScoreStats (ent); + } } +/** + * @brief Update stats for scoreboard display on + * + * @detail Spectator issues complicate things. Spectator sees chase target's + * HUD information. But spectator needs to show zeroed scoring + * data in status responses, player lists, etc. Real player clients + * contain bot scoring info, which is updated by + * acebot_spawn.c::ACESP_UpdateBots(), called for every server frame + * and would be redundant if updated here. The server expects to see + * the bot info in the first client, regardless of it being in use + * or being a spectator. + * + * @param ent entity for player or bot + */ +void G_UpdateStats( edict_t *ent ) +{ + gclient_t *gcl = ent->client; + + if ( gcl->resp.spectator && !ent->is_bot ) + { + if ( gcl->chase_target != NULL && level.intermissiontime <= 0.0f ) + { // clone chase target's stats for hud + memcpy( gcl->ps.stats, gcl->chase_target->client->ps.stats, + sizeof( gcl->ps.stats ) ); + } + else + { + memset( gcl->ps.stats, 0, sizeof(gcl->ps.stats)); + G_SetSpectatorStats( ent); + } + gcl->ps.stats[STAT_SPECTATOR] = 1; + } + else + { + ent->client->ps.stats[STAT_SPECTATOR] = 0; + G_SetStats( ent ); + } +} diff -Nru alien-arena-7.53+dfsg/source/game/p_view.c alien-arena-7.66+dfsg/source/game/p_view.c --- alien-arena-7.53+dfsg/source/game/p_view.c 2011-11-22 03:49:41.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/p_view.c 2013-06-22 20:07:36.000000000 +0000 @@ -85,7 +85,7 @@ client = player->client; // flash the backgrounds behind the status numbers - client->ps.stats[STAT_FLASHES] = 0; + client->ps.stats[STAT_FLASHES] &= ~(1|2); if (client->damage_blood) client->ps.stats[STAT_FLASHES] |= 1; if (client->damage_armor && !(player->flags & FL_GODMODE) && (client->invincible_framenum <= level.framenum)) @@ -436,6 +436,8 @@ sprintf(weaponmodel, "players/%s%s", weaponame, "w_rlauncher.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"models/weapons/v_blast/tris.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_blaster.md2"); + else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"models/weapons/v_alienblast/tris.md2")) + sprintf(weaponmodel, "players/%s%s", weaponame, "w_alienblaster.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"models/weapons/v_bfg/tris.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_bfg.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model, "models/weapons/v_rail/tris.md2")) @@ -448,6 +450,8 @@ sprintf(weaponmodel, "players/%s%s", weaponame, "w_hyperblaster.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model, "models/weapons/v_chain/tris.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_chaingun.md2"); + else if( !Q_strcasecmp(ent->client->pers.weapon->view_model, "models/weapons/v_minderaser/tris.md2")) + sprintf(weaponmodel, "players/%s%s", weaponame, "w_minderaser.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model, "vehicles/deathball/v_wep.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_machinegun.md2"); @@ -833,6 +837,9 @@ */ void TeamEffects(edict_t *player) { + if(g_tactical->integer) + return; + if(player->dmteam == RED_TEAM) player->s.effects |= EF_TEAM1; else if(player->dmteam == BLUE_TEAM) @@ -859,7 +866,7 @@ if ((dmflags->integer & DF_SKINTEAMS) || ctf->value || tca->value || cp->value ) TeamEffects(ent); - else if (g_dmlights->integer) + else if (g_dmlights->integer && !g_tactical->integer) ent->s.effects |= EF_TEAM2; if (ent->client->quad_framenum > level.framenum) @@ -887,7 +894,7 @@ ent->s.effects |= EF_PENT; if(ent->client->kill_streak >= 8) - ent->s.effects |= EF_FLIES; + ent->s.effects |= EF_BUBBLES; //invisibility if(ent->client->invis_framenum > level.framenum) { @@ -1094,6 +1101,21 @@ int i; current_player = ent; current_client = ent->client; + + if (ent->client->chase_target != NULL && ent->client->resp.spectator != 0) + { + ent->redirect_number = ent->client->chase_target->s.number; + // This isn't needed to make spectators follow the chase target + // around; the server code does that already. This is so that when you + // un-follow someone, you're dropped off right where they were. Due to + // the weird way bots are done, there's no easy way to copy view + // angles over. + VectorCopy (ent->client->chase_target->s.origin, ent->s.origin); + ent->s.origin[2] += 24; // a little above the target + + } + else + ent->redirect_number = ent->s.number; // // If the origin or velocity have changed since ClientThink(), @@ -1115,10 +1137,9 @@ // if (level.intermissiontime) { - // FIXME: add view drifting here? current_client->ps.blend[3] = 0; current_client->ps.fov = 90; - G_SetStats (ent); + G_UpdateStats (ent); return; } @@ -1146,12 +1167,12 @@ xyspeed = sqrt(ent->velocity[0]*ent->velocity[0] + ent->velocity[1]*ent->velocity[1]); - if (xyspeed < 5) + if (xyspeed < 5 || !ent->groundentity) { bobmove = 0; current_client->bobtime = 0; // start at beginning of cycle again } - else if (ent->groundentity) + else { // so bobbing only cycles when on ground if (xyspeed > 210) bobmove = 0.25; @@ -1188,12 +1209,7 @@ // should be determined by the client SV_CalcBlend (ent); - // chase cam stuff - if (ent->client->resp.spectator) - G_SetSpectatorStats(ent); - else - G_SetStats (ent); - G_CheckChaseStats(ent); + G_UpdateStats (ent); G_SetClientEvent (ent); diff -Nru alien-arena-7.53+dfsg/source/game/p_weapon.c alien-arena-7.66+dfsg/source/game/p_weapon.c --- alien-arena-7.53+dfsg/source/game/p_weapon.c 2011-12-06 06:16:24.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/p_weapon.c 2013-06-22 20:07:36.000000000 +0000 @@ -45,7 +45,6 @@ G_ProjectSource (point, _distance, forward, right, result); } - /* =============== PlayerNoise @@ -117,7 +116,6 @@ gi.linkentity (noise); } - qboolean Pickup_Weapon (edict_t *ent, edict_t *other) { int index; @@ -135,6 +133,29 @@ return false; //why pick them up in these modes? } + if( g_tactical->integer) + { + //certain classes can only use certain weapons + if(other->ctype == 0) + { + if(!strcmp(ent->classname, "weapon_rocketlauncher") || !strcmp(ent->classname, "weapon_chaingun") || !strcmp(ent->classname, "weapon_bfg") + || !strcmp(ent->classname, "weapon_supershotgun")) + return false; + } + else if (!strcmp(ent->classname, "weapon_shotgun") || !strcmp(ent->classname, "weapon_hyperblaster") || !strcmp(ent->classname, "weapon_railgun") + || !strcmp(ent->classname, "weapon_minderaser")) + return false; + + //do not pick up a weapon if you already have one - the premise behind this is that it will give others opportunities to pick up weapons since they do not respawn + if(other->client->pers.inventory[ITEM_INDEX(FindItem("Alien Disruptor"))] || other->client->pers.inventory[ITEM_INDEX(FindItem("Alien Smartgun"))] + || other->client->pers.inventory[ITEM_INDEX(FindItem("Rocket Launcher"))] || other->client->pers.inventory[ITEM_INDEX(FindItem("Disruptor"))] + || other->client->pers.inventory[ITEM_INDEX(FindItem("Pulse Rifle"))] || other->client->pers.inventory[ITEM_INDEX(FindItem("Flame Thrower"))] ) + { + safe_centerprintf(other, "Cannot pick up weapon, you already have a weapon"); + return false; + } + } + if ( ( (dmflags->integer & DF_WEAPONS_STAY)) && other->client->pers.inventory[index]) { @@ -144,7 +165,6 @@ other->client->pers.inventory[index]++; - if (!(ent->spawnflags & DROPPED_ITEM) ) { // give them some ammo with it @@ -156,13 +176,21 @@ else Add_Ammo (other, ammo, ammo->quantity, true, false); - if (! (ent->spawnflags & DROPPED_PLAYER_ITEM) ) + //if ME, make sure original weapon gets respawned + if(!strcmp(ent->classname, "weapon_minderaser")) + { + if(ent->replaced_weapon != NULL) + SetRespawn(ent->replaced_weapon, 5); + } + + if ( !(ent->spawnflags & DROPPED_PLAYER_ITEM) ) { if (deathmatch->value) { if (dmflags->integer & DF_WEAPONS_STAY) ent->flags |= FL_RESPAWN; - else { + else + { //weapon = FindItem (ent->item->weapon); if(ent->item->weapmodel == WEAP_VAPORIZER) SetRespawn (ent, 10); @@ -175,8 +203,12 @@ if (other->client->pers.weapon != ent->item && (other->client->pers.inventory[index] == 1) && - ( !deathmatch->value || other->client->pers.weapon == FindItem("blaster") ) ) + ( !deathmatch->value || other->client->pers.weapon == FindItem("blaster") || other->client->pers.weapon == FindItem("Alien Blaster")) ) other->client->newweapon = ent->item; + + if (other->client->pers.lastfailedswitch == ent->item && + (level.framenum - other->client->pers.failedswitch_framenum) < 5) + other->client->newweapon = ent->item; return true; } @@ -212,14 +244,8 @@ gi.dprintf("Q2_FindFile: failed fopen for read: %s", full_path ); } } - } - - - - - /* =============== ChangeWeapon @@ -293,12 +319,17 @@ sprintf(weaponmodel, "players/%s%s", weaponame, "weapon.md2"); //default +#ifdef ALTERIA + //add in Alteria definitions +#else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"models/weapons/v_violator/tris.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_violator.md2"); else if( !Q_strcasecmp( ent->client->pers.weapon->view_model,"models/weapons/v_rocket/tris.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_rlauncher.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"models/weapons/v_blast/tris.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_blaster.md2"); + else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"models/weapons/v_alienblast/tris.md2")) + sprintf(weaponmodel, "players/%s%s", weaponame, "w_alienblaster.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"models/weapons/v_bfg/tris.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_bfg.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"models/weapons/v_rail/tris.md2")) @@ -311,26 +342,34 @@ sprintf(weaponmodel, "players/%s%s", weaponame, "w_hyperblaster.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"models/weapons/v_chain/tris.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_chaingun.md2"); + else if( !Q_strcasecmp(ent->client->pers.weapon->view_model, "models/weapons/v_minderaser/tris.md2")) + sprintf(weaponmodel, "players/%s%s", weaponame, "w_minderaser.md2"); else if( !Q_strcasecmp(ent->client->pers.weapon->view_model,"vehicles/deathball/v_wep.md2")) sprintf(weaponmodel, "players/%s%s", weaponame, "w_machinegun.md2"); +#endif sprintf(weaponpath, "%s", weaponmodel); - Q2_FindFile (weaponpath, &file); //does it really exist? - if(!file) + ent->s.modelindex2 = gi.checkmodelindex(weaponmodel); + + if (ent->s.modelindex2 == 0) // check if hasn't already been loaded { - sprintf(weaponpath, "%s%s", weaponame, "weapon.md2"); //no w_weaps, do we have this model? - Q2_FindFile (weaponpath, &file); - if(!file) //server does not have this player model - sprintf(weaponmodel, "players/martianenforcer/weapon.md2");//default player(martian) + Q2_FindFile (weaponpath, &file); //does it really exist? + if(!file) + { + sprintf(weaponpath, "%s%s", weaponame, "weapon.md2"); //no w_weaps, do we have this model? + Q2_FindFile (weaponpath, &file); + if(!file) //server does not have this player model + sprintf(weaponmodel, "players/martianenforcer/weapon.md2");//default player(martian) + else + { //have the model, but it has no w_weaps + sprintf(weaponmodel, "players/%s%s", weaponame, "weapon.md2"); //custom weapon + fclose(file); + } + } else - { //have the model, but it has no w_weaps - sprintf(weaponmodel, "players/%s%s", weaponame, "weapon.md2"); //custom weapon fclose(file); - } + ent->s.modelindex2 = gi.modelindex(weaponmodel); } - else - fclose(file); - ent->s.modelindex2 = gi.modelindex(weaponmodel); //play a sound like in Q3, except for blaster, so it doesn't do it on spawn. if( Q_strcasecmp( ent->client->pers.weapon->view_model,"models/weapons/v_blast/tris.md2") ) @@ -346,9 +385,7 @@ { ent->s.frame = FRAME_pain301; ent->client->anim_end = FRAME_pain304; - } - } /* @@ -400,7 +437,10 @@ return; } - ent->client->newweapon = FindItem ("blaster"); + if(g_tactical->integer && ent->ctype == 0) + ent->client->newweapon = FindItem ("Alien Blaster"); + else + ent->client->newweapon = FindItem ("Blaster"); } /* @@ -460,12 +500,16 @@ if (!ent->client->pers.inventory[ammo_index]) { safe_cprintf (ent, PRINT_HIGH, "No %s for %s.\n", ammo_item->pickup_name, item->pickup_name); + ent->client->pers.lastfailedswitch = item; + ent->client->pers.failedswitch_framenum = level.framenum; return; } if (ent->client->pers.inventory[ammo_index] < item->quantity) { safe_cprintf (ent, PRINT_HIGH, "Not enough %s for %s.\n", ammo_item->pickup_name, item->pickup_name); + ent->client->pers.lastfailedswitch = item; + ent->client->pers.failedswitch_framenum = level.framenum; return; } } @@ -474,8 +518,6 @@ ent->client->newweapon = item; } - - /* ================ Drop_Weapon @@ -513,25 +555,15 @@ */ #define FRAME_FIRE_FIRST (FRAME_ACTIVATE_LAST + 1) #define FRAME_IDLE_FIRST (FRAME_FIRE_LAST + 1) -#define FRAME_DEACTIVATE_FIRST (FRAME_IDLE_LAST + 1) -void Weapon_Generic (edict_t *ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST, int FRAME_IDLE_LAST, int FRAME_DEACTIVATE_LAST, int *pause_frames, int *fire_frames, void (*fire)(edict_t *ent)) +void Weapon_Generic (edict_t *ent, int FRAME_ACTIVATE_LAST, int FRAME_FIRE_LAST, int FRAME_IDLE_LAST, int FRAME_DEACTIVATE, int *pause_frames, int *fire_frames, void (*fire)(edict_t *ent)) { int n; + #define gunframe ent->client->ps.gunframe if (ent->client->weaponstate == WEAPON_DROPPING) { - if(excessive->value || quickweap->value || ent->client->invincible_framenum > level.framenum) { - ChangeWeapon (ent); - return; - } - else if (ent->client->ps.gunframe == FRAME_DEACTIVATE_LAST) - { - ChangeWeapon (ent); - return; - } - - ent->client->ps.gunframe++; + ChangeWeapon (ent); return; } @@ -539,29 +571,43 @@ { if(excessive->value || quickweap->value || ent->client->invincible_framenum > level.framenum) { ent->client->weaponstate = WEAPON_READY; - ent->client->ps.gunframe = FRAME_IDLE_FIRST; - return; + gunframe = FRAME_IDLE_FIRST; + goto fire_begin; //velociraptors be damned + } + else if ((ent->client->latched_buttons|ent->client->buttons) & (BUTTON_ATTACK|BUTTON_ATTACK2)) + { + if (gunframe >= FRAME_ACTIVATE_LAST-3) + { + ent->client->weaponstate = WEAPON_READY; + gunframe = FRAME_IDLE_FIRST; + goto fire_begin; //velociraptors be damned + } } - else if (ent->client->ps.gunframe == FRAME_ACTIVATE_LAST-2) + else if (gunframe == FRAME_ACTIVATE_LAST) { ent->client->weaponstate = WEAPON_READY; - ent->client->ps.gunframe = FRAME_IDLE_FIRST; + gunframe = FRAME_IDLE_FIRST; return; } - - ent->client->ps.gunframe++; + + gunframe++; return; } - if ((ent->client->newweapon) && (ent->client->weaponstate != WEAPON_FIRING)) + if ((ent->client->newweapon) && (ent->client->weaponstate != WEAPON_FIRING || gunframe == FRAME_FIRE_FIRST || gunframe == FRAME_FIRE_LAST)) { + if(excessive->value || quickweap->value || ent->client->invincible_framenum > level.framenum) { + ChangeWeapon (ent); + return; + } ent->client->weaponstate = WEAPON_DROPPING; - ent->client->ps.gunframe = FRAME_DEACTIVATE_FIRST+2; + gunframe = FRAME_DEACTIVATE-1; return; } if (ent->client->weaponstate == WEAPON_READY) { +fire_begin: if ( ((ent->client->latched_buttons|ent->client->buttons) & BUTTON_ATTACK) ) { ent->client->spawnprotected = false; @@ -570,7 +616,7 @@ if ((!ent->client->ammo_index) || ( ent->client->pers.inventory[ent->client->ammo_index] >= ent->client->pers.weapon->quantity)) { - ent->client->ps.gunframe = FRAME_FIRE_FIRST; + gunframe = FRAME_FIRE_FIRST; ent->client->weaponstate = WEAPON_FIRING; // start the animation @@ -586,6 +632,7 @@ ent->s.frame = FRAME_attack1-1; ent->client->anim_end = FRAME_attack8; } + } } else @@ -607,7 +654,7 @@ if ((!ent->client->ammo_index) || ( ent->client->pers.inventory[ent->client->ammo_index] >= ent->client->pers.weapon->quantity)) { - ent->client->ps.gunframe = FRAME_FIRE_FIRST; + gunframe = FRAME_FIRE_FIRST; ent->client->weaponstate = WEAPON_FIRING; // start the animation @@ -637,9 +684,11 @@ } else { - if (ent->client->ps.gunframe == FRAME_IDLE_LAST) + if (gunframe == FRAME_IDLE_LAST) { - ent->client->ps.gunframe = FRAME_IDLE_FIRST; +#ifdef ALTERIA + gunframe = FRAME_IDLE_FIRST; //we can return this to alien arena if we ever decide to have idle animations again for weapons +#endif return; } @@ -647,7 +696,7 @@ { for (n = 0; pause_frames[n]; n++) { - if (ent->client->ps.gunframe == pause_frames[n]) + if (gunframe == pause_frames[n]) { if (rand()&15) return; @@ -655,7 +704,7 @@ } } - ent->client->ps.gunframe++; + gunframe++; return; } } @@ -664,7 +713,7 @@ { for (n = 0; fire_frames[n]; n++) { - if (ent->client->ps.gunframe == fire_frames[n]) + if (gunframe == fire_frames[n]) { if (ent->client->quad_framenum > level.framenum) gi.sound(ent, CHAN_ITEM, gi.soundindex("items/damage3.wav"), 1, ATTN_NORM, 0); @@ -675,16 +724,69 @@ } if (!fire_frames[n]) - ent->client->ps.gunframe++; + gunframe++; - if (ent->client->ps.gunframe == FRAME_IDLE_FIRST+1) + if (gunframe == FRAME_IDLE_FIRST+1) ent->client->weaponstate = WEAPON_READY; } + #undef gunframe } -void weapon_plasma_fire (edict_t *ent) +#ifdef ALTERIA + //add Alteria weapons here +/* +====================================================================== + +VIOALATOR + +====================================================================== +*/ + +void punch_fire (edict_t *ent) { - vec3_t start; + vec3_t offset, start; + vec3_t forward, right; + int damage; + + damage = 30; + + AngleVectors (ent->client->v_angle, forward, right, NULL); + + VectorScale (forward, 2, ent->client->kick_origin); + ent->client->kick_angles[0] = -1; + + VectorSet(offset, 4, 4, ent->viewheight-2); + P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); + + fire_punch (ent, start, forward, damage); + + ent->client->ps.gunframe++; + + PlayerNoise(ent, start, PNOISE_WEAPON); + + //punch does not use ammo +} + +void Weapon_Punch (edict_t *ent) +{ + static int pause_frames[] = {52, 0}; + static int fire_frames[] = {9, 0}; + + Weapon_Generic (ent, 5, 14, 52, 56, pause_frames, fire_frames, punch_fire); +} + +void Weapon_Wizard_Punch (edict_t *ent) +{ + static int pause_frames[] = {52, 0}; + static int fire_frames[] = {9, 0}; + + Weapon_Generic (ent, 5, 14, 52, 56, pause_frames, fire_frames, punch_fire); +} + +#else +void weapon_disruptor_fire (edict_t *ent) +{ + vec3_t start, muzzle; vec3_t forward, right; vec3_t offset; @@ -726,8 +828,10 @@ ent->client->kick_angles[0] = -3; VectorSet(offset, 32, 5, ent->viewheight-5); + P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, muzzle); + VectorSet(offset, 32, 0, ent->viewheight); P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); - fire_plasma (ent, start, forward, damage*damage_buildup, kick); + fire_disruptor (ent, start, muzzle, forward, damage*damage_buildup, kick); //alt fire - reset some things ent->client->ps.fov = atoi(Info_ValueForKey(ent->client->pers.userinfo, "fov")); //alt fire - reset the fov; @@ -758,12 +862,12 @@ static int excessive_fire_frames[] = {5,7,9,11,0}; if(excessive->value || ent->client->invincible_framenum > level.framenum) - Weapon_Generic (ent, 4, 12, 42, 46, pause_frames, excessive_fire_frames, weapon_plasma_fire); + Weapon_Generic (ent, 4, 12, 42, 46, pause_frames, excessive_fire_frames, weapon_disruptor_fire); else - Weapon_Generic (ent, 4, 12, 42, 46, pause_frames, fire_frames, weapon_plasma_fire); + Weapon_Generic (ent, 4, 12, 42, 46, pause_frames, fire_frames, weapon_disruptor_fire); } -void weapon_energy_field_fire (edict_t *ent) +void weapon_vaporizer_fire (edict_t *ent) { vec3_t start; vec3_t forward, right; @@ -827,7 +931,7 @@ } else { - fire_energy_field (ent, start, forward, damage, kick); + fire_vaporizer (ent, start, forward, damage, kick); if (! ( dmflags->integer & DF_INFINITE_AMMO ) ) ent->client->pers.inventory[ent->client->ammo_index]= ent->client->pers.inventory[ent->client->ammo_index]-2; } @@ -858,7 +962,7 @@ static int pause_frames[] = {48, 0}; static int fire_frames[] = {6, 7, 12, 13, 0}; - Weapon_Generic (ent, 5, 18, 48, 52, pause_frames, fire_frames, weapon_energy_field_fire); + Weapon_Generic (ent, 5, 18, 48, 52, pause_frames, fire_frames, weapon_vaporizer_fire); } /* @@ -904,7 +1008,7 @@ return; } - if (!(ent->client->buttons & BUTTON_ATTACK)) + if (!(ent->client->buttons & BUTTON_ATTACK) || (!ent->is_bot && ent->client->newweapon)) { ent->client->ps.gunframe = 17; return; @@ -1033,10 +1137,10 @@ ====================================================================== */ -void Blaster_Fire (edict_t *ent, vec3_t g_offset, int damage, qboolean hyper, int effect) +void Blaster_Fire (edict_t *ent, vec3_t g_offset, int damage, qboolean hyper, qboolean alien, int effect) { vec3_t forward, right; - vec3_t start; + vec3_t start, muzzle; vec3_t offset; if (is_quad) @@ -1044,7 +1148,8 @@ AngleVectors (ent->client->v_angle, forward, right, NULL); - if(!hyper) { + if(!hyper) + { VectorScale (forward, -3, ent->client->kick_origin); ent->client->kick_angles[0] = -3; } @@ -1056,28 +1161,43 @@ else VectorSet(offset, 30, 6, ent->viewheight-5); VectorAdd (offset, g_offset, offset); - P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); + P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, muzzle); + if (hyper && (ent->client->buttons & BUTTON_ATTACK)) + { + VectorSet(offset, 32, 0, ent->viewheight); + P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); + } + else + VectorCopy (muzzle, start); - if(hyper) { - if(ent->client->buttons & BUTTON_ATTACK2) {//alt fire + if(hyper) + { + if(ent->client->buttons & BUTTON_ATTACK2) + { + //alt fire ent->altfire = !ent->altfire; - if(ent->altfire) { + if(ent->altfire) + { gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/blastf1a.wav"), 1, ATTN_NORM, 0); - fire_blasterball (ent, start, forward, damage*3, 1000, effect, hyper); + fire_blasterball (ent, start, forward, damage*3, 1000, effect, hyper, false); } } - else { + else + { // [no file]gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/hyprbd1a.wav"), 1, ATTN_NORM, 0); - fire_blaster (ent, start, forward, damage, 2800, effect, hyper); + fire_blaster (ent, start, muzzle, forward, damage, 2800, effect, hyper); } } - else { - if(ent->client->buttons & BUTTON_ATTACK2) { //alt fire - fire_blaster_beam (ent, start, forward, (int)((float)damage/1.4), 0, false); + else + { + if(ent->client->buttons & BUTTON_ATTACK2) + { + //alt fire + fire_blaster_beam (ent, start, forward, (int)((float)damage/1.4), 0, false, alien); gi.sound(ent, CHAN_AUTO, gi.soundindex("vehicles/shootlaser.wav"), 1, ATTN_NORM, 0); } else - fire_blasterball (ent, start, forward, damage, 1200, effect, hyper); + fire_blasterball (ent, start, forward, damage, 1200, effect, hyper, alien); } // send muzzle flash gi.WriteByte (svc_muzzleflash); @@ -1094,11 +1214,11 @@ //create visual muzzle flash sprite! if(!hyper || (ent->client->buttons & BUTTON_ATTACK2)) { - VectorAdd(start, forward, start); + VectorAdd(muzzle, forward, muzzle); gi.WriteByte (svc_temp_entity); gi.WriteByte (TE_BLUE_MUZZLEFLASH); - gi.WritePosition (start); - gi.multicast (start, MULTICAST_PVS); + gi.WritePosition (muzzle); + gi.multicast (muzzle, MULTICAST_PVS); } } @@ -1109,7 +1229,7 @@ damage = 30; - Blaster_Fire (ent, vec3_origin, damage, false, EF_BLASTER); + Blaster_Fire (ent, vec3_origin, damage, false, false, EF_BLASTER); ent->client->ps.gunframe++; } @@ -1125,6 +1245,29 @@ Weapon_Generic (ent, 4, 8, 52, 55, pause_frames, fire_frames, Weapon_Blaster_Fire); } +//to do - tactical - create different effect(i think same damage and behavior though). +void Weapon_AlienBlaster_Fire (edict_t *ent) +{ + int damage; + + damage = 30; + + Blaster_Fire (ent, vec3_origin, damage, false, true, EF_ROCKET); + ent->client->ps.gunframe++; +} + +void Weapon_AlienBlaster (edict_t *ent) +{ + static int pause_frames[] = {52, 0}; + static int fire_frames[] = {5,0}; + static int excessive_fire_frames[] = {5,6,7,8,0}; + + if(excessive->value || ent->client->invincible_framenum > level.framenum) + Weapon_Generic (ent, 4, 8, 52, 55, pause_frames, excessive_fire_frames, Weapon_AlienBlaster_Fire); + else + Weapon_Generic (ent, 4, 8, 52, 55, pause_frames, fire_frames, Weapon_AlienBlaster_Fire); +} + //vehicles void Weapon_Bomber_Fire (edict_t *ent) { @@ -1222,7 +1365,7 @@ if(ent->client->buttons & BUTTON_ATTACK2) fire_rocket (ent, start, forward, damage, 1200, damage_radius, radius_damage); else - fire_blaster_beam (ent, start, forward, damage, 0, true); + fire_blaster_beam (ent, start, forward, damage, 0, true, false); // send muzzle flash gi.WriteByte (svc_muzzleflash); @@ -1250,12 +1393,14 @@ P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); - if(ent->client->buttons & BUTTON_ATTACK2) { + if(ent->client->buttons & BUTTON_ATTACK2) + { fire_rocket (ent, start, forward, damage, 1200, damage_radius, radius_damage); gi.sound (ent, CHAN_WEAPON, gi.soundindex("weapons/rocklr1b.wav"), 1, ATTN_NORM, 0); } - else { - fire_blaster_beam (ent, start, forward, damage, 0, true); + else + { + fire_blaster_beam (ent, start, forward, damage, 0, true, false); gi.sound (ent, CHAN_WEAPON, gi.soundindex("vehicles/shootlaser.wav"), 1, ATTN_NORM, 0); } @@ -1309,7 +1454,7 @@ P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); if(ent->client->buttons & BUTTON_ATTACK2) { - fire_blasterball (ent, start, forward, damage*3, 1500, EF_ROCKET, false); + fire_blasterball (ent, start, forward, damage*3, 1500, EF_ROCKET, false, false); gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/hypbrl1a.wav"), 1, ATTN_NORM, 0); } else if(ent->client->ps.gunframe == 6) { @@ -1359,7 +1504,7 @@ int effect; int damage; - if (!((ent->client->buttons & BUTTON_ATTACK) || (ent->client->buttons & BUTTON_ATTACK2))) + if (!(ent->client->buttons & (BUTTON_ATTACK|BUTTON_ATTACK2)) || (!ent->is_bot && ent->client->newweapon)) { ent->client->ps.gunframe = 25; } @@ -1390,7 +1535,7 @@ else damage = 7; - Blaster_Fire (ent, offset, damage, true, effect); + Blaster_Fire (ent, offset, damage, true, false, effect); if (! ( dmflags->integer & DF_INFINITE_AMMO ) ) ent->client->pers.inventory[ent->client->ammo_index]--; } @@ -1404,7 +1549,7 @@ void Weapon_Beamgun (edict_t *ent) { static int pause_frames[] = {53, 0}; - static int fire_frames[] = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 21, 22, 23, 24, 0}; + static int fire_frames[] = {6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 0}; Weapon_Generic (ent, 5, 24, 53, 57, pause_frames, fire_frames, Weapon_Beamgun_Fire); } @@ -1543,14 +1688,19 @@ } else if(!ent->altfire){ + if (!(ent->client->buttons & BUTTON_ATTACK) && ent->client->ps.gunframe > 6) { - //Fast-forward through firing animation if not firing anymore. - //This is purely cosmetic, the player can resume firing at any - //point in this animation. - //TODO: special sound effect here? - ent->client->ps.gunframe+=2; + + // Make it easier to escape from the animation while not firing. + // Since this is a rapid-fire weapon, there's no reason not to do + // this. (If it wasn't, allowing this would make it be possible to + // cheat the maximum fire rate.) + if (!ent->is_bot && ent->client->newweapon) + ent->client->ps.gunframe = 14; + return; //Don't waste ammo } + for (i=0 ; iviewheight-0.5); @@ -1580,6 +1730,13 @@ gi.multicast (start, MULTICAST_PVS); if (! ( dmflags->integer & DF_INFINITE_AMMO ) ) ent->client->pers.inventory[ent->client->ammo_index] -= shots; + + // Make it easier to escape from the animation while firing. Since + // this is a rapid-fire weapon, there's no reason not to do this. (If + // it wasn't, allowing this would make it be possible to cheat the + // maximum fire rate.) + if (!ent->is_bot && ent->client->newweapon) + ent->client->ps.gunframe = 14; } } @@ -1593,7 +1750,7 @@ } -void weapon_floater_fire (edict_t *ent) +void weapon_smartgun_fire (edict_t *ent) { vec3_t offset, start; vec3_t forward, right; @@ -1621,14 +1778,15 @@ forward[0] = forward[0] * 2.6; forward[1] = forward[1] * 2.6; forward[2] = forward[2] * 2.6; - if(ent->altfire) { + if(ent->altfire) + { if(excessive->value) - fire_floater (ent, start, forward, damage, 400, damage_radius, radius_damage, 8); + fire_smartgrenade (ent, start, forward, damage, 400, damage_radius, radius_damage, 8); else fire_prox (ent, start, forward, damage-50, 200, damage_radius, radius_damage-50, 8); } else - fire_floater (ent, start, forward, damage, 500, damage_radius, radius_damage, 8); + fire_smartgrenade (ent, start, forward, damage, 500, damage_radius, radius_damage, 8); // send muzzle flash gi.WriteByte (svc_muzzleflash); gi.WriteShort (ent-g_edicts); @@ -1664,7 +1822,85 @@ else if(ent->client->buttons & BUTTON_ATTACK) ent->altfire = false; - Weapon_Generic (ent, 3, 11, 31, 35, pause_frames, fire_frames, weapon_floater_fire); + Weapon_Generic (ent, 3, 11, 31, 35, pause_frames, fire_frames, weapon_smartgun_fire); +} + +void weapon_minderaser_fire (edict_t *ent) +{ + vec3_t offset, start; + vec3_t forward, right; + int damage; + float damage_radius; + int radius_damage; + + damage = 110; + radius_damage = 120; + damage_radius = 120; + if (is_quad || excessive->value) + { + damage *= 2; + radius_damage *= 2; + } + + AngleVectors (ent->client->v_angle, forward, right, NULL); + + VectorScale (forward, 2, ent->client->kick_origin); + ent->client->kick_angles[0] = -1; + + VectorSet(offset, 8, 8, ent->viewheight-4); + P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); + forward[0] = forward[0] * 12.0; + forward[1] = forward[1] * 12.0; + forward[2] = forward[2] * 12.0; + + if(ent->altfire) + fire_spider (ent, start, forward, 25); + else + fire_minderaser (ent, start, forward, 30); + + gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/minderaserfire.wav"), 1, ATTN_NORM, 0); + + // send muzzle flash + gi.WriteByte (svc_muzzleflash); + gi.WriteShort (ent-g_edicts); + gi.WriteByte (MZ_RAILGUN | is_silenced); + gi.multicast (ent->s.origin, MULTICAST_PVS); + + ent->client->ps.gunframe++; + + PlayerNoise(ent, start, PNOISE_WEAPON); + + //create visual muzzle flash sprite! + forward[0] = forward[0] * 2; + forward[1] = forward[1] * 2; + + VectorAdd(start, forward, start); + start[2]+=6; + + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_BOSSTPORT); + gi.WritePosition (start); + gi.multicast (start, MULTICAST_PVS); + + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_BLUE_MUZZLEFLASH); + gi.WritePosition (start); + gi.multicast (start, MULTICAST_PVS); + + ent->client->pers.inventory[ent->client->ammo_index]--; +} + +void Weapon_Minderaser (edict_t *ent) +{ + static int pause_frames[] = {31, 0}; + static int fire_frames[] = {6, 0}; + + if(ent->client->buttons & BUTTON_ATTACK2) + ent->altfire = true; + else if(ent->client->buttons & BUTTON_ATTACK) + ent->altfire = false; + + Weapon_Generic (ent, 3, 11, 31, 35, pause_frames, fire_frames, weapon_minderaser_fire); } void Weapon_Deathball_Fire (edict_t *ent) @@ -1681,7 +1917,6 @@ VectorSet(offset, 32, 5, ent->viewheight-5); P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); - if(ent->client->ps.gunframe == 7) { fire_deathball (ent, start, forward, 550); @@ -1698,13 +1933,9 @@ gi.WriteByte (TE_BLUE_MUZZLEFLASH); gi.WritePosition (start); gi.multicast (start, MULTICAST_PVS); - - + gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/energyfield.wav"), 1, ATTN_NORM, 0); ent->client->weapon_sound = 0; - - - } ent->client->ps.gunframe++; @@ -1720,7 +1951,7 @@ /* ====================================================================== -VIOALATOR +VIOLATOR ====================================================================== */ @@ -1733,18 +1964,36 @@ int damage; int kick = 4; - if(excessive->value || instagib->value) + if(excessive->value || instagib->integer) damage = 200; else damage = 40; - if ((ent->client->ps.gunframe == 6) && !(ent->client->buttons & BUTTON_ATTACK || ent->client->buttons & BUTTON_ATTACK2)) + if ((ent->client->ps.gunframe == 6) && !(ent->client->buttons & (BUTTON_ATTACK|BUTTON_ATTACK2))) { ent->client->ps.gunframe = 14; ent->client->weapon_sound = 0; return; } - else if (ent->client->ps.gunframe == 14 && (ent->client->buttons & BUTTON_ATTACK || ent->client->buttons & BUTTON_ATTACK2)) + else if (!ent->altfire && ent->client->ps.gunframe > 6 && !(ent->client->buttons & (BUTTON_ATTACK|BUTTON_ATTACK2))) + { + //Fast-forward through firing animation if not firing anymore. + //This is purely cosmetic, the player can resume firing at any point + //point in this animation. + //TODO: special sound effect here? + ent->client->ps.gunframe+=1; + ent->client->weapon_sound = 0; + + // Make it easier to escape from the animation while not firing. Since + // this is a rapid-fire weapon, there's no reason not to do this. (If + // it wasn't, allowing this would make it be possible to cheat the + // maximum fire rate.) + if (!ent->is_bot && ent->client->newweapon) + ent->client->ps.gunframe = 14; + + return; + } + else if (ent->client->ps.gunframe == 14 && (ent->client->buttons & (BUTTON_ATTACK|BUTTON_ATTACK2))) { ent->client->ps.gunframe = 6; } @@ -1851,6 +2100,13 @@ gi.WriteByte (TE_BLUE_MUZZLEFLASH); gi.WritePosition (start); gi.multicast (start, MULTICAST_PVS); + + // Make it easier to escape from the animation while firing. Since + // this is a rapid-fire weapon, there's no reason not to do this. (If + // it wasn't, allowing this would make it be possible to cheat the + // maximum fire rate.) + if (!ent->is_bot && ent->client->newweapon) + ent->client->ps.gunframe = 14; } } @@ -1866,3 +2122,52 @@ } +//Tactical weapons - bombs, detonators, etc + +void Weapon_TacticalBomb_Fire (edict_t *ent) +{ + vec3_t start; + vec3_t forward, right; + vec3_t offset; + + AngleVectors (ent->client->v_angle, forward, right, NULL); + + VectorScale (forward, -3, ent->client->kick_origin); + ent->client->kick_angles[0] = -3; + + VectorSet(offset, 32, 5, ent->viewheight-5); + P_ProjectSource (ent->client, ent->s.origin, offset, forward, right, start); + + if(ent->client->ps.gunframe == 7) { + + fire_tacticalbomb (ent, start, forward, 100); + + // send muzzle flash + gi.WriteByte (svc_muzzleflash); + gi.WriteShort (ent-g_edicts); + gi.WriteByte (MZ_RAILGUN | is_silenced); + gi.multicast (ent->s.origin, MULTICAST_PVS); + + VectorAdd(start, forward, start); + start[2]+=6; + gi.WriteByte (svc_temp_entity); + gi.WriteByte (TE_BLUE_MUZZLEFLASH); + gi.WritePosition (start); + gi.multicast (start, MULTICAST_PVS); + + gi.sound(ent, CHAN_AUTO, gi.soundindex("weapons/energyfield.wav"), 1, ATTN_NORM, 0); // to do - change me + ent->client->weapon_sound = 0; + } + ent->client->ps.gunframe++; + + ent->client->pers.inventory[ent->client->ammo_index]--; + +} +void Weapon_TacticalBomb (edict_t *ent) +{ + static int pause_frames[] = {33, 0}; + static int fire_frames[] = {7,0}; + + Weapon_Generic (ent, 5, 11, 33, 39, pause_frames, fire_frames, Weapon_TacticalBomb_Fire); +} +#endif diff -Nru alien-arena-7.53+dfsg/source/game/q_shared.c alien-arena-7.66+dfsg/source/game/q_shared.c --- alien-arena-7.53+dfsg/source/game/q_shared.c 2010-11-21 13:01:03.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/q_shared.c 2013-06-22 20:07:36.000000000 +0000 @@ -1151,6 +1151,7 @@ { float f; byte b[4]; + } dat1, dat2; @@ -1213,7 +1214,7 @@ */ /* * 2010-11 Use multiple static buffers to avoid collisions. - * Like g_utils::tv(),vtos() + * Like g_utils::tv(),vtos() */ char *va(char *format, ...) { @@ -1770,13 +1771,13 @@ if (!strcmp (key, pkey) ) { - /* Two strcpy's instead of one - this was messing up - * on modern, 64-bit Linux system due to "s" being modified - * while it is being copied. - * - E.B. - */ - strcpy( value , s ); - strcpy( start , value ); + /* Two strcpy's instead of one - this was messing up + * on modern, 64-bit Linux system due to "s" being modified + * while it is being copied. + * - E.B. + */ + strcpy( value , s ); + strcpy( start , value ); return; } @@ -1935,7 +1936,7 @@ { // while chars and 1+ glyphs possible and 1+ chars possible. if ( Q_IsColorString( pch ) ) { - if ( char_count < (char_count_limit-4) ) + if ( char_count < (char_count_limit-3) ) { // room for 3 chars is available char_count += 2; pch += 2; diff -Nru alien-arena-7.53+dfsg/source/game/q_shared.h alien-arena-7.66+dfsg/source/game/q_shared.h --- alien-arena-7.53+dfsg/source/game/q_shared.h 2011-09-29 05:16:21.000000000 +0000 +++ alien-arena-7.66+dfsg/source/game/q_shared.h 2013-06-22 20:07:36.000000000 +0000 @@ -356,6 +356,9 @@ #ifndef CVAR #define CVAR +// These are all the flags that actually do anything. +// NOTE: there is no need to maintain any kind of compatibility, we can change +// these if we want to. #define CVAR_ARCHIVE 1 // set to cause it to be saved to vars.rc #define CVAR_USERINFO 2 // added to userinfo when changed #define CVAR_SERVERINFO 4 // added to serverinfo when changed @@ -367,6 +370,16 @@ // string when changed #define CVAR_PROFILE 128 // profile information +// These flags are purely for documentation (used by the "help" command.) +// Usually, at most one of these will be set. They are not "enforced" by the +// code in any way. +// TODO: go through and add all these flags for cvars as appropriate. +// TODO: others like address, path, IP address, etc? +#define CVARDOC_BOOL 512 +#define CVARDOC_STR 1024 +#define CVARDOC_FLOAT 2048 +#define CVARDOC_INT 4096 + // nothing outside the Cvar_*() functions should modify these fields! typedef struct cvar_s { @@ -378,7 +391,8 @@ qboolean modified; // set each time the cvar is changed float value; float default_value; - int integer; //BLOOMS + int integer; + char *description; // Optional (may be NULL) struct cvar_s *next; } cvar_t; @@ -425,8 +439,6 @@ #define CONTENTS_TRANSLUCENT 0x10000000 // auto set if any surface has trans #define CONTENTS_LADDER 0x20000000 - - #define SURF_LIGHT 0x1 // value will hold the light strength #define SURF_SLICK 0x2 // effects game physics @@ -437,8 +449,11 @@ #define SURF_TRANS66 0x20 #define SURF_FLOWING 0x40 // scroll towards angle #define SURF_NODRAW 0x80 // don't bother referencing the texture - - +#define SURF_BLOOD 0x400 // dripping blood surface +#define SURF_WATER 0x800 // dripping water surface +#define SURF_UNDERWATER 0x2000 // reflecting ripples; applied automatically + // to underwater surfs but could be applied + // manually as well // content masks #define MASK_ALL (-1) @@ -452,13 +467,11 @@ #define MASK_CURRENT (CONTENTS_CURRENT_0|CONTENTS_CURRENT_90|CONTENTS_CURRENT_180|CONTENTS_CURRENT_270|CONTENTS_CURRENT_UP|CONTENTS_CURRENT_DOWN) #define MASK_VISIBILILITY (CONTENTS_SOLID/*|CONTENTS_WINDOW*/|CONTENTS_WATER|CONTENTS_LAVA|CONTENTS_SLIME) - // gi.BoxEdicts() can return a list of either solid or trigger entities // FIXME: eliminate AREA_ distinction? #define AREA_SOLID 1 #define AREA_TRIGGERS 2 - // plane_t structure // !!! if this is changed, it must be changed in asm code too !!! typedef struct cplane_s @@ -513,8 +526,6 @@ struct edict_s *ent; // not set by CM_*() functions } trace_t; - - // pmove_state_t is the information necessary for client side movement // prediction typedef enum @@ -546,7 +557,7 @@ { pmtype_t pm_type; - short origin[3]; // 12.3 + int origin[3]; // 12.3 short velocity[3]; // 12.3 byte pm_flags; // ducked, jump_held, etc byte pm_time; // each unit = 8 ms @@ -555,7 +566,6 @@ // changed by spawns, rotating objects, and teleporters } pmove_state_t; - // // button bits // @@ -564,7 +574,6 @@ #define BUTTON_ATTACK2 4 #define BUTTON_ANY 128 // any key whatsoever - // usercmd_t is sent to the server each client frame typedef struct usercmd_s { @@ -576,7 +585,6 @@ byte lightlevel; // light level the player is standing on } usercmd_t; - #define MAXTOUCH 32 typedef struct { @@ -624,7 +632,7 @@ #define EF_ANIM23 0x00000800 // automatically cycle between frames 2 and 3 at 2 hz #define EF_ANIM_ALL 0x00001000 // automatically cycle through all frames at 2hz #define EF_ANIM_ALLFAST 0x00002000 // automatically cycle through all frames at 10hz -#define EF_FLIES 0x00004000 +#define EF_BUBBLES 0x00004000 #define EF_QUAD 0x00008000 #define EF_PENT 0x00010000 #define EF_TELEPORTER 0x00020000 // particle fountain @@ -654,6 +662,7 @@ #define RF_SHELL_HALF_DAM 0x00020000 #define RF_NOSHADOWS 0x00040000 //use this one for turning off shadows, etc. #define RF_MONSTER 0x00080000 +#define RF_NODRAW 0x00100000 //use this instead of a 0 modelindex for compatibility. #define RF_MENUMODEL 0x01280000 //for player menu @@ -710,7 +719,7 @@ #define TE_ROCKET_EXPLOSION_WATER 17 #define TE_REDLASER 19 #define TE_BFG_BIGEXPLOSION 21 -#define TE_BOSSTPORT 22 // used as '22' in a map, so DON'T RENUMBER!!! +#define TE_BOSSTPORT 22 #define TE_DONTUSE2 23 #define TE_GREENBLOOD 26 #define TE_LIGHTNING 33 @@ -765,9 +774,9 @@ #define STAT_AMMO 3 #define STAT_ARMOR_ICON 4 #define STAT_ARMOR 5 -#define STAT_SELECTED_ICON 6 -#define STAT_PICKUP_ICON 7 -#define STAT_PICKUP_STRING 8 +#define STAT_RED_MATCHES 6 +#define STAT_BLUE_MATCHES 7 +#define STAT_TACTICAL_SCORE 8 #define STAT_TIMER_ICON 9 #define STAT_TIMER 10 #define STAT_HELPICON 11 @@ -775,6 +784,7 @@ #define STAT_LAYOUTS 13 #define STAT_FRAGS 14 #define STAT_FLASHES 15 // cleared each frame, 1 = health, 2 = armor +#define STAT_FLAGS 15 // misc boolean values, use only bits 3-16 #define STAT_CHASE 16 #define STAT_SPECTATOR 17 #define STAT_SCOREBOARD 18 @@ -794,6 +804,13 @@ #define MAX_STATS 32 +// bit flags for use in STAT_FLAGS +#define STAT_FLAGS_CROSSHAIRPOSITION (4|8) +#define STAT_FLAGS_CROSSHAIRPOS1 0 //default +#define STAT_FLAGS_CROSSHAIRCENTER 4 +#define STAT_FLAGS_CROSSHAIRPOS2 8 +#define STAT_FLAGS_CROSSHAIRPOS3 12 + // dmflags->value flags #define DF_NO_HEALTH 0x00000001 // 1 @@ -833,6 +850,12 @@ #define ANGLE2SHORT(x) ((int)((x)*65536/360) & 65535) #define SHORT2ANGLE(x) ((x)*(360.0/65536)) +// Number of bytes per axis of world coordinates in the net protocol. +// 2 is the default, backward-compatible number. +// TODO: make this a variable, have it set based on the map size, server kicks +// clients that don't support big maps. +#define coord_bytes 2 + // // config strings are a general means of communication from @@ -987,4 +1010,14 @@ #define MAX_LATENT_CMDS 64 //unlagged - lag simulation #2 +// +// types of compression +// +enum compressiontypes_e { + compression_zlib_raw, + compression_lzo, + compression_zlib_header, + last_compressiontype_known +}; + #endif /* Q_SHARED_H_ */ diff -Nru alien-arena-7.53+dfsg/source/Makefile.am alien-arena-7.66+dfsg/source/Makefile.am --- alien-arena-7.53+dfsg/source/Makefile.am 2011-08-22 05:46:16.000000000 +0000 +++ alien-arena-7.66+dfsg/source/Makefile.am 2013-06-22 20:07:36.000000000 +0000 @@ -49,41 +49,44 @@ endif # Dedicated Server libraries and flags -crx_ded_LDADD = libgame.a -crx_ded_CPPFLAGS = $(AM_CPPFLAGS) -DDEDICATED_ONLY +alienarena_ded_LDADD = libgame.a +alienarena_ded_CPPFLAGS = $(AM_CPPFLAGS) -DDEDICATED_ONLY # Client libraries and flags -crx_CPPFLAGS = $(AM_CPPFLAGS) \ +alienarena_CPPFLAGS = $(AM_CPPFLAGS) \ $(PTHREAD_CFLAGS) \ $(X11_CLAGS) \ $(DEPS_CFLAGS) \ $(ODE_CFLAGS) \ $(XXF86VM_CFLAGS) \ - $(XXF86DGA_CFLAGS) + $(XXF86DGA_CFLAGS) \ + $(ZLIB_CFLAGS) if USE_SYSTEM_LIBODE # -# crx with system libode +# alienarena with system libode # -crx_LDADD = libgame.a \ +alienarena_LDADD = libgame.a \ $(PTHREAD_LIBS) \ $(X11_LIBS) \ $(DEPS_LIBS) \ $(ODE_LIBS) \ $(XXF86VM_LIBS) \ - $(XXF86DGA_LIBS) + $(XXF86DGA_LIBS) \ + $(ZLIB_LIBS) else # -# crx with integrated libode +# alienarena with integrated libode # -crx_LDADD = libgame.a \ +alienarena_LDADD = libgame.a \ libode.a \ $(PTHREAD_LIBS) \ $(X11_LIBS) \ $(DEPS_LIBS) \ $(XXF86VM_LIBS) \ $(XXF86DGA_LIBS) \ + $(ZLIB_LIBS) \ -lstdc++ libode_a_CPPFLAGS = -I$(top_srcdir)/source/unix/odesrc/OPCODE \ @@ -92,9 +95,8 @@ -DdTRIMESH_ENABLED \ -DdTRIMESH_OPCODE -if ODE_NODEBUG +# ODE has an additional custom "no debug" variable libode_a_CPPFLAGS += -DNDEBUG -DdNODEBUG -endif endif @@ -102,22 +104,22 @@ # On Win32, always build the client # TODO: maybe fixup libs, cppflags hacks -bin_PROGRAMS = crx -crx_LDADD += $(WIN32_LIBS) -crx_CPPFLAGS += -DCURL_STATICLIB -DNDEBUG +bin_PROGRAMS = alienarena +alienarena_LDADD += $(WIN32_LIBS) +alienarena_CPPFLAGS += -DCURL_STATICLIB -DNDEBUG else # On Unix, always build the server, and the client if BUILD_CLIENT is enabled -bin_PROGRAMS = crx-ded +bin_PROGRAMS = alienarena-ded if BUILD_CLIENT -bin_PROGRAMS += crx +bin_PROGRAMS += alienarena endif endif # common client sources -crx_SOURCES = \ +alienarena_SOURCES = \ client/anorms.h \ client/cl_ents.c \ client/cl_fx.c \ @@ -150,7 +152,6 @@ client/snd_openal.c \ client/sound.h \ client/vid.h \ - client/vid_menu.c \ game/game.h \ game/q_shared.c \ game/q_shared.h \ @@ -175,8 +176,6 @@ ref_gl/glext.h \ ref_gl/qgl.h \ ref_gl/r_bloom.c \ - ref_gl/r_bmfont.c \ - ref_gl/r_bmfont.h \ ref_gl/r_draw.c \ ref_gl/r_image.c \ ref_gl/r_image.h \ @@ -184,6 +183,7 @@ ref_gl/r_iqm.c \ ref_gl/r_light.c \ ref_gl/r_local.h \ + ref_gl/r_lodcalc.h \ ref_gl/r_main.c \ ref_gl/r_math.c \ ref_gl/r_math.h \ @@ -224,12 +224,11 @@ # Unix Client sources if BUILD_UNIX -crx_SOURCES += \ +alienarena_SOURCES += \ unix/gl_glx.c \ unix/glw_unix.h \ unix/net_udp.c \ unix/qal_unix.c \ - unix/qasm.h \ unix/qgl_unix.c \ unix/q_shunix.c \ unix/rw_unix.c \ @@ -240,7 +239,7 @@ # Win32 MinGW Client sources if BUILD_WIN32 -crx_SOURCES += \ +alienarena_SOURCES += \ win32/conproc.c \ win32/conproc.h \ win32/glw_imp.c \ @@ -257,7 +256,7 @@ endif # Dedicated Server sources (Unix only) -crx_ded_SOURCES = \ +alienarena_ded_SOURCES = \ client/anorms.h \ game/game.h \ game/q_shared.c \ @@ -329,6 +328,8 @@ game/g_unlagged.c \ game/g_utils.c \ game/g_vehicles.c \ + game/g_spider.c \ + game/g_spider.h \ game/g_weapon.c \ game/m_move.c \ game/m_player.h \ diff -Nru alien-arena-7.53+dfsg/source/Makefile.in alien-arena-7.66+dfsg/source/Makefile.in --- alien-arena-7.53+dfsg/source/Makefile.in 2011-12-27 05:05:14.000000000 +0000 +++ alien-arena-7.66+dfsg/source/Makefile.in 2013-08-27 20:18:21.000000000 +0000 @@ -1,9 +1,8 @@ -# Makefile.in generated by automake 1.11.1 from Makefile.am. +# Makefile.in generated by automake 1.14 from Makefile.am. # @configure_input@ -# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, -# 2003, 2004, 2005, 2006, 2007, 2008, 2009 Free Software Foundation, -# Inc. +# Copyright (C) 1994-2013 Free Software Foundation, Inc. + # This Makefile.in is free software; the Free Software Foundation # gives unlimited permission to copy and/or distribute it, # with or without modifications, as long as this notice is preserved. @@ -37,6 +36,51 @@ VPATH = @srcdir@ +am__is_gnu_make = test -n '$(MAKEFILE_LIST)' && test -n '$(MAKELEVEL)' +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) pkgdatadir = $(datadir)/@PACKAGE@ pkgincludedir = $(includedir)/@PACKAGE@ pkglibdir = $(libdir)/@PACKAGE@ @@ -58,20 +102,19 @@ # CPP flags for standard installation @ALTERNATE_INSTALL_FALSE@am__append_1 = -DDATADIR='"$(pkgdatadir)"' -@ODE_NODEBUG_TRUE@@USE_SYSTEM_LIBODE_FALSE@am__append_2 = -DNDEBUG -DdNODEBUG -@BUILD_WIN32_FALSE@bin_PROGRAMS = crx-ded$(EXEEXT) $(am__EXEEXT_1) -@BUILD_WIN32_TRUE@bin_PROGRAMS = crx$(EXEEXT) $(am__EXEEXT_1) -@BUILD_WIN32_TRUE@am__append_3 = $(WIN32_LIBS) -@BUILD_WIN32_TRUE@am__append_4 = -DCURL_STATICLIB -DNDEBUG -@BUILD_CLIENT_TRUE@@BUILD_WIN32_FALSE@am__append_5 = crx +@BUILD_WIN32_FALSE@bin_PROGRAMS = alienarena-ded$(EXEEXT) \ +@BUILD_WIN32_FALSE@ $(am__EXEEXT_1) +@BUILD_WIN32_TRUE@bin_PROGRAMS = alienarena$(EXEEXT) $(am__EXEEXT_1) +@BUILD_WIN32_TRUE@am__append_2 = $(WIN32_LIBS) +@BUILD_WIN32_TRUE@am__append_3 = -DCURL_STATICLIB -DNDEBUG +@BUILD_CLIENT_TRUE@@BUILD_WIN32_FALSE@am__append_4 = alienarena # Unix Client sources -@BUILD_UNIX_TRUE@am__append_6 = \ +@BUILD_UNIX_TRUE@am__append_5 = \ @BUILD_UNIX_TRUE@ unix/gl_glx.c \ @BUILD_UNIX_TRUE@ unix/glw_unix.h \ @BUILD_UNIX_TRUE@ unix/net_udp.c \ @BUILD_UNIX_TRUE@ unix/qal_unix.c \ -@BUILD_UNIX_TRUE@ unix/qasm.h \ @BUILD_UNIX_TRUE@ unix/qgl_unix.c \ @BUILD_UNIX_TRUE@ unix/q_shunix.c \ @BUILD_UNIX_TRUE@ unix/rw_unix.c \ @@ -81,7 +124,7 @@ # Win32 MinGW Client sources -@BUILD_WIN32_TRUE@am__append_7 = \ +@BUILD_WIN32_TRUE@am__append_6 = \ @BUILD_WIN32_TRUE@ win32/conproc.c \ @BUILD_WIN32_TRUE@ win32/conproc.h \ @BUILD_WIN32_TRUE@ win32/glw_imp.c \ @@ -97,9 +140,11 @@ @BUILD_WIN32_TRUE@ win32/resource.h subdir = source -DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in +DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \ + $(top_srcdir)/config/depcomp ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 am__aclocal_m4_deps = $(top_srcdir)/m4/ax_append_flag.m4 \ + $(top_srcdir)/m4/ax_expand_prefix.m4 \ $(top_srcdir)/m4/ax_pthread.m4 $(top_srcdir)/m4/pkg.m4 \ $(top_srcdir)/configure.ac am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ @@ -111,12 +156,10 @@ LIBRARIES = $(noinst_LIBRARIES) AR = ar ARFLAGS = cru -AM_V_AR = $(am__v_AR_$(V)) -am__v_AR_ = $(am__v_AR_$(AM_DEFAULT_VERBOSITY)) -am__v_AR_0 = @echo " AR " $@; -AM_V_at = $(am__v_at_$(V)) -am__v_at_ = $(am__v_at_$(AM_DEFAULT_VERBOSITY)) -am__v_at_0 = @ +AM_V_AR = $(am__v_AR_@AM_V@) +am__v_AR_ = $(am__v_AR_@AM_DEFAULT_V@) +am__v_AR_0 = @echo " AR " $@; +am__v_AR_1 = libgame_a_AR = $(AR) $(ARFLAGS) libgame_a_LIBADD = am__dirstamp = $(am__leading_dot)dirstamp @@ -137,10 +180,11 @@ game/g_svcmds.$(OBJEXT) game/g_target.$(OBJEXT) \ game/g_trigger.$(OBJEXT) game/g_unlagged.$(OBJEXT) \ game/g_utils.$(OBJEXT) game/g_vehicles.$(OBJEXT) \ - game/g_weapon.$(OBJEXT) game/m_move.$(OBJEXT) \ - game/p_client.$(OBJEXT) game/p_hud.$(OBJEXT) \ - game/p_trail.$(OBJEXT) game/p_view.$(OBJEXT) \ - game/p_weapon.$(OBJEXT) game/q_shared.$(OBJEXT) + game/g_spider.$(OBJEXT) game/g_weapon.$(OBJEXT) \ + game/m_move.$(OBJEXT) game/p_client.$(OBJEXT) \ + game/p_hud.$(OBJEXT) game/p_trail.$(OBJEXT) \ + game/p_view.$(OBJEXT) game/p_weapon.$(OBJEXT) \ + game/q_shared.$(OBJEXT) libgame_a_OBJECTS = $(am_libgame_a_OBJECTS) libode_a_AR = $(AR) $(ARFLAGS) libode_a_LIBADD = @@ -246,113 +290,145 @@ unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.$(OBJEXT) \ unix/odesrc/OPCODE/Ice/libode_a-IceUtils.$(OBJEXT) libode_a_OBJECTS = $(am_libode_a_OBJECTS) -@BUILD_CLIENT_TRUE@@BUILD_WIN32_FALSE@am__EXEEXT_1 = crx$(EXEEXT) +@BUILD_CLIENT_TRUE@@BUILD_WIN32_FALSE@am__EXEEXT_1 = \ +@BUILD_CLIENT_TRUE@@BUILD_WIN32_FALSE@ alienarena$(EXEEXT) am__installdirs = "$(DESTDIR)$(bindir)" PROGRAMS = $(bin_PROGRAMS) -am__crx_SOURCES_DIST = client/anorms.h client/cl_ents.c client/cl_fx.c \ - client/cl_http.c client/client.h client/cl_input.c \ - client/cl_inv.c client/cl_irc.c client/cl_main.c \ - client/cl_parse.c client/cl_pred.c client/cl_scrn.c \ - client/cl_stats.c client/cl_updates.c client/cl_tent.c \ - client/cl_view.c client/console.c client/console.h \ - client/input.h client/keys.c client/keys.h client/menu.c \ - client/qal.c client/qal.h client/qmenu.c client/qmenu.h \ - client/ref.h client/screen.h client/snd_file.c \ - client/snd_openal.c client/sound.h client/vid.h \ - client/vid_menu.c game/game.h game/q_shared.c game/q_shared.h \ - qcommon/cmd.c qcommon/cmodel.c qcommon/common.c qcommon/crc.c \ - qcommon/crc.h qcommon/cvar.c qcommon/files.c qcommon/htable.c \ - qcommon/htable.h qcommon/md5.c qcommon/md5.h qcommon/mdfour.c \ +am__alienarena_SOURCES_DIST = client/anorms.h client/cl_ents.c \ + client/cl_fx.c client/cl_http.c client/client.h \ + client/cl_input.c client/cl_inv.c client/cl_irc.c \ + client/cl_main.c client/cl_parse.c client/cl_pred.c \ + client/cl_scrn.c client/cl_stats.c client/cl_updates.c \ + client/cl_tent.c client/cl_view.c client/console.c \ + client/console.h client/input.h client/keys.c client/keys.h \ + client/menu.c client/qal.c client/qal.h client/qmenu.c \ + client/qmenu.h client/ref.h client/screen.h client/snd_file.c \ + client/snd_openal.c client/sound.h client/vid.h game/game.h \ + game/q_shared.c game/q_shared.h qcommon/cmd.c qcommon/cmodel.c \ + qcommon/common.c qcommon/crc.c qcommon/crc.h qcommon/cvar.c \ + qcommon/files.c qcommon/htable.c qcommon/htable.h \ + qcommon/md5.c qcommon/md5.h qcommon/mdfour.c \ qcommon/net_chan.c qcommon/pmove.c qcommon/qcommon.h \ qcommon/qfiles.h ref_gl/anorms.h ref_gl/anormtab.h \ - ref_gl/glext.h ref_gl/qgl.h ref_gl/r_bloom.c ref_gl/r_bmfont.c \ - ref_gl/r_bmfont.h ref_gl/r_draw.c ref_gl/r_image.c \ - ref_gl/r_image.h ref_gl/r_iqm.h ref_gl/r_iqm.c \ - ref_gl/r_light.c ref_gl/r_local.h ref_gl/r_main.c \ - ref_gl/r_math.c ref_gl/r_math.h ref_gl/r_mesh.c \ - ref_gl/r_misc.c ref_gl/r_model.c ref_gl/r_model.h \ - ref_gl/r_particle.c ref_gl/r_postprocess.c ref_gl/r_program.c \ - ref_gl/r_ragdoll.c ref_gl/r_ragdoll.h ref_gl/r_script.c \ - ref_gl/r_script.h ref_gl/r_shadowmaps.c ref_gl/r_shadows.c \ - ref_gl/r_surf.c ref_gl/r_text.c ref_gl/r_text.h ref_gl/r_ttf.c \ - ref_gl/r_ttf.h ref_gl/r_varray.c ref_gl/r_vbo.c \ - ref_gl/r_vlights.c ref_gl/r_warp.c ref_gl/warpsin.h \ - server/server.h server/sv_ccmds.c server/sv_ents.c \ - server/sv_game.c server/sv_init.c server/sv_main.c \ - server/sv_send.c server/sv_user.c server/sv_world.c \ - unix/glob.c unix/glob.h unix/gl_glx.c unix/glw_unix.h \ - unix/net_udp.c unix/qal_unix.c unix/qasm.h unix/qgl_unix.c \ - unix/q_shunix.c unix/rw_unix.c unix/rw_unix.h unix/sys_unix.c \ - unix/vid_so.c win32/conproc.c win32/conproc.h win32/glw_imp.c \ - win32/glw_win.h win32/in_win.c win32/net_wins.c \ - win32/qal_win.c win32/qgl_win.c win32/q_shwin.c \ - win32/sys_win.c win32/vid_dll.c win32/winquake.h \ - win32/resource.h -@BUILD_UNIX_TRUE@am__objects_1 = unix/crx-gl_glx.$(OBJEXT) \ -@BUILD_UNIX_TRUE@ unix/crx-net_udp.$(OBJEXT) \ -@BUILD_UNIX_TRUE@ unix/crx-qal_unix.$(OBJEXT) \ -@BUILD_UNIX_TRUE@ unix/crx-qgl_unix.$(OBJEXT) \ -@BUILD_UNIX_TRUE@ unix/crx-q_shunix.$(OBJEXT) \ -@BUILD_UNIX_TRUE@ unix/crx-rw_unix.$(OBJEXT) \ -@BUILD_UNIX_TRUE@ unix/crx-sys_unix.$(OBJEXT) \ -@BUILD_UNIX_TRUE@ unix/crx-vid_so.$(OBJEXT) -@BUILD_WIN32_TRUE@am__objects_2 = win32/crx-conproc.$(OBJEXT) \ -@BUILD_WIN32_TRUE@ win32/crx-glw_imp.$(OBJEXT) \ -@BUILD_WIN32_TRUE@ win32/crx-in_win.$(OBJEXT) \ -@BUILD_WIN32_TRUE@ win32/crx-net_wins.$(OBJEXT) \ -@BUILD_WIN32_TRUE@ win32/crx-qal_win.$(OBJEXT) \ -@BUILD_WIN32_TRUE@ win32/crx-qgl_win.$(OBJEXT) \ -@BUILD_WIN32_TRUE@ win32/crx-q_shwin.$(OBJEXT) \ -@BUILD_WIN32_TRUE@ win32/crx-sys_win.$(OBJEXT) \ -@BUILD_WIN32_TRUE@ win32/crx-vid_dll.$(OBJEXT) -am_crx_OBJECTS = client/crx-cl_ents.$(OBJEXT) \ - client/crx-cl_fx.$(OBJEXT) client/crx-cl_http.$(OBJEXT) \ - client/crx-cl_input.$(OBJEXT) client/crx-cl_inv.$(OBJEXT) \ - client/crx-cl_irc.$(OBJEXT) client/crx-cl_main.$(OBJEXT) \ - client/crx-cl_parse.$(OBJEXT) client/crx-cl_pred.$(OBJEXT) \ - client/crx-cl_scrn.$(OBJEXT) client/crx-cl_stats.$(OBJEXT) \ - client/crx-cl_updates.$(OBJEXT) client/crx-cl_tent.$(OBJEXT) \ - client/crx-cl_view.$(OBJEXT) client/crx-console.$(OBJEXT) \ - client/crx-keys.$(OBJEXT) client/crx-menu.$(OBJEXT) \ - client/crx-qal.$(OBJEXT) client/crx-qmenu.$(OBJEXT) \ - client/crx-snd_file.$(OBJEXT) client/crx-snd_openal.$(OBJEXT) \ - client/crx-vid_menu.$(OBJEXT) game/crx-q_shared.$(OBJEXT) \ - qcommon/crx-cmd.$(OBJEXT) qcommon/crx-cmodel.$(OBJEXT) \ - qcommon/crx-common.$(OBJEXT) qcommon/crx-crc.$(OBJEXT) \ - qcommon/crx-cvar.$(OBJEXT) qcommon/crx-files.$(OBJEXT) \ - qcommon/crx-htable.$(OBJEXT) qcommon/crx-md5.$(OBJEXT) \ - qcommon/crx-mdfour.$(OBJEXT) qcommon/crx-net_chan.$(OBJEXT) \ - qcommon/crx-pmove.$(OBJEXT) ref_gl/crx-r_bloom.$(OBJEXT) \ - ref_gl/crx-r_bmfont.$(OBJEXT) ref_gl/crx-r_draw.$(OBJEXT) \ - ref_gl/crx-r_image.$(OBJEXT) ref_gl/crx-r_iqm.$(OBJEXT) \ - ref_gl/crx-r_light.$(OBJEXT) ref_gl/crx-r_main.$(OBJEXT) \ - ref_gl/crx-r_math.$(OBJEXT) ref_gl/crx-r_mesh.$(OBJEXT) \ - ref_gl/crx-r_misc.$(OBJEXT) ref_gl/crx-r_model.$(OBJEXT) \ - ref_gl/crx-r_particle.$(OBJEXT) \ - ref_gl/crx-r_postprocess.$(OBJEXT) \ - ref_gl/crx-r_program.$(OBJEXT) ref_gl/crx-r_ragdoll.$(OBJEXT) \ - ref_gl/crx-r_script.$(OBJEXT) \ - ref_gl/crx-r_shadowmaps.$(OBJEXT) \ - ref_gl/crx-r_shadows.$(OBJEXT) ref_gl/crx-r_surf.$(OBJEXT) \ - ref_gl/crx-r_text.$(OBJEXT) ref_gl/crx-r_ttf.$(OBJEXT) \ - ref_gl/crx-r_varray.$(OBJEXT) ref_gl/crx-r_vbo.$(OBJEXT) \ - ref_gl/crx-r_vlights.$(OBJEXT) ref_gl/crx-r_warp.$(OBJEXT) \ - server/crx-sv_ccmds.$(OBJEXT) server/crx-sv_ents.$(OBJEXT) \ - server/crx-sv_game.$(OBJEXT) server/crx-sv_init.$(OBJEXT) \ - server/crx-sv_main.$(OBJEXT) server/crx-sv_send.$(OBJEXT) \ - server/crx-sv_user.$(OBJEXT) server/crx-sv_world.$(OBJEXT) \ - unix/crx-glob.$(OBJEXT) $(am__objects_1) $(am__objects_2) -crx_OBJECTS = $(am_crx_OBJECTS) + ref_gl/glext.h ref_gl/qgl.h ref_gl/r_bloom.c ref_gl/r_draw.c \ + ref_gl/r_image.c ref_gl/r_image.h ref_gl/r_iqm.h \ + ref_gl/r_iqm.c ref_gl/r_light.c ref_gl/r_local.h \ + ref_gl/r_lodcalc.h ref_gl/r_main.c ref_gl/r_math.c \ + ref_gl/r_math.h ref_gl/r_mesh.c ref_gl/r_misc.c \ + ref_gl/r_model.c ref_gl/r_model.h ref_gl/r_particle.c \ + ref_gl/r_postprocess.c ref_gl/r_program.c ref_gl/r_ragdoll.c \ + ref_gl/r_ragdoll.h ref_gl/r_script.c ref_gl/r_script.h \ + ref_gl/r_shadowmaps.c ref_gl/r_shadows.c ref_gl/r_surf.c \ + ref_gl/r_text.c ref_gl/r_text.h ref_gl/r_ttf.c ref_gl/r_ttf.h \ + ref_gl/r_varray.c ref_gl/r_vbo.c ref_gl/r_vlights.c \ + ref_gl/r_warp.c ref_gl/warpsin.h server/server.h \ + server/sv_ccmds.c server/sv_ents.c server/sv_game.c \ + server/sv_init.c server/sv_main.c server/sv_send.c \ + server/sv_user.c server/sv_world.c unix/glob.c unix/glob.h \ + unix/gl_glx.c unix/glw_unix.h unix/net_udp.c unix/qal_unix.c \ + unix/qgl_unix.c unix/q_shunix.c unix/rw_unix.c unix/rw_unix.h \ + unix/sys_unix.c unix/vid_so.c win32/conproc.c win32/conproc.h \ + win32/glw_imp.c win32/glw_win.h win32/in_win.c \ + win32/net_wins.c win32/qal_win.c win32/qgl_win.c \ + win32/q_shwin.c win32/sys_win.c win32/vid_dll.c \ + win32/winquake.h win32/resource.h +@BUILD_UNIX_TRUE@am__objects_1 = unix/alienarena-gl_glx.$(OBJEXT) \ +@BUILD_UNIX_TRUE@ unix/alienarena-net_udp.$(OBJEXT) \ +@BUILD_UNIX_TRUE@ unix/alienarena-qal_unix.$(OBJEXT) \ +@BUILD_UNIX_TRUE@ unix/alienarena-qgl_unix.$(OBJEXT) \ +@BUILD_UNIX_TRUE@ unix/alienarena-q_shunix.$(OBJEXT) \ +@BUILD_UNIX_TRUE@ unix/alienarena-rw_unix.$(OBJEXT) \ +@BUILD_UNIX_TRUE@ unix/alienarena-sys_unix.$(OBJEXT) \ +@BUILD_UNIX_TRUE@ unix/alienarena-vid_so.$(OBJEXT) +@BUILD_WIN32_TRUE@am__objects_2 = win32/alienarena-conproc.$(OBJEXT) \ +@BUILD_WIN32_TRUE@ win32/alienarena-glw_imp.$(OBJEXT) \ +@BUILD_WIN32_TRUE@ win32/alienarena-in_win.$(OBJEXT) \ +@BUILD_WIN32_TRUE@ win32/alienarena-net_wins.$(OBJEXT) \ +@BUILD_WIN32_TRUE@ win32/alienarena-qal_win.$(OBJEXT) \ +@BUILD_WIN32_TRUE@ win32/alienarena-qgl_win.$(OBJEXT) \ +@BUILD_WIN32_TRUE@ win32/alienarena-q_shwin.$(OBJEXT) \ +@BUILD_WIN32_TRUE@ win32/alienarena-sys_win.$(OBJEXT) \ +@BUILD_WIN32_TRUE@ win32/alienarena-vid_dll.$(OBJEXT) +am_alienarena_OBJECTS = client/alienarena-cl_ents.$(OBJEXT) \ + client/alienarena-cl_fx.$(OBJEXT) \ + client/alienarena-cl_http.$(OBJEXT) \ + client/alienarena-cl_input.$(OBJEXT) \ + client/alienarena-cl_inv.$(OBJEXT) \ + client/alienarena-cl_irc.$(OBJEXT) \ + client/alienarena-cl_main.$(OBJEXT) \ + client/alienarena-cl_parse.$(OBJEXT) \ + client/alienarena-cl_pred.$(OBJEXT) \ + client/alienarena-cl_scrn.$(OBJEXT) \ + client/alienarena-cl_stats.$(OBJEXT) \ + client/alienarena-cl_updates.$(OBJEXT) \ + client/alienarena-cl_tent.$(OBJEXT) \ + client/alienarena-cl_view.$(OBJEXT) \ + client/alienarena-console.$(OBJEXT) \ + client/alienarena-keys.$(OBJEXT) \ + client/alienarena-menu.$(OBJEXT) \ + client/alienarena-qal.$(OBJEXT) \ + client/alienarena-qmenu.$(OBJEXT) \ + client/alienarena-snd_file.$(OBJEXT) \ + client/alienarena-snd_openal.$(OBJEXT) \ + game/alienarena-q_shared.$(OBJEXT) \ + qcommon/alienarena-cmd.$(OBJEXT) \ + qcommon/alienarena-cmodel.$(OBJEXT) \ + qcommon/alienarena-common.$(OBJEXT) \ + qcommon/alienarena-crc.$(OBJEXT) \ + qcommon/alienarena-cvar.$(OBJEXT) \ + qcommon/alienarena-files.$(OBJEXT) \ + qcommon/alienarena-htable.$(OBJEXT) \ + qcommon/alienarena-md5.$(OBJEXT) \ + qcommon/alienarena-mdfour.$(OBJEXT) \ + qcommon/alienarena-net_chan.$(OBJEXT) \ + qcommon/alienarena-pmove.$(OBJEXT) \ + ref_gl/alienarena-r_bloom.$(OBJEXT) \ + ref_gl/alienarena-r_draw.$(OBJEXT) \ + ref_gl/alienarena-r_image.$(OBJEXT) \ + ref_gl/alienarena-r_iqm.$(OBJEXT) \ + ref_gl/alienarena-r_light.$(OBJEXT) \ + ref_gl/alienarena-r_main.$(OBJEXT) \ + ref_gl/alienarena-r_math.$(OBJEXT) \ + ref_gl/alienarena-r_mesh.$(OBJEXT) \ + ref_gl/alienarena-r_misc.$(OBJEXT) \ + ref_gl/alienarena-r_model.$(OBJEXT) \ + ref_gl/alienarena-r_particle.$(OBJEXT) \ + ref_gl/alienarena-r_postprocess.$(OBJEXT) \ + ref_gl/alienarena-r_program.$(OBJEXT) \ + ref_gl/alienarena-r_ragdoll.$(OBJEXT) \ + ref_gl/alienarena-r_script.$(OBJEXT) \ + ref_gl/alienarena-r_shadowmaps.$(OBJEXT) \ + ref_gl/alienarena-r_shadows.$(OBJEXT) \ + ref_gl/alienarena-r_surf.$(OBJEXT) \ + ref_gl/alienarena-r_text.$(OBJEXT) \ + ref_gl/alienarena-r_ttf.$(OBJEXT) \ + ref_gl/alienarena-r_varray.$(OBJEXT) \ + ref_gl/alienarena-r_vbo.$(OBJEXT) \ + ref_gl/alienarena-r_vlights.$(OBJEXT) \ + ref_gl/alienarena-r_warp.$(OBJEXT) \ + server/alienarena-sv_ccmds.$(OBJEXT) \ + server/alienarena-sv_ents.$(OBJEXT) \ + server/alienarena-sv_game.$(OBJEXT) \ + server/alienarena-sv_init.$(OBJEXT) \ + server/alienarena-sv_main.$(OBJEXT) \ + server/alienarena-sv_send.$(OBJEXT) \ + server/alienarena-sv_user.$(OBJEXT) \ + server/alienarena-sv_world.$(OBJEXT) \ + unix/alienarena-glob.$(OBJEXT) $(am__objects_1) \ + $(am__objects_2) +alienarena_OBJECTS = $(am_alienarena_OBJECTS) am__DEPENDENCIES_1 = @BUILD_WIN32_TRUE@am__DEPENDENCIES_2 = $(am__DEPENDENCIES_1) -@USE_SYSTEM_LIBODE_FALSE@crx_DEPENDENCIES = libgame.a libode.a \ +@USE_SYSTEM_LIBODE_FALSE@alienarena_DEPENDENCIES = libgame.a libode.a \ +@USE_SYSTEM_LIBODE_FALSE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_FALSE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_FALSE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_FALSE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_FALSE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_FALSE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_FALSE@ $(am__DEPENDENCIES_2) -@USE_SYSTEM_LIBODE_TRUE@crx_DEPENDENCIES = libgame.a \ +@USE_SYSTEM_LIBODE_TRUE@alienarena_DEPENDENCIES = libgame.a \ +@USE_SYSTEM_LIBODE_TRUE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_TRUE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_TRUE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_TRUE@ $(am__DEPENDENCIES_1) \ @@ -360,66 +436,108 @@ @USE_SYSTEM_LIBODE_TRUE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_TRUE@ $(am__DEPENDENCIES_1) \ @USE_SYSTEM_LIBODE_TRUE@ $(am__DEPENDENCIES_2) -am_crx_ded_OBJECTS = game/crx_ded-q_shared.$(OBJEXT) \ - null/crx_ded-cl_null.$(OBJEXT) qcommon/crx_ded-cmd.$(OBJEXT) \ - qcommon/crx_ded-cmodel.$(OBJEXT) \ - qcommon/crx_ded-common.$(OBJEXT) qcommon/crx_ded-crc.$(OBJEXT) \ - qcommon/crx_ded-cvar.$(OBJEXT) qcommon/crx_ded-files.$(OBJEXT) \ - qcommon/crx_ded-htable.$(OBJEXT) \ - qcommon/crx_ded-mdfour.$(OBJEXT) \ - qcommon/crx_ded-net_chan.$(OBJEXT) \ - qcommon/crx_ded-pmove.$(OBJEXT) \ - server/crx_ded-sv_ccmds.$(OBJEXT) \ - server/crx_ded-sv_ents.$(OBJEXT) \ - server/crx_ded-sv_game.$(OBJEXT) \ - server/crx_ded-sv_init.$(OBJEXT) \ - server/crx_ded-sv_main.$(OBJEXT) \ - server/crx_ded-sv_send.$(OBJEXT) \ - server/crx_ded-sv_user.$(OBJEXT) \ - server/crx_ded-sv_world.$(OBJEXT) unix/crx_ded-glob.$(OBJEXT) \ - unix/crx_ded-net_udp.$(OBJEXT) unix/crx_ded-q_shunix.$(OBJEXT) \ - unix/crx_ded-sys_unix.$(OBJEXT) -crx_ded_OBJECTS = $(am_crx_ded_OBJECTS) -crx_ded_DEPENDENCIES = libgame.a +am_alienarena_ded_OBJECTS = game/alienarena_ded-q_shared.$(OBJEXT) \ + null/alienarena_ded-cl_null.$(OBJEXT) \ + qcommon/alienarena_ded-cmd.$(OBJEXT) \ + qcommon/alienarena_ded-cmodel.$(OBJEXT) \ + qcommon/alienarena_ded-common.$(OBJEXT) \ + qcommon/alienarena_ded-crc.$(OBJEXT) \ + qcommon/alienarena_ded-cvar.$(OBJEXT) \ + qcommon/alienarena_ded-files.$(OBJEXT) \ + qcommon/alienarena_ded-htable.$(OBJEXT) \ + qcommon/alienarena_ded-mdfour.$(OBJEXT) \ + qcommon/alienarena_ded-net_chan.$(OBJEXT) \ + qcommon/alienarena_ded-pmove.$(OBJEXT) \ + server/alienarena_ded-sv_ccmds.$(OBJEXT) \ + server/alienarena_ded-sv_ents.$(OBJEXT) \ + server/alienarena_ded-sv_game.$(OBJEXT) \ + server/alienarena_ded-sv_init.$(OBJEXT) \ + server/alienarena_ded-sv_main.$(OBJEXT) \ + server/alienarena_ded-sv_send.$(OBJEXT) \ + server/alienarena_ded-sv_user.$(OBJEXT) \ + server/alienarena_ded-sv_world.$(OBJEXT) \ + unix/alienarena_ded-glob.$(OBJEXT) \ + unix/alienarena_ded-net_udp.$(OBJEXT) \ + unix/alienarena_ded-q_shunix.$(OBJEXT) \ + unix/alienarena_ded-sys_unix.$(OBJEXT) +alienarena_ded_OBJECTS = $(am_alienarena_ded_OBJECTS) +alienarena_ded_DEPENDENCIES = libgame.a +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/config depcomp = $(SHELL) $(top_srcdir)/config/depcomp am__depfiles_maybe = depfiles am__mv = mv -f -AM_V_lt = $(am__v_lt_$(V)) -am__v_lt_ = $(am__v_lt_$(AM_DEFAULT_VERBOSITY)) +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) am__v_lt_0 = --silent +am__v_lt_1 = COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -AM_V_CC = $(am__v_CC_$(V)) -am__v_CC_ = $(am__v_CC_$(AM_DEFAULT_VERBOSITY)) -am__v_CC_0 = @echo " CC " $@; +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = CCLD = $(CC) LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ -AM_V_CCLD = $(am__v_CCLD_$(V)) -am__v_CCLD_ = $(am__v_CCLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CCLD_0 = @echo " CCLD " $@; +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = CXXCOMPILE = $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -AM_V_CXX = $(am__v_CXX_$(V)) -am__v_CXX_ = $(am__v_CXX_$(AM_DEFAULT_VERBOSITY)) -am__v_CXX_0 = @echo " CXX " $@; +AM_V_CXX = $(am__v_CXX_@AM_V@) +am__v_CXX_ = $(am__v_CXX_@AM_DEFAULT_V@) +am__v_CXX_0 = @echo " CXX " $@; +am__v_CXX_1 = CXXLD = $(CXX) CXXLINK = $(CXXLD) $(AM_CXXFLAGS) $(CXXFLAGS) $(AM_LDFLAGS) $(LDFLAGS) \ -o $@ -AM_V_CXXLD = $(am__v_CXXLD_$(V)) -am__v_CXXLD_ = $(am__v_CXXLD_$(AM_DEFAULT_VERBOSITY)) -am__v_CXXLD_0 = @echo " CXXLD " $@; -AM_V_GEN = $(am__v_GEN_$(V)) -am__v_GEN_ = $(am__v_GEN_$(AM_DEFAULT_VERBOSITY)) -am__v_GEN_0 = @echo " GEN " $@; -SOURCES = $(libgame_a_SOURCES) $(libode_a_SOURCES) $(crx_SOURCES) \ - $(crx_ded_SOURCES) +AM_V_CXXLD = $(am__v_CXXLD_@AM_V@) +am__v_CXXLD_ = $(am__v_CXXLD_@AM_DEFAULT_V@) +am__v_CXXLD_0 = @echo " CXXLD " $@; +am__v_CXXLD_1 = +SOURCES = $(libgame_a_SOURCES) $(libode_a_SOURCES) \ + $(alienarena_SOURCES) $(alienarena_ded_SOURCES) DIST_SOURCES = $(libgame_a_SOURCES) $(libode_a_SOURCES) \ - $(am__crx_SOURCES_DIST) $(crx_ded_SOURCES) + $(am__alienarena_SOURCES_DIST) $(alienarena_ded_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` ETAGS = etags CTAGS = ctags DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) ACLOCAL = @ACLOCAL@ +ALIENARENA_HOMEDIR = @ALIENARENA_HOMEDIR@ ALLOCA = @ALLOCA@ AMTAR = @AMTAR@ AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ @@ -490,6 +608,8 @@ XXF86DGA_LIBS = @XXF86DGA_LIBS@ XXF86VM_CFLAGS = @XXF86VM_CFLAGS@ XXF86VM_LIBS = @XXF86VM_LIBS@ +ZLIB_CFLAGS = @ZLIB_CFLAGS@ +ZLIB_LIBS = @ZLIB_LIBS@ abs_builddir = @abs_builddir@ abs_srcdir = @abs_srcdir@ abs_top_builddir = @abs_top_builddir@ @@ -559,37 +679,39 @@ @USE_SYSTEM_LIBODE_TRUE@ $(am__append_1) # Dedicated Server libraries and flags -crx_ded_LDADD = libgame.a -crx_ded_CPPFLAGS = $(AM_CPPFLAGS) -DDEDICATED_ONLY +alienarena_ded_LDADD = libgame.a +alienarena_ded_CPPFLAGS = $(AM_CPPFLAGS) -DDEDICATED_ONLY # Client libraries and flags -crx_CPPFLAGS = $(AM_CPPFLAGS) $(PTHREAD_CFLAGS) $(X11_CLAGS) \ +alienarena_CPPFLAGS = $(AM_CPPFLAGS) $(PTHREAD_CFLAGS) $(X11_CLAGS) \ $(DEPS_CFLAGS) $(ODE_CFLAGS) $(XXF86VM_CFLAGS) \ - $(XXF86DGA_CFLAGS) $(am__append_4) + $(XXF86DGA_CFLAGS) $(ZLIB_CFLAGS) $(am__append_3) # -# crx with integrated libode +# alienarena with integrated libode # -@USE_SYSTEM_LIBODE_FALSE@crx_LDADD = libgame.a libode.a \ +@USE_SYSTEM_LIBODE_FALSE@alienarena_LDADD = libgame.a libode.a \ @USE_SYSTEM_LIBODE_FALSE@ $(PTHREAD_LIBS) $(X11_LIBS) \ @USE_SYSTEM_LIBODE_FALSE@ $(DEPS_LIBS) $(XXF86VM_LIBS) \ -@USE_SYSTEM_LIBODE_FALSE@ $(XXF86DGA_LIBS) -lstdc++ \ -@USE_SYSTEM_LIBODE_FALSE@ $(am__append_3) +@USE_SYSTEM_LIBODE_FALSE@ $(XXF86DGA_LIBS) $(ZLIB_LIBS) \ +@USE_SYSTEM_LIBODE_FALSE@ -lstdc++ $(am__append_2) # -# crx with system libode +# alienarena with system libode # -@USE_SYSTEM_LIBODE_TRUE@crx_LDADD = libgame.a $(PTHREAD_LIBS) \ +@USE_SYSTEM_LIBODE_TRUE@alienarena_LDADD = libgame.a $(PTHREAD_LIBS) \ @USE_SYSTEM_LIBODE_TRUE@ $(X11_LIBS) $(DEPS_LIBS) $(ODE_LIBS) \ @USE_SYSTEM_LIBODE_TRUE@ $(XXF86VM_LIBS) $(XXF86DGA_LIBS) \ -@USE_SYSTEM_LIBODE_TRUE@ $(am__append_3) +@USE_SYSTEM_LIBODE_TRUE@ $(ZLIB_LIBS) $(am__append_2) + +# ODE has an additional custom "no debug" variable @USE_SYSTEM_LIBODE_FALSE@libode_a_CPPFLAGS = -I$(top_srcdir)/source/unix/odesrc/OPCODE \ @USE_SYSTEM_LIBODE_FALSE@ -isystem $(top_srcdir)/source/unix \ @USE_SYSTEM_LIBODE_FALSE@ -DdDOUBLE -DdTRIMESH_ENABLED \ -@USE_SYSTEM_LIBODE_FALSE@ -DdTRIMESH_OPCODE $(am__append_2) +@USE_SYSTEM_LIBODE_FALSE@ -DdTRIMESH_OPCODE -DNDEBUG -DdNODEBUG # common client sources -crx_SOURCES = client/anorms.h client/cl_ents.c client/cl_fx.c \ +alienarena_SOURCES = client/anorms.h client/cl_ents.c client/cl_fx.c \ client/cl_http.c client/client.h client/cl_input.c \ client/cl_inv.c client/cl_irc.c client/cl_main.c \ client/cl_parse.c client/cl_pred.c client/cl_scrn.c \ @@ -598,32 +720,32 @@ client/input.h client/keys.c client/keys.h client/menu.c \ client/qal.c client/qal.h client/qmenu.c client/qmenu.h \ client/ref.h client/screen.h client/snd_file.c \ - client/snd_openal.c client/sound.h client/vid.h \ - client/vid_menu.c game/game.h game/q_shared.c game/q_shared.h \ - qcommon/cmd.c qcommon/cmodel.c qcommon/common.c qcommon/crc.c \ - qcommon/crc.h qcommon/cvar.c qcommon/files.c qcommon/htable.c \ - qcommon/htable.h qcommon/md5.c qcommon/md5.h qcommon/mdfour.c \ + client/snd_openal.c client/sound.h client/vid.h game/game.h \ + game/q_shared.c game/q_shared.h qcommon/cmd.c qcommon/cmodel.c \ + qcommon/common.c qcommon/crc.c qcommon/crc.h qcommon/cvar.c \ + qcommon/files.c qcommon/htable.c qcommon/htable.h \ + qcommon/md5.c qcommon/md5.h qcommon/mdfour.c \ qcommon/net_chan.c qcommon/pmove.c qcommon/qcommon.h \ qcommon/qfiles.h ref_gl/anorms.h ref_gl/anormtab.h \ - ref_gl/glext.h ref_gl/qgl.h ref_gl/r_bloom.c ref_gl/r_bmfont.c \ - ref_gl/r_bmfont.h ref_gl/r_draw.c ref_gl/r_image.c \ - ref_gl/r_image.h ref_gl/r_iqm.h ref_gl/r_iqm.c \ - ref_gl/r_light.c ref_gl/r_local.h ref_gl/r_main.c \ - ref_gl/r_math.c ref_gl/r_math.h ref_gl/r_mesh.c \ - ref_gl/r_misc.c ref_gl/r_model.c ref_gl/r_model.h \ - ref_gl/r_particle.c ref_gl/r_postprocess.c ref_gl/r_program.c \ - ref_gl/r_ragdoll.c ref_gl/r_ragdoll.h ref_gl/r_script.c \ - ref_gl/r_script.h ref_gl/r_shadowmaps.c ref_gl/r_shadows.c \ - ref_gl/r_surf.c ref_gl/r_text.c ref_gl/r_text.h ref_gl/r_ttf.c \ - ref_gl/r_ttf.h ref_gl/r_varray.c ref_gl/r_vbo.c \ - ref_gl/r_vlights.c ref_gl/r_warp.c ref_gl/warpsin.h \ - server/server.h server/sv_ccmds.c server/sv_ents.c \ - server/sv_game.c server/sv_init.c server/sv_main.c \ - server/sv_send.c server/sv_user.c server/sv_world.c \ - unix/glob.c unix/glob.h $(am__append_6) $(am__append_7) + ref_gl/glext.h ref_gl/qgl.h ref_gl/r_bloom.c ref_gl/r_draw.c \ + ref_gl/r_image.c ref_gl/r_image.h ref_gl/r_iqm.h \ + ref_gl/r_iqm.c ref_gl/r_light.c ref_gl/r_local.h \ + ref_gl/r_lodcalc.h ref_gl/r_main.c ref_gl/r_math.c \ + ref_gl/r_math.h ref_gl/r_mesh.c ref_gl/r_misc.c \ + ref_gl/r_model.c ref_gl/r_model.h ref_gl/r_particle.c \ + ref_gl/r_postprocess.c ref_gl/r_program.c ref_gl/r_ragdoll.c \ + ref_gl/r_ragdoll.h ref_gl/r_script.c ref_gl/r_script.h \ + ref_gl/r_shadowmaps.c ref_gl/r_shadows.c ref_gl/r_surf.c \ + ref_gl/r_text.c ref_gl/r_text.h ref_gl/r_ttf.c ref_gl/r_ttf.h \ + ref_gl/r_varray.c ref_gl/r_vbo.c ref_gl/r_vlights.c \ + ref_gl/r_warp.c ref_gl/warpsin.h server/server.h \ + server/sv_ccmds.c server/sv_ents.c server/sv_game.c \ + server/sv_init.c server/sv_main.c server/sv_send.c \ + server/sv_user.c server/sv_world.c unix/glob.c unix/glob.h \ + $(am__append_5) $(am__append_6) # Dedicated Server sources (Unix only) -crx_ded_SOURCES = \ +alienarena_ded_SOURCES = \ client/anorms.h \ game/game.h \ game/q_shared.c \ @@ -696,6 +818,8 @@ game/g_unlagged.c \ game/g_utils.c \ game/g_vehicles.c \ + game/g_spider.c \ + game/g_spider.h \ game/g_weapon.c \ game/m_move.c \ game/m_player.h \ @@ -979,6 +1103,8 @@ game/$(DEPDIR)/$(am__dirstamp) game/g_vehicles.$(OBJEXT): game/$(am__dirstamp) \ game/$(DEPDIR)/$(am__dirstamp) +game/g_spider.$(OBJEXT): game/$(am__dirstamp) \ + game/$(DEPDIR)/$(am__dirstamp) game/g_weapon.$(OBJEXT): game/$(am__dirstamp) \ game/$(DEPDIR)/$(am__dirstamp) game/m_move.$(OBJEXT): game/$(am__dirstamp) \ @@ -995,7 +1121,8 @@ game/$(DEPDIR)/$(am__dirstamp) game/q_shared.$(OBJEXT): game/$(am__dirstamp) \ game/$(DEPDIR)/$(am__dirstamp) -libgame.a: $(libgame_a_OBJECTS) $(libgame_a_DEPENDENCIES) + +libgame.a: $(libgame_a_OBJECTS) $(libgame_a_DEPENDENCIES) $(EXTRA_libgame_a_DEPENDENCIES) $(AM_V_at)-rm -f libgame.a $(AM_V_AR)$(libgame_a_AR) libgame.a $(libgame_a_OBJECTS) $(libgame_a_LIBADD) $(AM_V_at)$(RANLIB) libgame.a @@ -1298,20 +1425,25 @@ unix/odesrc/OPCODE/Ice/libode_a-IceUtils.$(OBJEXT): \ unix/odesrc/OPCODE/Ice/$(am__dirstamp) \ unix/odesrc/OPCODE/Ice/$(DEPDIR)/$(am__dirstamp) -libode.a: $(libode_a_OBJECTS) $(libode_a_DEPENDENCIES) + +libode.a: $(libode_a_OBJECTS) $(libode_a_DEPENDENCIES) $(EXTRA_libode_a_DEPENDENCIES) $(AM_V_at)-rm -f libode.a $(AM_V_AR)$(libode_a_AR) libode.a $(libode_a_OBJECTS) $(libode_a_LIBADD) $(AM_V_at)$(RANLIB) libode.a install-binPROGRAMS: $(bin_PROGRAMS) @$(NORMAL_INSTALL) - test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)" @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ for p in $$list; do echo "$$p $$p"; done | \ sed 's/$(EXEEXT)$$//' | \ - while read p p1; do if test -f $$p; \ - then echo "$$p"; echo "$$p"; else :; fi; \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ done | \ - sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ sed 'N;N;N;s,\n, ,g' | \ $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ @@ -1332,7 +1464,8 @@ @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ files=`for p in $$list; do echo "$$p"; done | \ sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ - -e 's/$$/$(EXEEXT)/' `; \ + -e 's/$$/$(EXEEXT)/' \ + `; \ test -n "$$list" || exit 0; \ echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ cd "$(DESTDIR)$(bindir)" && rm -f $$files @@ -1345,51 +1478,49 @@ client/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) client/$(DEPDIR) @: > client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_ents.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_ents.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_fx.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_fx.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_http.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_http.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_input.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_input.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_inv.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_inv.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_irc.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_irc.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_main.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_main.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_parse.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_parse.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_pred.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_pred.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_scrn.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_scrn.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_stats.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_stats.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_updates.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_updates.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_tent.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_tent.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-cl_view.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-cl_view.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-console.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-console.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-keys.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-keys.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-menu.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-menu.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-qal.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-qal.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-qmenu.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-qmenu.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-snd_file.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-snd_file.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-snd_openal.$(OBJEXT): client/$(am__dirstamp) \ +client/alienarena-snd_openal.$(OBJEXT): client/$(am__dirstamp) \ client/$(DEPDIR)/$(am__dirstamp) -client/crx-vid_menu.$(OBJEXT): client/$(am__dirstamp) \ - client/$(DEPDIR)/$(am__dirstamp) -game/crx-q_shared.$(OBJEXT): game/$(am__dirstamp) \ +game/alienarena-q_shared.$(OBJEXT): game/$(am__dirstamp) \ game/$(DEPDIR)/$(am__dirstamp) qcommon/$(am__dirstamp): @$(MKDIR_P) qcommon @@ -1397,27 +1528,27 @@ qcommon/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) qcommon/$(DEPDIR) @: > qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-cmd.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-cmd.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-cmodel.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-cmodel.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-common.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-common.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-crc.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-crc.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-cvar.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-cvar.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-files.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-files.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-htable.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-htable.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-md5.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-md5.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-mdfour.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-mdfour.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-net_chan.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-net_chan.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx-pmove.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena-pmove.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) ref_gl/$(am__dirstamp): @$(MKDIR_P) ref_gl @@ -1425,55 +1556,53 @@ ref_gl/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) ref_gl/$(DEPDIR) @: > ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_bloom.$(OBJEXT): ref_gl/$(am__dirstamp) \ - ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_bmfont.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_bloom.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_draw.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_draw.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_image.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_image.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_iqm.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_iqm.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_light.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_light.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_main.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_main.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_math.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_math.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_mesh.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_mesh.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_misc.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_misc.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_model.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_model.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_particle.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_particle.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_postprocess.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_postprocess.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_program.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_program.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_ragdoll.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_ragdoll.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_script.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_script.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_shadowmaps.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_shadowmaps.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_shadows.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_shadows.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_surf.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_surf.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_text.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_text.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_ttf.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_ttf.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_varray.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_varray.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_vbo.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_vbo.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_vlights.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_vlights.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) -ref_gl/crx-r_warp.$(OBJEXT): ref_gl/$(am__dirstamp) \ +ref_gl/alienarena-r_warp.$(OBJEXT): ref_gl/$(am__dirstamp) \ ref_gl/$(DEPDIR)/$(am__dirstamp) server/$(am__dirstamp): @$(MKDIR_P) server @@ -1481,21 +1610,21 @@ server/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) server/$(DEPDIR) @: > server/$(DEPDIR)/$(am__dirstamp) -server/crx-sv_ccmds.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena-sv_ccmds.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx-sv_ents.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena-sv_ents.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx-sv_game.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena-sv_game.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx-sv_init.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena-sv_init.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx-sv_main.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena-sv_main.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx-sv_send.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena-sv_send.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx-sv_user.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena-sv_user.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx-sv_world.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena-sv_world.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) unix/$(am__dirstamp): @$(MKDIR_P) unix @@ -1503,23 +1632,23 @@ unix/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) unix/$(DEPDIR) @: > unix/$(DEPDIR)/$(am__dirstamp) -unix/crx-glob.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena-glob.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx-gl_glx.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena-gl_glx.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx-net_udp.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena-net_udp.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx-qal_unix.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena-qal_unix.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx-qgl_unix.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena-qgl_unix.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx-q_shunix.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena-q_shunix.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx-rw_unix.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena-rw_unix.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx-sys_unix.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena-sys_unix.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx-vid_so.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena-vid_so.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) win32/$(am__dirstamp): @$(MKDIR_P) win32 @@ -1527,28 +1656,29 @@ win32/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) win32/$(DEPDIR) @: > win32/$(DEPDIR)/$(am__dirstamp) -win32/crx-conproc.$(OBJEXT): win32/$(am__dirstamp) \ +win32/alienarena-conproc.$(OBJEXT): win32/$(am__dirstamp) \ win32/$(DEPDIR)/$(am__dirstamp) -win32/crx-glw_imp.$(OBJEXT): win32/$(am__dirstamp) \ +win32/alienarena-glw_imp.$(OBJEXT): win32/$(am__dirstamp) \ win32/$(DEPDIR)/$(am__dirstamp) -win32/crx-in_win.$(OBJEXT): win32/$(am__dirstamp) \ +win32/alienarena-in_win.$(OBJEXT): win32/$(am__dirstamp) \ win32/$(DEPDIR)/$(am__dirstamp) -win32/crx-net_wins.$(OBJEXT): win32/$(am__dirstamp) \ +win32/alienarena-net_wins.$(OBJEXT): win32/$(am__dirstamp) \ win32/$(DEPDIR)/$(am__dirstamp) -win32/crx-qal_win.$(OBJEXT): win32/$(am__dirstamp) \ +win32/alienarena-qal_win.$(OBJEXT): win32/$(am__dirstamp) \ win32/$(DEPDIR)/$(am__dirstamp) -win32/crx-qgl_win.$(OBJEXT): win32/$(am__dirstamp) \ +win32/alienarena-qgl_win.$(OBJEXT): win32/$(am__dirstamp) \ win32/$(DEPDIR)/$(am__dirstamp) -win32/crx-q_shwin.$(OBJEXT): win32/$(am__dirstamp) \ +win32/alienarena-q_shwin.$(OBJEXT): win32/$(am__dirstamp) \ win32/$(DEPDIR)/$(am__dirstamp) -win32/crx-sys_win.$(OBJEXT): win32/$(am__dirstamp) \ +win32/alienarena-sys_win.$(OBJEXT): win32/$(am__dirstamp) \ win32/$(DEPDIR)/$(am__dirstamp) -win32/crx-vid_dll.$(OBJEXT): win32/$(am__dirstamp) \ +win32/alienarena-vid_dll.$(OBJEXT): win32/$(am__dirstamp) \ win32/$(DEPDIR)/$(am__dirstamp) -crx$(EXEEXT): $(crx_OBJECTS) $(crx_DEPENDENCIES) - @rm -f crx$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(crx_OBJECTS) $(crx_LDADD) $(LIBS) -game/crx_ded-q_shared.$(OBJEXT): game/$(am__dirstamp) \ + +alienarena$(EXEEXT): $(alienarena_OBJECTS) $(alienarena_DEPENDENCIES) $(EXTRA_alienarena_DEPENDENCIES) + @rm -f alienarena$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(alienarena_OBJECTS) $(alienarena_LDADD) $(LIBS) +game/alienarena_ded-q_shared.$(OBJEXT): game/$(am__dirstamp) \ game/$(DEPDIR)/$(am__dirstamp) null/$(am__dirstamp): @$(MKDIR_P) null @@ -1556,334 +1686,100 @@ null/$(DEPDIR)/$(am__dirstamp): @$(MKDIR_P) null/$(DEPDIR) @: > null/$(DEPDIR)/$(am__dirstamp) -null/crx_ded-cl_null.$(OBJEXT): null/$(am__dirstamp) \ +null/alienarena_ded-cl_null.$(OBJEXT): null/$(am__dirstamp) \ null/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-cmd.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-cmd.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-cmodel.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-cmodel.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-common.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-common.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-crc.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-crc.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-cvar.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-cvar.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-files.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-files.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-htable.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-htable.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-mdfour.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-mdfour.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-net_chan.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-net_chan.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -qcommon/crx_ded-pmove.$(OBJEXT): qcommon/$(am__dirstamp) \ +qcommon/alienarena_ded-pmove.$(OBJEXT): qcommon/$(am__dirstamp) \ qcommon/$(DEPDIR)/$(am__dirstamp) -server/crx_ded-sv_ccmds.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena_ded-sv_ccmds.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx_ded-sv_ents.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena_ded-sv_ents.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx_ded-sv_game.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena_ded-sv_game.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx_ded-sv_init.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena_ded-sv_init.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx_ded-sv_main.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena_ded-sv_main.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx_ded-sv_send.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena_ded-sv_send.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx_ded-sv_user.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena_ded-sv_user.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -server/crx_ded-sv_world.$(OBJEXT): server/$(am__dirstamp) \ +server/alienarena_ded-sv_world.$(OBJEXT): server/$(am__dirstamp) \ server/$(DEPDIR)/$(am__dirstamp) -unix/crx_ded-glob.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena_ded-glob.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx_ded-net_udp.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena_ded-net_udp.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx_ded-q_shunix.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena_ded-q_shunix.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -unix/crx_ded-sys_unix.$(OBJEXT): unix/$(am__dirstamp) \ +unix/alienarena_ded-sys_unix.$(OBJEXT): unix/$(am__dirstamp) \ unix/$(DEPDIR)/$(am__dirstamp) -crx-ded$(EXEEXT): $(crx_ded_OBJECTS) $(crx_ded_DEPENDENCIES) - @rm -f crx-ded$(EXEEXT) - $(AM_V_CCLD)$(LINK) $(crx_ded_OBJECTS) $(crx_ded_LDADD) $(LIBS) + +alienarena-ded$(EXEEXT): $(alienarena_ded_OBJECTS) $(alienarena_ded_DEPENDENCIES) $(EXTRA_alienarena_ded_DEPENDENCIES) + @rm -f alienarena-ded$(EXEEXT) + $(AM_V_CCLD)$(LINK) $(alienarena_ded_OBJECTS) $(alienarena_ded_LDADD) $(LIBS) mostlyclean-compile: -rm -f *.$(OBJEXT) - -rm -f client/crx-cl_ents.$(OBJEXT) - -rm -f client/crx-cl_fx.$(OBJEXT) - -rm -f client/crx-cl_http.$(OBJEXT) - -rm -f client/crx-cl_input.$(OBJEXT) - -rm -f client/crx-cl_inv.$(OBJEXT) - -rm -f client/crx-cl_irc.$(OBJEXT) - -rm -f client/crx-cl_main.$(OBJEXT) - -rm -f client/crx-cl_parse.$(OBJEXT) - -rm -f client/crx-cl_pred.$(OBJEXT) - -rm -f client/crx-cl_scrn.$(OBJEXT) - -rm -f client/crx-cl_stats.$(OBJEXT) - -rm -f client/crx-cl_tent.$(OBJEXT) - -rm -f client/crx-cl_updates.$(OBJEXT) - -rm -f client/crx-cl_view.$(OBJEXT) - -rm -f client/crx-console.$(OBJEXT) - -rm -f client/crx-keys.$(OBJEXT) - -rm -f client/crx-menu.$(OBJEXT) - -rm -f client/crx-qal.$(OBJEXT) - -rm -f client/crx-qmenu.$(OBJEXT) - -rm -f client/crx-snd_file.$(OBJEXT) - -rm -f client/crx-snd_openal.$(OBJEXT) - -rm -f client/crx-vid_menu.$(OBJEXT) - -rm -f game/acesrc/acebot_ai.$(OBJEXT) - -rm -f game/acesrc/acebot_cmds.$(OBJEXT) - -rm -f game/acesrc/acebot_items.$(OBJEXT) - -rm -f game/acesrc/acebot_movement.$(OBJEXT) - -rm -f game/acesrc/acebot_nodes.$(OBJEXT) - -rm -f game/acesrc/acebot_spawn.$(OBJEXT) - -rm -f game/c_cam.$(OBJEXT) - -rm -f game/crx-q_shared.$(OBJEXT) - -rm -f game/crx_ded-q_shared.$(OBJEXT) - -rm -f game/g_ai.$(OBJEXT) - -rm -f game/g_chase.$(OBJEXT) - -rm -f game/g_cmds.$(OBJEXT) - -rm -f game/g_combat.$(OBJEXT) - -rm -f game/g_cow.$(OBJEXT) - -rm -f game/g_ctf.$(OBJEXT) - -rm -f game/g_deathball.$(OBJEXT) - -rm -f game/g_deathray.$(OBJEXT) - -rm -f game/g_func.$(OBJEXT) - -rm -f game/g_items.$(OBJEXT) - -rm -f game/g_main.$(OBJEXT) - -rm -f game/g_misc.$(OBJEXT) - -rm -f game/g_monster.$(OBJEXT) - -rm -f game/g_phys.$(OBJEXT) - -rm -f game/g_save.$(OBJEXT) - -rm -f game/g_spawn.$(OBJEXT) - -rm -f game/g_svcmds.$(OBJEXT) - -rm -f game/g_target.$(OBJEXT) - -rm -f game/g_trigger.$(OBJEXT) - -rm -f game/g_unlagged.$(OBJEXT) - -rm -f game/g_utils.$(OBJEXT) - -rm -f game/g_vehicles.$(OBJEXT) - -rm -f game/g_weapon.$(OBJEXT) - -rm -f game/m_move.$(OBJEXT) - -rm -f game/p_client.$(OBJEXT) - -rm -f game/p_hud.$(OBJEXT) - -rm -f game/p_trail.$(OBJEXT) - -rm -f game/p_view.$(OBJEXT) - -rm -f game/p_weapon.$(OBJEXT) - -rm -f game/q_shared.$(OBJEXT) - -rm -f null/crx_ded-cl_null.$(OBJEXT) - -rm -f qcommon/crx-cmd.$(OBJEXT) - -rm -f qcommon/crx-cmodel.$(OBJEXT) - -rm -f qcommon/crx-common.$(OBJEXT) - -rm -f qcommon/crx-crc.$(OBJEXT) - -rm -f qcommon/crx-cvar.$(OBJEXT) - -rm -f qcommon/crx-files.$(OBJEXT) - -rm -f qcommon/crx-htable.$(OBJEXT) - -rm -f qcommon/crx-md5.$(OBJEXT) - -rm -f qcommon/crx-mdfour.$(OBJEXT) - -rm -f qcommon/crx-net_chan.$(OBJEXT) - -rm -f qcommon/crx-pmove.$(OBJEXT) - -rm -f qcommon/crx_ded-cmd.$(OBJEXT) - -rm -f qcommon/crx_ded-cmodel.$(OBJEXT) - -rm -f qcommon/crx_ded-common.$(OBJEXT) - -rm -f qcommon/crx_ded-crc.$(OBJEXT) - -rm -f qcommon/crx_ded-cvar.$(OBJEXT) - -rm -f qcommon/crx_ded-files.$(OBJEXT) - -rm -f qcommon/crx_ded-htable.$(OBJEXT) - -rm -f qcommon/crx_ded-mdfour.$(OBJEXT) - -rm -f qcommon/crx_ded-net_chan.$(OBJEXT) - -rm -f qcommon/crx_ded-pmove.$(OBJEXT) - -rm -f ref_gl/crx-r_bloom.$(OBJEXT) - -rm -f ref_gl/crx-r_bmfont.$(OBJEXT) - -rm -f ref_gl/crx-r_draw.$(OBJEXT) - -rm -f ref_gl/crx-r_image.$(OBJEXT) - -rm -f ref_gl/crx-r_iqm.$(OBJEXT) - -rm -f ref_gl/crx-r_light.$(OBJEXT) - -rm -f ref_gl/crx-r_main.$(OBJEXT) - -rm -f ref_gl/crx-r_math.$(OBJEXT) - -rm -f ref_gl/crx-r_mesh.$(OBJEXT) - -rm -f ref_gl/crx-r_misc.$(OBJEXT) - -rm -f ref_gl/crx-r_model.$(OBJEXT) - -rm -f ref_gl/crx-r_particle.$(OBJEXT) - -rm -f ref_gl/crx-r_postprocess.$(OBJEXT) - -rm -f ref_gl/crx-r_program.$(OBJEXT) - -rm -f ref_gl/crx-r_ragdoll.$(OBJEXT) - -rm -f ref_gl/crx-r_script.$(OBJEXT) - -rm -f ref_gl/crx-r_shadowmaps.$(OBJEXT) - -rm -f ref_gl/crx-r_shadows.$(OBJEXT) - -rm -f ref_gl/crx-r_surf.$(OBJEXT) - -rm -f ref_gl/crx-r_text.$(OBJEXT) - -rm -f ref_gl/crx-r_ttf.$(OBJEXT) - -rm -f ref_gl/crx-r_varray.$(OBJEXT) - -rm -f ref_gl/crx-r_vbo.$(OBJEXT) - -rm -f ref_gl/crx-r_vlights.$(OBJEXT) - -rm -f ref_gl/crx-r_warp.$(OBJEXT) - -rm -f server/crx-sv_ccmds.$(OBJEXT) - -rm -f server/crx-sv_ents.$(OBJEXT) - -rm -f server/crx-sv_game.$(OBJEXT) - -rm -f server/crx-sv_init.$(OBJEXT) - -rm -f server/crx-sv_main.$(OBJEXT) - -rm -f server/crx-sv_send.$(OBJEXT) - -rm -f server/crx-sv_user.$(OBJEXT) - -rm -f server/crx-sv_world.$(OBJEXT) - -rm -f server/crx_ded-sv_ccmds.$(OBJEXT) - -rm -f server/crx_ded-sv_ents.$(OBJEXT) - -rm -f server/crx_ded-sv_game.$(OBJEXT) - -rm -f server/crx_ded-sv_init.$(OBJEXT) - -rm -f server/crx_ded-sv_main.$(OBJEXT) - -rm -f server/crx_ded-sv_send.$(OBJEXT) - -rm -f server/crx_ded-sv_user.$(OBJEXT) - -rm -f server/crx_ded-sv_world.$(OBJEXT) - -rm -f unix/crx-gl_glx.$(OBJEXT) - -rm -f unix/crx-glob.$(OBJEXT) - -rm -f unix/crx-net_udp.$(OBJEXT) - -rm -f unix/crx-q_shunix.$(OBJEXT) - -rm -f unix/crx-qal_unix.$(OBJEXT) - -rm -f unix/crx-qgl_unix.$(OBJEXT) - -rm -f unix/crx-rw_unix.$(OBJEXT) - -rm -f unix/crx-sys_unix.$(OBJEXT) - -rm -f unix/crx-vid_so.$(OBJEXT) - -rm -f unix/crx_ded-glob.$(OBJEXT) - -rm -f unix/crx_ded-net_udp.$(OBJEXT) - -rm -f unix/crx_ded-q_shunix.$(OBJEXT) - -rm -f unix/crx_ded-sys_unix.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceAABB.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceContainer.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceOBB.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IcePlane.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IcePoint.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceRandom.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceRay.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceSegment.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/Ice/libode_a-IceUtils.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_AABBTree.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_BaseModel.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_Collider.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_Common.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_HybridModel.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_Model.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_Picking.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_RayCollider.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.$(OBJEXT) - -rm -f unix/odesrc/OPCODE/libode_a-Opcode.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-amotor.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-ball.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-contact.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-fixed.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-hinge.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-hinge2.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-joint.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-lmotor.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-null.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-piston.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-plane2d.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-pr.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-pu.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-slider.$(OBJEXT) - -rm -f unix/odesrc/joints/libode_a-universal.$(OBJEXT) - -rm -f unix/odesrc/libode_a-array.$(OBJEXT) - -rm -f unix/odesrc/libode_a-box.$(OBJEXT) - -rm -f unix/odesrc/libode_a-capsule.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_cylinder_box.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_cylinder_plane.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_cylinder_sphere.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_cylinder_trimesh.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_kernel.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_quadtreespace.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_sapspace.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_space.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_transform.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_box.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_ccylinder.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_disabled.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_distance.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_opcode.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_plane.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_ray.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_sphere.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_trimesh.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_trimesh_trimesh_new.$(OBJEXT) - -rm -f unix/odesrc/libode_a-collision_util.$(OBJEXT) - -rm -f unix/odesrc/libode_a-convex.$(OBJEXT) - -rm -f unix/odesrc/libode_a-cylinder.$(OBJEXT) - -rm -f unix/odesrc/libode_a-error.$(OBJEXT) - -rm -f unix/odesrc/libode_a-export-dif.$(OBJEXT) - -rm -f unix/odesrc/libode_a-fastdot.$(OBJEXT) - -rm -f unix/odesrc/libode_a-fastldlt.$(OBJEXT) - -rm -f unix/odesrc/libode_a-fastlsolve.$(OBJEXT) - -rm -f unix/odesrc/libode_a-fastltsolve.$(OBJEXT) - -rm -f unix/odesrc/libode_a-heightfield.$(OBJEXT) - -rm -f unix/odesrc/libode_a-lcp.$(OBJEXT) - -rm -f unix/odesrc/libode_a-mass.$(OBJEXT) - -rm -f unix/odesrc/libode_a-mat.$(OBJEXT) - -rm -f unix/odesrc/libode_a-matrix.$(OBJEXT) - -rm -f unix/odesrc/libode_a-memory.$(OBJEXT) - -rm -f unix/odesrc/libode_a-misc.$(OBJEXT) - -rm -f unix/odesrc/libode_a-obstack.$(OBJEXT) - -rm -f unix/odesrc/libode_a-ode.$(OBJEXT) - -rm -f unix/odesrc/libode_a-odeinit.$(OBJEXT) - -rm -f unix/odesrc/libode_a-odemath.$(OBJEXT) - -rm -f unix/odesrc/libode_a-plane.$(OBJEXT) - -rm -f unix/odesrc/libode_a-quickstep.$(OBJEXT) - -rm -f unix/odesrc/libode_a-ray.$(OBJEXT) - -rm -f unix/odesrc/libode_a-rotation.$(OBJEXT) - -rm -f unix/odesrc/libode_a-sphere.$(OBJEXT) - -rm -f unix/odesrc/libode_a-step.$(OBJEXT) - -rm -f unix/odesrc/libode_a-stepfast.$(OBJEXT) - -rm -f unix/odesrc/libode_a-testing.$(OBJEXT) - -rm -f unix/odesrc/libode_a-timer.$(OBJEXT) - -rm -f unix/odesrc/libode_a-util.$(OBJEXT) - -rm -f win32/crx-conproc.$(OBJEXT) - -rm -f win32/crx-glw_imp.$(OBJEXT) - -rm -f win32/crx-in_win.$(OBJEXT) - -rm -f win32/crx-net_wins.$(OBJEXT) - -rm -f win32/crx-q_shwin.$(OBJEXT) - -rm -f win32/crx-qal_win.$(OBJEXT) - -rm -f win32/crx-qgl_win.$(OBJEXT) - -rm -f win32/crx-sys_win.$(OBJEXT) - -rm -f win32/crx-vid_dll.$(OBJEXT) + -rm -f client/*.$(OBJEXT) + -rm -f game/*.$(OBJEXT) + -rm -f game/acesrc/*.$(OBJEXT) + -rm -f null/*.$(OBJEXT) + -rm -f qcommon/*.$(OBJEXT) + -rm -f ref_gl/*.$(OBJEXT) + -rm -f server/*.$(OBJEXT) + -rm -f unix/*.$(OBJEXT) + -rm -f unix/odesrc/*.$(OBJEXT) + -rm -f unix/odesrc/OPCODE/*.$(OBJEXT) + -rm -f unix/odesrc/OPCODE/Ice/*.$(OBJEXT) + -rm -f unix/odesrc/joints/*.$(OBJEXT) + -rm -f win32/*.$(OBJEXT) distclean-compile: -rm -f *.tab.c -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_ents.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_fx.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_http.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_input.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_inv.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_irc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_parse.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_pred.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_scrn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_stats.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_tent.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_updates.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-cl_view.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-console.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-keys.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-menu.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-qal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-qmenu.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-snd_file.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-snd_openal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/crx-vid_menu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_ents.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_fx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_http.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_input.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_inv.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_irc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_parse.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_pred.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_scrn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_stats.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_tent.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_updates.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-cl_view.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-console.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-keys.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-menu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-qal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-qmenu.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-snd_file.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@client/$(DEPDIR)/alienarena-snd_openal.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/alienarena-q_shared.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/alienarena_ded-q_shared.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/c_cam.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/crx-q_shared.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/crx_ded-q_shared.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_ai.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_chase.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_cmds.Po@am__quote@ @@ -1900,6 +1796,7 @@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_phys.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_save.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_spawn.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_spider.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_svcmds.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_target.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/$(DEPDIR)/g_trigger.Po@am__quote@ @@ -1920,82 +1817,81 @@ @AMDEP_TRUE@@am__include@ @am__quote@game/acesrc/$(DEPDIR)/acebot_movement.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/acesrc/$(DEPDIR)/acebot_nodes.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@game/acesrc/$(DEPDIR)/acebot_spawn.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@null/$(DEPDIR)/crx_ded-cl_null.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-cmd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-cmodel.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-common.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-crc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-cvar.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-files.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-htable.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-md5.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-mdfour.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-net_chan.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx-pmove.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-cmd.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-cmodel.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-common.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-crc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-cvar.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-files.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-htable.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-mdfour.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-net_chan.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/crx_ded-pmove.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_bloom.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_bmfont.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_draw.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_image.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_iqm.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_light.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_math.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_mesh.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_misc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_model.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_particle.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_postprocess.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_program.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_ragdoll.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_script.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_shadowmaps.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_shadows.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_surf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_text.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_ttf.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_varray.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_vbo.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_vlights.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/crx-r_warp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx-sv_ccmds.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx-sv_ents.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx-sv_game.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx-sv_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx-sv_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx-sv_send.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx-sv_user.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx-sv_world.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx_ded-sv_ccmds.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx_ded-sv_ents.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx_ded-sv_game.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx_ded-sv_init.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx_ded-sv_main.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx_ded-sv_send.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx_ded-sv_user.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/crx_ded-sv_world.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx-gl_glx.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx-glob.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx-net_udp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx-q_shunix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx-qal_unix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx-qgl_unix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx-rw_unix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx-sys_unix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx-vid_so.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx_ded-glob.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx_ded-net_udp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx_ded-q_shunix.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/crx_ded-sys_unix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@null/$(DEPDIR)/alienarena_ded-cl_null.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-cmd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-cmodel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-crc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-cvar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-files.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-htable.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-md5.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-mdfour.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-net_chan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena-pmove.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-cmd.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-cmodel.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-common.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-crc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-cvar.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-files.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-htable.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-mdfour.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-net_chan.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@qcommon/$(DEPDIR)/alienarena_ded-pmove.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_bloom.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_draw.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_image.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_iqm.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_light.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_math.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_mesh.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_misc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_model.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_particle.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_postprocess.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_program.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_ragdoll.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_script.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_shadowmaps.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_shadows.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_surf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_text.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_ttf.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_varray.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_vbo.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_vlights.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@ref_gl/$(DEPDIR)/alienarena-r_warp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena-sv_ccmds.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena-sv_ents.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena-sv_game.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena-sv_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena-sv_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena-sv_send.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena-sv_user.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena-sv_world.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena_ded-sv_ccmds.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena_ded-sv_ents.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena_ded-sv_game.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena_ded-sv_init.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena_ded-sv_main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena_ded-sv_send.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena_ded-sv_user.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@server/$(DEPDIR)/alienarena_ded-sv_world.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena-gl_glx.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena-glob.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena-net_udp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena-q_shunix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena-qal_unix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena-qgl_unix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena-rw_unix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena-sys_unix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena-vid_so.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena_ded-glob.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena_ded-net_udp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena_ded-q_shunix.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@unix/$(DEPDIR)/alienarena_ded-sys_unix.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@unix/odesrc/$(DEPDIR)/libode_a-array.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@unix/odesrc/$(DEPDIR)/libode_a-box.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@unix/odesrc/$(DEPDIR)/libode_a-capsule.Po@am__quote@ @@ -2097,3432 +1993,2969 @@ @AMDEP_TRUE@@am__include@ @am__quote@unix/odesrc/joints/$(DEPDIR)/libode_a-pu.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@unix/odesrc/joints/$(DEPDIR)/libode_a-slider.Po@am__quote@ @AMDEP_TRUE@@am__include@ @am__quote@unix/odesrc/joints/$(DEPDIR)/libode_a-universal.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/crx-conproc.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/crx-glw_imp.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/crx-in_win.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/crx-net_wins.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/crx-q_shwin.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/crx-qal_win.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/crx-qgl_win.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/crx-sys_win.Po@am__quote@ -@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/crx-vid_dll.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/alienarena-conproc.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/alienarena-glw_imp.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/alienarena-in_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/alienarena-net_wins.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/alienarena-q_shwin.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/alienarena-qal_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/alienarena-qgl_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/alienarena-sys_win.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@win32/$(DEPDIR)/alienarena-vid_dll.Po@am__quote@ .c.o: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ $< +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< .c.obj: @am__fastdepCC_TRUE@ $(AM_V_CC)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCC_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` unix/odesrc/libode_a-fastldlt.o: unix/odesrc/fastldlt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/odesrc/libode_a-fastldlt.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-fastldlt.Tpo -c -o unix/odesrc/libode_a-fastldlt.o `test -f 'unix/odesrc/fastldlt.c' || echo '$(srcdir)/'`unix/odesrc/fastldlt.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-fastldlt.Tpo unix/odesrc/$(DEPDIR)/libode_a-fastldlt.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/odesrc/fastldlt.c' object='unix/odesrc/libode_a-fastldlt.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/odesrc/fastldlt.c' object='unix/odesrc/libode_a-fastldlt.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastldlt.o `test -f 'unix/odesrc/fastldlt.c' || echo '$(srcdir)/'`unix/odesrc/fastldlt.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastldlt.o `test -f 'unix/odesrc/fastldlt.c' || echo '$(srcdir)/'`unix/odesrc/fastldlt.c unix/odesrc/libode_a-fastldlt.obj: unix/odesrc/fastldlt.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/odesrc/libode_a-fastldlt.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-fastldlt.Tpo -c -o unix/odesrc/libode_a-fastldlt.obj `if test -f 'unix/odesrc/fastldlt.c'; then $(CYGPATH_W) 'unix/odesrc/fastldlt.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastldlt.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-fastldlt.Tpo unix/odesrc/$(DEPDIR)/libode_a-fastldlt.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/odesrc/fastldlt.c' object='unix/odesrc/libode_a-fastldlt.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/odesrc/fastldlt.c' object='unix/odesrc/libode_a-fastldlt.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastldlt.obj `if test -f 'unix/odesrc/fastldlt.c'; then $(CYGPATH_W) 'unix/odesrc/fastldlt.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastldlt.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastldlt.obj `if test -f 'unix/odesrc/fastldlt.c'; then $(CYGPATH_W) 'unix/odesrc/fastldlt.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastldlt.c'; fi` unix/odesrc/libode_a-fastltsolve.o: unix/odesrc/fastltsolve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/odesrc/libode_a-fastltsolve.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-fastltsolve.Tpo -c -o unix/odesrc/libode_a-fastltsolve.o `test -f 'unix/odesrc/fastltsolve.c' || echo '$(srcdir)/'`unix/odesrc/fastltsolve.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-fastltsolve.Tpo unix/odesrc/$(DEPDIR)/libode_a-fastltsolve.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/odesrc/fastltsolve.c' object='unix/odesrc/libode_a-fastltsolve.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/odesrc/fastltsolve.c' object='unix/odesrc/libode_a-fastltsolve.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastltsolve.o `test -f 'unix/odesrc/fastltsolve.c' || echo '$(srcdir)/'`unix/odesrc/fastltsolve.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastltsolve.o `test -f 'unix/odesrc/fastltsolve.c' || echo '$(srcdir)/'`unix/odesrc/fastltsolve.c unix/odesrc/libode_a-fastltsolve.obj: unix/odesrc/fastltsolve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/odesrc/libode_a-fastltsolve.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-fastltsolve.Tpo -c -o unix/odesrc/libode_a-fastltsolve.obj `if test -f 'unix/odesrc/fastltsolve.c'; then $(CYGPATH_W) 'unix/odesrc/fastltsolve.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastltsolve.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-fastltsolve.Tpo unix/odesrc/$(DEPDIR)/libode_a-fastltsolve.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/odesrc/fastltsolve.c' object='unix/odesrc/libode_a-fastltsolve.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/odesrc/fastltsolve.c' object='unix/odesrc/libode_a-fastltsolve.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastltsolve.obj `if test -f 'unix/odesrc/fastltsolve.c'; then $(CYGPATH_W) 'unix/odesrc/fastltsolve.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastltsolve.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastltsolve.obj `if test -f 'unix/odesrc/fastltsolve.c'; then $(CYGPATH_W) 'unix/odesrc/fastltsolve.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastltsolve.c'; fi` unix/odesrc/libode_a-fastdot.o: unix/odesrc/fastdot.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/odesrc/libode_a-fastdot.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-fastdot.Tpo -c -o unix/odesrc/libode_a-fastdot.o `test -f 'unix/odesrc/fastdot.c' || echo '$(srcdir)/'`unix/odesrc/fastdot.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-fastdot.Tpo unix/odesrc/$(DEPDIR)/libode_a-fastdot.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/odesrc/fastdot.c' object='unix/odesrc/libode_a-fastdot.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/odesrc/fastdot.c' object='unix/odesrc/libode_a-fastdot.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastdot.o `test -f 'unix/odesrc/fastdot.c' || echo '$(srcdir)/'`unix/odesrc/fastdot.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastdot.o `test -f 'unix/odesrc/fastdot.c' || echo '$(srcdir)/'`unix/odesrc/fastdot.c unix/odesrc/libode_a-fastdot.obj: unix/odesrc/fastdot.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/odesrc/libode_a-fastdot.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-fastdot.Tpo -c -o unix/odesrc/libode_a-fastdot.obj `if test -f 'unix/odesrc/fastdot.c'; then $(CYGPATH_W) 'unix/odesrc/fastdot.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastdot.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-fastdot.Tpo unix/odesrc/$(DEPDIR)/libode_a-fastdot.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/odesrc/fastdot.c' object='unix/odesrc/libode_a-fastdot.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/odesrc/fastdot.c' object='unix/odesrc/libode_a-fastdot.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastdot.obj `if test -f 'unix/odesrc/fastdot.c'; then $(CYGPATH_W) 'unix/odesrc/fastdot.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastdot.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastdot.obj `if test -f 'unix/odesrc/fastdot.c'; then $(CYGPATH_W) 'unix/odesrc/fastdot.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastdot.c'; fi` unix/odesrc/libode_a-fastlsolve.o: unix/odesrc/fastlsolve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/odesrc/libode_a-fastlsolve.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-fastlsolve.Tpo -c -o unix/odesrc/libode_a-fastlsolve.o `test -f 'unix/odesrc/fastlsolve.c' || echo '$(srcdir)/'`unix/odesrc/fastlsolve.c @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-fastlsolve.Tpo unix/odesrc/$(DEPDIR)/libode_a-fastlsolve.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/odesrc/fastlsolve.c' object='unix/odesrc/libode_a-fastlsolve.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/odesrc/fastlsolve.c' object='unix/odesrc/libode_a-fastlsolve.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastlsolve.o `test -f 'unix/odesrc/fastlsolve.c' || echo '$(srcdir)/'`unix/odesrc/fastlsolve.c +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastlsolve.o `test -f 'unix/odesrc/fastlsolve.c' || echo '$(srcdir)/'`unix/odesrc/fastlsolve.c unix/odesrc/libode_a-fastlsolve.obj: unix/odesrc/fastlsolve.c @am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/odesrc/libode_a-fastlsolve.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-fastlsolve.Tpo -c -o unix/odesrc/libode_a-fastlsolve.obj `if test -f 'unix/odesrc/fastlsolve.c'; then $(CYGPATH_W) 'unix/odesrc/fastlsolve.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastlsolve.c'; fi` @am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-fastlsolve.Tpo unix/odesrc/$(DEPDIR)/libode_a-fastlsolve.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/odesrc/fastlsolve.c' object='unix/odesrc/libode_a-fastlsolve.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/odesrc/fastlsolve.c' object='unix/odesrc/libode_a-fastlsolve.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastlsolve.obj `if test -f 'unix/odesrc/fastlsolve.c'; then $(CYGPATH_W) 'unix/odesrc/fastlsolve.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastlsolve.c'; fi` + +client/alienarena-cl_ents.o: client/cl_ents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_ents.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_ents.Tpo -c -o client/alienarena-cl_ents.o `test -f 'client/cl_ents.c' || echo '$(srcdir)/'`client/cl_ents.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_ents.Tpo client/$(DEPDIR)/alienarena-cl_ents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_ents.c' object='client/alienarena-cl_ents.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_ents.o `test -f 'client/cl_ents.c' || echo '$(srcdir)/'`client/cl_ents.c + +client/alienarena-cl_ents.obj: client/cl_ents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_ents.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_ents.Tpo -c -o client/alienarena-cl_ents.obj `if test -f 'client/cl_ents.c'; then $(CYGPATH_W) 'client/cl_ents.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_ents.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_ents.Tpo client/$(DEPDIR)/alienarena-cl_ents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_ents.c' object='client/alienarena-cl_ents.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_ents.obj `if test -f 'client/cl_ents.c'; then $(CYGPATH_W) 'client/cl_ents.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_ents.c'; fi` + +client/alienarena-cl_fx.o: client/cl_fx.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_fx.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_fx.Tpo -c -o client/alienarena-cl_fx.o `test -f 'client/cl_fx.c' || echo '$(srcdir)/'`client/cl_fx.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_fx.Tpo client/$(DEPDIR)/alienarena-cl_fx.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_fx.c' object='client/alienarena-cl_fx.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_fx.o `test -f 'client/cl_fx.c' || echo '$(srcdir)/'`client/cl_fx.c + +client/alienarena-cl_fx.obj: client/cl_fx.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_fx.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_fx.Tpo -c -o client/alienarena-cl_fx.obj `if test -f 'client/cl_fx.c'; then $(CYGPATH_W) 'client/cl_fx.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_fx.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_fx.Tpo client/$(DEPDIR)/alienarena-cl_fx.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_fx.c' object='client/alienarena-cl_fx.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_fx.obj `if test -f 'client/cl_fx.c'; then $(CYGPATH_W) 'client/cl_fx.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_fx.c'; fi` + +client/alienarena-cl_http.o: client/cl_http.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_http.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_http.Tpo -c -o client/alienarena-cl_http.o `test -f 'client/cl_http.c' || echo '$(srcdir)/'`client/cl_http.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_http.Tpo client/$(DEPDIR)/alienarena-cl_http.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_http.c' object='client/alienarena-cl_http.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_http.o `test -f 'client/cl_http.c' || echo '$(srcdir)/'`client/cl_http.c + +client/alienarena-cl_http.obj: client/cl_http.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_http.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_http.Tpo -c -o client/alienarena-cl_http.obj `if test -f 'client/cl_http.c'; then $(CYGPATH_W) 'client/cl_http.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_http.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_http.Tpo client/$(DEPDIR)/alienarena-cl_http.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_http.c' object='client/alienarena-cl_http.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_http.obj `if test -f 'client/cl_http.c'; then $(CYGPATH_W) 'client/cl_http.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_http.c'; fi` + +client/alienarena-cl_input.o: client/cl_input.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_input.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_input.Tpo -c -o client/alienarena-cl_input.o `test -f 'client/cl_input.c' || echo '$(srcdir)/'`client/cl_input.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_input.Tpo client/$(DEPDIR)/alienarena-cl_input.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_input.c' object='client/alienarena-cl_input.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_input.o `test -f 'client/cl_input.c' || echo '$(srcdir)/'`client/cl_input.c + +client/alienarena-cl_input.obj: client/cl_input.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_input.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_input.Tpo -c -o client/alienarena-cl_input.obj `if test -f 'client/cl_input.c'; then $(CYGPATH_W) 'client/cl_input.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_input.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_input.Tpo client/$(DEPDIR)/alienarena-cl_input.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_input.c' object='client/alienarena-cl_input.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_input.obj `if test -f 'client/cl_input.c'; then $(CYGPATH_W) 'client/cl_input.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_input.c'; fi` + +client/alienarena-cl_inv.o: client/cl_inv.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_inv.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_inv.Tpo -c -o client/alienarena-cl_inv.o `test -f 'client/cl_inv.c' || echo '$(srcdir)/'`client/cl_inv.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_inv.Tpo client/$(DEPDIR)/alienarena-cl_inv.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_inv.c' object='client/alienarena-cl_inv.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_inv.o `test -f 'client/cl_inv.c' || echo '$(srcdir)/'`client/cl_inv.c + +client/alienarena-cl_inv.obj: client/cl_inv.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_inv.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_inv.Tpo -c -o client/alienarena-cl_inv.obj `if test -f 'client/cl_inv.c'; then $(CYGPATH_W) 'client/cl_inv.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_inv.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_inv.Tpo client/$(DEPDIR)/alienarena-cl_inv.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_inv.c' object='client/alienarena-cl_inv.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_inv.obj `if test -f 'client/cl_inv.c'; then $(CYGPATH_W) 'client/cl_inv.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_inv.c'; fi` + +client/alienarena-cl_irc.o: client/cl_irc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_irc.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_irc.Tpo -c -o client/alienarena-cl_irc.o `test -f 'client/cl_irc.c' || echo '$(srcdir)/'`client/cl_irc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_irc.Tpo client/$(DEPDIR)/alienarena-cl_irc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_irc.c' object='client/alienarena-cl_irc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_irc.o `test -f 'client/cl_irc.c' || echo '$(srcdir)/'`client/cl_irc.c + +client/alienarena-cl_irc.obj: client/cl_irc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_irc.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_irc.Tpo -c -o client/alienarena-cl_irc.obj `if test -f 'client/cl_irc.c'; then $(CYGPATH_W) 'client/cl_irc.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_irc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_irc.Tpo client/$(DEPDIR)/alienarena-cl_irc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_irc.c' object='client/alienarena-cl_irc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_irc.obj `if test -f 'client/cl_irc.c'; then $(CYGPATH_W) 'client/cl_irc.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_irc.c'; fi` + +client/alienarena-cl_main.o: client/cl_main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_main.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_main.Tpo -c -o client/alienarena-cl_main.o `test -f 'client/cl_main.c' || echo '$(srcdir)/'`client/cl_main.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_main.Tpo client/$(DEPDIR)/alienarena-cl_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_main.c' object='client/alienarena-cl_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_main.o `test -f 'client/cl_main.c' || echo '$(srcdir)/'`client/cl_main.c + +client/alienarena-cl_main.obj: client/cl_main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_main.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_main.Tpo -c -o client/alienarena-cl_main.obj `if test -f 'client/cl_main.c'; then $(CYGPATH_W) 'client/cl_main.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_main.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_main.Tpo client/$(DEPDIR)/alienarena-cl_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_main.c' object='client/alienarena-cl_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_main.obj `if test -f 'client/cl_main.c'; then $(CYGPATH_W) 'client/cl_main.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_main.c'; fi` + +client/alienarena-cl_parse.o: client/cl_parse.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_parse.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_parse.Tpo -c -o client/alienarena-cl_parse.o `test -f 'client/cl_parse.c' || echo '$(srcdir)/'`client/cl_parse.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_parse.Tpo client/$(DEPDIR)/alienarena-cl_parse.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_parse.c' object='client/alienarena-cl_parse.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_parse.o `test -f 'client/cl_parse.c' || echo '$(srcdir)/'`client/cl_parse.c + +client/alienarena-cl_parse.obj: client/cl_parse.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_parse.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_parse.Tpo -c -o client/alienarena-cl_parse.obj `if test -f 'client/cl_parse.c'; then $(CYGPATH_W) 'client/cl_parse.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_parse.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_parse.Tpo client/$(DEPDIR)/alienarena-cl_parse.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_parse.c' object='client/alienarena-cl_parse.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_parse.obj `if test -f 'client/cl_parse.c'; then $(CYGPATH_W) 'client/cl_parse.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_parse.c'; fi` + +client/alienarena-cl_pred.o: client/cl_pred.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_pred.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_pred.Tpo -c -o client/alienarena-cl_pred.o `test -f 'client/cl_pred.c' || echo '$(srcdir)/'`client/cl_pred.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_pred.Tpo client/$(DEPDIR)/alienarena-cl_pred.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_pred.c' object='client/alienarena-cl_pred.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_pred.o `test -f 'client/cl_pred.c' || echo '$(srcdir)/'`client/cl_pred.c + +client/alienarena-cl_pred.obj: client/cl_pred.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_pred.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_pred.Tpo -c -o client/alienarena-cl_pred.obj `if test -f 'client/cl_pred.c'; then $(CYGPATH_W) 'client/cl_pred.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_pred.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_pred.Tpo client/$(DEPDIR)/alienarena-cl_pred.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_pred.c' object='client/alienarena-cl_pred.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_pred.obj `if test -f 'client/cl_pred.c'; then $(CYGPATH_W) 'client/cl_pred.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_pred.c'; fi` + +client/alienarena-cl_scrn.o: client/cl_scrn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_scrn.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_scrn.Tpo -c -o client/alienarena-cl_scrn.o `test -f 'client/cl_scrn.c' || echo '$(srcdir)/'`client/cl_scrn.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_scrn.Tpo client/$(DEPDIR)/alienarena-cl_scrn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_scrn.c' object='client/alienarena-cl_scrn.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_scrn.o `test -f 'client/cl_scrn.c' || echo '$(srcdir)/'`client/cl_scrn.c + +client/alienarena-cl_scrn.obj: client/cl_scrn.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_scrn.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_scrn.Tpo -c -o client/alienarena-cl_scrn.obj `if test -f 'client/cl_scrn.c'; then $(CYGPATH_W) 'client/cl_scrn.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_scrn.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_scrn.Tpo client/$(DEPDIR)/alienarena-cl_scrn.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_scrn.c' object='client/alienarena-cl_scrn.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_scrn.obj `if test -f 'client/cl_scrn.c'; then $(CYGPATH_W) 'client/cl_scrn.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_scrn.c'; fi` + +client/alienarena-cl_stats.o: client/cl_stats.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_stats.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_stats.Tpo -c -o client/alienarena-cl_stats.o `test -f 'client/cl_stats.c' || echo '$(srcdir)/'`client/cl_stats.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_stats.Tpo client/$(DEPDIR)/alienarena-cl_stats.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_stats.c' object='client/alienarena-cl_stats.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_stats.o `test -f 'client/cl_stats.c' || echo '$(srcdir)/'`client/cl_stats.c + +client/alienarena-cl_stats.obj: client/cl_stats.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_stats.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_stats.Tpo -c -o client/alienarena-cl_stats.obj `if test -f 'client/cl_stats.c'; then $(CYGPATH_W) 'client/cl_stats.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_stats.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_stats.Tpo client/$(DEPDIR)/alienarena-cl_stats.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_stats.c' object='client/alienarena-cl_stats.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_stats.obj `if test -f 'client/cl_stats.c'; then $(CYGPATH_W) 'client/cl_stats.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_stats.c'; fi` + +client/alienarena-cl_updates.o: client/cl_updates.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_updates.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_updates.Tpo -c -o client/alienarena-cl_updates.o `test -f 'client/cl_updates.c' || echo '$(srcdir)/'`client/cl_updates.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_updates.Tpo client/$(DEPDIR)/alienarena-cl_updates.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_updates.c' object='client/alienarena-cl_updates.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_updates.o `test -f 'client/cl_updates.c' || echo '$(srcdir)/'`client/cl_updates.c + +client/alienarena-cl_updates.obj: client/cl_updates.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_updates.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_updates.Tpo -c -o client/alienarena-cl_updates.obj `if test -f 'client/cl_updates.c'; then $(CYGPATH_W) 'client/cl_updates.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_updates.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_updates.Tpo client/$(DEPDIR)/alienarena-cl_updates.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_updates.c' object='client/alienarena-cl_updates.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_updates.obj `if test -f 'client/cl_updates.c'; then $(CYGPATH_W) 'client/cl_updates.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_updates.c'; fi` + +client/alienarena-cl_tent.o: client/cl_tent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_tent.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_tent.Tpo -c -o client/alienarena-cl_tent.o `test -f 'client/cl_tent.c' || echo '$(srcdir)/'`client/cl_tent.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_tent.Tpo client/$(DEPDIR)/alienarena-cl_tent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_tent.c' object='client/alienarena-cl_tent.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_tent.o `test -f 'client/cl_tent.c' || echo '$(srcdir)/'`client/cl_tent.c + +client/alienarena-cl_tent.obj: client/cl_tent.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_tent.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_tent.Tpo -c -o client/alienarena-cl_tent.obj `if test -f 'client/cl_tent.c'; then $(CYGPATH_W) 'client/cl_tent.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_tent.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_tent.Tpo client/$(DEPDIR)/alienarena-cl_tent.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_tent.c' object='client/alienarena-cl_tent.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_tent.obj `if test -f 'client/cl_tent.c'; then $(CYGPATH_W) 'client/cl_tent.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_tent.c'; fi` + +client/alienarena-cl_view.o: client/cl_view.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_view.o -MD -MP -MF client/$(DEPDIR)/alienarena-cl_view.Tpo -c -o client/alienarena-cl_view.o `test -f 'client/cl_view.c' || echo '$(srcdir)/'`client/cl_view.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_view.Tpo client/$(DEPDIR)/alienarena-cl_view.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_view.c' object='client/alienarena-cl_view.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_view.o `test -f 'client/cl_view.c' || echo '$(srcdir)/'`client/cl_view.c + +client/alienarena-cl_view.obj: client/cl_view.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-cl_view.obj -MD -MP -MF client/$(DEPDIR)/alienarena-cl_view.Tpo -c -o client/alienarena-cl_view.obj `if test -f 'client/cl_view.c'; then $(CYGPATH_W) 'client/cl_view.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_view.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-cl_view.Tpo client/$(DEPDIR)/alienarena-cl_view.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/cl_view.c' object='client/alienarena-cl_view.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-cl_view.obj `if test -f 'client/cl_view.c'; then $(CYGPATH_W) 'client/cl_view.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_view.c'; fi` + +client/alienarena-console.o: client/console.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-console.o -MD -MP -MF client/$(DEPDIR)/alienarena-console.Tpo -c -o client/alienarena-console.o `test -f 'client/console.c' || echo '$(srcdir)/'`client/console.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-console.Tpo client/$(DEPDIR)/alienarena-console.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/console.c' object='client/alienarena-console.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-console.o `test -f 'client/console.c' || echo '$(srcdir)/'`client/console.c + +client/alienarena-console.obj: client/console.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-console.obj -MD -MP -MF client/$(DEPDIR)/alienarena-console.Tpo -c -o client/alienarena-console.obj `if test -f 'client/console.c'; then $(CYGPATH_W) 'client/console.c'; else $(CYGPATH_W) '$(srcdir)/client/console.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-console.Tpo client/$(DEPDIR)/alienarena-console.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/console.c' object='client/alienarena-console.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-console.obj `if test -f 'client/console.c'; then $(CYGPATH_W) 'client/console.c'; else $(CYGPATH_W) '$(srcdir)/client/console.c'; fi` + +client/alienarena-keys.o: client/keys.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-keys.o -MD -MP -MF client/$(DEPDIR)/alienarena-keys.Tpo -c -o client/alienarena-keys.o `test -f 'client/keys.c' || echo '$(srcdir)/'`client/keys.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-keys.Tpo client/$(DEPDIR)/alienarena-keys.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/keys.c' object='client/alienarena-keys.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-keys.o `test -f 'client/keys.c' || echo '$(srcdir)/'`client/keys.c + +client/alienarena-keys.obj: client/keys.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-keys.obj -MD -MP -MF client/$(DEPDIR)/alienarena-keys.Tpo -c -o client/alienarena-keys.obj `if test -f 'client/keys.c'; then $(CYGPATH_W) 'client/keys.c'; else $(CYGPATH_W) '$(srcdir)/client/keys.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-keys.Tpo client/$(DEPDIR)/alienarena-keys.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/keys.c' object='client/alienarena-keys.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-keys.obj `if test -f 'client/keys.c'; then $(CYGPATH_W) 'client/keys.c'; else $(CYGPATH_W) '$(srcdir)/client/keys.c'; fi` + +client/alienarena-menu.o: client/menu.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-menu.o -MD -MP -MF client/$(DEPDIR)/alienarena-menu.Tpo -c -o client/alienarena-menu.o `test -f 'client/menu.c' || echo '$(srcdir)/'`client/menu.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-menu.Tpo client/$(DEPDIR)/alienarena-menu.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/menu.c' object='client/alienarena-menu.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-menu.o `test -f 'client/menu.c' || echo '$(srcdir)/'`client/menu.c + +client/alienarena-menu.obj: client/menu.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-menu.obj -MD -MP -MF client/$(DEPDIR)/alienarena-menu.Tpo -c -o client/alienarena-menu.obj `if test -f 'client/menu.c'; then $(CYGPATH_W) 'client/menu.c'; else $(CYGPATH_W) '$(srcdir)/client/menu.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-menu.Tpo client/$(DEPDIR)/alienarena-menu.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/menu.c' object='client/alienarena-menu.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-menu.obj `if test -f 'client/menu.c'; then $(CYGPATH_W) 'client/menu.c'; else $(CYGPATH_W) '$(srcdir)/client/menu.c'; fi` + +client/alienarena-qal.o: client/qal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-qal.o -MD -MP -MF client/$(DEPDIR)/alienarena-qal.Tpo -c -o client/alienarena-qal.o `test -f 'client/qal.c' || echo '$(srcdir)/'`client/qal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-qal.Tpo client/$(DEPDIR)/alienarena-qal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/qal.c' object='client/alienarena-qal.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-qal.o `test -f 'client/qal.c' || echo '$(srcdir)/'`client/qal.c + +client/alienarena-qal.obj: client/qal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-qal.obj -MD -MP -MF client/$(DEPDIR)/alienarena-qal.Tpo -c -o client/alienarena-qal.obj `if test -f 'client/qal.c'; then $(CYGPATH_W) 'client/qal.c'; else $(CYGPATH_W) '$(srcdir)/client/qal.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-qal.Tpo client/$(DEPDIR)/alienarena-qal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/qal.c' object='client/alienarena-qal.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-qal.obj `if test -f 'client/qal.c'; then $(CYGPATH_W) 'client/qal.c'; else $(CYGPATH_W) '$(srcdir)/client/qal.c'; fi` + +client/alienarena-qmenu.o: client/qmenu.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-qmenu.o -MD -MP -MF client/$(DEPDIR)/alienarena-qmenu.Tpo -c -o client/alienarena-qmenu.o `test -f 'client/qmenu.c' || echo '$(srcdir)/'`client/qmenu.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-qmenu.Tpo client/$(DEPDIR)/alienarena-qmenu.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/qmenu.c' object='client/alienarena-qmenu.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-qmenu.o `test -f 'client/qmenu.c' || echo '$(srcdir)/'`client/qmenu.c + +client/alienarena-qmenu.obj: client/qmenu.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-qmenu.obj -MD -MP -MF client/$(DEPDIR)/alienarena-qmenu.Tpo -c -o client/alienarena-qmenu.obj `if test -f 'client/qmenu.c'; then $(CYGPATH_W) 'client/qmenu.c'; else $(CYGPATH_W) '$(srcdir)/client/qmenu.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-qmenu.Tpo client/$(DEPDIR)/alienarena-qmenu.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/qmenu.c' object='client/alienarena-qmenu.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-qmenu.obj `if test -f 'client/qmenu.c'; then $(CYGPATH_W) 'client/qmenu.c'; else $(CYGPATH_W) '$(srcdir)/client/qmenu.c'; fi` + +client/alienarena-snd_file.o: client/snd_file.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-snd_file.o -MD -MP -MF client/$(DEPDIR)/alienarena-snd_file.Tpo -c -o client/alienarena-snd_file.o `test -f 'client/snd_file.c' || echo '$(srcdir)/'`client/snd_file.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-snd_file.Tpo client/$(DEPDIR)/alienarena-snd_file.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/snd_file.c' object='client/alienarena-snd_file.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-snd_file.o `test -f 'client/snd_file.c' || echo '$(srcdir)/'`client/snd_file.c + +client/alienarena-snd_file.obj: client/snd_file.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-snd_file.obj -MD -MP -MF client/$(DEPDIR)/alienarena-snd_file.Tpo -c -o client/alienarena-snd_file.obj `if test -f 'client/snd_file.c'; then $(CYGPATH_W) 'client/snd_file.c'; else $(CYGPATH_W) '$(srcdir)/client/snd_file.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-snd_file.Tpo client/$(DEPDIR)/alienarena-snd_file.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/snd_file.c' object='client/alienarena-snd_file.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-snd_file.obj `if test -f 'client/snd_file.c'; then $(CYGPATH_W) 'client/snd_file.c'; else $(CYGPATH_W) '$(srcdir)/client/snd_file.c'; fi` + +client/alienarena-snd_openal.o: client/snd_openal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-snd_openal.o -MD -MP -MF client/$(DEPDIR)/alienarena-snd_openal.Tpo -c -o client/alienarena-snd_openal.o `test -f 'client/snd_openal.c' || echo '$(srcdir)/'`client/snd_openal.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-snd_openal.Tpo client/$(DEPDIR)/alienarena-snd_openal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/snd_openal.c' object='client/alienarena-snd_openal.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-snd_openal.o `test -f 'client/snd_openal.c' || echo '$(srcdir)/'`client/snd_openal.c + +client/alienarena-snd_openal.obj: client/snd_openal.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/alienarena-snd_openal.obj -MD -MP -MF client/$(DEPDIR)/alienarena-snd_openal.Tpo -c -o client/alienarena-snd_openal.obj `if test -f 'client/snd_openal.c'; then $(CYGPATH_W) 'client/snd_openal.c'; else $(CYGPATH_W) '$(srcdir)/client/snd_openal.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/alienarena-snd_openal.Tpo client/$(DEPDIR)/alienarena-snd_openal.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='client/snd_openal.c' object='client/alienarena-snd_openal.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/alienarena-snd_openal.obj `if test -f 'client/snd_openal.c'; then $(CYGPATH_W) 'client/snd_openal.c'; else $(CYGPATH_W) '$(srcdir)/client/snd_openal.c'; fi` + +game/alienarena-q_shared.o: game/q_shared.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT game/alienarena-q_shared.o -MD -MP -MF game/$(DEPDIR)/alienarena-q_shared.Tpo -c -o game/alienarena-q_shared.o `test -f 'game/q_shared.c' || echo '$(srcdir)/'`game/q_shared.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) game/$(DEPDIR)/alienarena-q_shared.Tpo game/$(DEPDIR)/alienarena-q_shared.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='game/q_shared.c' object='game/alienarena-q_shared.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o game/alienarena-q_shared.o `test -f 'game/q_shared.c' || echo '$(srcdir)/'`game/q_shared.c + +game/alienarena-q_shared.obj: game/q_shared.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT game/alienarena-q_shared.obj -MD -MP -MF game/$(DEPDIR)/alienarena-q_shared.Tpo -c -o game/alienarena-q_shared.obj `if test -f 'game/q_shared.c'; then $(CYGPATH_W) 'game/q_shared.c'; else $(CYGPATH_W) '$(srcdir)/game/q_shared.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) game/$(DEPDIR)/alienarena-q_shared.Tpo game/$(DEPDIR)/alienarena-q_shared.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='game/q_shared.c' object='game/alienarena-q_shared.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o game/alienarena-q_shared.obj `if test -f 'game/q_shared.c'; then $(CYGPATH_W) 'game/q_shared.c'; else $(CYGPATH_W) '$(srcdir)/game/q_shared.c'; fi` + +qcommon/alienarena-cmd.o: qcommon/cmd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-cmd.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-cmd.Tpo -c -o qcommon/alienarena-cmd.o `test -f 'qcommon/cmd.c' || echo '$(srcdir)/'`qcommon/cmd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-cmd.Tpo qcommon/$(DEPDIR)/alienarena-cmd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cmd.c' object='qcommon/alienarena-cmd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-cmd.o `test -f 'qcommon/cmd.c' || echo '$(srcdir)/'`qcommon/cmd.c + +qcommon/alienarena-cmd.obj: qcommon/cmd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-cmd.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-cmd.Tpo -c -o qcommon/alienarena-cmd.obj `if test -f 'qcommon/cmd.c'; then $(CYGPATH_W) 'qcommon/cmd.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-cmd.Tpo qcommon/$(DEPDIR)/alienarena-cmd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cmd.c' object='qcommon/alienarena-cmd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-cmd.obj `if test -f 'qcommon/cmd.c'; then $(CYGPATH_W) 'qcommon/cmd.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmd.c'; fi` + +qcommon/alienarena-cmodel.o: qcommon/cmodel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-cmodel.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-cmodel.Tpo -c -o qcommon/alienarena-cmodel.o `test -f 'qcommon/cmodel.c' || echo '$(srcdir)/'`qcommon/cmodel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-cmodel.Tpo qcommon/$(DEPDIR)/alienarena-cmodel.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cmodel.c' object='qcommon/alienarena-cmodel.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-cmodel.o `test -f 'qcommon/cmodel.c' || echo '$(srcdir)/'`qcommon/cmodel.c + +qcommon/alienarena-cmodel.obj: qcommon/cmodel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-cmodel.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-cmodel.Tpo -c -o qcommon/alienarena-cmodel.obj `if test -f 'qcommon/cmodel.c'; then $(CYGPATH_W) 'qcommon/cmodel.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmodel.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-cmodel.Tpo qcommon/$(DEPDIR)/alienarena-cmodel.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cmodel.c' object='qcommon/alienarena-cmodel.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-cmodel.obj `if test -f 'qcommon/cmodel.c'; then $(CYGPATH_W) 'qcommon/cmodel.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmodel.c'; fi` + +qcommon/alienarena-common.o: qcommon/common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-common.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-common.Tpo -c -o qcommon/alienarena-common.o `test -f 'qcommon/common.c' || echo '$(srcdir)/'`qcommon/common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-common.Tpo qcommon/$(DEPDIR)/alienarena-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/common.c' object='qcommon/alienarena-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-common.o `test -f 'qcommon/common.c' || echo '$(srcdir)/'`qcommon/common.c + +qcommon/alienarena-common.obj: qcommon/common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-common.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-common.Tpo -c -o qcommon/alienarena-common.obj `if test -f 'qcommon/common.c'; then $(CYGPATH_W) 'qcommon/common.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-common.Tpo qcommon/$(DEPDIR)/alienarena-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/common.c' object='qcommon/alienarena-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-common.obj `if test -f 'qcommon/common.c'; then $(CYGPATH_W) 'qcommon/common.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/common.c'; fi` + +qcommon/alienarena-crc.o: qcommon/crc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-crc.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-crc.Tpo -c -o qcommon/alienarena-crc.o `test -f 'qcommon/crc.c' || echo '$(srcdir)/'`qcommon/crc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-crc.Tpo qcommon/$(DEPDIR)/alienarena-crc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/crc.c' object='qcommon/alienarena-crc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-crc.o `test -f 'qcommon/crc.c' || echo '$(srcdir)/'`qcommon/crc.c + +qcommon/alienarena-crc.obj: qcommon/crc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-crc.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-crc.Tpo -c -o qcommon/alienarena-crc.obj `if test -f 'qcommon/crc.c'; then $(CYGPATH_W) 'qcommon/crc.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/crc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-crc.Tpo qcommon/$(DEPDIR)/alienarena-crc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/crc.c' object='qcommon/alienarena-crc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-crc.obj `if test -f 'qcommon/crc.c'; then $(CYGPATH_W) 'qcommon/crc.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/crc.c'; fi` + +qcommon/alienarena-cvar.o: qcommon/cvar.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-cvar.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-cvar.Tpo -c -o qcommon/alienarena-cvar.o `test -f 'qcommon/cvar.c' || echo '$(srcdir)/'`qcommon/cvar.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-cvar.Tpo qcommon/$(DEPDIR)/alienarena-cvar.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cvar.c' object='qcommon/alienarena-cvar.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-cvar.o `test -f 'qcommon/cvar.c' || echo '$(srcdir)/'`qcommon/cvar.c + +qcommon/alienarena-cvar.obj: qcommon/cvar.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-cvar.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-cvar.Tpo -c -o qcommon/alienarena-cvar.obj `if test -f 'qcommon/cvar.c'; then $(CYGPATH_W) 'qcommon/cvar.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cvar.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-cvar.Tpo qcommon/$(DEPDIR)/alienarena-cvar.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cvar.c' object='qcommon/alienarena-cvar.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-cvar.obj `if test -f 'qcommon/cvar.c'; then $(CYGPATH_W) 'qcommon/cvar.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cvar.c'; fi` + +qcommon/alienarena-files.o: qcommon/files.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-files.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-files.Tpo -c -o qcommon/alienarena-files.o `test -f 'qcommon/files.c' || echo '$(srcdir)/'`qcommon/files.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-files.Tpo qcommon/$(DEPDIR)/alienarena-files.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/files.c' object='qcommon/alienarena-files.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-files.o `test -f 'qcommon/files.c' || echo '$(srcdir)/'`qcommon/files.c + +qcommon/alienarena-files.obj: qcommon/files.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-files.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-files.Tpo -c -o qcommon/alienarena-files.obj `if test -f 'qcommon/files.c'; then $(CYGPATH_W) 'qcommon/files.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/files.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-files.Tpo qcommon/$(DEPDIR)/alienarena-files.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/files.c' object='qcommon/alienarena-files.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-files.obj `if test -f 'qcommon/files.c'; then $(CYGPATH_W) 'qcommon/files.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/files.c'; fi` + +qcommon/alienarena-htable.o: qcommon/htable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-htable.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-htable.Tpo -c -o qcommon/alienarena-htable.o `test -f 'qcommon/htable.c' || echo '$(srcdir)/'`qcommon/htable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-htable.Tpo qcommon/$(DEPDIR)/alienarena-htable.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/htable.c' object='qcommon/alienarena-htable.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-htable.o `test -f 'qcommon/htable.c' || echo '$(srcdir)/'`qcommon/htable.c + +qcommon/alienarena-htable.obj: qcommon/htable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-htable.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-htable.Tpo -c -o qcommon/alienarena-htable.obj `if test -f 'qcommon/htable.c'; then $(CYGPATH_W) 'qcommon/htable.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/htable.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-htable.Tpo qcommon/$(DEPDIR)/alienarena-htable.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/htable.c' object='qcommon/alienarena-htable.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-htable.obj `if test -f 'qcommon/htable.c'; then $(CYGPATH_W) 'qcommon/htable.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/htable.c'; fi` + +qcommon/alienarena-md5.o: qcommon/md5.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-md5.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-md5.Tpo -c -o qcommon/alienarena-md5.o `test -f 'qcommon/md5.c' || echo '$(srcdir)/'`qcommon/md5.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-md5.Tpo qcommon/$(DEPDIR)/alienarena-md5.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/md5.c' object='qcommon/alienarena-md5.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-md5.o `test -f 'qcommon/md5.c' || echo '$(srcdir)/'`qcommon/md5.c + +qcommon/alienarena-md5.obj: qcommon/md5.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-md5.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-md5.Tpo -c -o qcommon/alienarena-md5.obj `if test -f 'qcommon/md5.c'; then $(CYGPATH_W) 'qcommon/md5.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/md5.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-md5.Tpo qcommon/$(DEPDIR)/alienarena-md5.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/md5.c' object='qcommon/alienarena-md5.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-md5.obj `if test -f 'qcommon/md5.c'; then $(CYGPATH_W) 'qcommon/md5.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/md5.c'; fi` + +qcommon/alienarena-mdfour.o: qcommon/mdfour.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-mdfour.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-mdfour.Tpo -c -o qcommon/alienarena-mdfour.o `test -f 'qcommon/mdfour.c' || echo '$(srcdir)/'`qcommon/mdfour.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-mdfour.Tpo qcommon/$(DEPDIR)/alienarena-mdfour.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/mdfour.c' object='qcommon/alienarena-mdfour.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-mdfour.o `test -f 'qcommon/mdfour.c' || echo '$(srcdir)/'`qcommon/mdfour.c + +qcommon/alienarena-mdfour.obj: qcommon/mdfour.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-mdfour.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-mdfour.Tpo -c -o qcommon/alienarena-mdfour.obj `if test -f 'qcommon/mdfour.c'; then $(CYGPATH_W) 'qcommon/mdfour.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/mdfour.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-mdfour.Tpo qcommon/$(DEPDIR)/alienarena-mdfour.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/mdfour.c' object='qcommon/alienarena-mdfour.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-mdfour.obj `if test -f 'qcommon/mdfour.c'; then $(CYGPATH_W) 'qcommon/mdfour.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/mdfour.c'; fi` + +qcommon/alienarena-net_chan.o: qcommon/net_chan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-net_chan.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-net_chan.Tpo -c -o qcommon/alienarena-net_chan.o `test -f 'qcommon/net_chan.c' || echo '$(srcdir)/'`qcommon/net_chan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-net_chan.Tpo qcommon/$(DEPDIR)/alienarena-net_chan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/net_chan.c' object='qcommon/alienarena-net_chan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-net_chan.o `test -f 'qcommon/net_chan.c' || echo '$(srcdir)/'`qcommon/net_chan.c + +qcommon/alienarena-net_chan.obj: qcommon/net_chan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-net_chan.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-net_chan.Tpo -c -o qcommon/alienarena-net_chan.obj `if test -f 'qcommon/net_chan.c'; then $(CYGPATH_W) 'qcommon/net_chan.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/net_chan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-net_chan.Tpo qcommon/$(DEPDIR)/alienarena-net_chan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/net_chan.c' object='qcommon/alienarena-net_chan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-net_chan.obj `if test -f 'qcommon/net_chan.c'; then $(CYGPATH_W) 'qcommon/net_chan.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/net_chan.c'; fi` + +qcommon/alienarena-pmove.o: qcommon/pmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-pmove.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena-pmove.Tpo -c -o qcommon/alienarena-pmove.o `test -f 'qcommon/pmove.c' || echo '$(srcdir)/'`qcommon/pmove.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-pmove.Tpo qcommon/$(DEPDIR)/alienarena-pmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/pmove.c' object='qcommon/alienarena-pmove.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-pmove.o `test -f 'qcommon/pmove.c' || echo '$(srcdir)/'`qcommon/pmove.c + +qcommon/alienarena-pmove.obj: qcommon/pmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena-pmove.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena-pmove.Tpo -c -o qcommon/alienarena-pmove.obj `if test -f 'qcommon/pmove.c'; then $(CYGPATH_W) 'qcommon/pmove.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/pmove.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena-pmove.Tpo qcommon/$(DEPDIR)/alienarena-pmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/pmove.c' object='qcommon/alienarena-pmove.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena-pmove.obj `if test -f 'qcommon/pmove.c'; then $(CYGPATH_W) 'qcommon/pmove.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/pmove.c'; fi` + +ref_gl/alienarena-r_bloom.o: ref_gl/r_bloom.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_bloom.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_bloom.Tpo -c -o ref_gl/alienarena-r_bloom.o `test -f 'ref_gl/r_bloom.c' || echo '$(srcdir)/'`ref_gl/r_bloom.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_bloom.Tpo ref_gl/$(DEPDIR)/alienarena-r_bloom.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_bloom.c' object='ref_gl/alienarena-r_bloom.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_bloom.o `test -f 'ref_gl/r_bloom.c' || echo '$(srcdir)/'`ref_gl/r_bloom.c + +ref_gl/alienarena-r_bloom.obj: ref_gl/r_bloom.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_bloom.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_bloom.Tpo -c -o ref_gl/alienarena-r_bloom.obj `if test -f 'ref_gl/r_bloom.c'; then $(CYGPATH_W) 'ref_gl/r_bloom.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_bloom.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_bloom.Tpo ref_gl/$(DEPDIR)/alienarena-r_bloom.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_bloom.c' object='ref_gl/alienarena-r_bloom.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_bloom.obj `if test -f 'ref_gl/r_bloom.c'; then $(CYGPATH_W) 'ref_gl/r_bloom.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_bloom.c'; fi` + +ref_gl/alienarena-r_draw.o: ref_gl/r_draw.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_draw.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_draw.Tpo -c -o ref_gl/alienarena-r_draw.o `test -f 'ref_gl/r_draw.c' || echo '$(srcdir)/'`ref_gl/r_draw.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_draw.Tpo ref_gl/$(DEPDIR)/alienarena-r_draw.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_draw.c' object='ref_gl/alienarena-r_draw.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_draw.o `test -f 'ref_gl/r_draw.c' || echo '$(srcdir)/'`ref_gl/r_draw.c + +ref_gl/alienarena-r_draw.obj: ref_gl/r_draw.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_draw.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_draw.Tpo -c -o ref_gl/alienarena-r_draw.obj `if test -f 'ref_gl/r_draw.c'; then $(CYGPATH_W) 'ref_gl/r_draw.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_draw.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_draw.Tpo ref_gl/$(DEPDIR)/alienarena-r_draw.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_draw.c' object='ref_gl/alienarena-r_draw.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_draw.obj `if test -f 'ref_gl/r_draw.c'; then $(CYGPATH_W) 'ref_gl/r_draw.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_draw.c'; fi` + +ref_gl/alienarena-r_image.o: ref_gl/r_image.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_image.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_image.Tpo -c -o ref_gl/alienarena-r_image.o `test -f 'ref_gl/r_image.c' || echo '$(srcdir)/'`ref_gl/r_image.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_image.Tpo ref_gl/$(DEPDIR)/alienarena-r_image.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_image.c' object='ref_gl/alienarena-r_image.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_image.o `test -f 'ref_gl/r_image.c' || echo '$(srcdir)/'`ref_gl/r_image.c + +ref_gl/alienarena-r_image.obj: ref_gl/r_image.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_image.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_image.Tpo -c -o ref_gl/alienarena-r_image.obj `if test -f 'ref_gl/r_image.c'; then $(CYGPATH_W) 'ref_gl/r_image.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_image.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_image.Tpo ref_gl/$(DEPDIR)/alienarena-r_image.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_image.c' object='ref_gl/alienarena-r_image.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_image.obj `if test -f 'ref_gl/r_image.c'; then $(CYGPATH_W) 'ref_gl/r_image.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_image.c'; fi` + +ref_gl/alienarena-r_iqm.o: ref_gl/r_iqm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_iqm.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_iqm.Tpo -c -o ref_gl/alienarena-r_iqm.o `test -f 'ref_gl/r_iqm.c' || echo '$(srcdir)/'`ref_gl/r_iqm.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_iqm.Tpo ref_gl/$(DEPDIR)/alienarena-r_iqm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_iqm.c' object='ref_gl/alienarena-r_iqm.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_iqm.o `test -f 'ref_gl/r_iqm.c' || echo '$(srcdir)/'`ref_gl/r_iqm.c + +ref_gl/alienarena-r_iqm.obj: ref_gl/r_iqm.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_iqm.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_iqm.Tpo -c -o ref_gl/alienarena-r_iqm.obj `if test -f 'ref_gl/r_iqm.c'; then $(CYGPATH_W) 'ref_gl/r_iqm.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_iqm.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_iqm.Tpo ref_gl/$(DEPDIR)/alienarena-r_iqm.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_iqm.c' object='ref_gl/alienarena-r_iqm.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_iqm.obj `if test -f 'ref_gl/r_iqm.c'; then $(CYGPATH_W) 'ref_gl/r_iqm.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_iqm.c'; fi` + +ref_gl/alienarena-r_light.o: ref_gl/r_light.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_light.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_light.Tpo -c -o ref_gl/alienarena-r_light.o `test -f 'ref_gl/r_light.c' || echo '$(srcdir)/'`ref_gl/r_light.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_light.Tpo ref_gl/$(DEPDIR)/alienarena-r_light.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_light.c' object='ref_gl/alienarena-r_light.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_light.o `test -f 'ref_gl/r_light.c' || echo '$(srcdir)/'`ref_gl/r_light.c + +ref_gl/alienarena-r_light.obj: ref_gl/r_light.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_light.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_light.Tpo -c -o ref_gl/alienarena-r_light.obj `if test -f 'ref_gl/r_light.c'; then $(CYGPATH_W) 'ref_gl/r_light.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_light.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_light.Tpo ref_gl/$(DEPDIR)/alienarena-r_light.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_light.c' object='ref_gl/alienarena-r_light.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_light.obj `if test -f 'ref_gl/r_light.c'; then $(CYGPATH_W) 'ref_gl/r_light.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_light.c'; fi` + +ref_gl/alienarena-r_main.o: ref_gl/r_main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_main.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_main.Tpo -c -o ref_gl/alienarena-r_main.o `test -f 'ref_gl/r_main.c' || echo '$(srcdir)/'`ref_gl/r_main.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_main.Tpo ref_gl/$(DEPDIR)/alienarena-r_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_main.c' object='ref_gl/alienarena-r_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_main.o `test -f 'ref_gl/r_main.c' || echo '$(srcdir)/'`ref_gl/r_main.c + +ref_gl/alienarena-r_main.obj: ref_gl/r_main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_main.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_main.Tpo -c -o ref_gl/alienarena-r_main.obj `if test -f 'ref_gl/r_main.c'; then $(CYGPATH_W) 'ref_gl/r_main.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_main.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_main.Tpo ref_gl/$(DEPDIR)/alienarena-r_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_main.c' object='ref_gl/alienarena-r_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_main.obj `if test -f 'ref_gl/r_main.c'; then $(CYGPATH_W) 'ref_gl/r_main.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_main.c'; fi` + +ref_gl/alienarena-r_math.o: ref_gl/r_math.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_math.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_math.Tpo -c -o ref_gl/alienarena-r_math.o `test -f 'ref_gl/r_math.c' || echo '$(srcdir)/'`ref_gl/r_math.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_math.Tpo ref_gl/$(DEPDIR)/alienarena-r_math.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_math.c' object='ref_gl/alienarena-r_math.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_math.o `test -f 'ref_gl/r_math.c' || echo '$(srcdir)/'`ref_gl/r_math.c + +ref_gl/alienarena-r_math.obj: ref_gl/r_math.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_math.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_math.Tpo -c -o ref_gl/alienarena-r_math.obj `if test -f 'ref_gl/r_math.c'; then $(CYGPATH_W) 'ref_gl/r_math.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_math.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_math.Tpo ref_gl/$(DEPDIR)/alienarena-r_math.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_math.c' object='ref_gl/alienarena-r_math.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_math.obj `if test -f 'ref_gl/r_math.c'; then $(CYGPATH_W) 'ref_gl/r_math.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_math.c'; fi` + +ref_gl/alienarena-r_mesh.o: ref_gl/r_mesh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_mesh.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_mesh.Tpo -c -o ref_gl/alienarena-r_mesh.o `test -f 'ref_gl/r_mesh.c' || echo '$(srcdir)/'`ref_gl/r_mesh.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_mesh.Tpo ref_gl/$(DEPDIR)/alienarena-r_mesh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_mesh.c' object='ref_gl/alienarena-r_mesh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_mesh.o `test -f 'ref_gl/r_mesh.c' || echo '$(srcdir)/'`ref_gl/r_mesh.c + +ref_gl/alienarena-r_mesh.obj: ref_gl/r_mesh.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_mesh.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_mesh.Tpo -c -o ref_gl/alienarena-r_mesh.obj `if test -f 'ref_gl/r_mesh.c'; then $(CYGPATH_W) 'ref_gl/r_mesh.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_mesh.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_mesh.Tpo ref_gl/$(DEPDIR)/alienarena-r_mesh.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_mesh.c' object='ref_gl/alienarena-r_mesh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_mesh.obj `if test -f 'ref_gl/r_mesh.c'; then $(CYGPATH_W) 'ref_gl/r_mesh.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_mesh.c'; fi` + +ref_gl/alienarena-r_misc.o: ref_gl/r_misc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_misc.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_misc.Tpo -c -o ref_gl/alienarena-r_misc.o `test -f 'ref_gl/r_misc.c' || echo '$(srcdir)/'`ref_gl/r_misc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_misc.Tpo ref_gl/$(DEPDIR)/alienarena-r_misc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_misc.c' object='ref_gl/alienarena-r_misc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_misc.o `test -f 'ref_gl/r_misc.c' || echo '$(srcdir)/'`ref_gl/r_misc.c + +ref_gl/alienarena-r_misc.obj: ref_gl/r_misc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_misc.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_misc.Tpo -c -o ref_gl/alienarena-r_misc.obj `if test -f 'ref_gl/r_misc.c'; then $(CYGPATH_W) 'ref_gl/r_misc.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_misc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_misc.Tpo ref_gl/$(DEPDIR)/alienarena-r_misc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_misc.c' object='ref_gl/alienarena-r_misc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_misc.obj `if test -f 'ref_gl/r_misc.c'; then $(CYGPATH_W) 'ref_gl/r_misc.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_misc.c'; fi` + +ref_gl/alienarena-r_model.o: ref_gl/r_model.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_model.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_model.Tpo -c -o ref_gl/alienarena-r_model.o `test -f 'ref_gl/r_model.c' || echo '$(srcdir)/'`ref_gl/r_model.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_model.Tpo ref_gl/$(DEPDIR)/alienarena-r_model.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_model.c' object='ref_gl/alienarena-r_model.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_model.o `test -f 'ref_gl/r_model.c' || echo '$(srcdir)/'`ref_gl/r_model.c + +ref_gl/alienarena-r_model.obj: ref_gl/r_model.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_model.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_model.Tpo -c -o ref_gl/alienarena-r_model.obj `if test -f 'ref_gl/r_model.c'; then $(CYGPATH_W) 'ref_gl/r_model.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_model.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_model.Tpo ref_gl/$(DEPDIR)/alienarena-r_model.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_model.c' object='ref_gl/alienarena-r_model.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_model.obj `if test -f 'ref_gl/r_model.c'; then $(CYGPATH_W) 'ref_gl/r_model.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_model.c'; fi` + +ref_gl/alienarena-r_particle.o: ref_gl/r_particle.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_particle.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_particle.Tpo -c -o ref_gl/alienarena-r_particle.o `test -f 'ref_gl/r_particle.c' || echo '$(srcdir)/'`ref_gl/r_particle.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_particle.Tpo ref_gl/$(DEPDIR)/alienarena-r_particle.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_particle.c' object='ref_gl/alienarena-r_particle.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_particle.o `test -f 'ref_gl/r_particle.c' || echo '$(srcdir)/'`ref_gl/r_particle.c + +ref_gl/alienarena-r_particle.obj: ref_gl/r_particle.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_particle.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_particle.Tpo -c -o ref_gl/alienarena-r_particle.obj `if test -f 'ref_gl/r_particle.c'; then $(CYGPATH_W) 'ref_gl/r_particle.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_particle.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_particle.Tpo ref_gl/$(DEPDIR)/alienarena-r_particle.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_particle.c' object='ref_gl/alienarena-r_particle.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_particle.obj `if test -f 'ref_gl/r_particle.c'; then $(CYGPATH_W) 'ref_gl/r_particle.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_particle.c'; fi` + +ref_gl/alienarena-r_postprocess.o: ref_gl/r_postprocess.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_postprocess.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_postprocess.Tpo -c -o ref_gl/alienarena-r_postprocess.o `test -f 'ref_gl/r_postprocess.c' || echo '$(srcdir)/'`ref_gl/r_postprocess.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_postprocess.Tpo ref_gl/$(DEPDIR)/alienarena-r_postprocess.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_postprocess.c' object='ref_gl/alienarena-r_postprocess.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_postprocess.o `test -f 'ref_gl/r_postprocess.c' || echo '$(srcdir)/'`ref_gl/r_postprocess.c + +ref_gl/alienarena-r_postprocess.obj: ref_gl/r_postprocess.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_postprocess.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_postprocess.Tpo -c -o ref_gl/alienarena-r_postprocess.obj `if test -f 'ref_gl/r_postprocess.c'; then $(CYGPATH_W) 'ref_gl/r_postprocess.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_postprocess.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_postprocess.Tpo ref_gl/$(DEPDIR)/alienarena-r_postprocess.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_postprocess.c' object='ref_gl/alienarena-r_postprocess.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_postprocess.obj `if test -f 'ref_gl/r_postprocess.c'; then $(CYGPATH_W) 'ref_gl/r_postprocess.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_postprocess.c'; fi` + +ref_gl/alienarena-r_program.o: ref_gl/r_program.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_program.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_program.Tpo -c -o ref_gl/alienarena-r_program.o `test -f 'ref_gl/r_program.c' || echo '$(srcdir)/'`ref_gl/r_program.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_program.Tpo ref_gl/$(DEPDIR)/alienarena-r_program.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_program.c' object='ref_gl/alienarena-r_program.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_program.o `test -f 'ref_gl/r_program.c' || echo '$(srcdir)/'`ref_gl/r_program.c + +ref_gl/alienarena-r_program.obj: ref_gl/r_program.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_program.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_program.Tpo -c -o ref_gl/alienarena-r_program.obj `if test -f 'ref_gl/r_program.c'; then $(CYGPATH_W) 'ref_gl/r_program.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_program.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_program.Tpo ref_gl/$(DEPDIR)/alienarena-r_program.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_program.c' object='ref_gl/alienarena-r_program.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_program.obj `if test -f 'ref_gl/r_program.c'; then $(CYGPATH_W) 'ref_gl/r_program.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_program.c'; fi` + +ref_gl/alienarena-r_ragdoll.o: ref_gl/r_ragdoll.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_ragdoll.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_ragdoll.Tpo -c -o ref_gl/alienarena-r_ragdoll.o `test -f 'ref_gl/r_ragdoll.c' || echo '$(srcdir)/'`ref_gl/r_ragdoll.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_ragdoll.Tpo ref_gl/$(DEPDIR)/alienarena-r_ragdoll.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_ragdoll.c' object='ref_gl/alienarena-r_ragdoll.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_ragdoll.o `test -f 'ref_gl/r_ragdoll.c' || echo '$(srcdir)/'`ref_gl/r_ragdoll.c + +ref_gl/alienarena-r_ragdoll.obj: ref_gl/r_ragdoll.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_ragdoll.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_ragdoll.Tpo -c -o ref_gl/alienarena-r_ragdoll.obj `if test -f 'ref_gl/r_ragdoll.c'; then $(CYGPATH_W) 'ref_gl/r_ragdoll.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_ragdoll.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_ragdoll.Tpo ref_gl/$(DEPDIR)/alienarena-r_ragdoll.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_ragdoll.c' object='ref_gl/alienarena-r_ragdoll.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_ragdoll.obj `if test -f 'ref_gl/r_ragdoll.c'; then $(CYGPATH_W) 'ref_gl/r_ragdoll.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_ragdoll.c'; fi` + +ref_gl/alienarena-r_script.o: ref_gl/r_script.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_script.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_script.Tpo -c -o ref_gl/alienarena-r_script.o `test -f 'ref_gl/r_script.c' || echo '$(srcdir)/'`ref_gl/r_script.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_script.Tpo ref_gl/$(DEPDIR)/alienarena-r_script.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_script.c' object='ref_gl/alienarena-r_script.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_script.o `test -f 'ref_gl/r_script.c' || echo '$(srcdir)/'`ref_gl/r_script.c + +ref_gl/alienarena-r_script.obj: ref_gl/r_script.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_script.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_script.Tpo -c -o ref_gl/alienarena-r_script.obj `if test -f 'ref_gl/r_script.c'; then $(CYGPATH_W) 'ref_gl/r_script.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_script.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_script.Tpo ref_gl/$(DEPDIR)/alienarena-r_script.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_script.c' object='ref_gl/alienarena-r_script.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_script.obj `if test -f 'ref_gl/r_script.c'; then $(CYGPATH_W) 'ref_gl/r_script.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_script.c'; fi` + +ref_gl/alienarena-r_shadowmaps.o: ref_gl/r_shadowmaps.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_shadowmaps.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_shadowmaps.Tpo -c -o ref_gl/alienarena-r_shadowmaps.o `test -f 'ref_gl/r_shadowmaps.c' || echo '$(srcdir)/'`ref_gl/r_shadowmaps.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_shadowmaps.Tpo ref_gl/$(DEPDIR)/alienarena-r_shadowmaps.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_shadowmaps.c' object='ref_gl/alienarena-r_shadowmaps.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_shadowmaps.o `test -f 'ref_gl/r_shadowmaps.c' || echo '$(srcdir)/'`ref_gl/r_shadowmaps.c + +ref_gl/alienarena-r_shadowmaps.obj: ref_gl/r_shadowmaps.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_shadowmaps.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_shadowmaps.Tpo -c -o ref_gl/alienarena-r_shadowmaps.obj `if test -f 'ref_gl/r_shadowmaps.c'; then $(CYGPATH_W) 'ref_gl/r_shadowmaps.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_shadowmaps.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_shadowmaps.Tpo ref_gl/$(DEPDIR)/alienarena-r_shadowmaps.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_shadowmaps.c' object='ref_gl/alienarena-r_shadowmaps.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_shadowmaps.obj `if test -f 'ref_gl/r_shadowmaps.c'; then $(CYGPATH_W) 'ref_gl/r_shadowmaps.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_shadowmaps.c'; fi` + +ref_gl/alienarena-r_shadows.o: ref_gl/r_shadows.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_shadows.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_shadows.Tpo -c -o ref_gl/alienarena-r_shadows.o `test -f 'ref_gl/r_shadows.c' || echo '$(srcdir)/'`ref_gl/r_shadows.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_shadows.Tpo ref_gl/$(DEPDIR)/alienarena-r_shadows.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_shadows.c' object='ref_gl/alienarena-r_shadows.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_shadows.o `test -f 'ref_gl/r_shadows.c' || echo '$(srcdir)/'`ref_gl/r_shadows.c + +ref_gl/alienarena-r_shadows.obj: ref_gl/r_shadows.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_shadows.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_shadows.Tpo -c -o ref_gl/alienarena-r_shadows.obj `if test -f 'ref_gl/r_shadows.c'; then $(CYGPATH_W) 'ref_gl/r_shadows.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_shadows.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_shadows.Tpo ref_gl/$(DEPDIR)/alienarena-r_shadows.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_shadows.c' object='ref_gl/alienarena-r_shadows.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_shadows.obj `if test -f 'ref_gl/r_shadows.c'; then $(CYGPATH_W) 'ref_gl/r_shadows.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_shadows.c'; fi` + +ref_gl/alienarena-r_surf.o: ref_gl/r_surf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_surf.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_surf.Tpo -c -o ref_gl/alienarena-r_surf.o `test -f 'ref_gl/r_surf.c' || echo '$(srcdir)/'`ref_gl/r_surf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_surf.Tpo ref_gl/$(DEPDIR)/alienarena-r_surf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_surf.c' object='ref_gl/alienarena-r_surf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_surf.o `test -f 'ref_gl/r_surf.c' || echo '$(srcdir)/'`ref_gl/r_surf.c + +ref_gl/alienarena-r_surf.obj: ref_gl/r_surf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_surf.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_surf.Tpo -c -o ref_gl/alienarena-r_surf.obj `if test -f 'ref_gl/r_surf.c'; then $(CYGPATH_W) 'ref_gl/r_surf.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_surf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_surf.Tpo ref_gl/$(DEPDIR)/alienarena-r_surf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_surf.c' object='ref_gl/alienarena-r_surf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_surf.obj `if test -f 'ref_gl/r_surf.c'; then $(CYGPATH_W) 'ref_gl/r_surf.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_surf.c'; fi` + +ref_gl/alienarena-r_text.o: ref_gl/r_text.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_text.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_text.Tpo -c -o ref_gl/alienarena-r_text.o `test -f 'ref_gl/r_text.c' || echo '$(srcdir)/'`ref_gl/r_text.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_text.Tpo ref_gl/$(DEPDIR)/alienarena-r_text.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_text.c' object='ref_gl/alienarena-r_text.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/odesrc/libode_a-fastlsolve.obj `if test -f 'unix/odesrc/fastlsolve.c'; then $(CYGPATH_W) 'unix/odesrc/fastlsolve.c'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/fastlsolve.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_text.o `test -f 'ref_gl/r_text.c' || echo '$(srcdir)/'`ref_gl/r_text.c -client/crx-cl_ents.o: client/cl_ents.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_ents.o -MD -MP -MF client/$(DEPDIR)/crx-cl_ents.Tpo -c -o client/crx-cl_ents.o `test -f 'client/cl_ents.c' || echo '$(srcdir)/'`client/cl_ents.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_ents.Tpo client/$(DEPDIR)/crx-cl_ents.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_ents.c' object='client/crx-cl_ents.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_ents.o `test -f 'client/cl_ents.c' || echo '$(srcdir)/'`client/cl_ents.c - -client/crx-cl_ents.obj: client/cl_ents.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_ents.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_ents.Tpo -c -o client/crx-cl_ents.obj `if test -f 'client/cl_ents.c'; then $(CYGPATH_W) 'client/cl_ents.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_ents.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_ents.Tpo client/$(DEPDIR)/crx-cl_ents.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_ents.c' object='client/crx-cl_ents.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_ents.obj `if test -f 'client/cl_ents.c'; then $(CYGPATH_W) 'client/cl_ents.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_ents.c'; fi` - -client/crx-cl_fx.o: client/cl_fx.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_fx.o -MD -MP -MF client/$(DEPDIR)/crx-cl_fx.Tpo -c -o client/crx-cl_fx.o `test -f 'client/cl_fx.c' || echo '$(srcdir)/'`client/cl_fx.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_fx.Tpo client/$(DEPDIR)/crx-cl_fx.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_fx.c' object='client/crx-cl_fx.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_fx.o `test -f 'client/cl_fx.c' || echo '$(srcdir)/'`client/cl_fx.c - -client/crx-cl_fx.obj: client/cl_fx.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_fx.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_fx.Tpo -c -o client/crx-cl_fx.obj `if test -f 'client/cl_fx.c'; then $(CYGPATH_W) 'client/cl_fx.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_fx.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_fx.Tpo client/$(DEPDIR)/crx-cl_fx.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_fx.c' object='client/crx-cl_fx.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_fx.obj `if test -f 'client/cl_fx.c'; then $(CYGPATH_W) 'client/cl_fx.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_fx.c'; fi` - -client/crx-cl_http.o: client/cl_http.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_http.o -MD -MP -MF client/$(DEPDIR)/crx-cl_http.Tpo -c -o client/crx-cl_http.o `test -f 'client/cl_http.c' || echo '$(srcdir)/'`client/cl_http.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_http.Tpo client/$(DEPDIR)/crx-cl_http.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_http.c' object='client/crx-cl_http.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_http.o `test -f 'client/cl_http.c' || echo '$(srcdir)/'`client/cl_http.c - -client/crx-cl_http.obj: client/cl_http.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_http.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_http.Tpo -c -o client/crx-cl_http.obj `if test -f 'client/cl_http.c'; then $(CYGPATH_W) 'client/cl_http.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_http.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_http.Tpo client/$(DEPDIR)/crx-cl_http.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_http.c' object='client/crx-cl_http.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_http.obj `if test -f 'client/cl_http.c'; then $(CYGPATH_W) 'client/cl_http.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_http.c'; fi` - -client/crx-cl_input.o: client/cl_input.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_input.o -MD -MP -MF client/$(DEPDIR)/crx-cl_input.Tpo -c -o client/crx-cl_input.o `test -f 'client/cl_input.c' || echo '$(srcdir)/'`client/cl_input.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_input.Tpo client/$(DEPDIR)/crx-cl_input.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_input.c' object='client/crx-cl_input.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_input.o `test -f 'client/cl_input.c' || echo '$(srcdir)/'`client/cl_input.c - -client/crx-cl_input.obj: client/cl_input.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_input.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_input.Tpo -c -o client/crx-cl_input.obj `if test -f 'client/cl_input.c'; then $(CYGPATH_W) 'client/cl_input.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_input.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_input.Tpo client/$(DEPDIR)/crx-cl_input.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_input.c' object='client/crx-cl_input.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_input.obj `if test -f 'client/cl_input.c'; then $(CYGPATH_W) 'client/cl_input.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_input.c'; fi` - -client/crx-cl_inv.o: client/cl_inv.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_inv.o -MD -MP -MF client/$(DEPDIR)/crx-cl_inv.Tpo -c -o client/crx-cl_inv.o `test -f 'client/cl_inv.c' || echo '$(srcdir)/'`client/cl_inv.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_inv.Tpo client/$(DEPDIR)/crx-cl_inv.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_inv.c' object='client/crx-cl_inv.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_inv.o `test -f 'client/cl_inv.c' || echo '$(srcdir)/'`client/cl_inv.c - -client/crx-cl_inv.obj: client/cl_inv.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_inv.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_inv.Tpo -c -o client/crx-cl_inv.obj `if test -f 'client/cl_inv.c'; then $(CYGPATH_W) 'client/cl_inv.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_inv.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_inv.Tpo client/$(DEPDIR)/crx-cl_inv.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_inv.c' object='client/crx-cl_inv.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_inv.obj `if test -f 'client/cl_inv.c'; then $(CYGPATH_W) 'client/cl_inv.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_inv.c'; fi` - -client/crx-cl_irc.o: client/cl_irc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_irc.o -MD -MP -MF client/$(DEPDIR)/crx-cl_irc.Tpo -c -o client/crx-cl_irc.o `test -f 'client/cl_irc.c' || echo '$(srcdir)/'`client/cl_irc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_irc.Tpo client/$(DEPDIR)/crx-cl_irc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_irc.c' object='client/crx-cl_irc.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_irc.o `test -f 'client/cl_irc.c' || echo '$(srcdir)/'`client/cl_irc.c - -client/crx-cl_irc.obj: client/cl_irc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_irc.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_irc.Tpo -c -o client/crx-cl_irc.obj `if test -f 'client/cl_irc.c'; then $(CYGPATH_W) 'client/cl_irc.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_irc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_irc.Tpo client/$(DEPDIR)/crx-cl_irc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_irc.c' object='client/crx-cl_irc.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_irc.obj `if test -f 'client/cl_irc.c'; then $(CYGPATH_W) 'client/cl_irc.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_irc.c'; fi` - -client/crx-cl_main.o: client/cl_main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_main.o -MD -MP -MF client/$(DEPDIR)/crx-cl_main.Tpo -c -o client/crx-cl_main.o `test -f 'client/cl_main.c' || echo '$(srcdir)/'`client/cl_main.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_main.Tpo client/$(DEPDIR)/crx-cl_main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_main.c' object='client/crx-cl_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_main.o `test -f 'client/cl_main.c' || echo '$(srcdir)/'`client/cl_main.c - -client/crx-cl_main.obj: client/cl_main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_main.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_main.Tpo -c -o client/crx-cl_main.obj `if test -f 'client/cl_main.c'; then $(CYGPATH_W) 'client/cl_main.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_main.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_main.Tpo client/$(DEPDIR)/crx-cl_main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_main.c' object='client/crx-cl_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_main.obj `if test -f 'client/cl_main.c'; then $(CYGPATH_W) 'client/cl_main.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_main.c'; fi` - -client/crx-cl_parse.o: client/cl_parse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_parse.o -MD -MP -MF client/$(DEPDIR)/crx-cl_parse.Tpo -c -o client/crx-cl_parse.o `test -f 'client/cl_parse.c' || echo '$(srcdir)/'`client/cl_parse.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_parse.Tpo client/$(DEPDIR)/crx-cl_parse.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_parse.c' object='client/crx-cl_parse.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_parse.o `test -f 'client/cl_parse.c' || echo '$(srcdir)/'`client/cl_parse.c - -client/crx-cl_parse.obj: client/cl_parse.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_parse.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_parse.Tpo -c -o client/crx-cl_parse.obj `if test -f 'client/cl_parse.c'; then $(CYGPATH_W) 'client/cl_parse.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_parse.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_parse.Tpo client/$(DEPDIR)/crx-cl_parse.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_parse.c' object='client/crx-cl_parse.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_parse.obj `if test -f 'client/cl_parse.c'; then $(CYGPATH_W) 'client/cl_parse.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_parse.c'; fi` - -client/crx-cl_pred.o: client/cl_pred.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_pred.o -MD -MP -MF client/$(DEPDIR)/crx-cl_pred.Tpo -c -o client/crx-cl_pred.o `test -f 'client/cl_pred.c' || echo '$(srcdir)/'`client/cl_pred.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_pred.Tpo client/$(DEPDIR)/crx-cl_pred.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_pred.c' object='client/crx-cl_pred.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_pred.o `test -f 'client/cl_pred.c' || echo '$(srcdir)/'`client/cl_pred.c - -client/crx-cl_pred.obj: client/cl_pred.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_pred.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_pred.Tpo -c -o client/crx-cl_pred.obj `if test -f 'client/cl_pred.c'; then $(CYGPATH_W) 'client/cl_pred.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_pred.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_pred.Tpo client/$(DEPDIR)/crx-cl_pred.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_pred.c' object='client/crx-cl_pred.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_pred.obj `if test -f 'client/cl_pred.c'; then $(CYGPATH_W) 'client/cl_pred.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_pred.c'; fi` - -client/crx-cl_scrn.o: client/cl_scrn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_scrn.o -MD -MP -MF client/$(DEPDIR)/crx-cl_scrn.Tpo -c -o client/crx-cl_scrn.o `test -f 'client/cl_scrn.c' || echo '$(srcdir)/'`client/cl_scrn.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_scrn.Tpo client/$(DEPDIR)/crx-cl_scrn.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_scrn.c' object='client/crx-cl_scrn.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_scrn.o `test -f 'client/cl_scrn.c' || echo '$(srcdir)/'`client/cl_scrn.c - -client/crx-cl_scrn.obj: client/cl_scrn.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_scrn.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_scrn.Tpo -c -o client/crx-cl_scrn.obj `if test -f 'client/cl_scrn.c'; then $(CYGPATH_W) 'client/cl_scrn.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_scrn.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_scrn.Tpo client/$(DEPDIR)/crx-cl_scrn.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_scrn.c' object='client/crx-cl_scrn.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_scrn.obj `if test -f 'client/cl_scrn.c'; then $(CYGPATH_W) 'client/cl_scrn.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_scrn.c'; fi` - -client/crx-cl_stats.o: client/cl_stats.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_stats.o -MD -MP -MF client/$(DEPDIR)/crx-cl_stats.Tpo -c -o client/crx-cl_stats.o `test -f 'client/cl_stats.c' || echo '$(srcdir)/'`client/cl_stats.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_stats.Tpo client/$(DEPDIR)/crx-cl_stats.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_stats.c' object='client/crx-cl_stats.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_stats.o `test -f 'client/cl_stats.c' || echo '$(srcdir)/'`client/cl_stats.c - -client/crx-cl_stats.obj: client/cl_stats.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_stats.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_stats.Tpo -c -o client/crx-cl_stats.obj `if test -f 'client/cl_stats.c'; then $(CYGPATH_W) 'client/cl_stats.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_stats.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_stats.Tpo client/$(DEPDIR)/crx-cl_stats.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_stats.c' object='client/crx-cl_stats.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_stats.obj `if test -f 'client/cl_stats.c'; then $(CYGPATH_W) 'client/cl_stats.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_stats.c'; fi` - -client/crx-cl_updates.o: client/cl_updates.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_updates.o -MD -MP -MF client/$(DEPDIR)/crx-cl_updates.Tpo -c -o client/crx-cl_updates.o `test -f 'client/cl_updates.c' || echo '$(srcdir)/'`client/cl_updates.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_updates.Tpo client/$(DEPDIR)/crx-cl_updates.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_updates.c' object='client/crx-cl_updates.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_updates.o `test -f 'client/cl_updates.c' || echo '$(srcdir)/'`client/cl_updates.c - -client/crx-cl_updates.obj: client/cl_updates.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_updates.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_updates.Tpo -c -o client/crx-cl_updates.obj `if test -f 'client/cl_updates.c'; then $(CYGPATH_W) 'client/cl_updates.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_updates.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_updates.Tpo client/$(DEPDIR)/crx-cl_updates.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_updates.c' object='client/crx-cl_updates.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_updates.obj `if test -f 'client/cl_updates.c'; then $(CYGPATH_W) 'client/cl_updates.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_updates.c'; fi` - -client/crx-cl_tent.o: client/cl_tent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_tent.o -MD -MP -MF client/$(DEPDIR)/crx-cl_tent.Tpo -c -o client/crx-cl_tent.o `test -f 'client/cl_tent.c' || echo '$(srcdir)/'`client/cl_tent.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_tent.Tpo client/$(DEPDIR)/crx-cl_tent.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_tent.c' object='client/crx-cl_tent.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_tent.o `test -f 'client/cl_tent.c' || echo '$(srcdir)/'`client/cl_tent.c - -client/crx-cl_tent.obj: client/cl_tent.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_tent.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_tent.Tpo -c -o client/crx-cl_tent.obj `if test -f 'client/cl_tent.c'; then $(CYGPATH_W) 'client/cl_tent.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_tent.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_tent.Tpo client/$(DEPDIR)/crx-cl_tent.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_tent.c' object='client/crx-cl_tent.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_tent.obj `if test -f 'client/cl_tent.c'; then $(CYGPATH_W) 'client/cl_tent.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_tent.c'; fi` - -client/crx-cl_view.o: client/cl_view.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_view.o -MD -MP -MF client/$(DEPDIR)/crx-cl_view.Tpo -c -o client/crx-cl_view.o `test -f 'client/cl_view.c' || echo '$(srcdir)/'`client/cl_view.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_view.Tpo client/$(DEPDIR)/crx-cl_view.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_view.c' object='client/crx-cl_view.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_view.o `test -f 'client/cl_view.c' || echo '$(srcdir)/'`client/cl_view.c - -client/crx-cl_view.obj: client/cl_view.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-cl_view.obj -MD -MP -MF client/$(DEPDIR)/crx-cl_view.Tpo -c -o client/crx-cl_view.obj `if test -f 'client/cl_view.c'; then $(CYGPATH_W) 'client/cl_view.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_view.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-cl_view.Tpo client/$(DEPDIR)/crx-cl_view.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/cl_view.c' object='client/crx-cl_view.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-cl_view.obj `if test -f 'client/cl_view.c'; then $(CYGPATH_W) 'client/cl_view.c'; else $(CYGPATH_W) '$(srcdir)/client/cl_view.c'; fi` - -client/crx-console.o: client/console.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-console.o -MD -MP -MF client/$(DEPDIR)/crx-console.Tpo -c -o client/crx-console.o `test -f 'client/console.c' || echo '$(srcdir)/'`client/console.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-console.Tpo client/$(DEPDIR)/crx-console.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/console.c' object='client/crx-console.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-console.o `test -f 'client/console.c' || echo '$(srcdir)/'`client/console.c - -client/crx-console.obj: client/console.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-console.obj -MD -MP -MF client/$(DEPDIR)/crx-console.Tpo -c -o client/crx-console.obj `if test -f 'client/console.c'; then $(CYGPATH_W) 'client/console.c'; else $(CYGPATH_W) '$(srcdir)/client/console.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-console.Tpo client/$(DEPDIR)/crx-console.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/console.c' object='client/crx-console.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-console.obj `if test -f 'client/console.c'; then $(CYGPATH_W) 'client/console.c'; else $(CYGPATH_W) '$(srcdir)/client/console.c'; fi` - -client/crx-keys.o: client/keys.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-keys.o -MD -MP -MF client/$(DEPDIR)/crx-keys.Tpo -c -o client/crx-keys.o `test -f 'client/keys.c' || echo '$(srcdir)/'`client/keys.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-keys.Tpo client/$(DEPDIR)/crx-keys.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/keys.c' object='client/crx-keys.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-keys.o `test -f 'client/keys.c' || echo '$(srcdir)/'`client/keys.c - -client/crx-keys.obj: client/keys.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-keys.obj -MD -MP -MF client/$(DEPDIR)/crx-keys.Tpo -c -o client/crx-keys.obj `if test -f 'client/keys.c'; then $(CYGPATH_W) 'client/keys.c'; else $(CYGPATH_W) '$(srcdir)/client/keys.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-keys.Tpo client/$(DEPDIR)/crx-keys.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/keys.c' object='client/crx-keys.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-keys.obj `if test -f 'client/keys.c'; then $(CYGPATH_W) 'client/keys.c'; else $(CYGPATH_W) '$(srcdir)/client/keys.c'; fi` - -client/crx-menu.o: client/menu.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-menu.o -MD -MP -MF client/$(DEPDIR)/crx-menu.Tpo -c -o client/crx-menu.o `test -f 'client/menu.c' || echo '$(srcdir)/'`client/menu.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-menu.Tpo client/$(DEPDIR)/crx-menu.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/menu.c' object='client/crx-menu.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-menu.o `test -f 'client/menu.c' || echo '$(srcdir)/'`client/menu.c - -client/crx-menu.obj: client/menu.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-menu.obj -MD -MP -MF client/$(DEPDIR)/crx-menu.Tpo -c -o client/crx-menu.obj `if test -f 'client/menu.c'; then $(CYGPATH_W) 'client/menu.c'; else $(CYGPATH_W) '$(srcdir)/client/menu.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-menu.Tpo client/$(DEPDIR)/crx-menu.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/menu.c' object='client/crx-menu.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-menu.obj `if test -f 'client/menu.c'; then $(CYGPATH_W) 'client/menu.c'; else $(CYGPATH_W) '$(srcdir)/client/menu.c'; fi` - -client/crx-qal.o: client/qal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-qal.o -MD -MP -MF client/$(DEPDIR)/crx-qal.Tpo -c -o client/crx-qal.o `test -f 'client/qal.c' || echo '$(srcdir)/'`client/qal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-qal.Tpo client/$(DEPDIR)/crx-qal.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/qal.c' object='client/crx-qal.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-qal.o `test -f 'client/qal.c' || echo '$(srcdir)/'`client/qal.c - -client/crx-qal.obj: client/qal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-qal.obj -MD -MP -MF client/$(DEPDIR)/crx-qal.Tpo -c -o client/crx-qal.obj `if test -f 'client/qal.c'; then $(CYGPATH_W) 'client/qal.c'; else $(CYGPATH_W) '$(srcdir)/client/qal.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-qal.Tpo client/$(DEPDIR)/crx-qal.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/qal.c' object='client/crx-qal.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-qal.obj `if test -f 'client/qal.c'; then $(CYGPATH_W) 'client/qal.c'; else $(CYGPATH_W) '$(srcdir)/client/qal.c'; fi` - -client/crx-qmenu.o: client/qmenu.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-qmenu.o -MD -MP -MF client/$(DEPDIR)/crx-qmenu.Tpo -c -o client/crx-qmenu.o `test -f 'client/qmenu.c' || echo '$(srcdir)/'`client/qmenu.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-qmenu.Tpo client/$(DEPDIR)/crx-qmenu.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/qmenu.c' object='client/crx-qmenu.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-qmenu.o `test -f 'client/qmenu.c' || echo '$(srcdir)/'`client/qmenu.c - -client/crx-qmenu.obj: client/qmenu.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-qmenu.obj -MD -MP -MF client/$(DEPDIR)/crx-qmenu.Tpo -c -o client/crx-qmenu.obj `if test -f 'client/qmenu.c'; then $(CYGPATH_W) 'client/qmenu.c'; else $(CYGPATH_W) '$(srcdir)/client/qmenu.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-qmenu.Tpo client/$(DEPDIR)/crx-qmenu.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/qmenu.c' object='client/crx-qmenu.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-qmenu.obj `if test -f 'client/qmenu.c'; then $(CYGPATH_W) 'client/qmenu.c'; else $(CYGPATH_W) '$(srcdir)/client/qmenu.c'; fi` - -client/crx-snd_file.o: client/snd_file.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-snd_file.o -MD -MP -MF client/$(DEPDIR)/crx-snd_file.Tpo -c -o client/crx-snd_file.o `test -f 'client/snd_file.c' || echo '$(srcdir)/'`client/snd_file.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-snd_file.Tpo client/$(DEPDIR)/crx-snd_file.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/snd_file.c' object='client/crx-snd_file.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-snd_file.o `test -f 'client/snd_file.c' || echo '$(srcdir)/'`client/snd_file.c - -client/crx-snd_file.obj: client/snd_file.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-snd_file.obj -MD -MP -MF client/$(DEPDIR)/crx-snd_file.Tpo -c -o client/crx-snd_file.obj `if test -f 'client/snd_file.c'; then $(CYGPATH_W) 'client/snd_file.c'; else $(CYGPATH_W) '$(srcdir)/client/snd_file.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-snd_file.Tpo client/$(DEPDIR)/crx-snd_file.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/snd_file.c' object='client/crx-snd_file.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-snd_file.obj `if test -f 'client/snd_file.c'; then $(CYGPATH_W) 'client/snd_file.c'; else $(CYGPATH_W) '$(srcdir)/client/snd_file.c'; fi` - -client/crx-snd_openal.o: client/snd_openal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-snd_openal.o -MD -MP -MF client/$(DEPDIR)/crx-snd_openal.Tpo -c -o client/crx-snd_openal.o `test -f 'client/snd_openal.c' || echo '$(srcdir)/'`client/snd_openal.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-snd_openal.Tpo client/$(DEPDIR)/crx-snd_openal.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/snd_openal.c' object='client/crx-snd_openal.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-snd_openal.o `test -f 'client/snd_openal.c' || echo '$(srcdir)/'`client/snd_openal.c - -client/crx-snd_openal.obj: client/snd_openal.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-snd_openal.obj -MD -MP -MF client/$(DEPDIR)/crx-snd_openal.Tpo -c -o client/crx-snd_openal.obj `if test -f 'client/snd_openal.c'; then $(CYGPATH_W) 'client/snd_openal.c'; else $(CYGPATH_W) '$(srcdir)/client/snd_openal.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-snd_openal.Tpo client/$(DEPDIR)/crx-snd_openal.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/snd_openal.c' object='client/crx-snd_openal.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-snd_openal.obj `if test -f 'client/snd_openal.c'; then $(CYGPATH_W) 'client/snd_openal.c'; else $(CYGPATH_W) '$(srcdir)/client/snd_openal.c'; fi` - -client/crx-vid_menu.o: client/vid_menu.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-vid_menu.o -MD -MP -MF client/$(DEPDIR)/crx-vid_menu.Tpo -c -o client/crx-vid_menu.o `test -f 'client/vid_menu.c' || echo '$(srcdir)/'`client/vid_menu.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-vid_menu.Tpo client/$(DEPDIR)/crx-vid_menu.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/vid_menu.c' object='client/crx-vid_menu.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-vid_menu.o `test -f 'client/vid_menu.c' || echo '$(srcdir)/'`client/vid_menu.c - -client/crx-vid_menu.obj: client/vid_menu.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT client/crx-vid_menu.obj -MD -MP -MF client/$(DEPDIR)/crx-vid_menu.Tpo -c -o client/crx-vid_menu.obj `if test -f 'client/vid_menu.c'; then $(CYGPATH_W) 'client/vid_menu.c'; else $(CYGPATH_W) '$(srcdir)/client/vid_menu.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) client/$(DEPDIR)/crx-vid_menu.Tpo client/$(DEPDIR)/crx-vid_menu.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='client/vid_menu.c' object='client/crx-vid_menu.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o client/crx-vid_menu.obj `if test -f 'client/vid_menu.c'; then $(CYGPATH_W) 'client/vid_menu.c'; else $(CYGPATH_W) '$(srcdir)/client/vid_menu.c'; fi` - -game/crx-q_shared.o: game/q_shared.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT game/crx-q_shared.o -MD -MP -MF game/$(DEPDIR)/crx-q_shared.Tpo -c -o game/crx-q_shared.o `test -f 'game/q_shared.c' || echo '$(srcdir)/'`game/q_shared.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) game/$(DEPDIR)/crx-q_shared.Tpo game/$(DEPDIR)/crx-q_shared.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='game/q_shared.c' object='game/crx-q_shared.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o game/crx-q_shared.o `test -f 'game/q_shared.c' || echo '$(srcdir)/'`game/q_shared.c - -game/crx-q_shared.obj: game/q_shared.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT game/crx-q_shared.obj -MD -MP -MF game/$(DEPDIR)/crx-q_shared.Tpo -c -o game/crx-q_shared.obj `if test -f 'game/q_shared.c'; then $(CYGPATH_W) 'game/q_shared.c'; else $(CYGPATH_W) '$(srcdir)/game/q_shared.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) game/$(DEPDIR)/crx-q_shared.Tpo game/$(DEPDIR)/crx-q_shared.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='game/q_shared.c' object='game/crx-q_shared.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o game/crx-q_shared.obj `if test -f 'game/q_shared.c'; then $(CYGPATH_W) 'game/q_shared.c'; else $(CYGPATH_W) '$(srcdir)/game/q_shared.c'; fi` - -qcommon/crx-cmd.o: qcommon/cmd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-cmd.o -MD -MP -MF qcommon/$(DEPDIR)/crx-cmd.Tpo -c -o qcommon/crx-cmd.o `test -f 'qcommon/cmd.c' || echo '$(srcdir)/'`qcommon/cmd.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-cmd.Tpo qcommon/$(DEPDIR)/crx-cmd.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cmd.c' object='qcommon/crx-cmd.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-cmd.o `test -f 'qcommon/cmd.c' || echo '$(srcdir)/'`qcommon/cmd.c - -qcommon/crx-cmd.obj: qcommon/cmd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-cmd.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-cmd.Tpo -c -o qcommon/crx-cmd.obj `if test -f 'qcommon/cmd.c'; then $(CYGPATH_W) 'qcommon/cmd.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmd.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-cmd.Tpo qcommon/$(DEPDIR)/crx-cmd.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cmd.c' object='qcommon/crx-cmd.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-cmd.obj `if test -f 'qcommon/cmd.c'; then $(CYGPATH_W) 'qcommon/cmd.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmd.c'; fi` - -qcommon/crx-cmodel.o: qcommon/cmodel.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-cmodel.o -MD -MP -MF qcommon/$(DEPDIR)/crx-cmodel.Tpo -c -o qcommon/crx-cmodel.o `test -f 'qcommon/cmodel.c' || echo '$(srcdir)/'`qcommon/cmodel.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-cmodel.Tpo qcommon/$(DEPDIR)/crx-cmodel.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cmodel.c' object='qcommon/crx-cmodel.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-cmodel.o `test -f 'qcommon/cmodel.c' || echo '$(srcdir)/'`qcommon/cmodel.c - -qcommon/crx-cmodel.obj: qcommon/cmodel.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-cmodel.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-cmodel.Tpo -c -o qcommon/crx-cmodel.obj `if test -f 'qcommon/cmodel.c'; then $(CYGPATH_W) 'qcommon/cmodel.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmodel.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-cmodel.Tpo qcommon/$(DEPDIR)/crx-cmodel.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cmodel.c' object='qcommon/crx-cmodel.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-cmodel.obj `if test -f 'qcommon/cmodel.c'; then $(CYGPATH_W) 'qcommon/cmodel.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmodel.c'; fi` - -qcommon/crx-common.o: qcommon/common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-common.o -MD -MP -MF qcommon/$(DEPDIR)/crx-common.Tpo -c -o qcommon/crx-common.o `test -f 'qcommon/common.c' || echo '$(srcdir)/'`qcommon/common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-common.Tpo qcommon/$(DEPDIR)/crx-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/common.c' object='qcommon/crx-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-common.o `test -f 'qcommon/common.c' || echo '$(srcdir)/'`qcommon/common.c - -qcommon/crx-common.obj: qcommon/common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-common.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-common.Tpo -c -o qcommon/crx-common.obj `if test -f 'qcommon/common.c'; then $(CYGPATH_W) 'qcommon/common.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-common.Tpo qcommon/$(DEPDIR)/crx-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/common.c' object='qcommon/crx-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-common.obj `if test -f 'qcommon/common.c'; then $(CYGPATH_W) 'qcommon/common.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/common.c'; fi` - -qcommon/crx-crc.o: qcommon/crc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-crc.o -MD -MP -MF qcommon/$(DEPDIR)/crx-crc.Tpo -c -o qcommon/crx-crc.o `test -f 'qcommon/crc.c' || echo '$(srcdir)/'`qcommon/crc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-crc.Tpo qcommon/$(DEPDIR)/crx-crc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/crc.c' object='qcommon/crx-crc.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-crc.o `test -f 'qcommon/crc.c' || echo '$(srcdir)/'`qcommon/crc.c - -qcommon/crx-crc.obj: qcommon/crc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-crc.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-crc.Tpo -c -o qcommon/crx-crc.obj `if test -f 'qcommon/crc.c'; then $(CYGPATH_W) 'qcommon/crc.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/crc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-crc.Tpo qcommon/$(DEPDIR)/crx-crc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/crc.c' object='qcommon/crx-crc.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-crc.obj `if test -f 'qcommon/crc.c'; then $(CYGPATH_W) 'qcommon/crc.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/crc.c'; fi` - -qcommon/crx-cvar.o: qcommon/cvar.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-cvar.o -MD -MP -MF qcommon/$(DEPDIR)/crx-cvar.Tpo -c -o qcommon/crx-cvar.o `test -f 'qcommon/cvar.c' || echo '$(srcdir)/'`qcommon/cvar.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-cvar.Tpo qcommon/$(DEPDIR)/crx-cvar.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cvar.c' object='qcommon/crx-cvar.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-cvar.o `test -f 'qcommon/cvar.c' || echo '$(srcdir)/'`qcommon/cvar.c - -qcommon/crx-cvar.obj: qcommon/cvar.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-cvar.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-cvar.Tpo -c -o qcommon/crx-cvar.obj `if test -f 'qcommon/cvar.c'; then $(CYGPATH_W) 'qcommon/cvar.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cvar.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-cvar.Tpo qcommon/$(DEPDIR)/crx-cvar.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cvar.c' object='qcommon/crx-cvar.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-cvar.obj `if test -f 'qcommon/cvar.c'; then $(CYGPATH_W) 'qcommon/cvar.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cvar.c'; fi` - -qcommon/crx-files.o: qcommon/files.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-files.o -MD -MP -MF qcommon/$(DEPDIR)/crx-files.Tpo -c -o qcommon/crx-files.o `test -f 'qcommon/files.c' || echo '$(srcdir)/'`qcommon/files.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-files.Tpo qcommon/$(DEPDIR)/crx-files.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/files.c' object='qcommon/crx-files.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-files.o `test -f 'qcommon/files.c' || echo '$(srcdir)/'`qcommon/files.c - -qcommon/crx-files.obj: qcommon/files.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-files.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-files.Tpo -c -o qcommon/crx-files.obj `if test -f 'qcommon/files.c'; then $(CYGPATH_W) 'qcommon/files.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/files.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-files.Tpo qcommon/$(DEPDIR)/crx-files.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/files.c' object='qcommon/crx-files.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-files.obj `if test -f 'qcommon/files.c'; then $(CYGPATH_W) 'qcommon/files.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/files.c'; fi` - -qcommon/crx-htable.o: qcommon/htable.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-htable.o -MD -MP -MF qcommon/$(DEPDIR)/crx-htable.Tpo -c -o qcommon/crx-htable.o `test -f 'qcommon/htable.c' || echo '$(srcdir)/'`qcommon/htable.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-htable.Tpo qcommon/$(DEPDIR)/crx-htable.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/htable.c' object='qcommon/crx-htable.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-htable.o `test -f 'qcommon/htable.c' || echo '$(srcdir)/'`qcommon/htable.c - -qcommon/crx-htable.obj: qcommon/htable.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-htable.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-htable.Tpo -c -o qcommon/crx-htable.obj `if test -f 'qcommon/htable.c'; then $(CYGPATH_W) 'qcommon/htable.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/htable.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-htable.Tpo qcommon/$(DEPDIR)/crx-htable.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/htable.c' object='qcommon/crx-htable.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-htable.obj `if test -f 'qcommon/htable.c'; then $(CYGPATH_W) 'qcommon/htable.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/htable.c'; fi` - -qcommon/crx-md5.o: qcommon/md5.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-md5.o -MD -MP -MF qcommon/$(DEPDIR)/crx-md5.Tpo -c -o qcommon/crx-md5.o `test -f 'qcommon/md5.c' || echo '$(srcdir)/'`qcommon/md5.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-md5.Tpo qcommon/$(DEPDIR)/crx-md5.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/md5.c' object='qcommon/crx-md5.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-md5.o `test -f 'qcommon/md5.c' || echo '$(srcdir)/'`qcommon/md5.c - -qcommon/crx-md5.obj: qcommon/md5.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-md5.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-md5.Tpo -c -o qcommon/crx-md5.obj `if test -f 'qcommon/md5.c'; then $(CYGPATH_W) 'qcommon/md5.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/md5.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-md5.Tpo qcommon/$(DEPDIR)/crx-md5.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/md5.c' object='qcommon/crx-md5.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-md5.obj `if test -f 'qcommon/md5.c'; then $(CYGPATH_W) 'qcommon/md5.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/md5.c'; fi` - -qcommon/crx-mdfour.o: qcommon/mdfour.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-mdfour.o -MD -MP -MF qcommon/$(DEPDIR)/crx-mdfour.Tpo -c -o qcommon/crx-mdfour.o `test -f 'qcommon/mdfour.c' || echo '$(srcdir)/'`qcommon/mdfour.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-mdfour.Tpo qcommon/$(DEPDIR)/crx-mdfour.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/mdfour.c' object='qcommon/crx-mdfour.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-mdfour.o `test -f 'qcommon/mdfour.c' || echo '$(srcdir)/'`qcommon/mdfour.c - -qcommon/crx-mdfour.obj: qcommon/mdfour.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-mdfour.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-mdfour.Tpo -c -o qcommon/crx-mdfour.obj `if test -f 'qcommon/mdfour.c'; then $(CYGPATH_W) 'qcommon/mdfour.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/mdfour.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-mdfour.Tpo qcommon/$(DEPDIR)/crx-mdfour.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/mdfour.c' object='qcommon/crx-mdfour.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-mdfour.obj `if test -f 'qcommon/mdfour.c'; then $(CYGPATH_W) 'qcommon/mdfour.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/mdfour.c'; fi` - -qcommon/crx-net_chan.o: qcommon/net_chan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-net_chan.o -MD -MP -MF qcommon/$(DEPDIR)/crx-net_chan.Tpo -c -o qcommon/crx-net_chan.o `test -f 'qcommon/net_chan.c' || echo '$(srcdir)/'`qcommon/net_chan.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-net_chan.Tpo qcommon/$(DEPDIR)/crx-net_chan.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/net_chan.c' object='qcommon/crx-net_chan.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-net_chan.o `test -f 'qcommon/net_chan.c' || echo '$(srcdir)/'`qcommon/net_chan.c - -qcommon/crx-net_chan.obj: qcommon/net_chan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-net_chan.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-net_chan.Tpo -c -o qcommon/crx-net_chan.obj `if test -f 'qcommon/net_chan.c'; then $(CYGPATH_W) 'qcommon/net_chan.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/net_chan.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-net_chan.Tpo qcommon/$(DEPDIR)/crx-net_chan.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/net_chan.c' object='qcommon/crx-net_chan.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-net_chan.obj `if test -f 'qcommon/net_chan.c'; then $(CYGPATH_W) 'qcommon/net_chan.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/net_chan.c'; fi` - -qcommon/crx-pmove.o: qcommon/pmove.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-pmove.o -MD -MP -MF qcommon/$(DEPDIR)/crx-pmove.Tpo -c -o qcommon/crx-pmove.o `test -f 'qcommon/pmove.c' || echo '$(srcdir)/'`qcommon/pmove.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-pmove.Tpo qcommon/$(DEPDIR)/crx-pmove.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/pmove.c' object='qcommon/crx-pmove.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-pmove.o `test -f 'qcommon/pmove.c' || echo '$(srcdir)/'`qcommon/pmove.c - -qcommon/crx-pmove.obj: qcommon/pmove.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx-pmove.obj -MD -MP -MF qcommon/$(DEPDIR)/crx-pmove.Tpo -c -o qcommon/crx-pmove.obj `if test -f 'qcommon/pmove.c'; then $(CYGPATH_W) 'qcommon/pmove.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/pmove.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx-pmove.Tpo qcommon/$(DEPDIR)/crx-pmove.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/pmove.c' object='qcommon/crx-pmove.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx-pmove.obj `if test -f 'qcommon/pmove.c'; then $(CYGPATH_W) 'qcommon/pmove.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/pmove.c'; fi` - -ref_gl/crx-r_bloom.o: ref_gl/r_bloom.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_bloom.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_bloom.Tpo -c -o ref_gl/crx-r_bloom.o `test -f 'ref_gl/r_bloom.c' || echo '$(srcdir)/'`ref_gl/r_bloom.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_bloom.Tpo ref_gl/$(DEPDIR)/crx-r_bloom.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_bloom.c' object='ref_gl/crx-r_bloom.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_bloom.o `test -f 'ref_gl/r_bloom.c' || echo '$(srcdir)/'`ref_gl/r_bloom.c - -ref_gl/crx-r_bloom.obj: ref_gl/r_bloom.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_bloom.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_bloom.Tpo -c -o ref_gl/crx-r_bloom.obj `if test -f 'ref_gl/r_bloom.c'; then $(CYGPATH_W) 'ref_gl/r_bloom.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_bloom.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_bloom.Tpo ref_gl/$(DEPDIR)/crx-r_bloom.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_bloom.c' object='ref_gl/crx-r_bloom.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_bloom.obj `if test -f 'ref_gl/r_bloom.c'; then $(CYGPATH_W) 'ref_gl/r_bloom.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_bloom.c'; fi` - -ref_gl/crx-r_bmfont.o: ref_gl/r_bmfont.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_bmfont.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_bmfont.Tpo -c -o ref_gl/crx-r_bmfont.o `test -f 'ref_gl/r_bmfont.c' || echo '$(srcdir)/'`ref_gl/r_bmfont.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_bmfont.Tpo ref_gl/$(DEPDIR)/crx-r_bmfont.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_bmfont.c' object='ref_gl/crx-r_bmfont.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_bmfont.o `test -f 'ref_gl/r_bmfont.c' || echo '$(srcdir)/'`ref_gl/r_bmfont.c - -ref_gl/crx-r_bmfont.obj: ref_gl/r_bmfont.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_bmfont.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_bmfont.Tpo -c -o ref_gl/crx-r_bmfont.obj `if test -f 'ref_gl/r_bmfont.c'; then $(CYGPATH_W) 'ref_gl/r_bmfont.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_bmfont.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_bmfont.Tpo ref_gl/$(DEPDIR)/crx-r_bmfont.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_bmfont.c' object='ref_gl/crx-r_bmfont.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_bmfont.obj `if test -f 'ref_gl/r_bmfont.c'; then $(CYGPATH_W) 'ref_gl/r_bmfont.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_bmfont.c'; fi` - -ref_gl/crx-r_draw.o: ref_gl/r_draw.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_draw.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_draw.Tpo -c -o ref_gl/crx-r_draw.o `test -f 'ref_gl/r_draw.c' || echo '$(srcdir)/'`ref_gl/r_draw.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_draw.Tpo ref_gl/$(DEPDIR)/crx-r_draw.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_draw.c' object='ref_gl/crx-r_draw.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_draw.o `test -f 'ref_gl/r_draw.c' || echo '$(srcdir)/'`ref_gl/r_draw.c - -ref_gl/crx-r_draw.obj: ref_gl/r_draw.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_draw.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_draw.Tpo -c -o ref_gl/crx-r_draw.obj `if test -f 'ref_gl/r_draw.c'; then $(CYGPATH_W) 'ref_gl/r_draw.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_draw.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_draw.Tpo ref_gl/$(DEPDIR)/crx-r_draw.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_draw.c' object='ref_gl/crx-r_draw.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_draw.obj `if test -f 'ref_gl/r_draw.c'; then $(CYGPATH_W) 'ref_gl/r_draw.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_draw.c'; fi` - -ref_gl/crx-r_image.o: ref_gl/r_image.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_image.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_image.Tpo -c -o ref_gl/crx-r_image.o `test -f 'ref_gl/r_image.c' || echo '$(srcdir)/'`ref_gl/r_image.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_image.Tpo ref_gl/$(DEPDIR)/crx-r_image.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_image.c' object='ref_gl/crx-r_image.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_image.o `test -f 'ref_gl/r_image.c' || echo '$(srcdir)/'`ref_gl/r_image.c - -ref_gl/crx-r_image.obj: ref_gl/r_image.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_image.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_image.Tpo -c -o ref_gl/crx-r_image.obj `if test -f 'ref_gl/r_image.c'; then $(CYGPATH_W) 'ref_gl/r_image.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_image.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_image.Tpo ref_gl/$(DEPDIR)/crx-r_image.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_image.c' object='ref_gl/crx-r_image.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_image.obj `if test -f 'ref_gl/r_image.c'; then $(CYGPATH_W) 'ref_gl/r_image.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_image.c'; fi` - -ref_gl/crx-r_iqm.o: ref_gl/r_iqm.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_iqm.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_iqm.Tpo -c -o ref_gl/crx-r_iqm.o `test -f 'ref_gl/r_iqm.c' || echo '$(srcdir)/'`ref_gl/r_iqm.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_iqm.Tpo ref_gl/$(DEPDIR)/crx-r_iqm.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_iqm.c' object='ref_gl/crx-r_iqm.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_iqm.o `test -f 'ref_gl/r_iqm.c' || echo '$(srcdir)/'`ref_gl/r_iqm.c - -ref_gl/crx-r_iqm.obj: ref_gl/r_iqm.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_iqm.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_iqm.Tpo -c -o ref_gl/crx-r_iqm.obj `if test -f 'ref_gl/r_iqm.c'; then $(CYGPATH_W) 'ref_gl/r_iqm.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_iqm.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_iqm.Tpo ref_gl/$(DEPDIR)/crx-r_iqm.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_iqm.c' object='ref_gl/crx-r_iqm.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_iqm.obj `if test -f 'ref_gl/r_iqm.c'; then $(CYGPATH_W) 'ref_gl/r_iqm.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_iqm.c'; fi` - -ref_gl/crx-r_light.o: ref_gl/r_light.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_light.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_light.Tpo -c -o ref_gl/crx-r_light.o `test -f 'ref_gl/r_light.c' || echo '$(srcdir)/'`ref_gl/r_light.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_light.Tpo ref_gl/$(DEPDIR)/crx-r_light.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_light.c' object='ref_gl/crx-r_light.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_light.o `test -f 'ref_gl/r_light.c' || echo '$(srcdir)/'`ref_gl/r_light.c - -ref_gl/crx-r_light.obj: ref_gl/r_light.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_light.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_light.Tpo -c -o ref_gl/crx-r_light.obj `if test -f 'ref_gl/r_light.c'; then $(CYGPATH_W) 'ref_gl/r_light.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_light.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_light.Tpo ref_gl/$(DEPDIR)/crx-r_light.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_light.c' object='ref_gl/crx-r_light.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_light.obj `if test -f 'ref_gl/r_light.c'; then $(CYGPATH_W) 'ref_gl/r_light.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_light.c'; fi` - -ref_gl/crx-r_main.o: ref_gl/r_main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_main.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_main.Tpo -c -o ref_gl/crx-r_main.o `test -f 'ref_gl/r_main.c' || echo '$(srcdir)/'`ref_gl/r_main.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_main.Tpo ref_gl/$(DEPDIR)/crx-r_main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_main.c' object='ref_gl/crx-r_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_main.o `test -f 'ref_gl/r_main.c' || echo '$(srcdir)/'`ref_gl/r_main.c - -ref_gl/crx-r_main.obj: ref_gl/r_main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_main.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_main.Tpo -c -o ref_gl/crx-r_main.obj `if test -f 'ref_gl/r_main.c'; then $(CYGPATH_W) 'ref_gl/r_main.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_main.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_main.Tpo ref_gl/$(DEPDIR)/crx-r_main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_main.c' object='ref_gl/crx-r_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_main.obj `if test -f 'ref_gl/r_main.c'; then $(CYGPATH_W) 'ref_gl/r_main.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_main.c'; fi` - -ref_gl/crx-r_math.o: ref_gl/r_math.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_math.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_math.Tpo -c -o ref_gl/crx-r_math.o `test -f 'ref_gl/r_math.c' || echo '$(srcdir)/'`ref_gl/r_math.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_math.Tpo ref_gl/$(DEPDIR)/crx-r_math.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_math.c' object='ref_gl/crx-r_math.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_math.o `test -f 'ref_gl/r_math.c' || echo '$(srcdir)/'`ref_gl/r_math.c - -ref_gl/crx-r_math.obj: ref_gl/r_math.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_math.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_math.Tpo -c -o ref_gl/crx-r_math.obj `if test -f 'ref_gl/r_math.c'; then $(CYGPATH_W) 'ref_gl/r_math.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_math.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_math.Tpo ref_gl/$(DEPDIR)/crx-r_math.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_math.c' object='ref_gl/crx-r_math.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_math.obj `if test -f 'ref_gl/r_math.c'; then $(CYGPATH_W) 'ref_gl/r_math.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_math.c'; fi` - -ref_gl/crx-r_mesh.o: ref_gl/r_mesh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_mesh.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_mesh.Tpo -c -o ref_gl/crx-r_mesh.o `test -f 'ref_gl/r_mesh.c' || echo '$(srcdir)/'`ref_gl/r_mesh.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_mesh.Tpo ref_gl/$(DEPDIR)/crx-r_mesh.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_mesh.c' object='ref_gl/crx-r_mesh.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_mesh.o `test -f 'ref_gl/r_mesh.c' || echo '$(srcdir)/'`ref_gl/r_mesh.c - -ref_gl/crx-r_mesh.obj: ref_gl/r_mesh.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_mesh.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_mesh.Tpo -c -o ref_gl/crx-r_mesh.obj `if test -f 'ref_gl/r_mesh.c'; then $(CYGPATH_W) 'ref_gl/r_mesh.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_mesh.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_mesh.Tpo ref_gl/$(DEPDIR)/crx-r_mesh.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_mesh.c' object='ref_gl/crx-r_mesh.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_mesh.obj `if test -f 'ref_gl/r_mesh.c'; then $(CYGPATH_W) 'ref_gl/r_mesh.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_mesh.c'; fi` - -ref_gl/crx-r_misc.o: ref_gl/r_misc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_misc.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_misc.Tpo -c -o ref_gl/crx-r_misc.o `test -f 'ref_gl/r_misc.c' || echo '$(srcdir)/'`ref_gl/r_misc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_misc.Tpo ref_gl/$(DEPDIR)/crx-r_misc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_misc.c' object='ref_gl/crx-r_misc.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_misc.o `test -f 'ref_gl/r_misc.c' || echo '$(srcdir)/'`ref_gl/r_misc.c - -ref_gl/crx-r_misc.obj: ref_gl/r_misc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_misc.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_misc.Tpo -c -o ref_gl/crx-r_misc.obj `if test -f 'ref_gl/r_misc.c'; then $(CYGPATH_W) 'ref_gl/r_misc.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_misc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_misc.Tpo ref_gl/$(DEPDIR)/crx-r_misc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_misc.c' object='ref_gl/crx-r_misc.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_misc.obj `if test -f 'ref_gl/r_misc.c'; then $(CYGPATH_W) 'ref_gl/r_misc.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_misc.c'; fi` - -ref_gl/crx-r_model.o: ref_gl/r_model.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_model.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_model.Tpo -c -o ref_gl/crx-r_model.o `test -f 'ref_gl/r_model.c' || echo '$(srcdir)/'`ref_gl/r_model.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_model.Tpo ref_gl/$(DEPDIR)/crx-r_model.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_model.c' object='ref_gl/crx-r_model.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_model.o `test -f 'ref_gl/r_model.c' || echo '$(srcdir)/'`ref_gl/r_model.c - -ref_gl/crx-r_model.obj: ref_gl/r_model.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_model.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_model.Tpo -c -o ref_gl/crx-r_model.obj `if test -f 'ref_gl/r_model.c'; then $(CYGPATH_W) 'ref_gl/r_model.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_model.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_model.Tpo ref_gl/$(DEPDIR)/crx-r_model.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_model.c' object='ref_gl/crx-r_model.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_model.obj `if test -f 'ref_gl/r_model.c'; then $(CYGPATH_W) 'ref_gl/r_model.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_model.c'; fi` - -ref_gl/crx-r_particle.o: ref_gl/r_particle.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_particle.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_particle.Tpo -c -o ref_gl/crx-r_particle.o `test -f 'ref_gl/r_particle.c' || echo '$(srcdir)/'`ref_gl/r_particle.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_particle.Tpo ref_gl/$(DEPDIR)/crx-r_particle.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_particle.c' object='ref_gl/crx-r_particle.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_particle.o `test -f 'ref_gl/r_particle.c' || echo '$(srcdir)/'`ref_gl/r_particle.c - -ref_gl/crx-r_particle.obj: ref_gl/r_particle.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_particle.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_particle.Tpo -c -o ref_gl/crx-r_particle.obj `if test -f 'ref_gl/r_particle.c'; then $(CYGPATH_W) 'ref_gl/r_particle.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_particle.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_particle.Tpo ref_gl/$(DEPDIR)/crx-r_particle.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_particle.c' object='ref_gl/crx-r_particle.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_particle.obj `if test -f 'ref_gl/r_particle.c'; then $(CYGPATH_W) 'ref_gl/r_particle.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_particle.c'; fi` - -ref_gl/crx-r_postprocess.o: ref_gl/r_postprocess.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_postprocess.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_postprocess.Tpo -c -o ref_gl/crx-r_postprocess.o `test -f 'ref_gl/r_postprocess.c' || echo '$(srcdir)/'`ref_gl/r_postprocess.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_postprocess.Tpo ref_gl/$(DEPDIR)/crx-r_postprocess.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_postprocess.c' object='ref_gl/crx-r_postprocess.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_postprocess.o `test -f 'ref_gl/r_postprocess.c' || echo '$(srcdir)/'`ref_gl/r_postprocess.c - -ref_gl/crx-r_postprocess.obj: ref_gl/r_postprocess.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_postprocess.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_postprocess.Tpo -c -o ref_gl/crx-r_postprocess.obj `if test -f 'ref_gl/r_postprocess.c'; then $(CYGPATH_W) 'ref_gl/r_postprocess.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_postprocess.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_postprocess.Tpo ref_gl/$(DEPDIR)/crx-r_postprocess.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_postprocess.c' object='ref_gl/crx-r_postprocess.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_postprocess.obj `if test -f 'ref_gl/r_postprocess.c'; then $(CYGPATH_W) 'ref_gl/r_postprocess.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_postprocess.c'; fi` - -ref_gl/crx-r_program.o: ref_gl/r_program.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_program.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_program.Tpo -c -o ref_gl/crx-r_program.o `test -f 'ref_gl/r_program.c' || echo '$(srcdir)/'`ref_gl/r_program.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_program.Tpo ref_gl/$(DEPDIR)/crx-r_program.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_program.c' object='ref_gl/crx-r_program.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_program.o `test -f 'ref_gl/r_program.c' || echo '$(srcdir)/'`ref_gl/r_program.c - -ref_gl/crx-r_program.obj: ref_gl/r_program.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_program.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_program.Tpo -c -o ref_gl/crx-r_program.obj `if test -f 'ref_gl/r_program.c'; then $(CYGPATH_W) 'ref_gl/r_program.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_program.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_program.Tpo ref_gl/$(DEPDIR)/crx-r_program.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_program.c' object='ref_gl/crx-r_program.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_program.obj `if test -f 'ref_gl/r_program.c'; then $(CYGPATH_W) 'ref_gl/r_program.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_program.c'; fi` - -ref_gl/crx-r_ragdoll.o: ref_gl/r_ragdoll.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_ragdoll.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_ragdoll.Tpo -c -o ref_gl/crx-r_ragdoll.o `test -f 'ref_gl/r_ragdoll.c' || echo '$(srcdir)/'`ref_gl/r_ragdoll.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_ragdoll.Tpo ref_gl/$(DEPDIR)/crx-r_ragdoll.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_ragdoll.c' object='ref_gl/crx-r_ragdoll.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_ragdoll.o `test -f 'ref_gl/r_ragdoll.c' || echo '$(srcdir)/'`ref_gl/r_ragdoll.c - -ref_gl/crx-r_ragdoll.obj: ref_gl/r_ragdoll.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_ragdoll.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_ragdoll.Tpo -c -o ref_gl/crx-r_ragdoll.obj `if test -f 'ref_gl/r_ragdoll.c'; then $(CYGPATH_W) 'ref_gl/r_ragdoll.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_ragdoll.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_ragdoll.Tpo ref_gl/$(DEPDIR)/crx-r_ragdoll.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_ragdoll.c' object='ref_gl/crx-r_ragdoll.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_ragdoll.obj `if test -f 'ref_gl/r_ragdoll.c'; then $(CYGPATH_W) 'ref_gl/r_ragdoll.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_ragdoll.c'; fi` - -ref_gl/crx-r_script.o: ref_gl/r_script.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_script.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_script.Tpo -c -o ref_gl/crx-r_script.o `test -f 'ref_gl/r_script.c' || echo '$(srcdir)/'`ref_gl/r_script.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_script.Tpo ref_gl/$(DEPDIR)/crx-r_script.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_script.c' object='ref_gl/crx-r_script.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_script.o `test -f 'ref_gl/r_script.c' || echo '$(srcdir)/'`ref_gl/r_script.c - -ref_gl/crx-r_script.obj: ref_gl/r_script.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_script.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_script.Tpo -c -o ref_gl/crx-r_script.obj `if test -f 'ref_gl/r_script.c'; then $(CYGPATH_W) 'ref_gl/r_script.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_script.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_script.Tpo ref_gl/$(DEPDIR)/crx-r_script.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_script.c' object='ref_gl/crx-r_script.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_script.obj `if test -f 'ref_gl/r_script.c'; then $(CYGPATH_W) 'ref_gl/r_script.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_script.c'; fi` - -ref_gl/crx-r_shadowmaps.o: ref_gl/r_shadowmaps.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_shadowmaps.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_shadowmaps.Tpo -c -o ref_gl/crx-r_shadowmaps.o `test -f 'ref_gl/r_shadowmaps.c' || echo '$(srcdir)/'`ref_gl/r_shadowmaps.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_shadowmaps.Tpo ref_gl/$(DEPDIR)/crx-r_shadowmaps.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_shadowmaps.c' object='ref_gl/crx-r_shadowmaps.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_shadowmaps.o `test -f 'ref_gl/r_shadowmaps.c' || echo '$(srcdir)/'`ref_gl/r_shadowmaps.c - -ref_gl/crx-r_shadowmaps.obj: ref_gl/r_shadowmaps.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_shadowmaps.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_shadowmaps.Tpo -c -o ref_gl/crx-r_shadowmaps.obj `if test -f 'ref_gl/r_shadowmaps.c'; then $(CYGPATH_W) 'ref_gl/r_shadowmaps.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_shadowmaps.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_shadowmaps.Tpo ref_gl/$(DEPDIR)/crx-r_shadowmaps.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_shadowmaps.c' object='ref_gl/crx-r_shadowmaps.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_shadowmaps.obj `if test -f 'ref_gl/r_shadowmaps.c'; then $(CYGPATH_W) 'ref_gl/r_shadowmaps.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_shadowmaps.c'; fi` - -ref_gl/crx-r_shadows.o: ref_gl/r_shadows.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_shadows.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_shadows.Tpo -c -o ref_gl/crx-r_shadows.o `test -f 'ref_gl/r_shadows.c' || echo '$(srcdir)/'`ref_gl/r_shadows.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_shadows.Tpo ref_gl/$(DEPDIR)/crx-r_shadows.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_shadows.c' object='ref_gl/crx-r_shadows.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_shadows.o `test -f 'ref_gl/r_shadows.c' || echo '$(srcdir)/'`ref_gl/r_shadows.c - -ref_gl/crx-r_shadows.obj: ref_gl/r_shadows.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_shadows.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_shadows.Tpo -c -o ref_gl/crx-r_shadows.obj `if test -f 'ref_gl/r_shadows.c'; then $(CYGPATH_W) 'ref_gl/r_shadows.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_shadows.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_shadows.Tpo ref_gl/$(DEPDIR)/crx-r_shadows.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_shadows.c' object='ref_gl/crx-r_shadows.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_shadows.obj `if test -f 'ref_gl/r_shadows.c'; then $(CYGPATH_W) 'ref_gl/r_shadows.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_shadows.c'; fi` - -ref_gl/crx-r_surf.o: ref_gl/r_surf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_surf.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_surf.Tpo -c -o ref_gl/crx-r_surf.o `test -f 'ref_gl/r_surf.c' || echo '$(srcdir)/'`ref_gl/r_surf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_surf.Tpo ref_gl/$(DEPDIR)/crx-r_surf.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_surf.c' object='ref_gl/crx-r_surf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_surf.o `test -f 'ref_gl/r_surf.c' || echo '$(srcdir)/'`ref_gl/r_surf.c - -ref_gl/crx-r_surf.obj: ref_gl/r_surf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_surf.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_surf.Tpo -c -o ref_gl/crx-r_surf.obj `if test -f 'ref_gl/r_surf.c'; then $(CYGPATH_W) 'ref_gl/r_surf.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_surf.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_surf.Tpo ref_gl/$(DEPDIR)/crx-r_surf.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_surf.c' object='ref_gl/crx-r_surf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_surf.obj `if test -f 'ref_gl/r_surf.c'; then $(CYGPATH_W) 'ref_gl/r_surf.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_surf.c'; fi` - -ref_gl/crx-r_text.o: ref_gl/r_text.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_text.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_text.Tpo -c -o ref_gl/crx-r_text.o `test -f 'ref_gl/r_text.c' || echo '$(srcdir)/'`ref_gl/r_text.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_text.Tpo ref_gl/$(DEPDIR)/crx-r_text.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_text.c' object='ref_gl/crx-r_text.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_text.o `test -f 'ref_gl/r_text.c' || echo '$(srcdir)/'`ref_gl/r_text.c - -ref_gl/crx-r_text.obj: ref_gl/r_text.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_text.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_text.Tpo -c -o ref_gl/crx-r_text.obj `if test -f 'ref_gl/r_text.c'; then $(CYGPATH_W) 'ref_gl/r_text.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_text.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_text.Tpo ref_gl/$(DEPDIR)/crx-r_text.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_text.c' object='ref_gl/crx-r_text.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_text.obj `if test -f 'ref_gl/r_text.c'; then $(CYGPATH_W) 'ref_gl/r_text.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_text.c'; fi` - -ref_gl/crx-r_ttf.o: ref_gl/r_ttf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_ttf.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_ttf.Tpo -c -o ref_gl/crx-r_ttf.o `test -f 'ref_gl/r_ttf.c' || echo '$(srcdir)/'`ref_gl/r_ttf.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_ttf.Tpo ref_gl/$(DEPDIR)/crx-r_ttf.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_ttf.c' object='ref_gl/crx-r_ttf.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_ttf.o `test -f 'ref_gl/r_ttf.c' || echo '$(srcdir)/'`ref_gl/r_ttf.c - -ref_gl/crx-r_ttf.obj: ref_gl/r_ttf.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_ttf.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_ttf.Tpo -c -o ref_gl/crx-r_ttf.obj `if test -f 'ref_gl/r_ttf.c'; then $(CYGPATH_W) 'ref_gl/r_ttf.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_ttf.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_ttf.Tpo ref_gl/$(DEPDIR)/crx-r_ttf.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_ttf.c' object='ref_gl/crx-r_ttf.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_ttf.obj `if test -f 'ref_gl/r_ttf.c'; then $(CYGPATH_W) 'ref_gl/r_ttf.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_ttf.c'; fi` - -ref_gl/crx-r_varray.o: ref_gl/r_varray.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_varray.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_varray.Tpo -c -o ref_gl/crx-r_varray.o `test -f 'ref_gl/r_varray.c' || echo '$(srcdir)/'`ref_gl/r_varray.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_varray.Tpo ref_gl/$(DEPDIR)/crx-r_varray.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_varray.c' object='ref_gl/crx-r_varray.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_varray.o `test -f 'ref_gl/r_varray.c' || echo '$(srcdir)/'`ref_gl/r_varray.c - -ref_gl/crx-r_varray.obj: ref_gl/r_varray.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_varray.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_varray.Tpo -c -o ref_gl/crx-r_varray.obj `if test -f 'ref_gl/r_varray.c'; then $(CYGPATH_W) 'ref_gl/r_varray.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_varray.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_varray.Tpo ref_gl/$(DEPDIR)/crx-r_varray.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_varray.c' object='ref_gl/crx-r_varray.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_varray.obj `if test -f 'ref_gl/r_varray.c'; then $(CYGPATH_W) 'ref_gl/r_varray.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_varray.c'; fi` - -ref_gl/crx-r_vbo.o: ref_gl/r_vbo.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_vbo.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_vbo.Tpo -c -o ref_gl/crx-r_vbo.o `test -f 'ref_gl/r_vbo.c' || echo '$(srcdir)/'`ref_gl/r_vbo.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_vbo.Tpo ref_gl/$(DEPDIR)/crx-r_vbo.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_vbo.c' object='ref_gl/crx-r_vbo.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_vbo.o `test -f 'ref_gl/r_vbo.c' || echo '$(srcdir)/'`ref_gl/r_vbo.c - -ref_gl/crx-r_vbo.obj: ref_gl/r_vbo.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_vbo.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_vbo.Tpo -c -o ref_gl/crx-r_vbo.obj `if test -f 'ref_gl/r_vbo.c'; then $(CYGPATH_W) 'ref_gl/r_vbo.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_vbo.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_vbo.Tpo ref_gl/$(DEPDIR)/crx-r_vbo.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_vbo.c' object='ref_gl/crx-r_vbo.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_vbo.obj `if test -f 'ref_gl/r_vbo.c'; then $(CYGPATH_W) 'ref_gl/r_vbo.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_vbo.c'; fi` - -ref_gl/crx-r_vlights.o: ref_gl/r_vlights.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_vlights.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_vlights.Tpo -c -o ref_gl/crx-r_vlights.o `test -f 'ref_gl/r_vlights.c' || echo '$(srcdir)/'`ref_gl/r_vlights.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_vlights.Tpo ref_gl/$(DEPDIR)/crx-r_vlights.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_vlights.c' object='ref_gl/crx-r_vlights.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_vlights.o `test -f 'ref_gl/r_vlights.c' || echo '$(srcdir)/'`ref_gl/r_vlights.c - -ref_gl/crx-r_vlights.obj: ref_gl/r_vlights.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_vlights.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_vlights.Tpo -c -o ref_gl/crx-r_vlights.obj `if test -f 'ref_gl/r_vlights.c'; then $(CYGPATH_W) 'ref_gl/r_vlights.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_vlights.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_vlights.Tpo ref_gl/$(DEPDIR)/crx-r_vlights.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_vlights.c' object='ref_gl/crx-r_vlights.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_vlights.obj `if test -f 'ref_gl/r_vlights.c'; then $(CYGPATH_W) 'ref_gl/r_vlights.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_vlights.c'; fi` - -ref_gl/crx-r_warp.o: ref_gl/r_warp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_warp.o -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_warp.Tpo -c -o ref_gl/crx-r_warp.o `test -f 'ref_gl/r_warp.c' || echo '$(srcdir)/'`ref_gl/r_warp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_warp.Tpo ref_gl/$(DEPDIR)/crx-r_warp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_warp.c' object='ref_gl/crx-r_warp.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_warp.o `test -f 'ref_gl/r_warp.c' || echo '$(srcdir)/'`ref_gl/r_warp.c - -ref_gl/crx-r_warp.obj: ref_gl/r_warp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/crx-r_warp.obj -MD -MP -MF ref_gl/$(DEPDIR)/crx-r_warp.Tpo -c -o ref_gl/crx-r_warp.obj `if test -f 'ref_gl/r_warp.c'; then $(CYGPATH_W) 'ref_gl/r_warp.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_warp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/crx-r_warp.Tpo ref_gl/$(DEPDIR)/crx-r_warp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='ref_gl/r_warp.c' object='ref_gl/crx-r_warp.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/crx-r_warp.obj `if test -f 'ref_gl/r_warp.c'; then $(CYGPATH_W) 'ref_gl/r_warp.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_warp.c'; fi` - -server/crx-sv_ccmds.o: server/sv_ccmds.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_ccmds.o -MD -MP -MF server/$(DEPDIR)/crx-sv_ccmds.Tpo -c -o server/crx-sv_ccmds.o `test -f 'server/sv_ccmds.c' || echo '$(srcdir)/'`server/sv_ccmds.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_ccmds.Tpo server/$(DEPDIR)/crx-sv_ccmds.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_ccmds.c' object='server/crx-sv_ccmds.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_ccmds.o `test -f 'server/sv_ccmds.c' || echo '$(srcdir)/'`server/sv_ccmds.c - -server/crx-sv_ccmds.obj: server/sv_ccmds.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_ccmds.obj -MD -MP -MF server/$(DEPDIR)/crx-sv_ccmds.Tpo -c -o server/crx-sv_ccmds.obj `if test -f 'server/sv_ccmds.c'; then $(CYGPATH_W) 'server/sv_ccmds.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ccmds.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_ccmds.Tpo server/$(DEPDIR)/crx-sv_ccmds.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_ccmds.c' object='server/crx-sv_ccmds.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_ccmds.obj `if test -f 'server/sv_ccmds.c'; then $(CYGPATH_W) 'server/sv_ccmds.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ccmds.c'; fi` - -server/crx-sv_ents.o: server/sv_ents.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_ents.o -MD -MP -MF server/$(DEPDIR)/crx-sv_ents.Tpo -c -o server/crx-sv_ents.o `test -f 'server/sv_ents.c' || echo '$(srcdir)/'`server/sv_ents.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_ents.Tpo server/$(DEPDIR)/crx-sv_ents.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_ents.c' object='server/crx-sv_ents.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_ents.o `test -f 'server/sv_ents.c' || echo '$(srcdir)/'`server/sv_ents.c - -server/crx-sv_ents.obj: server/sv_ents.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_ents.obj -MD -MP -MF server/$(DEPDIR)/crx-sv_ents.Tpo -c -o server/crx-sv_ents.obj `if test -f 'server/sv_ents.c'; then $(CYGPATH_W) 'server/sv_ents.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ents.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_ents.Tpo server/$(DEPDIR)/crx-sv_ents.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_ents.c' object='server/crx-sv_ents.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_ents.obj `if test -f 'server/sv_ents.c'; then $(CYGPATH_W) 'server/sv_ents.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ents.c'; fi` - -server/crx-sv_game.o: server/sv_game.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_game.o -MD -MP -MF server/$(DEPDIR)/crx-sv_game.Tpo -c -o server/crx-sv_game.o `test -f 'server/sv_game.c' || echo '$(srcdir)/'`server/sv_game.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_game.Tpo server/$(DEPDIR)/crx-sv_game.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_game.c' object='server/crx-sv_game.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_game.o `test -f 'server/sv_game.c' || echo '$(srcdir)/'`server/sv_game.c - -server/crx-sv_game.obj: server/sv_game.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_game.obj -MD -MP -MF server/$(DEPDIR)/crx-sv_game.Tpo -c -o server/crx-sv_game.obj `if test -f 'server/sv_game.c'; then $(CYGPATH_W) 'server/sv_game.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_game.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_game.Tpo server/$(DEPDIR)/crx-sv_game.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_game.c' object='server/crx-sv_game.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_game.obj `if test -f 'server/sv_game.c'; then $(CYGPATH_W) 'server/sv_game.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_game.c'; fi` - -server/crx-sv_init.o: server/sv_init.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_init.o -MD -MP -MF server/$(DEPDIR)/crx-sv_init.Tpo -c -o server/crx-sv_init.o `test -f 'server/sv_init.c' || echo '$(srcdir)/'`server/sv_init.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_init.Tpo server/$(DEPDIR)/crx-sv_init.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_init.c' object='server/crx-sv_init.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_init.o `test -f 'server/sv_init.c' || echo '$(srcdir)/'`server/sv_init.c - -server/crx-sv_init.obj: server/sv_init.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_init.obj -MD -MP -MF server/$(DEPDIR)/crx-sv_init.Tpo -c -o server/crx-sv_init.obj `if test -f 'server/sv_init.c'; then $(CYGPATH_W) 'server/sv_init.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_init.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_init.Tpo server/$(DEPDIR)/crx-sv_init.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_init.c' object='server/crx-sv_init.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_init.obj `if test -f 'server/sv_init.c'; then $(CYGPATH_W) 'server/sv_init.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_init.c'; fi` - -server/crx-sv_main.o: server/sv_main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_main.o -MD -MP -MF server/$(DEPDIR)/crx-sv_main.Tpo -c -o server/crx-sv_main.o `test -f 'server/sv_main.c' || echo '$(srcdir)/'`server/sv_main.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_main.Tpo server/$(DEPDIR)/crx-sv_main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_main.c' object='server/crx-sv_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_main.o `test -f 'server/sv_main.c' || echo '$(srcdir)/'`server/sv_main.c - -server/crx-sv_main.obj: server/sv_main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_main.obj -MD -MP -MF server/$(DEPDIR)/crx-sv_main.Tpo -c -o server/crx-sv_main.obj `if test -f 'server/sv_main.c'; then $(CYGPATH_W) 'server/sv_main.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_main.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_main.Tpo server/$(DEPDIR)/crx-sv_main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_main.c' object='server/crx-sv_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_main.obj `if test -f 'server/sv_main.c'; then $(CYGPATH_W) 'server/sv_main.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_main.c'; fi` - -server/crx-sv_send.o: server/sv_send.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_send.o -MD -MP -MF server/$(DEPDIR)/crx-sv_send.Tpo -c -o server/crx-sv_send.o `test -f 'server/sv_send.c' || echo '$(srcdir)/'`server/sv_send.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_send.Tpo server/$(DEPDIR)/crx-sv_send.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_send.c' object='server/crx-sv_send.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_send.o `test -f 'server/sv_send.c' || echo '$(srcdir)/'`server/sv_send.c - -server/crx-sv_send.obj: server/sv_send.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_send.obj -MD -MP -MF server/$(DEPDIR)/crx-sv_send.Tpo -c -o server/crx-sv_send.obj `if test -f 'server/sv_send.c'; then $(CYGPATH_W) 'server/sv_send.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_send.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_send.Tpo server/$(DEPDIR)/crx-sv_send.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_send.c' object='server/crx-sv_send.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_send.obj `if test -f 'server/sv_send.c'; then $(CYGPATH_W) 'server/sv_send.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_send.c'; fi` - -server/crx-sv_user.o: server/sv_user.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_user.o -MD -MP -MF server/$(DEPDIR)/crx-sv_user.Tpo -c -o server/crx-sv_user.o `test -f 'server/sv_user.c' || echo '$(srcdir)/'`server/sv_user.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_user.Tpo server/$(DEPDIR)/crx-sv_user.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_user.c' object='server/crx-sv_user.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_user.o `test -f 'server/sv_user.c' || echo '$(srcdir)/'`server/sv_user.c - -server/crx-sv_user.obj: server/sv_user.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_user.obj -MD -MP -MF server/$(DEPDIR)/crx-sv_user.Tpo -c -o server/crx-sv_user.obj `if test -f 'server/sv_user.c'; then $(CYGPATH_W) 'server/sv_user.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_user.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_user.Tpo server/$(DEPDIR)/crx-sv_user.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_user.c' object='server/crx-sv_user.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_user.obj `if test -f 'server/sv_user.c'; then $(CYGPATH_W) 'server/sv_user.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_user.c'; fi` - -server/crx-sv_world.o: server/sv_world.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_world.o -MD -MP -MF server/$(DEPDIR)/crx-sv_world.Tpo -c -o server/crx-sv_world.o `test -f 'server/sv_world.c' || echo '$(srcdir)/'`server/sv_world.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_world.Tpo server/$(DEPDIR)/crx-sv_world.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_world.c' object='server/crx-sv_world.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_world.o `test -f 'server/sv_world.c' || echo '$(srcdir)/'`server/sv_world.c - -server/crx-sv_world.obj: server/sv_world.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx-sv_world.obj -MD -MP -MF server/$(DEPDIR)/crx-sv_world.Tpo -c -o server/crx-sv_world.obj `if test -f 'server/sv_world.c'; then $(CYGPATH_W) 'server/sv_world.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_world.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx-sv_world.Tpo server/$(DEPDIR)/crx-sv_world.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_world.c' object='server/crx-sv_world.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx-sv_world.obj `if test -f 'server/sv_world.c'; then $(CYGPATH_W) 'server/sv_world.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_world.c'; fi` - -unix/crx-glob.o: unix/glob.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-glob.o -MD -MP -MF unix/$(DEPDIR)/crx-glob.Tpo -c -o unix/crx-glob.o `test -f 'unix/glob.c' || echo '$(srcdir)/'`unix/glob.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-glob.Tpo unix/$(DEPDIR)/crx-glob.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/glob.c' object='unix/crx-glob.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-glob.o `test -f 'unix/glob.c' || echo '$(srcdir)/'`unix/glob.c - -unix/crx-glob.obj: unix/glob.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-glob.obj -MD -MP -MF unix/$(DEPDIR)/crx-glob.Tpo -c -o unix/crx-glob.obj `if test -f 'unix/glob.c'; then $(CYGPATH_W) 'unix/glob.c'; else $(CYGPATH_W) '$(srcdir)/unix/glob.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-glob.Tpo unix/$(DEPDIR)/crx-glob.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/glob.c' object='unix/crx-glob.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-glob.obj `if test -f 'unix/glob.c'; then $(CYGPATH_W) 'unix/glob.c'; else $(CYGPATH_W) '$(srcdir)/unix/glob.c'; fi` - -unix/crx-gl_glx.o: unix/gl_glx.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-gl_glx.o -MD -MP -MF unix/$(DEPDIR)/crx-gl_glx.Tpo -c -o unix/crx-gl_glx.o `test -f 'unix/gl_glx.c' || echo '$(srcdir)/'`unix/gl_glx.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-gl_glx.Tpo unix/$(DEPDIR)/crx-gl_glx.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/gl_glx.c' object='unix/crx-gl_glx.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-gl_glx.o `test -f 'unix/gl_glx.c' || echo '$(srcdir)/'`unix/gl_glx.c - -unix/crx-gl_glx.obj: unix/gl_glx.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-gl_glx.obj -MD -MP -MF unix/$(DEPDIR)/crx-gl_glx.Tpo -c -o unix/crx-gl_glx.obj `if test -f 'unix/gl_glx.c'; then $(CYGPATH_W) 'unix/gl_glx.c'; else $(CYGPATH_W) '$(srcdir)/unix/gl_glx.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-gl_glx.Tpo unix/$(DEPDIR)/crx-gl_glx.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/gl_glx.c' object='unix/crx-gl_glx.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-gl_glx.obj `if test -f 'unix/gl_glx.c'; then $(CYGPATH_W) 'unix/gl_glx.c'; else $(CYGPATH_W) '$(srcdir)/unix/gl_glx.c'; fi` - -unix/crx-net_udp.o: unix/net_udp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-net_udp.o -MD -MP -MF unix/$(DEPDIR)/crx-net_udp.Tpo -c -o unix/crx-net_udp.o `test -f 'unix/net_udp.c' || echo '$(srcdir)/'`unix/net_udp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-net_udp.Tpo unix/$(DEPDIR)/crx-net_udp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/net_udp.c' object='unix/crx-net_udp.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-net_udp.o `test -f 'unix/net_udp.c' || echo '$(srcdir)/'`unix/net_udp.c - -unix/crx-net_udp.obj: unix/net_udp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-net_udp.obj -MD -MP -MF unix/$(DEPDIR)/crx-net_udp.Tpo -c -o unix/crx-net_udp.obj `if test -f 'unix/net_udp.c'; then $(CYGPATH_W) 'unix/net_udp.c'; else $(CYGPATH_W) '$(srcdir)/unix/net_udp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-net_udp.Tpo unix/$(DEPDIR)/crx-net_udp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/net_udp.c' object='unix/crx-net_udp.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-net_udp.obj `if test -f 'unix/net_udp.c'; then $(CYGPATH_W) 'unix/net_udp.c'; else $(CYGPATH_W) '$(srcdir)/unix/net_udp.c'; fi` - -unix/crx-qal_unix.o: unix/qal_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-qal_unix.o -MD -MP -MF unix/$(DEPDIR)/crx-qal_unix.Tpo -c -o unix/crx-qal_unix.o `test -f 'unix/qal_unix.c' || echo '$(srcdir)/'`unix/qal_unix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-qal_unix.Tpo unix/$(DEPDIR)/crx-qal_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/qal_unix.c' object='unix/crx-qal_unix.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-qal_unix.o `test -f 'unix/qal_unix.c' || echo '$(srcdir)/'`unix/qal_unix.c - -unix/crx-qal_unix.obj: unix/qal_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-qal_unix.obj -MD -MP -MF unix/$(DEPDIR)/crx-qal_unix.Tpo -c -o unix/crx-qal_unix.obj `if test -f 'unix/qal_unix.c'; then $(CYGPATH_W) 'unix/qal_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/qal_unix.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-qal_unix.Tpo unix/$(DEPDIR)/crx-qal_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/qal_unix.c' object='unix/crx-qal_unix.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-qal_unix.obj `if test -f 'unix/qal_unix.c'; then $(CYGPATH_W) 'unix/qal_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/qal_unix.c'; fi` - -unix/crx-qgl_unix.o: unix/qgl_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-qgl_unix.o -MD -MP -MF unix/$(DEPDIR)/crx-qgl_unix.Tpo -c -o unix/crx-qgl_unix.o `test -f 'unix/qgl_unix.c' || echo '$(srcdir)/'`unix/qgl_unix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-qgl_unix.Tpo unix/$(DEPDIR)/crx-qgl_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/qgl_unix.c' object='unix/crx-qgl_unix.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-qgl_unix.o `test -f 'unix/qgl_unix.c' || echo '$(srcdir)/'`unix/qgl_unix.c - -unix/crx-qgl_unix.obj: unix/qgl_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-qgl_unix.obj -MD -MP -MF unix/$(DEPDIR)/crx-qgl_unix.Tpo -c -o unix/crx-qgl_unix.obj `if test -f 'unix/qgl_unix.c'; then $(CYGPATH_W) 'unix/qgl_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/qgl_unix.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-qgl_unix.Tpo unix/$(DEPDIR)/crx-qgl_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/qgl_unix.c' object='unix/crx-qgl_unix.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-qgl_unix.obj `if test -f 'unix/qgl_unix.c'; then $(CYGPATH_W) 'unix/qgl_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/qgl_unix.c'; fi` - -unix/crx-q_shunix.o: unix/q_shunix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-q_shunix.o -MD -MP -MF unix/$(DEPDIR)/crx-q_shunix.Tpo -c -o unix/crx-q_shunix.o `test -f 'unix/q_shunix.c' || echo '$(srcdir)/'`unix/q_shunix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-q_shunix.Tpo unix/$(DEPDIR)/crx-q_shunix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/q_shunix.c' object='unix/crx-q_shunix.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-q_shunix.o `test -f 'unix/q_shunix.c' || echo '$(srcdir)/'`unix/q_shunix.c - -unix/crx-q_shunix.obj: unix/q_shunix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-q_shunix.obj -MD -MP -MF unix/$(DEPDIR)/crx-q_shunix.Tpo -c -o unix/crx-q_shunix.obj `if test -f 'unix/q_shunix.c'; then $(CYGPATH_W) 'unix/q_shunix.c'; else $(CYGPATH_W) '$(srcdir)/unix/q_shunix.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-q_shunix.Tpo unix/$(DEPDIR)/crx-q_shunix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/q_shunix.c' object='unix/crx-q_shunix.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-q_shunix.obj `if test -f 'unix/q_shunix.c'; then $(CYGPATH_W) 'unix/q_shunix.c'; else $(CYGPATH_W) '$(srcdir)/unix/q_shunix.c'; fi` - -unix/crx-rw_unix.o: unix/rw_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-rw_unix.o -MD -MP -MF unix/$(DEPDIR)/crx-rw_unix.Tpo -c -o unix/crx-rw_unix.o `test -f 'unix/rw_unix.c' || echo '$(srcdir)/'`unix/rw_unix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-rw_unix.Tpo unix/$(DEPDIR)/crx-rw_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/rw_unix.c' object='unix/crx-rw_unix.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-rw_unix.o `test -f 'unix/rw_unix.c' || echo '$(srcdir)/'`unix/rw_unix.c - -unix/crx-rw_unix.obj: unix/rw_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-rw_unix.obj -MD -MP -MF unix/$(DEPDIR)/crx-rw_unix.Tpo -c -o unix/crx-rw_unix.obj `if test -f 'unix/rw_unix.c'; then $(CYGPATH_W) 'unix/rw_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/rw_unix.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-rw_unix.Tpo unix/$(DEPDIR)/crx-rw_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/rw_unix.c' object='unix/crx-rw_unix.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-rw_unix.obj `if test -f 'unix/rw_unix.c'; then $(CYGPATH_W) 'unix/rw_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/rw_unix.c'; fi` - -unix/crx-sys_unix.o: unix/sys_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-sys_unix.o -MD -MP -MF unix/$(DEPDIR)/crx-sys_unix.Tpo -c -o unix/crx-sys_unix.o `test -f 'unix/sys_unix.c' || echo '$(srcdir)/'`unix/sys_unix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-sys_unix.Tpo unix/$(DEPDIR)/crx-sys_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/sys_unix.c' object='unix/crx-sys_unix.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-sys_unix.o `test -f 'unix/sys_unix.c' || echo '$(srcdir)/'`unix/sys_unix.c - -unix/crx-sys_unix.obj: unix/sys_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-sys_unix.obj -MD -MP -MF unix/$(DEPDIR)/crx-sys_unix.Tpo -c -o unix/crx-sys_unix.obj `if test -f 'unix/sys_unix.c'; then $(CYGPATH_W) 'unix/sys_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/sys_unix.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-sys_unix.Tpo unix/$(DEPDIR)/crx-sys_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/sys_unix.c' object='unix/crx-sys_unix.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-sys_unix.obj `if test -f 'unix/sys_unix.c'; then $(CYGPATH_W) 'unix/sys_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/sys_unix.c'; fi` - -unix/crx-vid_so.o: unix/vid_so.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-vid_so.o -MD -MP -MF unix/$(DEPDIR)/crx-vid_so.Tpo -c -o unix/crx-vid_so.o `test -f 'unix/vid_so.c' || echo '$(srcdir)/'`unix/vid_so.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-vid_so.Tpo unix/$(DEPDIR)/crx-vid_so.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/vid_so.c' object='unix/crx-vid_so.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-vid_so.o `test -f 'unix/vid_so.c' || echo '$(srcdir)/'`unix/vid_so.c - -unix/crx-vid_so.obj: unix/vid_so.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx-vid_so.obj -MD -MP -MF unix/$(DEPDIR)/crx-vid_so.Tpo -c -o unix/crx-vid_so.obj `if test -f 'unix/vid_so.c'; then $(CYGPATH_W) 'unix/vid_so.c'; else $(CYGPATH_W) '$(srcdir)/unix/vid_so.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx-vid_so.Tpo unix/$(DEPDIR)/crx-vid_so.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/vid_so.c' object='unix/crx-vid_so.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx-vid_so.obj `if test -f 'unix/vid_so.c'; then $(CYGPATH_W) 'unix/vid_so.c'; else $(CYGPATH_W) '$(srcdir)/unix/vid_so.c'; fi` - -win32/crx-conproc.o: win32/conproc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-conproc.o -MD -MP -MF win32/$(DEPDIR)/crx-conproc.Tpo -c -o win32/crx-conproc.o `test -f 'win32/conproc.c' || echo '$(srcdir)/'`win32/conproc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-conproc.Tpo win32/$(DEPDIR)/crx-conproc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/conproc.c' object='win32/crx-conproc.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-conproc.o `test -f 'win32/conproc.c' || echo '$(srcdir)/'`win32/conproc.c - -win32/crx-conproc.obj: win32/conproc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-conproc.obj -MD -MP -MF win32/$(DEPDIR)/crx-conproc.Tpo -c -o win32/crx-conproc.obj `if test -f 'win32/conproc.c'; then $(CYGPATH_W) 'win32/conproc.c'; else $(CYGPATH_W) '$(srcdir)/win32/conproc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-conproc.Tpo win32/$(DEPDIR)/crx-conproc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/conproc.c' object='win32/crx-conproc.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-conproc.obj `if test -f 'win32/conproc.c'; then $(CYGPATH_W) 'win32/conproc.c'; else $(CYGPATH_W) '$(srcdir)/win32/conproc.c'; fi` - -win32/crx-glw_imp.o: win32/glw_imp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-glw_imp.o -MD -MP -MF win32/$(DEPDIR)/crx-glw_imp.Tpo -c -o win32/crx-glw_imp.o `test -f 'win32/glw_imp.c' || echo '$(srcdir)/'`win32/glw_imp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-glw_imp.Tpo win32/$(DEPDIR)/crx-glw_imp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/glw_imp.c' object='win32/crx-glw_imp.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-glw_imp.o `test -f 'win32/glw_imp.c' || echo '$(srcdir)/'`win32/glw_imp.c - -win32/crx-glw_imp.obj: win32/glw_imp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-glw_imp.obj -MD -MP -MF win32/$(DEPDIR)/crx-glw_imp.Tpo -c -o win32/crx-glw_imp.obj `if test -f 'win32/glw_imp.c'; then $(CYGPATH_W) 'win32/glw_imp.c'; else $(CYGPATH_W) '$(srcdir)/win32/glw_imp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-glw_imp.Tpo win32/$(DEPDIR)/crx-glw_imp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/glw_imp.c' object='win32/crx-glw_imp.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-glw_imp.obj `if test -f 'win32/glw_imp.c'; then $(CYGPATH_W) 'win32/glw_imp.c'; else $(CYGPATH_W) '$(srcdir)/win32/glw_imp.c'; fi` - -win32/crx-in_win.o: win32/in_win.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-in_win.o -MD -MP -MF win32/$(DEPDIR)/crx-in_win.Tpo -c -o win32/crx-in_win.o `test -f 'win32/in_win.c' || echo '$(srcdir)/'`win32/in_win.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-in_win.Tpo win32/$(DEPDIR)/crx-in_win.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/in_win.c' object='win32/crx-in_win.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-in_win.o `test -f 'win32/in_win.c' || echo '$(srcdir)/'`win32/in_win.c - -win32/crx-in_win.obj: win32/in_win.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-in_win.obj -MD -MP -MF win32/$(DEPDIR)/crx-in_win.Tpo -c -o win32/crx-in_win.obj `if test -f 'win32/in_win.c'; then $(CYGPATH_W) 'win32/in_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/in_win.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-in_win.Tpo win32/$(DEPDIR)/crx-in_win.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/in_win.c' object='win32/crx-in_win.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-in_win.obj `if test -f 'win32/in_win.c'; then $(CYGPATH_W) 'win32/in_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/in_win.c'; fi` - -win32/crx-net_wins.o: win32/net_wins.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-net_wins.o -MD -MP -MF win32/$(DEPDIR)/crx-net_wins.Tpo -c -o win32/crx-net_wins.o `test -f 'win32/net_wins.c' || echo '$(srcdir)/'`win32/net_wins.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-net_wins.Tpo win32/$(DEPDIR)/crx-net_wins.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/net_wins.c' object='win32/crx-net_wins.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-net_wins.o `test -f 'win32/net_wins.c' || echo '$(srcdir)/'`win32/net_wins.c - -win32/crx-net_wins.obj: win32/net_wins.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-net_wins.obj -MD -MP -MF win32/$(DEPDIR)/crx-net_wins.Tpo -c -o win32/crx-net_wins.obj `if test -f 'win32/net_wins.c'; then $(CYGPATH_W) 'win32/net_wins.c'; else $(CYGPATH_W) '$(srcdir)/win32/net_wins.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-net_wins.Tpo win32/$(DEPDIR)/crx-net_wins.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/net_wins.c' object='win32/crx-net_wins.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-net_wins.obj `if test -f 'win32/net_wins.c'; then $(CYGPATH_W) 'win32/net_wins.c'; else $(CYGPATH_W) '$(srcdir)/win32/net_wins.c'; fi` - -win32/crx-qal_win.o: win32/qal_win.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-qal_win.o -MD -MP -MF win32/$(DEPDIR)/crx-qal_win.Tpo -c -o win32/crx-qal_win.o `test -f 'win32/qal_win.c' || echo '$(srcdir)/'`win32/qal_win.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-qal_win.Tpo win32/$(DEPDIR)/crx-qal_win.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/qal_win.c' object='win32/crx-qal_win.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-qal_win.o `test -f 'win32/qal_win.c' || echo '$(srcdir)/'`win32/qal_win.c - -win32/crx-qal_win.obj: win32/qal_win.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-qal_win.obj -MD -MP -MF win32/$(DEPDIR)/crx-qal_win.Tpo -c -o win32/crx-qal_win.obj `if test -f 'win32/qal_win.c'; then $(CYGPATH_W) 'win32/qal_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/qal_win.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-qal_win.Tpo win32/$(DEPDIR)/crx-qal_win.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/qal_win.c' object='win32/crx-qal_win.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-qal_win.obj `if test -f 'win32/qal_win.c'; then $(CYGPATH_W) 'win32/qal_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/qal_win.c'; fi` - -win32/crx-qgl_win.o: win32/qgl_win.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-qgl_win.o -MD -MP -MF win32/$(DEPDIR)/crx-qgl_win.Tpo -c -o win32/crx-qgl_win.o `test -f 'win32/qgl_win.c' || echo '$(srcdir)/'`win32/qgl_win.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-qgl_win.Tpo win32/$(DEPDIR)/crx-qgl_win.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/qgl_win.c' object='win32/crx-qgl_win.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-qgl_win.o `test -f 'win32/qgl_win.c' || echo '$(srcdir)/'`win32/qgl_win.c - -win32/crx-qgl_win.obj: win32/qgl_win.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-qgl_win.obj -MD -MP -MF win32/$(DEPDIR)/crx-qgl_win.Tpo -c -o win32/crx-qgl_win.obj `if test -f 'win32/qgl_win.c'; then $(CYGPATH_W) 'win32/qgl_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/qgl_win.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-qgl_win.Tpo win32/$(DEPDIR)/crx-qgl_win.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/qgl_win.c' object='win32/crx-qgl_win.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-qgl_win.obj `if test -f 'win32/qgl_win.c'; then $(CYGPATH_W) 'win32/qgl_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/qgl_win.c'; fi` - -win32/crx-q_shwin.o: win32/q_shwin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-q_shwin.o -MD -MP -MF win32/$(DEPDIR)/crx-q_shwin.Tpo -c -o win32/crx-q_shwin.o `test -f 'win32/q_shwin.c' || echo '$(srcdir)/'`win32/q_shwin.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-q_shwin.Tpo win32/$(DEPDIR)/crx-q_shwin.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/q_shwin.c' object='win32/crx-q_shwin.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-q_shwin.o `test -f 'win32/q_shwin.c' || echo '$(srcdir)/'`win32/q_shwin.c - -win32/crx-q_shwin.obj: win32/q_shwin.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-q_shwin.obj -MD -MP -MF win32/$(DEPDIR)/crx-q_shwin.Tpo -c -o win32/crx-q_shwin.obj `if test -f 'win32/q_shwin.c'; then $(CYGPATH_W) 'win32/q_shwin.c'; else $(CYGPATH_W) '$(srcdir)/win32/q_shwin.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-q_shwin.Tpo win32/$(DEPDIR)/crx-q_shwin.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/q_shwin.c' object='win32/crx-q_shwin.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-q_shwin.obj `if test -f 'win32/q_shwin.c'; then $(CYGPATH_W) 'win32/q_shwin.c'; else $(CYGPATH_W) '$(srcdir)/win32/q_shwin.c'; fi` - -win32/crx-sys_win.o: win32/sys_win.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-sys_win.o -MD -MP -MF win32/$(DEPDIR)/crx-sys_win.Tpo -c -o win32/crx-sys_win.o `test -f 'win32/sys_win.c' || echo '$(srcdir)/'`win32/sys_win.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-sys_win.Tpo win32/$(DEPDIR)/crx-sys_win.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/sys_win.c' object='win32/crx-sys_win.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-sys_win.o `test -f 'win32/sys_win.c' || echo '$(srcdir)/'`win32/sys_win.c - -win32/crx-sys_win.obj: win32/sys_win.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-sys_win.obj -MD -MP -MF win32/$(DEPDIR)/crx-sys_win.Tpo -c -o win32/crx-sys_win.obj `if test -f 'win32/sys_win.c'; then $(CYGPATH_W) 'win32/sys_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/sys_win.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-sys_win.Tpo win32/$(DEPDIR)/crx-sys_win.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/sys_win.c' object='win32/crx-sys_win.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-sys_win.obj `if test -f 'win32/sys_win.c'; then $(CYGPATH_W) 'win32/sys_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/sys_win.c'; fi` - -win32/crx-vid_dll.o: win32/vid_dll.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-vid_dll.o -MD -MP -MF win32/$(DEPDIR)/crx-vid_dll.Tpo -c -o win32/crx-vid_dll.o `test -f 'win32/vid_dll.c' || echo '$(srcdir)/'`win32/vid_dll.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-vid_dll.Tpo win32/$(DEPDIR)/crx-vid_dll.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/vid_dll.c' object='win32/crx-vid_dll.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-vid_dll.o `test -f 'win32/vid_dll.c' || echo '$(srcdir)/'`win32/vid_dll.c - -win32/crx-vid_dll.obj: win32/vid_dll.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/crx-vid_dll.obj -MD -MP -MF win32/$(DEPDIR)/crx-vid_dll.Tpo -c -o win32/crx-vid_dll.obj `if test -f 'win32/vid_dll.c'; then $(CYGPATH_W) 'win32/vid_dll.c'; else $(CYGPATH_W) '$(srcdir)/win32/vid_dll.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/crx-vid_dll.Tpo win32/$(DEPDIR)/crx-vid_dll.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='win32/vid_dll.c' object='win32/crx-vid_dll.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/crx-vid_dll.obj `if test -f 'win32/vid_dll.c'; then $(CYGPATH_W) 'win32/vid_dll.c'; else $(CYGPATH_W) '$(srcdir)/win32/vid_dll.c'; fi` - -game/crx_ded-q_shared.o: game/q_shared.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT game/crx_ded-q_shared.o -MD -MP -MF game/$(DEPDIR)/crx_ded-q_shared.Tpo -c -o game/crx_ded-q_shared.o `test -f 'game/q_shared.c' || echo '$(srcdir)/'`game/q_shared.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) game/$(DEPDIR)/crx_ded-q_shared.Tpo game/$(DEPDIR)/crx_ded-q_shared.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='game/q_shared.c' object='game/crx_ded-q_shared.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o game/crx_ded-q_shared.o `test -f 'game/q_shared.c' || echo '$(srcdir)/'`game/q_shared.c - -game/crx_ded-q_shared.obj: game/q_shared.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT game/crx_ded-q_shared.obj -MD -MP -MF game/$(DEPDIR)/crx_ded-q_shared.Tpo -c -o game/crx_ded-q_shared.obj `if test -f 'game/q_shared.c'; then $(CYGPATH_W) 'game/q_shared.c'; else $(CYGPATH_W) '$(srcdir)/game/q_shared.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) game/$(DEPDIR)/crx_ded-q_shared.Tpo game/$(DEPDIR)/crx_ded-q_shared.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='game/q_shared.c' object='game/crx_ded-q_shared.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o game/crx_ded-q_shared.obj `if test -f 'game/q_shared.c'; then $(CYGPATH_W) 'game/q_shared.c'; else $(CYGPATH_W) '$(srcdir)/game/q_shared.c'; fi` - -null/crx_ded-cl_null.o: null/cl_null.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT null/crx_ded-cl_null.o -MD -MP -MF null/$(DEPDIR)/crx_ded-cl_null.Tpo -c -o null/crx_ded-cl_null.o `test -f 'null/cl_null.c' || echo '$(srcdir)/'`null/cl_null.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) null/$(DEPDIR)/crx_ded-cl_null.Tpo null/$(DEPDIR)/crx_ded-cl_null.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='null/cl_null.c' object='null/crx_ded-cl_null.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o null/crx_ded-cl_null.o `test -f 'null/cl_null.c' || echo '$(srcdir)/'`null/cl_null.c - -null/crx_ded-cl_null.obj: null/cl_null.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT null/crx_ded-cl_null.obj -MD -MP -MF null/$(DEPDIR)/crx_ded-cl_null.Tpo -c -o null/crx_ded-cl_null.obj `if test -f 'null/cl_null.c'; then $(CYGPATH_W) 'null/cl_null.c'; else $(CYGPATH_W) '$(srcdir)/null/cl_null.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) null/$(DEPDIR)/crx_ded-cl_null.Tpo null/$(DEPDIR)/crx_ded-cl_null.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='null/cl_null.c' object='null/crx_ded-cl_null.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o null/crx_ded-cl_null.obj `if test -f 'null/cl_null.c'; then $(CYGPATH_W) 'null/cl_null.c'; else $(CYGPATH_W) '$(srcdir)/null/cl_null.c'; fi` - -qcommon/crx_ded-cmd.o: qcommon/cmd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-cmd.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-cmd.Tpo -c -o qcommon/crx_ded-cmd.o `test -f 'qcommon/cmd.c' || echo '$(srcdir)/'`qcommon/cmd.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-cmd.Tpo qcommon/$(DEPDIR)/crx_ded-cmd.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cmd.c' object='qcommon/crx_ded-cmd.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-cmd.o `test -f 'qcommon/cmd.c' || echo '$(srcdir)/'`qcommon/cmd.c - -qcommon/crx_ded-cmd.obj: qcommon/cmd.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-cmd.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-cmd.Tpo -c -o qcommon/crx_ded-cmd.obj `if test -f 'qcommon/cmd.c'; then $(CYGPATH_W) 'qcommon/cmd.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmd.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-cmd.Tpo qcommon/$(DEPDIR)/crx_ded-cmd.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cmd.c' object='qcommon/crx_ded-cmd.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-cmd.obj `if test -f 'qcommon/cmd.c'; then $(CYGPATH_W) 'qcommon/cmd.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmd.c'; fi` - -qcommon/crx_ded-cmodel.o: qcommon/cmodel.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-cmodel.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-cmodel.Tpo -c -o qcommon/crx_ded-cmodel.o `test -f 'qcommon/cmodel.c' || echo '$(srcdir)/'`qcommon/cmodel.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-cmodel.Tpo qcommon/$(DEPDIR)/crx_ded-cmodel.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cmodel.c' object='qcommon/crx_ded-cmodel.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-cmodel.o `test -f 'qcommon/cmodel.c' || echo '$(srcdir)/'`qcommon/cmodel.c - -qcommon/crx_ded-cmodel.obj: qcommon/cmodel.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-cmodel.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-cmodel.Tpo -c -o qcommon/crx_ded-cmodel.obj `if test -f 'qcommon/cmodel.c'; then $(CYGPATH_W) 'qcommon/cmodel.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmodel.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-cmodel.Tpo qcommon/$(DEPDIR)/crx_ded-cmodel.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cmodel.c' object='qcommon/crx_ded-cmodel.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-cmodel.obj `if test -f 'qcommon/cmodel.c'; then $(CYGPATH_W) 'qcommon/cmodel.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmodel.c'; fi` - -qcommon/crx_ded-common.o: qcommon/common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-common.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-common.Tpo -c -o qcommon/crx_ded-common.o `test -f 'qcommon/common.c' || echo '$(srcdir)/'`qcommon/common.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-common.Tpo qcommon/$(DEPDIR)/crx_ded-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/common.c' object='qcommon/crx_ded-common.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-common.o `test -f 'qcommon/common.c' || echo '$(srcdir)/'`qcommon/common.c - -qcommon/crx_ded-common.obj: qcommon/common.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-common.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-common.Tpo -c -o qcommon/crx_ded-common.obj `if test -f 'qcommon/common.c'; then $(CYGPATH_W) 'qcommon/common.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/common.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-common.Tpo qcommon/$(DEPDIR)/crx_ded-common.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/common.c' object='qcommon/crx_ded-common.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-common.obj `if test -f 'qcommon/common.c'; then $(CYGPATH_W) 'qcommon/common.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/common.c'; fi` - -qcommon/crx_ded-crc.o: qcommon/crc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-crc.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-crc.Tpo -c -o qcommon/crx_ded-crc.o `test -f 'qcommon/crc.c' || echo '$(srcdir)/'`qcommon/crc.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-crc.Tpo qcommon/$(DEPDIR)/crx_ded-crc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/crc.c' object='qcommon/crx_ded-crc.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-crc.o `test -f 'qcommon/crc.c' || echo '$(srcdir)/'`qcommon/crc.c - -qcommon/crx_ded-crc.obj: qcommon/crc.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-crc.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-crc.Tpo -c -o qcommon/crx_ded-crc.obj `if test -f 'qcommon/crc.c'; then $(CYGPATH_W) 'qcommon/crc.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/crc.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-crc.Tpo qcommon/$(DEPDIR)/crx_ded-crc.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/crc.c' object='qcommon/crx_ded-crc.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-crc.obj `if test -f 'qcommon/crc.c'; then $(CYGPATH_W) 'qcommon/crc.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/crc.c'; fi` - -qcommon/crx_ded-cvar.o: qcommon/cvar.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-cvar.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-cvar.Tpo -c -o qcommon/crx_ded-cvar.o `test -f 'qcommon/cvar.c' || echo '$(srcdir)/'`qcommon/cvar.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-cvar.Tpo qcommon/$(DEPDIR)/crx_ded-cvar.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cvar.c' object='qcommon/crx_ded-cvar.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-cvar.o `test -f 'qcommon/cvar.c' || echo '$(srcdir)/'`qcommon/cvar.c - -qcommon/crx_ded-cvar.obj: qcommon/cvar.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-cvar.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-cvar.Tpo -c -o qcommon/crx_ded-cvar.obj `if test -f 'qcommon/cvar.c'; then $(CYGPATH_W) 'qcommon/cvar.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cvar.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-cvar.Tpo qcommon/$(DEPDIR)/crx_ded-cvar.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/cvar.c' object='qcommon/crx_ded-cvar.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-cvar.obj `if test -f 'qcommon/cvar.c'; then $(CYGPATH_W) 'qcommon/cvar.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cvar.c'; fi` - -qcommon/crx_ded-files.o: qcommon/files.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-files.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-files.Tpo -c -o qcommon/crx_ded-files.o `test -f 'qcommon/files.c' || echo '$(srcdir)/'`qcommon/files.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-files.Tpo qcommon/$(DEPDIR)/crx_ded-files.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/files.c' object='qcommon/crx_ded-files.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-files.o `test -f 'qcommon/files.c' || echo '$(srcdir)/'`qcommon/files.c - -qcommon/crx_ded-files.obj: qcommon/files.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-files.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-files.Tpo -c -o qcommon/crx_ded-files.obj `if test -f 'qcommon/files.c'; then $(CYGPATH_W) 'qcommon/files.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/files.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-files.Tpo qcommon/$(DEPDIR)/crx_ded-files.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/files.c' object='qcommon/crx_ded-files.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-files.obj `if test -f 'qcommon/files.c'; then $(CYGPATH_W) 'qcommon/files.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/files.c'; fi` - -qcommon/crx_ded-htable.o: qcommon/htable.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-htable.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-htable.Tpo -c -o qcommon/crx_ded-htable.o `test -f 'qcommon/htable.c' || echo '$(srcdir)/'`qcommon/htable.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-htable.Tpo qcommon/$(DEPDIR)/crx_ded-htable.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/htable.c' object='qcommon/crx_ded-htable.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-htable.o `test -f 'qcommon/htable.c' || echo '$(srcdir)/'`qcommon/htable.c - -qcommon/crx_ded-htable.obj: qcommon/htable.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-htable.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-htable.Tpo -c -o qcommon/crx_ded-htable.obj `if test -f 'qcommon/htable.c'; then $(CYGPATH_W) 'qcommon/htable.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/htable.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-htable.Tpo qcommon/$(DEPDIR)/crx_ded-htable.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/htable.c' object='qcommon/crx_ded-htable.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-htable.obj `if test -f 'qcommon/htable.c'; then $(CYGPATH_W) 'qcommon/htable.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/htable.c'; fi` - -qcommon/crx_ded-mdfour.o: qcommon/mdfour.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-mdfour.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-mdfour.Tpo -c -o qcommon/crx_ded-mdfour.o `test -f 'qcommon/mdfour.c' || echo '$(srcdir)/'`qcommon/mdfour.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-mdfour.Tpo qcommon/$(DEPDIR)/crx_ded-mdfour.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/mdfour.c' object='qcommon/crx_ded-mdfour.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-mdfour.o `test -f 'qcommon/mdfour.c' || echo '$(srcdir)/'`qcommon/mdfour.c - -qcommon/crx_ded-mdfour.obj: qcommon/mdfour.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-mdfour.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-mdfour.Tpo -c -o qcommon/crx_ded-mdfour.obj `if test -f 'qcommon/mdfour.c'; then $(CYGPATH_W) 'qcommon/mdfour.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/mdfour.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-mdfour.Tpo qcommon/$(DEPDIR)/crx_ded-mdfour.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/mdfour.c' object='qcommon/crx_ded-mdfour.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-mdfour.obj `if test -f 'qcommon/mdfour.c'; then $(CYGPATH_W) 'qcommon/mdfour.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/mdfour.c'; fi` - -qcommon/crx_ded-net_chan.o: qcommon/net_chan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-net_chan.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-net_chan.Tpo -c -o qcommon/crx_ded-net_chan.o `test -f 'qcommon/net_chan.c' || echo '$(srcdir)/'`qcommon/net_chan.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-net_chan.Tpo qcommon/$(DEPDIR)/crx_ded-net_chan.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/net_chan.c' object='qcommon/crx_ded-net_chan.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-net_chan.o `test -f 'qcommon/net_chan.c' || echo '$(srcdir)/'`qcommon/net_chan.c - -qcommon/crx_ded-net_chan.obj: qcommon/net_chan.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-net_chan.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-net_chan.Tpo -c -o qcommon/crx_ded-net_chan.obj `if test -f 'qcommon/net_chan.c'; then $(CYGPATH_W) 'qcommon/net_chan.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/net_chan.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-net_chan.Tpo qcommon/$(DEPDIR)/crx_ded-net_chan.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/net_chan.c' object='qcommon/crx_ded-net_chan.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-net_chan.obj `if test -f 'qcommon/net_chan.c'; then $(CYGPATH_W) 'qcommon/net_chan.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/net_chan.c'; fi` - -qcommon/crx_ded-pmove.o: qcommon/pmove.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-pmove.o -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-pmove.Tpo -c -o qcommon/crx_ded-pmove.o `test -f 'qcommon/pmove.c' || echo '$(srcdir)/'`qcommon/pmove.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-pmove.Tpo qcommon/$(DEPDIR)/crx_ded-pmove.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/pmove.c' object='qcommon/crx_ded-pmove.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-pmove.o `test -f 'qcommon/pmove.c' || echo '$(srcdir)/'`qcommon/pmove.c - -qcommon/crx_ded-pmove.obj: qcommon/pmove.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/crx_ded-pmove.obj -MD -MP -MF qcommon/$(DEPDIR)/crx_ded-pmove.Tpo -c -o qcommon/crx_ded-pmove.obj `if test -f 'qcommon/pmove.c'; then $(CYGPATH_W) 'qcommon/pmove.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/pmove.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/crx_ded-pmove.Tpo qcommon/$(DEPDIR)/crx_ded-pmove.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='qcommon/pmove.c' object='qcommon/crx_ded-pmove.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/crx_ded-pmove.obj `if test -f 'qcommon/pmove.c'; then $(CYGPATH_W) 'qcommon/pmove.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/pmove.c'; fi` - -server/crx_ded-sv_ccmds.o: server/sv_ccmds.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_ccmds.o -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_ccmds.Tpo -c -o server/crx_ded-sv_ccmds.o `test -f 'server/sv_ccmds.c' || echo '$(srcdir)/'`server/sv_ccmds.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_ccmds.Tpo server/$(DEPDIR)/crx_ded-sv_ccmds.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_ccmds.c' object='server/crx_ded-sv_ccmds.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_ccmds.o `test -f 'server/sv_ccmds.c' || echo '$(srcdir)/'`server/sv_ccmds.c - -server/crx_ded-sv_ccmds.obj: server/sv_ccmds.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_ccmds.obj -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_ccmds.Tpo -c -o server/crx_ded-sv_ccmds.obj `if test -f 'server/sv_ccmds.c'; then $(CYGPATH_W) 'server/sv_ccmds.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ccmds.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_ccmds.Tpo server/$(DEPDIR)/crx_ded-sv_ccmds.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_ccmds.c' object='server/crx_ded-sv_ccmds.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_ccmds.obj `if test -f 'server/sv_ccmds.c'; then $(CYGPATH_W) 'server/sv_ccmds.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ccmds.c'; fi` - -server/crx_ded-sv_ents.o: server/sv_ents.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_ents.o -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_ents.Tpo -c -o server/crx_ded-sv_ents.o `test -f 'server/sv_ents.c' || echo '$(srcdir)/'`server/sv_ents.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_ents.Tpo server/$(DEPDIR)/crx_ded-sv_ents.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_ents.c' object='server/crx_ded-sv_ents.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_ents.o `test -f 'server/sv_ents.c' || echo '$(srcdir)/'`server/sv_ents.c - -server/crx_ded-sv_ents.obj: server/sv_ents.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_ents.obj -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_ents.Tpo -c -o server/crx_ded-sv_ents.obj `if test -f 'server/sv_ents.c'; then $(CYGPATH_W) 'server/sv_ents.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ents.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_ents.Tpo server/$(DEPDIR)/crx_ded-sv_ents.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_ents.c' object='server/crx_ded-sv_ents.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_ents.obj `if test -f 'server/sv_ents.c'; then $(CYGPATH_W) 'server/sv_ents.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ents.c'; fi` - -server/crx_ded-sv_game.o: server/sv_game.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_game.o -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_game.Tpo -c -o server/crx_ded-sv_game.o `test -f 'server/sv_game.c' || echo '$(srcdir)/'`server/sv_game.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_game.Tpo server/$(DEPDIR)/crx_ded-sv_game.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_game.c' object='server/crx_ded-sv_game.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_game.o `test -f 'server/sv_game.c' || echo '$(srcdir)/'`server/sv_game.c - -server/crx_ded-sv_game.obj: server/sv_game.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_game.obj -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_game.Tpo -c -o server/crx_ded-sv_game.obj `if test -f 'server/sv_game.c'; then $(CYGPATH_W) 'server/sv_game.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_game.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_game.Tpo server/$(DEPDIR)/crx_ded-sv_game.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_game.c' object='server/crx_ded-sv_game.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_game.obj `if test -f 'server/sv_game.c'; then $(CYGPATH_W) 'server/sv_game.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_game.c'; fi` - -server/crx_ded-sv_init.o: server/sv_init.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_init.o -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_init.Tpo -c -o server/crx_ded-sv_init.o `test -f 'server/sv_init.c' || echo '$(srcdir)/'`server/sv_init.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_init.Tpo server/$(DEPDIR)/crx_ded-sv_init.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_init.c' object='server/crx_ded-sv_init.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_init.o `test -f 'server/sv_init.c' || echo '$(srcdir)/'`server/sv_init.c - -server/crx_ded-sv_init.obj: server/sv_init.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_init.obj -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_init.Tpo -c -o server/crx_ded-sv_init.obj `if test -f 'server/sv_init.c'; then $(CYGPATH_W) 'server/sv_init.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_init.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_init.Tpo server/$(DEPDIR)/crx_ded-sv_init.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_init.c' object='server/crx_ded-sv_init.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_init.obj `if test -f 'server/sv_init.c'; then $(CYGPATH_W) 'server/sv_init.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_init.c'; fi` - -server/crx_ded-sv_main.o: server/sv_main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_main.o -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_main.Tpo -c -o server/crx_ded-sv_main.o `test -f 'server/sv_main.c' || echo '$(srcdir)/'`server/sv_main.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_main.Tpo server/$(DEPDIR)/crx_ded-sv_main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_main.c' object='server/crx_ded-sv_main.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_main.o `test -f 'server/sv_main.c' || echo '$(srcdir)/'`server/sv_main.c - -server/crx_ded-sv_main.obj: server/sv_main.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_main.obj -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_main.Tpo -c -o server/crx_ded-sv_main.obj `if test -f 'server/sv_main.c'; then $(CYGPATH_W) 'server/sv_main.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_main.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_main.Tpo server/$(DEPDIR)/crx_ded-sv_main.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_main.c' object='server/crx_ded-sv_main.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_main.obj `if test -f 'server/sv_main.c'; then $(CYGPATH_W) 'server/sv_main.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_main.c'; fi` - -server/crx_ded-sv_send.o: server/sv_send.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_send.o -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_send.Tpo -c -o server/crx_ded-sv_send.o `test -f 'server/sv_send.c' || echo '$(srcdir)/'`server/sv_send.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_send.Tpo server/$(DEPDIR)/crx_ded-sv_send.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_send.c' object='server/crx_ded-sv_send.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_send.o `test -f 'server/sv_send.c' || echo '$(srcdir)/'`server/sv_send.c - -server/crx_ded-sv_send.obj: server/sv_send.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_send.obj -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_send.Tpo -c -o server/crx_ded-sv_send.obj `if test -f 'server/sv_send.c'; then $(CYGPATH_W) 'server/sv_send.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_send.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_send.Tpo server/$(DEPDIR)/crx_ded-sv_send.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_send.c' object='server/crx_ded-sv_send.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_send.obj `if test -f 'server/sv_send.c'; then $(CYGPATH_W) 'server/sv_send.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_send.c'; fi` - -server/crx_ded-sv_user.o: server/sv_user.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_user.o -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_user.Tpo -c -o server/crx_ded-sv_user.o `test -f 'server/sv_user.c' || echo '$(srcdir)/'`server/sv_user.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_user.Tpo server/$(DEPDIR)/crx_ded-sv_user.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_user.c' object='server/crx_ded-sv_user.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_user.o `test -f 'server/sv_user.c' || echo '$(srcdir)/'`server/sv_user.c - -server/crx_ded-sv_user.obj: server/sv_user.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_user.obj -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_user.Tpo -c -o server/crx_ded-sv_user.obj `if test -f 'server/sv_user.c'; then $(CYGPATH_W) 'server/sv_user.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_user.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_user.Tpo server/$(DEPDIR)/crx_ded-sv_user.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_user.c' object='server/crx_ded-sv_user.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_user.obj `if test -f 'server/sv_user.c'; then $(CYGPATH_W) 'server/sv_user.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_user.c'; fi` - -server/crx_ded-sv_world.o: server/sv_world.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_world.o -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_world.Tpo -c -o server/crx_ded-sv_world.o `test -f 'server/sv_world.c' || echo '$(srcdir)/'`server/sv_world.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_world.Tpo server/$(DEPDIR)/crx_ded-sv_world.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_world.c' object='server/crx_ded-sv_world.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_world.o `test -f 'server/sv_world.c' || echo '$(srcdir)/'`server/sv_world.c - -server/crx_ded-sv_world.obj: server/sv_world.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/crx_ded-sv_world.obj -MD -MP -MF server/$(DEPDIR)/crx_ded-sv_world.Tpo -c -o server/crx_ded-sv_world.obj `if test -f 'server/sv_world.c'; then $(CYGPATH_W) 'server/sv_world.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_world.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/crx_ded-sv_world.Tpo server/$(DEPDIR)/crx_ded-sv_world.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='server/sv_world.c' object='server/crx_ded-sv_world.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/crx_ded-sv_world.obj `if test -f 'server/sv_world.c'; then $(CYGPATH_W) 'server/sv_world.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_world.c'; fi` - -unix/crx_ded-glob.o: unix/glob.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx_ded-glob.o -MD -MP -MF unix/$(DEPDIR)/crx_ded-glob.Tpo -c -o unix/crx_ded-glob.o `test -f 'unix/glob.c' || echo '$(srcdir)/'`unix/glob.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx_ded-glob.Tpo unix/$(DEPDIR)/crx_ded-glob.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/glob.c' object='unix/crx_ded-glob.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx_ded-glob.o `test -f 'unix/glob.c' || echo '$(srcdir)/'`unix/glob.c - -unix/crx_ded-glob.obj: unix/glob.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx_ded-glob.obj -MD -MP -MF unix/$(DEPDIR)/crx_ded-glob.Tpo -c -o unix/crx_ded-glob.obj `if test -f 'unix/glob.c'; then $(CYGPATH_W) 'unix/glob.c'; else $(CYGPATH_W) '$(srcdir)/unix/glob.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx_ded-glob.Tpo unix/$(DEPDIR)/crx_ded-glob.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/glob.c' object='unix/crx_ded-glob.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx_ded-glob.obj `if test -f 'unix/glob.c'; then $(CYGPATH_W) 'unix/glob.c'; else $(CYGPATH_W) '$(srcdir)/unix/glob.c'; fi` - -unix/crx_ded-net_udp.o: unix/net_udp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx_ded-net_udp.o -MD -MP -MF unix/$(DEPDIR)/crx_ded-net_udp.Tpo -c -o unix/crx_ded-net_udp.o `test -f 'unix/net_udp.c' || echo '$(srcdir)/'`unix/net_udp.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx_ded-net_udp.Tpo unix/$(DEPDIR)/crx_ded-net_udp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/net_udp.c' object='unix/crx_ded-net_udp.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx_ded-net_udp.o `test -f 'unix/net_udp.c' || echo '$(srcdir)/'`unix/net_udp.c - -unix/crx_ded-net_udp.obj: unix/net_udp.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx_ded-net_udp.obj -MD -MP -MF unix/$(DEPDIR)/crx_ded-net_udp.Tpo -c -o unix/crx_ded-net_udp.obj `if test -f 'unix/net_udp.c'; then $(CYGPATH_W) 'unix/net_udp.c'; else $(CYGPATH_W) '$(srcdir)/unix/net_udp.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx_ded-net_udp.Tpo unix/$(DEPDIR)/crx_ded-net_udp.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/net_udp.c' object='unix/crx_ded-net_udp.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx_ded-net_udp.obj `if test -f 'unix/net_udp.c'; then $(CYGPATH_W) 'unix/net_udp.c'; else $(CYGPATH_W) '$(srcdir)/unix/net_udp.c'; fi` - -unix/crx_ded-q_shunix.o: unix/q_shunix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx_ded-q_shunix.o -MD -MP -MF unix/$(DEPDIR)/crx_ded-q_shunix.Tpo -c -o unix/crx_ded-q_shunix.o `test -f 'unix/q_shunix.c' || echo '$(srcdir)/'`unix/q_shunix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx_ded-q_shunix.Tpo unix/$(DEPDIR)/crx_ded-q_shunix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/q_shunix.c' object='unix/crx_ded-q_shunix.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx_ded-q_shunix.o `test -f 'unix/q_shunix.c' || echo '$(srcdir)/'`unix/q_shunix.c - -unix/crx_ded-q_shunix.obj: unix/q_shunix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx_ded-q_shunix.obj -MD -MP -MF unix/$(DEPDIR)/crx_ded-q_shunix.Tpo -c -o unix/crx_ded-q_shunix.obj `if test -f 'unix/q_shunix.c'; then $(CYGPATH_W) 'unix/q_shunix.c'; else $(CYGPATH_W) '$(srcdir)/unix/q_shunix.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx_ded-q_shunix.Tpo unix/$(DEPDIR)/crx_ded-q_shunix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/q_shunix.c' object='unix/crx_ded-q_shunix.obj' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx_ded-q_shunix.obj `if test -f 'unix/q_shunix.c'; then $(CYGPATH_W) 'unix/q_shunix.c'; else $(CYGPATH_W) '$(srcdir)/unix/q_shunix.c'; fi` - -unix/crx_ded-sys_unix.o: unix/sys_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx_ded-sys_unix.o -MD -MP -MF unix/$(DEPDIR)/crx_ded-sys_unix.Tpo -c -o unix/crx_ded-sys_unix.o `test -f 'unix/sys_unix.c' || echo '$(srcdir)/'`unix/sys_unix.c -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx_ded-sys_unix.Tpo unix/$(DEPDIR)/crx_ded-sys_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/sys_unix.c' object='unix/crx_ded-sys_unix.o' libtool=no @AMDEPBACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx_ded-sys_unix.o `test -f 'unix/sys_unix.c' || echo '$(srcdir)/'`unix/sys_unix.c - -unix/crx_ded-sys_unix.obj: unix/sys_unix.c -@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/crx_ded-sys_unix.obj -MD -MP -MF unix/$(DEPDIR)/crx_ded-sys_unix.Tpo -c -o unix/crx_ded-sys_unix.obj `if test -f 'unix/sys_unix.c'; then $(CYGPATH_W) 'unix/sys_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/sys_unix.c'; fi` -@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/crx_ded-sys_unix.Tpo unix/$(DEPDIR)/crx_ded-sys_unix.Po -@am__fastdepCC_FALSE@ $(AM_V_CC) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCC_FALSE@ source='unix/sys_unix.c' object='unix/crx_ded-sys_unix.obj' libtool=no @AMDEPBACKSLASH@ +ref_gl/alienarena-r_text.obj: ref_gl/r_text.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_text.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_text.Tpo -c -o ref_gl/alienarena-r_text.obj `if test -f 'ref_gl/r_text.c'; then $(CYGPATH_W) 'ref_gl/r_text.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_text.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_text.Tpo ref_gl/$(DEPDIR)/alienarena-r_text.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_text.c' object='ref_gl/alienarena-r_text.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCC_FALSE@ $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(crx_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/crx_ded-sys_unix.obj `if test -f 'unix/sys_unix.c'; then $(CYGPATH_W) 'unix/sys_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/sys_unix.c'; fi` +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_text.obj `if test -f 'ref_gl/r_text.c'; then $(CYGPATH_W) 'ref_gl/r_text.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_text.c'; fi` + +ref_gl/alienarena-r_ttf.o: ref_gl/r_ttf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_ttf.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_ttf.Tpo -c -o ref_gl/alienarena-r_ttf.o `test -f 'ref_gl/r_ttf.c' || echo '$(srcdir)/'`ref_gl/r_ttf.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_ttf.Tpo ref_gl/$(DEPDIR)/alienarena-r_ttf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_ttf.c' object='ref_gl/alienarena-r_ttf.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_ttf.o `test -f 'ref_gl/r_ttf.c' || echo '$(srcdir)/'`ref_gl/r_ttf.c + +ref_gl/alienarena-r_ttf.obj: ref_gl/r_ttf.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_ttf.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_ttf.Tpo -c -o ref_gl/alienarena-r_ttf.obj `if test -f 'ref_gl/r_ttf.c'; then $(CYGPATH_W) 'ref_gl/r_ttf.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_ttf.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_ttf.Tpo ref_gl/$(DEPDIR)/alienarena-r_ttf.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_ttf.c' object='ref_gl/alienarena-r_ttf.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_ttf.obj `if test -f 'ref_gl/r_ttf.c'; then $(CYGPATH_W) 'ref_gl/r_ttf.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_ttf.c'; fi` + +ref_gl/alienarena-r_varray.o: ref_gl/r_varray.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_varray.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_varray.Tpo -c -o ref_gl/alienarena-r_varray.o `test -f 'ref_gl/r_varray.c' || echo '$(srcdir)/'`ref_gl/r_varray.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_varray.Tpo ref_gl/$(DEPDIR)/alienarena-r_varray.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_varray.c' object='ref_gl/alienarena-r_varray.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_varray.o `test -f 'ref_gl/r_varray.c' || echo '$(srcdir)/'`ref_gl/r_varray.c + +ref_gl/alienarena-r_varray.obj: ref_gl/r_varray.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_varray.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_varray.Tpo -c -o ref_gl/alienarena-r_varray.obj `if test -f 'ref_gl/r_varray.c'; then $(CYGPATH_W) 'ref_gl/r_varray.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_varray.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_varray.Tpo ref_gl/$(DEPDIR)/alienarena-r_varray.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_varray.c' object='ref_gl/alienarena-r_varray.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_varray.obj `if test -f 'ref_gl/r_varray.c'; then $(CYGPATH_W) 'ref_gl/r_varray.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_varray.c'; fi` + +ref_gl/alienarena-r_vbo.o: ref_gl/r_vbo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_vbo.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_vbo.Tpo -c -o ref_gl/alienarena-r_vbo.o `test -f 'ref_gl/r_vbo.c' || echo '$(srcdir)/'`ref_gl/r_vbo.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_vbo.Tpo ref_gl/$(DEPDIR)/alienarena-r_vbo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_vbo.c' object='ref_gl/alienarena-r_vbo.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_vbo.o `test -f 'ref_gl/r_vbo.c' || echo '$(srcdir)/'`ref_gl/r_vbo.c + +ref_gl/alienarena-r_vbo.obj: ref_gl/r_vbo.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_vbo.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_vbo.Tpo -c -o ref_gl/alienarena-r_vbo.obj `if test -f 'ref_gl/r_vbo.c'; then $(CYGPATH_W) 'ref_gl/r_vbo.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_vbo.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_vbo.Tpo ref_gl/$(DEPDIR)/alienarena-r_vbo.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_vbo.c' object='ref_gl/alienarena-r_vbo.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_vbo.obj `if test -f 'ref_gl/r_vbo.c'; then $(CYGPATH_W) 'ref_gl/r_vbo.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_vbo.c'; fi` + +ref_gl/alienarena-r_vlights.o: ref_gl/r_vlights.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_vlights.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_vlights.Tpo -c -o ref_gl/alienarena-r_vlights.o `test -f 'ref_gl/r_vlights.c' || echo '$(srcdir)/'`ref_gl/r_vlights.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_vlights.Tpo ref_gl/$(DEPDIR)/alienarena-r_vlights.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_vlights.c' object='ref_gl/alienarena-r_vlights.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_vlights.o `test -f 'ref_gl/r_vlights.c' || echo '$(srcdir)/'`ref_gl/r_vlights.c + +ref_gl/alienarena-r_vlights.obj: ref_gl/r_vlights.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_vlights.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_vlights.Tpo -c -o ref_gl/alienarena-r_vlights.obj `if test -f 'ref_gl/r_vlights.c'; then $(CYGPATH_W) 'ref_gl/r_vlights.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_vlights.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_vlights.Tpo ref_gl/$(DEPDIR)/alienarena-r_vlights.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_vlights.c' object='ref_gl/alienarena-r_vlights.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_vlights.obj `if test -f 'ref_gl/r_vlights.c'; then $(CYGPATH_W) 'ref_gl/r_vlights.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_vlights.c'; fi` + +ref_gl/alienarena-r_warp.o: ref_gl/r_warp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_warp.o -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_warp.Tpo -c -o ref_gl/alienarena-r_warp.o `test -f 'ref_gl/r_warp.c' || echo '$(srcdir)/'`ref_gl/r_warp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_warp.Tpo ref_gl/$(DEPDIR)/alienarena-r_warp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_warp.c' object='ref_gl/alienarena-r_warp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_warp.o `test -f 'ref_gl/r_warp.c' || echo '$(srcdir)/'`ref_gl/r_warp.c + +ref_gl/alienarena-r_warp.obj: ref_gl/r_warp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT ref_gl/alienarena-r_warp.obj -MD -MP -MF ref_gl/$(DEPDIR)/alienarena-r_warp.Tpo -c -o ref_gl/alienarena-r_warp.obj `if test -f 'ref_gl/r_warp.c'; then $(CYGPATH_W) 'ref_gl/r_warp.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_warp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) ref_gl/$(DEPDIR)/alienarena-r_warp.Tpo ref_gl/$(DEPDIR)/alienarena-r_warp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='ref_gl/r_warp.c' object='ref_gl/alienarena-r_warp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o ref_gl/alienarena-r_warp.obj `if test -f 'ref_gl/r_warp.c'; then $(CYGPATH_W) 'ref_gl/r_warp.c'; else $(CYGPATH_W) '$(srcdir)/ref_gl/r_warp.c'; fi` + +server/alienarena-sv_ccmds.o: server/sv_ccmds.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_ccmds.o -MD -MP -MF server/$(DEPDIR)/alienarena-sv_ccmds.Tpo -c -o server/alienarena-sv_ccmds.o `test -f 'server/sv_ccmds.c' || echo '$(srcdir)/'`server/sv_ccmds.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_ccmds.Tpo server/$(DEPDIR)/alienarena-sv_ccmds.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_ccmds.c' object='server/alienarena-sv_ccmds.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_ccmds.o `test -f 'server/sv_ccmds.c' || echo '$(srcdir)/'`server/sv_ccmds.c + +server/alienarena-sv_ccmds.obj: server/sv_ccmds.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_ccmds.obj -MD -MP -MF server/$(DEPDIR)/alienarena-sv_ccmds.Tpo -c -o server/alienarena-sv_ccmds.obj `if test -f 'server/sv_ccmds.c'; then $(CYGPATH_W) 'server/sv_ccmds.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ccmds.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_ccmds.Tpo server/$(DEPDIR)/alienarena-sv_ccmds.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_ccmds.c' object='server/alienarena-sv_ccmds.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_ccmds.obj `if test -f 'server/sv_ccmds.c'; then $(CYGPATH_W) 'server/sv_ccmds.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ccmds.c'; fi` + +server/alienarena-sv_ents.o: server/sv_ents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_ents.o -MD -MP -MF server/$(DEPDIR)/alienarena-sv_ents.Tpo -c -o server/alienarena-sv_ents.o `test -f 'server/sv_ents.c' || echo '$(srcdir)/'`server/sv_ents.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_ents.Tpo server/$(DEPDIR)/alienarena-sv_ents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_ents.c' object='server/alienarena-sv_ents.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_ents.o `test -f 'server/sv_ents.c' || echo '$(srcdir)/'`server/sv_ents.c + +server/alienarena-sv_ents.obj: server/sv_ents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_ents.obj -MD -MP -MF server/$(DEPDIR)/alienarena-sv_ents.Tpo -c -o server/alienarena-sv_ents.obj `if test -f 'server/sv_ents.c'; then $(CYGPATH_W) 'server/sv_ents.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ents.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_ents.Tpo server/$(DEPDIR)/alienarena-sv_ents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_ents.c' object='server/alienarena-sv_ents.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_ents.obj `if test -f 'server/sv_ents.c'; then $(CYGPATH_W) 'server/sv_ents.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ents.c'; fi` + +server/alienarena-sv_game.o: server/sv_game.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_game.o -MD -MP -MF server/$(DEPDIR)/alienarena-sv_game.Tpo -c -o server/alienarena-sv_game.o `test -f 'server/sv_game.c' || echo '$(srcdir)/'`server/sv_game.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_game.Tpo server/$(DEPDIR)/alienarena-sv_game.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_game.c' object='server/alienarena-sv_game.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_game.o `test -f 'server/sv_game.c' || echo '$(srcdir)/'`server/sv_game.c + +server/alienarena-sv_game.obj: server/sv_game.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_game.obj -MD -MP -MF server/$(DEPDIR)/alienarena-sv_game.Tpo -c -o server/alienarena-sv_game.obj `if test -f 'server/sv_game.c'; then $(CYGPATH_W) 'server/sv_game.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_game.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_game.Tpo server/$(DEPDIR)/alienarena-sv_game.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_game.c' object='server/alienarena-sv_game.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_game.obj `if test -f 'server/sv_game.c'; then $(CYGPATH_W) 'server/sv_game.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_game.c'; fi` + +server/alienarena-sv_init.o: server/sv_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_init.o -MD -MP -MF server/$(DEPDIR)/alienarena-sv_init.Tpo -c -o server/alienarena-sv_init.o `test -f 'server/sv_init.c' || echo '$(srcdir)/'`server/sv_init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_init.Tpo server/$(DEPDIR)/alienarena-sv_init.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_init.c' object='server/alienarena-sv_init.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_init.o `test -f 'server/sv_init.c' || echo '$(srcdir)/'`server/sv_init.c + +server/alienarena-sv_init.obj: server/sv_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_init.obj -MD -MP -MF server/$(DEPDIR)/alienarena-sv_init.Tpo -c -o server/alienarena-sv_init.obj `if test -f 'server/sv_init.c'; then $(CYGPATH_W) 'server/sv_init.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_init.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_init.Tpo server/$(DEPDIR)/alienarena-sv_init.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_init.c' object='server/alienarena-sv_init.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_init.obj `if test -f 'server/sv_init.c'; then $(CYGPATH_W) 'server/sv_init.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_init.c'; fi` + +server/alienarena-sv_main.o: server/sv_main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_main.o -MD -MP -MF server/$(DEPDIR)/alienarena-sv_main.Tpo -c -o server/alienarena-sv_main.o `test -f 'server/sv_main.c' || echo '$(srcdir)/'`server/sv_main.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_main.Tpo server/$(DEPDIR)/alienarena-sv_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_main.c' object='server/alienarena-sv_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_main.o `test -f 'server/sv_main.c' || echo '$(srcdir)/'`server/sv_main.c + +server/alienarena-sv_main.obj: server/sv_main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_main.obj -MD -MP -MF server/$(DEPDIR)/alienarena-sv_main.Tpo -c -o server/alienarena-sv_main.obj `if test -f 'server/sv_main.c'; then $(CYGPATH_W) 'server/sv_main.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_main.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_main.Tpo server/$(DEPDIR)/alienarena-sv_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_main.c' object='server/alienarena-sv_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_main.obj `if test -f 'server/sv_main.c'; then $(CYGPATH_W) 'server/sv_main.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_main.c'; fi` + +server/alienarena-sv_send.o: server/sv_send.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_send.o -MD -MP -MF server/$(DEPDIR)/alienarena-sv_send.Tpo -c -o server/alienarena-sv_send.o `test -f 'server/sv_send.c' || echo '$(srcdir)/'`server/sv_send.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_send.Tpo server/$(DEPDIR)/alienarena-sv_send.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_send.c' object='server/alienarena-sv_send.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_send.o `test -f 'server/sv_send.c' || echo '$(srcdir)/'`server/sv_send.c + +server/alienarena-sv_send.obj: server/sv_send.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_send.obj -MD -MP -MF server/$(DEPDIR)/alienarena-sv_send.Tpo -c -o server/alienarena-sv_send.obj `if test -f 'server/sv_send.c'; then $(CYGPATH_W) 'server/sv_send.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_send.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_send.Tpo server/$(DEPDIR)/alienarena-sv_send.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_send.c' object='server/alienarena-sv_send.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_send.obj `if test -f 'server/sv_send.c'; then $(CYGPATH_W) 'server/sv_send.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_send.c'; fi` + +server/alienarena-sv_user.o: server/sv_user.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_user.o -MD -MP -MF server/$(DEPDIR)/alienarena-sv_user.Tpo -c -o server/alienarena-sv_user.o `test -f 'server/sv_user.c' || echo '$(srcdir)/'`server/sv_user.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_user.Tpo server/$(DEPDIR)/alienarena-sv_user.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_user.c' object='server/alienarena-sv_user.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_user.o `test -f 'server/sv_user.c' || echo '$(srcdir)/'`server/sv_user.c + +server/alienarena-sv_user.obj: server/sv_user.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_user.obj -MD -MP -MF server/$(DEPDIR)/alienarena-sv_user.Tpo -c -o server/alienarena-sv_user.obj `if test -f 'server/sv_user.c'; then $(CYGPATH_W) 'server/sv_user.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_user.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_user.Tpo server/$(DEPDIR)/alienarena-sv_user.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_user.c' object='server/alienarena-sv_user.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_user.obj `if test -f 'server/sv_user.c'; then $(CYGPATH_W) 'server/sv_user.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_user.c'; fi` + +server/alienarena-sv_world.o: server/sv_world.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_world.o -MD -MP -MF server/$(DEPDIR)/alienarena-sv_world.Tpo -c -o server/alienarena-sv_world.o `test -f 'server/sv_world.c' || echo '$(srcdir)/'`server/sv_world.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_world.Tpo server/$(DEPDIR)/alienarena-sv_world.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_world.c' object='server/alienarena-sv_world.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_world.o `test -f 'server/sv_world.c' || echo '$(srcdir)/'`server/sv_world.c + +server/alienarena-sv_world.obj: server/sv_world.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena-sv_world.obj -MD -MP -MF server/$(DEPDIR)/alienarena-sv_world.Tpo -c -o server/alienarena-sv_world.obj `if test -f 'server/sv_world.c'; then $(CYGPATH_W) 'server/sv_world.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_world.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena-sv_world.Tpo server/$(DEPDIR)/alienarena-sv_world.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_world.c' object='server/alienarena-sv_world.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena-sv_world.obj `if test -f 'server/sv_world.c'; then $(CYGPATH_W) 'server/sv_world.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_world.c'; fi` + +unix/alienarena-glob.o: unix/glob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-glob.o -MD -MP -MF unix/$(DEPDIR)/alienarena-glob.Tpo -c -o unix/alienarena-glob.o `test -f 'unix/glob.c' || echo '$(srcdir)/'`unix/glob.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-glob.Tpo unix/$(DEPDIR)/alienarena-glob.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/glob.c' object='unix/alienarena-glob.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-glob.o `test -f 'unix/glob.c' || echo '$(srcdir)/'`unix/glob.c + +unix/alienarena-glob.obj: unix/glob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-glob.obj -MD -MP -MF unix/$(DEPDIR)/alienarena-glob.Tpo -c -o unix/alienarena-glob.obj `if test -f 'unix/glob.c'; then $(CYGPATH_W) 'unix/glob.c'; else $(CYGPATH_W) '$(srcdir)/unix/glob.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-glob.Tpo unix/$(DEPDIR)/alienarena-glob.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/glob.c' object='unix/alienarena-glob.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-glob.obj `if test -f 'unix/glob.c'; then $(CYGPATH_W) 'unix/glob.c'; else $(CYGPATH_W) '$(srcdir)/unix/glob.c'; fi` + +unix/alienarena-gl_glx.o: unix/gl_glx.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-gl_glx.o -MD -MP -MF unix/$(DEPDIR)/alienarena-gl_glx.Tpo -c -o unix/alienarena-gl_glx.o `test -f 'unix/gl_glx.c' || echo '$(srcdir)/'`unix/gl_glx.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-gl_glx.Tpo unix/$(DEPDIR)/alienarena-gl_glx.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/gl_glx.c' object='unix/alienarena-gl_glx.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-gl_glx.o `test -f 'unix/gl_glx.c' || echo '$(srcdir)/'`unix/gl_glx.c + +unix/alienarena-gl_glx.obj: unix/gl_glx.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-gl_glx.obj -MD -MP -MF unix/$(DEPDIR)/alienarena-gl_glx.Tpo -c -o unix/alienarena-gl_glx.obj `if test -f 'unix/gl_glx.c'; then $(CYGPATH_W) 'unix/gl_glx.c'; else $(CYGPATH_W) '$(srcdir)/unix/gl_glx.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-gl_glx.Tpo unix/$(DEPDIR)/alienarena-gl_glx.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/gl_glx.c' object='unix/alienarena-gl_glx.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-gl_glx.obj `if test -f 'unix/gl_glx.c'; then $(CYGPATH_W) 'unix/gl_glx.c'; else $(CYGPATH_W) '$(srcdir)/unix/gl_glx.c'; fi` + +unix/alienarena-net_udp.o: unix/net_udp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-net_udp.o -MD -MP -MF unix/$(DEPDIR)/alienarena-net_udp.Tpo -c -o unix/alienarena-net_udp.o `test -f 'unix/net_udp.c' || echo '$(srcdir)/'`unix/net_udp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-net_udp.Tpo unix/$(DEPDIR)/alienarena-net_udp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/net_udp.c' object='unix/alienarena-net_udp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-net_udp.o `test -f 'unix/net_udp.c' || echo '$(srcdir)/'`unix/net_udp.c + +unix/alienarena-net_udp.obj: unix/net_udp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-net_udp.obj -MD -MP -MF unix/$(DEPDIR)/alienarena-net_udp.Tpo -c -o unix/alienarena-net_udp.obj `if test -f 'unix/net_udp.c'; then $(CYGPATH_W) 'unix/net_udp.c'; else $(CYGPATH_W) '$(srcdir)/unix/net_udp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-net_udp.Tpo unix/$(DEPDIR)/alienarena-net_udp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/net_udp.c' object='unix/alienarena-net_udp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-net_udp.obj `if test -f 'unix/net_udp.c'; then $(CYGPATH_W) 'unix/net_udp.c'; else $(CYGPATH_W) '$(srcdir)/unix/net_udp.c'; fi` + +unix/alienarena-qal_unix.o: unix/qal_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-qal_unix.o -MD -MP -MF unix/$(DEPDIR)/alienarena-qal_unix.Tpo -c -o unix/alienarena-qal_unix.o `test -f 'unix/qal_unix.c' || echo '$(srcdir)/'`unix/qal_unix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-qal_unix.Tpo unix/$(DEPDIR)/alienarena-qal_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/qal_unix.c' object='unix/alienarena-qal_unix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-qal_unix.o `test -f 'unix/qal_unix.c' || echo '$(srcdir)/'`unix/qal_unix.c + +unix/alienarena-qal_unix.obj: unix/qal_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-qal_unix.obj -MD -MP -MF unix/$(DEPDIR)/alienarena-qal_unix.Tpo -c -o unix/alienarena-qal_unix.obj `if test -f 'unix/qal_unix.c'; then $(CYGPATH_W) 'unix/qal_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/qal_unix.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-qal_unix.Tpo unix/$(DEPDIR)/alienarena-qal_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/qal_unix.c' object='unix/alienarena-qal_unix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-qal_unix.obj `if test -f 'unix/qal_unix.c'; then $(CYGPATH_W) 'unix/qal_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/qal_unix.c'; fi` + +unix/alienarena-qgl_unix.o: unix/qgl_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-qgl_unix.o -MD -MP -MF unix/$(DEPDIR)/alienarena-qgl_unix.Tpo -c -o unix/alienarena-qgl_unix.o `test -f 'unix/qgl_unix.c' || echo '$(srcdir)/'`unix/qgl_unix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-qgl_unix.Tpo unix/$(DEPDIR)/alienarena-qgl_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/qgl_unix.c' object='unix/alienarena-qgl_unix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-qgl_unix.o `test -f 'unix/qgl_unix.c' || echo '$(srcdir)/'`unix/qgl_unix.c + +unix/alienarena-qgl_unix.obj: unix/qgl_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-qgl_unix.obj -MD -MP -MF unix/$(DEPDIR)/alienarena-qgl_unix.Tpo -c -o unix/alienarena-qgl_unix.obj `if test -f 'unix/qgl_unix.c'; then $(CYGPATH_W) 'unix/qgl_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/qgl_unix.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-qgl_unix.Tpo unix/$(DEPDIR)/alienarena-qgl_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/qgl_unix.c' object='unix/alienarena-qgl_unix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-qgl_unix.obj `if test -f 'unix/qgl_unix.c'; then $(CYGPATH_W) 'unix/qgl_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/qgl_unix.c'; fi` + +unix/alienarena-q_shunix.o: unix/q_shunix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-q_shunix.o -MD -MP -MF unix/$(DEPDIR)/alienarena-q_shunix.Tpo -c -o unix/alienarena-q_shunix.o `test -f 'unix/q_shunix.c' || echo '$(srcdir)/'`unix/q_shunix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-q_shunix.Tpo unix/$(DEPDIR)/alienarena-q_shunix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/q_shunix.c' object='unix/alienarena-q_shunix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-q_shunix.o `test -f 'unix/q_shunix.c' || echo '$(srcdir)/'`unix/q_shunix.c + +unix/alienarena-q_shunix.obj: unix/q_shunix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-q_shunix.obj -MD -MP -MF unix/$(DEPDIR)/alienarena-q_shunix.Tpo -c -o unix/alienarena-q_shunix.obj `if test -f 'unix/q_shunix.c'; then $(CYGPATH_W) 'unix/q_shunix.c'; else $(CYGPATH_W) '$(srcdir)/unix/q_shunix.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-q_shunix.Tpo unix/$(DEPDIR)/alienarena-q_shunix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/q_shunix.c' object='unix/alienarena-q_shunix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-q_shunix.obj `if test -f 'unix/q_shunix.c'; then $(CYGPATH_W) 'unix/q_shunix.c'; else $(CYGPATH_W) '$(srcdir)/unix/q_shunix.c'; fi` + +unix/alienarena-rw_unix.o: unix/rw_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-rw_unix.o -MD -MP -MF unix/$(DEPDIR)/alienarena-rw_unix.Tpo -c -o unix/alienarena-rw_unix.o `test -f 'unix/rw_unix.c' || echo '$(srcdir)/'`unix/rw_unix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-rw_unix.Tpo unix/$(DEPDIR)/alienarena-rw_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/rw_unix.c' object='unix/alienarena-rw_unix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-rw_unix.o `test -f 'unix/rw_unix.c' || echo '$(srcdir)/'`unix/rw_unix.c + +unix/alienarena-rw_unix.obj: unix/rw_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-rw_unix.obj -MD -MP -MF unix/$(DEPDIR)/alienarena-rw_unix.Tpo -c -o unix/alienarena-rw_unix.obj `if test -f 'unix/rw_unix.c'; then $(CYGPATH_W) 'unix/rw_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/rw_unix.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-rw_unix.Tpo unix/$(DEPDIR)/alienarena-rw_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/rw_unix.c' object='unix/alienarena-rw_unix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-rw_unix.obj `if test -f 'unix/rw_unix.c'; then $(CYGPATH_W) 'unix/rw_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/rw_unix.c'; fi` + +unix/alienarena-sys_unix.o: unix/sys_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-sys_unix.o -MD -MP -MF unix/$(DEPDIR)/alienarena-sys_unix.Tpo -c -o unix/alienarena-sys_unix.o `test -f 'unix/sys_unix.c' || echo '$(srcdir)/'`unix/sys_unix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-sys_unix.Tpo unix/$(DEPDIR)/alienarena-sys_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/sys_unix.c' object='unix/alienarena-sys_unix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-sys_unix.o `test -f 'unix/sys_unix.c' || echo '$(srcdir)/'`unix/sys_unix.c + +unix/alienarena-sys_unix.obj: unix/sys_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-sys_unix.obj -MD -MP -MF unix/$(DEPDIR)/alienarena-sys_unix.Tpo -c -o unix/alienarena-sys_unix.obj `if test -f 'unix/sys_unix.c'; then $(CYGPATH_W) 'unix/sys_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/sys_unix.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-sys_unix.Tpo unix/$(DEPDIR)/alienarena-sys_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/sys_unix.c' object='unix/alienarena-sys_unix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-sys_unix.obj `if test -f 'unix/sys_unix.c'; then $(CYGPATH_W) 'unix/sys_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/sys_unix.c'; fi` + +unix/alienarena-vid_so.o: unix/vid_so.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-vid_so.o -MD -MP -MF unix/$(DEPDIR)/alienarena-vid_so.Tpo -c -o unix/alienarena-vid_so.o `test -f 'unix/vid_so.c' || echo '$(srcdir)/'`unix/vid_so.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-vid_so.Tpo unix/$(DEPDIR)/alienarena-vid_so.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/vid_so.c' object='unix/alienarena-vid_so.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-vid_so.o `test -f 'unix/vid_so.c' || echo '$(srcdir)/'`unix/vid_so.c + +unix/alienarena-vid_so.obj: unix/vid_so.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena-vid_so.obj -MD -MP -MF unix/$(DEPDIR)/alienarena-vid_so.Tpo -c -o unix/alienarena-vid_so.obj `if test -f 'unix/vid_so.c'; then $(CYGPATH_W) 'unix/vid_so.c'; else $(CYGPATH_W) '$(srcdir)/unix/vid_so.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena-vid_so.Tpo unix/$(DEPDIR)/alienarena-vid_so.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/vid_so.c' object='unix/alienarena-vid_so.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena-vid_so.obj `if test -f 'unix/vid_so.c'; then $(CYGPATH_W) 'unix/vid_so.c'; else $(CYGPATH_W) '$(srcdir)/unix/vid_so.c'; fi` + +win32/alienarena-conproc.o: win32/conproc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-conproc.o -MD -MP -MF win32/$(DEPDIR)/alienarena-conproc.Tpo -c -o win32/alienarena-conproc.o `test -f 'win32/conproc.c' || echo '$(srcdir)/'`win32/conproc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-conproc.Tpo win32/$(DEPDIR)/alienarena-conproc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/conproc.c' object='win32/alienarena-conproc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-conproc.o `test -f 'win32/conproc.c' || echo '$(srcdir)/'`win32/conproc.c + +win32/alienarena-conproc.obj: win32/conproc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-conproc.obj -MD -MP -MF win32/$(DEPDIR)/alienarena-conproc.Tpo -c -o win32/alienarena-conproc.obj `if test -f 'win32/conproc.c'; then $(CYGPATH_W) 'win32/conproc.c'; else $(CYGPATH_W) '$(srcdir)/win32/conproc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-conproc.Tpo win32/$(DEPDIR)/alienarena-conproc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/conproc.c' object='win32/alienarena-conproc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-conproc.obj `if test -f 'win32/conproc.c'; then $(CYGPATH_W) 'win32/conproc.c'; else $(CYGPATH_W) '$(srcdir)/win32/conproc.c'; fi` + +win32/alienarena-glw_imp.o: win32/glw_imp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-glw_imp.o -MD -MP -MF win32/$(DEPDIR)/alienarena-glw_imp.Tpo -c -o win32/alienarena-glw_imp.o `test -f 'win32/glw_imp.c' || echo '$(srcdir)/'`win32/glw_imp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-glw_imp.Tpo win32/$(DEPDIR)/alienarena-glw_imp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/glw_imp.c' object='win32/alienarena-glw_imp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-glw_imp.o `test -f 'win32/glw_imp.c' || echo '$(srcdir)/'`win32/glw_imp.c + +win32/alienarena-glw_imp.obj: win32/glw_imp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-glw_imp.obj -MD -MP -MF win32/$(DEPDIR)/alienarena-glw_imp.Tpo -c -o win32/alienarena-glw_imp.obj `if test -f 'win32/glw_imp.c'; then $(CYGPATH_W) 'win32/glw_imp.c'; else $(CYGPATH_W) '$(srcdir)/win32/glw_imp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-glw_imp.Tpo win32/$(DEPDIR)/alienarena-glw_imp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/glw_imp.c' object='win32/alienarena-glw_imp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-glw_imp.obj `if test -f 'win32/glw_imp.c'; then $(CYGPATH_W) 'win32/glw_imp.c'; else $(CYGPATH_W) '$(srcdir)/win32/glw_imp.c'; fi` + +win32/alienarena-in_win.o: win32/in_win.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-in_win.o -MD -MP -MF win32/$(DEPDIR)/alienarena-in_win.Tpo -c -o win32/alienarena-in_win.o `test -f 'win32/in_win.c' || echo '$(srcdir)/'`win32/in_win.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-in_win.Tpo win32/$(DEPDIR)/alienarena-in_win.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/in_win.c' object='win32/alienarena-in_win.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-in_win.o `test -f 'win32/in_win.c' || echo '$(srcdir)/'`win32/in_win.c + +win32/alienarena-in_win.obj: win32/in_win.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-in_win.obj -MD -MP -MF win32/$(DEPDIR)/alienarena-in_win.Tpo -c -o win32/alienarena-in_win.obj `if test -f 'win32/in_win.c'; then $(CYGPATH_W) 'win32/in_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/in_win.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-in_win.Tpo win32/$(DEPDIR)/alienarena-in_win.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/in_win.c' object='win32/alienarena-in_win.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-in_win.obj `if test -f 'win32/in_win.c'; then $(CYGPATH_W) 'win32/in_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/in_win.c'; fi` + +win32/alienarena-net_wins.o: win32/net_wins.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-net_wins.o -MD -MP -MF win32/$(DEPDIR)/alienarena-net_wins.Tpo -c -o win32/alienarena-net_wins.o `test -f 'win32/net_wins.c' || echo '$(srcdir)/'`win32/net_wins.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-net_wins.Tpo win32/$(DEPDIR)/alienarena-net_wins.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/net_wins.c' object='win32/alienarena-net_wins.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-net_wins.o `test -f 'win32/net_wins.c' || echo '$(srcdir)/'`win32/net_wins.c + +win32/alienarena-net_wins.obj: win32/net_wins.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-net_wins.obj -MD -MP -MF win32/$(DEPDIR)/alienarena-net_wins.Tpo -c -o win32/alienarena-net_wins.obj `if test -f 'win32/net_wins.c'; then $(CYGPATH_W) 'win32/net_wins.c'; else $(CYGPATH_W) '$(srcdir)/win32/net_wins.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-net_wins.Tpo win32/$(DEPDIR)/alienarena-net_wins.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/net_wins.c' object='win32/alienarena-net_wins.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-net_wins.obj `if test -f 'win32/net_wins.c'; then $(CYGPATH_W) 'win32/net_wins.c'; else $(CYGPATH_W) '$(srcdir)/win32/net_wins.c'; fi` + +win32/alienarena-qal_win.o: win32/qal_win.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-qal_win.o -MD -MP -MF win32/$(DEPDIR)/alienarena-qal_win.Tpo -c -o win32/alienarena-qal_win.o `test -f 'win32/qal_win.c' || echo '$(srcdir)/'`win32/qal_win.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-qal_win.Tpo win32/$(DEPDIR)/alienarena-qal_win.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/qal_win.c' object='win32/alienarena-qal_win.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-qal_win.o `test -f 'win32/qal_win.c' || echo '$(srcdir)/'`win32/qal_win.c + +win32/alienarena-qal_win.obj: win32/qal_win.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-qal_win.obj -MD -MP -MF win32/$(DEPDIR)/alienarena-qal_win.Tpo -c -o win32/alienarena-qal_win.obj `if test -f 'win32/qal_win.c'; then $(CYGPATH_W) 'win32/qal_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/qal_win.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-qal_win.Tpo win32/$(DEPDIR)/alienarena-qal_win.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/qal_win.c' object='win32/alienarena-qal_win.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-qal_win.obj `if test -f 'win32/qal_win.c'; then $(CYGPATH_W) 'win32/qal_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/qal_win.c'; fi` + +win32/alienarena-qgl_win.o: win32/qgl_win.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-qgl_win.o -MD -MP -MF win32/$(DEPDIR)/alienarena-qgl_win.Tpo -c -o win32/alienarena-qgl_win.o `test -f 'win32/qgl_win.c' || echo '$(srcdir)/'`win32/qgl_win.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-qgl_win.Tpo win32/$(DEPDIR)/alienarena-qgl_win.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/qgl_win.c' object='win32/alienarena-qgl_win.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-qgl_win.o `test -f 'win32/qgl_win.c' || echo '$(srcdir)/'`win32/qgl_win.c + +win32/alienarena-qgl_win.obj: win32/qgl_win.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-qgl_win.obj -MD -MP -MF win32/$(DEPDIR)/alienarena-qgl_win.Tpo -c -o win32/alienarena-qgl_win.obj `if test -f 'win32/qgl_win.c'; then $(CYGPATH_W) 'win32/qgl_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/qgl_win.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-qgl_win.Tpo win32/$(DEPDIR)/alienarena-qgl_win.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/qgl_win.c' object='win32/alienarena-qgl_win.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-qgl_win.obj `if test -f 'win32/qgl_win.c'; then $(CYGPATH_W) 'win32/qgl_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/qgl_win.c'; fi` + +win32/alienarena-q_shwin.o: win32/q_shwin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-q_shwin.o -MD -MP -MF win32/$(DEPDIR)/alienarena-q_shwin.Tpo -c -o win32/alienarena-q_shwin.o `test -f 'win32/q_shwin.c' || echo '$(srcdir)/'`win32/q_shwin.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-q_shwin.Tpo win32/$(DEPDIR)/alienarena-q_shwin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/q_shwin.c' object='win32/alienarena-q_shwin.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-q_shwin.o `test -f 'win32/q_shwin.c' || echo '$(srcdir)/'`win32/q_shwin.c + +win32/alienarena-q_shwin.obj: win32/q_shwin.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-q_shwin.obj -MD -MP -MF win32/$(DEPDIR)/alienarena-q_shwin.Tpo -c -o win32/alienarena-q_shwin.obj `if test -f 'win32/q_shwin.c'; then $(CYGPATH_W) 'win32/q_shwin.c'; else $(CYGPATH_W) '$(srcdir)/win32/q_shwin.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-q_shwin.Tpo win32/$(DEPDIR)/alienarena-q_shwin.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/q_shwin.c' object='win32/alienarena-q_shwin.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-q_shwin.obj `if test -f 'win32/q_shwin.c'; then $(CYGPATH_W) 'win32/q_shwin.c'; else $(CYGPATH_W) '$(srcdir)/win32/q_shwin.c'; fi` + +win32/alienarena-sys_win.o: win32/sys_win.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-sys_win.o -MD -MP -MF win32/$(DEPDIR)/alienarena-sys_win.Tpo -c -o win32/alienarena-sys_win.o `test -f 'win32/sys_win.c' || echo '$(srcdir)/'`win32/sys_win.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-sys_win.Tpo win32/$(DEPDIR)/alienarena-sys_win.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/sys_win.c' object='win32/alienarena-sys_win.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-sys_win.o `test -f 'win32/sys_win.c' || echo '$(srcdir)/'`win32/sys_win.c + +win32/alienarena-sys_win.obj: win32/sys_win.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-sys_win.obj -MD -MP -MF win32/$(DEPDIR)/alienarena-sys_win.Tpo -c -o win32/alienarena-sys_win.obj `if test -f 'win32/sys_win.c'; then $(CYGPATH_W) 'win32/sys_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/sys_win.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-sys_win.Tpo win32/$(DEPDIR)/alienarena-sys_win.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/sys_win.c' object='win32/alienarena-sys_win.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-sys_win.obj `if test -f 'win32/sys_win.c'; then $(CYGPATH_W) 'win32/sys_win.c'; else $(CYGPATH_W) '$(srcdir)/win32/sys_win.c'; fi` + +win32/alienarena-vid_dll.o: win32/vid_dll.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-vid_dll.o -MD -MP -MF win32/$(DEPDIR)/alienarena-vid_dll.Tpo -c -o win32/alienarena-vid_dll.o `test -f 'win32/vid_dll.c' || echo '$(srcdir)/'`win32/vid_dll.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-vid_dll.Tpo win32/$(DEPDIR)/alienarena-vid_dll.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/vid_dll.c' object='win32/alienarena-vid_dll.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-vid_dll.o `test -f 'win32/vid_dll.c' || echo '$(srcdir)/'`win32/vid_dll.c + +win32/alienarena-vid_dll.obj: win32/vid_dll.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT win32/alienarena-vid_dll.obj -MD -MP -MF win32/$(DEPDIR)/alienarena-vid_dll.Tpo -c -o win32/alienarena-vid_dll.obj `if test -f 'win32/vid_dll.c'; then $(CYGPATH_W) 'win32/vid_dll.c'; else $(CYGPATH_W) '$(srcdir)/win32/vid_dll.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) win32/$(DEPDIR)/alienarena-vid_dll.Tpo win32/$(DEPDIR)/alienarena-vid_dll.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='win32/vid_dll.c' object='win32/alienarena-vid_dll.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o win32/alienarena-vid_dll.obj `if test -f 'win32/vid_dll.c'; then $(CYGPATH_W) 'win32/vid_dll.c'; else $(CYGPATH_W) '$(srcdir)/win32/vid_dll.c'; fi` + +game/alienarena_ded-q_shared.o: game/q_shared.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT game/alienarena_ded-q_shared.o -MD -MP -MF game/$(DEPDIR)/alienarena_ded-q_shared.Tpo -c -o game/alienarena_ded-q_shared.o `test -f 'game/q_shared.c' || echo '$(srcdir)/'`game/q_shared.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) game/$(DEPDIR)/alienarena_ded-q_shared.Tpo game/$(DEPDIR)/alienarena_ded-q_shared.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='game/q_shared.c' object='game/alienarena_ded-q_shared.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o game/alienarena_ded-q_shared.o `test -f 'game/q_shared.c' || echo '$(srcdir)/'`game/q_shared.c + +game/alienarena_ded-q_shared.obj: game/q_shared.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT game/alienarena_ded-q_shared.obj -MD -MP -MF game/$(DEPDIR)/alienarena_ded-q_shared.Tpo -c -o game/alienarena_ded-q_shared.obj `if test -f 'game/q_shared.c'; then $(CYGPATH_W) 'game/q_shared.c'; else $(CYGPATH_W) '$(srcdir)/game/q_shared.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) game/$(DEPDIR)/alienarena_ded-q_shared.Tpo game/$(DEPDIR)/alienarena_ded-q_shared.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='game/q_shared.c' object='game/alienarena_ded-q_shared.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o game/alienarena_ded-q_shared.obj `if test -f 'game/q_shared.c'; then $(CYGPATH_W) 'game/q_shared.c'; else $(CYGPATH_W) '$(srcdir)/game/q_shared.c'; fi` + +null/alienarena_ded-cl_null.o: null/cl_null.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT null/alienarena_ded-cl_null.o -MD -MP -MF null/$(DEPDIR)/alienarena_ded-cl_null.Tpo -c -o null/alienarena_ded-cl_null.o `test -f 'null/cl_null.c' || echo '$(srcdir)/'`null/cl_null.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) null/$(DEPDIR)/alienarena_ded-cl_null.Tpo null/$(DEPDIR)/alienarena_ded-cl_null.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='null/cl_null.c' object='null/alienarena_ded-cl_null.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o null/alienarena_ded-cl_null.o `test -f 'null/cl_null.c' || echo '$(srcdir)/'`null/cl_null.c + +null/alienarena_ded-cl_null.obj: null/cl_null.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT null/alienarena_ded-cl_null.obj -MD -MP -MF null/$(DEPDIR)/alienarena_ded-cl_null.Tpo -c -o null/alienarena_ded-cl_null.obj `if test -f 'null/cl_null.c'; then $(CYGPATH_W) 'null/cl_null.c'; else $(CYGPATH_W) '$(srcdir)/null/cl_null.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) null/$(DEPDIR)/alienarena_ded-cl_null.Tpo null/$(DEPDIR)/alienarena_ded-cl_null.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='null/cl_null.c' object='null/alienarena_ded-cl_null.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o null/alienarena_ded-cl_null.obj `if test -f 'null/cl_null.c'; then $(CYGPATH_W) 'null/cl_null.c'; else $(CYGPATH_W) '$(srcdir)/null/cl_null.c'; fi` + +qcommon/alienarena_ded-cmd.o: qcommon/cmd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-cmd.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-cmd.Tpo -c -o qcommon/alienarena_ded-cmd.o `test -f 'qcommon/cmd.c' || echo '$(srcdir)/'`qcommon/cmd.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-cmd.Tpo qcommon/$(DEPDIR)/alienarena_ded-cmd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cmd.c' object='qcommon/alienarena_ded-cmd.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-cmd.o `test -f 'qcommon/cmd.c' || echo '$(srcdir)/'`qcommon/cmd.c + +qcommon/alienarena_ded-cmd.obj: qcommon/cmd.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-cmd.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-cmd.Tpo -c -o qcommon/alienarena_ded-cmd.obj `if test -f 'qcommon/cmd.c'; then $(CYGPATH_W) 'qcommon/cmd.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmd.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-cmd.Tpo qcommon/$(DEPDIR)/alienarena_ded-cmd.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cmd.c' object='qcommon/alienarena_ded-cmd.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-cmd.obj `if test -f 'qcommon/cmd.c'; then $(CYGPATH_W) 'qcommon/cmd.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmd.c'; fi` + +qcommon/alienarena_ded-cmodel.o: qcommon/cmodel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-cmodel.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-cmodel.Tpo -c -o qcommon/alienarena_ded-cmodel.o `test -f 'qcommon/cmodel.c' || echo '$(srcdir)/'`qcommon/cmodel.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-cmodel.Tpo qcommon/$(DEPDIR)/alienarena_ded-cmodel.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cmodel.c' object='qcommon/alienarena_ded-cmodel.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-cmodel.o `test -f 'qcommon/cmodel.c' || echo '$(srcdir)/'`qcommon/cmodel.c + +qcommon/alienarena_ded-cmodel.obj: qcommon/cmodel.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-cmodel.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-cmodel.Tpo -c -o qcommon/alienarena_ded-cmodel.obj `if test -f 'qcommon/cmodel.c'; then $(CYGPATH_W) 'qcommon/cmodel.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmodel.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-cmodel.Tpo qcommon/$(DEPDIR)/alienarena_ded-cmodel.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cmodel.c' object='qcommon/alienarena_ded-cmodel.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-cmodel.obj `if test -f 'qcommon/cmodel.c'; then $(CYGPATH_W) 'qcommon/cmodel.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cmodel.c'; fi` + +qcommon/alienarena_ded-common.o: qcommon/common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-common.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-common.Tpo -c -o qcommon/alienarena_ded-common.o `test -f 'qcommon/common.c' || echo '$(srcdir)/'`qcommon/common.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-common.Tpo qcommon/$(DEPDIR)/alienarena_ded-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/common.c' object='qcommon/alienarena_ded-common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-common.o `test -f 'qcommon/common.c' || echo '$(srcdir)/'`qcommon/common.c + +qcommon/alienarena_ded-common.obj: qcommon/common.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-common.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-common.Tpo -c -o qcommon/alienarena_ded-common.obj `if test -f 'qcommon/common.c'; then $(CYGPATH_W) 'qcommon/common.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/common.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-common.Tpo qcommon/$(DEPDIR)/alienarena_ded-common.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/common.c' object='qcommon/alienarena_ded-common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-common.obj `if test -f 'qcommon/common.c'; then $(CYGPATH_W) 'qcommon/common.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/common.c'; fi` + +qcommon/alienarena_ded-crc.o: qcommon/crc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-crc.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-crc.Tpo -c -o qcommon/alienarena_ded-crc.o `test -f 'qcommon/crc.c' || echo '$(srcdir)/'`qcommon/crc.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-crc.Tpo qcommon/$(DEPDIR)/alienarena_ded-crc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/crc.c' object='qcommon/alienarena_ded-crc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-crc.o `test -f 'qcommon/crc.c' || echo '$(srcdir)/'`qcommon/crc.c + +qcommon/alienarena_ded-crc.obj: qcommon/crc.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-crc.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-crc.Tpo -c -o qcommon/alienarena_ded-crc.obj `if test -f 'qcommon/crc.c'; then $(CYGPATH_W) 'qcommon/crc.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/crc.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-crc.Tpo qcommon/$(DEPDIR)/alienarena_ded-crc.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/crc.c' object='qcommon/alienarena_ded-crc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-crc.obj `if test -f 'qcommon/crc.c'; then $(CYGPATH_W) 'qcommon/crc.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/crc.c'; fi` + +qcommon/alienarena_ded-cvar.o: qcommon/cvar.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-cvar.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-cvar.Tpo -c -o qcommon/alienarena_ded-cvar.o `test -f 'qcommon/cvar.c' || echo '$(srcdir)/'`qcommon/cvar.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-cvar.Tpo qcommon/$(DEPDIR)/alienarena_ded-cvar.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cvar.c' object='qcommon/alienarena_ded-cvar.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-cvar.o `test -f 'qcommon/cvar.c' || echo '$(srcdir)/'`qcommon/cvar.c + +qcommon/alienarena_ded-cvar.obj: qcommon/cvar.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-cvar.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-cvar.Tpo -c -o qcommon/alienarena_ded-cvar.obj `if test -f 'qcommon/cvar.c'; then $(CYGPATH_W) 'qcommon/cvar.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cvar.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-cvar.Tpo qcommon/$(DEPDIR)/alienarena_ded-cvar.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/cvar.c' object='qcommon/alienarena_ded-cvar.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-cvar.obj `if test -f 'qcommon/cvar.c'; then $(CYGPATH_W) 'qcommon/cvar.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/cvar.c'; fi` + +qcommon/alienarena_ded-files.o: qcommon/files.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-files.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-files.Tpo -c -o qcommon/alienarena_ded-files.o `test -f 'qcommon/files.c' || echo '$(srcdir)/'`qcommon/files.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-files.Tpo qcommon/$(DEPDIR)/alienarena_ded-files.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/files.c' object='qcommon/alienarena_ded-files.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-files.o `test -f 'qcommon/files.c' || echo '$(srcdir)/'`qcommon/files.c + +qcommon/alienarena_ded-files.obj: qcommon/files.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-files.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-files.Tpo -c -o qcommon/alienarena_ded-files.obj `if test -f 'qcommon/files.c'; then $(CYGPATH_W) 'qcommon/files.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/files.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-files.Tpo qcommon/$(DEPDIR)/alienarena_ded-files.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/files.c' object='qcommon/alienarena_ded-files.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-files.obj `if test -f 'qcommon/files.c'; then $(CYGPATH_W) 'qcommon/files.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/files.c'; fi` + +qcommon/alienarena_ded-htable.o: qcommon/htable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-htable.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-htable.Tpo -c -o qcommon/alienarena_ded-htable.o `test -f 'qcommon/htable.c' || echo '$(srcdir)/'`qcommon/htable.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-htable.Tpo qcommon/$(DEPDIR)/alienarena_ded-htable.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/htable.c' object='qcommon/alienarena_ded-htable.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-htable.o `test -f 'qcommon/htable.c' || echo '$(srcdir)/'`qcommon/htable.c + +qcommon/alienarena_ded-htable.obj: qcommon/htable.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-htable.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-htable.Tpo -c -o qcommon/alienarena_ded-htable.obj `if test -f 'qcommon/htable.c'; then $(CYGPATH_W) 'qcommon/htable.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/htable.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-htable.Tpo qcommon/$(DEPDIR)/alienarena_ded-htable.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/htable.c' object='qcommon/alienarena_ded-htable.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-htable.obj `if test -f 'qcommon/htable.c'; then $(CYGPATH_W) 'qcommon/htable.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/htable.c'; fi` + +qcommon/alienarena_ded-mdfour.o: qcommon/mdfour.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-mdfour.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-mdfour.Tpo -c -o qcommon/alienarena_ded-mdfour.o `test -f 'qcommon/mdfour.c' || echo '$(srcdir)/'`qcommon/mdfour.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-mdfour.Tpo qcommon/$(DEPDIR)/alienarena_ded-mdfour.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/mdfour.c' object='qcommon/alienarena_ded-mdfour.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-mdfour.o `test -f 'qcommon/mdfour.c' || echo '$(srcdir)/'`qcommon/mdfour.c + +qcommon/alienarena_ded-mdfour.obj: qcommon/mdfour.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-mdfour.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-mdfour.Tpo -c -o qcommon/alienarena_ded-mdfour.obj `if test -f 'qcommon/mdfour.c'; then $(CYGPATH_W) 'qcommon/mdfour.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/mdfour.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-mdfour.Tpo qcommon/$(DEPDIR)/alienarena_ded-mdfour.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/mdfour.c' object='qcommon/alienarena_ded-mdfour.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-mdfour.obj `if test -f 'qcommon/mdfour.c'; then $(CYGPATH_W) 'qcommon/mdfour.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/mdfour.c'; fi` + +qcommon/alienarena_ded-net_chan.o: qcommon/net_chan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-net_chan.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-net_chan.Tpo -c -o qcommon/alienarena_ded-net_chan.o `test -f 'qcommon/net_chan.c' || echo '$(srcdir)/'`qcommon/net_chan.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-net_chan.Tpo qcommon/$(DEPDIR)/alienarena_ded-net_chan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/net_chan.c' object='qcommon/alienarena_ded-net_chan.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-net_chan.o `test -f 'qcommon/net_chan.c' || echo '$(srcdir)/'`qcommon/net_chan.c + +qcommon/alienarena_ded-net_chan.obj: qcommon/net_chan.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-net_chan.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-net_chan.Tpo -c -o qcommon/alienarena_ded-net_chan.obj `if test -f 'qcommon/net_chan.c'; then $(CYGPATH_W) 'qcommon/net_chan.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/net_chan.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-net_chan.Tpo qcommon/$(DEPDIR)/alienarena_ded-net_chan.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/net_chan.c' object='qcommon/alienarena_ded-net_chan.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-net_chan.obj `if test -f 'qcommon/net_chan.c'; then $(CYGPATH_W) 'qcommon/net_chan.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/net_chan.c'; fi` + +qcommon/alienarena_ded-pmove.o: qcommon/pmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-pmove.o -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-pmove.Tpo -c -o qcommon/alienarena_ded-pmove.o `test -f 'qcommon/pmove.c' || echo '$(srcdir)/'`qcommon/pmove.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-pmove.Tpo qcommon/$(DEPDIR)/alienarena_ded-pmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/pmove.c' object='qcommon/alienarena_ded-pmove.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-pmove.o `test -f 'qcommon/pmove.c' || echo '$(srcdir)/'`qcommon/pmove.c + +qcommon/alienarena_ded-pmove.obj: qcommon/pmove.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT qcommon/alienarena_ded-pmove.obj -MD -MP -MF qcommon/$(DEPDIR)/alienarena_ded-pmove.Tpo -c -o qcommon/alienarena_ded-pmove.obj `if test -f 'qcommon/pmove.c'; then $(CYGPATH_W) 'qcommon/pmove.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/pmove.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) qcommon/$(DEPDIR)/alienarena_ded-pmove.Tpo qcommon/$(DEPDIR)/alienarena_ded-pmove.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='qcommon/pmove.c' object='qcommon/alienarena_ded-pmove.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o qcommon/alienarena_ded-pmove.obj `if test -f 'qcommon/pmove.c'; then $(CYGPATH_W) 'qcommon/pmove.c'; else $(CYGPATH_W) '$(srcdir)/qcommon/pmove.c'; fi` + +server/alienarena_ded-sv_ccmds.o: server/sv_ccmds.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_ccmds.o -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_ccmds.Tpo -c -o server/alienarena_ded-sv_ccmds.o `test -f 'server/sv_ccmds.c' || echo '$(srcdir)/'`server/sv_ccmds.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_ccmds.Tpo server/$(DEPDIR)/alienarena_ded-sv_ccmds.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_ccmds.c' object='server/alienarena_ded-sv_ccmds.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_ccmds.o `test -f 'server/sv_ccmds.c' || echo '$(srcdir)/'`server/sv_ccmds.c + +server/alienarena_ded-sv_ccmds.obj: server/sv_ccmds.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_ccmds.obj -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_ccmds.Tpo -c -o server/alienarena_ded-sv_ccmds.obj `if test -f 'server/sv_ccmds.c'; then $(CYGPATH_W) 'server/sv_ccmds.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ccmds.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_ccmds.Tpo server/$(DEPDIR)/alienarena_ded-sv_ccmds.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_ccmds.c' object='server/alienarena_ded-sv_ccmds.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_ccmds.obj `if test -f 'server/sv_ccmds.c'; then $(CYGPATH_W) 'server/sv_ccmds.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ccmds.c'; fi` + +server/alienarena_ded-sv_ents.o: server/sv_ents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_ents.o -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_ents.Tpo -c -o server/alienarena_ded-sv_ents.o `test -f 'server/sv_ents.c' || echo '$(srcdir)/'`server/sv_ents.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_ents.Tpo server/$(DEPDIR)/alienarena_ded-sv_ents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_ents.c' object='server/alienarena_ded-sv_ents.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_ents.o `test -f 'server/sv_ents.c' || echo '$(srcdir)/'`server/sv_ents.c + +server/alienarena_ded-sv_ents.obj: server/sv_ents.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_ents.obj -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_ents.Tpo -c -o server/alienarena_ded-sv_ents.obj `if test -f 'server/sv_ents.c'; then $(CYGPATH_W) 'server/sv_ents.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ents.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_ents.Tpo server/$(DEPDIR)/alienarena_ded-sv_ents.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_ents.c' object='server/alienarena_ded-sv_ents.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_ents.obj `if test -f 'server/sv_ents.c'; then $(CYGPATH_W) 'server/sv_ents.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_ents.c'; fi` + +server/alienarena_ded-sv_game.o: server/sv_game.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_game.o -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_game.Tpo -c -o server/alienarena_ded-sv_game.o `test -f 'server/sv_game.c' || echo '$(srcdir)/'`server/sv_game.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_game.Tpo server/$(DEPDIR)/alienarena_ded-sv_game.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_game.c' object='server/alienarena_ded-sv_game.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_game.o `test -f 'server/sv_game.c' || echo '$(srcdir)/'`server/sv_game.c + +server/alienarena_ded-sv_game.obj: server/sv_game.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_game.obj -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_game.Tpo -c -o server/alienarena_ded-sv_game.obj `if test -f 'server/sv_game.c'; then $(CYGPATH_W) 'server/sv_game.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_game.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_game.Tpo server/$(DEPDIR)/alienarena_ded-sv_game.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_game.c' object='server/alienarena_ded-sv_game.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_game.obj `if test -f 'server/sv_game.c'; then $(CYGPATH_W) 'server/sv_game.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_game.c'; fi` + +server/alienarena_ded-sv_init.o: server/sv_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_init.o -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_init.Tpo -c -o server/alienarena_ded-sv_init.o `test -f 'server/sv_init.c' || echo '$(srcdir)/'`server/sv_init.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_init.Tpo server/$(DEPDIR)/alienarena_ded-sv_init.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_init.c' object='server/alienarena_ded-sv_init.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_init.o `test -f 'server/sv_init.c' || echo '$(srcdir)/'`server/sv_init.c + +server/alienarena_ded-sv_init.obj: server/sv_init.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_init.obj -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_init.Tpo -c -o server/alienarena_ded-sv_init.obj `if test -f 'server/sv_init.c'; then $(CYGPATH_W) 'server/sv_init.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_init.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_init.Tpo server/$(DEPDIR)/alienarena_ded-sv_init.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_init.c' object='server/alienarena_ded-sv_init.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_init.obj `if test -f 'server/sv_init.c'; then $(CYGPATH_W) 'server/sv_init.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_init.c'; fi` + +server/alienarena_ded-sv_main.o: server/sv_main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_main.o -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_main.Tpo -c -o server/alienarena_ded-sv_main.o `test -f 'server/sv_main.c' || echo '$(srcdir)/'`server/sv_main.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_main.Tpo server/$(DEPDIR)/alienarena_ded-sv_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_main.c' object='server/alienarena_ded-sv_main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_main.o `test -f 'server/sv_main.c' || echo '$(srcdir)/'`server/sv_main.c + +server/alienarena_ded-sv_main.obj: server/sv_main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_main.obj -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_main.Tpo -c -o server/alienarena_ded-sv_main.obj `if test -f 'server/sv_main.c'; then $(CYGPATH_W) 'server/sv_main.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_main.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_main.Tpo server/$(DEPDIR)/alienarena_ded-sv_main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_main.c' object='server/alienarena_ded-sv_main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_main.obj `if test -f 'server/sv_main.c'; then $(CYGPATH_W) 'server/sv_main.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_main.c'; fi` + +server/alienarena_ded-sv_send.o: server/sv_send.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_send.o -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_send.Tpo -c -o server/alienarena_ded-sv_send.o `test -f 'server/sv_send.c' || echo '$(srcdir)/'`server/sv_send.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_send.Tpo server/$(DEPDIR)/alienarena_ded-sv_send.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_send.c' object='server/alienarena_ded-sv_send.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_send.o `test -f 'server/sv_send.c' || echo '$(srcdir)/'`server/sv_send.c + +server/alienarena_ded-sv_send.obj: server/sv_send.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_send.obj -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_send.Tpo -c -o server/alienarena_ded-sv_send.obj `if test -f 'server/sv_send.c'; then $(CYGPATH_W) 'server/sv_send.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_send.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_send.Tpo server/$(DEPDIR)/alienarena_ded-sv_send.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_send.c' object='server/alienarena_ded-sv_send.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_send.obj `if test -f 'server/sv_send.c'; then $(CYGPATH_W) 'server/sv_send.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_send.c'; fi` + +server/alienarena_ded-sv_user.o: server/sv_user.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_user.o -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_user.Tpo -c -o server/alienarena_ded-sv_user.o `test -f 'server/sv_user.c' || echo '$(srcdir)/'`server/sv_user.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_user.Tpo server/$(DEPDIR)/alienarena_ded-sv_user.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_user.c' object='server/alienarena_ded-sv_user.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_user.o `test -f 'server/sv_user.c' || echo '$(srcdir)/'`server/sv_user.c + +server/alienarena_ded-sv_user.obj: server/sv_user.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_user.obj -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_user.Tpo -c -o server/alienarena_ded-sv_user.obj `if test -f 'server/sv_user.c'; then $(CYGPATH_W) 'server/sv_user.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_user.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_user.Tpo server/$(DEPDIR)/alienarena_ded-sv_user.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_user.c' object='server/alienarena_ded-sv_user.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_user.obj `if test -f 'server/sv_user.c'; then $(CYGPATH_W) 'server/sv_user.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_user.c'; fi` + +server/alienarena_ded-sv_world.o: server/sv_world.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_world.o -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_world.Tpo -c -o server/alienarena_ded-sv_world.o `test -f 'server/sv_world.c' || echo '$(srcdir)/'`server/sv_world.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_world.Tpo server/$(DEPDIR)/alienarena_ded-sv_world.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_world.c' object='server/alienarena_ded-sv_world.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_world.o `test -f 'server/sv_world.c' || echo '$(srcdir)/'`server/sv_world.c + +server/alienarena_ded-sv_world.obj: server/sv_world.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT server/alienarena_ded-sv_world.obj -MD -MP -MF server/$(DEPDIR)/alienarena_ded-sv_world.Tpo -c -o server/alienarena_ded-sv_world.obj `if test -f 'server/sv_world.c'; then $(CYGPATH_W) 'server/sv_world.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_world.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) server/$(DEPDIR)/alienarena_ded-sv_world.Tpo server/$(DEPDIR)/alienarena_ded-sv_world.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='server/sv_world.c' object='server/alienarena_ded-sv_world.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o server/alienarena_ded-sv_world.obj `if test -f 'server/sv_world.c'; then $(CYGPATH_W) 'server/sv_world.c'; else $(CYGPATH_W) '$(srcdir)/server/sv_world.c'; fi` + +unix/alienarena_ded-glob.o: unix/glob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena_ded-glob.o -MD -MP -MF unix/$(DEPDIR)/alienarena_ded-glob.Tpo -c -o unix/alienarena_ded-glob.o `test -f 'unix/glob.c' || echo '$(srcdir)/'`unix/glob.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena_ded-glob.Tpo unix/$(DEPDIR)/alienarena_ded-glob.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/glob.c' object='unix/alienarena_ded-glob.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena_ded-glob.o `test -f 'unix/glob.c' || echo '$(srcdir)/'`unix/glob.c + +unix/alienarena_ded-glob.obj: unix/glob.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena_ded-glob.obj -MD -MP -MF unix/$(DEPDIR)/alienarena_ded-glob.Tpo -c -o unix/alienarena_ded-glob.obj `if test -f 'unix/glob.c'; then $(CYGPATH_W) 'unix/glob.c'; else $(CYGPATH_W) '$(srcdir)/unix/glob.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena_ded-glob.Tpo unix/$(DEPDIR)/alienarena_ded-glob.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/glob.c' object='unix/alienarena_ded-glob.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena_ded-glob.obj `if test -f 'unix/glob.c'; then $(CYGPATH_W) 'unix/glob.c'; else $(CYGPATH_W) '$(srcdir)/unix/glob.c'; fi` + +unix/alienarena_ded-net_udp.o: unix/net_udp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena_ded-net_udp.o -MD -MP -MF unix/$(DEPDIR)/alienarena_ded-net_udp.Tpo -c -o unix/alienarena_ded-net_udp.o `test -f 'unix/net_udp.c' || echo '$(srcdir)/'`unix/net_udp.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena_ded-net_udp.Tpo unix/$(DEPDIR)/alienarena_ded-net_udp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/net_udp.c' object='unix/alienarena_ded-net_udp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena_ded-net_udp.o `test -f 'unix/net_udp.c' || echo '$(srcdir)/'`unix/net_udp.c + +unix/alienarena_ded-net_udp.obj: unix/net_udp.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena_ded-net_udp.obj -MD -MP -MF unix/$(DEPDIR)/alienarena_ded-net_udp.Tpo -c -o unix/alienarena_ded-net_udp.obj `if test -f 'unix/net_udp.c'; then $(CYGPATH_W) 'unix/net_udp.c'; else $(CYGPATH_W) '$(srcdir)/unix/net_udp.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena_ded-net_udp.Tpo unix/$(DEPDIR)/alienarena_ded-net_udp.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/net_udp.c' object='unix/alienarena_ded-net_udp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena_ded-net_udp.obj `if test -f 'unix/net_udp.c'; then $(CYGPATH_W) 'unix/net_udp.c'; else $(CYGPATH_W) '$(srcdir)/unix/net_udp.c'; fi` + +unix/alienarena_ded-q_shunix.o: unix/q_shunix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena_ded-q_shunix.o -MD -MP -MF unix/$(DEPDIR)/alienarena_ded-q_shunix.Tpo -c -o unix/alienarena_ded-q_shunix.o `test -f 'unix/q_shunix.c' || echo '$(srcdir)/'`unix/q_shunix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena_ded-q_shunix.Tpo unix/$(DEPDIR)/alienarena_ded-q_shunix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/q_shunix.c' object='unix/alienarena_ded-q_shunix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena_ded-q_shunix.o `test -f 'unix/q_shunix.c' || echo '$(srcdir)/'`unix/q_shunix.c + +unix/alienarena_ded-q_shunix.obj: unix/q_shunix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena_ded-q_shunix.obj -MD -MP -MF unix/$(DEPDIR)/alienarena_ded-q_shunix.Tpo -c -o unix/alienarena_ded-q_shunix.obj `if test -f 'unix/q_shunix.c'; then $(CYGPATH_W) 'unix/q_shunix.c'; else $(CYGPATH_W) '$(srcdir)/unix/q_shunix.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena_ded-q_shunix.Tpo unix/$(DEPDIR)/alienarena_ded-q_shunix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/q_shunix.c' object='unix/alienarena_ded-q_shunix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena_ded-q_shunix.obj `if test -f 'unix/q_shunix.c'; then $(CYGPATH_W) 'unix/q_shunix.c'; else $(CYGPATH_W) '$(srcdir)/unix/q_shunix.c'; fi` + +unix/alienarena_ded-sys_unix.o: unix/sys_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena_ded-sys_unix.o -MD -MP -MF unix/$(DEPDIR)/alienarena_ded-sys_unix.Tpo -c -o unix/alienarena_ded-sys_unix.o `test -f 'unix/sys_unix.c' || echo '$(srcdir)/'`unix/sys_unix.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena_ded-sys_unix.Tpo unix/$(DEPDIR)/alienarena_ded-sys_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/sys_unix.c' object='unix/alienarena_ded-sys_unix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena_ded-sys_unix.o `test -f 'unix/sys_unix.c' || echo '$(srcdir)/'`unix/sys_unix.c + +unix/alienarena_ded-sys_unix.obj: unix/sys_unix.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -MT unix/alienarena_ded-sys_unix.obj -MD -MP -MF unix/$(DEPDIR)/alienarena_ded-sys_unix.Tpo -c -o unix/alienarena_ded-sys_unix.obj `if test -f 'unix/sys_unix.c'; then $(CYGPATH_W) 'unix/sys_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/sys_unix.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) unix/$(DEPDIR)/alienarena_ded-sys_unix.Tpo unix/$(DEPDIR)/alienarena_ded-sys_unix.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='unix/sys_unix.c' object='unix/alienarena_ded-sys_unix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(alienarena_ded_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o unix/alienarena_ded-sys_unix.obj `if test -f 'unix/sys_unix.c'; then $(CYGPATH_W) 'unix/sys_unix.c'; else $(CYGPATH_W) '$(srcdir)/unix/sys_unix.c'; fi` .cpp.o: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.o$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ $< &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ $< +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ $< .cpp.obj: @am__fastdepCXX_TRUE@ $(AM_V_CXX)depbase=`echo $@ | sed 's|[^/]*$$|$(DEPDIR)/&|;s|\.obj$$||'`;\ @am__fastdepCXX_TRUE@ $(CXXCOMPILE) -MT $@ -MD -MP -MF $$depbase.Tpo -c -o $@ `$(CYGPATH_W) '$<'` &&\ @am__fastdepCXX_TRUE@ $(am__mv) $$depbase.Tpo $$depbase.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXXCOMPILE) -c -o $@ `$(CYGPATH_W) '$<'` unix/odesrc/libode_a-array.o: unix/odesrc/array.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-array.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-array.Tpo -c -o unix/odesrc/libode_a-array.o `test -f 'unix/odesrc/array.cpp' || echo '$(srcdir)/'`unix/odesrc/array.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-array.Tpo unix/odesrc/$(DEPDIR)/libode_a-array.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/array.cpp' object='unix/odesrc/libode_a-array.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/array.cpp' object='unix/odesrc/libode_a-array.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-array.o `test -f 'unix/odesrc/array.cpp' || echo '$(srcdir)/'`unix/odesrc/array.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-array.o `test -f 'unix/odesrc/array.cpp' || echo '$(srcdir)/'`unix/odesrc/array.cpp unix/odesrc/libode_a-array.obj: unix/odesrc/array.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-array.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-array.Tpo -c -o unix/odesrc/libode_a-array.obj `if test -f 'unix/odesrc/array.cpp'; then $(CYGPATH_W) 'unix/odesrc/array.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/array.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-array.Tpo unix/odesrc/$(DEPDIR)/libode_a-array.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/array.cpp' object='unix/odesrc/libode_a-array.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/array.cpp' object='unix/odesrc/libode_a-array.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-array.obj `if test -f 'unix/odesrc/array.cpp'; then $(CYGPATH_W) 'unix/odesrc/array.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/array.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-array.obj `if test -f 'unix/odesrc/array.cpp'; then $(CYGPATH_W) 'unix/odesrc/array.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/array.cpp'; fi` unix/odesrc/libode_a-box.o: unix/odesrc/box.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-box.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-box.Tpo -c -o unix/odesrc/libode_a-box.o `test -f 'unix/odesrc/box.cpp' || echo '$(srcdir)/'`unix/odesrc/box.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-box.Tpo unix/odesrc/$(DEPDIR)/libode_a-box.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/box.cpp' object='unix/odesrc/libode_a-box.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/box.cpp' object='unix/odesrc/libode_a-box.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-box.o `test -f 'unix/odesrc/box.cpp' || echo '$(srcdir)/'`unix/odesrc/box.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-box.o `test -f 'unix/odesrc/box.cpp' || echo '$(srcdir)/'`unix/odesrc/box.cpp unix/odesrc/libode_a-box.obj: unix/odesrc/box.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-box.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-box.Tpo -c -o unix/odesrc/libode_a-box.obj `if test -f 'unix/odesrc/box.cpp'; then $(CYGPATH_W) 'unix/odesrc/box.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/box.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-box.Tpo unix/odesrc/$(DEPDIR)/libode_a-box.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/box.cpp' object='unix/odesrc/libode_a-box.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/box.cpp' object='unix/odesrc/libode_a-box.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-box.obj `if test -f 'unix/odesrc/box.cpp'; then $(CYGPATH_W) 'unix/odesrc/box.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/box.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-box.obj `if test -f 'unix/odesrc/box.cpp'; then $(CYGPATH_W) 'unix/odesrc/box.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/box.cpp'; fi` unix/odesrc/libode_a-capsule.o: unix/odesrc/capsule.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-capsule.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-capsule.Tpo -c -o unix/odesrc/libode_a-capsule.o `test -f 'unix/odesrc/capsule.cpp' || echo '$(srcdir)/'`unix/odesrc/capsule.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-capsule.Tpo unix/odesrc/$(DEPDIR)/libode_a-capsule.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/capsule.cpp' object='unix/odesrc/libode_a-capsule.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/capsule.cpp' object='unix/odesrc/libode_a-capsule.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-capsule.o `test -f 'unix/odesrc/capsule.cpp' || echo '$(srcdir)/'`unix/odesrc/capsule.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-capsule.o `test -f 'unix/odesrc/capsule.cpp' || echo '$(srcdir)/'`unix/odesrc/capsule.cpp unix/odesrc/libode_a-capsule.obj: unix/odesrc/capsule.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-capsule.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-capsule.Tpo -c -o unix/odesrc/libode_a-capsule.obj `if test -f 'unix/odesrc/capsule.cpp'; then $(CYGPATH_W) 'unix/odesrc/capsule.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/capsule.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-capsule.Tpo unix/odesrc/$(DEPDIR)/libode_a-capsule.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/capsule.cpp' object='unix/odesrc/libode_a-capsule.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/capsule.cpp' object='unix/odesrc/libode_a-capsule.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-capsule.obj `if test -f 'unix/odesrc/capsule.cpp'; then $(CYGPATH_W) 'unix/odesrc/capsule.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/capsule.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-capsule.obj `if test -f 'unix/odesrc/capsule.cpp'; then $(CYGPATH_W) 'unix/odesrc/capsule.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/capsule.cpp'; fi` unix/odesrc/libode_a-collision_cylinder_box.o: unix/odesrc/collision_cylinder_box.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_cylinder_box.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_box.Tpo -c -o unix/odesrc/libode_a-collision_cylinder_box.o `test -f 'unix/odesrc/collision_cylinder_box.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_box.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_box.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_box.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_cylinder_box.cpp' object='unix/odesrc/libode_a-collision_cylinder_box.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_cylinder_box.cpp' object='unix/odesrc/libode_a-collision_cylinder_box.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_box.o `test -f 'unix/odesrc/collision_cylinder_box.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_box.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_box.o `test -f 'unix/odesrc/collision_cylinder_box.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_box.cpp unix/odesrc/libode_a-collision_cylinder_box.obj: unix/odesrc/collision_cylinder_box.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_cylinder_box.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_box.Tpo -c -o unix/odesrc/libode_a-collision_cylinder_box.obj `if test -f 'unix/odesrc/collision_cylinder_box.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_box.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_box.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_box.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_box.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_cylinder_box.cpp' object='unix/odesrc/libode_a-collision_cylinder_box.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_cylinder_box.cpp' object='unix/odesrc/libode_a-collision_cylinder_box.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_box.obj `if test -f 'unix/odesrc/collision_cylinder_box.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_box.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_box.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_box.obj `if test -f 'unix/odesrc/collision_cylinder_box.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_box.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_box.cpp'; fi` unix/odesrc/libode_a-collision_cylinder_plane.o: unix/odesrc/collision_cylinder_plane.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_cylinder_plane.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_plane.Tpo -c -o unix/odesrc/libode_a-collision_cylinder_plane.o `test -f 'unix/odesrc/collision_cylinder_plane.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_plane.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_plane.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_plane.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_cylinder_plane.cpp' object='unix/odesrc/libode_a-collision_cylinder_plane.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_cylinder_plane.cpp' object='unix/odesrc/libode_a-collision_cylinder_plane.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_plane.o `test -f 'unix/odesrc/collision_cylinder_plane.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_plane.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_plane.o `test -f 'unix/odesrc/collision_cylinder_plane.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_plane.cpp unix/odesrc/libode_a-collision_cylinder_plane.obj: unix/odesrc/collision_cylinder_plane.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_cylinder_plane.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_plane.Tpo -c -o unix/odesrc/libode_a-collision_cylinder_plane.obj `if test -f 'unix/odesrc/collision_cylinder_plane.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_plane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_plane.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_plane.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_plane.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_cylinder_plane.cpp' object='unix/odesrc/libode_a-collision_cylinder_plane.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_cylinder_plane.cpp' object='unix/odesrc/libode_a-collision_cylinder_plane.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_plane.obj `if test -f 'unix/odesrc/collision_cylinder_plane.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_plane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_plane.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_plane.obj `if test -f 'unix/odesrc/collision_cylinder_plane.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_plane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_plane.cpp'; fi` unix/odesrc/libode_a-collision_cylinder_sphere.o: unix/odesrc/collision_cylinder_sphere.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_cylinder_sphere.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_sphere.Tpo -c -o unix/odesrc/libode_a-collision_cylinder_sphere.o `test -f 'unix/odesrc/collision_cylinder_sphere.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_sphere.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_sphere.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_sphere.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_cylinder_sphere.cpp' object='unix/odesrc/libode_a-collision_cylinder_sphere.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_cylinder_sphere.cpp' object='unix/odesrc/libode_a-collision_cylinder_sphere.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_sphere.o `test -f 'unix/odesrc/collision_cylinder_sphere.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_sphere.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_sphere.o `test -f 'unix/odesrc/collision_cylinder_sphere.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_sphere.cpp unix/odesrc/libode_a-collision_cylinder_sphere.obj: unix/odesrc/collision_cylinder_sphere.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_cylinder_sphere.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_sphere.Tpo -c -o unix/odesrc/libode_a-collision_cylinder_sphere.obj `if test -f 'unix/odesrc/collision_cylinder_sphere.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_sphere.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_sphere.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_sphere.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_sphere.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_cylinder_sphere.cpp' object='unix/odesrc/libode_a-collision_cylinder_sphere.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_cylinder_sphere.cpp' object='unix/odesrc/libode_a-collision_cylinder_sphere.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_sphere.obj `if test -f 'unix/odesrc/collision_cylinder_sphere.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_sphere.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_sphere.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_sphere.obj `if test -f 'unix/odesrc/collision_cylinder_sphere.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_sphere.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_sphere.cpp'; fi` unix/odesrc/libode_a-collision_kernel.o: unix/odesrc/collision_kernel.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_kernel.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_kernel.Tpo -c -o unix/odesrc/libode_a-collision_kernel.o `test -f 'unix/odesrc/collision_kernel.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_kernel.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_kernel.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_kernel.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_kernel.cpp' object='unix/odesrc/libode_a-collision_kernel.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_kernel.cpp' object='unix/odesrc/libode_a-collision_kernel.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_kernel.o `test -f 'unix/odesrc/collision_kernel.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_kernel.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_kernel.o `test -f 'unix/odesrc/collision_kernel.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_kernel.cpp unix/odesrc/libode_a-collision_kernel.obj: unix/odesrc/collision_kernel.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_kernel.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_kernel.Tpo -c -o unix/odesrc/libode_a-collision_kernel.obj `if test -f 'unix/odesrc/collision_kernel.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_kernel.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_kernel.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_kernel.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_kernel.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_kernel.cpp' object='unix/odesrc/libode_a-collision_kernel.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_kernel.cpp' object='unix/odesrc/libode_a-collision_kernel.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_kernel.obj `if test -f 'unix/odesrc/collision_kernel.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_kernel.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_kernel.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_kernel.obj `if test -f 'unix/odesrc/collision_kernel.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_kernel.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_kernel.cpp'; fi` unix/odesrc/libode_a-collision_quadtreespace.o: unix/odesrc/collision_quadtreespace.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_quadtreespace.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_quadtreespace.Tpo -c -o unix/odesrc/libode_a-collision_quadtreespace.o `test -f 'unix/odesrc/collision_quadtreespace.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_quadtreespace.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_quadtreespace.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_quadtreespace.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_quadtreespace.cpp' object='unix/odesrc/libode_a-collision_quadtreespace.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_quadtreespace.cpp' object='unix/odesrc/libode_a-collision_quadtreespace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_quadtreespace.o `test -f 'unix/odesrc/collision_quadtreespace.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_quadtreespace.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_quadtreespace.o `test -f 'unix/odesrc/collision_quadtreespace.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_quadtreespace.cpp unix/odesrc/libode_a-collision_quadtreespace.obj: unix/odesrc/collision_quadtreespace.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_quadtreespace.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_quadtreespace.Tpo -c -o unix/odesrc/libode_a-collision_quadtreespace.obj `if test -f 'unix/odesrc/collision_quadtreespace.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_quadtreespace.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_quadtreespace.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_quadtreespace.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_quadtreespace.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_quadtreespace.cpp' object='unix/odesrc/libode_a-collision_quadtreespace.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_quadtreespace.cpp' object='unix/odesrc/libode_a-collision_quadtreespace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_quadtreespace.obj `if test -f 'unix/odesrc/collision_quadtreespace.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_quadtreespace.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_quadtreespace.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_quadtreespace.obj `if test -f 'unix/odesrc/collision_quadtreespace.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_quadtreespace.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_quadtreespace.cpp'; fi` unix/odesrc/libode_a-collision_sapspace.o: unix/odesrc/collision_sapspace.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_sapspace.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_sapspace.Tpo -c -o unix/odesrc/libode_a-collision_sapspace.o `test -f 'unix/odesrc/collision_sapspace.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_sapspace.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_sapspace.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_sapspace.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_sapspace.cpp' object='unix/odesrc/libode_a-collision_sapspace.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_sapspace.cpp' object='unix/odesrc/libode_a-collision_sapspace.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_sapspace.o `test -f 'unix/odesrc/collision_sapspace.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_sapspace.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_sapspace.o `test -f 'unix/odesrc/collision_sapspace.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_sapspace.cpp unix/odesrc/libode_a-collision_sapspace.obj: unix/odesrc/collision_sapspace.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_sapspace.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_sapspace.Tpo -c -o unix/odesrc/libode_a-collision_sapspace.obj `if test -f 'unix/odesrc/collision_sapspace.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_sapspace.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_sapspace.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_sapspace.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_sapspace.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_sapspace.cpp' object='unix/odesrc/libode_a-collision_sapspace.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_sapspace.cpp' object='unix/odesrc/libode_a-collision_sapspace.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_sapspace.obj `if test -f 'unix/odesrc/collision_sapspace.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_sapspace.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_sapspace.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_sapspace.obj `if test -f 'unix/odesrc/collision_sapspace.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_sapspace.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_sapspace.cpp'; fi` unix/odesrc/libode_a-collision_space.o: unix/odesrc/collision_space.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_space.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_space.Tpo -c -o unix/odesrc/libode_a-collision_space.o `test -f 'unix/odesrc/collision_space.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_space.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_space.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_space.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_space.cpp' object='unix/odesrc/libode_a-collision_space.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_space.cpp' object='unix/odesrc/libode_a-collision_space.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_space.o `test -f 'unix/odesrc/collision_space.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_space.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_space.o `test -f 'unix/odesrc/collision_space.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_space.cpp unix/odesrc/libode_a-collision_space.obj: unix/odesrc/collision_space.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_space.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_space.Tpo -c -o unix/odesrc/libode_a-collision_space.obj `if test -f 'unix/odesrc/collision_space.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_space.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_space.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_space.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_space.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_space.cpp' object='unix/odesrc/libode_a-collision_space.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_space.cpp' object='unix/odesrc/libode_a-collision_space.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_space.obj `if test -f 'unix/odesrc/collision_space.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_space.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_space.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_space.obj `if test -f 'unix/odesrc/collision_space.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_space.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_space.cpp'; fi` unix/odesrc/libode_a-collision_transform.o: unix/odesrc/collision_transform.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_transform.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_transform.Tpo -c -o unix/odesrc/libode_a-collision_transform.o `test -f 'unix/odesrc/collision_transform.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_transform.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_transform.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_transform.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_transform.cpp' object='unix/odesrc/libode_a-collision_transform.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_transform.cpp' object='unix/odesrc/libode_a-collision_transform.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_transform.o `test -f 'unix/odesrc/collision_transform.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_transform.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_transform.o `test -f 'unix/odesrc/collision_transform.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_transform.cpp unix/odesrc/libode_a-collision_transform.obj: unix/odesrc/collision_transform.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_transform.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_transform.Tpo -c -o unix/odesrc/libode_a-collision_transform.obj `if test -f 'unix/odesrc/collision_transform.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_transform.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_transform.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_transform.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_transform.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_transform.cpp' object='unix/odesrc/libode_a-collision_transform.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_transform.cpp' object='unix/odesrc/libode_a-collision_transform.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_transform.obj `if test -f 'unix/odesrc/collision_transform.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_transform.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_transform.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_transform.obj `if test -f 'unix/odesrc/collision_transform.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_transform.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_transform.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_disabled.o: unix/odesrc/collision_trimesh_disabled.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_disabled.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_disabled.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_disabled.o `test -f 'unix/odesrc/collision_trimesh_disabled.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_disabled.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_disabled.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_disabled.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_disabled.cpp' object='unix/odesrc/libode_a-collision_trimesh_disabled.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_disabled.cpp' object='unix/odesrc/libode_a-collision_trimesh_disabled.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_disabled.o `test -f 'unix/odesrc/collision_trimesh_disabled.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_disabled.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_disabled.o `test -f 'unix/odesrc/collision_trimesh_disabled.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_disabled.cpp unix/odesrc/libode_a-collision_trimesh_disabled.obj: unix/odesrc/collision_trimesh_disabled.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_disabled.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_disabled.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_disabled.obj `if test -f 'unix/odesrc/collision_trimesh_disabled.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_disabled.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_disabled.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_disabled.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_disabled.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_disabled.cpp' object='unix/odesrc/libode_a-collision_trimesh_disabled.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_disabled.cpp' object='unix/odesrc/libode_a-collision_trimesh_disabled.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_disabled.obj `if test -f 'unix/odesrc/collision_trimesh_disabled.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_disabled.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_disabled.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_disabled.obj `if test -f 'unix/odesrc/collision_trimesh_disabled.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_disabled.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_disabled.cpp'; fi` unix/odesrc/libode_a-collision_util.o: unix/odesrc/collision_util.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_util.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_util.Tpo -c -o unix/odesrc/libode_a-collision_util.o `test -f 'unix/odesrc/collision_util.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_util.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_util.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_util.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_util.cpp' object='unix/odesrc/libode_a-collision_util.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_util.cpp' object='unix/odesrc/libode_a-collision_util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_util.o `test -f 'unix/odesrc/collision_util.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_util.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_util.o `test -f 'unix/odesrc/collision_util.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_util.cpp unix/odesrc/libode_a-collision_util.obj: unix/odesrc/collision_util.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_util.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_util.Tpo -c -o unix/odesrc/libode_a-collision_util.obj `if test -f 'unix/odesrc/collision_util.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_util.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_util.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_util.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_util.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_util.cpp' object='unix/odesrc/libode_a-collision_util.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_util.cpp' object='unix/odesrc/libode_a-collision_util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_util.obj `if test -f 'unix/odesrc/collision_util.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_util.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_util.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_util.obj `if test -f 'unix/odesrc/collision_util.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_util.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_util.cpp'; fi` unix/odesrc/libode_a-convex.o: unix/odesrc/convex.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-convex.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-convex.Tpo -c -o unix/odesrc/libode_a-convex.o `test -f 'unix/odesrc/convex.cpp' || echo '$(srcdir)/'`unix/odesrc/convex.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-convex.Tpo unix/odesrc/$(DEPDIR)/libode_a-convex.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/convex.cpp' object='unix/odesrc/libode_a-convex.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/convex.cpp' object='unix/odesrc/libode_a-convex.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-convex.o `test -f 'unix/odesrc/convex.cpp' || echo '$(srcdir)/'`unix/odesrc/convex.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-convex.o `test -f 'unix/odesrc/convex.cpp' || echo '$(srcdir)/'`unix/odesrc/convex.cpp unix/odesrc/libode_a-convex.obj: unix/odesrc/convex.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-convex.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-convex.Tpo -c -o unix/odesrc/libode_a-convex.obj `if test -f 'unix/odesrc/convex.cpp'; then $(CYGPATH_W) 'unix/odesrc/convex.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/convex.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-convex.Tpo unix/odesrc/$(DEPDIR)/libode_a-convex.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/convex.cpp' object='unix/odesrc/libode_a-convex.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/convex.cpp' object='unix/odesrc/libode_a-convex.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-convex.obj `if test -f 'unix/odesrc/convex.cpp'; then $(CYGPATH_W) 'unix/odesrc/convex.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/convex.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-convex.obj `if test -f 'unix/odesrc/convex.cpp'; then $(CYGPATH_W) 'unix/odesrc/convex.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/convex.cpp'; fi` unix/odesrc/libode_a-cylinder.o: unix/odesrc/cylinder.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-cylinder.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-cylinder.Tpo -c -o unix/odesrc/libode_a-cylinder.o `test -f 'unix/odesrc/cylinder.cpp' || echo '$(srcdir)/'`unix/odesrc/cylinder.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-cylinder.Tpo unix/odesrc/$(DEPDIR)/libode_a-cylinder.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/cylinder.cpp' object='unix/odesrc/libode_a-cylinder.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/cylinder.cpp' object='unix/odesrc/libode_a-cylinder.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-cylinder.o `test -f 'unix/odesrc/cylinder.cpp' || echo '$(srcdir)/'`unix/odesrc/cylinder.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-cylinder.o `test -f 'unix/odesrc/cylinder.cpp' || echo '$(srcdir)/'`unix/odesrc/cylinder.cpp unix/odesrc/libode_a-cylinder.obj: unix/odesrc/cylinder.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-cylinder.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-cylinder.Tpo -c -o unix/odesrc/libode_a-cylinder.obj `if test -f 'unix/odesrc/cylinder.cpp'; then $(CYGPATH_W) 'unix/odesrc/cylinder.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/cylinder.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-cylinder.Tpo unix/odesrc/$(DEPDIR)/libode_a-cylinder.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/cylinder.cpp' object='unix/odesrc/libode_a-cylinder.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/cylinder.cpp' object='unix/odesrc/libode_a-cylinder.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-cylinder.obj `if test -f 'unix/odesrc/cylinder.cpp'; then $(CYGPATH_W) 'unix/odesrc/cylinder.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/cylinder.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-cylinder.obj `if test -f 'unix/odesrc/cylinder.cpp'; then $(CYGPATH_W) 'unix/odesrc/cylinder.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/cylinder.cpp'; fi` unix/odesrc/libode_a-error.o: unix/odesrc/error.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-error.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-error.Tpo -c -o unix/odesrc/libode_a-error.o `test -f 'unix/odesrc/error.cpp' || echo '$(srcdir)/'`unix/odesrc/error.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-error.Tpo unix/odesrc/$(DEPDIR)/libode_a-error.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/error.cpp' object='unix/odesrc/libode_a-error.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/error.cpp' object='unix/odesrc/libode_a-error.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-error.o `test -f 'unix/odesrc/error.cpp' || echo '$(srcdir)/'`unix/odesrc/error.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-error.o `test -f 'unix/odesrc/error.cpp' || echo '$(srcdir)/'`unix/odesrc/error.cpp unix/odesrc/libode_a-error.obj: unix/odesrc/error.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-error.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-error.Tpo -c -o unix/odesrc/libode_a-error.obj `if test -f 'unix/odesrc/error.cpp'; then $(CYGPATH_W) 'unix/odesrc/error.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/error.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-error.Tpo unix/odesrc/$(DEPDIR)/libode_a-error.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/error.cpp' object='unix/odesrc/libode_a-error.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/error.cpp' object='unix/odesrc/libode_a-error.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-error.obj `if test -f 'unix/odesrc/error.cpp'; then $(CYGPATH_W) 'unix/odesrc/error.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/error.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-error.obj `if test -f 'unix/odesrc/error.cpp'; then $(CYGPATH_W) 'unix/odesrc/error.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/error.cpp'; fi` unix/odesrc/libode_a-export-dif.o: unix/odesrc/export-dif.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-export-dif.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-export-dif.Tpo -c -o unix/odesrc/libode_a-export-dif.o `test -f 'unix/odesrc/export-dif.cpp' || echo '$(srcdir)/'`unix/odesrc/export-dif.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-export-dif.Tpo unix/odesrc/$(DEPDIR)/libode_a-export-dif.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/export-dif.cpp' object='unix/odesrc/libode_a-export-dif.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/export-dif.cpp' object='unix/odesrc/libode_a-export-dif.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-export-dif.o `test -f 'unix/odesrc/export-dif.cpp' || echo '$(srcdir)/'`unix/odesrc/export-dif.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-export-dif.o `test -f 'unix/odesrc/export-dif.cpp' || echo '$(srcdir)/'`unix/odesrc/export-dif.cpp unix/odesrc/libode_a-export-dif.obj: unix/odesrc/export-dif.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-export-dif.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-export-dif.Tpo -c -o unix/odesrc/libode_a-export-dif.obj `if test -f 'unix/odesrc/export-dif.cpp'; then $(CYGPATH_W) 'unix/odesrc/export-dif.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/export-dif.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-export-dif.Tpo unix/odesrc/$(DEPDIR)/libode_a-export-dif.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/export-dif.cpp' object='unix/odesrc/libode_a-export-dif.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/export-dif.cpp' object='unix/odesrc/libode_a-export-dif.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-export-dif.obj `if test -f 'unix/odesrc/export-dif.cpp'; then $(CYGPATH_W) 'unix/odesrc/export-dif.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/export-dif.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-export-dif.obj `if test -f 'unix/odesrc/export-dif.cpp'; then $(CYGPATH_W) 'unix/odesrc/export-dif.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/export-dif.cpp'; fi` unix/odesrc/libode_a-heightfield.o: unix/odesrc/heightfield.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-heightfield.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-heightfield.Tpo -c -o unix/odesrc/libode_a-heightfield.o `test -f 'unix/odesrc/heightfield.cpp' || echo '$(srcdir)/'`unix/odesrc/heightfield.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-heightfield.Tpo unix/odesrc/$(DEPDIR)/libode_a-heightfield.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/heightfield.cpp' object='unix/odesrc/libode_a-heightfield.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/heightfield.cpp' object='unix/odesrc/libode_a-heightfield.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-heightfield.o `test -f 'unix/odesrc/heightfield.cpp' || echo '$(srcdir)/'`unix/odesrc/heightfield.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-heightfield.o `test -f 'unix/odesrc/heightfield.cpp' || echo '$(srcdir)/'`unix/odesrc/heightfield.cpp unix/odesrc/libode_a-heightfield.obj: unix/odesrc/heightfield.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-heightfield.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-heightfield.Tpo -c -o unix/odesrc/libode_a-heightfield.obj `if test -f 'unix/odesrc/heightfield.cpp'; then $(CYGPATH_W) 'unix/odesrc/heightfield.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/heightfield.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-heightfield.Tpo unix/odesrc/$(DEPDIR)/libode_a-heightfield.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/heightfield.cpp' object='unix/odesrc/libode_a-heightfield.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/heightfield.cpp' object='unix/odesrc/libode_a-heightfield.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-heightfield.obj `if test -f 'unix/odesrc/heightfield.cpp'; then $(CYGPATH_W) 'unix/odesrc/heightfield.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/heightfield.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-heightfield.obj `if test -f 'unix/odesrc/heightfield.cpp'; then $(CYGPATH_W) 'unix/odesrc/heightfield.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/heightfield.cpp'; fi` unix/odesrc/libode_a-lcp.o: unix/odesrc/lcp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-lcp.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-lcp.Tpo -c -o unix/odesrc/libode_a-lcp.o `test -f 'unix/odesrc/lcp.cpp' || echo '$(srcdir)/'`unix/odesrc/lcp.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-lcp.Tpo unix/odesrc/$(DEPDIR)/libode_a-lcp.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/lcp.cpp' object='unix/odesrc/libode_a-lcp.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/lcp.cpp' object='unix/odesrc/libode_a-lcp.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-lcp.o `test -f 'unix/odesrc/lcp.cpp' || echo '$(srcdir)/'`unix/odesrc/lcp.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-lcp.o `test -f 'unix/odesrc/lcp.cpp' || echo '$(srcdir)/'`unix/odesrc/lcp.cpp unix/odesrc/libode_a-lcp.obj: unix/odesrc/lcp.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-lcp.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-lcp.Tpo -c -o unix/odesrc/libode_a-lcp.obj `if test -f 'unix/odesrc/lcp.cpp'; then $(CYGPATH_W) 'unix/odesrc/lcp.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/lcp.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-lcp.Tpo unix/odesrc/$(DEPDIR)/libode_a-lcp.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/lcp.cpp' object='unix/odesrc/libode_a-lcp.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/lcp.cpp' object='unix/odesrc/libode_a-lcp.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-lcp.obj `if test -f 'unix/odesrc/lcp.cpp'; then $(CYGPATH_W) 'unix/odesrc/lcp.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/lcp.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-lcp.obj `if test -f 'unix/odesrc/lcp.cpp'; then $(CYGPATH_W) 'unix/odesrc/lcp.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/lcp.cpp'; fi` unix/odesrc/libode_a-mass.o: unix/odesrc/mass.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-mass.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-mass.Tpo -c -o unix/odesrc/libode_a-mass.o `test -f 'unix/odesrc/mass.cpp' || echo '$(srcdir)/'`unix/odesrc/mass.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-mass.Tpo unix/odesrc/$(DEPDIR)/libode_a-mass.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/mass.cpp' object='unix/odesrc/libode_a-mass.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/mass.cpp' object='unix/odesrc/libode_a-mass.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-mass.o `test -f 'unix/odesrc/mass.cpp' || echo '$(srcdir)/'`unix/odesrc/mass.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-mass.o `test -f 'unix/odesrc/mass.cpp' || echo '$(srcdir)/'`unix/odesrc/mass.cpp unix/odesrc/libode_a-mass.obj: unix/odesrc/mass.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-mass.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-mass.Tpo -c -o unix/odesrc/libode_a-mass.obj `if test -f 'unix/odesrc/mass.cpp'; then $(CYGPATH_W) 'unix/odesrc/mass.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/mass.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-mass.Tpo unix/odesrc/$(DEPDIR)/libode_a-mass.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/mass.cpp' object='unix/odesrc/libode_a-mass.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/mass.cpp' object='unix/odesrc/libode_a-mass.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-mass.obj `if test -f 'unix/odesrc/mass.cpp'; then $(CYGPATH_W) 'unix/odesrc/mass.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/mass.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-mass.obj `if test -f 'unix/odesrc/mass.cpp'; then $(CYGPATH_W) 'unix/odesrc/mass.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/mass.cpp'; fi` unix/odesrc/libode_a-mat.o: unix/odesrc/mat.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-mat.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-mat.Tpo -c -o unix/odesrc/libode_a-mat.o `test -f 'unix/odesrc/mat.cpp' || echo '$(srcdir)/'`unix/odesrc/mat.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-mat.Tpo unix/odesrc/$(DEPDIR)/libode_a-mat.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/mat.cpp' object='unix/odesrc/libode_a-mat.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/mat.cpp' object='unix/odesrc/libode_a-mat.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-mat.o `test -f 'unix/odesrc/mat.cpp' || echo '$(srcdir)/'`unix/odesrc/mat.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-mat.o `test -f 'unix/odesrc/mat.cpp' || echo '$(srcdir)/'`unix/odesrc/mat.cpp unix/odesrc/libode_a-mat.obj: unix/odesrc/mat.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-mat.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-mat.Tpo -c -o unix/odesrc/libode_a-mat.obj `if test -f 'unix/odesrc/mat.cpp'; then $(CYGPATH_W) 'unix/odesrc/mat.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/mat.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-mat.Tpo unix/odesrc/$(DEPDIR)/libode_a-mat.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/mat.cpp' object='unix/odesrc/libode_a-mat.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/mat.cpp' object='unix/odesrc/libode_a-mat.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-mat.obj `if test -f 'unix/odesrc/mat.cpp'; then $(CYGPATH_W) 'unix/odesrc/mat.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/mat.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-mat.obj `if test -f 'unix/odesrc/mat.cpp'; then $(CYGPATH_W) 'unix/odesrc/mat.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/mat.cpp'; fi` unix/odesrc/libode_a-matrix.o: unix/odesrc/matrix.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-matrix.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-matrix.Tpo -c -o unix/odesrc/libode_a-matrix.o `test -f 'unix/odesrc/matrix.cpp' || echo '$(srcdir)/'`unix/odesrc/matrix.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-matrix.Tpo unix/odesrc/$(DEPDIR)/libode_a-matrix.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/matrix.cpp' object='unix/odesrc/libode_a-matrix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/matrix.cpp' object='unix/odesrc/libode_a-matrix.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-matrix.o `test -f 'unix/odesrc/matrix.cpp' || echo '$(srcdir)/'`unix/odesrc/matrix.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-matrix.o `test -f 'unix/odesrc/matrix.cpp' || echo '$(srcdir)/'`unix/odesrc/matrix.cpp unix/odesrc/libode_a-matrix.obj: unix/odesrc/matrix.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-matrix.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-matrix.Tpo -c -o unix/odesrc/libode_a-matrix.obj `if test -f 'unix/odesrc/matrix.cpp'; then $(CYGPATH_W) 'unix/odesrc/matrix.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/matrix.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-matrix.Tpo unix/odesrc/$(DEPDIR)/libode_a-matrix.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/matrix.cpp' object='unix/odesrc/libode_a-matrix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/matrix.cpp' object='unix/odesrc/libode_a-matrix.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-matrix.obj `if test -f 'unix/odesrc/matrix.cpp'; then $(CYGPATH_W) 'unix/odesrc/matrix.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/matrix.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-matrix.obj `if test -f 'unix/odesrc/matrix.cpp'; then $(CYGPATH_W) 'unix/odesrc/matrix.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/matrix.cpp'; fi` unix/odesrc/libode_a-memory.o: unix/odesrc/memory.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-memory.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-memory.Tpo -c -o unix/odesrc/libode_a-memory.o `test -f 'unix/odesrc/memory.cpp' || echo '$(srcdir)/'`unix/odesrc/memory.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-memory.Tpo unix/odesrc/$(DEPDIR)/libode_a-memory.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/memory.cpp' object='unix/odesrc/libode_a-memory.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/memory.cpp' object='unix/odesrc/libode_a-memory.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-memory.o `test -f 'unix/odesrc/memory.cpp' || echo '$(srcdir)/'`unix/odesrc/memory.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-memory.o `test -f 'unix/odesrc/memory.cpp' || echo '$(srcdir)/'`unix/odesrc/memory.cpp unix/odesrc/libode_a-memory.obj: unix/odesrc/memory.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-memory.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-memory.Tpo -c -o unix/odesrc/libode_a-memory.obj `if test -f 'unix/odesrc/memory.cpp'; then $(CYGPATH_W) 'unix/odesrc/memory.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/memory.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-memory.Tpo unix/odesrc/$(DEPDIR)/libode_a-memory.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/memory.cpp' object='unix/odesrc/libode_a-memory.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/memory.cpp' object='unix/odesrc/libode_a-memory.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-memory.obj `if test -f 'unix/odesrc/memory.cpp'; then $(CYGPATH_W) 'unix/odesrc/memory.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/memory.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-memory.obj `if test -f 'unix/odesrc/memory.cpp'; then $(CYGPATH_W) 'unix/odesrc/memory.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/memory.cpp'; fi` unix/odesrc/libode_a-misc.o: unix/odesrc/misc.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-misc.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-misc.Tpo -c -o unix/odesrc/libode_a-misc.o `test -f 'unix/odesrc/misc.cpp' || echo '$(srcdir)/'`unix/odesrc/misc.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-misc.Tpo unix/odesrc/$(DEPDIR)/libode_a-misc.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/misc.cpp' object='unix/odesrc/libode_a-misc.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/misc.cpp' object='unix/odesrc/libode_a-misc.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-misc.o `test -f 'unix/odesrc/misc.cpp' || echo '$(srcdir)/'`unix/odesrc/misc.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-misc.o `test -f 'unix/odesrc/misc.cpp' || echo '$(srcdir)/'`unix/odesrc/misc.cpp unix/odesrc/libode_a-misc.obj: unix/odesrc/misc.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-misc.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-misc.Tpo -c -o unix/odesrc/libode_a-misc.obj `if test -f 'unix/odesrc/misc.cpp'; then $(CYGPATH_W) 'unix/odesrc/misc.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/misc.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-misc.Tpo unix/odesrc/$(DEPDIR)/libode_a-misc.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/misc.cpp' object='unix/odesrc/libode_a-misc.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/misc.cpp' object='unix/odesrc/libode_a-misc.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-misc.obj `if test -f 'unix/odesrc/misc.cpp'; then $(CYGPATH_W) 'unix/odesrc/misc.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/misc.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-misc.obj `if test -f 'unix/odesrc/misc.cpp'; then $(CYGPATH_W) 'unix/odesrc/misc.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/misc.cpp'; fi` unix/odesrc/libode_a-obstack.o: unix/odesrc/obstack.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-obstack.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-obstack.Tpo -c -o unix/odesrc/libode_a-obstack.o `test -f 'unix/odesrc/obstack.cpp' || echo '$(srcdir)/'`unix/odesrc/obstack.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-obstack.Tpo unix/odesrc/$(DEPDIR)/libode_a-obstack.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/obstack.cpp' object='unix/odesrc/libode_a-obstack.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/obstack.cpp' object='unix/odesrc/libode_a-obstack.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-obstack.o `test -f 'unix/odesrc/obstack.cpp' || echo '$(srcdir)/'`unix/odesrc/obstack.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-obstack.o `test -f 'unix/odesrc/obstack.cpp' || echo '$(srcdir)/'`unix/odesrc/obstack.cpp unix/odesrc/libode_a-obstack.obj: unix/odesrc/obstack.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-obstack.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-obstack.Tpo -c -o unix/odesrc/libode_a-obstack.obj `if test -f 'unix/odesrc/obstack.cpp'; then $(CYGPATH_W) 'unix/odesrc/obstack.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/obstack.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-obstack.Tpo unix/odesrc/$(DEPDIR)/libode_a-obstack.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/obstack.cpp' object='unix/odesrc/libode_a-obstack.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/obstack.cpp' object='unix/odesrc/libode_a-obstack.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-obstack.obj `if test -f 'unix/odesrc/obstack.cpp'; then $(CYGPATH_W) 'unix/odesrc/obstack.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/obstack.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-obstack.obj `if test -f 'unix/odesrc/obstack.cpp'; then $(CYGPATH_W) 'unix/odesrc/obstack.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/obstack.cpp'; fi` unix/odesrc/libode_a-ode.o: unix/odesrc/ode.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-ode.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-ode.Tpo -c -o unix/odesrc/libode_a-ode.o `test -f 'unix/odesrc/ode.cpp' || echo '$(srcdir)/'`unix/odesrc/ode.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-ode.Tpo unix/odesrc/$(DEPDIR)/libode_a-ode.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/ode.cpp' object='unix/odesrc/libode_a-ode.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/ode.cpp' object='unix/odesrc/libode_a-ode.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-ode.o `test -f 'unix/odesrc/ode.cpp' || echo '$(srcdir)/'`unix/odesrc/ode.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-ode.o `test -f 'unix/odesrc/ode.cpp' || echo '$(srcdir)/'`unix/odesrc/ode.cpp unix/odesrc/libode_a-ode.obj: unix/odesrc/ode.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-ode.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-ode.Tpo -c -o unix/odesrc/libode_a-ode.obj `if test -f 'unix/odesrc/ode.cpp'; then $(CYGPATH_W) 'unix/odesrc/ode.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/ode.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-ode.Tpo unix/odesrc/$(DEPDIR)/libode_a-ode.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/ode.cpp' object='unix/odesrc/libode_a-ode.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/ode.cpp' object='unix/odesrc/libode_a-ode.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-ode.obj `if test -f 'unix/odesrc/ode.cpp'; then $(CYGPATH_W) 'unix/odesrc/ode.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/ode.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-ode.obj `if test -f 'unix/odesrc/ode.cpp'; then $(CYGPATH_W) 'unix/odesrc/ode.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/ode.cpp'; fi` unix/odesrc/libode_a-odeinit.o: unix/odesrc/odeinit.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-odeinit.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-odeinit.Tpo -c -o unix/odesrc/libode_a-odeinit.o `test -f 'unix/odesrc/odeinit.cpp' || echo '$(srcdir)/'`unix/odesrc/odeinit.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-odeinit.Tpo unix/odesrc/$(DEPDIR)/libode_a-odeinit.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/odeinit.cpp' object='unix/odesrc/libode_a-odeinit.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/odeinit.cpp' object='unix/odesrc/libode_a-odeinit.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-odeinit.o `test -f 'unix/odesrc/odeinit.cpp' || echo '$(srcdir)/'`unix/odesrc/odeinit.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-odeinit.o `test -f 'unix/odesrc/odeinit.cpp' || echo '$(srcdir)/'`unix/odesrc/odeinit.cpp unix/odesrc/libode_a-odeinit.obj: unix/odesrc/odeinit.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-odeinit.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-odeinit.Tpo -c -o unix/odesrc/libode_a-odeinit.obj `if test -f 'unix/odesrc/odeinit.cpp'; then $(CYGPATH_W) 'unix/odesrc/odeinit.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/odeinit.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-odeinit.Tpo unix/odesrc/$(DEPDIR)/libode_a-odeinit.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/odeinit.cpp' object='unix/odesrc/libode_a-odeinit.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/odeinit.cpp' object='unix/odesrc/libode_a-odeinit.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-odeinit.obj `if test -f 'unix/odesrc/odeinit.cpp'; then $(CYGPATH_W) 'unix/odesrc/odeinit.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/odeinit.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-odeinit.obj `if test -f 'unix/odesrc/odeinit.cpp'; then $(CYGPATH_W) 'unix/odesrc/odeinit.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/odeinit.cpp'; fi` unix/odesrc/libode_a-odemath.o: unix/odesrc/odemath.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-odemath.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-odemath.Tpo -c -o unix/odesrc/libode_a-odemath.o `test -f 'unix/odesrc/odemath.cpp' || echo '$(srcdir)/'`unix/odesrc/odemath.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-odemath.Tpo unix/odesrc/$(DEPDIR)/libode_a-odemath.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/odemath.cpp' object='unix/odesrc/libode_a-odemath.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/odemath.cpp' object='unix/odesrc/libode_a-odemath.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-odemath.o `test -f 'unix/odesrc/odemath.cpp' || echo '$(srcdir)/'`unix/odesrc/odemath.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-odemath.o `test -f 'unix/odesrc/odemath.cpp' || echo '$(srcdir)/'`unix/odesrc/odemath.cpp unix/odesrc/libode_a-odemath.obj: unix/odesrc/odemath.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-odemath.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-odemath.Tpo -c -o unix/odesrc/libode_a-odemath.obj `if test -f 'unix/odesrc/odemath.cpp'; then $(CYGPATH_W) 'unix/odesrc/odemath.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/odemath.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-odemath.Tpo unix/odesrc/$(DEPDIR)/libode_a-odemath.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/odemath.cpp' object='unix/odesrc/libode_a-odemath.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/odemath.cpp' object='unix/odesrc/libode_a-odemath.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-odemath.obj `if test -f 'unix/odesrc/odemath.cpp'; then $(CYGPATH_W) 'unix/odesrc/odemath.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/odemath.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-odemath.obj `if test -f 'unix/odesrc/odemath.cpp'; then $(CYGPATH_W) 'unix/odesrc/odemath.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/odemath.cpp'; fi` unix/odesrc/libode_a-plane.o: unix/odesrc/plane.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-plane.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-plane.Tpo -c -o unix/odesrc/libode_a-plane.o `test -f 'unix/odesrc/plane.cpp' || echo '$(srcdir)/'`unix/odesrc/plane.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-plane.Tpo unix/odesrc/$(DEPDIR)/libode_a-plane.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/plane.cpp' object='unix/odesrc/libode_a-plane.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/plane.cpp' object='unix/odesrc/libode_a-plane.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-plane.o `test -f 'unix/odesrc/plane.cpp' || echo '$(srcdir)/'`unix/odesrc/plane.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-plane.o `test -f 'unix/odesrc/plane.cpp' || echo '$(srcdir)/'`unix/odesrc/plane.cpp unix/odesrc/libode_a-plane.obj: unix/odesrc/plane.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-plane.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-plane.Tpo -c -o unix/odesrc/libode_a-plane.obj `if test -f 'unix/odesrc/plane.cpp'; then $(CYGPATH_W) 'unix/odesrc/plane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/plane.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-plane.Tpo unix/odesrc/$(DEPDIR)/libode_a-plane.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/plane.cpp' object='unix/odesrc/libode_a-plane.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/plane.cpp' object='unix/odesrc/libode_a-plane.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-plane.obj `if test -f 'unix/odesrc/plane.cpp'; then $(CYGPATH_W) 'unix/odesrc/plane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/plane.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-plane.obj `if test -f 'unix/odesrc/plane.cpp'; then $(CYGPATH_W) 'unix/odesrc/plane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/plane.cpp'; fi` unix/odesrc/libode_a-quickstep.o: unix/odesrc/quickstep.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-quickstep.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-quickstep.Tpo -c -o unix/odesrc/libode_a-quickstep.o `test -f 'unix/odesrc/quickstep.cpp' || echo '$(srcdir)/'`unix/odesrc/quickstep.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-quickstep.Tpo unix/odesrc/$(DEPDIR)/libode_a-quickstep.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/quickstep.cpp' object='unix/odesrc/libode_a-quickstep.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/quickstep.cpp' object='unix/odesrc/libode_a-quickstep.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-quickstep.o `test -f 'unix/odesrc/quickstep.cpp' || echo '$(srcdir)/'`unix/odesrc/quickstep.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-quickstep.o `test -f 'unix/odesrc/quickstep.cpp' || echo '$(srcdir)/'`unix/odesrc/quickstep.cpp unix/odesrc/libode_a-quickstep.obj: unix/odesrc/quickstep.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-quickstep.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-quickstep.Tpo -c -o unix/odesrc/libode_a-quickstep.obj `if test -f 'unix/odesrc/quickstep.cpp'; then $(CYGPATH_W) 'unix/odesrc/quickstep.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/quickstep.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-quickstep.Tpo unix/odesrc/$(DEPDIR)/libode_a-quickstep.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/quickstep.cpp' object='unix/odesrc/libode_a-quickstep.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/quickstep.cpp' object='unix/odesrc/libode_a-quickstep.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-quickstep.obj `if test -f 'unix/odesrc/quickstep.cpp'; then $(CYGPATH_W) 'unix/odesrc/quickstep.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/quickstep.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-quickstep.obj `if test -f 'unix/odesrc/quickstep.cpp'; then $(CYGPATH_W) 'unix/odesrc/quickstep.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/quickstep.cpp'; fi` unix/odesrc/libode_a-ray.o: unix/odesrc/ray.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-ray.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-ray.Tpo -c -o unix/odesrc/libode_a-ray.o `test -f 'unix/odesrc/ray.cpp' || echo '$(srcdir)/'`unix/odesrc/ray.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-ray.Tpo unix/odesrc/$(DEPDIR)/libode_a-ray.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/ray.cpp' object='unix/odesrc/libode_a-ray.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/ray.cpp' object='unix/odesrc/libode_a-ray.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-ray.o `test -f 'unix/odesrc/ray.cpp' || echo '$(srcdir)/'`unix/odesrc/ray.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-ray.o `test -f 'unix/odesrc/ray.cpp' || echo '$(srcdir)/'`unix/odesrc/ray.cpp unix/odesrc/libode_a-ray.obj: unix/odesrc/ray.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-ray.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-ray.Tpo -c -o unix/odesrc/libode_a-ray.obj `if test -f 'unix/odesrc/ray.cpp'; then $(CYGPATH_W) 'unix/odesrc/ray.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/ray.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-ray.Tpo unix/odesrc/$(DEPDIR)/libode_a-ray.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/ray.cpp' object='unix/odesrc/libode_a-ray.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/ray.cpp' object='unix/odesrc/libode_a-ray.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-ray.obj `if test -f 'unix/odesrc/ray.cpp'; then $(CYGPATH_W) 'unix/odesrc/ray.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/ray.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-ray.obj `if test -f 'unix/odesrc/ray.cpp'; then $(CYGPATH_W) 'unix/odesrc/ray.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/ray.cpp'; fi` unix/odesrc/libode_a-rotation.o: unix/odesrc/rotation.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-rotation.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-rotation.Tpo -c -o unix/odesrc/libode_a-rotation.o `test -f 'unix/odesrc/rotation.cpp' || echo '$(srcdir)/'`unix/odesrc/rotation.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-rotation.Tpo unix/odesrc/$(DEPDIR)/libode_a-rotation.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/rotation.cpp' object='unix/odesrc/libode_a-rotation.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/rotation.cpp' object='unix/odesrc/libode_a-rotation.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-rotation.o `test -f 'unix/odesrc/rotation.cpp' || echo '$(srcdir)/'`unix/odesrc/rotation.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-rotation.o `test -f 'unix/odesrc/rotation.cpp' || echo '$(srcdir)/'`unix/odesrc/rotation.cpp unix/odesrc/libode_a-rotation.obj: unix/odesrc/rotation.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-rotation.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-rotation.Tpo -c -o unix/odesrc/libode_a-rotation.obj `if test -f 'unix/odesrc/rotation.cpp'; then $(CYGPATH_W) 'unix/odesrc/rotation.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/rotation.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-rotation.Tpo unix/odesrc/$(DEPDIR)/libode_a-rotation.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/rotation.cpp' object='unix/odesrc/libode_a-rotation.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/rotation.cpp' object='unix/odesrc/libode_a-rotation.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-rotation.obj `if test -f 'unix/odesrc/rotation.cpp'; then $(CYGPATH_W) 'unix/odesrc/rotation.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/rotation.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-rotation.obj `if test -f 'unix/odesrc/rotation.cpp'; then $(CYGPATH_W) 'unix/odesrc/rotation.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/rotation.cpp'; fi` unix/odesrc/libode_a-sphere.o: unix/odesrc/sphere.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-sphere.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-sphere.Tpo -c -o unix/odesrc/libode_a-sphere.o `test -f 'unix/odesrc/sphere.cpp' || echo '$(srcdir)/'`unix/odesrc/sphere.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-sphere.Tpo unix/odesrc/$(DEPDIR)/libode_a-sphere.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/sphere.cpp' object='unix/odesrc/libode_a-sphere.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/sphere.cpp' object='unix/odesrc/libode_a-sphere.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-sphere.o `test -f 'unix/odesrc/sphere.cpp' || echo '$(srcdir)/'`unix/odesrc/sphere.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-sphere.o `test -f 'unix/odesrc/sphere.cpp' || echo '$(srcdir)/'`unix/odesrc/sphere.cpp unix/odesrc/libode_a-sphere.obj: unix/odesrc/sphere.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-sphere.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-sphere.Tpo -c -o unix/odesrc/libode_a-sphere.obj `if test -f 'unix/odesrc/sphere.cpp'; then $(CYGPATH_W) 'unix/odesrc/sphere.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/sphere.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-sphere.Tpo unix/odesrc/$(DEPDIR)/libode_a-sphere.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/sphere.cpp' object='unix/odesrc/libode_a-sphere.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/sphere.cpp' object='unix/odesrc/libode_a-sphere.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-sphere.obj `if test -f 'unix/odesrc/sphere.cpp'; then $(CYGPATH_W) 'unix/odesrc/sphere.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/sphere.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-sphere.obj `if test -f 'unix/odesrc/sphere.cpp'; then $(CYGPATH_W) 'unix/odesrc/sphere.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/sphere.cpp'; fi` unix/odesrc/libode_a-step.o: unix/odesrc/step.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-step.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-step.Tpo -c -o unix/odesrc/libode_a-step.o `test -f 'unix/odesrc/step.cpp' || echo '$(srcdir)/'`unix/odesrc/step.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-step.Tpo unix/odesrc/$(DEPDIR)/libode_a-step.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/step.cpp' object='unix/odesrc/libode_a-step.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/step.cpp' object='unix/odesrc/libode_a-step.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-step.o `test -f 'unix/odesrc/step.cpp' || echo '$(srcdir)/'`unix/odesrc/step.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-step.o `test -f 'unix/odesrc/step.cpp' || echo '$(srcdir)/'`unix/odesrc/step.cpp unix/odesrc/libode_a-step.obj: unix/odesrc/step.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-step.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-step.Tpo -c -o unix/odesrc/libode_a-step.obj `if test -f 'unix/odesrc/step.cpp'; then $(CYGPATH_W) 'unix/odesrc/step.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/step.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-step.Tpo unix/odesrc/$(DEPDIR)/libode_a-step.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/step.cpp' object='unix/odesrc/libode_a-step.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/step.cpp' object='unix/odesrc/libode_a-step.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-step.obj `if test -f 'unix/odesrc/step.cpp'; then $(CYGPATH_W) 'unix/odesrc/step.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/step.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-step.obj `if test -f 'unix/odesrc/step.cpp'; then $(CYGPATH_W) 'unix/odesrc/step.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/step.cpp'; fi` unix/odesrc/libode_a-stepfast.o: unix/odesrc/stepfast.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-stepfast.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-stepfast.Tpo -c -o unix/odesrc/libode_a-stepfast.o `test -f 'unix/odesrc/stepfast.cpp' || echo '$(srcdir)/'`unix/odesrc/stepfast.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-stepfast.Tpo unix/odesrc/$(DEPDIR)/libode_a-stepfast.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/stepfast.cpp' object='unix/odesrc/libode_a-stepfast.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/stepfast.cpp' object='unix/odesrc/libode_a-stepfast.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-stepfast.o `test -f 'unix/odesrc/stepfast.cpp' || echo '$(srcdir)/'`unix/odesrc/stepfast.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-stepfast.o `test -f 'unix/odesrc/stepfast.cpp' || echo '$(srcdir)/'`unix/odesrc/stepfast.cpp unix/odesrc/libode_a-stepfast.obj: unix/odesrc/stepfast.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-stepfast.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-stepfast.Tpo -c -o unix/odesrc/libode_a-stepfast.obj `if test -f 'unix/odesrc/stepfast.cpp'; then $(CYGPATH_W) 'unix/odesrc/stepfast.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/stepfast.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-stepfast.Tpo unix/odesrc/$(DEPDIR)/libode_a-stepfast.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/stepfast.cpp' object='unix/odesrc/libode_a-stepfast.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/stepfast.cpp' object='unix/odesrc/libode_a-stepfast.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-stepfast.obj `if test -f 'unix/odesrc/stepfast.cpp'; then $(CYGPATH_W) 'unix/odesrc/stepfast.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/stepfast.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-stepfast.obj `if test -f 'unix/odesrc/stepfast.cpp'; then $(CYGPATH_W) 'unix/odesrc/stepfast.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/stepfast.cpp'; fi` unix/odesrc/libode_a-testing.o: unix/odesrc/testing.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-testing.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-testing.Tpo -c -o unix/odesrc/libode_a-testing.o `test -f 'unix/odesrc/testing.cpp' || echo '$(srcdir)/'`unix/odesrc/testing.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-testing.Tpo unix/odesrc/$(DEPDIR)/libode_a-testing.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/testing.cpp' object='unix/odesrc/libode_a-testing.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/testing.cpp' object='unix/odesrc/libode_a-testing.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-testing.o `test -f 'unix/odesrc/testing.cpp' || echo '$(srcdir)/'`unix/odesrc/testing.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-testing.o `test -f 'unix/odesrc/testing.cpp' || echo '$(srcdir)/'`unix/odesrc/testing.cpp unix/odesrc/libode_a-testing.obj: unix/odesrc/testing.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-testing.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-testing.Tpo -c -o unix/odesrc/libode_a-testing.obj `if test -f 'unix/odesrc/testing.cpp'; then $(CYGPATH_W) 'unix/odesrc/testing.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/testing.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-testing.Tpo unix/odesrc/$(DEPDIR)/libode_a-testing.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/testing.cpp' object='unix/odesrc/libode_a-testing.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/testing.cpp' object='unix/odesrc/libode_a-testing.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-testing.obj `if test -f 'unix/odesrc/testing.cpp'; then $(CYGPATH_W) 'unix/odesrc/testing.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/testing.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-testing.obj `if test -f 'unix/odesrc/testing.cpp'; then $(CYGPATH_W) 'unix/odesrc/testing.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/testing.cpp'; fi` unix/odesrc/libode_a-timer.o: unix/odesrc/timer.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-timer.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-timer.Tpo -c -o unix/odesrc/libode_a-timer.o `test -f 'unix/odesrc/timer.cpp' || echo '$(srcdir)/'`unix/odesrc/timer.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-timer.Tpo unix/odesrc/$(DEPDIR)/libode_a-timer.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/timer.cpp' object='unix/odesrc/libode_a-timer.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/timer.cpp' object='unix/odesrc/libode_a-timer.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-timer.o `test -f 'unix/odesrc/timer.cpp' || echo '$(srcdir)/'`unix/odesrc/timer.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-timer.o `test -f 'unix/odesrc/timer.cpp' || echo '$(srcdir)/'`unix/odesrc/timer.cpp unix/odesrc/libode_a-timer.obj: unix/odesrc/timer.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-timer.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-timer.Tpo -c -o unix/odesrc/libode_a-timer.obj `if test -f 'unix/odesrc/timer.cpp'; then $(CYGPATH_W) 'unix/odesrc/timer.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/timer.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-timer.Tpo unix/odesrc/$(DEPDIR)/libode_a-timer.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/timer.cpp' object='unix/odesrc/libode_a-timer.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/timer.cpp' object='unix/odesrc/libode_a-timer.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-timer.obj `if test -f 'unix/odesrc/timer.cpp'; then $(CYGPATH_W) 'unix/odesrc/timer.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/timer.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-timer.obj `if test -f 'unix/odesrc/timer.cpp'; then $(CYGPATH_W) 'unix/odesrc/timer.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/timer.cpp'; fi` unix/odesrc/libode_a-util.o: unix/odesrc/util.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-util.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-util.Tpo -c -o unix/odesrc/libode_a-util.o `test -f 'unix/odesrc/util.cpp' || echo '$(srcdir)/'`unix/odesrc/util.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-util.Tpo unix/odesrc/$(DEPDIR)/libode_a-util.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/util.cpp' object='unix/odesrc/libode_a-util.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/util.cpp' object='unix/odesrc/libode_a-util.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-util.o `test -f 'unix/odesrc/util.cpp' || echo '$(srcdir)/'`unix/odesrc/util.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-util.o `test -f 'unix/odesrc/util.cpp' || echo '$(srcdir)/'`unix/odesrc/util.cpp unix/odesrc/libode_a-util.obj: unix/odesrc/util.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-util.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-util.Tpo -c -o unix/odesrc/libode_a-util.obj `if test -f 'unix/odesrc/util.cpp'; then $(CYGPATH_W) 'unix/odesrc/util.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/util.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-util.Tpo unix/odesrc/$(DEPDIR)/libode_a-util.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/util.cpp' object='unix/odesrc/libode_a-util.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/util.cpp' object='unix/odesrc/libode_a-util.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-util.obj `if test -f 'unix/odesrc/util.cpp'; then $(CYGPATH_W) 'unix/odesrc/util.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/util.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-util.obj `if test -f 'unix/odesrc/util.cpp'; then $(CYGPATH_W) 'unix/odesrc/util.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/util.cpp'; fi` unix/odesrc/libode_a-collision_cylinder_trimesh.o: unix/odesrc/collision_cylinder_trimesh.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_cylinder_trimesh.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_trimesh.Tpo -c -o unix/odesrc/libode_a-collision_cylinder_trimesh.o `test -f 'unix/odesrc/collision_cylinder_trimesh.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_trimesh.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_trimesh.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_trimesh.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_cylinder_trimesh.cpp' object='unix/odesrc/libode_a-collision_cylinder_trimesh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_cylinder_trimesh.cpp' object='unix/odesrc/libode_a-collision_cylinder_trimesh.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_trimesh.o `test -f 'unix/odesrc/collision_cylinder_trimesh.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_trimesh.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_trimesh.o `test -f 'unix/odesrc/collision_cylinder_trimesh.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_cylinder_trimesh.cpp unix/odesrc/libode_a-collision_cylinder_trimesh.obj: unix/odesrc/collision_cylinder_trimesh.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_cylinder_trimesh.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_trimesh.Tpo -c -o unix/odesrc/libode_a-collision_cylinder_trimesh.obj `if test -f 'unix/odesrc/collision_cylinder_trimesh.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_trimesh.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_trimesh.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_trimesh.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_cylinder_trimesh.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_cylinder_trimesh.cpp' object='unix/odesrc/libode_a-collision_cylinder_trimesh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_cylinder_trimesh.cpp' object='unix/odesrc/libode_a-collision_cylinder_trimesh.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_trimesh.obj `if test -f 'unix/odesrc/collision_cylinder_trimesh.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_trimesh.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_trimesh.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_cylinder_trimesh.obj `if test -f 'unix/odesrc/collision_cylinder_trimesh.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_cylinder_trimesh.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_cylinder_trimesh.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_box.o: unix/odesrc/collision_trimesh_box.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_box.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_box.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_box.o `test -f 'unix/odesrc/collision_trimesh_box.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_box.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_box.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_box.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_box.cpp' object='unix/odesrc/libode_a-collision_trimesh_box.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_box.cpp' object='unix/odesrc/libode_a-collision_trimesh_box.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_box.o `test -f 'unix/odesrc/collision_trimesh_box.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_box.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_box.o `test -f 'unix/odesrc/collision_trimesh_box.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_box.cpp unix/odesrc/libode_a-collision_trimesh_box.obj: unix/odesrc/collision_trimesh_box.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_box.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_box.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_box.obj `if test -f 'unix/odesrc/collision_trimesh_box.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_box.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_box.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_box.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_box.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_box.cpp' object='unix/odesrc/libode_a-collision_trimesh_box.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_box.cpp' object='unix/odesrc/libode_a-collision_trimesh_box.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_box.obj `if test -f 'unix/odesrc/collision_trimesh_box.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_box.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_box.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_box.obj `if test -f 'unix/odesrc/collision_trimesh_box.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_box.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_box.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_ccylinder.o: unix/odesrc/collision_trimesh_ccylinder.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_ccylinder.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ccylinder.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_ccylinder.o `test -f 'unix/odesrc/collision_trimesh_ccylinder.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_ccylinder.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ccylinder.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ccylinder.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_ccylinder.cpp' object='unix/odesrc/libode_a-collision_trimesh_ccylinder.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_ccylinder.cpp' object='unix/odesrc/libode_a-collision_trimesh_ccylinder.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_ccylinder.o `test -f 'unix/odesrc/collision_trimesh_ccylinder.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_ccylinder.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_ccylinder.o `test -f 'unix/odesrc/collision_trimesh_ccylinder.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_ccylinder.cpp unix/odesrc/libode_a-collision_trimesh_ccylinder.obj: unix/odesrc/collision_trimesh_ccylinder.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_ccylinder.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ccylinder.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_ccylinder.obj `if test -f 'unix/odesrc/collision_trimesh_ccylinder.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_ccylinder.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_ccylinder.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ccylinder.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ccylinder.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_ccylinder.cpp' object='unix/odesrc/libode_a-collision_trimesh_ccylinder.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_ccylinder.cpp' object='unix/odesrc/libode_a-collision_trimesh_ccylinder.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_ccylinder.obj `if test -f 'unix/odesrc/collision_trimesh_ccylinder.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_ccylinder.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_ccylinder.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_ccylinder.obj `if test -f 'unix/odesrc/collision_trimesh_ccylinder.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_ccylinder.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_ccylinder.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_distance.o: unix/odesrc/collision_trimesh_distance.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_distance.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_distance.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_distance.o `test -f 'unix/odesrc/collision_trimesh_distance.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_distance.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_distance.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_distance.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_distance.cpp' object='unix/odesrc/libode_a-collision_trimesh_distance.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_distance.cpp' object='unix/odesrc/libode_a-collision_trimesh_distance.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_distance.o `test -f 'unix/odesrc/collision_trimesh_distance.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_distance.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_distance.o `test -f 'unix/odesrc/collision_trimesh_distance.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_distance.cpp unix/odesrc/libode_a-collision_trimesh_distance.obj: unix/odesrc/collision_trimesh_distance.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_distance.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_distance.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_distance.obj `if test -f 'unix/odesrc/collision_trimesh_distance.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_distance.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_distance.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_distance.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_distance.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_distance.cpp' object='unix/odesrc/libode_a-collision_trimesh_distance.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_distance.cpp' object='unix/odesrc/libode_a-collision_trimesh_distance.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_distance.obj `if test -f 'unix/odesrc/collision_trimesh_distance.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_distance.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_distance.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_distance.obj `if test -f 'unix/odesrc/collision_trimesh_distance.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_distance.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_distance.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_opcode.o: unix/odesrc/collision_trimesh_opcode.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_opcode.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_opcode.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_opcode.o `test -f 'unix/odesrc/collision_trimesh_opcode.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_opcode.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_opcode.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_opcode.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_opcode.cpp' object='unix/odesrc/libode_a-collision_trimesh_opcode.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_opcode.cpp' object='unix/odesrc/libode_a-collision_trimesh_opcode.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_opcode.o `test -f 'unix/odesrc/collision_trimesh_opcode.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_opcode.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_opcode.o `test -f 'unix/odesrc/collision_trimesh_opcode.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_opcode.cpp unix/odesrc/libode_a-collision_trimesh_opcode.obj: unix/odesrc/collision_trimesh_opcode.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_opcode.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_opcode.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_opcode.obj `if test -f 'unix/odesrc/collision_trimesh_opcode.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_opcode.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_opcode.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_opcode.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_opcode.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_opcode.cpp' object='unix/odesrc/libode_a-collision_trimesh_opcode.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_opcode.cpp' object='unix/odesrc/libode_a-collision_trimesh_opcode.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_opcode.obj `if test -f 'unix/odesrc/collision_trimesh_opcode.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_opcode.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_opcode.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_opcode.obj `if test -f 'unix/odesrc/collision_trimesh_opcode.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_opcode.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_opcode.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_plane.o: unix/odesrc/collision_trimesh_plane.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_plane.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_plane.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_plane.o `test -f 'unix/odesrc/collision_trimesh_plane.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_plane.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_plane.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_plane.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_plane.cpp' object='unix/odesrc/libode_a-collision_trimesh_plane.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_plane.cpp' object='unix/odesrc/libode_a-collision_trimesh_plane.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_plane.o `test -f 'unix/odesrc/collision_trimesh_plane.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_plane.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_plane.o `test -f 'unix/odesrc/collision_trimesh_plane.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_plane.cpp unix/odesrc/libode_a-collision_trimesh_plane.obj: unix/odesrc/collision_trimesh_plane.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_plane.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_plane.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_plane.obj `if test -f 'unix/odesrc/collision_trimesh_plane.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_plane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_plane.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_plane.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_plane.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_plane.cpp' object='unix/odesrc/libode_a-collision_trimesh_plane.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_plane.cpp' object='unix/odesrc/libode_a-collision_trimesh_plane.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_plane.obj `if test -f 'unix/odesrc/collision_trimesh_plane.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_plane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_plane.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_plane.obj `if test -f 'unix/odesrc/collision_trimesh_plane.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_plane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_plane.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_ray.o: unix/odesrc/collision_trimesh_ray.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_ray.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ray.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_ray.o `test -f 'unix/odesrc/collision_trimesh_ray.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_ray.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ray.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ray.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_ray.cpp' object='unix/odesrc/libode_a-collision_trimesh_ray.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_ray.cpp' object='unix/odesrc/libode_a-collision_trimesh_ray.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_ray.o `test -f 'unix/odesrc/collision_trimesh_ray.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_ray.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_ray.o `test -f 'unix/odesrc/collision_trimesh_ray.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_ray.cpp unix/odesrc/libode_a-collision_trimesh_ray.obj: unix/odesrc/collision_trimesh_ray.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_ray.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ray.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_ray.obj `if test -f 'unix/odesrc/collision_trimesh_ray.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_ray.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_ray.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ray.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_ray.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_ray.cpp' object='unix/odesrc/libode_a-collision_trimesh_ray.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_ray.cpp' object='unix/odesrc/libode_a-collision_trimesh_ray.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_ray.obj `if test -f 'unix/odesrc/collision_trimesh_ray.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_ray.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_ray.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_ray.obj `if test -f 'unix/odesrc/collision_trimesh_ray.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_ray.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_ray.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_sphere.o: unix/odesrc/collision_trimesh_sphere.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_sphere.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_sphere.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_sphere.o `test -f 'unix/odesrc/collision_trimesh_sphere.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_sphere.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_sphere.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_sphere.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_sphere.cpp' object='unix/odesrc/libode_a-collision_trimesh_sphere.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_sphere.cpp' object='unix/odesrc/libode_a-collision_trimesh_sphere.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_sphere.o `test -f 'unix/odesrc/collision_trimesh_sphere.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_sphere.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_sphere.o `test -f 'unix/odesrc/collision_trimesh_sphere.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_sphere.cpp unix/odesrc/libode_a-collision_trimesh_sphere.obj: unix/odesrc/collision_trimesh_sphere.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_sphere.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_sphere.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_sphere.obj `if test -f 'unix/odesrc/collision_trimesh_sphere.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_sphere.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_sphere.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_sphere.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_sphere.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_sphere.cpp' object='unix/odesrc/libode_a-collision_trimesh_sphere.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_sphere.cpp' object='unix/odesrc/libode_a-collision_trimesh_sphere.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_sphere.obj `if test -f 'unix/odesrc/collision_trimesh_sphere.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_sphere.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_sphere.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_sphere.obj `if test -f 'unix/odesrc/collision_trimesh_sphere.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_sphere.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_sphere.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_trimesh.o: unix/odesrc/collision_trimesh_trimesh.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_trimesh.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_trimesh.o `test -f 'unix/odesrc/collision_trimesh_trimesh.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_trimesh.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_trimesh.cpp' object='unix/odesrc/libode_a-collision_trimesh_trimesh.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_trimesh.cpp' object='unix/odesrc/libode_a-collision_trimesh_trimesh.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_trimesh.o `test -f 'unix/odesrc/collision_trimesh_trimesh.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_trimesh.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_trimesh.o `test -f 'unix/odesrc/collision_trimesh_trimesh.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_trimesh.cpp unix/odesrc/libode_a-collision_trimesh_trimesh.obj: unix/odesrc/collision_trimesh_trimesh.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_trimesh.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_trimesh.obj `if test -f 'unix/odesrc/collision_trimesh_trimesh.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_trimesh.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_trimesh.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_trimesh.cpp' object='unix/odesrc/libode_a-collision_trimesh_trimesh.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_trimesh.cpp' object='unix/odesrc/libode_a-collision_trimesh_trimesh.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_trimesh.obj `if test -f 'unix/odesrc/collision_trimesh_trimesh.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_trimesh.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_trimesh.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_trimesh.obj `if test -f 'unix/odesrc/collision_trimesh_trimesh.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_trimesh.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_trimesh.cpp'; fi` unix/odesrc/libode_a-collision_trimesh_trimesh_new.o: unix/odesrc/collision_trimesh_trimesh_new.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_trimesh_new.o -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh_new.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_trimesh_new.o `test -f 'unix/odesrc/collision_trimesh_trimesh_new.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_trimesh_new.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh_new.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh_new.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_trimesh_new.cpp' object='unix/odesrc/libode_a-collision_trimesh_trimesh_new.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_trimesh_new.cpp' object='unix/odesrc/libode_a-collision_trimesh_trimesh_new.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_trimesh_new.o `test -f 'unix/odesrc/collision_trimesh_trimesh_new.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_trimesh_new.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_trimesh_new.o `test -f 'unix/odesrc/collision_trimesh_trimesh_new.cpp' || echo '$(srcdir)/'`unix/odesrc/collision_trimesh_trimesh_new.cpp unix/odesrc/libode_a-collision_trimesh_trimesh_new.obj: unix/odesrc/collision_trimesh_trimesh_new.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/libode_a-collision_trimesh_trimesh_new.obj -MD -MP -MF unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh_new.Tpo -c -o unix/odesrc/libode_a-collision_trimesh_trimesh_new.obj `if test -f 'unix/odesrc/collision_trimesh_trimesh_new.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_trimesh_new.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_trimesh_new.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh_new.Tpo unix/odesrc/$(DEPDIR)/libode_a-collision_trimesh_trimesh_new.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/collision_trimesh_trimesh_new.cpp' object='unix/odesrc/libode_a-collision_trimesh_trimesh_new.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/collision_trimesh_trimesh_new.cpp' object='unix/odesrc/libode_a-collision_trimesh_trimesh_new.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_trimesh_new.obj `if test -f 'unix/odesrc/collision_trimesh_trimesh_new.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_trimesh_new.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_trimesh_new.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/libode_a-collision_trimesh_trimesh_new.obj `if test -f 'unix/odesrc/collision_trimesh_trimesh_new.cpp'; then $(CYGPATH_W) 'unix/odesrc/collision_trimesh_trimesh_new.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/collision_trimesh_trimesh_new.cpp'; fi` unix/odesrc/joints/libode_a-amotor.o: unix/odesrc/joints/amotor.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-amotor.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-amotor.Tpo -c -o unix/odesrc/joints/libode_a-amotor.o `test -f 'unix/odesrc/joints/amotor.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/amotor.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-amotor.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-amotor.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/amotor.cpp' object='unix/odesrc/joints/libode_a-amotor.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/amotor.cpp' object='unix/odesrc/joints/libode_a-amotor.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-amotor.o `test -f 'unix/odesrc/joints/amotor.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/amotor.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-amotor.o `test -f 'unix/odesrc/joints/amotor.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/amotor.cpp unix/odesrc/joints/libode_a-amotor.obj: unix/odesrc/joints/amotor.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-amotor.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-amotor.Tpo -c -o unix/odesrc/joints/libode_a-amotor.obj `if test -f 'unix/odesrc/joints/amotor.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/amotor.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/amotor.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-amotor.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-amotor.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/amotor.cpp' object='unix/odesrc/joints/libode_a-amotor.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/amotor.cpp' object='unix/odesrc/joints/libode_a-amotor.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-amotor.obj `if test -f 'unix/odesrc/joints/amotor.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/amotor.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/amotor.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-amotor.obj `if test -f 'unix/odesrc/joints/amotor.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/amotor.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/amotor.cpp'; fi` unix/odesrc/joints/libode_a-ball.o: unix/odesrc/joints/ball.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-ball.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-ball.Tpo -c -o unix/odesrc/joints/libode_a-ball.o `test -f 'unix/odesrc/joints/ball.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/ball.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-ball.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-ball.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/ball.cpp' object='unix/odesrc/joints/libode_a-ball.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/ball.cpp' object='unix/odesrc/joints/libode_a-ball.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-ball.o `test -f 'unix/odesrc/joints/ball.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/ball.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-ball.o `test -f 'unix/odesrc/joints/ball.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/ball.cpp unix/odesrc/joints/libode_a-ball.obj: unix/odesrc/joints/ball.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-ball.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-ball.Tpo -c -o unix/odesrc/joints/libode_a-ball.obj `if test -f 'unix/odesrc/joints/ball.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/ball.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/ball.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-ball.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-ball.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/ball.cpp' object='unix/odesrc/joints/libode_a-ball.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/ball.cpp' object='unix/odesrc/joints/libode_a-ball.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-ball.obj `if test -f 'unix/odesrc/joints/ball.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/ball.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/ball.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-ball.obj `if test -f 'unix/odesrc/joints/ball.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/ball.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/ball.cpp'; fi` unix/odesrc/joints/libode_a-contact.o: unix/odesrc/joints/contact.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-contact.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-contact.Tpo -c -o unix/odesrc/joints/libode_a-contact.o `test -f 'unix/odesrc/joints/contact.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/contact.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-contact.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-contact.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/contact.cpp' object='unix/odesrc/joints/libode_a-contact.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/contact.cpp' object='unix/odesrc/joints/libode_a-contact.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-contact.o `test -f 'unix/odesrc/joints/contact.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/contact.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-contact.o `test -f 'unix/odesrc/joints/contact.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/contact.cpp unix/odesrc/joints/libode_a-contact.obj: unix/odesrc/joints/contact.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-contact.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-contact.Tpo -c -o unix/odesrc/joints/libode_a-contact.obj `if test -f 'unix/odesrc/joints/contact.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/contact.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/contact.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-contact.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-contact.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/contact.cpp' object='unix/odesrc/joints/libode_a-contact.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/contact.cpp' object='unix/odesrc/joints/libode_a-contact.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-contact.obj `if test -f 'unix/odesrc/joints/contact.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/contact.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/contact.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-contact.obj `if test -f 'unix/odesrc/joints/contact.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/contact.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/contact.cpp'; fi` unix/odesrc/joints/libode_a-fixed.o: unix/odesrc/joints/fixed.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-fixed.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-fixed.Tpo -c -o unix/odesrc/joints/libode_a-fixed.o `test -f 'unix/odesrc/joints/fixed.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/fixed.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-fixed.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-fixed.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/fixed.cpp' object='unix/odesrc/joints/libode_a-fixed.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/fixed.cpp' object='unix/odesrc/joints/libode_a-fixed.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-fixed.o `test -f 'unix/odesrc/joints/fixed.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/fixed.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-fixed.o `test -f 'unix/odesrc/joints/fixed.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/fixed.cpp unix/odesrc/joints/libode_a-fixed.obj: unix/odesrc/joints/fixed.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-fixed.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-fixed.Tpo -c -o unix/odesrc/joints/libode_a-fixed.obj `if test -f 'unix/odesrc/joints/fixed.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/fixed.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/fixed.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-fixed.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-fixed.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/fixed.cpp' object='unix/odesrc/joints/libode_a-fixed.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/fixed.cpp' object='unix/odesrc/joints/libode_a-fixed.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-fixed.obj `if test -f 'unix/odesrc/joints/fixed.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/fixed.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/fixed.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-fixed.obj `if test -f 'unix/odesrc/joints/fixed.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/fixed.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/fixed.cpp'; fi` unix/odesrc/joints/libode_a-hinge2.o: unix/odesrc/joints/hinge2.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-hinge2.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-hinge2.Tpo -c -o unix/odesrc/joints/libode_a-hinge2.o `test -f 'unix/odesrc/joints/hinge2.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/hinge2.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-hinge2.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-hinge2.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/hinge2.cpp' object='unix/odesrc/joints/libode_a-hinge2.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/hinge2.cpp' object='unix/odesrc/joints/libode_a-hinge2.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-hinge2.o `test -f 'unix/odesrc/joints/hinge2.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/hinge2.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-hinge2.o `test -f 'unix/odesrc/joints/hinge2.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/hinge2.cpp unix/odesrc/joints/libode_a-hinge2.obj: unix/odesrc/joints/hinge2.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-hinge2.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-hinge2.Tpo -c -o unix/odesrc/joints/libode_a-hinge2.obj `if test -f 'unix/odesrc/joints/hinge2.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/hinge2.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/hinge2.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-hinge2.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-hinge2.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/hinge2.cpp' object='unix/odesrc/joints/libode_a-hinge2.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/hinge2.cpp' object='unix/odesrc/joints/libode_a-hinge2.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-hinge2.obj `if test -f 'unix/odesrc/joints/hinge2.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/hinge2.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/hinge2.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-hinge2.obj `if test -f 'unix/odesrc/joints/hinge2.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/hinge2.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/hinge2.cpp'; fi` unix/odesrc/joints/libode_a-hinge.o: unix/odesrc/joints/hinge.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-hinge.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-hinge.Tpo -c -o unix/odesrc/joints/libode_a-hinge.o `test -f 'unix/odesrc/joints/hinge.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/hinge.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-hinge.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-hinge.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/hinge.cpp' object='unix/odesrc/joints/libode_a-hinge.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/hinge.cpp' object='unix/odesrc/joints/libode_a-hinge.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-hinge.o `test -f 'unix/odesrc/joints/hinge.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/hinge.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-hinge.o `test -f 'unix/odesrc/joints/hinge.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/hinge.cpp unix/odesrc/joints/libode_a-hinge.obj: unix/odesrc/joints/hinge.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-hinge.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-hinge.Tpo -c -o unix/odesrc/joints/libode_a-hinge.obj `if test -f 'unix/odesrc/joints/hinge.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/hinge.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/hinge.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-hinge.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-hinge.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/hinge.cpp' object='unix/odesrc/joints/libode_a-hinge.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/hinge.cpp' object='unix/odesrc/joints/libode_a-hinge.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-hinge.obj `if test -f 'unix/odesrc/joints/hinge.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/hinge.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/hinge.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-hinge.obj `if test -f 'unix/odesrc/joints/hinge.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/hinge.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/hinge.cpp'; fi` unix/odesrc/joints/libode_a-joint.o: unix/odesrc/joints/joint.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-joint.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-joint.Tpo -c -o unix/odesrc/joints/libode_a-joint.o `test -f 'unix/odesrc/joints/joint.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/joint.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-joint.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-joint.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/joint.cpp' object='unix/odesrc/joints/libode_a-joint.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/joint.cpp' object='unix/odesrc/joints/libode_a-joint.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-joint.o `test -f 'unix/odesrc/joints/joint.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/joint.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-joint.o `test -f 'unix/odesrc/joints/joint.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/joint.cpp unix/odesrc/joints/libode_a-joint.obj: unix/odesrc/joints/joint.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-joint.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-joint.Tpo -c -o unix/odesrc/joints/libode_a-joint.obj `if test -f 'unix/odesrc/joints/joint.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/joint.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/joint.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-joint.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-joint.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/joint.cpp' object='unix/odesrc/joints/libode_a-joint.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/joint.cpp' object='unix/odesrc/joints/libode_a-joint.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-joint.obj `if test -f 'unix/odesrc/joints/joint.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/joint.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/joint.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-joint.obj `if test -f 'unix/odesrc/joints/joint.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/joint.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/joint.cpp'; fi` unix/odesrc/joints/libode_a-lmotor.o: unix/odesrc/joints/lmotor.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-lmotor.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-lmotor.Tpo -c -o unix/odesrc/joints/libode_a-lmotor.o `test -f 'unix/odesrc/joints/lmotor.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/lmotor.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-lmotor.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-lmotor.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/lmotor.cpp' object='unix/odesrc/joints/libode_a-lmotor.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/lmotor.cpp' object='unix/odesrc/joints/libode_a-lmotor.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-lmotor.o `test -f 'unix/odesrc/joints/lmotor.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/lmotor.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-lmotor.o `test -f 'unix/odesrc/joints/lmotor.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/lmotor.cpp unix/odesrc/joints/libode_a-lmotor.obj: unix/odesrc/joints/lmotor.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-lmotor.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-lmotor.Tpo -c -o unix/odesrc/joints/libode_a-lmotor.obj `if test -f 'unix/odesrc/joints/lmotor.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/lmotor.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/lmotor.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-lmotor.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-lmotor.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/lmotor.cpp' object='unix/odesrc/joints/libode_a-lmotor.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/lmotor.cpp' object='unix/odesrc/joints/libode_a-lmotor.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-lmotor.obj `if test -f 'unix/odesrc/joints/lmotor.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/lmotor.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/lmotor.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-lmotor.obj `if test -f 'unix/odesrc/joints/lmotor.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/lmotor.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/lmotor.cpp'; fi` unix/odesrc/joints/libode_a-null.o: unix/odesrc/joints/null.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-null.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-null.Tpo -c -o unix/odesrc/joints/libode_a-null.o `test -f 'unix/odesrc/joints/null.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/null.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-null.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-null.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/null.cpp' object='unix/odesrc/joints/libode_a-null.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/null.cpp' object='unix/odesrc/joints/libode_a-null.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-null.o `test -f 'unix/odesrc/joints/null.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/null.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-null.o `test -f 'unix/odesrc/joints/null.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/null.cpp unix/odesrc/joints/libode_a-null.obj: unix/odesrc/joints/null.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-null.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-null.Tpo -c -o unix/odesrc/joints/libode_a-null.obj `if test -f 'unix/odesrc/joints/null.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/null.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/null.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-null.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-null.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/null.cpp' object='unix/odesrc/joints/libode_a-null.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/null.cpp' object='unix/odesrc/joints/libode_a-null.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-null.obj `if test -f 'unix/odesrc/joints/null.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/null.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/null.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-null.obj `if test -f 'unix/odesrc/joints/null.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/null.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/null.cpp'; fi` unix/odesrc/joints/libode_a-piston.o: unix/odesrc/joints/piston.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-piston.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-piston.Tpo -c -o unix/odesrc/joints/libode_a-piston.o `test -f 'unix/odesrc/joints/piston.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/piston.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-piston.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-piston.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/piston.cpp' object='unix/odesrc/joints/libode_a-piston.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/piston.cpp' object='unix/odesrc/joints/libode_a-piston.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-piston.o `test -f 'unix/odesrc/joints/piston.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/piston.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-piston.o `test -f 'unix/odesrc/joints/piston.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/piston.cpp unix/odesrc/joints/libode_a-piston.obj: unix/odesrc/joints/piston.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-piston.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-piston.Tpo -c -o unix/odesrc/joints/libode_a-piston.obj `if test -f 'unix/odesrc/joints/piston.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/piston.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/piston.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-piston.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-piston.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/piston.cpp' object='unix/odesrc/joints/libode_a-piston.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/piston.cpp' object='unix/odesrc/joints/libode_a-piston.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-piston.obj `if test -f 'unix/odesrc/joints/piston.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/piston.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/piston.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-piston.obj `if test -f 'unix/odesrc/joints/piston.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/piston.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/piston.cpp'; fi` unix/odesrc/joints/libode_a-plane2d.o: unix/odesrc/joints/plane2d.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-plane2d.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-plane2d.Tpo -c -o unix/odesrc/joints/libode_a-plane2d.o `test -f 'unix/odesrc/joints/plane2d.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/plane2d.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-plane2d.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-plane2d.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/plane2d.cpp' object='unix/odesrc/joints/libode_a-plane2d.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/plane2d.cpp' object='unix/odesrc/joints/libode_a-plane2d.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-plane2d.o `test -f 'unix/odesrc/joints/plane2d.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/plane2d.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-plane2d.o `test -f 'unix/odesrc/joints/plane2d.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/plane2d.cpp unix/odesrc/joints/libode_a-plane2d.obj: unix/odesrc/joints/plane2d.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-plane2d.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-plane2d.Tpo -c -o unix/odesrc/joints/libode_a-plane2d.obj `if test -f 'unix/odesrc/joints/plane2d.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/plane2d.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/plane2d.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-plane2d.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-plane2d.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/plane2d.cpp' object='unix/odesrc/joints/libode_a-plane2d.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/plane2d.cpp' object='unix/odesrc/joints/libode_a-plane2d.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-plane2d.obj `if test -f 'unix/odesrc/joints/plane2d.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/plane2d.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/plane2d.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-plane2d.obj `if test -f 'unix/odesrc/joints/plane2d.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/plane2d.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/plane2d.cpp'; fi` unix/odesrc/joints/libode_a-pr.o: unix/odesrc/joints/pr.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-pr.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-pr.Tpo -c -o unix/odesrc/joints/libode_a-pr.o `test -f 'unix/odesrc/joints/pr.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/pr.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-pr.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-pr.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/pr.cpp' object='unix/odesrc/joints/libode_a-pr.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/pr.cpp' object='unix/odesrc/joints/libode_a-pr.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-pr.o `test -f 'unix/odesrc/joints/pr.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/pr.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-pr.o `test -f 'unix/odesrc/joints/pr.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/pr.cpp unix/odesrc/joints/libode_a-pr.obj: unix/odesrc/joints/pr.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-pr.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-pr.Tpo -c -o unix/odesrc/joints/libode_a-pr.obj `if test -f 'unix/odesrc/joints/pr.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/pr.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/pr.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-pr.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-pr.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/pr.cpp' object='unix/odesrc/joints/libode_a-pr.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/pr.cpp' object='unix/odesrc/joints/libode_a-pr.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-pr.obj `if test -f 'unix/odesrc/joints/pr.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/pr.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/pr.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-pr.obj `if test -f 'unix/odesrc/joints/pr.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/pr.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/pr.cpp'; fi` unix/odesrc/joints/libode_a-pu.o: unix/odesrc/joints/pu.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-pu.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-pu.Tpo -c -o unix/odesrc/joints/libode_a-pu.o `test -f 'unix/odesrc/joints/pu.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/pu.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-pu.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-pu.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/pu.cpp' object='unix/odesrc/joints/libode_a-pu.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/pu.cpp' object='unix/odesrc/joints/libode_a-pu.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-pu.o `test -f 'unix/odesrc/joints/pu.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/pu.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-pu.o `test -f 'unix/odesrc/joints/pu.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/pu.cpp unix/odesrc/joints/libode_a-pu.obj: unix/odesrc/joints/pu.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-pu.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-pu.Tpo -c -o unix/odesrc/joints/libode_a-pu.obj `if test -f 'unix/odesrc/joints/pu.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/pu.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/pu.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-pu.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-pu.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/pu.cpp' object='unix/odesrc/joints/libode_a-pu.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/pu.cpp' object='unix/odesrc/joints/libode_a-pu.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-pu.obj `if test -f 'unix/odesrc/joints/pu.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/pu.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/pu.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-pu.obj `if test -f 'unix/odesrc/joints/pu.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/pu.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/pu.cpp'; fi` unix/odesrc/joints/libode_a-slider.o: unix/odesrc/joints/slider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-slider.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-slider.Tpo -c -o unix/odesrc/joints/libode_a-slider.o `test -f 'unix/odesrc/joints/slider.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/slider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-slider.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-slider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/slider.cpp' object='unix/odesrc/joints/libode_a-slider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/slider.cpp' object='unix/odesrc/joints/libode_a-slider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-slider.o `test -f 'unix/odesrc/joints/slider.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/slider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-slider.o `test -f 'unix/odesrc/joints/slider.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/slider.cpp unix/odesrc/joints/libode_a-slider.obj: unix/odesrc/joints/slider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-slider.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-slider.Tpo -c -o unix/odesrc/joints/libode_a-slider.obj `if test -f 'unix/odesrc/joints/slider.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/slider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/slider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-slider.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-slider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/slider.cpp' object='unix/odesrc/joints/libode_a-slider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/slider.cpp' object='unix/odesrc/joints/libode_a-slider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-slider.obj `if test -f 'unix/odesrc/joints/slider.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/slider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/slider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-slider.obj `if test -f 'unix/odesrc/joints/slider.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/slider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/slider.cpp'; fi` unix/odesrc/joints/libode_a-universal.o: unix/odesrc/joints/universal.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-universal.o -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-universal.Tpo -c -o unix/odesrc/joints/libode_a-universal.o `test -f 'unix/odesrc/joints/universal.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/universal.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-universal.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-universal.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/universal.cpp' object='unix/odesrc/joints/libode_a-universal.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/universal.cpp' object='unix/odesrc/joints/libode_a-universal.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-universal.o `test -f 'unix/odesrc/joints/universal.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/universal.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-universal.o `test -f 'unix/odesrc/joints/universal.cpp' || echo '$(srcdir)/'`unix/odesrc/joints/universal.cpp unix/odesrc/joints/libode_a-universal.obj: unix/odesrc/joints/universal.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/joints/libode_a-universal.obj -MD -MP -MF unix/odesrc/joints/$(DEPDIR)/libode_a-universal.Tpo -c -o unix/odesrc/joints/libode_a-universal.obj `if test -f 'unix/odesrc/joints/universal.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/universal.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/universal.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/joints/$(DEPDIR)/libode_a-universal.Tpo unix/odesrc/joints/$(DEPDIR)/libode_a-universal.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/joints/universal.cpp' object='unix/odesrc/joints/libode_a-universal.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/joints/universal.cpp' object='unix/odesrc/joints/libode_a-universal.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-universal.obj `if test -f 'unix/odesrc/joints/universal.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/universal.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/universal.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/joints/libode_a-universal.obj `if test -f 'unix/odesrc/joints/universal.cpp'; then $(CYGPATH_W) 'unix/odesrc/joints/universal.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/joints/universal.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.o: unix/odesrc/OPCODE/OPC_AABBCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.o `test -f 'unix/odesrc/OPCODE/OPC_AABBCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_AABBCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_AABBCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_AABBCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.o `test -f 'unix/odesrc/OPCODE/OPC_AABBCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_AABBCollider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.o `test -f 'unix/odesrc/OPCODE/OPC_AABBCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_AABBCollider.cpp unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.obj: unix/odesrc/OPCODE/OPC_AABBCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_AABBCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_AABBCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_AABBCollider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_AABBCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_AABBCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_AABBCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_AABBCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_AABBCollider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_AABBCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_AABBCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_AABBCollider.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_AABBTree.o: unix/odesrc/OPCODE/OPC_AABBTree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_AABBTree.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBTree.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBTree.o `test -f 'unix/odesrc/OPCODE/OPC_AABBTree.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_AABBTree.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBTree.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBTree.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_AABBTree.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_AABBTree.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_AABBTree.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_AABBTree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBTree.o `test -f 'unix/odesrc/OPCODE/OPC_AABBTree.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_AABBTree.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBTree.o `test -f 'unix/odesrc/OPCODE/OPC_AABBTree.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_AABBTree.cpp unix/odesrc/OPCODE/libode_a-OPC_AABBTree.obj: unix/odesrc/OPCODE/OPC_AABBTree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_AABBTree.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBTree.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBTree.obj `if test -f 'unix/odesrc/OPCODE/OPC_AABBTree.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_AABBTree.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_AABBTree.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBTree.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_AABBTree.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_AABBTree.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_AABBTree.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_AABBTree.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_AABBTree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBTree.obj `if test -f 'unix/odesrc/OPCODE/OPC_AABBTree.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_AABBTree.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_AABBTree.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_AABBTree.obj `if test -f 'unix/odesrc/OPCODE/OPC_AABBTree.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_AABBTree.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_AABBTree.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_BaseModel.o: unix/odesrc/OPCODE/OPC_BaseModel.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_BaseModel.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_BaseModel.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_BaseModel.o `test -f 'unix/odesrc/OPCODE/OPC_BaseModel.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_BaseModel.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_BaseModel.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_BaseModel.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_BaseModel.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_BaseModel.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_BaseModel.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_BaseModel.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_BaseModel.o `test -f 'unix/odesrc/OPCODE/OPC_BaseModel.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_BaseModel.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_BaseModel.o `test -f 'unix/odesrc/OPCODE/OPC_BaseModel.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_BaseModel.cpp unix/odesrc/OPCODE/libode_a-OPC_BaseModel.obj: unix/odesrc/OPCODE/OPC_BaseModel.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_BaseModel.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_BaseModel.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_BaseModel.obj `if test -f 'unix/odesrc/OPCODE/OPC_BaseModel.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_BaseModel.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_BaseModel.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_BaseModel.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_BaseModel.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_BaseModel.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_BaseModel.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_BaseModel.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_BaseModel.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_BaseModel.obj `if test -f 'unix/odesrc/OPCODE/OPC_BaseModel.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_BaseModel.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_BaseModel.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_BaseModel.obj `if test -f 'unix/odesrc/OPCODE/OPC_BaseModel.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_BaseModel.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_BaseModel.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_Collider.o: unix/odesrc/OPCODE/OPC_Collider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_Collider.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Collider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_Collider.o `test -f 'unix/odesrc/OPCODE/OPC_Collider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Collider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Collider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Collider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_Collider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Collider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_Collider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Collider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Collider.o `test -f 'unix/odesrc/OPCODE/OPC_Collider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Collider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Collider.o `test -f 'unix/odesrc/OPCODE/OPC_Collider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Collider.cpp unix/odesrc/OPCODE/libode_a-OPC_Collider.obj: unix/odesrc/OPCODE/OPC_Collider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_Collider.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Collider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_Collider.obj `if test -f 'unix/odesrc/OPCODE/OPC_Collider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Collider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Collider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Collider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Collider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_Collider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Collider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_Collider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Collider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Collider.obj `if test -f 'unix/odesrc/OPCODE/OPC_Collider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Collider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Collider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Collider.obj `if test -f 'unix/odesrc/OPCODE/OPC_Collider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Collider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Collider.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_Common.o: unix/odesrc/OPCODE/OPC_Common.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_Common.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Common.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_Common.o `test -f 'unix/odesrc/OPCODE/OPC_Common.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Common.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Common.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Common.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_Common.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Common.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_Common.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Common.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Common.o `test -f 'unix/odesrc/OPCODE/OPC_Common.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Common.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Common.o `test -f 'unix/odesrc/OPCODE/OPC_Common.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Common.cpp unix/odesrc/OPCODE/libode_a-OPC_Common.obj: unix/odesrc/OPCODE/OPC_Common.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_Common.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Common.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_Common.obj `if test -f 'unix/odesrc/OPCODE/OPC_Common.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Common.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Common.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Common.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Common.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_Common.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Common.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_Common.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Common.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Common.obj `if test -f 'unix/odesrc/OPCODE/OPC_Common.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Common.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Common.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Common.obj `if test -f 'unix/odesrc/OPCODE/OPC_Common.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Common.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Common.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_HybridModel.o: unix/odesrc/OPCODE/OPC_HybridModel.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_HybridModel.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_HybridModel.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_HybridModel.o `test -f 'unix/odesrc/OPCODE/OPC_HybridModel.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_HybridModel.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_HybridModel.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_HybridModel.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_HybridModel.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_HybridModel.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_HybridModel.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_HybridModel.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_HybridModel.o `test -f 'unix/odesrc/OPCODE/OPC_HybridModel.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_HybridModel.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_HybridModel.o `test -f 'unix/odesrc/OPCODE/OPC_HybridModel.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_HybridModel.cpp unix/odesrc/OPCODE/libode_a-OPC_HybridModel.obj: unix/odesrc/OPCODE/OPC_HybridModel.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_HybridModel.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_HybridModel.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_HybridModel.obj `if test -f 'unix/odesrc/OPCODE/OPC_HybridModel.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_HybridModel.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_HybridModel.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_HybridModel.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_HybridModel.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_HybridModel.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_HybridModel.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_HybridModel.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_HybridModel.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_HybridModel.obj `if test -f 'unix/odesrc/OPCODE/OPC_HybridModel.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_HybridModel.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_HybridModel.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_HybridModel.obj `if test -f 'unix/odesrc/OPCODE/OPC_HybridModel.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_HybridModel.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_HybridModel.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.o: unix/odesrc/OPCODE/OPC_LSSCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_LSSCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.o `test -f 'unix/odesrc/OPCODE/OPC_LSSCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_LSSCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_LSSCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_LSSCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_LSSCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_LSSCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.o `test -f 'unix/odesrc/OPCODE/OPC_LSSCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_LSSCollider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.o `test -f 'unix/odesrc/OPCODE/OPC_LSSCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_LSSCollider.cpp unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.obj: unix/odesrc/OPCODE/OPC_LSSCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_LSSCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_LSSCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_LSSCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_LSSCollider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_LSSCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_LSSCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_LSSCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_LSSCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_LSSCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_LSSCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_LSSCollider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_LSSCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_LSSCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_LSSCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_LSSCollider.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.o: unix/odesrc/OPCODE/OPC_MeshInterface.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_MeshInterface.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.o `test -f 'unix/odesrc/OPCODE/OPC_MeshInterface.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_MeshInterface.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_MeshInterface.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_MeshInterface.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_MeshInterface.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_MeshInterface.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.o `test -f 'unix/odesrc/OPCODE/OPC_MeshInterface.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_MeshInterface.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.o `test -f 'unix/odesrc/OPCODE/OPC_MeshInterface.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_MeshInterface.cpp unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.obj: unix/odesrc/OPCODE/OPC_MeshInterface.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_MeshInterface.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.obj `if test -f 'unix/odesrc/OPCODE/OPC_MeshInterface.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_MeshInterface.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_MeshInterface.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_MeshInterface.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_MeshInterface.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_MeshInterface.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_MeshInterface.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.obj `if test -f 'unix/odesrc/OPCODE/OPC_MeshInterface.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_MeshInterface.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_MeshInterface.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_MeshInterface.obj `if test -f 'unix/odesrc/OPCODE/OPC_MeshInterface.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_MeshInterface.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_MeshInterface.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_Model.o: unix/odesrc/OPCODE/OPC_Model.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_Model.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Model.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_Model.o `test -f 'unix/odesrc/OPCODE/OPC_Model.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Model.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Model.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Model.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_Model.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Model.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_Model.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Model.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Model.o `test -f 'unix/odesrc/OPCODE/OPC_Model.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Model.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Model.o `test -f 'unix/odesrc/OPCODE/OPC_Model.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Model.cpp unix/odesrc/OPCODE/libode_a-OPC_Model.obj: unix/odesrc/OPCODE/OPC_Model.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_Model.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Model.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_Model.obj `if test -f 'unix/odesrc/OPCODE/OPC_Model.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Model.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Model.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Model.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Model.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_Model.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Model.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_Model.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Model.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Model.obj `if test -f 'unix/odesrc/OPCODE/OPC_Model.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Model.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Model.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Model.obj `if test -f 'unix/odesrc/OPCODE/OPC_Model.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Model.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Model.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.o: unix/odesrc/OPCODE/OPC_OBBCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OBBCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.o `test -f 'unix/odesrc/OPCODE/OPC_OBBCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_OBBCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OBBCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OBBCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_OBBCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_OBBCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.o `test -f 'unix/odesrc/OPCODE/OPC_OBBCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_OBBCollider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.o `test -f 'unix/odesrc/OPCODE/OPC_OBBCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_OBBCollider.cpp unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.obj: unix/odesrc/OPCODE/OPC_OBBCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OBBCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_OBBCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_OBBCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_OBBCollider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OBBCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OBBCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_OBBCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_OBBCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_OBBCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_OBBCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_OBBCollider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_OBBCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_OBBCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_OBBCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_OBBCollider.cpp'; fi` unix/odesrc/OPCODE/libode_a-Opcode.o: unix/odesrc/OPCODE/Opcode.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-Opcode.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-Opcode.Tpo -c -o unix/odesrc/OPCODE/libode_a-Opcode.o `test -f 'unix/odesrc/OPCODE/Opcode.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Opcode.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-Opcode.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-Opcode.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Opcode.cpp' object='unix/odesrc/OPCODE/libode_a-Opcode.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Opcode.cpp' object='unix/odesrc/OPCODE/libode_a-Opcode.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-Opcode.o `test -f 'unix/odesrc/OPCODE/Opcode.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Opcode.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-Opcode.o `test -f 'unix/odesrc/OPCODE/Opcode.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Opcode.cpp unix/odesrc/OPCODE/libode_a-Opcode.obj: unix/odesrc/OPCODE/Opcode.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-Opcode.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-Opcode.Tpo -c -o unix/odesrc/OPCODE/libode_a-Opcode.obj `if test -f 'unix/odesrc/OPCODE/Opcode.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Opcode.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Opcode.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-Opcode.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-Opcode.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Opcode.cpp' object='unix/odesrc/OPCODE/libode_a-Opcode.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Opcode.cpp' object='unix/odesrc/OPCODE/libode_a-Opcode.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-Opcode.obj `if test -f 'unix/odesrc/OPCODE/Opcode.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Opcode.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Opcode.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-Opcode.obj `if test -f 'unix/odesrc/OPCODE/Opcode.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Opcode.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Opcode.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.o: unix/odesrc/OPCODE/OPC_OptimizedTree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OptimizedTree.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.o `test -f 'unix/odesrc/OPCODE/OPC_OptimizedTree.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_OptimizedTree.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OptimizedTree.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OptimizedTree.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_OptimizedTree.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_OptimizedTree.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.o `test -f 'unix/odesrc/OPCODE/OPC_OptimizedTree.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_OptimizedTree.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.o `test -f 'unix/odesrc/OPCODE/OPC_OptimizedTree.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_OptimizedTree.cpp unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.obj: unix/odesrc/OPCODE/OPC_OptimizedTree.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OptimizedTree.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.obj `if test -f 'unix/odesrc/OPCODE/OPC_OptimizedTree.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_OptimizedTree.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_OptimizedTree.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OptimizedTree.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_OptimizedTree.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_OptimizedTree.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_OptimizedTree.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.obj `if test -f 'unix/odesrc/OPCODE/OPC_OptimizedTree.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_OptimizedTree.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_OptimizedTree.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_OptimizedTree.obj `if test -f 'unix/odesrc/OPCODE/OPC_OptimizedTree.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_OptimizedTree.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_OptimizedTree.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_Picking.o: unix/odesrc/OPCODE/OPC_Picking.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_Picking.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Picking.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_Picking.o `test -f 'unix/odesrc/OPCODE/OPC_Picking.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Picking.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Picking.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Picking.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_Picking.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Picking.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_Picking.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Picking.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Picking.o `test -f 'unix/odesrc/OPCODE/OPC_Picking.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Picking.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Picking.o `test -f 'unix/odesrc/OPCODE/OPC_Picking.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_Picking.cpp unix/odesrc/OPCODE/libode_a-OPC_Picking.obj: unix/odesrc/OPCODE/OPC_Picking.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_Picking.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Picking.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_Picking.obj `if test -f 'unix/odesrc/OPCODE/OPC_Picking.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Picking.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Picking.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Picking.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_Picking.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_Picking.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Picking.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_Picking.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_Picking.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Picking.obj `if test -f 'unix/odesrc/OPCODE/OPC_Picking.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Picking.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Picking.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_Picking.obj `if test -f 'unix/odesrc/OPCODE/OPC_Picking.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_Picking.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_Picking.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.o: unix/odesrc/OPCODE/OPC_PlanesCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_PlanesCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.o `test -f 'unix/odesrc/OPCODE/OPC_PlanesCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_PlanesCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_PlanesCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_PlanesCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_PlanesCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_PlanesCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.o `test -f 'unix/odesrc/OPCODE/OPC_PlanesCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_PlanesCollider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.o `test -f 'unix/odesrc/OPCODE/OPC_PlanesCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_PlanesCollider.cpp unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.obj: unix/odesrc/OPCODE/OPC_PlanesCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_PlanesCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_PlanesCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_PlanesCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_PlanesCollider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_PlanesCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_PlanesCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_PlanesCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_PlanesCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_PlanesCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_PlanesCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_PlanesCollider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_PlanesCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_PlanesCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_PlanesCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_PlanesCollider.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_RayCollider.o: unix/odesrc/OPCODE/OPC_RayCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_RayCollider.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_RayCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_RayCollider.o `test -f 'unix/odesrc/OPCODE/OPC_RayCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_RayCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_RayCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_RayCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_RayCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_RayCollider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_RayCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_RayCollider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_RayCollider.o `test -f 'unix/odesrc/OPCODE/OPC_RayCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_RayCollider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_RayCollider.o `test -f 'unix/odesrc/OPCODE/OPC_RayCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_RayCollider.cpp unix/odesrc/OPCODE/libode_a-OPC_RayCollider.obj: unix/odesrc/OPCODE/OPC_RayCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_RayCollider.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_RayCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_RayCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_RayCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_RayCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_RayCollider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_RayCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_RayCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_RayCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_RayCollider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_RayCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_RayCollider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_RayCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_RayCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_RayCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_RayCollider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_RayCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_RayCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_RayCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_RayCollider.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.o: unix/odesrc/OPCODE/OPC_SphereCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_SphereCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.o `test -f 'unix/odesrc/OPCODE/OPC_SphereCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_SphereCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_SphereCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_SphereCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_SphereCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_SphereCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.o `test -f 'unix/odesrc/OPCODE/OPC_SphereCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_SphereCollider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.o `test -f 'unix/odesrc/OPCODE/OPC_SphereCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_SphereCollider.cpp unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.obj: unix/odesrc/OPCODE/OPC_SphereCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_SphereCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_SphereCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_SphereCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_SphereCollider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_SphereCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_SphereCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_SphereCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_SphereCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_SphereCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_SphereCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_SphereCollider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_SphereCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_SphereCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_SphereCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_SphereCollider.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.o: unix/odesrc/OPCODE/OPC_TreeBuilders.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeBuilders.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.o `test -f 'unix/odesrc/OPCODE/OPC_TreeBuilders.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_TreeBuilders.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeBuilders.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeBuilders.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_TreeBuilders.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_TreeBuilders.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.o `test -f 'unix/odesrc/OPCODE/OPC_TreeBuilders.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_TreeBuilders.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.o `test -f 'unix/odesrc/OPCODE/OPC_TreeBuilders.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_TreeBuilders.cpp unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.obj: unix/odesrc/OPCODE/OPC_TreeBuilders.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeBuilders.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.obj `if test -f 'unix/odesrc/OPCODE/OPC_TreeBuilders.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_TreeBuilders.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_TreeBuilders.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeBuilders.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeBuilders.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_TreeBuilders.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_TreeBuilders.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.obj `if test -f 'unix/odesrc/OPCODE/OPC_TreeBuilders.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_TreeBuilders.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_TreeBuilders.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeBuilders.obj `if test -f 'unix/odesrc/OPCODE/OPC_TreeBuilders.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_TreeBuilders.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_TreeBuilders.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.o: unix/odesrc/OPCODE/OPC_TreeCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.o `test -f 'unix/odesrc/OPCODE/OPC_TreeCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_TreeCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_TreeCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_TreeCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.o `test -f 'unix/odesrc/OPCODE/OPC_TreeCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_TreeCollider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.o `test -f 'unix/odesrc/OPCODE/OPC_TreeCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_TreeCollider.cpp unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.obj: unix/odesrc/OPCODE/OPC_TreeCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_TreeCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_TreeCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_TreeCollider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_TreeCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_TreeCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_TreeCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_TreeCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_TreeCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_TreeCollider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_TreeCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_TreeCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_TreeCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_TreeCollider.cpp'; fi` unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.o: unix/odesrc/OPCODE/OPC_VolumeCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.o -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_VolumeCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.o `test -f 'unix/odesrc/OPCODE/OPC_VolumeCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_VolumeCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_VolumeCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_VolumeCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_VolumeCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_VolumeCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.o `test -f 'unix/odesrc/OPCODE/OPC_VolumeCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_VolumeCollider.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.o `test -f 'unix/odesrc/OPCODE/OPC_VolumeCollider.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/OPC_VolumeCollider.cpp unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.obj: unix/odesrc/OPCODE/OPC_VolumeCollider.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.obj -MD -MP -MF unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_VolumeCollider.Tpo -c -o unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_VolumeCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_VolumeCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_VolumeCollider.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_VolumeCollider.Tpo unix/odesrc/OPCODE/$(DEPDIR)/libode_a-OPC_VolumeCollider.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/OPC_VolumeCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/OPC_VolumeCollider.cpp' object='unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_VolumeCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_VolumeCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_VolumeCollider.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/libode_a-OPC_VolumeCollider.obj `if test -f 'unix/odesrc/OPCODE/OPC_VolumeCollider.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/OPC_VolumeCollider.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/OPC_VolumeCollider.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceAABB.o: unix/odesrc/OPCODE/Ice/IceAABB.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceAABB.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceAABB.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceAABB.o `test -f 'unix/odesrc/OPCODE/Ice/IceAABB.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceAABB.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceAABB.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceAABB.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceAABB.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceAABB.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceAABB.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceAABB.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceAABB.o `test -f 'unix/odesrc/OPCODE/Ice/IceAABB.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceAABB.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceAABB.o `test -f 'unix/odesrc/OPCODE/Ice/IceAABB.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceAABB.cpp unix/odesrc/OPCODE/Ice/libode_a-IceAABB.obj: unix/odesrc/OPCODE/Ice/IceAABB.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceAABB.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceAABB.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceAABB.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceAABB.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceAABB.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceAABB.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceAABB.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceAABB.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceAABB.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceAABB.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceAABB.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceAABB.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceAABB.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceAABB.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceAABB.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceAABB.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceAABB.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceAABB.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceAABB.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceAABB.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceContainer.o: unix/odesrc/OPCODE/Ice/IceContainer.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceContainer.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceContainer.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceContainer.o `test -f 'unix/odesrc/OPCODE/Ice/IceContainer.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceContainer.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceContainer.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceContainer.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceContainer.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceContainer.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceContainer.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceContainer.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceContainer.o `test -f 'unix/odesrc/OPCODE/Ice/IceContainer.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceContainer.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceContainer.o `test -f 'unix/odesrc/OPCODE/Ice/IceContainer.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceContainer.cpp unix/odesrc/OPCODE/Ice/libode_a-IceContainer.obj: unix/odesrc/OPCODE/Ice/IceContainer.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceContainer.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceContainer.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceContainer.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceContainer.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceContainer.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceContainer.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceContainer.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceContainer.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceContainer.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceContainer.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceContainer.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceContainer.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceContainer.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceContainer.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceContainer.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceContainer.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceContainer.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceContainer.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceContainer.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceContainer.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.o: unix/odesrc/OPCODE/Ice/IceHPoint.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceHPoint.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.o `test -f 'unix/odesrc/OPCODE/Ice/IceHPoint.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceHPoint.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceHPoint.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceHPoint.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceHPoint.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceHPoint.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.o `test -f 'unix/odesrc/OPCODE/Ice/IceHPoint.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceHPoint.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.o `test -f 'unix/odesrc/OPCODE/Ice/IceHPoint.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceHPoint.cpp unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.obj: unix/odesrc/OPCODE/Ice/IceHPoint.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceHPoint.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceHPoint.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceHPoint.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceHPoint.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceHPoint.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceHPoint.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceHPoint.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceHPoint.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceHPoint.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceHPoint.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceHPoint.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceHPoint.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceHPoint.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceHPoint.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceHPoint.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.o: unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceIndexedTriangle.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.o `test -f 'unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceIndexedTriangle.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceIndexedTriangle.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.o `test -f 'unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.o `test -f 'unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.obj: unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceIndexedTriangle.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceIndexedTriangle.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceIndexedTriangle.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceIndexedTriangle.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceIndexedTriangle.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.o: unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix3x3.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.o `test -f 'unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix3x3.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix3x3.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.o `test -f 'unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.o `test -f 'unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.obj: unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix3x3.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix3x3.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix3x3.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix3x3.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceMatrix3x3.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.o: unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix4x4.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.o `test -f 'unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix4x4.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix4x4.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.o `test -f 'unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.o `test -f 'unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.obj: unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix4x4.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix4x4.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceMatrix4x4.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceMatrix4x4.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceMatrix4x4.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceOBB.o: unix/odesrc/OPCODE/Ice/IceOBB.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceOBB.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceOBB.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceOBB.o `test -f 'unix/odesrc/OPCODE/Ice/IceOBB.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceOBB.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceOBB.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceOBB.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceOBB.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceOBB.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceOBB.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceOBB.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceOBB.o `test -f 'unix/odesrc/OPCODE/Ice/IceOBB.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceOBB.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceOBB.o `test -f 'unix/odesrc/OPCODE/Ice/IceOBB.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceOBB.cpp unix/odesrc/OPCODE/Ice/libode_a-IceOBB.obj: unix/odesrc/OPCODE/Ice/IceOBB.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceOBB.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceOBB.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceOBB.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceOBB.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceOBB.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceOBB.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceOBB.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceOBB.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceOBB.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceOBB.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceOBB.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceOBB.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceOBB.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceOBB.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceOBB.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceOBB.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceOBB.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceOBB.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceOBB.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceOBB.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IcePlane.o: unix/odesrc/OPCODE/Ice/IcePlane.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IcePlane.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePlane.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePlane.o `test -f 'unix/odesrc/OPCODE/Ice/IcePlane.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IcePlane.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePlane.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePlane.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IcePlane.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IcePlane.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IcePlane.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IcePlane.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePlane.o `test -f 'unix/odesrc/OPCODE/Ice/IcePlane.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IcePlane.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePlane.o `test -f 'unix/odesrc/OPCODE/Ice/IcePlane.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IcePlane.cpp unix/odesrc/OPCODE/Ice/libode_a-IcePlane.obj: unix/odesrc/OPCODE/Ice/IcePlane.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IcePlane.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePlane.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePlane.obj `if test -f 'unix/odesrc/OPCODE/Ice/IcePlane.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IcePlane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IcePlane.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePlane.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePlane.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IcePlane.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IcePlane.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IcePlane.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IcePlane.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePlane.obj `if test -f 'unix/odesrc/OPCODE/Ice/IcePlane.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IcePlane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IcePlane.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePlane.obj `if test -f 'unix/odesrc/OPCODE/Ice/IcePlane.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IcePlane.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IcePlane.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IcePoint.o: unix/odesrc/OPCODE/Ice/IcePoint.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IcePoint.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePoint.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePoint.o `test -f 'unix/odesrc/OPCODE/Ice/IcePoint.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IcePoint.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePoint.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePoint.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IcePoint.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IcePoint.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IcePoint.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IcePoint.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePoint.o `test -f 'unix/odesrc/OPCODE/Ice/IcePoint.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IcePoint.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePoint.o `test -f 'unix/odesrc/OPCODE/Ice/IcePoint.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IcePoint.cpp unix/odesrc/OPCODE/Ice/libode_a-IcePoint.obj: unix/odesrc/OPCODE/Ice/IcePoint.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IcePoint.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePoint.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePoint.obj `if test -f 'unix/odesrc/OPCODE/Ice/IcePoint.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IcePoint.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IcePoint.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePoint.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IcePoint.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IcePoint.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IcePoint.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IcePoint.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IcePoint.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePoint.obj `if test -f 'unix/odesrc/OPCODE/Ice/IcePoint.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IcePoint.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IcePoint.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IcePoint.obj `if test -f 'unix/odesrc/OPCODE/Ice/IcePoint.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IcePoint.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IcePoint.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceRandom.o: unix/odesrc/OPCODE/Ice/IceRandom.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceRandom.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRandom.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRandom.o `test -f 'unix/odesrc/OPCODE/Ice/IceRandom.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceRandom.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRandom.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRandom.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceRandom.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRandom.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceRandom.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRandom.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRandom.o `test -f 'unix/odesrc/OPCODE/Ice/IceRandom.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceRandom.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRandom.o `test -f 'unix/odesrc/OPCODE/Ice/IceRandom.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceRandom.cpp unix/odesrc/OPCODE/Ice/libode_a-IceRandom.obj: unix/odesrc/OPCODE/Ice/IceRandom.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceRandom.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRandom.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRandom.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceRandom.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceRandom.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceRandom.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRandom.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRandom.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceRandom.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRandom.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceRandom.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRandom.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRandom.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceRandom.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceRandom.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceRandom.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRandom.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceRandom.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceRandom.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceRandom.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceRay.o: unix/odesrc/OPCODE/Ice/IceRay.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceRay.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRay.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRay.o `test -f 'unix/odesrc/OPCODE/Ice/IceRay.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceRay.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRay.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRay.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceRay.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRay.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceRay.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRay.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRay.o `test -f 'unix/odesrc/OPCODE/Ice/IceRay.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceRay.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRay.o `test -f 'unix/odesrc/OPCODE/Ice/IceRay.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceRay.cpp unix/odesrc/OPCODE/Ice/libode_a-IceRay.obj: unix/odesrc/OPCODE/Ice/IceRay.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceRay.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRay.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRay.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceRay.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceRay.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceRay.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRay.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRay.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceRay.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRay.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceRay.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRay.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRay.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceRay.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceRay.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceRay.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRay.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceRay.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceRay.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceRay.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.o: unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRevisitedRadix.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.o `test -f 'unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRevisitedRadix.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRevisitedRadix.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.o `test -f 'unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.o `test -f 'unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.obj: unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRevisitedRadix.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRevisitedRadix.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceRevisitedRadix.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceRevisitedRadix.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceRevisitedRadix.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceSegment.o: unix/odesrc/OPCODE/Ice/IceSegment.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceSegment.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceSegment.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceSegment.o `test -f 'unix/odesrc/OPCODE/Ice/IceSegment.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceSegment.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceSegment.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceSegment.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceSegment.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceSegment.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceSegment.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceSegment.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceSegment.o `test -f 'unix/odesrc/OPCODE/Ice/IceSegment.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceSegment.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceSegment.o `test -f 'unix/odesrc/OPCODE/Ice/IceSegment.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceSegment.cpp unix/odesrc/OPCODE/Ice/libode_a-IceSegment.obj: unix/odesrc/OPCODE/Ice/IceSegment.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceSegment.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceSegment.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceSegment.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceSegment.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceSegment.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceSegment.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceSegment.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceSegment.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceSegment.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceSegment.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceSegment.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceSegment.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceSegment.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceSegment.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceSegment.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceSegment.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceSegment.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceSegment.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceSegment.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceSegment.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.o: unix/odesrc/OPCODE/Ice/IceTriangle.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceTriangle.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.o `test -f 'unix/odesrc/OPCODE/Ice/IceTriangle.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceTriangle.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceTriangle.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceTriangle.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceTriangle.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceTriangle.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.o `test -f 'unix/odesrc/OPCODE/Ice/IceTriangle.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceTriangle.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.o `test -f 'unix/odesrc/OPCODE/Ice/IceTriangle.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceTriangle.cpp unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.obj: unix/odesrc/OPCODE/Ice/IceTriangle.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceTriangle.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceTriangle.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceTriangle.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceTriangle.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceTriangle.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceTriangle.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceTriangle.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceTriangle.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceTriangle.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceTriangle.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceTriangle.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceTriangle.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceTriangle.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceTriangle.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceTriangle.cpp'; fi` unix/odesrc/OPCODE/Ice/libode_a-IceUtils.o: unix/odesrc/OPCODE/Ice/IceUtils.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceUtils.o -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceUtils.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceUtils.o `test -f 'unix/odesrc/OPCODE/Ice/IceUtils.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceUtils.cpp @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceUtils.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceUtils.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceUtils.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceUtils.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceUtils.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceUtils.o' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceUtils.o `test -f 'unix/odesrc/OPCODE/Ice/IceUtils.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceUtils.cpp +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceUtils.o `test -f 'unix/odesrc/OPCODE/Ice/IceUtils.cpp' || echo '$(srcdir)/'`unix/odesrc/OPCODE/Ice/IceUtils.cpp unix/odesrc/OPCODE/Ice/libode_a-IceUtils.obj: unix/odesrc/OPCODE/Ice/IceUtils.cpp @am__fastdepCXX_TRUE@ $(AM_V_CXX)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -MT unix/odesrc/OPCODE/Ice/libode_a-IceUtils.obj -MD -MP -MF unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceUtils.Tpo -c -o unix/odesrc/OPCODE/Ice/libode_a-IceUtils.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceUtils.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceUtils.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceUtils.cpp'; fi` @am__fastdepCXX_TRUE@ $(AM_V_at)$(am__mv) unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceUtils.Tpo unix/odesrc/OPCODE/Ice/$(DEPDIR)/libode_a-IceUtils.Po -@am__fastdepCXX_FALSE@ $(AM_V_CXX) @AM_BACKSLASH@ -@AMDEP_TRUE@@am__fastdepCXX_FALSE@ source='unix/odesrc/OPCODE/Ice/IceUtils.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceUtils.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCXX_FALSE@ $(AM_V_CXX)source='unix/odesrc/OPCODE/Ice/IceUtils.cpp' object='unix/odesrc/OPCODE/Ice/libode_a-IceUtils.obj' libtool=no @AMDEPBACKSLASH@ @AMDEP_TRUE@@am__fastdepCXX_FALSE@ DEPDIR=$(DEPDIR) $(CXXDEPMODE) $(depcomp) @AMDEPBACKSLASH@ -@am__fastdepCXX_FALSE@ $(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceUtils.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceUtils.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceUtils.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceUtils.cpp'; fi` +@am__fastdepCXX_FALSE@ $(AM_V_CXX@am__nodep@)$(CXX) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(libode_a_CPPFLAGS) $(CPPFLAGS) $(AM_CXXFLAGS) $(CXXFLAGS) -c -o unix/odesrc/OPCODE/Ice/libode_a-IceUtils.obj `if test -f 'unix/odesrc/OPCODE/Ice/IceUtils.cpp'; then $(CYGPATH_W) 'unix/odesrc/OPCODE/Ice/IceUtils.cpp'; else $(CYGPATH_W) '$(srcdir)/unix/odesrc/OPCODE/Ice/IceUtils.cpp'; fi` -ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ - mkid -fID $$unique -tags: TAGS +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags -TAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) set x; \ here=`pwd`; \ - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ + $(am__define_uniq_tagged_files); \ shift; \ if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ test -n "$$unique" || unique=$$empty_fix; \ @@ -5534,15 +4967,11 @@ $$unique; \ fi; \ fi -ctags: CTAGS -CTAGS: $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \ - $(TAGS_FILES) $(LISP) - list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \ - unique=`for i in $$list; do \ - if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ - done | \ - $(AWK) '{ files[$$0] = 1; nonempty = 1; } \ - END { if (nonempty) { for (i in files) print i; }; }'`; \ +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ test -z "$(CTAGS_ARGS)$$unique" \ || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ $$unique @@ -5551,6 +4980,21 @@ here=`$(am__cd) $(top_builddir) && pwd` \ && $(am__cd) $(top_srcdir) \ && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files distclean-tags: -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags @@ -5602,10 +5046,15 @@ installcheck: installcheck-am install-strip: - $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ - install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ - `test -z '$(STRIP)' || \ - echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi mostlyclean-generic: clean-generic: @@ -5715,18 +5164,19 @@ .MAKE: install-am install-strip -.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \ - clean-generic clean-noinstLIBRARIES ctags distclean \ - distclean-compile distclean-generic distclean-tags distdir dvi \ - dvi-am html html-am info info-am install install-am \ - install-binPROGRAMS install-data install-data-am install-dvi \ - install-dvi-am install-exec install-exec-am install-html \ - install-html-am install-info install-info-am install-man \ - install-pdf install-pdf-am install-ps install-ps-am \ - install-strip installcheck installcheck-am installdirs \ - maintainer-clean maintainer-clean-generic mostlyclean \ - mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \ - tags uninstall uninstall-am uninstall-binPROGRAMS +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic clean-noinstLIBRARIES \ + cscopelist-am ctags ctags-am distclean distclean-compile \ + distclean-generic distclean-tags distdir dvi dvi-am html \ + html-am info info-am install install-am install-binPROGRAMS \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs maintainer-clean \ + maintainer-clean-generic mostlyclean mostlyclean-compile \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am uninstall-binPROGRAMS # Tell versions [3.59,3.63) of GNU make to not export all variables. diff -Nru alien-arena-7.53+dfsg/source/null/cl_null.c alien-arena-7.66+dfsg/source/null/cl_null.c --- alien-arena-7.53+dfsg/source/null/cl_null.c 2010-12-01 07:56:22.000000000 +0000 +++ alien-arena-7.66+dfsg/source/null/cl_null.c 2013-06-22 20:07:36.000000000 +0000 @@ -59,7 +59,7 @@ Com_Printf ("Unknown command \"%s\"\n", cmd); } -void SCR_DebugGraph (float value, int color) +void SCR_DebugGraph (float value, const float color[]) { } @@ -76,3 +76,8 @@ Cmd_AddCommand ("bind", Key_Bind_Null_f); } +netadr_t *CL_GetRemoteServer (void) +{ + return NULL; +} + diff -Nru alien-arena-7.53+dfsg/source/qcommon/cmd.c alien-arena-7.66+dfsg/source/qcommon/cmd.c --- alien-arena-7.53+dfsg/source/qcommon/cmd.c 2011-12-24 09:24:28.000000000 +0000 +++ alien-arena-7.66+dfsg/source/qcommon/cmd.c 2013-06-22 20:07:36.000000000 +0000 @@ -106,10 +106,10 @@ if (cmd_text.cursize + l >= cmd_text.maxsize) { - Com_Printf ("Cbuf_AddText: overflow\n"); + Com_Printf ("Cbuf_AddText: overflow! Discarding text: %s\n", text); return; } - SZ_Write (&cmd_text, text, strlen (text)); + SZ_Write (&cmd_text, text, l); } @@ -144,7 +144,16 @@ // add the copied off data if (templen) { - SZ_Write (&cmd_text, temp, templen); + if (cmd_text.cursize + templen >= cmd_text.maxsize) + /* possible "graceful" solution: Cbuf_Execute here to flush the + * buffer? Would change behavior of successive Cbuf_InsertText + * calls and probably screw things up with exec'd cfgs within + * exec'd cfgs, possibly resulting in infinite recursion loops. + * TODO: study this option with some pathological test cfgs. + */ + Com_Printf ("Cbuf_InsertText: overflow! Discarding text: %s\n", temp); + else + SZ_Write (&cmd_text, temp, templen); Z_Free (temp); } } @@ -309,7 +318,8 @@ */ qboolean Cbuf_AddLateCommands (void) { - int i, j; + int i; + char *t, *u; int s; char *text, *build, c; int argc; @@ -338,22 +348,28 @@ build = Z_Malloc (s+1); build[0] = 0; - for (i=0 ; ihash_key <= hash_key ; cmd=cmd->next) { if (cmd->hash_key == hash_key && !Q_strcasecmp (cmd_name, cmd->name)) { - Com_Printf ("Cmd_AddCommand: %s already defined\n", cmd_name); + if (cmd->function != function) + Com_Printf ("Cmd_AddCommand: %s already defined\n", cmd_name); return; } prev = &( cmd->next ); diff -Nru alien-arena-7.53+dfsg/source/qcommon/cmodel.c alien-arena-7.66+dfsg/source/qcommon/cmodel.c --- alien-arena-7.53+dfsg/source/qcommon/cmodel.c 2011-11-22 07:26:14.000000000 +0000 +++ alien-arena-7.66+dfsg/source/qcommon/cmodel.c 2013-06-22 20:07:36.000000000 +0000 @@ -12,9 +12,9 @@ See the GNU General Public License for more details. -You should have received a copy of the GNU General Public License -along with this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ // cmodel.c -- model loading @@ -123,6 +123,24 @@ int c_traces, c_brush_traces; +/** + * calculate the 3 signbits for a plane normal. + * + * @param plane + * @return the signbits + */ +static byte signbits_for_plane(const cplane_t *plane) +{ + byte bits; + + bits = plane->normal[0] < 0.0f ? (byte)0x01 : 0 ; + bits |= plane->normal[1] < 0.0f ? (byte)0x02 : 0 ; + bits |= plane->normal[2] < 0.0f ? (byte)0x04 : 0 ; + + return bits; +} + + /* =============================================================================== @@ -133,6 +151,34 @@ byte *cmod_base; +//Performs a sanity check on the BSP file, making sure all the lumps are nice +//and shipshape and won't lead off a cliff somewhere. This does mean that the +//BSP file format has been made less extensible, but we've tended to add more +//data using separate files instead of adding lumps to the BSP, so I think we +//can live with that. +qboolean checkLumps (lump_t *l, size_t header_size, int *lump_order, void *_file_base, int num_lumps, int file_len) +{ + int i = 0; + lump_t *in; + byte *lumpdata_base; + byte *file_base = (byte *)_file_base; + byte *lumpdata_next = file_base+header_size+sizeof(lump_t)*num_lumps; + byte *file_end = file_base + file_len; + for (i = 0; i < num_lumps; i++) + { + in = l+lump_order[i]; + lumpdata_base = file_base+in->fileofs; + if (lumpdata_base != lumpdata_next) + return true; + lumpdata_next = lumpdata_base+((in->filelen+3)&~3); + if (lumpdata_next < lumpdata_base) + return true; + } + if (lumpdata_next != file_end) + return true; + return false; +} + /* ================= CMod_LoadSubmodels @@ -146,7 +192,7 @@ in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadSubmodels: funny lump size"); count = l->filelen / sizeof(*in); if (count < 1) @@ -184,7 +230,7 @@ in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadSurfaces: funny lump size"); count = l->filelen / sizeof(*in); if (count < 1) Com_Error (ERR_DROP, "Map with no surfaces"); @@ -219,7 +265,7 @@ in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadNodes: funny lump size"); count = l->filelen / sizeof(*in); if (count < 1) @@ -257,7 +303,7 @@ in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadBrushes: funny lump size"); count = l->filelen / sizeof(*in); if (count > MAX_MAP_BRUSHES) @@ -290,14 +336,14 @@ in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadLeafs: funny lump size"); count = l->filelen / sizeof(*in); if (count < 1) Com_Error (ERR_DROP, "Map with no leafs"); // need to save space for box planes - if (count > MAX_MAP_PLANES) - Com_Error (ERR_DROP, "Map has too many planes"); + if (count > MAX_MAP_LEAFS) + Com_Error (ERR_DROP, "Map has too many leafs"); out = map_leafs; numleafs = count; @@ -338,15 +384,14 @@ */ void CMod_LoadPlanes (lump_t *l) { - int i, j; + int i; cplane_t *out; dplane_t *in; int count; - int bits; in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadPlanes: funny lump size"); count = l->filelen / sizeof(*in); if (count < 1) @@ -357,20 +402,15 @@ out = map_planes; numplanes = count; - - for ( i=0 ; inormal[j] = LittleFloat (in->normal[j]); - if (out->normal[j] < 0) - bits |= 1<normal[i] = LittleFloat( in->normal[i] ); } - out->dist = LittleFloat (in->dist); out->type = LittleLong (in->type); - out->signbits = bits; + out->signbits = signbits_for_plane( out ); } } @@ -388,11 +428,11 @@ in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadLeafBrushes: funny lump size"); count = l->filelen / sizeof(*in); if (count < 1) - Com_Error (ERR_DROP, "Map with no planes"); + Com_Error (ERR_DROP, "Map with no leafbrushes"); // need to save space for box planes if (count > MAX_MAP_LEAFBRUSHES) Com_Error (ERR_DROP, "Map has too many leafbrushes"); @@ -419,12 +459,12 @@ in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadBrushSides: funny lump size"); count = l->filelen / sizeof(*in); // need to save space for box planes if (count > MAX_MAP_BRUSHSIDES) - Com_Error (ERR_DROP, "Map has too many planes"); + Com_Error (ERR_DROP, "Map has too many brushsides"); out = map_brushsides; numbrushsides = count; @@ -454,7 +494,7 @@ in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadAreas: funny lump size"); count = l->filelen / sizeof(*in); if (count > MAX_MAP_AREAS) @@ -486,11 +526,11 @@ in = (void *)(cmod_base + l->fileofs); if (l->filelen % sizeof(*in)) - Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size"); + Com_Error (ERR_DROP, "CMod_LoadAreaPortals: funny lump size"); count = l->filelen / sizeof(*in); - if (count > MAX_MAP_AREAS) - Com_Error (ERR_DROP, "Map has too many areas"); + if (count > MAX_MAP_AREAPORTALS) + Com_Error (ERR_DROP, "Map has too many areaportals"); out = map_areaportals; numareaportals = count; @@ -521,7 +561,15 @@ for (i=0 ; inumclusters ; i++) { map_vis->bitofs[i][0] = LittleLong (map_vis->bitofs[i][0]); + if (map_vis->bitofs[i][0] < 0 || map_vis->bitofs[i][0] >= numvisibility) + Com_Error ( ERR_DROP, + "Map contains invalid PVS bit offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); map_vis->bitofs[i][1] = LittleLong (map_vis->bitofs[i][1]); + if (map_vis->bitofs[i][1] < 0 || map_vis->bitofs[i][1] >= numvisibility) + Com_Error ( ERR_DROP, + "Map contains invalid PHS bit offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); } } @@ -574,10 +622,19 @@ cmodel_t *CM_LoadBSP (char *name, qboolean clientload, unsigned *checksum) { unsigned *buf; - int i; + unsigned int i; dheader_t header; int length; static unsigned last_checksum; + int bsp_lump_order[HEADER_LUMPS] = + { + LUMP_PLANES, LUMP_LEAFS, LUMP_VERTEXES, LUMP_NODES, + LUMP_TEXINFO, LUMP_FACES, LUMP_BRUSHES, + LUMP_BRUSHSIDES, LUMP_LEAFFACES, LUMP_LEAFBRUSHES, + LUMP_SURFEDGES, LUMP_EDGES, LUMP_MODELS, LUMP_AREAS, + LUMP_AREAPORTALS, LUMP_LIGHTING, LUMP_VISIBILITY, + LUMP_ENTITIES, LUMP_POP + }; map_noareas = Cvar_Get ("map_noareas", "0", 0); @@ -631,6 +688,10 @@ , name, header.version, BSPVERSION); cmod_base = (byte *)buf; + + if (checkLumps(header.lumps, 2*sizeof(int), bsp_lump_order, cmod_base, HEADER_LUMPS, length)) + Com_Error (ERR_DROP,"CMod_LoadBrushModel: lumps in %s don't add up right!\n" + "The file is likely corrupt, please obtain a fresh copy.",name); // load into heap CMod_LoadSurfaces (&header.lumps[LUMP_TEXINFO]); @@ -773,7 +834,10 @@ int CM_LeafCluster (int leafnum) { if (leafnum < 0 || leafnum >= numleafs) + { Com_Error (ERR_DROP, "CM_LeafCluster: bad number"); + return 0; /* unreachable. quiets bogus compiler array index warning */ + } return map_leafs[leafnum].cluster; } @@ -850,15 +914,15 @@ // planes p = &box_planes[i*2]; p->type = i>>1; - p->signbits = 0; VectorClear (p->normal); p->normal[i>>1] = 1; + p->signbits = signbits_for_plane( p ); p = &box_planes[i*2+1]; p->type = 3 + (i>>1); - p->signbits = 0; VectorClear (p->normal); p->normal[i>>1] = -1; + p->signbits = signbits_for_plane( p ); } } @@ -1080,26 +1144,30 @@ int trace_contents; qboolean trace_ispoint; // optimized case -/* -================ -CM_ClipBoxToBrush -================ -*/ -void CM_ClipBoxToBrush (vec3_t mins, vec3_t maxs, vec3_t p1, vec3_t p2, - trace_t *trace, cbrush_t *brush) -{ - int i, j; - cplane_t *plane, *clipplane; - float dist; - float enterfrac, leavefrac; - vec3_t ofs; - float d1, d2; - qboolean getout, startout; - float f; - cbrushside_t *side, *leadside; +/** + * @brief intersect test for axis-aligned box and a brush in a leaf. + * + * This is the innermost loop for CM_BoxTrace() general and point cases. + * Does not use file level static variables; not sure why. + * + * @returns if intersection occurred, information about the brush in the + * trace_t record. otherwise does not touch trace_t record + * + */ +void CM_ClipBoxToBrush( vec3_t mins, vec3_t maxs,vec3_t p1, vec3_t p2, + trace_t *trace, cbrush_t *brush ) +{ + int i; + cplane_t *plane, *clipplane; + float dist; + float enterfrac, leavefrac; + float d1, d2; + qboolean getout, startout; + float f; + cbrushside_t *side, *leadside; - enterfrac = -1; - leavefrac = 1; + enterfrac = -1.0f; + leavefrac = 1.0f; clipplane = NULL; if (!brush->numsides) @@ -1115,24 +1183,72 @@ { side = &map_brushsides[brush->firstbrushside+i]; plane = side->plane; + if ( !trace_ispoint ) + { + switch ( plane->type ) + { + case PLANE_X: + if ( plane->signbits == 0x01 ) + dist = plane->dist - (maxs[0]*plane->normal[0]); + else + dist = plane->dist - (mins[0]*plane->normal[0]); + break; - // FIXME: special case for axial - - if (!trace_ispoint) - { // general box case - - // push the plane out apropriately for mins/maxs + case PLANE_Y: + if ( plane->signbits == 0x02 ) + dist = plane->dist - (maxs[1]*plane->normal[1]); + else + dist = plane->dist - (mins[1]*plane->normal[1]); + break; - // FIXME: use signbits into 8 way lookup for each mins/maxs - for (j=0 ; j<3 ; j++) - { - if (plane->normal[j] < 0) - ofs[j] = maxs[j]; + case PLANE_Z: + if ( plane->signbits == 0x04 ) + dist = plane->dist - (maxs[2]*plane->normal[2]); else - ofs[j] = mins[j]; + dist = plane->dist - (mins[2]*plane->normal[2]); + break; + + default: + switch ( plane->signbits ) /* bit2=z<0, bit1=y<0, bit0=x<0 */ + { + case 0: /* 000b */ + dist = plane->dist - (mins[0]*plane->normal[0] + + mins[1]*plane->normal[1] + mins[2]*plane->normal[2]); + break; + case 1: /* 001b */ + dist = plane->dist - (maxs[0]*plane->normal[0] + + mins[1]*plane->normal[1] + mins[2]*plane->normal[2]); + break; + case 2: /* 010b */ + dist = plane->dist - (mins[0]*plane->normal[0] + + maxs[1]*plane->normal[1] + mins[2]*plane->normal[2]); + break; + case 3: /* 011b */ + dist = plane->dist - (maxs[0]*plane->normal[0] + + maxs[1]*plane->normal[1] + mins[2]*plane->normal[2]); + break; + case 4: /* 100b */ + dist = plane->dist - (mins[0]*plane->normal[0] + + mins[1]*plane->normal[1] + maxs[2]*plane->normal[2]); + break; + case 5: /* 101b */ + dist = plane->dist - (maxs[0]*plane->normal[0] + + mins[1]*plane->normal[1] + maxs[2]*plane->normal[2]); + break; + case 6: /* 110b */ + dist = plane->dist - (mins[0]*plane->normal[0] + + maxs[1]*plane->normal[1] + maxs[2]*plane->normal[2]); + break; + case 7: /* 111b */ + dist = plane->dist - (maxs[0]*plane->normal[0] + + maxs[1]*plane->normal[1] + maxs[2]*plane->normal[2]); + break; + + default: + Com_Error( ERR_DROP, "CM_ClipBoxToBrush: bad plane signbits\n"); + return; // unreachable. suppress bogus compiler warning + } } - dist = DotProduct (ofs, plane->normal); - dist = plane->dist - dist; } else { // special point case @@ -1142,16 +1258,16 @@ d1 = DotProduct (p1, plane->normal) - dist; d2 = DotProduct (p2, plane->normal) - dist; - if (d2 > 0) - getout = true; // endpoint is not in solid - if (d1 > 0) + if ( d2 > 0.0f ) + getout = true; // endpoint is not in solid + if ( d1 > 0.0f ) startout = true; // if completely in front of face, no intersection - if (d1 > 0 && d2 >= d1) + if ( d1 > 0.0f && d2 >= d1 ) return; - if (d1 <= 0 && d2 <= 0) + if ( d1 <= 0.0f && d2 <= 0.0f ) continue; // crosses face @@ -1165,12 +1281,15 @@ leadside = side; } } - else + else if ( d1 < d2 ) { // leave f = (d1+DIST_EPSILON) / (d1-d2); if (f < leavefrac) leavefrac = f; } + /* else d1 == d2, line segment is parallel to plane, cannot intersect. + formerly processed like d1 < d2. now just continue to next + brushside plane. */ } if (!startout) @@ -1330,10 +1449,12 @@ float t1, t2, offset; float frac, frac2; float idist; - int i; vec3_t mid; int side; float midf; + vec3_t p1_copy; + +re_test: if (trace_trace.fraction <= p1f) return; // already hit something nearer @@ -1380,13 +1501,13 @@ // see which sides we need to consider if (t1 >= offset && t2 >= offset) { - CM_RecursiveHullCheck (node->children[0], p1f, p2f, p1, p2); - return; + num = node->children[0]; + goto re_test; } if (t1 < -offset && t2 < -offset) { - CM_RecursiveHullCheck (node->children[1], p1f, p2f, p1, p2); - return; + num = node->children[1]; + goto re_test; } // put the crosspoint DIST_EPSILON pixels on the near side @@ -1418,10 +1539,15 @@ frac = 1; midf = p1f + (p2f - p1f)*frac; - for (i=0 ; i<3 ; i++) - mid[i] = p1[i] + frac*(p2[i] - p1[i]); + mid[0] = p1[0] + frac*(p2[0] - p1[0]); + mid[1] = p1[1] + frac*(p2[1] - p1[1]); + mid[2] = p1[2] + frac*(p2[2] - p1[2]); + + // so we can modify p1 + VectorCopy (p1, p1_copy); - CM_RecursiveHullCheck (node->children[side], p1f, midf, p1, mid); + // this is the only case where the function actually recurses + CM_RecursiveHullCheck (node->children[side], p1f, midf, p1_copy, mid); // go past the node @@ -1430,11 +1556,13 @@ if (frac2 > 1) frac2 = 1; - midf = p1f + (p2f - p1f)*frac2; - for (i=0 ; i<3 ; i++) - mid[i] = p1[i] + frac2*(p2[i] - p1[i]); - - CM_RecursiveHullCheck (node->children[side^1], midf, p2f, mid, p2); + p1f += (p2f - p1f)*frac2; + p1[0] += frac2*(p2[0] - p1[0]); + p1[1] += frac2*(p2[1] - p1[1]); + p1[2] += frac2*(p2[2] - p1[2]); + + num = node->children[side^1]; + goto re_test; } @@ -1451,6 +1579,7 @@ int headnode, int brushmask) { int i; + vec3_t local_start, local_end; checkcount++; // for multi-check avoidance @@ -1469,12 +1598,43 @@ VectorCopy (end, trace_end); VectorCopy (mins, trace_mins); VectorCopy (maxs, trace_maxs); + + if ( !(start == end) && + (start[0] != end[0] || start[1] != end[1] || start[2] != end[2]) ) + { + if (( mins == maxs ) || + ( mins[0] == 0.0f && mins[1] == 0.0f && mins[2] == 0.0f && + maxs[0] == 0.0f && maxs[1] == 0.0f && maxs[2] == 0.0f )) + { // point special case + trace_ispoint = true; + VectorClear (trace_extents); + } + else + { // general axis-aligned box case + trace_ispoint = false; + trace_extents[0] = -mins[0] > maxs[0] ? -mins[0] : maxs[0]; + trace_extents[1] = -mins[1] > maxs[1] ? -mins[1] : maxs[1]; + trace_extents[2] = -mins[2] > maxs[2] ? -mins[2] : maxs[2]; + } + // + // general sweeping through world + // + VectorCopy (start, local_start); // so the function can modify these in-place + VectorCopy (end, local_end); + CM_RecursiveHullCheck (headnode, 0, 1, local_start, local_end); - // - // check for position test special case - // - if (start[0] == end[0] && start[1] == end[1] && start[2] == end[2]) - { + if (trace_trace.fraction == 1) + { + VectorCopy (end, trace_trace.endpos); + } + else + { + for (i=0 ; i<3 ; i++) + trace_trace.endpos[i] = start[i] + trace_trace.fraction * (end[i] - start[i]); + } + } + else + { // position test special case int leafs[1024]; int i, numleafs; vec3_t c1, c2; @@ -1496,40 +1656,8 @@ break; } VectorCopy (start, trace_trace.endpos); - return trace_trace; } - // - // check for point special case - // - if (mins[0] == 0 && mins[1] == 0 && mins[2] == 0 - && maxs[0] == 0 && maxs[1] == 0 && maxs[2] == 0) - { - trace_ispoint = true; - VectorClear (trace_extents); - } - else - { - trace_ispoint = false; - trace_extents[0] = -mins[0] > maxs[0] ? -mins[0] : maxs[0]; - trace_extents[1] = -mins[1] > maxs[1] ? -mins[1] : maxs[1]; - trace_extents[2] = -mins[2] > maxs[2] ? -mins[2] : maxs[2]; - } - - // - // general sweeping through world - // - CM_RecursiveHullCheck (headnode, 0, 1, start, end); - - if (trace_trace.fraction == 1) - { - VectorCopy (end, trace_trace.endpos); - } - else - { - for (i=0 ; i<3 ; i++) - trace_trace.endpos[i] = start[i] + trace_trace.fraction * (end[i] - start[i]); - } return trace_trace; } @@ -1677,6 +1805,11 @@ byte *CM_ClusterPVS (int cluster) { + static int old_cluster = -1; + if (cluster == old_cluster) + return pvsrow; + old_cluster = cluster; + if (cluster == -1) memset (pvsrow, 0, (numclusters+7)>>3); else @@ -1686,6 +1819,11 @@ byte *CM_ClusterPHS (int cluster) { + static int old_cluster = -1; + if (cluster == old_cluster) + return phsrow; + old_cluster = cluster; + if (cluster == -1) memset (phsrow, 0, (numclusters+7)>>3); else @@ -1877,3 +2015,82 @@ return CM_HeadnodeVisible(node->children[1], visbits); } + +/* +================= +CM_inPVS + +Also checks portalareas so that doors block sight +================= +*/ +qboolean CM_inPVS (vec3_t p1, vec3_t p2) +{ + int leafnum; + int cluster; + int area1, area2; + byte *mask; + + leafnum = CM_PointLeafnum (p1); + cluster = CM_LeafCluster (leafnum); + area1 = CM_LeafArea (leafnum); + mask = CM_ClusterPVS (cluster); + + leafnum = CM_PointLeafnum (p2); + cluster = CM_LeafCluster (leafnum); + area2 = CM_LeafArea (leafnum); + if ( mask && (!(mask[cluster>>3] & (1<<(cluster&7)) ) ) ) + return false; + if (!CM_AreasConnected (area1, area2)) + return false; // a door blocks sight + return true; +} + +//similar to CM_inPVS but with leafnums +qboolean CM_inPVS_leafs (int leafnum1, int leafnum2) +{ + int cluster; + int area1, area2; + byte *mask; + + cluster = CM_LeafCluster (leafnum1); + area1 = CM_LeafArea (leafnum1); + mask = CM_ClusterPVS (cluster); + + cluster = CM_LeafCluster (leafnum2); + area2 = CM_LeafArea (leafnum2); + if ( mask && (!(mask[cluster>>3] & (1<<(cluster&7)) ) ) ) + return false; + if (!CM_AreasConnected (area1, area2)) + return false; // a door blocks sight + return true; +} + +/* +================= +CM_inPHS + +Also checks portalareas so that doors block sound +================= +*/ +qboolean CM_inPHS (vec3_t p1, vec3_t p2) +{ + int leafnum; + int cluster; + int area1, area2; + byte *mask; + + leafnum = CM_PointLeafnum (p1); + cluster = CM_LeafCluster (leafnum); + area1 = CM_LeafArea (leafnum); + mask = CM_ClusterPHS (cluster); + + leafnum = CM_PointLeafnum (p2); + cluster = CM_LeafCluster (leafnum); + area2 = CM_LeafArea (leafnum); + if ( mask && (!(mask[cluster>>3] & (1<<(cluster&7)) ) ) ) + return false; // more than one bounce away + if (!CM_AreasConnected (area1, area2)) + return false; // a door blocks hearing + + return true; +} diff -Nru alien-arena-7.53+dfsg/source/qcommon/common.c alien-arena-7.66+dfsg/source/qcommon/common.c --- alien-arena-7.53+dfsg/source/qcommon/common.c 2011-07-08 04:34:46.000000000 +0000 +++ alien-arena-7.66+dfsg/source/qcommon/common.c 2013-06-22 20:07:36.000000000 +0000 @@ -27,13 +27,22 @@ #include +//zlib currently not needed server-side (FOR NOW!) +//Also, due to the ld flags for zlib not being used server side, it won't +//compile without this workaround. +#ifdef DEDICATED_ONLY +#undef HAVE_ZLIB +#endif + +#ifdef HAVE_ZLIB +#include +#endif + #define MAXPRINTMSG 8192 #define MAX_NUM_ARGVS 50 #ifndef DEDICATED_ONLY -extern void S_StartLocalSound (char *sound); -extern void S_StartMusic ( char * sound ); extern void S_StartMenuMusic( void ); #endif @@ -351,6 +360,8 @@ void MSG_WriteShort (sizebuf_t *sb, int c) { +#if 0 + /* Original Version */ byte *buf; #ifdef PARANOID @@ -364,10 +375,19 @@ buf = SZ_GetSpace (sb, 2); buf[0] = c&0xff; buf[1] = c>>8; +#else + /* Experimental Version */ + short *buf; + + buf = (short*)SZ_GetSpace( sb , 2 ); + *buf = LittleShort( c ); +#endif } void MSG_WriteLong (sizebuf_t *sb, int c) { +#if 0 + /* Original Version */ byte *buf; buf = SZ_GetSpace (sb, 4); @@ -375,6 +395,27 @@ buf[1] = (c>>8)&0xff; buf[2] = (c>>16)&0xff; buf[3] = c>>24; +#else + /* Experimental Version */ + int *buf; + + buf = (int*)SZ_GetSpace( sb, 4 ); + *buf = LittleLong( c ); +#endif +} + +void MSG_WriteSizeInt (sizebuf_t *sb, int bytes, int c) +{ + byte *buf; + int i; + + // manually construct two's complement encoding with appropriate bit depth + if (c < 0 && bytes != sizeof(c)) + c += 1<<(8*bytes); + + buf = SZ_GetSpace (sb, bytes); + for (i = 0; i < bytes; i++) + buf[i] = (byte)((c>>(8*i))&0xff); } void MSG_WriteFloat (sizebuf_t *sb, float f) @@ -402,14 +443,14 @@ void MSG_WriteCoord (sizebuf_t *sb, float f) { - MSG_WriteShort (sb, (int)(f*8)); + MSG_WriteSizeInt (sb, coord_bytes, (int)(f*8)); } void MSG_WritePos (sizebuf_t *sb, vec3_t pos) { - MSG_WriteShort (sb, (int)(pos[0]*8)); - MSG_WriteShort (sb, (int)(pos[1]*8)); - MSG_WriteShort (sb, (int)(pos[2]*8)); + MSG_WriteSizeInt (sb, coord_bytes, (int)(pos[0]*8)); + MSG_WriteSizeInt (sb, coord_bytes, (int)(pos[1]*8)); + MSG_WriteSizeInt (sb, coord_bytes, (int)(pos[2]*8)); } void MSG_WriteAngle (sizebuf_t *sb, float f) @@ -796,6 +837,8 @@ int MSG_ReadShort (sizebuf_t *msg_read) { +#if 0 + /* Origninal Version */ int c; if (msg_read->readcount+2 > msg_read->cursize) @@ -807,10 +850,27 @@ msg_read->readcount += 2; return c; +#else + /* Experimental Version */ + int c = -1; + int rc = msg_read->readcount; + short *pi = (short*)(&msg_read->data[ rc ]); + + rc += 2; + if ( rc <= msg_read->cursize ) + { + c = LittleShort( *pi ); + msg_read->readcount = rc; + } + + return c; +#endif } int MSG_ReadLong (sizebuf_t *msg_read) { +#if 0 + /* Original Version */ int c; if (msg_read->readcount+4 > msg_read->cursize) @@ -824,6 +884,41 @@ msg_read->readcount += 4; return c; +#else + /* Experimental Version */ + int c = -1; + int rc = msg_read->readcount; + int *pi = (int*)(&msg_read->data[rc]); + + rc += 4; + if ( rc <= msg_read->cursize ) + { + c = LittleLong( *pi ); + msg_read->readcount = rc; + } + + return c; +#endif +} + +int MSG_ReadSizeInt (sizebuf_t *msg_read, int bytes) +{ + int c, i; + + if (msg_read->readcount+bytes > msg_read->cursize) + c = -1; + else + { + c = 0; + for (i = 0; i < bytes; i++) + c += msg_read->data[msg_read->readcount++] << (8*i); + // check sign bit and sign-extend to 32 bits if needed + if (bytes != sizeof(c) && (c & 1<<(8*bytes-1))) + for (; i < sizeof(c); i++) + c += 0xff<<(8*i); + } + + return c; } float MSG_ReadFloat (sizebuf_t *msg_read) @@ -897,14 +992,14 @@ float MSG_ReadCoord (sizebuf_t *msg_read) { - return MSG_ReadShort(msg_read) * (1.0/8); + return MSG_ReadSizeInt(msg_read, coord_bytes) * (1.0/8); } void MSG_ReadPos (sizebuf_t *msg_read, vec3_t pos) { - pos[0] = MSG_ReadShort(msg_read) * (1.0/8); - pos[1] = MSG_ReadShort(msg_read) * (1.0/8); - pos[2] = MSG_ReadShort(msg_read) * (1.0/8); + pos[0] = MSG_ReadSizeInt(msg_read, coord_bytes) * (1.0/8); + pos[1] = MSG_ReadSizeInt(msg_read, coord_bytes) * (1.0/8); + pos[2] = MSG_ReadSizeInt(msg_read, coord_bytes) * (1.0/8); } float MSG_ReadAngle (sizebuf_t *msg_read) @@ -1133,7 +1228,7 @@ } -char *CopyString (char *in) +char *CopyString (const char *in) { char *out; @@ -1149,15 +1244,21 @@ char key[512]; char value[512]; char *o; - int l; + int l, i; if (*s == '\\') s++; while (*s) { o = key; - while (*s && *s != '\\') + i = 512; + while (--i && *s && *s != '\\') *o++ = *s++; + if (*s && *s != '\\') + { + Com_Printf ("KEY TOO LONG\n"); + return; + } l = o - key; if (l < 20) @@ -1177,8 +1278,14 @@ o = value; s++; - while (*s && *s != '\\') + i = 512; + while (--i && *s && *s != '\\') *o++ = *s++; + if (*s && *s != '\\') + { + Com_Printf ("VALUE TOO LONG\n"); + return; + } *o = 0; if (*s) @@ -1603,7 +1710,7 @@ if (!dedicated->value) S_StartMenuMusic(); #endif - Com_Printf ("======== CRX Initialized ========\n\n"); + Com_Printf ("======== Alien Arena Initialized ========\n\n"); } /* @@ -1660,10 +1767,13 @@ extern int c_traces, c_brush_traces; extern int c_pointcontents; - Com_Printf ("%4i traces %4i points\n", c_traces, c_pointcontents); - c_traces = 0; - c_brush_traces = 0; - c_pointcontents = 0; + if ( c_traces > 0 || c_brush_traces > 0 || c_pointcontents > 0 ) + { + Com_Printf ("%4i traces %4i brush %4i points\n", c_traces, c_brush_traces, c_pointcontents); + c_traces = 0; + c_brush_traces = 0; + c_pointcontents = 0; + } } #if defined UNIX_VARIANT @@ -1738,3 +1848,114 @@ void Qcommon_Shutdown (void) { } + + + + + + + + + +#ifdef HAVE_ZLIB +//This compression code was originally from the Lua branch. More of it will +//eventually be merged when packet compression is added, but currently we +//are only decompressing zlib data and only need it on the client side. + +//Following function ripped off from R1Q2, then modified to use sizebufs +int ZLibDecompress (sizebuf_t *in, sizebuf_t *out, int wbits) { + z_stream zs; + char *err_summary; + int result; + + memset (&zs, 0, sizeof(zs)); + + + zs.next_in = in->data + in->readcount; + zs.avail_in = 0; + + zs.next_out = out->data + out->cursize; + zs.avail_out = out->maxsize - out->cursize; + + result = inflateInit2(&zs, wbits); + if (result != Z_OK) + { + switch (result) + { + default: err_summary = "unknown"; break; + case Z_MEM_ERROR: err_summary = "system memory exhausted"; break; + case Z_STREAM_ERROR: err_summary = "invalid z_stream"; break; + case Z_VERSION_ERROR: err_summary = "incompatible zlib version"; break; + } + Com_Printf ("ZLib data error! Error %d on inflateInit.\nMessage: %s\n", result, zs.msg); + return 0; + } + + zs.avail_in = in->cursize; + + result = inflate(&zs, Z_FINISH); + if (result != Z_STREAM_END) + { + switch (result) + { + default: err_summary = "unknown"; break; + case Z_STREAM_END: err_summary = "premature end of stream"; break; + case Z_NEED_DICT: err_summary = "missing preset dictionary"; break; + case Z_STREAM_ERROR: err_summary = "invalid z_stream"; break; + case Z_DATA_ERROR: err_summary = "corrupted data"; break; + case Z_BUF_ERROR: err_summary = "too much compressed data"; break; + case Z_OK: err_summary = "shouldn't happen with Z_FINISH"; break; + } + Com_Printf ("ZLib data error! Error %d (%s) on inflate.\nMessage: %s\n", result, err_summary, zs.msg); + return 0; + } + + result = inflateEnd(&zs); + if (result != Z_OK) + { + switch (result) + { + default: err_summary = "unknown"; break; + case Z_STREAM_ERROR: err_summary = "invalid z_stream"; break; + case Z_DATA_ERROR: err_summary = "prematurely freed z_stream"; break; + } + Com_Printf ("ZLib data error! Error %d (%s) on inflateEnd.\nMessage: %s\n", result, err_summary, zs.msg); + return 0; + } + + return zs.total_out; +} +#endif //HAVE_ZLIB + +void qdecompress (sizebuf_t *src, sizebuf_t *dst, int type){ + int newsize = 0; + + switch (type) { +#ifdef HAVE_ZLIB + case compression_zlib_raw: + //raw DEFLATE data, no header/trailer + newsize = ZLibDecompress (src, dst, -15); + break; +#endif +#if 0 + case compression_lzo: + newsize = LzoDecompress (src, dst); + break; +#endif +#ifdef HAVE_ZLIB + case compression_zlib_header: + //automatically detect gzip/zlib header/trailer + newsize = ZLibDecompress (src, dst, 47); + break; +#endif + } + + if ( newsize == 0) + dst->cursize = 0; + else + dst->cursize += newsize; + +} + + + diff -Nru alien-arena-7.53+dfsg/source/qcommon/cvar.c alien-arena-7.66+dfsg/source/qcommon/cvar.c --- alien-arena-7.53+dfsg/source/qcommon/cvar.c 2011-08-24 03:06:44.000000000 +0000 +++ alien-arena-7.66+dfsg/source/qcommon/cvar.c 2013-06-22 20:07:36.000000000 +0000 @@ -32,7 +32,7 @@ Cvar_InfoValidate ============ */ -static qboolean Cvar_InfoValidate (char *s) +static qboolean Cvar_InfoValidate (const char *s) { if (strstr (s, "\\")) return false; @@ -48,7 +48,7 @@ Cvar_FindVar ============ */ -static cvar_t *Cvar_FindVar (char *var_name) +static cvar_t *Cvar_FindVar (const char *var_name) { cvar_t *var; unsigned int i, hash_key; @@ -66,7 +66,7 @@ Cvar_VariableValue ============ */ -float Cvar_VariableValue (char *var_name) +float Cvar_VariableValue (const char *var_name) { cvar_t *var; @@ -82,7 +82,7 @@ Cvar_VariableString ============ */ -char *Cvar_VariableString (char *var_name) +char *Cvar_VariableString (const char *var_name) { cvar_t *var; @@ -98,7 +98,7 @@ Cvar_CompleteVariable ============ */ -char *Cvar_CompleteVariable (char *partial) +char *Cvar_CompleteVariable (const char *partial) { cvar_t *cvar; int len, i; @@ -130,7 +130,7 @@ Creates a new variable's record ============ */ -inline static cvar_t *Cvar_Allocate(char *var_name, char *var_value, int flags, unsigned int hash_key) +inline static cvar_t *Cvar_Allocate(const char *var_name, const char *var_value, int flags, unsigned int hash_key) { cvar_t *nvar; @@ -143,6 +143,7 @@ nvar->integer = atoi (nvar->string); nvar->flags = flags; nvar->hash_key = hash_key; + nvar->description = NULL; return nvar; } @@ -150,12 +151,31 @@ /* ============ +Anon_Cvar_Allocate + +Initializes a new cvar struct holding just a value, with no name in it. +Used in some places where a weak-typed variable is needed. +============ +*/ +void Anon_Cvar_Set(cvar_t *nvar, const char *var_value) +{ + if (nvar->string) + Z_Free (nvar->string); + nvar->string = CopyString (var_value); + nvar->value = atof (nvar->string); + nvar->default_value = atof (nvar->string); + nvar->integer = atoi (nvar->string); +} + + +/* +============ Cvar_AddBetween Adds a variable between two others. ============ */ -inline static cvar_t *Cvar_AddBetween(char *var_name, char *var_value, int flags, unsigned int hash_key,cvar_t **prev, cvar_t *next) +inline static cvar_t *Cvar_AddBetween(const char *var_name, const char *var_value, int flags, unsigned int hash_key,cvar_t **prev, cvar_t *next) { cvar_t *nvar; @@ -191,7 +211,7 @@ The flags will be or'ed in if the variable exists. ============ */ -cvar_t *Cvar_Get (char *var_name, char *var_value, int flags) +cvar_t *Cvar_Get (const char *var_name, const char *var_value, int flags) { cvar_t *var, **prev; unsigned int i, hash_key; @@ -236,7 +256,7 @@ ============ */ inline static qboolean Cvar_FindOrCreate ( - char *var_name, char *var_value, int flags, cvar_t **found) + const char *var_name, const char *var_value, int flags, cvar_t **found) { cvar_t *var, **prev; unsigned int i, hash_key; @@ -265,7 +285,7 @@ Cvar_Set2 ============ */ -cvar_t *Cvar_Set2 (char *var_name, char *value, qboolean force) +cvar_t *Cvar_Set2 (const char *var_name, const char *value, qboolean force) { cvar_t *var; @@ -355,7 +375,7 @@ Cvar_ForceSet ============ */ -cvar_t *Cvar_ForceSet (char *var_name, char *value) +cvar_t *Cvar_ForceSet (const char *var_name, const char *value) { return Cvar_Set2 (var_name, value, true); } @@ -365,9 +385,9 @@ Cvar_Set ============ */ -cvar_t *Cvar_Set (char *var_name, char *value) +void Cvar_Set (const char *var_name, const char *value) { - return Cvar_Set2 (var_name, value, false); + (void)Cvar_Set2 (var_name, value, false); } /* @@ -375,12 +395,12 @@ Cvar_FullSet ============ */ -cvar_t *Cvar_FullSet (char *var_name, char *value, int flags) +void Cvar_FullSet (const char *var_name, const char *value, int flags) { cvar_t *var; if (!Cvar_FindOrCreate (var_name, value, flags, &var)) - return var; + return; var->modified = true; @@ -394,8 +414,6 @@ var->default_value = var->value; var->integer = atoi(var->string); var->flags = flags; - - return var; } /* @@ -403,7 +421,7 @@ Cvar_SetValue ============ */ -void Cvar_SetValue (char *var_name, float value) +void Cvar_SetValue (const char *var_name, float value) { char val[32]; @@ -545,6 +563,7 @@ ============ Cvar_List_f +List all cvars, also displaying their documentation if appropriate ============ */ void Cvar_List_f (void) @@ -574,11 +593,84 @@ Com_Printf ("L"); else Com_Printf (" "); - Com_Printf (" %s \"%s\"\n", var->name, var->string); + Com_Printf (" %s \"%s\"", var->name, var->string); + if (var->description) + Com_Printf (" - %s", var->description); + Com_Printf ("\n"); } Com_Printf ("%i cvars\n", i); } +/* +============ +Cvar_Help_f + +If the cvar exists, display its current value and documentation +============ +*/ +void Cvar_Help_f (void) +{ + cvar_t *var; + char *var_name; + int flags; + + if (Cmd_Argc() != 2) + { + Com_Printf ("Usage: help \n"); + Com_Printf ("Displays the cvar's type, value, and help string if present.\n"); + return; + } + + var_name = Cmd_Argv(1); + var = Cvar_Get (var_name, 0, 0); + + if (var == NULL) + { + Com_Printf ("Nonexistant cvar \"%s\"\n", var_name); + return; + } + + Com_Printf ("Name: \"%s\"\n", var_name); + + flags = var->flags; + if (flags != 0) + { + Com_Printf ("Type: "); + +#define HANDLE_FLAG(flag,str)\ + if (flags & (flag))\ + {\ + Com_Printf (str);\ + flags &= ~(flag);\ + if (flags != 0) \ + Com_Printf (", ");\ + } + + HANDLE_FLAG (CVAR_ARCHIVE, "saved in config.cfg"); + HANDLE_FLAG (CVAR_USERINFO, "player setting"); + HANDLE_FLAG (CVAR_SERVERINFO, "server setting"); + HANDLE_FLAG (CVAR_NOSET, "can be set only at the command line"); + HANDLE_FLAG (CVAR_LATCH, "changes not applied until next game"); + HANDLE_FLAG (CVAR_ROM, "read-only"); + HANDLE_FLAG (CVAR_GAMEINFO, "gameplay setting"); + HANDLE_FLAG (CVAR_PROFILE, "saved in profile.cfg"); + + // Usually, at most one of these will be set. + HANDLE_FLAG (CVARDOC_BOOL, "0 for disabled, nonzero for enabled"); + HANDLE_FLAG (CVARDOC_STR, "not a number"); + HANDLE_FLAG (CVARDOC_FLOAT, "floating-point number"); + HANDLE_FLAG (CVARDOC_INT, "integer"); + +#undef HANDLE_FLAG + + Com_Printf ("\n"); + } + + Com_Printf ("Value: \"%s\"\n", var->string); + + if (var->description != NULL) + Com_Printf ("Description: %s\n", var->description); +} qboolean userinfo_modified; @@ -648,6 +740,27 @@ return info; } +void Cvar_Describe(cvar_t *var, const char *description_string) +{ + if (var == NULL) + return; + if (var->description != NULL) + Z_Free (var->description); + if (description_string == NULL) + var->description = NULL; + else + var->description = CopyString (description_string); +} + +void Cvar_Describe_ByName(const char *var_name, const char *description_string) +{ + cvar_t *var; + if (var_name == NULL) + return; + var = Cvar_Get (var_name, 0, 0); + Cvar_Describe (var, description_string); +} + /* ============ Cvar_Init @@ -659,5 +772,6 @@ { Cmd_AddCommand ("set", Cvar_Set_f); Cmd_AddCommand ("cvarlist", Cvar_List_f); + Cmd_AddCommand ("help", Cvar_Help_f); } diff -Nru alien-arena-7.53+dfsg/source/qcommon/files.c alien-arena-7.66+dfsg/source/qcommon/files.c --- alien-arena-7.53+dfsg/source/qcommon/files.c 2011-03-05 03:23:48.000000000 +0000 +++ alien-arena-7.66+dfsg/source/qcommon/files.c 2013-06-22 20:07:36.000000000 +0000 @@ -137,6 +137,10 @@ #include #endif +#if defined HAVE_ZLIB +# include +#endif + #include #include "qcommon.h" @@ -163,9 +167,10 @@ #define BOT_SEARCH_SLOTS 3 char fs_botsearch[BOT_SEARCH_SLOTS][MAX_OSPATH]; -/** \brief Initialize paths: data1, arena, botinfo, etc. +/** + * @brief Initialize paths: data1, arena, botinfo, etc. * - * \note This gets executed after command line "+set" commands are executed + * @note This gets executed after command line "+set" commands are executed * the first time. But, before any other commands from command line * or .cfg files are executed. */ @@ -269,16 +274,9 @@ } else { // was empty, set to "arena" -#if 0 - // this can't be right because it could recurse back here - fs_gamedirvar = Cvar_ForceSet("game", GAME_GAMEDATA ); - Com_sprintf( game_gamedata, sizeof(game_gamedata), "%s/%s", - fs_datadir, GAME_GAMEDATA ); -#else fs_gamedirvar = Cvar_ForceSet("gamedir", GAME_GAMEDATA ); Com_sprintf( game_gamedata, sizeof(game_gamedata), "%s/%s", fs_datadir, GAME_GAMEDATA ); -#endif } // set path for "botinfo" @@ -477,8 +475,11 @@ Given a relative path to a file search for the file in the installation-dependent filesystem hierarchy if found, return true, with the constructed full path - otherwise, return false, with a constructed writeable full path + otherwise return false, with full_path set to zero-length string +Corrected 2012-11, was: + otherwise, return false, with a constructed writeable full path + (which clearly it might not, and could not do). === */ qboolean FS_FullPath( char *full_path, size_t pathsize, const char *relative_path ) @@ -487,6 +488,8 @@ char * to_search; qboolean found = false; + *full_path = 0; + if ( strlen( relative_path ) >= MAX_QPATH ) { Com_DPrintf("FS_FullPath: relative path size error: %s\n", relative_path ); @@ -750,6 +753,76 @@ } /* +============ +FS_LoadFile_TryStatic + +Given relative path, and assuming statbuffer is already allocated with at +least statbuffer_len bytes, + if buffer or statbuffer arg is NULL, just return the file length. Otherwise, + If the file length is less than statbuffer_len, load file contents into it + and return it in the buffer output pointer. Otherwise, + Z_malloc a buffer, read the file into it, return pointer to the new + buffer. + +This is a variation on FS_LoadFile which attempts to reduce needless dynamic +memory allocations, by using a static buffer when possible. + +The calling function is responsible for comparing the value of *buffer with +statbuffer, and determining whether or not to use FS_FreeFile on it. +============ +*/ +int FS_LoadFile_TryStatic (char *path, void **buffer, void *statbuffer, size_t statbuffer_len) +{ + FILE *h; + byte *buf = NULL; + int len; + char lc_path[MAX_OSPATH]; + + len = FS_FOpenFile (path, &h); + + //-JR + if (!h) + { + Q_strncpyz2( lc_path, FS_TolowerPath( path ), sizeof(lc_path) ); + if ( strcmp( path, lc_path ) ) + { // lowercase conversion changed something + len = FS_FOpenFile( lc_path, &h); + } + } + + if (!h) + { + if (buffer) + *buffer = NULL; + return -1; + } + + if (buffer == NULL || statbuffer == NULL || statbuffer_len == 0) + { + FS_FCloseFile (h); + return len; + } + + if (statbuffer_len > len) + { + memset (statbuffer, 0, statbuffer_len); + buf = statbuffer; + } + else + { + buf = Z_Malloc(len+1); + } + buf[len] = 0; + *buffer = buf; + + FS_Read (buf, len, h); + + FS_FCloseFile (h); + + return len; +} + +/* ============= FS_FreeFile ============= @@ -840,10 +913,10 @@ Cbuf_AddText ("vid_restart\nsnd_restart\n"); } + // note: FullSet triggers sending info to client if ( !strcmp( dir, BASE_GAMEDATA ) || ( *dir == 0 ) ) - { + { // either "data1" or "", set to empty string. Cvar_FullSet ("gamedir", "", CVAR_SERVERINFO|CVAR_NOSET); - Cvar_FullSet ("game", "", CVAR_LATCH|CVAR_SERVERINFO); } else { @@ -936,6 +1009,7 @@ int tmpnfiles; /* Temp number of files. */ char **tmplist; /* Temporary list of files. */ char **list; /* List of files found. */ + char **new_list; char path[MAX_OSPATH]; /* Temporary path. */ int s; @@ -949,7 +1023,13 @@ if (tmplist != NULL) { nfiles += tmpnfiles; - list = realloc(list, nfiles * sizeof(char *)); + new_list = realloc(list, nfiles * sizeof(char *)); + if (new_list == NULL) { + FS_FreeFileList (tmplist, tmpnfiles); + Com_Printf ("WARN: SYSTEM MEMORY EXHAUSTION!\n"); + break; + } + list = new_list; for (i = 0, j = nfiles - tmpnfiles; i < tmpnfiles; i++, j++) { // copy from full path to relative path list[j] = strdup( tmplist[i] + strlen( fs_gamesearch[s] ) + 1 ); @@ -987,7 +1067,13 @@ if (nfiles > 0) { nfiles++; - list = realloc(list, nfiles * sizeof(char *)); + new_list = realloc(list, nfiles * sizeof(char *)); + if (new_list == NULL) { + Com_Printf ("WARN: SYSTEM MEMORY EXHAUSTION!\n"); + nfiles--; // convert previous entry into a guard + } else { + list = new_list; + } list[nfiles - 1] = NULL; } else { @@ -1153,4 +1239,8 @@ FS_CreatePath( dummy_path ); #endif +#if defined HAVE_ZLIB && !defined DEDICATED_ONLY + Com_Printf("using zlib version %s\n", zlibVersion() ); +#endif + } diff -Nru alien-arena-7.53+dfsg/source/qcommon/pmove.c alien-arena-7.66+dfsg/source/qcommon/pmove.c --- alien-arena-7.53+dfsg/source/qcommon/pmove.c 2011-07-14 03:52:59.000000000 +0000 +++ alien-arena-7.66+dfsg/source/qcommon/pmove.c 2013-06-22 20:07:36.000000000 +0000 @@ -29,6 +29,8 @@ #define STEPSIZE 18 extern cvar_t *sv_joustmode; +extern cvar_t *sv_tactical; +extern cvar_t *sv_excessive; // all of the locals will be zeroed before each // pmove, just to make damn sure we don't have @@ -543,6 +545,13 @@ float wishspeed; vec3_t wishdir; + if(sv_tactical->value) + pm_maxspeed = 200; + else if(sv_excessive->value) + pm_maxspeed = 450; + else + pm_maxspeed = remoteserver_runspeed; + // // user intentions // @@ -587,6 +596,13 @@ float wishspeed; float maxspeed; + if(sv_tactical->value) + pm_maxspeed = 200; + else if(sv_excessive->value) + pm_maxspeed = 450; + else + pm_maxspeed = remoteserver_runspeed; + fmove = pm->cmd.forwardmove; smove = pm->cmd.sidemove; @@ -789,6 +805,9 @@ if(sv_joustmode->value) jousting = true; + + if (remoteserver_jousting) + jousting = true; // if (pm->s.pm_flags & PMF_TIME_LAND) // { // hasn't been long enough since landing to jump again @@ -909,6 +928,13 @@ vec3_t end; trace_t trace; + if(sv_tactical->value) + pm_maxspeed = 200; + else if(sv_excessive->value) + pm_maxspeed = 450; + else + pm_maxspeed = remoteserver_runspeed; + pm->viewheight = 22; // friction @@ -1033,7 +1059,7 @@ if (pm->s.pm_flags & PMF_DUCKED) { - pm->maxs[2] = 4; + pm->maxs[2] = 20; pm->viewheight = -2; } else @@ -1100,7 +1126,7 @@ { int sign[3]; int i, j, bits; - short base[3]; + int base[3]; // try all single bits first static int jitterbits[8] = {0,4,1,2,3,5,6,7}; @@ -1186,7 +1212,7 @@ void PM_InitialSnapPosition(void) { int x, y, z; - short base[3]; + int base[3]; static int offset[3] = { 0, -1, 1 }; VectorCopy (pm->s.origin, base); diff -Nru alien-arena-7.53+dfsg/source/qcommon/qcommon.h alien-arena-7.66+dfsg/source/qcommon/qcommon.h --- alien-arena-7.53+dfsg/source/qcommon/qcommon.h 2011-10-10 22:40:49.000000000 +0000 +++ alien-arena-7.66+dfsg/source/qcommon/qcommon.h 2013-08-19 03:26:16.000000000 +0000 @@ -25,7 +25,7 @@ #include "game/q_shared.h" #if !defined VERSION -#define VERSION "7.45" +#define VERSION "7.66" #endif /* ---- Default locations of game data ---*/ @@ -33,7 +33,7 @@ #define BASE_GAMEDATA "data1" #endif -#if !defined MOD_GAMEDATA +#if !defined GAME_GAMEDATA #define GAME_GAMEDATA "arena" #endif @@ -49,7 +49,6 @@ #define MENU_STATIC_WIDTH 720.0f -#define MENU_FONT_SIZE 12 #define DEFAULTMODEL "martianenforcer" #define DEFAULTSKIN "default" @@ -150,6 +149,7 @@ int MSG_ReadByte (sizebuf_t *sb); int MSG_ReadShort (sizebuf_t *sb); int MSG_ReadLong (sizebuf_t *sb); +int MSG_ReadSizeInt (sizebuf_t *msg_read, int bytes); float MSG_ReadFloat (sizebuf_t *sb); char *MSG_ReadString (sizebuf_t *sb); char *MSG_ReadStringLine (sizebuf_t *sb); @@ -187,7 +187,7 @@ void COM_Init (void); void COM_InitArgv (int argc, char **argv); -char *CopyString (char *in); +char *CopyString (const char *in); //============================================================================ @@ -500,55 +500,68 @@ extern cvar_t *cvar_vars; -cvar_t *Cvar_Get (char *var_name, char *value, int flags); -// creates the variable if it doesn't exist, or returns the existing one -// if it exists, the value will not be changed, but flags will be ORed in -// that allows variables to be unarchived without needing bitflags +// Creates the variable if it doesn't exist, or returns the existing one +// if it exists, the value will not be changed, but flags will be ORed in. +// That allows variables to be unarchived without needing bitflags. NOTE: the +// value and name strings are copied, so you don't need to keep track of any +// strings you use with this function. +cvar_t *Cvar_Get (const char *var_name, const char *value, int flags); -cvar_t *Cvar_Set (char *var_name, char *value); // will create the variable if it doesn't exist +void Cvar_Set (const char *var_name, const char *value); -cvar_t *Cvar_ForceSet (char *var_name, char *value); // will set the variable even if NOSET or LATCH +cvar_t *Cvar_ForceSet (const char *var_name, const char *value); -cvar_t *Cvar_FullSet (char *var_name, char *value, int flags); +void Cvar_FullSet (const char *var_name, const char *value, int flags); -void Cvar_SetValue (char *var_name, float value); // expands value to a string and calls Cvar_Set +void Cvar_SetValue (const char *var_name, float value); -float Cvar_VariableValue (char *var_name); // returns 0 if not defined or non numeric +float Cvar_VariableValue (const char *var_name); -char *Cvar_VariableString (char *var_name); // returns an empty string if not defined +char *Cvar_VariableString (const char *var_name); -char *Cvar_CompleteVariable (char *partial); // attempts to match a partial variable name for command line completion // returns NULL if nothing fits +char *Cvar_CompleteVariable (const char *partial); -void Cvar_GetLatchedVars (void); // any CVAR_LATCHED variables that have been set will now take effect +void Cvar_GetLatchedVars (void); -qboolean Cvar_Command (void); // called by Cmd_ExecuteString when Cmd_Argv(0) doesn't match a known // command. Returns true if the command was a variable reference that // was handled. (print or change) +qboolean Cvar_Command (void); -void Cvar_WriteVariables (char *path); // appends lines containing "set variable value" for all variables // with the archive flag set to true. +void Cvar_WriteVariables (char *path); +// setup the cvar subsystem and related console commands void Cvar_Init (void); -char *Cvar_Userinfo (void); // returns an info string containing all the CVAR_USERINFO cvars +char *Cvar_Userinfo (void); -char *Cvar_Serverinfo (void); // returns an info string containing all the CVAR_SERVERINFO cvars +char *Cvar_Serverinfo (void); + +// Initializes a new cvar struct holding just a value, with no name in it. +// Used in some places where a weak-typed variable is needed. +void Anon_Cvar_Set(cvar_t *nvar, const char *var_value); + +// Copies the description string into the cvar. Useful for documenting cvars. +// The description string is copied, so it need not be kept in memory for the +// life of the cvar. +void Cvar_Describe(cvar_t *var, const char *description_string); +void Cvar_Describe_ByName(const char *var_name, const char *description_string); -extern qboolean userinfo_modified; // this is set each time a CVAR_USERINFO variable is changed // so that the client knows to send it to the server +extern qboolean userinfo_modified; /* ============================================================== @@ -576,7 +589,7 @@ byte ip[4]; byte ipx[10]; - unsigned short port; + unsigned short port; /* network byte order (bigendian) */ } netadr_t; void NET_Init (void); @@ -711,6 +724,10 @@ void CM_WritePortalState (FILE *f); void CM_ReadPortalState (FILE *f); +qboolean CM_inPVS (vec3_t p1, vec3_t p2); +qboolean CM_inPVS_leafs (int leafnum1, int leafnum2); +qboolean CM_inPHS (vec3_t p1, vec3_t p2); + extern char map_name[MAX_QPATH]; /* @@ -724,6 +741,8 @@ */ extern float pm_airaccelerate; +qboolean remoteserver_jousting; +int remoteserver_runspeed; void Pmove (pmove_t *pmove); @@ -751,9 +770,7 @@ // note: this can't be called from another DLL, due to MS libc issues int FS_LoadFile (char *path, void **buffer); -int FS_LoadFileZ (const char *path, void **buffer); // jit - null-terminated -// a null buffer will just return the file length without loading -// a -1 length is not present +int FS_LoadFile_TryStatic (char *path, void **buffer, void *statbuffer, size_t statbuffer_len); void FS_Read (void *buffer, int len, FILE *f); // properly handles partial reads @@ -810,6 +827,7 @@ extern cvar_t *developer; extern cvar_t *dedicated; extern cvar_t *host_speeds; + extern cvar_t *log_stats; extern FILE *log_stats_file; @@ -833,11 +851,13 @@ extern vec3_t bytedirs[NUMVERTEXNORMALS]; // this is in the client code, but can be used for debugging from server -void SCR_DebugGraph (float value, int color); +void SCR_DebugGraph (float value, const float color[]); //used for render effect void CL_GlassShards(vec3_t org, vec3_t dir, int count); +#define static_array_size(array) (sizeof(array)/sizeof((array)[0])) + /* ============================================================== @@ -884,6 +904,12 @@ void SV_Shutdown (char *finalmsg, qboolean reconnect); void SV_Frame (int msec); + +// +// compression +// +void qdecompress (sizebuf_t *src, sizebuf_t *dst, int type); + #endif /* Q_COMMON_H_ */ diff -Nru alien-arena-7.53+dfsg/source/qcommon/qfiles.h alien-arena-7.66+dfsg/source/qcommon/qfiles.h --- alien-arena-7.53+dfsg/source/qcommon/qfiles.h 2009-02-24 19:23:48.000000000 +0000 +++ alien-arena-7.66+dfsg/source/qcommon/qfiles.h 2013-06-22 20:07:36.000000000 +0000 @@ -267,6 +267,8 @@ lump_t lumps[HEADER_LUMPS]; } dheader_t; +qboolean checkLumps (lump_t *l, size_t header_size, int *lump_order, void *_file_base, int num_lumps, int file_len); + typedef struct { float mins[3], maxs[3]; @@ -354,9 +356,12 @@ #define SURF_TRANS66 0x20 #define SURF_FLOWING 0x40 // scroll towards angle #define SURF_NODRAW 0x80 // don't bother referencing the texture - - - +#define SURF_BLOOD 0x400 // dripping blood surface +#define SURF_WATER 0x800 // dripping water surface +#define SURF_SHINY 0x1000 // shiny wet surface +#define SURF_UNDERWATER 0x2000 // reflecting ripples; applied automatically + // to underwater surfs but could be applied + // manually as well typedef struct { @@ -460,3 +465,65 @@ int numareaportals; int firstareaportal; } darea_t; + +// FOR REFINE + +#define MAX_OVERRIDE_LIGHTING 0x6000000 //2048*2048*8*3 + +// little-endian "LTMP" for "lightmap" +#define IDLIGHTMAPHEADER (('P'<<24)+('M'<<16)+('T'<<8)+'L') +// Increase this number whenever incompatible changes are made to the file +// format +#define LTMPVERSION 2 +// Increase this number whenever backwards-compatible changes are made to the +// file format +#define LTMPVERSION_MINOR 0 + +#define LTMP_LUMP_FACELOOKUP 0 +#define LTMP_LUMP_LIGHTING 1 +#define LTMP_LUMPS 2 + +// Each override has its own pixel format. Currently, the only one is 24-bit +// RGB, but we may eventually add S3TC/ASTC formats as well. +#define LTMP_PIXFMT_RGB24 0 +#define LTMP_NUM_SUPPORTED_PIXFMTS 1 + +// Current versions of the client will refuse to open lightmap files with more +// data than this. However, current versions of the map compiler will refuse +// to create files anywhere near this big, and the client has other, stricter +// restrictions on how much lightmap data it will actually use. +#define LTMP_MAX_UNCOMPRESSED_DATA (\ + sizeof(lightmapheader_t)+\ + sizeof(ltmp_facelookup_t)*MAX_MAP_FACES*4+\ + MAX_OVERRIDE_LIGHTING*4+16\ +) + +typedef struct +{ + int ident; + int version; + int version_minor; + lump_t lumps[LTMP_LUMPS]; +} lightmapheader_t; + +// There may be zero or more of these for each surface (maximum total number +// of these is four times the maximum number of surfaces.) The client is +// responsible for picking which if any to use for each surface. Current +// behavior of the client is to skip any pixel formats it doesn't understand, +// and otherwise pick the last one in the list for each surface. However, that +// behavior may change arbitrarily in the future. +typedef struct +{ + int offset; // an offset in LTMP_LUMP_LIGHTING, starting at 1 + int facenum; // the face being overridden by this entry, + // starting at 0 + int format; // currently only LTMP_PIXFMT_RGB24 + // qrad3 may output different hights/widths for each face at some point in + // the future + int width; // width in pixels + int height; // height in pixels + // qrad3 may output heights scaled differently from widths at some point + // in the future + float xscale; // xscale in game units per lightmap pixel + float yscale; // yscale in game units per lightmap pixel +} ltmp_facelookup_t; diff -Nru alien-arena-7.53+dfsg/source/ref_gl/glext.h alien-arena-7.66+dfsg/source/ref_gl/glext.h --- alien-arena-7.53+dfsg/source/ref_gl/glext.h 2010-09-20 20:10:02.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/glext.h 2013-06-22 20:07:35.000000000 +0000 @@ -5694,6 +5694,7 @@ typedef void (APIENTRYP PFNGLUNIFORMMATRIX2FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLUNIFORMMATRIX4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERFVARBPROC) (GLhandleARB obj, GLenum pname, GLfloat *params); typedef void (APIENTRYP PFNGLGETOBJECTPARAMETERIVARBPROC) (GLhandleARB obj, GLenum pname, GLint *params); typedef void (APIENTRYP PFNGLGETINFOLOGARBPROC) (GLhandleARB obj, GLsizei maxLength, GLsizei *length, GLcharARB *infoLog); diff -Nru alien-arena-7.53+dfsg/source/ref_gl/qgl.h alien-arena-7.66+dfsg/source/ref_gl/qgl.h --- alien-arena-7.53+dfsg/source/ref_gl/qgl.h 2011-10-26 04:31:57.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/qgl.h 2013-06-22 20:07:35.000000000 +0000 @@ -108,6 +108,7 @@ extern void ( APIENTRY * qglDrawArrays )(GLenum mode, GLint first, GLsizei count); extern void ( APIENTRY * qglDrawBuffer )(GLenum mode); extern void ( APIENTRY * qglDrawElements )(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); +extern void ( APIENTRY * qglDrawRangeElements )(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); extern void ( APIENTRY * qglDrawPixels )(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); extern void ( APIENTRY * qglEdgeFlag )(GLboolean flag); extern void ( APIENTRY * qglEdgeFlagPointer )(GLsizei stride, const GLvoid *pointer); @@ -488,6 +489,7 @@ typedef void (APIENTRY * PFNGLUNIFORM1IARBPROC) (GLint location, GLint v0); typedef void (APIENTRY * PFNGLUNIFORM1FARBPROC) (GLint location, GLfloat v0); typedef void (APIENTRY * PFNGLUNIFORMMATRIX3FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, GLfloat [3][3]); +typedef void (APIENTRY * PFNGLUNIFORMMATRIX3X4FVPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); typedef void (APIENTRY * PFNGLVERTEXATTRIBPOINTERARBPROC) (GLuint, GLint, GLenum, GLboolean, GLsizei, const GLvoid *); typedef void (APIENTRY * PFNGLENABLEVERTEXATTRIBARRAYARBPROC) (GLuint); typedef void (APIENTRY * PFNGLBINDATTRIBLOCATIONARBPROC) (GLhandleARB programObj, GLuint index, const GLcharARB *name); @@ -711,7 +713,7 @@ extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB; extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB; extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB; -extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB; +extern PFNGLCOMPILESHADERPROC glCompileShader; extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB; extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB; extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB; @@ -722,6 +724,10 @@ extern PFNGLUNIFORM1IARBPROC glUniform1iARB; extern PFNGLUNIFORM1FARBPROC glUniform1fARB; extern PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB; +#ifndef PFNGLUNIFORMMATRIX3X4FVARBPROC //FIXME HACK to get it compiling on Linux +typedef void (APIENTRYP PFNGLUNIFORMMATRIX3X4FVARBPROC) (GLint location, GLsizei count, GLboolean transpose, const GLfloat *value); +#endif +extern PFNGLUNIFORMMATRIX3X4FVARBPROC glUniformMatrix3x4fvARB; extern PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB; extern PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB; extern PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB; diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_bloom.c alien-arena-7.66+dfsg/source/ref_gl/r_bloom.c --- alien-arena-7.53+dfsg/source/ref_gl/r_bloom.c 2011-02-25 20:59:49.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_bloom.c 2013-06-22 20:07:35.000000000 +0000 @@ -67,15 +67,17 @@ cvar_t *r_bloom_sample_size; cvar_t *r_bloom_fast_sample; -image_t *r_bloomscreentexture; +image_t *r_bloomscratchtexture; image_t *r_bloomeffecttexture; -image_t *r_bloombackuptexture; -image_t *r_bloomdownsamplingtexture; +image_t *r_midsizetexture; +static GLuint bloomscratchFBO, midsizeFBO, bloomeffectFBO; +static GLuint bloom_fullsize_downsampling_rbo_FBO; +static GLuint bloom_fullsize_downsampling_RBO; -static int r_screendownsamplingtexture_size; +static int r_midsizetexture_size; static int screen_texture_width, screen_texture_height; -static int r_screenbackuptexture_width, r_screenbackuptexture_height; +GLint MultiSampleEnabled = 0; //1 if MSAA is enabled //current refdef size: static int curView_x; @@ -83,64 +85,89 @@ static int curView_width; static int curView_height; -//texture coordinates of screen data inside screentexture -static float screenText_tcw; -static float screenText_tch; - -static int sample_width; -static int sample_height; - -//texture coordinates of adjusted textures -static float sampleText_tcw; -static float sampleText_tch; - -//this macro is in sample size workspace coordinates -#define R_Bloom_SamplePass( xpos, ypos ) \ - qglBegin(GL_QUADS); \ - qglTexCoord2f( 0, sampleText_tch); \ - qglVertex2f( xpos, ypos); \ - qglTexCoord2f( 0, 0); \ - qglVertex2f( xpos, ypos+sample_height); \ - qglTexCoord2f( sampleText_tcw, 0); \ - qglVertex2f( xpos+sample_width, ypos+sample_height); \ - qglTexCoord2f( sampleText_tcw, sampleText_tch); \ - qglVertex2f( xpos+sample_width, ypos); \ +#define R_Bloom_Quad( x, y, width, height ) \ + qglBegin(GL_QUADS); \ + qglTexCoord2f( 0, 1.0); \ + qglVertex2f( x, y); \ + qglTexCoord2f( 0, 0); \ + qglVertex2f( x, y+height); \ + qglTexCoord2f( 1.0, 0); \ + qglVertex2f( x+width, y+height); \ + qglTexCoord2f( 1.0, 1.0); \ + qglVertex2f( x+width, y); \ qglEnd(); -#define R_Bloom_Quad( x, y, width, height, textwidth, textheight ) \ - qglBegin(GL_QUADS); \ - qglTexCoord2f( 0, textheight); \ - qglVertex2f( x, y); \ - qglTexCoord2f( 0, 0); \ - qglVertex2f( x, y+height); \ - qglTexCoord2f( textwidth, 0); \ - qglVertex2f( x+width, y+height); \ - qglTexCoord2f( textwidth, textheight); \ - qglVertex2f( x+width, y); \ - qglEnd(); +#define R_Bloom_SamplePass( xpos, ypos ) R_Bloom_Quad ( xpos, ypos, BLOOM_SIZE, BLOOM_SIZE) /* ================= -R_Bloom_InitBackUpTexture +R_Bloom_AllocFBOTexture + +Create a 24-bit square texture with specified size and attach it to an FBO ================= */ -void R_Bloom_InitBackUpTexture( int width, int height ) +image_t *R_Bloom_AllocFBOTexture (char *name, int size_side, GLuint *FBO) { byte *data; + int size; + image_t *image; + + size = size_side*size_side*3; + data = malloc (size); + memset (data, 0, size); + + // create the texture + image = GL_FindFreeImage (name, size_side, size_side, it_pic); + GL_Bind (image->texnum); + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); + qglTexImage2D (GL_TEXTURE_2D, 0, GL_RGB, size_side, size_side, 0, GL_RGB, GL_UNSIGNED_BYTE, (byte*)data); + + // create up the FBO + qglGenFramebuffersEXT(1, FBO); + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT,*FBO); + + // bind the texture to it + qglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_TEXTURE_2D, image->texnum, 0); + + // clean up + free (data); + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT,0); + + return image; +} - data = malloc( width * height * 4 ); - memset( data, 0, width * height * 4 ); - r_screenbackuptexture_width = width; - r_screenbackuptexture_height = height; - r_bloombackuptexture = GL_LoadPic( "***r_bloombackuptexture***", (byte *)data, width, height, it_pic, 3 ); +/* +================= +R_Bloom_AllocRBO - free ( data ); +Create a 24-bit square RBO with specified size and attach it to an FBO +================= +*/ +void R_Bloom_AllocRBO (int width, int height, GLuint *RBO, GLuint *FBO) +{ + // create the RBO + qglGenRenderbuffersEXT(1, RBO); + qglBindRenderbufferEXT(GL_RENDERBUFFER_EXT, *RBO); + qglRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_RGB, width, height); + qglBindRenderbufferEXT(GL_RENDERBUFFER_EXT, 0); + + // create up the FBO + qglGenFramebuffersEXT(1, FBO); + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, *FBO); + + // bind the RBO to it + qglFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT, GL_RENDERBUFFER_EXT, *RBO); + + //clean up + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); } + + /* ================= R_Bloom_InitEffectTexture @@ -148,7 +175,6 @@ */ void R_Bloom_InitEffectTexture( void ) { - byte *data; float bloomsizecheck; if( r_bloom_sample_size->integer < 32 ) @@ -173,12 +199,7 @@ if( BLOOM_SIZE != r_bloom_sample_size->integer ) Cvar_SetValue ("r_bloom_sample_size", BLOOM_SIZE); - data = malloc( BLOOM_SIZE * BLOOM_SIZE * 4 ); - memset( data, 0, BLOOM_SIZE * BLOOM_SIZE * 4 ); - - r_bloomeffecttexture = GL_LoadPic( "***r_bloomeffecttexture***", (byte *)data, BLOOM_SIZE, BLOOM_SIZE, it_pic, 3 ); - - free ( data ); + r_bloomeffecttexture = R_Bloom_AllocFBOTexture ("***r_bloomeffecttexture***", BLOOM_SIZE, &bloomeffectFBO); } /* @@ -186,52 +207,43 @@ R_Bloom_InitTextures ================= */ +void checkFBOExtensions (void); void R_Bloom_InitTextures( void ) { - byte *data; - int size; - + if (!gl_state.fbo || !gl_state.hasFBOblit) + { + Com_Printf ("FBO Failed, disabling bloom.\n"); + Cvar_SetValue ("r_bloom", 0); + return; + } + + qglGetError (); + + qglGetIntegerv(GL_SAMPLE_BUFFERS, &MultiSampleEnabled); + //find closer power of 2 to screen size for (screen_texture_width = 1;screen_texture_width < viddef.width;screen_texture_width *= 2); for (screen_texture_height = 1;screen_texture_height < viddef.height;screen_texture_height *= 2); - //disable blooms if we can't handle a texture of that size -/* if( screen_texture_width > gl_config.maxTextureSize || - screen_texture_height > glConfig.maxTextureSize ) { - screen_texture_width = screen_texture_height = 0; - Cvar_SetValue ("r_bloom", 0); - Com_Printf( "WARNING: 'R_InitBloomScreenTexture' too high resolution for Light Bloom. Effect disabled\n" ); - return; - }*/ - - //init the screen texture - size = screen_texture_width * screen_texture_height * 4; - data = malloc( size ); - memset( data, 255, size ); - r_bloomscreentexture = GL_LoadPic( "***r_bloomscreentexture***", (byte *)data, screen_texture_width, screen_texture_height, it_pic, 3 ); - free ( data ); - //validate bloom size and init the bloom effect texture R_Bloom_InitEffectTexture(); + //init the "scratch" texture + r_bloomscratchtexture = R_Bloom_AllocFBOTexture ("***r_bloomscratchtexture***", BLOOM_SIZE, &bloomscratchFBO); + + //init the screen-size RBO + R_Bloom_AllocRBO (viddef.width, viddef.height, &bloom_fullsize_downsampling_RBO, &bloom_fullsize_downsampling_rbo_FBO); + //if screensize is more than 2x the bloom effect texture, set up for stepped downsampling - r_bloomdownsamplingtexture = NULL; - r_screendownsamplingtexture_size = 0; + r_midsizetexture = NULL; + r_midsizetexture_size = 0; if( viddef.width > (BLOOM_SIZE * 2) && !r_bloom_fast_sample->integer ) { - r_screendownsamplingtexture_size = (int)(BLOOM_SIZE * 2); - data = malloc( r_screendownsamplingtexture_size * r_screendownsamplingtexture_size * 4 ); - memset( data, 0, r_screendownsamplingtexture_size * r_screendownsamplingtexture_size * 4 ); - r_bloomdownsamplingtexture = GL_LoadPic( "***r_bloomdownsamplingtexture***", (byte *)data, r_screendownsamplingtexture_size, r_screendownsamplingtexture_size, it_pic, 3 ); - free ( data ); + r_midsizetexture_size = (int)(BLOOM_SIZE * 2); + // mid-size texture + r_midsizetexture = R_Bloom_AllocFBOTexture ("***r_midsizetexture***", r_midsizetexture_size, &midsizeFBO); } - //Init the screen backup texture - if( r_screendownsamplingtexture_size ) - R_Bloom_InitBackUpTexture( r_screendownsamplingtexture_size, r_screendownsamplingtexture_size ); - else - R_Bloom_InitBackUpTexture( BLOOM_SIZE, BLOOM_SIZE ); - } /* @@ -271,13 +283,13 @@ qglColor4f(r_bloom_alpha->value, r_bloom_alpha->value, r_bloom_alpha->value, 1.0f); GL_TexEnv(GL_MODULATE); qglBegin(GL_QUADS); - qglTexCoord2f( 0, sampleText_tch ); + qglTexCoord2f( 0, 1.0 ); qglVertex2f( curView_x, curView_y ); qglTexCoord2f( 0, 0 ); qglVertex2f( curView_x, curView_y + curView_height ); - qglTexCoord2f( sampleText_tcw, 0 ); + qglTexCoord2f( 1.0, 0 ); qglVertex2f( curView_x + curView_width, curView_y + curView_height ); - qglTexCoord2f( sampleText_tcw, sampleText_tch ); + qglTexCoord2f( 1.0, 1.0 ); qglVertex2f( curView_x + curView_width, curView_y ); qglEnd(); @@ -285,98 +297,6 @@ } -#if 0 -/* -================= -R_Bloom_GeneratexCross - alternative bluring method -================= -*/ -void R_Bloom_GeneratexCross( void ) -{ - int i; - static int BLOOM_BLUR_RADIUS = 8; - //static float BLOOM_BLUR_INTENSITY = 2.5f; - float BLOOM_BLUR_INTENSITY; - static float intensity; - static float range; - - //set up sample size workspace - qglViewport( 0, 0, sample_width, sample_height ); - qglMatrixMode( GL_PROJECTION ); - qglLoadIdentity (); - qglOrtho(0, sample_width, sample_height, 0, -10, 100); - qglMatrixMode( GL_MODELVIEW ); - qglLoadIdentity (); - - //copy small scene into r_bloomeffecttexture - GL_Bind(0, r_bloomeffecttexture); - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height); - - //start modifying the small scene corner - qglColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); - qglEnable(GL_BLEND); - - //darkening passes - if( r_bloom_darken->integer ) - { - qglBlendFunc(GL_DST_COLOR, GL_ZERO); - GL_TexEnv(GL_MODULATE); - - for(i=0; iinteger ;i++) { - R_Bloom_SamplePass( 0, 0 ); - } - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height); - } - - //bluring passes - if( BLOOM_BLUR_RADIUS ) { - - qglBlendFunc(GL_ONE, GL_ONE); - - range = (float)BLOOM_BLUR_RADIUS; - - BLOOM_BLUR_INTENSITY = r_bloom_intensity->value; - //diagonal-cross draw 4 passes to add initial smooth - qglColor4f( 0.5f, 0.5f, 0.5f, 1.0); - R_Bloom_SamplePass( 1, 1 ); - R_Bloom_SamplePass( -1, 1 ); - R_Bloom_SamplePass( -1, -1 ); - R_Bloom_SamplePass( 1, -1 ); - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height); - - for(i=-(BLOOM_BLUR_RADIUS+1);itexnum); - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height); //start modifying the small scene corner qglColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); @@ -408,17 +326,18 @@ { qglBlendFunc(GL_DST_COLOR, GL_ZERO); GL_TexEnv(GL_MODULATE); - + for(i=0; iinteger ;i++) { R_Bloom_SamplePass( 0, 0 ); } - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height); + + qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, BLOOM_SIZE, BLOOM_SIZE); } //bluring passes //qglBlendFunc(GL_ONE, GL_ONE); qglBlendFunc(GL_ONE, GL_ONE_MINUS_SRC_COLOR); - + if( r_bloom_diamond_size->integer > 7 || r_bloom_diamond_size->integer <= 3) { if( r_bloom_diamond_size->integer != 8 ) Cvar_SetValue( "r_bloom_diamond_size", 8 ); @@ -456,62 +375,141 @@ } } } - - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, sample_width, sample_height); - + + qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, BLOOM_SIZE, BLOOM_SIZE); + //restore full screen workspace qglViewport( 0, 0, viddef.width, viddef.height ); qglMatrixMode( GL_PROJECTION ); - qglLoadIdentity (); + qglLoadIdentity (); qglOrtho(0, viddef.width, viddef.height, 0, -10, 100); qglMatrixMode( GL_MODELVIEW ); - qglLoadIdentity (); + qglLoadIdentity (); + + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); +} + +/* +================= +R_Bloom_FullsizeRBOUpdate + +This updates the full size RBO from the screen. The whole thing is guaranteed +to be updated 60 times a second, but it does it a 1/4 of the screen at a time +if the framerate is high enough. It does it in horizontal slices instead of +quadrants because that way the GPU doesn't have to skip over part of each row +of pixels. Tearing isn't an issue because it'll just be blurred to mush +anyway. +================= +*/ +void R_Bloom_FullsizeRBOUpdate (void) +{ + static int cur_section = 0; + static int last_time = 0; + int i, num_sections, cur_time; + int y; + + cur_time = Sys_Milliseconds(); + num_sections = (cur_time-last_time+2)/4; + if (num_sections > 4) num_sections = 4; + if (num_sections == 0) return; + + for (i = 0; i < num_sections; i++) + { + y = cur_section*(vid.height/4); + qglBlitFramebufferEXT(0, y, vid.width, y+vid.height/4, 0, y, vid.width, y+vid.height/4, + GL_COLOR_BUFFER_BIT, GL_LINEAR); + cur_section = (cur_section + 1) % 4; + } + last_time = cur_time; } /* ================= R_Bloom_DownsampleView + +Creates a downscaled, blurred version of the screen, leaving it in the +"scratch" and "effect" textures (identical in both.) This function is name is +a bit confusing, because "downsampling" means two things here: + 1) Creating a scaled-down version of an image + 2) Converting a multisampled image to a non-multisampled image the same size, + which is necessary if MSAA is enabled in the graphics driver settings +The function name uses meaning 1. ================= */ void R_Bloom_DownsampleView( void ) { qglDisable( GL_BLEND ); qglColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); - + + GL_SelectTexture (GL_TEXTURE0); + // FIXME: OH FFS this is so stupid: tell the GL_Bind batching mechanism + // that texture unit 0 has been re-bound, as it most certainly has been. + gl_state.currenttextures[gl_state.currenttmu] = -1; + + if (MultiSampleEnabled != 0) + { + // If MSAA is enabled, the FBO blitting needs an extra step. + // Copy onto full-screen sized RBO first, to go from the multisample + // format of the screen to a non-multisampled format. + qglBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, bloom_fullsize_downsampling_rbo_FBO); + R_Bloom_FullsizeRBOUpdate (); + // Set the downsampled RBO as the read framebuffer, then run the rest + // of the code as normal. + qglBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, bloom_fullsize_downsampling_rbo_FBO); + } + //stepped downsample - if( r_screendownsamplingtexture_size ) + if( r_midsizetexture_size ) { - int midsample_width = (r_screendownsamplingtexture_size * sampleText_tcw); - int midsample_height = (r_screendownsamplingtexture_size * sampleText_tch); - - //copy the screen and draw resized - GL_Bind(r_bloomscreentexture->texnum); - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, curView_x, viddef.height - (curView_y + curView_height), curView_width, curView_height); - R_Bloom_Quad( 0, viddef.height-midsample_height, midsample_width, midsample_height, screenText_tcw, screenText_tch ); - - //now copy into Downsampling (mid-sized) texture - GL_Bind(r_bloomdownsamplingtexture->texnum); - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, midsample_width, midsample_height); - - //now draw again in bloom size + // copy into small sized FBO (equivalent to copying into full screen + // sized FBO and then drawing that onto the small sized FBO later.) + qglBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, bloomscratchFBO); + qglBlitFramebufferEXT(0, 0, vid.width, vid.height, 0, 0, BLOOM_SIZE, BLOOM_SIZE, + GL_COLOR_BUFFER_BIT, GL_LINEAR); + // copy into downsampling (mid-sized) FBO + qglBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, midsizeFBO); + qglBlitFramebufferEXT(0, 0, vid.width, vid.height, 0, 0, r_midsizetexture_size, r_midsizetexture_size, + GL_COLOR_BUFFER_BIT, GL_LINEAR); + + + // create the finished downsampled version of the texture by blending + // the small-sized FBO and the mid-sized FBO onto a small-sized FBO, + // hoping it adds some blur. + + // Store first of all in the bloom effect texture, since we don't want + // to draw the scratch texture onto itself. + qglBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, bloomeffectFBO); + + // mid-size + GL_Bind(r_midsizetexture->texnum); qglColor4f( 0.5f, 0.5f, 0.5f, 1.0f ); - R_Bloom_Quad( 0, viddef.height-sample_height, sample_width, sample_height, sampleText_tcw, sampleText_tch ); - - //now blend the big screen texture into the bloom generation space (hoping it adds some blur) + R_Bloom_Quad( 0, viddef.height-BLOOM_SIZE, BLOOM_SIZE, BLOOM_SIZE); + // small-size qglEnable( GL_BLEND ); qglBlendFunc(GL_ONE, GL_ONE); qglColor4f( 0.5f, 0.5f, 0.5f, 1.0f ); - GL_Bind(r_bloomscreentexture->texnum); - R_Bloom_Quad( 0, viddef.height-sample_height, sample_width, sample_height, screenText_tcw, screenText_tch ); + GL_Bind(r_bloomscratchtexture->texnum); + R_Bloom_Quad( 0, viddef.height-BLOOM_SIZE, BLOOM_SIZE, BLOOM_SIZE ); qglColor4f( 1.0f, 1.0f, 1.0f, 1.0f ); qglDisable( GL_BLEND ); - + } else { //downsample simple - GL_Bind(r_bloomscreentexture->texnum); - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, curView_x, viddef.height - (curView_y + curView_height), curView_width, curView_height); - R_Bloom_Quad( 0, viddef.height-sample_height, sample_width, sample_height, screenText_tcw, screenText_tch ); + qglBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, bloomeffectFBO); + qglBlitFramebufferEXT(0, 0, vid.width, vid.height, 0, 0, BLOOM_SIZE, BLOOM_SIZE, + GL_COLOR_BUFFER_BIT, GL_LINEAR); + } + + // Blit the finished downsampled texture onto a second FBO. We end up with + // with two copies, which GenerateDiamonds will take advantage of. + qglBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, bloomscratchFBO); + qglBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, bloomeffectFBO); + qglBlitFramebufferEXT(0, 0, BLOOM_SIZE, BLOOM_SIZE, 0, 0, BLOOM_SIZE, BLOOM_SIZE, + GL_COLOR_BUFFER_BIT, GL_NEAREST); + + qglBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0); + qglBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0); } /* @@ -527,6 +525,10 @@ if( !BLOOM_SIZE ) R_Bloom_InitTextures(); + + // previous function can set this if there's no FBO + if (!r_bloom->integer) + return; if( screen_texture_width < BLOOM_SIZE || screen_texture_height < BLOOM_SIZE ) @@ -536,10 +538,10 @@ qglViewport( 0, 0, viddef.width, viddef.height ); qglDisable( GL_DEPTH_TEST ); qglMatrixMode( GL_PROJECTION ); - qglLoadIdentity (); + qglLoadIdentity (); qglOrtho(0, viddef.width, viddef.height, 0, -10, 100); qglMatrixMode( GL_MODELVIEW ); - qglLoadIdentity (); + qglLoadIdentity (); qglDisable(GL_CULL_FACE); qglDisable( GL_BLEND ); @@ -548,49 +550,22 @@ qglColor4f( 1, 1, 1, 1 ); //set up current sizes + // TODO: get rid of these nasty globals curView_x = fd->x; curView_y = fd->y; curView_width = fd->width; curView_height = fd->height; - screenText_tcw = ((float)curView_width / (float)screen_texture_width); - screenText_tch = ((float)curView_height / (float)screen_texture_height); - if( fd->height > fd->width ) { - sampleText_tcw = ((float)curView_width / (float)curView_height); - sampleText_tch = 1.0f; - } else { - sampleText_tcw = 1.0f; - sampleText_tch = ((float)curView_height / (float)curView_width); - } - sample_width = (BLOOM_SIZE * sampleText_tcw); - sample_height = (BLOOM_SIZE * sampleText_tch); - - - //copy the screen space we'll use to work into the backup texture - GL_Bind(r_bloombackuptexture->texnum); - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, 0, 0, 0, 0, r_screenbackuptexture_width, r_screenbackuptexture_height ); //create the bloom image R_Bloom_DownsampleView(); R_Bloom_GeneratexDiamonds(); - //R_Bloom_GeneratexCross(); - - //restore the screen-backup to the screen - qglDisable(GL_BLEND); - GL_Bind(r_bloombackuptexture->texnum); - qglColor4f( 1, 1, 1, 1 ); - R_Bloom_Quad( 0, - viddef.height - r_screenbackuptexture_height, - r_screenbackuptexture_width, - r_screenbackuptexture_height, - 1.0, - 1.0 ); R_Bloom_DrawEffect(); qglColor3f (1,1,1); - qglDisable (GL_BLEND); - qglEnable (GL_TEXTURE_2D); - qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - qglDepthMask (1); + qglDisable (GL_BLEND); + qglEnable (GL_TEXTURE_2D); + qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + qglDepthMask (1); } diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_bmfont.c alien-arena-7.66+dfsg/source/ref_gl/r_bmfont.c --- alien-arena-7.53+dfsg/source/ref_gl/r_bmfont.c 2010-12-07 06:50:13.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_bmfont.c 1970-01-01 00:00:00.000000000 +0000 @@ -1,617 +0,0 @@ -/* -Copyright (C) 2010 COR Entertainment, LLC. - -This program 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. - -This program 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 this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ - -/* r_bmfont.c - * - * Displays text using bitmap fonts loaded from pictures. - * This code is meant to replace the old Draw_*Char routines and the various - * parts of the code that use them. - */ - -#ifdef HAVE_CONFIG_H -# include "config.h" -#endif - -#include "r_local.h" -#include "r_text.h" -#include "r_bmfont.h" - - -/***************************************************************************** - * LOCAL FUNCTIONS ENCAPSULATED BY FONT/FACE STRUCTURES * - *****************************************************************************/ - -/* Destroy a bitmap font face */ -static void _BMF_DestroyFace( FNT_face_t face ); - -/* Initialise a bitmap font */ -static qboolean _BMF_GetFont( FNT_font_t font ); - -/* Raw printing function */ -static void _BMF_RawPrint( - FNT_font_t font , - const char * text , - unsigned int text_length , - qboolean r2l , - float x , - float y , - const float color[4] ); - -/* Bounded printing function */ -static void _BMF_BoundedPrint( - FNT_font_t font , - const char * text , - unsigned int cmode , - unsigned int align , - FNT_window_t box , - const float * color ); - -/* Wrapped printing function */ -static void _BMF_WrappedPrint( - FNT_font_t font , - const char * text , - unsigned int cmode , - unsigned int align , - unsigned int indent , - FNT_window_t box , - const float * color - ); - - -/***************************************************************************** - * LOCAL TYPE DEFINITIONS * - *****************************************************************************/ - -/* - * This structure "replaces" the generic structure; it is used to store the - * GL list base identifier. - */ -struct _BMF_font_s -{ - /* The font's look-up key */ - char lookup[ FNT_FONT_KEY_MAX + 1 ]; - - /* The font's face */ - FNT_face_t face; - - /* The font's height in pixels */ - unsigned int size; - - /* Printing functions */ - FNT_RawPrint_funct RawPrint; - FNT_BoundedPrint_funct BoundedPrint; - FNT_WrappedPrint_funct WrappedPrint; - - /* Destructor */ - FNT_DestroyFont_funct Destroy; - - /* Amount of "unfreed" GetFont's for this font */ - unsigned int used; - - /* Internal data used by the actual font renderer - replaces the void* pointer */ - GLuint listBase; -}; -typedef struct _BMF_font_s * _BMF_font_t; - - -/***************************************************************************** - * FONT FRONT-END INTERFACE FUNCTION * - *****************************************************************************/ - -qboolean BMF_InitFace( FNT_face_t face ) -{ - char fileName[ FNT_FACE_NAME_MAX + 11 ]; - - Com_sprintf( fileName , sizeof( fileName ) , "fonts/%s.tga" , face->name ); - face->internal = GL_FindImage( fileName , it_pic ); - if ( face->internal == NULL ) - return false; - - face->Destroy = _BMF_DestroyFace; - face->GetFont = _BMF_GetFont; - - return ( face->internal != NULL ); -} - - - -/***************************************************************************** - * FONT MANAGEMENT FUNCTIONS * - *****************************************************************************/ - -/* Face destruction function */ -static void _BMF_DestroyFace( FNT_face_t face ) -{ - GL_FreeImage( (image_t *) face->internal ); -} - - -/* - * Destroys a font's data structure - */ -static void _BMF_Destroy( FNT_font_t font ) -{ - _BMF_font_t _font = (_BMF_font_t) font; - qglDeleteLists( _font->listBase , 255 ); -} - - -/* Initialise a bitmap font */ -static qboolean _BMF_GetFont( FNT_font_t font ) -{ - _BMF_font_t _font = (_BMF_font_t) font; - GLuint glListBase; - unsigned int i; - - assert( sizeof( struct _BMF_font_s ) <= sizeof( struct FNT_font_s ) ); - - // Initialise GL lists - // - // XXX: make sure there's no pending error first; this should not be - // needed, but since the rest of the GL code doesn't check for errors - // that often... - qglGetError( ); - glListBase = qglGenLists( 255 ); - if ( qglGetError( ) != GL_NO_ERROR ) { - Com_Printf( "BMF: could not create OpenGL lists\n" ); - return false; - } - _font->listBase = glListBase; - - // Set up GL lists from the font - for ( i = 0 ; i < 256 ; i ++ ) { - unsigned int row , col; - float fRow , fCol; - - // Don't bother with spaces - if ( i == ' ' ) { - continue; - } - - // Grid coordinates - row = i >> 4; - col = i & 0xf; - - // Texture coordinates - fRow = row / 16.0; - fCol = col / 16.0; - - // Initialise list - qglNewList( glListBase , GL_COMPILE ); - qglBegin( GL_QUADS ); - qglTexCoord2f( fCol , fRow ); - qglVertex2f( 0 , 0 ); - qglTexCoord2f( fCol + 1.0 / 16.0 , fRow ); - qglVertex2f( font->size , 0 ); - qglTexCoord2f( fCol + 1.0 / 16.0 , fRow + 1.0 / 16.0 ); - qglVertex2f( font->size , font->size ); - qglTexCoord2f( fCol , fRow + 1.0 / 16.0 ); - qglVertex2f( 0 , font->size ); - qglEnd (); - qglEndList( ); - - glListBase ++; - } - - font->Destroy = _BMF_Destroy; - font->RawPrint = _BMF_RawPrint; - font->BoundedPrint = _BMF_BoundedPrint; - font->WrappedPrint = _BMF_WrappedPrint; - - return true; -} - - - -/***************************************************************************** - * PRINTING FUNCTIONS - INTERNALS * - *****************************************************************************/ - -/* - * Set up the environment so bitmap font text can be drawn. - */ -static void _BMF_PrepareToDraw( FNT_face_t face ) -{ - // Save current context - qglPushAttrib( GL_CURRENT_BIT | GL_ENABLE_BIT | GL_TRANSFORM_BIT | GL_COLOR_BUFFER_BIT ); - qglMatrixMode( GL_MODELVIEW ); - qglPushMatrix( ); - - // Prepare texture - GL_Bind( ( (image_t *) face->internal )->texnum ); - GL_TexEnv( GL_MODULATE ); - - // Set blending function - qglDisable( GL_ALPHA_TEST ); - qglEnable( GL_BLEND ); - qglBlendFunc ( GL_SRC_ALPHA , GL_ONE_MINUS_SRC_ALPHA ); -} - - -/* - * Restores the environment as if was before _BMF_PrepareToDraw was called - */ -static void _BMF_RestoreEnvironment( ) -{ - qglPopMatrix( ); - qglPopAttrib( ); -} - - -/* - * Print a wrapped line. - */ -static unsigned int _BMF_PrintWrappedLine( - FNT_font_t font , - const _FNT_render_info_t renderInfo , - unsigned int * riIndex , - unsigned int riLength , - unsigned int align , - unsigned int indent , - const FNT_window_t box , - unsigned int cHeight ) -{ - _BMF_font_t _font = (_BMF_font_t) font; - unsigned int width = 0; - unsigned int wsIndex = *riIndex; - const float * curColor = NULL; - unsigned int drawFrom = wsIndex; - unsigned int drawTo; - unsigned int weIndex; - unsigned int x; - - while ( wsIndex < riLength ) { - unsigned int nWidth; - - // Find end of word - weIndex = wsIndex + 1; - while ( weIndex < riLength && renderInfo[ weIndex ].toDraw != ' ' ) { - weIndex ++; - } - - // Compute word width - nWidth = ( weIndex - wsIndex ) * font->size; - if ( width != 0 ) { - nWidth += font->size; - } - - // Is there enough space? - if ( width + nWidth < box->width - indent ) { - // No problem, we can draw that - drawTo = wsIndex = weIndex; - if ( wsIndex < riLength ) { - wsIndex ++; - } - } else { - if ( width == 0 ) { - // Word is longer than maximal width, split it - drawTo = wsIndex + ( ( box->width - indent ) / font->size ); - width = ( drawTo - drawFrom ) * font->size; - assert( width < box->width - indent ); - wsIndex = drawTo; - } - - // End line here. - break; - } - width += nWidth; - } - *riIndex = wsIndex; - - // Compute coordinates from alignment - switch ( align ) { - case FNT_ALIGN_LEFT: - x = box->x + indent; - break; - case FNT_ALIGN_RIGHT: - x = box->x + box->width - indent - width; - break; - case FNT_ALIGN_CENTER: - x = box->x + ( box->width - width ) / 2; - break; - } - - // Do not draw stuff outside of screen - if ( box->y + cHeight >= viddef.height || box->y + cHeight + font->size < 0 - || x + width < 0 || x > viddef.width ) { - return width; - } - - // Draw characters - qglPushMatrix( ); - qglTranslatef( (float)x , (float)( box->y + cHeight ) , 0 ); - while ( drawFrom < drawTo ) { - if ( renderInfo[ drawFrom ].toDraw != ' ' ) { - int index = renderInfo[ drawFrom ].toDraw; - if ( index > ' ' ) { - index --; - } - - if ( curColor != renderInfo[ drawFrom ].color ) { - qglColor4fv( curColor = renderInfo[ drawFrom ].color ); - } - qglCallList( _font->listBase + index ); - } - qglTranslatef( (float) font->size , 0 , 0 ); - drawFrom ++; - } - qglPopMatrix( ); - - return width; -} - - - -/***************************************************************************** - * PRINTING FUNCTIONS AVAILABLE THROUGH FRONT-END * - *****************************************************************************/ - -/* - * Raw printing function - */ -static void _BMF_RawPrint( - FNT_font_t font , - const char * text , - unsigned int text_length , - qboolean r2l , - float x , - float y , - const float color[4] ) -{ - _BMF_font_t _font = (_BMF_font_t) font; - - if ( y < -(float) font->size ) - return; - - _BMF_PrepareToDraw( font->face ); - - qglColor4fv( color ); - qglTranslatef( x , y , 0 ); - while ( text_length ) - { - if ( x >= -(float) font->size && *text != ' ' ) { - int where = ( r2l ? -1 : 1 ) * font->size; - int index = *text; - if ( index > ' ' ) { - index --; - } - index += _font->listBase; - - qglCallList( index ); - qglTranslatef( (float) where , 0 , 0 ); - x += where; - } - - r2l ? ( text-- ) : ( text++ ); - text_length --; - } - - _BMF_RestoreEnvironment( ); -} - - -/* - * Bounded printing function - */ -static void _BMF_BoundedPrint( - FNT_font_t font , - const char * text , - unsigned int cmode , - unsigned int align , - FNT_window_t box , - const float * color - ) -{ - _BMF_font_t _font = (_BMF_font_t) font; - const char * ptr = text; - unsigned int cHeight = 0; - unsigned int maxWidth = 0; - qboolean expectColor = false; - qboolean colorChanged = true; - - _BMF_PrepareToDraw( font->face ); - - // Force left alignment if no width is specified - if ( box->width == 0 ) { - align = FNT_ALIGN_LEFT; - } - - qglTranslatef( box->x , box->y , 0 ); - while ( box->height == 0 || cHeight + font->size < box->height ) { - const char * lineStart = ptr; - unsigned int lineWidth = 0; - const float * curColor = color; - unsigned int nSkip = 0; - unsigned int sx = 0; - unsigned int nDisplay; - - while ( *ptr && *ptr != '\n' ) { - // Skip color codes - if ( ! _FNT_HandleColor( &ptr , cmode , color , &expectColor , &colorChanged , &curColor ) ) { - continue; - } - - lineWidth += font->size; - ptr ++; - } - - // If there is nothing to display in this line... - if ( lineWidth == 0 ) { - // End of string? - if ( !*ptr ) { - break; - } - - // Nope, prepare for next line - cHeight += font->size; - qglTranslatef( 0 , (float) font->size , 0 ); - ptr ++; - break; - } - - // Get first character and amount of characters to display - if ( box->width == 0 || lineWidth <= box->width ) { - nDisplay = lineWidth / font->size; - nSkip = 0; - } else { - nDisplay = box->width / font->size; - switch ( align ) { - case FNT_ALIGN_LEFT: - nSkip = 0; - break; - case FNT_ALIGN_CENTER: - nSkip = ( lineWidth - box->width ) / ( 2 * font->size ); - break; - case FNT_ALIGN_RIGHT: - nSkip = ( lineWidth - box->width ) / font->size; - break; - } - lineWidth = nDisplay * font->size; - } - if ( lineWidth > maxWidth ) { - maxWidth = lineWidth; - } - - // Compute starting location - switch ( align ) { - case FNT_ALIGN_LEFT: - sx = 0; - break; - case FNT_ALIGN_CENTER: - sx = ( box->width - lineWidth ) / 2; - break; - case FNT_ALIGN_RIGHT: - sx = box->width - lineWidth; - break; - } - - // Display characters - qglPushMatrix( ); - curColor = color; - expectColor = false; - colorChanged = true; - qglTranslatef( (float)sx , 0 , 0 ); - while ( nDisplay ) { - // Handle color codes - if ( ! _FNT_HandleColor( &lineStart , cmode , color , &expectColor , &colorChanged , &curColor ) ) { - continue; - } - - // Found a displayable character - if ( nSkip ) { - // ... but it's not display time yet. - nSkip --; - lineStart ++; - continue; - } - - // Display character - if ( *lineStart != ' ' ) { - int index = *lineStart; - if ( cmode == FNT_CMODE_TWO ) { - index &= 0x7f; - } - if ( index > ' ' ) { - index --; - } - - if ( colorChanged ) { - qglColor4fv( curColor ); - } - qglCallList( _font->listBase + index ); - } - qglTranslatef( (float) font->size , 0 , 0 ); - nDisplay --; - lineStart ++; - } - qglPopMatrix( ); - qglTranslatef( 0 , (float) font->size , 0 ); - - // Prepare for next line - if ( ! *ptr ) { - break; - } - ptr ++; - } - - box->height = cHeight; - box->width = maxWidth; - - _BMF_RestoreEnvironment( ); -} - - -/* - * Wrapped printing function - */ -static void _BMF_WrappedPrint( - FNT_font_t font , - const char * text , - unsigned int cmode , - unsigned int align , - unsigned int indent , - FNT_window_t box , - const float * color - ) -{ - const char * curText = text; - unsigned int cHeight = 0; - unsigned int nHeight = 0; - unsigned int maxWidth = 0; - qboolean mustQuit = false; - - _FNT_render_info_t renderInfo; - unsigned int riLength; - - renderInfo = Z_Malloc( strlen( text ) * sizeof( struct _FNT_render_info_s ) ); - _BMF_PrepareToDraw( font->face ); - - while ( !mustQuit && ( box->height == 0 || font->size + cHeight + nHeight < box->height ) ) { - unsigned int riIndex = 0; - - // Get next line - mustQuit = ! _FNT_NextWrappedUnit( &curText , renderInfo , &riLength , cmode , color ); - - // Empty line, skip space vertically - if ( riLength == 0 ) { - nHeight += font->size; - continue; - } - - // Add skipped space - cHeight += nHeight; - nHeight = 0; - - while ( riIndex < riLength && ( box->height == 0 || font->size + cHeight < box->height ) ) { - unsigned int w = _BMF_PrintWrappedLine( font , renderInfo , &riIndex , riLength , - align , riIndex == 0 ? 0 : indent , box , cHeight ); - if ( w > maxWidth ) { - maxWidth = w; - } - cHeight += font->size; - } - } - - _BMF_RestoreEnvironment( ); - Z_Free( renderInfo ); - - box->width = maxWidth; - box->height = cHeight; -} diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_bmfont.h alien-arena-7.66+dfsg/source/ref_gl/r_bmfont.h --- alien-arena-7.53+dfsg/source/ref_gl/r_bmfont.h 2010-12-01 07:56:22.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_bmfont.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -/* -Copyright (C) 2010 COR Entertainment, LLC. - -This program 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. - -This program 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 this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. -*/ -#ifndef __R_BMFONT_H -#define __R_BMFONT_H - -#include -#include "r_text.h" - - -/* Initialise a BMF face. */ -qboolean BMF_InitFace( FNT_face_t face ); - - -#endif //__R_BMFONT_H diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_draw.c alien-arena-7.66+dfsg/source/ref_gl/r_draw.c --- alien-arena-7.53+dfsg/source/ref_gl/r_draw.c 2011-12-22 20:26:37.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_draw.c 2013-08-19 03:26:16.000000000 +0000 @@ -109,191 +109,6 @@ } /* -================ -Draw_Char - -Draws one 8*8 graphics character with 0 being transparent. -It can be clipped to the top of the screen to allow the console to be -smoothly scrolled off. -================ -*/ -void Draw_Char (int x, int y, int num) -{ - int row, col; - float frow, fcol, size; - - num &= 255; - - if ( (num&127) == 32 ) - return; // space - - if (y <= -8) - return; // totally off screen - - row = num>>4; - col = num&15; - - frow = row*0.0625; - fcol = col*0.0625; - size = 0.0625; - - GL_Bind (draw_chars->texnum); - - qglBegin (GL_QUADS); - qglColor4f( 1,1,1,1 ); - qglTexCoord2f (fcol, frow); - qglVertex2f (x, y); - qglTexCoord2f (fcol + size, frow); - qglVertex2f (x+8, y); - qglTexCoord2f (fcol + size, frow + size); - qglVertex2f (x+8, y+8); - qglTexCoord2f (fcol, frow + size); - qglVertex2f (x, y+8); - qglEnd (); -} -static byte R_FloatToByte( float x ) -{ - union { - float f; - unsigned int i; - } f2i; - - // shift float to have 8bit fraction at base of number - f2i.f = x + 32768.0f; - f2i.i &= 0x7FFFFF; - - // then read as integer and kill float bits... - return ( byte )min( f2i.i, 255 ); -} - -void Draw_ColorChar (int x, int y, int num, vec4_t color) -{ - int row, col; - float frow, fcol, size; - byte colors[4]; - - colors[0] = R_FloatToByte( color[0] ); - colors[1] = R_FloatToByte( color[1] ); - colors[2] = R_FloatToByte( color[2] ); - colors[3] = R_FloatToByte( color[3] ); - - num &= 255; - - if ( (num&127) == 32 ) - return; // space - - if (y <= -8) - return; // totally off screen - - row = num>>4; - col = num&15; - - frow = row*0.0625; - fcol = col*0.0625; - size = 0.0625; - - GL_Bind (draw_chars->texnum); - - qglColor4ubv( colors ); - GL_TexEnv(GL_MODULATE); - qglBegin (GL_QUADS); - qglTexCoord2f (fcol, frow); - qglVertex2f (x, y); - qglTexCoord2f (fcol + size, frow); - qglVertex2f (x+8, y); - qglTexCoord2f (fcol + size, frow + size); - qglVertex2f (x+8, y+8); - qglTexCoord2f (fcol, frow + size); - qglVertex2f (x, y+8); - qglEnd (); - qglColor4f( 1,1,1,1 ); -} - -void Draw_ScaledChar (float x, float y, int num, float scale, int from_menu) - -{ - int row, col; - float frow, fcol, size; - - num &= 255; - - if ( (num&127) == 32 ) - return; // space - - if (y <= -8) - return; // totally off screen - - row = num>>4; - col = num&15; - - frow = row*0.0625; - fcol = col*0.0625; - size = 0.0625; - - if(from_menu) - GL_Bind(menu_chars->texnum); - else - GL_Bind(draw_chars->texnum); - - qglColor4f( 1,1,1,1 ); - qglBegin (GL_QUADS); - qglTexCoord2f (fcol, frow); - qglVertex2f (x, y); - qglTexCoord2f (fcol + size, frow); - qglVertex2f (x+scale, y); - qglTexCoord2f (fcol + size, frow + size); - qglVertex2f (x+scale, y+scale); - qglTexCoord2f (fcol, frow + size); - qglVertex2f (x, y+scale); - qglEnd(); - -} -void Draw_ScaledColorChar (float x, float y, int num, vec4_t color, float scale, int from_menu) -{ - int row, col; - float frow, fcol, size; - byte colors[4]; - - colors[0] = R_FloatToByte( color[0] ); - colors[1] = R_FloatToByte( color[1] ); - colors[2] = R_FloatToByte( color[2] ); - colors[3] = R_FloatToByte( color[3] ); - - num &= 255; - - if ( (num&127) == 32 ) - return; // space - - if (y <= -8) - return; // totally off screen - - row = num>>4; - col = num&15; - - frow = row*0.0625; - fcol = col*0.0625; - size = 0.0625; - - if(from_menu) - GL_Bind(menu_chars->texnum); - else - GL_Bind(draw_chars->texnum); - - qglColor4ubv( colors ); - GL_TexEnv(GL_MODULATE); - qglBegin (GL_QUADS); - qglTexCoord2f (fcol, frow); - qglVertex2f (x, y); - qglTexCoord2f (fcol + size, frow); - qglVertex2f (x+scale, y); - qglTexCoord2f (fcol + size, frow + size); - qglVertex2f (x+scale, y+scale); - qglTexCoord2f (fcol, frow + size); - qglVertex2f (x, y+scale); - qglEnd (); - qglColor4f( 1,1,1,1 ); -} -/* ============= R_RegisterPic ============= @@ -327,12 +142,12 @@ if (name[0] != '/' && name[0] != '\\') { Com_sprintf (fullname, sizeof(fullname), "particles/%s.tga", name); - gl = GL_FindImage (fullname, it_pic); + gl = GL_FindImage (fullname, it_particle); } else { // 2010-10 match above workaround (paranoid) strcpy( fullname, &name[1] ); - gl = GL_FindImage( fullname, it_pic ); + gl = GL_FindImage( fullname, it_particle ); } return gl; @@ -395,13 +210,23 @@ return gl; } + /* ============= -Draw_GetPicSize +Draw_PicExists ============= */ +qboolean Draw_PicExists (const char *pic) +{ + return R_RegisterPic (pic) != NULL; +} -void Draw_GetPicSize (int *w, int *h, char *pic) +/* +============= +Draw_GetPicSize +============= +*/ +void Draw_GetPicSize (int *w, int *h, const char *pic) { image_t *gl; @@ -416,15 +241,35 @@ } #define DIV254BY255 (0.9960784313725490196078431372549f) -void Draw_ShaderPic (image_t *gl, float alphaval) +/* +============= +Draw_AlphaStretchPic +- Note: If tiling is true, the texture wrapping flags are adjusted to prevent + gaps from appearing if the texture is tiled with itself or with other + textures. This adjustment is permanent, although it would be easy to + change the code to undo it after rendering. +============= +*/ +enum draw_tiling_s +{ + draw_without_tiling, + draw_with_tiling +}; +void Draw_AlphaStretchImage (float x, float y, float w, float h, const image_t *gl, float alphaval, enum draw_tiling_s tiling) { - rscript_t *rs = NULL; + rscript_t *rs; float alpha,s,t; rs_stage_t *stage; char shortname[MAX_QPATH]; - + float xscale, yscale; + float cropped_x, cropped_y, cropped_w, cropped_h; + + if (scrap_dirty) + Scrap_Upload (); + COM_StripExtension ( gl->name, shortname ); - rs=RS_FindScript(shortname); + + rs = gl->script; //if we draw the red team bar, we are on red team if(!strcmp(shortname, "pics/i_team1")) @@ -433,7 +278,7 @@ r_teamColor = 2; R_InitQuadVarrays(); - + if (!rs) { qglDisable (GL_ALPHA_TEST); @@ -441,7 +286,21 @@ GLSTATE_DISABLE_ALPHATEST GLSTATE_ENABLE_BLEND GL_TexEnv( GL_MODULATE ); - + + xscale = (float)w/(float)gl->upload_width; + yscale = (float)h/(float)gl->upload_height; + + cropped_x = x + xscale*(float)gl->crop_left; + cropped_y = y + yscale*(float)gl->crop_top; + + cropped_w = xscale*(float)gl->crop_width; + cropped_h = yscale*(float)gl->crop_height; + + VA_SetElem2(vert_array[0], cropped_x, cropped_y); + VA_SetElem2(vert_array[1], cropped_x+cropped_w, cropped_y); + VA_SetElem2(vert_array[2], cropped_x+cropped_w, cropped_y+cropped_h); + VA_SetElem2(vert_array[3], cropped_x, cropped_y+cropped_h); + qglColor4f(1,1,1, alphaval); //set color of hud by team @@ -459,17 +318,29 @@ VA_SetElem4(col_array[2], 1,1,1,1); VA_SetElem4(col_array[3], 1,1,1,1); GL_Bind (gl->texnum); - VA_SetElem2(tex_array[0],gl->sl, gl->tl); - VA_SetElem2(tex_array[1],gl->sh, gl->tl); - VA_SetElem2(tex_array[2],gl->sh, gl->th); - VA_SetElem2(tex_array[3],gl->sl, gl->th); - R_DrawVarrays (GL_QUADS, 0, 4, false); + if (tiling == draw_with_tiling) + { + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_MIRRORED_REPEAT); + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_MIRRORED_REPEAT); + } + VA_SetElem2(tex_array[0], gl->crop_sl, gl->crop_tl); + VA_SetElem2(tex_array[1], gl->crop_sh, gl->crop_tl); + VA_SetElem2(tex_array[2], gl->crop_sh, gl->crop_th); + VA_SetElem2(tex_array[3], gl->crop_sl, gl->crop_th); + R_DrawVarrays (GL_QUADS, 0, 4); qglEnable (GL_ALPHA_TEST); qglDisable (GL_BLEND); + GLSTATE_DISABLE_BLEND + GLSTATE_ENABLE_ALPHATEST R_KillVArrays(); } else { + VA_SetElem2(vert_array[0], x, y); + VA_SetElem2(vert_array[1], x+w, y); + VA_SetElem2(vert_array[2], x+w, y+h); + VA_SetElem2(vert_array[3], x, y+h); + RS_ReadyScript(rs); stage=rs->stage; @@ -545,7 +416,7 @@ RS_SetTexcoords2D (stage, &s, &t); VA_SetElem2(tex_array[2],s, t); - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); qglColor4f(1,1,1,1); if (stage->colormap.enabled) @@ -563,12 +434,7 @@ } } -/* -============= -Draw_StretchPic -============= -*/ -void Draw_StretchPic (int x, int y, int w, int h, char *pic) +void Draw_AlphaStretchTilingPic (float x, float y, float w, float h, const char *pic, float alphaval) { image_t *gl; @@ -577,16 +443,8 @@ { return; } - - if (scrap_dirty) - Scrap_Upload (); - - VA_SetElem2(vert_array[0],x, y); - VA_SetElem2(vert_array[1],x+w, y); - VA_SetElem2(vert_array[2],x+w, y+h); - VA_SetElem2(vert_array[3],x, y+h); - - Draw_ShaderPic(gl, DIV254BY255); + + Draw_AlphaStretchImage (x, y, w, h, gl, alphaval, draw_with_tiling); } /* @@ -594,7 +452,7 @@ Draw_AlphaStretchPic ============= */ -void Draw_AlphaStretchPic (int x, int y, int w, int h, char *pic, float alphaval) +void Draw_AlphaStretchPic (float x, float y, float w, float h, const char *pic, float alphaval) { image_t *gl; @@ -603,47 +461,18 @@ { return; } - - if (scrap_dirty) - Scrap_Upload (); - - VA_SetElem2(vert_array[0],x, y); - VA_SetElem2(vert_array[1],x+w, y); - VA_SetElem2(vert_array[2],x+w, y+h); - VA_SetElem2(vert_array[3],x, y+h); - - Draw_ShaderPic(gl, alphaval); + + Draw_AlphaStretchImage (x, y, w, h, gl, alphaval, draw_without_tiling); } /* ============= -Draw_Pic +Draw_StretchPic ============= */ -void Draw_Pic (int x, int y, char *pic) +void Draw_StretchPic (float x, float y, float w, float h, const char *pic) { - image_t *gl; - int w, h; - - gl = R_RegisterPic (pic); - if (!gl) - { -// Com_Printf ("Can't find pic: %s\n", pic); - return; - } - - w = gl->width; - h = gl->height; - - if (scrap_dirty) - Scrap_Upload (); - - VA_SetElem2(vert_array[0],x, y); - VA_SetElem2(vert_array[1],x+w, y); - VA_SetElem2(vert_array[2],x+w, y+h); - VA_SetElem2(vert_array[3],x, y+h); - - Draw_ShaderPic(gl, DIV254BY255); + Draw_AlphaStretchPic (x, y, w, h, pic, DIV254BY255); } /* @@ -651,92 +480,49 @@ Draw_ScaledPic ============= */ - -void Draw_ScaledPic (int x, int y, float scale, char *pic) +void Draw_ScaledPic (float x, float y, float scale, const char *pic) { image_t *gl; - int w, h; - float xoff, yoff; + float w, h; gl = R_RegisterPic (pic); if (!gl) { -// Com_Printf ("Can't find pic: %s\n", pic); return; } - w = gl->width; - h = gl->height; - - xoff = (w*scale-w); - yoff = (h*scale-h); - - if (scrap_dirty) - Scrap_Upload (); - - VA_SetElem2(vert_array[0],x, y); - VA_SetElem2(vert_array[1],x+w+xoff, y); - VA_SetElem2(vert_array[2],x+w+xoff, y+h+yoff); - VA_SetElem2(vert_array[3],x, y+h+yoff); - - Draw_ShaderPic(gl, DIV254BY255); + w = (float)gl->width*scale; + h = (float)gl->height*scale; + + Draw_AlphaStretchImage (x, y, w, h, gl, DIV254BY255, draw_without_tiling); } /* ============= -Draw_AlphaStretchPlayerIcon +Draw_Pic ============= */ -void Draw_AlphaStretchPlayerIcon (int x, int y, int w, int h, char *pic, float alphaval) +void Draw_Pic (float x, float y, const char *pic) { - image_t *gl; - - gl = R_RegisterPlayerIcon (pic); - if (!gl) - { - return; - } - - if (scrap_dirty) - Scrap_Upload (); - - VA_SetElem2(vert_array[0],x, y); - VA_SetElem2(vert_array[1],x+w, y); - VA_SetElem2(vert_array[2],x+w, y+h); - VA_SetElem2(vert_array[3],x, y+h); - - Draw_ShaderPic(gl, alphaval); + Draw_ScaledPic (x, y, 1.0, pic); } + /* ============= -Draw_TileClear - -This repeats a 64*64 tile graphic to fill the screen around a sized down -refresh window. +Draw_AlphaStretchPlayerIcon ============= */ -void Draw_TileClear (int x, int y, int w, int h, char *pic) +void Draw_AlphaStretchPlayerIcon (int x, int y, int w, int h, const char *pic, float alphaval) { - image_t *image; + image_t *gl; - image = R_RegisterPic (pic); - if (!image) + gl = R_RegisterPlayerIcon (pic); + if (!gl) { -// Com_Printf ("Can't find pic: %s\n", pic); return; } - GL_Bind (image->texnum); - qglBegin (GL_QUADS); - qglTexCoord2f (x/64.0, y/64.0); - qglVertex2f (x, y); - qglTexCoord2f ( (x+w)/64.0, y/64.0); - qglVertex2f (x+w, y); - qglTexCoord2f ( (x+w)/64.0, (y+h)/64.0); - qglVertex2f (x+w, y+h); - qglTexCoord2f ( x/64.0, (y+h)/64.0 ); - qglVertex2f (x, y+h); - qglEnd (); + Draw_AlphaStretchImage (x, y, w, h, gl, alphaval, draw_without_tiling); } @@ -747,42 +533,32 @@ Fills a box of pixels with a single color ============= */ -void Draw_Fill (int x, int y, int w, int h, int c) +void Draw_Fill (float x, float y, float w, float h, const float rgba[]) { - union - { - unsigned c; - byte v[4]; - } color; - - if ( (unsigned)c > 255) - Com_Error (ERR_FATAL, "Draw_Fill: bad color"); - qglDisable (GL_TEXTURE_2D); - - color.c = d_8to24table[c]; - qglColor3f (color.v[0]/255.0, - color.v[1]/255.0, - color.v[2]/255.0); - + // FIXME HACK + qglDisable (GL_ALPHA_TEST); + qglEnable (GL_BLEND); + GLSTATE_ENABLE_BLEND; + GLSTATE_DISABLE_ALPHATEST; + qglColor4fv (rgba); + qglBegin (GL_QUADS); - - qglVertex2f (x,y); - qglVertex2f (x+w, y); - qglVertex2f (x+w, y+h); - qglVertex2f (x, y+h); - + qglVertex2f (x,y); + qglVertex2f (x+w, y); + qglVertex2f (x+w, y+h); + qglVertex2f (x, y+h); qglEnd (); + + GLSTATE_DISABLE_BLEND; qglColor3f (1,1,1); qglEnable (GL_TEXTURE_2D); } - //============================================================================= /* ================ Draw_FadeScreen - ================ */ void Draw_FadeScreen (void) @@ -804,3 +580,22 @@ } +//============================================================================= + +/* +================ +RGBA - This really should be a macro, but MSVC doesn't support C99. +================ +*/ + +float *RGBA (float r, float g, float b, float a) +{ + static float ret[4]; + + ret[0] = r; + ret[1] = g; + ret[2] = b; + ret[3] = a; + + return ret; +} diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_image.c alien-arena-7.66+dfsg/source/ref_gl/r_image.c --- alien-arena-7.53+dfsg/source/ref_gl/r_image.c 2011-05-26 05:01:26.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_image.c 2013-06-26 15:56:34.000000000 +0000 @@ -45,8 +45,8 @@ unsigned d_8to24table[256]; -qboolean GL_Upload8 (byte *data, int width, int height, qboolean mipmap, qboolean is_sky ); -qboolean GL_Upload32 (unsigned *data, int width, int height, qboolean mipmap, qboolean is_normalmap); +qboolean GL_Upload8 (byte *data, int width, int height, int picmip, qboolean filter); +qboolean GL_Upload32 (byte *data, int width, int height, int picmip, qboolean filter, qboolean force_standard_mipmap); int gl_solid_format = 3; int gl_alpha_format = 4; @@ -59,7 +59,7 @@ void R_InitImageSubsystem(void) { - int aniso_level, max_aniso; + int max_aniso; if ( strstr( gl_config.extensions_string, "GL_ARB_multitexture" ) ) { @@ -80,7 +80,7 @@ } else { - Com_Printf ("...GL_ARB_multitexture not found\n" ); + Com_Error (ERR_FATAL, "...GL_ARB_multitexture not found\n" ); } gl_config.mtexcombine = false; @@ -110,16 +110,22 @@ { qglGetIntegerv(GL_MAX_TEXTURE_MAX_ANISOTROPY_EXT, &max_aniso); - r_ext_max_anisotropy = Cvar_Get("r_ext_max_anisotropy", "0", CVAR_ARCHIVE ); + r_ext_max_anisotropy = Cvar_Get("r_ext_max_anisotropy", "1", CVAR_ARCHIVE ); Cvar_SetValue("r_ext_max_anisotropy", max_aniso); - r_anisotropic = Cvar_Get("r_anisotropic", "16", CVAR_ARCHIVE); - if (r_anisotropic->value >= r_ext_max_anisotropy->value) - Cvar_SetValue("r_anisotropic", r_ext_max_anisotropy->value); + r_anisotropic = Cvar_Get("r_anisotropic", "1", CVAR_ARCHIVE); + if (r_anisotropic->integer >= r_ext_max_anisotropy->integer) + Cvar_SetValue("r_anisotropic", r_ext_max_anisotropy->integer); + if (r_anisotropic->integer <= 0) + Cvar_SetValue("r_anisotropic", 1); + + r_alphamasked_anisotropic = Cvar_Get("r_alphamasked_anisotropic", "1", CVAR_ARCHIVE); + if (r_alphamasked_anisotropic->integer >= r_ext_max_anisotropy->integer) + Cvar_SetValue("r_alphamasked_anisotropic", r_ext_max_anisotropy->integer); + if (r_alphamasked_anisotropic->integer <= 0) + Cvar_SetValue("r_alphamasked_anisotropic", 1); - aniso_level = r_anisotropic->value; - - if (r_anisotropic->value == 1) + if (r_anisotropic->integer == 1 && r_alphamasked_anisotropic->integer == 1) Com_Printf("...ignoring GL_EXT_texture_filter_anisotropic\n"); else Com_Printf("...using GL_EXT_texture_filter_anisotropic\n"); @@ -128,6 +134,7 @@ { Com_Printf("...GL_EXT_texture_filter_anisotropic not found\n"); r_anisotropic = Cvar_Get("r_anisotropic", "0", CVAR_ARCHIVE); + r_alphamasked_anisotropic = Cvar_Get("r_alphamasked_anisotropic", "0", CVAR_ARCHIVE); r_ext_max_anisotropy = Cvar_Get("r_ext_max_anisotropy", "0", CVAR_ARCHIVE); } } @@ -156,6 +163,14 @@ } } +// FIXME: +// This centralized texture bind batching system is a great idea if you use it +// *everywhere*. Otherwise you just end up binding a texture elsewhere and +// this system doesn't know you've done it, so when you count on this system +// to bindanother texture, it doesn't know it has to, and it'll happily let +// you use the wrong texture. Anywhere we use glActiveTexture and +// glBindTexture directly can potentially screw things up. + void GL_EnableMultitexture( qboolean enable ) { if ( !qglActiveTextureARB ) @@ -238,7 +253,7 @@ { extern image_t *draw_chars; - if (gl_nobind->value && draw_chars) // performance evaluation option + if (gl_nobind->integer && draw_chars) // performance evaluation option texnum = draw_chars->texnum; if ( gl_state.currenttextures[gl_state.currenttmu] == texnum) return; @@ -338,7 +353,7 @@ // change all the existing mipmap texture objects for (i=0, glt=gltextures ; itype != it_pic && glt->type != it_sky ) + if (glt->type != it_pic && glt->type != it_particle && glt->type != it_sky ) { GL_Bind (glt->texnum); qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_min); @@ -433,6 +448,9 @@ case it_pic: Com_Printf ("P"); break; + case it_particle: + Com_Printf ("A"); + break; default: Com_Printf (" "); break; @@ -457,11 +475,11 @@ */ #define MAX_SCRAPS 1 -#define BLOCK_WIDTH 256 -#define BLOCK_HEIGHT 256 +#define BLOCK_WIDTH 1024 +#define BLOCK_HEIGHT 512 int scrap_allocated[MAX_SCRAPS][BLOCK_WIDTH]; -byte scrap_texels[MAX_SCRAPS][BLOCK_WIDTH*BLOCK_HEIGHT]; +byte scrap_texels[MAX_SCRAPS][BLOCK_WIDTH*BLOCK_HEIGHT*4]; qboolean scrap_dirty; // returns a texture number and the position inside it @@ -503,19 +521,23 @@ } return -1; -// Sys_Error ("Scrap_AllocBlock: full"); +/* Sys_Error ("Scrap_AllocBlock: full");*/ } int scrap_uploads; void Scrap_Upload (void) { - scrap_uploads++; GL_Bind(TEXNUM_SCRAPS); - GL_Upload8 (scrap_texels[0], BLOCK_WIDTH, BLOCK_HEIGHT, false, false ); + GL_Upload32 (scrap_texels[scrap_uploads++], BLOCK_WIDTH, BLOCK_HEIGHT, 0, false, true); scrap_dirty = false; } +//just a guessed size-- this isn't necessarily raw RGBA data, it's the +//encoded image data. +#define STATIC_RAWDATA_SIZE (1024*1024*4+256) +byte static_rawdata[STATIC_RAWDATA_SIZE]; + /* ================================================================= @@ -545,7 +567,8 @@ // // load the file // - len = FS_LoadFile (filename, (void **)&raw); + len = FS_LoadFile_TryStatic ( filename, (void **)&raw, static_rawdata, + STATIC_RAWDATA_SIZE); if (!raw) { return; @@ -575,7 +598,8 @@ || pcx->ymax >= 512) { Com_Printf ("Bad pcx file %s\n", filename); - FS_FreeFile (pcx); + if ((byte *)pcx != static_rawdata) + FS_FreeFile (pcx); return; } @@ -623,7 +647,8 @@ *pic = NULL; } - FS_FreeFile (pcx); + if ((byte *)pcx != static_rawdata) + FS_FreeFile (pcx); } /* ================================================================= @@ -635,6 +660,9 @@ ================================================================= */ +static JOCTET eoi_buffer[2] = {(JOCTET)0xFF, (JOCTET)JPEG_EOI}; +static qboolean crjpg_corrupted; + void crjpg_null(j_decompress_ptr cinfo) { } @@ -642,6 +670,9 @@ int crjpg_fill_input_buffer(j_decompress_ptr cinfo) { Com_Printf("Premature end of JPEG data\n"); + cinfo->src->next_input_byte = eoi_buffer; + cinfo->src->bytes_in_buffer = 2; + crjpg_corrupted = true; return 1; } @@ -652,7 +683,12 @@ cinfo->src->bytes_in_buffer -= (size_t) num_bytes; if (cinfo->src->bytes_in_buffer < 0) + { Com_Printf("Premature end of JPEG data\n"); + cinfo->src->next_input_byte = eoi_buffer; + cinfo->src->bytes_in_buffer = 2; + crjpg_corrupted = true; + } } void crjpg_mem_src(j_decompress_ptr cinfo, byte *mem, int len) @@ -675,6 +711,8 @@ LoadJPG ============== */ +#define STATIC_SCANLINE_SIZE (1024*3) +byte static_scanline[STATIC_SCANLINE_SIZE]; void LoadJPG (char *filename, byte **pic, int *width, int *height) { struct jpeg_decompress_struct cinfo; @@ -682,8 +720,10 @@ byte *rawdata, *rgbadata, *scanline, *p, *q; int rawsize, i; + crjpg_corrupted = false; // Load JPEG file into memory - rawsize = FS_LoadFile(filename, (void **)&rawdata); + rawsize = FS_LoadFile_TryStatic ( filename, (void **)&rawdata, + static_rawdata, STATIC_RAWDATA_SIZE); if (!rawdata) { return; @@ -694,7 +734,8 @@ || rawdata[7] != 'F' || rawdata[8] != 'I' || rawdata[9] != 'F') { - FS_FreeFile(rawdata); + if (rawdata != static_rawdata) + FS_FreeFile(rawdata); return; } @@ -715,7 +756,8 @@ if(cinfo.output_components != 3) { jpeg_destroy_decompress(&cinfo); - FS_FreeFile(rawdata); + if (rawdata != static_rawdata) + FS_FreeFile(rawdata); return; } @@ -724,7 +766,8 @@ if(!rgbadata) { jpeg_destroy_decompress(&cinfo); - FS_FreeFile(rawdata); + if (rawdata != static_rawdata) + FS_FreeFile(rawdata); return; } @@ -732,13 +775,21 @@ *width = cinfo.output_width; *height = cinfo.output_height; // Allocate Scanline buffer - scanline = malloc(cinfo.output_width * 3); - if(!scanline) + if (cinfo.output_width * 3 < STATIC_SCANLINE_SIZE) { - free(rgbadata); - jpeg_destroy_decompress(&cinfo); - FS_FreeFile(rawdata); - return; + scanline = &static_scanline[0]; + } + else + { + scanline = malloc(cinfo.output_width * 3); + if(!scanline) + { + free(rgbadata); + jpeg_destroy_decompress(&cinfo); + if (rawdata != static_rawdata) + FS_FreeFile(rawdata); + return; + } } // Read Scanlines, and expand from RGB to RGBA @@ -760,7 +811,8 @@ } // Free the scanline buffer - free(scanline); + if (scanline != &static_scanline[0]) + free(scanline); // Finish Decompression jpeg_finish_decompress(&cinfo); @@ -769,7 +821,11 @@ jpeg_destroy_decompress(&cinfo); // Free the raw data now that it's done being processed - FS_FreeFile(rawdata); + if (rawdata != static_rawdata) + FS_FreeFile(rawdata); + + if (crjpg_corrupted) + Com_Printf ("JPEG file %s is likely corrupted, please obtain a fresh copy.\n", filename); // Return the 'rgbadata' *pic = rgbadata; @@ -805,6 +861,7 @@ int row, column; byte *buf_p; byte *buffer; + size_t buf_end; int length; TargaHeader targa_header; byte *targa_rgba; @@ -815,49 +872,71 @@ // // load the file // - length = FS_LoadFile (name, (void **)&buffer); + length = FS_LoadFile_TryStatic ( name, (void **)&buffer, + static_rawdata, STATIC_RAWDATA_SIZE); if (!buffer) { return; } buf_p = buffer; + buf_end = (size_t)(buffer+length); - targa_header.id_length = *buf_p++; - targa_header.colormap_type = *buf_p++; - targa_header.image_type = *buf_p++; +#define GET_TGA_BYTE(dest) \ + {\ + if ((size_t)buf_p=0; row--) { pixbuf = targa_rgba + row*columns*4; for(column=0; column=0; row--) { pixbuf = targa_rgba + row*columns*4; for(column=0; column> 1; for (j=0 ; j>2; - ((byte *)(out+j))[1] = (pix1[1] + pix2[1] + pix3[1] + pix4[1])>>2; - ((byte *)(out+j))[2] = (pix1[2] + pix2[2] + pix3[2] + pix4[2])>>2; - ((byte *)(out+j))[3] = (pix1[3] + pix2[3] + pix3[3] + pix4[3])>>2; + pix1 = inrow + p1[j]; + pix2 = inrow + p2[j]; + pix3 = inrow2 + p1[j]; + pix4 = inrow2 + p2[j]; + *(out+4*j+0) = (pix1[0] + pix2[0] + pix3[0] + pix4[0])>>2; + *(out+4*j+1) = (pix1[1] + pix2[1] + pix3[1] + pix4[1])>>2; + *(out+4*j+2) = (pix1[2] + pix2[2] + pix3[2] + pix4[2])>>2; + *(out+4*j+3) = (pix1[3] + pix2[3] + pix3[3] + pix4[3])>>2; } } } @@ -1128,9 +1177,8 @@ the image's average color. Also handles image inversion and monochrome. This is all munged into one function to reduce loops on level load. */ -void R_FilterTexture(unsigned *in, int width, int height) +void R_FilterTexture(byte *in, int width, int height) { - byte *pcb; int count; float fcb; int ix; @@ -1163,40 +1211,105 @@ } // apply to image - pcb = (byte*)in; count = width * height; while ( count-- ) { - *pcb = lut[*pcb]; - ++pcb; - *pcb = lut[*pcb]; - ++pcb; - *pcb = lut[*pcb]; - ++pcb; - ++pcb; + *in = lut[*in]; + ++in; + *in = lut[*in]; + ++in; + *in = lut[*in]; + ++in; + ++in; } } + +#define ALPHATEST_THRESHOLD 169 +// Uses the canonical mipmap generation algorithm, but unlike OpenGL's built- +// in mipmapping, it this function knows when to quit-- that is, when the +// mipmaps have gotten too "mushy." Mushy mipmaps usually aren't a problem, +// but they're a huge one when dealing with alphatest surfaces. +int GL_RecursiveGenerateAlphaMipmaps (byte *data, int width, int height, int depth) +{ + int ret; + int x, y; + int newwidth, newheight; + int upper_left_alpha; + qboolean uniform = true; + byte *mipmap, *scan, *scan2, *out; + + if (width == 1 && height == 1) + return depth; + + newwidth = width; + if (newwidth > 1) + newwidth /= 2; + newheight = height; + if (newheight > 1) + newheight /= 2; + + mipmap = malloc (newwidth*newheight*4); + + for (y = 0; (y+1) < height; y += 2) + { + for (x = 0; (x+1) < width; x += 2) + { + scan = data + (y*width+x)*4; + scan2 = data + ((y+1)*width+x)*4; + out = mipmap + ((y/2)*(width/2)+(x/2))*4; + out[0] = (scan[0]+scan[4]+scan2[0]+scan2[4])/4; + out[1] = (scan[1]+scan[5]+scan2[1]+scan2[5])/4; + out[2] = (scan[2]+scan[6]+scan2[2]+scan2[6])/4; + out[3] = (scan[3]+scan[7]+scan2[3]+scan2[7])/4; + if (x == 0 && y == 0) + upper_left_alpha = out[3]; + else if ((upper_left_alpha > ALPHATEST_THRESHOLD) != (out[3] > ALPHATEST_THRESHOLD)) + uniform = false; + } + } + + if (uniform) + { + free (mipmap); + return depth; + } + + ret = GL_RecursiveGenerateAlphaMipmaps (mipmap, newwidth, newheight, depth+1); + + qglTexImage2D (GL_TEXTURE_2D, depth+1, gl_tex_alpha_format, newwidth, newheight, 0, GL_RGBA, GL_UNSIGNED_BYTE, mipmap); + + free (mipmap); + return ret; +} + +int GL_GenerateAlphaMipmaps (byte *data, int width, int height) +{ + return GL_RecursiveGenerateAlphaMipmaps (data, width, height, 0); +} + + static int powers_of_two[] = {16,32,64,128,256,512,1024,2048,4096}; int upload_width, upload_height; +int crop_left, crop_right, crop_top, crop_bottom; qboolean uploaded_paletted; -qboolean GL_Upload32 (unsigned *data, int width, int height, qboolean mipmap, qboolean is_normalmap) +qboolean GL_Upload32 (byte *data, int width, int height, int picmip, qboolean filter, qboolean force_standard_mipmap) { int samples; - unsigned *scaled; + byte *scaled; int scaled_width, scaled_height; int i, c; byte *scan; int comp; - if(mipmap && !is_normalmap) + if(filter) R_FilterTexture(data, width, height); uploaded_paletted = false; // scan the texture for any non-255 alpha c = width*height; - scan = ((byte *)data) + 3; + scan = data + 3; samples = gl_solid_format; for (i=0 ; i>= gl_picmip->integer; - scaled_height >>= gl_picmip->integer; + if (scaled_width <= 1 || scaled_height <= 1) + break; + scaled_width >>= 1; + scaled_height >>= 1; } if (scaled_width > max_size) scaled_width = max_size; @@ -1257,21 +1372,68 @@ scaled=data; } - if (mipmap) + if (samples != gl_alpha_format || force_standard_mipmap) qglTexParameteri( GL_TEXTURE_2D, GL_GENERATE_MIPMAP, GL_TRUE ); qglTexImage2D (GL_TEXTURE_2D, 0, comp, scaled_width, scaled_height, 0, GL_RGBA, GL_UNSIGNED_BYTE, scaled); + + crop_left = crop_right = crop_top = crop_bottom = 0; + if (samples == gl_alpha_format) + { + int x, y; + qboolean found; + + scan = (byte*)scaled+3; + + for (y = 0; y < scaled_height; y++, crop_top++) + { + found = false; + for (x = 0; x < scaled_width; x++) + { + scan = ((byte*)scaled + (y*scaled_width+x)*4+3); + if (*scan != 0) + found = true; + } + if (found) + break; + } + + crop_left = scaled_width; + crop_right = scaled_width; + + for (; y < scaled_height; y++) + { + for (x = 0; x < scaled_width; x++) + { + scan = ((byte*)scaled + (y*scaled_width+x)*4+3); + if (*scan != 0) + { + if (x < crop_left) + crop_left = x; + if (scaled_width-x-1 < crop_right) + crop_right = scaled_width-x-1; + crop_bottom = scaled_height-y-1; + } + } + } + } + + if (samples == gl_alpha_format && !force_standard_mipmap) + { + int generated_mipmaps = + GL_GenerateAlphaMipmaps (scaled, scaled_width, scaled_height); + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, generated_mipmaps); + qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, r_alphamasked_anisotropic->integer); + } + else + qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, r_anisotropic->integer); if (scaled_width != width || scaled_height != height) free(scaled); upload_width = scaled_width; upload_height = scaled_height; - if ( mipmap ) - qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_min); - else - qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_max); + qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, gl_filter_min); qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, gl_filter_max); - qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, r_anisotropic->value); return (samples == gl_alpha_format); } @@ -1283,9 +1445,9 @@ Returns has_alpha =============== */ -qboolean GL_Upload8 (byte *data, int width, int height, qboolean mipmap, qboolean is_sky ) +qboolean GL_Upload8 (byte *data, int width, int height, int picmip, qboolean filter) { - unsigned trans[512*256]; + unsigned trans[512*256]; // contains 32 bit RGBA color int i, s; int p; @@ -1319,21 +1481,21 @@ ((byte *)&trans[i])[2] = ((byte *)&d_8to24table[p])[2]; } } - return GL_Upload32 (trans, width, height, mipmap, false); + return GL_Upload32 ((byte*)trans, width, height, picmip, filter, false); } /* ================ -GL_LoadPic +GL_ReservePic -This is also used as an entry point for the generated r_notexture +Find a free image_t ================ */ -image_t *GL_LoadPic (char *name, byte *pic, int width, int height, imagetype_t type, int bits) +image_t *GL_FindFreeImage (char *name, int width, int height, imagetype_t type) { image_t *image; int i; - + // find a free image_t for (i=0, image=gltextures ; iwidth = width; image->height = height; image->type = type; + + image->texnum = TEXNUM_IMAGES + (image - gltextures); + + return image; +} + +/* +================ +GL_LoadPic + +This is also used as an entry point for the generated r_notexture +================ +*/ +image_t *GL_LoadPic (char *name, byte *pic, int width, int height, imagetype_t type, int bits) +{ + image_t *image; + int i; + int picmip; + + image = GL_FindFreeImage (name, width, height, type); if (type == it_skin && bits == 8) R_FloodFillSkin(pic, width, height); + + if (type == it_particle || type == it_pic) + picmip = 0; + else + picmip = gl_picmip->integer; - // load little pics into the scrap - if (image->type == it_pic && bits == 8 - && image->width < 64 && image->height < 64) + // load little particles into the scrap + if (type == it_particle && bits != 8 + && image->width <= 128 && image->height <= 128) { int x, y; - int i, j, k; + int i, j, k, l; int texnum; texnum = Scrap_AllocBlock (image->width, image->height, &x, &y); if (texnum == -1) goto nonscrap; scrap_dirty = true; - + // copy the texels into the scrap block k = 0; for (i=0 ; iheight ; i++) - for (j=0 ; jwidth ; j++, k++) - scrap_texels[texnum][(y+i)*BLOCK_WIDTH + x + j] = pic[k]; - image->texnum = TEXNUM_SCRAPS + texnum; + for (j=0 ; jwidth ; j++) + for (l = 0; l < 4; l++, k++) + scrap_texels[texnum][((y+i)*BLOCK_WIDTH + x + j)*4+l] = pic[k]; + image->texnum = TEXNUM_SCRAPS + texnum; // overwrite old texnum image->scrap = true; image->has_alpha = true; - image->sl = (x+0.01)/(float)BLOCK_WIDTH; - image->sh = (x+image->width-0.01)/(float)BLOCK_WIDTH; - image->tl = (y+0.01)/(float)BLOCK_WIDTH; - image->th = (y+image->height-0.01)/(float)BLOCK_WIDTH; + image->sl = (double)(x+0.5)/(double)BLOCK_WIDTH; + image->sh = (double)(x+image->width-0.5)/(double)BLOCK_WIDTH; + image->tl = (double)(y+0.5)/(double)BLOCK_HEIGHT; + image->th = (double)(y+image->height-0.5)/(double)BLOCK_HEIGHT; } else { nonscrap: image->scrap = false; - image->texnum = TEXNUM_IMAGES + (image - gltextures); GL_Bind(image->texnum); if (bits == 8) { - image->has_alpha = GL_Upload8 (pic, width, height, (image->type != it_pic && image->type != it_sky), image->type == it_sky ); + image->has_alpha = GL_Upload8 (pic, width, height, picmip, type <= it_wall); } else { - image->has_alpha = GL_Upload32 ((unsigned *)pic, width, height, (image->type != it_pic && image->type != it_sky), image->type == it_bump ); + image->has_alpha = GL_Upload32 (pic, width, height, picmip, type <= it_wall, type >= it_bump); } - image->upload_width = upload_width; // after power of 2 and scales - image->upload_height = upload_height; + + if (type == it_pic) + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 0); + image->paletted = uploaded_paletted; + + // size in pixels after power of 2 and scales + image->upload_width = upload_width; + image->upload_height = upload_height; + + // vertex offset to apply when cropping + image->crop_left = crop_left; + image->crop_top = crop_top; + + // size in pixels after cropping + image->crop_width = upload_width-crop_left-crop_right; + image->crop_height = upload_height-crop_top-crop_bottom; + + // texcoords to use when not cropping image->sl = 0; image->sh = 1; image->tl = 0; image->th = 1; + + // texcoords to use when cropping + image->crop_sl = 0 + (float)crop_left/(float)upload_width; + image->crop_sh = 1 - (float)crop_right/(float)upload_width; + image->crop_tl = 0 + (float)crop_top/(float)upload_height; + image->crop_th = 1 - (float)crop_bottom/(float)upload_height; } COMPUTE_HASH_KEY( image->hash_key, name, i ); @@ -1534,20 +1743,29 @@ pic = NULL; palette = NULL; - // try to load .tga first + // Try to load the image with different file extensions, in the following + // order of decreasing preference: TGA, JPEG, PCX, and WAL. + LoadTGA (va("%s.tga", shortname), &pic, &width, &height); if (pic) { image = GL_LoadPic (name, pic, width, height, type, 32); goto done; } + LoadJPG (va("%s.jpg", shortname), &pic, &width, &height); if (pic) { image = GL_LoadPic (name, pic, width, height, type, 32); goto done; } - // then comes .pcx + + // TGA and JPEG are the only file types used for heightmaps and + // normalmaps, so if we haven't found it yet, it isn't there, and we can + // save ourselves a file lookup. + if (type == it_bump) + goto done; + LoadPCX (va("%s.pcx", shortname), &pic, &palette, &width, &height); if (pic) { @@ -1555,7 +1773,6 @@ goto done; } - // then comes .wal if (type == it_wall) image = GL_LoadWal (va("%s.wal", shortname)); @@ -1564,6 +1781,9 @@ free(pic); if (palette) free(palette); + + if (image != NULL) + image->script = RS_FindScript (shortname); ret_image: return image; @@ -1604,7 +1824,7 @@ continue; // used this sequence if (!image->registration_sequence) continue; // free image_t slot - if (image->type == it_pic || image->type == it_sprite) + if (image->type == it_pic || image->type == it_sprite || image->type == it_particle) continue; // don't free pics or particles // free it qglDeleteTextures (1, (unsigned *)&image->texnum ); @@ -1629,7 +1849,21 @@ LoadPCX ("pics/colormap.pcx", &pic, &pal, &width, &height); if (!pal) - Com_Error (ERR_FATAL, "Couldn't load pics/colormap.pcx"); + { + Com_Error (ERR_FATAL, + "Couldn't load pics/colormap.pcx\n" + "The game executable cannot find its data files. This means\n" + "the game is likely not installed correctly." + // TODO: automatically generate a list of paths where the data + // files should be +#if defined UNIX_VARIANT + " If you\ninstalled the game from the repository of a Linux\n" + "distribution, please report this to ther package\n" + "maintainers and have them check the README for packaging\n" + "instructions." +#endif //UNIX_VARIANT + ); + } for (i=0 ; i<256 ; i++) { @@ -1649,16 +1883,21 @@ return 0; } +// TODO: have r_newrefdef available before calling these, put r_mirroretxture +// in that struct, base it on the viewport specified in that struct. (Needed +// for splitscreen.) void R_InitMirrorTextures( void ) { byte *data; int size; + int size_oneside; //init the partial screen texture - size = 512 * 512 * 4; + size_oneside = ceil((512.0f/1080.0f)*(float)viddef.height); + size = size_oneside * size_oneside * 4; data = malloc( size ); memset( data, 255, size ); - r_mirrortexture = GL_LoadPic( "***r_mirrortexture***", (byte *)data, 512, 512, it_pic, 32 ); + r_mirrortexture = GL_LoadPic( "***r_mirrortexture***", (byte *)data, size_oneside, size_oneside, it_pic, 32 ); free ( data ); } @@ -1702,10 +1941,11 @@ Draw_GetPalette (); - R_InitBloomTextures();//BLOOMS R_InitMirrorTextures();//MIRRORS R_InitDepthTextures();//DEPTH(SHADOWMAPS) R_FB_InitTextures();//FULLSCREEN EFFECTS + R_SI_InitTextures();//SIMPLE ITEMS + R_InitBloomTextures();//BLOOMS } /* @@ -1726,5 +1966,10 @@ qglDeleteTextures (1, (unsigned *)&image->texnum); memset (image, 0, sizeof(*image)); } + + memset (scrap_allocated, 0, sizeof(scrap_allocated)); + memset (scrap_texels, 0, sizeof(scrap_texels)); + scrap_dirty = false; + scrap_uploads = 0; } diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_image.h alien-arena-7.66+dfsg/source/ref_gl/r_image.h --- alien-arena-7.53+dfsg/source/ref_gl/r_image.h 2010-06-15 19:57:44.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_image.h 2013-06-22 20:07:35.000000000 +0000 @@ -20,14 +20,11 @@ /* - skins will be outline flood filled and mip mapped - pics and sprites with alpha will be outline flood filled - pic won't be mip mapped - - model skin - sprite frame - wall texture - pic + Mipmaps are generated for all texture types. If type <= it_wall, brightness + and contrast settings are applied to it at load time. If type >= it_bump, + the standard mipmapping/anisotropic settings are always used, otherwise they + are only used if the entire texture has the same alpha value. If type != + it_pic and type != it_particle, picmip settings are applied at load time. */ @@ -38,7 +35,8 @@ it_wall, it_pic, it_sky, - it_bump + it_bump, + it_particle } imagetype_t; typedef struct image_s @@ -50,9 +48,10 @@ int width, height; // source image int upload_width, upload_height; // after power of two and picmip int registration_sequence; // 0 = free - struct msurface_s *texturechain; // for sort-by-texture world drawing int texnum; // gl texture binding float sl, tl, sh, th; // 0,0 - 1,1 unless part of the scrap + int crop_left, crop_top, crop_width, crop_height; //for cropped 2D drawing + float crop_sl, crop_tl, crop_sh, crop_th; // texcoords of cropped corners qboolean scrap; qboolean has_alpha; qboolean paletted; @@ -107,6 +106,7 @@ extern image_t *r_voltagetexture; extern image_t *r_raintexture; extern image_t *r_leaftexture; +extern image_t *r_trashtexture; extern image_t *r_splashtexture; extern image_t *r_splash2texture; extern image_t *r_flagtexture; diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_iqm.c alien-arena-7.66+dfsg/source/ref_gl/r_iqm.c --- alien-arena-7.53+dfsg/source/ref_gl/r_iqm.c 2011-12-22 20:26:37.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_iqm.c 2013-06-26 15:56:34.000000000 +0000 @@ -24,6 +24,9 @@ #include "r_local.h" #include "r_iqm.h" #include "r_ragdoll.h" +#include "r_lodcalc.h" + +#define RAGDOLLVBO 1 #if !defined max #define max(a,b) (((a)<(b)) ? (b) : (a)) @@ -32,9 +35,18 @@ static vec3_t NormalsArray[MAX_VERTICES]; static vec4_t TangentsArray[MAX_VERTICES]; +static vertCache_t *vbo_st; +static vertCache_t *vbo_xyz; +static vertCache_t *vbo_normals; +static vertCache_t *vbo_tangents; +static vertCache_t *vbo_indices; +static qboolean has_vbo; +qboolean use_vbo; + float modelpitch; extern void Q_strncpyz( char *dest, const char *src, size_t size ); +extern void MYgluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); //these matrix functions should be moved to matrixlib.c or similar @@ -337,7 +349,7 @@ strcpy( a_string, COM_Parse( &s ) ); mod->ragdoll.hasHelmet = atoi(a_string); } - else + else { Com_Printf("IQM_ReadRagDollFile: read fail\n"); } @@ -345,20 +357,20 @@ } fclose( fp ); } - + return true; } qboolean Mod_INTERQUAKEMODEL_Load(model_t *mod, void *buffer) { iqmheader_t *header; - int i, j; + int i, j, k; const int *inelements; float *vposition = NULL, *vtexcoord = NULL, *vnormal = NULL, *vtangent = NULL; - unsigned char *vblendweights = NULL; + //unsigned char *vblendweights = NULL; unsigned char *pbase; - iqmjoint_t *joint; - iqmjoint2_t *joint2; + iqmjoint_t *joint = NULL; + iqmjoint2_t *joint2 = NULL; matrix3x4_t *inversebaseframe; iqmpose_t *poses; iqmpose2_t *poses2; @@ -410,6 +422,7 @@ header->num_frames = LittleLong(header->num_frames); header->num_framechannels = LittleLong(header->num_framechannels); header->ofs_frames = LittleLong(header->ofs_frames); + header->ofs_bounds = LittleLong(header->ofs_bounds); header->num_comment = LittleLong(header->num_comment); header->ofs_comment = LittleLong(header->ofs_comment); header->num_extensions = LittleLong(header->num_extensions); @@ -426,7 +439,7 @@ return false; } - mod->extradata = Hunk_Begin (0x300000); + mod->extradata = Hunk_Begin (0x150000); va = (iqmvertexarray_t *)(pbase + header->ofs_vertexarrays); for (i = 0;i < (int)header->num_vertexarrays;i++) @@ -464,13 +477,15 @@ case IQM_BLENDWEIGHTS: if (va[i].format == IQM_UBYTE && va[i].size == 4) { - vblendweights = (unsigned char *)Hunk_Alloc(header->num_vertexes * 4 * sizeof(unsigned char)); - memcpy(vblendweights, (unsigned char *)(pbase + va[i].offset), header->num_vertexes * 4 * sizeof(unsigned char)); + /*vblendweights = (unsigned char *)Hunk_Alloc(header->num_vertexes * 4 * sizeof(unsigned char)); + memcpy(vblendweights, (unsigned char *)(pbase + va[i].offset), header->num_vertexes * 4 * sizeof(unsigned char));*/ + mod->blendweights = (unsigned char *)Hunk_Alloc(header->num_vertexes * 4 * sizeof(unsigned char)); + memcpy(mod->blendweights, (unsigned char *)(pbase + va[i].offset), header->num_vertexes * 4 * sizeof(unsigned char)); } break; } } - if (!vposition || !vtexcoord || !mod->blendindexes || !vblendweights) + if (!vposition || !vtexcoord || !mod->blendindexes || !mod->blendweights) { Com_Printf("%s is missing vertex array data\n", mod->name); return false; @@ -489,7 +504,7 @@ mod->num_triangles = header->num_triangles; // load the joints - if(LittleLong(header->version) == 1) + if( header->version == 1 ) { joint = (iqmjoint_t *) (pbase + header->ofs_joints); mod->joints = (iqmjoint_t*)Hunk_Alloc (header->num_joints * sizeof(iqmjoint_t)); @@ -505,7 +520,7 @@ } } } - else + else { joint2 = (iqmjoint2_t *) (pbase + header->ofs_joints); mod->joints2 = (iqmjoint2_t*)Hunk_Alloc (header->num_joints * sizeof(iqmjoint2_t)); @@ -519,20 +534,20 @@ mod->joints2[i].rotation[j] = LittleFloat(joint2[i].rotation[j]); mod->joints2[i].scale[j] = LittleFloat(joint2[i].scale[j]); } - mod->joints2[i].rotation[3] = LittleFloat(joint2[i].rotation[3]); + mod->joints2[i].rotation[3] = LittleFloat(joint2[i].rotation[3]); } } //these don't need to be a part of mod - remember to free them mod->baseframe = (matrix3x4_t*)Hunk_Alloc (header->num_joints * sizeof(matrix3x4_t)); inversebaseframe = (matrix3x4_t*)malloc (header->num_joints * sizeof(matrix3x4_t)); - if(LittleLong(header->version) == 1) + if( header->version == 1 ) { for(i = 0; i < (int)header->num_joints; i++) { vec3_t rot; vec4_t q_rot; - iqmjoint_t j = joint[i]; + iqmjoint_t j = mod->joints[i]; //first need to make a vec4 quat from our rotation vec VectorSet(rot, j.rotation[0], j.rotation[1], j.rotation[2]); @@ -555,11 +570,13 @@ { for(i = 0; i < (int)header->num_joints; i++) { - iqmjoint2_t j = joint2[i]; + iqmjoint2_t j = mod->joints2[i]; Matrix3x4_FromQuatAndVectors(&mod->baseframe[i], j.rotation, j.origin, j.scale); Matrix3x4_Invert(&inversebaseframe[i], mod->baseframe[i]); + assert(j.parent < (int)header->num_joints); + if(j.parent >= 0) { matrix3x4_t temp; @@ -571,7 +588,7 @@ } } - if(LittleLong(header->version == 1)) + if( header->version == 1 ) { poses = (iqmpose_t *) (pbase + header->ofs_poses); mod->frames = (matrix3x4_t*)Hunk_Alloc (header->num_frames * header->num_poses * sizeof(matrix3x4_t)); @@ -586,15 +603,23 @@ vec4_t q_rot; matrix3x4_t m, temp; - translate[0] = p.channeloffset[0]; if(p.channelmask&0x01) translate[0] += *framedata++ * p.channelscale[0]; - translate[1] = p.channeloffset[1]; if(p.channelmask&0x02) translate[1] += *framedata++ * p.channelscale[1]; - translate[2] = p.channeloffset[2]; if(p.channelmask&0x04) translate[2] += *framedata++ * p.channelscale[2]; - rotate[0] = p.channeloffset[3]; if(p.channelmask&0x08) rotate[0] += *framedata++ * p.channelscale[3]; - rotate[1] = p.channeloffset[4]; if(p.channelmask&0x10) rotate[1] += *framedata++ * p.channelscale[4]; - rotate[2] = p.channeloffset[5]; if(p.channelmask&0x20) rotate[2] += *framedata++ * p.channelscale[5]; - scale[0] = p.channeloffset[6]; if(p.channelmask&0x40) scale[0] += *framedata++ * p.channelscale[6]; - scale[1] = p.channeloffset[7]; if(p.channelmask&0x80) scale[1] += *framedata++ * p.channelscale[7]; - scale[2] = p.channeloffset[8]; if(p.channelmask&0x100) scale[2] += *framedata++ * p.channelscale[8]; + p.parent = LittleLong(p.parent); + p.channelmask = LittleLong(p.channelmask); + for(k = 0; k < 9; k++) + { + p.channeloffset[k] = LittleFloat(p.channeloffset[k]); + p.channelscale[k] = LittleFloat(p.channelscale[k]); + } + + translate[0] = p.channeloffset[0]; if(p.channelmask&0x01) translate[0] += (unsigned short)LittleShort(*framedata++) * p.channelscale[0]; + translate[1] = p.channeloffset[1]; if(p.channelmask&0x02) translate[1] += (unsigned short)LittleShort(*framedata++) * p.channelscale[1]; + translate[2] = p.channeloffset[2]; if(p.channelmask&0x04) translate[2] += (unsigned short)LittleShort(*framedata++) * p.channelscale[2]; + rotate[0] = p.channeloffset[3]; if(p.channelmask&0x08) rotate[0] += (unsigned short)LittleShort(*framedata++) * p.channelscale[3]; + rotate[1] = p.channeloffset[4]; if(p.channelmask&0x10) rotate[1] += (unsigned short)LittleShort(*framedata++) * p.channelscale[4]; + rotate[2] = p.channeloffset[5]; if(p.channelmask&0x20) rotate[2] += (unsigned short)LittleShort(*framedata++) * p.channelscale[5]; + scale[0] = p.channeloffset[6]; if(p.channelmask&0x40) scale[0] += (unsigned short)LittleShort(*framedata++) * p.channelscale[6]; + scale[1] = p.channeloffset[7]; if(p.channelmask&0x80) scale[1] += (unsigned short)LittleShort(*framedata++) * p.channelscale[7]; + scale[2] = p.channeloffset[8]; if(p.channelmask&0x100) scale[2] += (unsigned short)LittleShort(*framedata++) * p.channelscale[8]; // Concatenate each pose with the inverse base pose to avoid doing this at animation time. // If the joint has a parent, then it needs to be pre-concatenated with its parent's base pose. // Thus it all negates at animation time like so: @@ -631,16 +656,24 @@ vec4_t rotate; matrix3x4_t m, temp; - translate[0] = p.channeloffset[0]; if(p.channelmask&0x01) translate[0] += *framedata++ * p.channelscale[0]; - translate[1] = p.channeloffset[1]; if(p.channelmask&0x02) translate[1] += *framedata++ * p.channelscale[1]; - translate[2] = p.channeloffset[2]; if(p.channelmask&0x04) translate[2] += *framedata++ * p.channelscale[2]; - rotate[0] = p.channeloffset[3]; if(p.channelmask&0x08) rotate[0] += *framedata++ * p.channelscale[3]; - rotate[1] = p.channeloffset[4]; if(p.channelmask&0x10) rotate[1] += *framedata++ * p.channelscale[4]; - rotate[2] = p.channeloffset[5]; if(p.channelmask&0x20) rotate[2] += *framedata++ * p.channelscale[5]; - rotate[3] = p.channeloffset[6]; if(p.channelmask&0x40) rotate[3] += *framedata++ * p.channelscale[6]; - scale[0] = p.channeloffset[7]; if(p.channelmask&0x80) scale[0] += *framedata++ * p.channelscale[7]; - scale[1] = p.channeloffset[8]; if(p.channelmask&0x100) scale[1] += *framedata++ * p.channelscale[8]; - scale[2] = p.channeloffset[9]; if(p.channelmask&0x200) scale[2] += *framedata++ * p.channelscale[9]; + p.parent = LittleLong(p.parent); + p.channelmask = LittleLong(p.channelmask); + for(k = 0; k < 10; k++) + { + p.channeloffset[k] = LittleFloat(p.channeloffset[k]); + p.channelscale[k] = LittleFloat(p.channelscale[k]); + } + + translate[0] = p.channeloffset[0]; if(p.channelmask&0x01) translate[0] += (unsigned short)LittleShort(*framedata++) * p.channelscale[0]; + translate[1] = p.channeloffset[1]; if(p.channelmask&0x02) translate[1] += (unsigned short)LittleShort(*framedata++) * p.channelscale[1]; + translate[2] = p.channeloffset[2]; if(p.channelmask&0x04) translate[2] += (unsigned short)LittleShort(*framedata++) * p.channelscale[2]; + rotate[0] = p.channeloffset[3]; if(p.channelmask&0x08) rotate[0] += (unsigned short)LittleShort(*framedata++) * p.channelscale[3]; + rotate[1] = p.channeloffset[4]; if(p.channelmask&0x10) rotate[1] += (unsigned short)LittleShort(*framedata++) * p.channelscale[4]; + rotate[2] = p.channeloffset[5]; if(p.channelmask&0x20) rotate[2] += (unsigned short)LittleShort(*framedata++) * p.channelscale[5]; + rotate[3] = p.channeloffset[6]; if(p.channelmask&0x40) rotate[3] += (unsigned short)LittleShort(*framedata++) * p.channelscale[6]; + scale[0] = p.channeloffset[7]; if(p.channelmask&0x80) scale[0] += (unsigned short)LittleShort(*framedata++) * p.channelscale[7]; + scale[1] = p.channeloffset[8]; if(p.channelmask&0x100) scale[1] += (unsigned short)LittleShort(*framedata++) * p.channelscale[8]; + scale[2] = p.channeloffset[9]; if(p.channelmask&0x200) scale[2] += (unsigned short)LittleShort(*framedata++) * p.channelscale[9]; // Concatenate each pose with the inverse base pose to avoid doing this at animation time. // If the joint has a parent, then it needs to be pre-concatenated with its parent's base pose. // Thus it all negates at animation time like so: @@ -738,7 +771,7 @@ { inelements = (const int *) (pbase + header->ofs_neighbors); - mod->neighbors = Hunk_Alloc(header->num_triangles * sizeof(neighbors_t)); + mod->neighbors = (neighbors_t*)Hunk_Alloc(header->num_triangles * sizeof(neighbors_t)); for (i = 0;i < (int)header->num_triangles;i++) { @@ -754,19 +787,14 @@ // load texture coodinates mod->st = (fstvert_t*)Hunk_Alloc (header->num_vertexes * sizeof(fstvert_t)); - mod->blendweights = (float *)Hunk_Alloc(header->num_vertexes * 4 * sizeof(float)); + //mod->blendweights = (float *)Hunk_Alloc(header->num_vertexes * 4 * sizeof(float)); for (i = 0;i < (int)header->num_vertexes;i++) { - mod->st[i].s = vtexcoord[0]; - mod->st[i].t = vtexcoord[1]; + mod->st[i].s = LittleFloat(vtexcoord[0]); + mod->st[i].t = LittleFloat(vtexcoord[1]); vtexcoord+=2; - - for(j = 0; j < 4; j++) - mod->blendweights[i*4+j] = vblendweights[j]/255.0f; - - vblendweights+=4; } /* @@ -794,13 +822,12 @@ strcpy( mod->skinname, skinname ); //load shader for skin - COM_StripExtension( skinname, shortname ); - mod->script = RS_FindScript( shortname ); + mod->script = mod->skins[0]->script; if ( mod->script ) RS_ReadyScript( (rscript_t *)mod->script ); } } - + /* * get ragdoll info from .rgd file */ @@ -811,7 +838,7 @@ { mod->hasRagDoll = IQM_ReadRagDollFile( fullname, mod ); } - + //free temp non hunk mem if(inversebaseframe) free(inversebaseframe); @@ -988,19 +1015,46 @@ } } } + // The actual vertex generation based on the matrixes follows... { const mvertex_t *srcpos = (const mvertex_t *)currentmodel->vertexes; const mnormal_t *srcnorm = (const mnormal_t *)currentmodel->normal; const mtangent_t *srctan = (const mtangent_t *)currentmodel->tangent; - + mvertex_t *dstpos = (mvertex_t *)currentmodel->animatevertexes; mnormal_t *dstnorm = (mnormal_t *)currentmodel->animatenormal; mtangent_t *dsttan = (mtangent_t *)currentmodel->animatetangent; const unsigned char *index = currentmodel->blendindexes; - - float *weight = currentmodel->blendweights; + + const unsigned char *weight = currentmodel->blendweights; + + //we need to skip this vbo check if not using a shader - since the animation is done in the shader + has_vbo = false; + //a lot of conditions need to be enabled in order to use GPU animation + if (use_vbo && (gl_state.vbo && gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) && + (r_shaders->integer || ( currententity->flags & ( RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE | RF_SHELL_DOUBLE | RF_SHELL_HALF_DAM)))) + { + vbo_xyz = R_VCFindCache(VBO_STORE_XYZ, currentmodel); + vbo_st = R_VCFindCache(VBO_STORE_ST, currentmodel); + vbo_normals = R_VCFindCache(VBO_STORE_NORMAL, currentmodel); + vbo_tangents = R_VCFindCache(VBO_STORE_TANGENT, currentmodel); + vbo_indices = R_VCFindCache(VBO_STORE_INDICES, currentmodel); + if(vbo_xyz && vbo_st && vbo_normals && vbo_tangents && vbo_indices) + { + has_vbo = true; + goto skipLoad; + } + else + { + R_VCLoadData(VBO_STATIC, currentmodel->numvertexes*sizeof(vec3_t), currentmodel->vertexes, VBO_STORE_XYZ, currentmodel); + R_VCLoadData(VBO_STATIC, currentmodel->numvertexes*sizeof(vec2_t), currentmodel->st, VBO_STORE_ST, currentmodel); + R_VCLoadData(VBO_STATIC, currentmodel->numvertexes*sizeof(vec3_t), currentmodel->normal, VBO_STORE_NORMAL, currentmodel); + R_VCLoadData(VBO_STATIC, currentmodel->numvertexes*sizeof(vec4_t), currentmodel->tangent, VBO_STORE_TANGENT, currentmodel); + R_VCLoadData(VBO_STATIC, currentmodel->num_triangles*3*sizeof(unsigned int), currentmodel->tris, VBO_STORE_INDICES, currentmodel); + } + } for(i = 0; i < currentmodel->numvertexes; i++) { @@ -1015,13 +1069,13 @@ // sorted order from highest weight to lowest weight. Weights with // 0 values, which are always at the end, are unused. - Matrix3x4_Scale(&mat, currentmodel->outframe[index[0]], weight[0]); + Matrix3x4_Scale(&mat, currentmodel->outframe[index[0]], weight[0]/255.0f); - for(j = 1; j < 4 && weight[j]; j++) + for(j = 1; j < 4 && weight[j]; j++) { - Matrix3x4_ScaleAdd (&mat, ¤tmodel->outframe[index[j]], weight[j], &mat); + Matrix3x4_ScaleAdd (&mat, ¤tmodel->outframe[index[j]], weight[j]/255.0f, &mat); } - + // Transform attributes by the blended matrix. // Position uses the full 3x4 transformation matrix. // Normals and tangents only use the 3x3 rotation part @@ -1056,11 +1110,12 @@ index += 4; weight += 4; - } + } +skipLoad: ; } } -void IQM_AnimateRagdoll(int RagDollID) +void IQM_AnimateRagdoll(int RagDollID, int shellEffect) { //we only deal with one frame @@ -1127,17 +1182,44 @@ mtangent_t *dsttan = (mtangent_t *)RagDoll[RagDollID].ragDollMesh->animatetangent; const unsigned char *index = RagDoll[RagDollID].ragDollMesh->blendindexes; - float *weight = RagDoll[RagDollID].ragDollMesh->blendweights; + const unsigned char *weight = RagDoll[RagDollID].ragDollMesh->blendweights; + + //we need to skip this vbo check if not using a shader - since the animation is done in the shader (might want to check for normalmap stage) + has_vbo = false; + //a lot of conditions need to be enabled in order to use GPU animation + + if (use_vbo && (gl_state.vbo && RagDoll[RagDollID].script && gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) && + (r_shaders->integer || shellEffect)) + { + vbo_xyz = R_VCFindCache(VBO_STORE_XYZ, RagDoll[RagDollID].ragDollMesh); + vbo_st = R_VCFindCache(VBO_STORE_ST, RagDoll[RagDollID].ragDollMesh); + vbo_normals = R_VCFindCache(VBO_STORE_NORMAL, RagDoll[RagDollID].ragDollMesh); + vbo_tangents = R_VCFindCache(VBO_STORE_TANGENT, RagDoll[RagDollID].ragDollMesh); + vbo_indices = R_VCFindCache(VBO_STORE_INDICES, RagDoll[RagDollID].ragDollMesh); + if(vbo_xyz && vbo_st && vbo_normals && vbo_tangents && vbo_indices) + { + has_vbo = true; + goto skipLoad; + } + else + { + R_VCLoadData(VBO_STATIC, RagDoll[RagDollID].ragDollMesh->numvertexes*sizeof(vec3_t), RagDoll[RagDollID].ragDollMesh->vertexes, VBO_STORE_XYZ, RagDoll[RagDollID].ragDollMesh); + R_VCLoadData(VBO_STATIC, RagDoll[RagDollID].ragDollMesh->numvertexes*sizeof(vec2_t), RagDoll[RagDollID].ragDollMesh->st, VBO_STORE_ST, RagDoll[RagDollID].ragDollMesh); + R_VCLoadData(VBO_STATIC, RagDoll[RagDollID].ragDollMesh->numvertexes*sizeof(vec3_t), RagDoll[RagDollID].ragDollMesh->normal, VBO_STORE_NORMAL, RagDoll[RagDollID].ragDollMesh); + R_VCLoadData(VBO_STATIC, RagDoll[RagDollID].ragDollMesh->numvertexes*sizeof(vec4_t), RagDoll[RagDollID].ragDollMesh->tangent, VBO_STORE_TANGENT, RagDoll[RagDollID].ragDollMesh); + R_VCLoadData(VBO_STATIC, RagDoll[RagDollID].ragDollMesh->num_triangles*3*sizeof(unsigned int), RagDoll[RagDollID].ragDollMesh->tris, VBO_STORE_INDICES, RagDoll[RagDollID].ragDollMesh); + } + } for(i = 0; i < RagDoll[RagDollID].ragDollMesh->numvertexes; i++) { matrix3x4_t mat; - Matrix3x4_Scale(&mat, RagDoll[RagDollID].ragDollMesh->outframe[index[0]], weight[0]); + Matrix3x4_Scale(&mat, RagDoll[RagDollID].ragDollMesh->outframe[index[0]], weight[0]/255.0f); - for(j = 1; j < 4 && weight[j]; j++) + for(j = 1; j < 4 && weight[j]; j++) { - Matrix3x4_ScaleAdd (&mat, &RagDoll[RagDollID].ragDollMesh->outframe[index[j]], weight[j], &mat); + Matrix3x4_ScaleAdd (&mat, &RagDoll[RagDollID].ragDollMesh->outframe[index[j]], weight[j]/255.0f, &mat); } Matrix3x4_Transform(dstpos, mat, *srcpos); @@ -1156,6 +1238,7 @@ index += 4; weight += 4; } +skipLoad: ; } } @@ -1166,7 +1249,8 @@ VectorScale(baselight, gl_modulate->value, lightOut); - if(!gl_vlights->value) + //probably will remove this - maybe we can get a faster algorithm and redo one day + //if(!gl_vlights->integer) return; lscale = 3.0; @@ -1176,12 +1260,50 @@ VectorScale(baselight, l, lightOut); } -void IQM_DrawFrame(int skinnum) +void R_Mesh_SetupShell (int shell_skinnum, qboolean ragdoll, qboolean using_varray, vec3_t lightcolor); +void R_Mesh_SetupGLSL (int skinnum, rscript_t *rs, vec3_t lightcolor); + +inline void IQM_DrawVBO (qboolean tangents) +{ + qglEnableClientState( GL_VERTEX_ARRAY ); + GL_BindVBO(vbo_xyz); + qglVertexPointer(3, GL_FLOAT, 0, 0); + + qglEnableClientState(GL_TEXTURE_COORD_ARRAY); + GL_BindVBO(vbo_st); + qglTexCoordPointer(2, GL_FLOAT, 0, 0); + + KillFlags |= KILL_NORMAL_POINTER; + qglEnableClientState( GL_NORMAL_ARRAY ); + GL_BindVBO(vbo_normals); + qglNormalPointer(GL_FLOAT, 0, 0); + + if (tangents) + { + glEnableVertexAttribArrayARB (1); + GL_BindVBO(vbo_tangents); + glVertexAttribPointerARB(1, 4, GL_FLOAT, GL_FALSE, 0, 0); + } + + GL_BindVBO(NULL); + + GL_BindIBO(vbo_indices); + + glEnableVertexAttribArrayARB(6); + glEnableVertexAttribArrayARB(7); + glVertexAttribPointerARB(6, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(unsigned char)*4, currentmodel->blendweights); + glVertexAttribPointerARB(7, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof(unsigned char)*4, currentmodel->blendindexes); + + qglDrawElements(GL_TRIANGLES, currentmodel->num_triangles*3, GL_UNSIGNED_INT, 0); + + GL_BindIBO(NULL); +} + +void IQM_DrawFrame(int skinnum, qboolean ragdoll, float shellAlpha) { int i, j; vec3_t vectors[3]; rscript_t *rs = NULL; - rs_stage_t *stage = NULL; float shellscale; float alpha, basealpha; vec3_t lightcolor; @@ -1189,11 +1311,10 @@ int va = 0; qboolean mirror = false; qboolean glass = false; - qboolean depthmaskrscipt = false; - if (r_shaders->value) + if (r_shaders->integer) rs = currententity->script; - + VectorCopy(shadelight, lightcolor); for (i=0;ialpha; if (!(r_newrefdef.rdflags & RDF_NOWORLDMODEL)) { - if(gl_mirror->value) + if(gl_mirror->integer) mirror = true; else glass = true; @@ -1221,167 +1342,154 @@ if(( currententity->flags & ( RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE | RF_SHELL_DOUBLE | RF_SHELL_HALF_DAM) ) ) { - //shell render - va=0; - VArray = &VArrayVerts[0]; - - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) { - - vec3_t lightVec, lightVal; - - R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); - qglNormalPointer(GL_FLOAT, 0, NormalsArray); - glEnableVertexAttribArrayARB (1); - glVertexAttribPointerARB(1, 4, GL_FLOAT,GL_FALSE, 0, TangentsArray); - - R_GetLightVals(currententity->origin, false, false); - - //send light level and color to shader, ramp up a bit - VectorCopy(lightcolor, lightVal); - for(i = 0; i < 3; i++) { - if(lightVal[i] < shadelight[i]/2) - lightVal[i] = shadelight[i]/2; //never go completely black - lightVal[i] *= 5; - lightVal[i] += dynFactor; - if(lightVal[i] > 1.0+dynFactor) - lightVal[i] = 1.0+dynFactor; - } - - //simple directional(relative light position) - VectorSubtract(lightPosition, currententity->origin, lightVec); - VectorMA(lightPosition, 1.0, lightVec, lightPosition); - R_ModelViewTransform(lightPosition, lightVec); + qglEnable (GL_BLEND); + qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - //brighten things slightly - for (i = 0; i < 3; i++ ) - lightVal[i] *= 1.25; + R_Mesh_SetupShell (r_shelltexture2->texnum, ragdoll, !has_vbo, lightcolor); - GL_EnableMultitexture( true ); + if (ragdoll) + shellscale = 1.6; + else if((currententity->flags & (RF_WEAPONMODEL | RF_SHELL_GREEN)) || (gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer)) + shellscale = 0.4; + else + shellscale = 1.6; - glUseProgramObjectARB( g_meshprogramObj ); + if(!has_vbo) + { + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) + { + glUniform1iARB(g_location_useGPUanim, 0); + } - glUniform3fARB( g_location_meshlightPosition, lightVec[0], lightVec[1], lightVec[2]); + for (i=0; inum_triangles; i++) + { + for (j=0; j<3; j++) + { + index_xyz = index_st = currentmodel->tris[i].vertex[j]; - GL_SelectTexture( GL_TEXTURE1); - qglBindTexture (GL_TEXTURE_2D, r_shelltexture2->texnum); - glUniform1iARB( g_location_baseTex, 1); + VArray[0] = currentmodel->animatevertexes[index_xyz].position[0] + currentmodel->animatenormal[index_xyz].dir[0]*shellscale; + VArray[1] = currentmodel->animatevertexes[index_xyz].position[1] + currentmodel->animatenormal[index_xyz].dir[1]*shellscale; + VArray[2] = currentmodel->animatevertexes[index_xyz].position[2] + currentmodel->animatenormal[index_xyz].dir[2]*shellscale; - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, r_shellnormal->texnum); - glUniform1iARB( g_location_normTex, 0); + VArray[3] = currentmodel->st[index_st].s; + VArray[4] = currentmodel->st[index_st].t; - GL_SelectTexture( GL_TEXTURE0); + VArray[5] = shadelight[0]; + VArray[6] = shadelight[1]; + VArray[7] = shadelight[2]; + + // normally fixed at 0.33, decreases gradually for + // ragdolls + VArray[8] = shellAlpha; - glUniform1iARB( g_location_useFX, 0); + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) + { + VectorCopy(currentmodel->animatenormal[index_xyz].dir, NormalsArray[va]); //shader needs normal array + Vector4Copy(currentmodel->animatetangent[index_xyz].dir, TangentsArray[va]); + VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; // increment pointer and counter + } + else + VArray += VertexSizes[VERT_COLOURED_TEXTURED]; // increment pointer and counter + va++; + } + } - glUniform1iARB( g_location_useGlow, 0); + R_DrawVarrays(GL_TRIANGLES, 0, va); + } + else + { + glUniform1iARB(g_location_useGPUanim, 1); - glUniform3fARB( g_location_color, lightVal[0], lightVal[1], lightVal[2]); + glUniformMatrix3x4fvARB( g_location_outframe, currentmodel->num_joints, GL_FALSE, (const GLfloat *) currentmodel->outframe ); - glUniform1fARB( g_location_meshTime, rs_realtime); + IQM_DrawVBO (true); + } - glUniform1iARB( g_location_meshFog, map_fog); - } - else + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) { - GL_Bind(r_shelltexture2->texnum); - R_InitVArrays (VERT_COLOURED_TEXTURED); + glUseProgramObjectARB( 0 ); + GL_EnableMultitexture( false ); + if (ragdoll) + qglDepthMask(true); } + } + else if((mirror || glass ) && has_vbo) + { + //render glass with glsl shader + vec3_t lightVec; - if((currententity->flags & (RF_WEAPONMODEL | RF_SHELL_GREEN)) || (gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value)) - shellscale = 0.4; - else - shellscale = 1.6; + KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER | KILL_TMU2_POINTER | KILL_NORMAL_POINTER); - for (i=0; inum_triangles; i++) - { - for (j=0; j<3; j++) - { - index_xyz = index_st = currentmodel->tris[i].vertex[j]; + qglDepthMask(false); - VArray[0] = currentmodel->animatevertexes[index_xyz].position[0] + currentmodel->animatenormal[index_xyz].dir[0]*shellscale; - VArray[1] = currentmodel->animatevertexes[index_xyz].position[1] + currentmodel->animatenormal[index_xyz].dir[1]*shellscale; - VArray[2] = currentmodel->animatevertexes[index_xyz].position[2] + currentmodel->animatenormal[index_xyz].dir[2]*shellscale; - - VArray[3] = (currentmodel->animatevertexes[index_xyz].position[1] + currentmodel->animatevertexes[index_xyz].position[0]) * (1.0f/40.f); - VArray[4] = currentmodel->animatevertexes[index_xyz].position[2] * (1.0f/40.f) - r_newrefdef.time * 0.25f; - - VArray[5] = shadelight[0]; - VArray[6] = shadelight[1]; - VArray[7] = shadelight[2]; - VArray[8] = 0.33; - - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) { - VectorCopy(currentmodel->animatenormal[index_xyz].dir, NormalsArray[va]); //shader needs normal array - Vector4Copy(currentmodel->animatetangent[index_xyz].dir, TangentsArray[va]); - VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; // increment pointer and counter - } else - VArray += VertexSizes[VERT_COLOURED_TEXTURED]; // increment pointer and counter - va++; - } - } + R_ModelViewTransform(lightPosition, lightVec); + + glUseProgramObjectARB( g_glassprogramObj ); - if (!(!cl_gun->value && ( currententity->flags & RF_WEAPONMODEL ) ) ) + glUniform3fARB( g_location_gLightPos, lightVec[0], lightVec[1], lightVec[2]); + + GL_SelectTexture( GL_TEXTURE1); + if(mirror) + { + GL_Bind (r_mirrortexture->texnum); + } + else { - R_DrawVarrays(GL_TRIANGLES, 0, va, false); + GL_Bind (r_mirrorspec->texnum); } + glUniform1iARB( g_location_gmirTexture, 1); - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) - { - glUseProgramObjectARB( 0 ); - GL_EnableMultitexture( false ); - } + GL_SelectTexture( GL_TEXTURE0); + GL_Bind (r_mirrorspec->texnum); + glUniform1iARB( g_location_grefTexture, 0); + + glUniform1iARB( g_location_gFog, map_fog); + + glUniformMatrix3x4fvARB( g_location_gOutframe, currentmodel->num_joints, GL_FALSE, (const GLfloat *) currentmodel->outframe ); + + IQM_DrawVBO (false); + + glUseProgramObjectARB( 0 ); } - else if(!rs || mirror || glass) - { //base render no shaders - va=0; - VArray = &VArrayVerts[0]; + else if(mirror || glass) + { + //glass surfaces + //base render, no vbo, no shaders - if(mirror && !(currententity->flags & RF_WEAPONMODEL)) - R_InitVArrays(VERT_COLOURED_MULTI_TEXTURED); - else - R_InitVArrays (VERT_COLOURED_TEXTURED); + qglDepthMask(false); if(mirror) { - qglDepthMask(false); - if( !(currententity->flags & RF_WEAPONMODEL)) { + R_InitVArrays(VERT_COLOURED_MULTI_TEXTURED); GL_EnableMultitexture( true ); GL_SelectTexture( GL_TEXTURE0); GL_TexEnv ( GL_COMBINE_EXT ); - qglBindTexture (GL_TEXTURE_2D, r_mirrortexture->texnum); + GL_Bind (r_mirrortexture->texnum); qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE ); qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); GL_SelectTexture( GL_TEXTURE1); GL_TexEnv ( GL_COMBINE_EXT ); - qglBindTexture (GL_TEXTURE_2D, r_mirrorspec->texnum); + GL_Bind (r_mirrorspec->texnum); qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE ); qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PREVIOUS_EXT ); } else { + R_InitVArrays (VERT_COLOURED_TEXTURED); GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, r_mirrortexture->texnum); + GL_Bind (r_mirrortexture->texnum); } } - else if(glass) - { - qglDepthMask(false); - - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, r_reflecttexture->texnum); - } else { + R_InitVArrays (VERT_COLOURED_TEXTURED); GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, skinnum); - - R_GetLightVals(currententity->origin, false, false); + GL_Bind (r_reflecttexture->texnum); } - + for (i=0; inum_triangles; i++) { for (j=0; j<3; j++) @@ -1397,17 +1505,12 @@ VArray[5] = VArray[3] = -(currentmodel->st[index_st].s - DotProduct (currentmodel->animatenormal[index_xyz].dir, vectors[1])); VArray[6] = VArray[4] = currentmodel->st[index_st].t + DotProduct (currentmodel->animatenormal[index_xyz].dir, vectors[2]); } - else if(glass) + else { VArray[3] = -(currentmodel->st[index_st].s - DotProduct (currentmodel->animatenormal[index_xyz].dir, vectors[1])); VArray[4] = currentmodel->st[index_st].t + DotProduct (currentmodel->animatenormal[index_xyz].dir, vectors[2]); } - else - { - VArray[3] = currentmodel->st[index_st].s; - VArray[4] = currentmodel->st[index_st].t; - } - + IQM_Vlight (shadelight, ¤tmodel->animatenormal[index_xyz], currententity->angles, lightcolor); if(mirror && !(currententity->flags & RF_WEAPONMODEL) ) @@ -1431,188 +1534,25 @@ } } - if (!(!cl_gun->value && ( currententity->flags & RF_WEAPONMODEL ) ) ) - { - if(va > 0) - { - R_DrawVarrays(GL_TRIANGLES, 0, va, false); - } - } + R_DrawVarrays(GL_TRIANGLES, 0, va); if(mirror && !(currententity->flags & RF_WEAPONMODEL)) GL_EnableMultitexture( false ); - if(mirror || glass) - qglDepthMask(true); + qglDepthMask(true); } - else if(rs) - { //render with shaders - - if (rs->stage && rs->stage->has_alpha) - depthmaskrscipt = true; + else if(rs && rs->stage->normalmap && gl_normalmaps->integer && gl_glsl_shaders->integer && gl_state.glsl_shaders) + { + R_Mesh_SetupGLSL (skinnum, rs, lightcolor); - if (depthmaskrscipt) - qglDepthMask(false); - - stage=rs->stage; - - while (stage) + if(!has_vbo) { - va=0; - VArray = &VArrayVerts[0]; - GLSTATE_ENABLE_ALPHATEST - - if (stage->normalmap && (!gl_normalmaps->value || !gl_glsl_shaders->value || !gl_state.glsl_shaders)) - { - if(stage->next) - { - stage = stage->next; - continue; - } - else - goto done; - } - - if(!stage->normalmap) - { - R_InitVArrays (VERT_COLOURED_TEXTURED); - - GL_Bind (stage->texture->texnum); - - if (stage->blendfunc.blend) - { - GL_BlendFunction(stage->blendfunc.source,stage->blendfunc.dest); - GLSTATE_ENABLE_BLEND - } - else if (basealpha==1.0f) - { - GLSTATE_DISABLE_BLEND - } - else - { - GLSTATE_ENABLE_BLEND - GL_BlendFunction(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - alpha = basealpha; - } - - if (stage->alphashift.min || stage->alphashift.speed) - { - if (!stage->alphashift.speed && stage->alphashift.min > 0) - { - alpha=basealpha*stage->alphashift.min; - } - else if (stage->alphashift.speed) - { - alpha=basealpha*sin(rs_realtime * stage->alphashift.speed); - if (alpha < 0) alpha=-alpha*basealpha; - if (alpha > stage->alphashift.max) alpha=basealpha*stage->alphashift.max; - if (alpha < stage->alphashift.min) alpha=basealpha*stage->alphashift.min; - } - } - else - alpha=basealpha; - - if (!stage->alphamask) - GLSTATE_DISABLE_ALPHATEST - - if(stage->lightmap) - R_GetLightVals(currententity->origin, false, false); - } - - if(stage->normalmap) - { - vec3_t lightVec, lightVal; - - R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); - qglNormalPointer(GL_FLOAT, 0, NormalsArray); - glEnableVertexAttribArrayARB (1); - glVertexAttribPointerARB(1, 4, GL_FLOAT,GL_FALSE, 0, TangentsArray); - - R_GetLightVals(currententity->origin, false, true); - - //send light level and color to shader, ramp up a bit - VectorCopy(lightcolor, lightVal); - for(i = 0; i < 3; i++) - { - if(lightVal[i] < shadelight[i]/2) - lightVal[i] = shadelight[i]/2; //never go completely black - lightVal[i] *= 5; - lightVal[i] += dynFactor; - if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) { - if(lightVal[i] > 1.5) - lightVal[i] = 1.5; - } - else - { - if(lightVal[i] > 1.0+dynFactor) - lightVal[i] = 1.0+dynFactor; - } - } - - if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) - { - //fixed light source pointing down, slightly forward and to the left - lightPosition[0] = -1.0; - lightPosition[1] = 12.0; - lightPosition[2] = 8.0; - R_ModelViewTransform(lightPosition, lightVec); - } - else - { - //simple directional(relative light position) - VectorSubtract(lightPosition, currententity->origin, lightVec); - VectorMA(lightPosition, 5.0, lightVec, lightPosition); - R_ModelViewTransform(lightPosition, lightVec); - - //brighten things slightly - for (i = 0; i < 3; i++ ) - { - lightVal[i] *= 1.05; - } - } - - GL_EnableMultitexture( true ); - - glUseProgramObjectARB( g_meshprogramObj ); - - glUniform3fARB( g_location_meshlightPosition, lightVec[0], lightVec[1], lightVec[2]); - - GL_SelectTexture( GL_TEXTURE1); - qglBindTexture (GL_TEXTURE_2D, skinnum); - glUniform1iARB( g_location_baseTex, 1); - - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, stage->texture->texnum); - glUniform1iARB( g_location_normTex, 0); - - GL_SelectTexture( GL_TEXTURE2); - qglBindTexture (GL_TEXTURE_2D, stage->texture2->texnum); - glUniform1iARB( g_location_fxTex, 2); + glUniform1iARB(g_location_useGPUanim, 0); - GL_SelectTexture( GL_TEXTURE0); - - if(stage->fx) - glUniform1iARB( g_location_useFX, 1); - else - glUniform1iARB( g_location_useFX, 0); - - if(stage->glow) - glUniform1iARB( g_location_useGlow, 1); - else - glUniform1iARB( g_location_useGlow, 0); - - glUniform3fARB( g_location_color, lightVal[0], lightVal[1], lightVal[2]); - - //if using shadowmaps, offset self shadowed areas a bit so not to get too dark - if(gl_shadowmaps->value && !(currententity->flags & (RF_WEAPONMODEL | RF_NOSHADOWS))) - glUniform1fARB( g_location_minLight, 0.20); - else - glUniform1fARB( g_location_minLight, 0.15); - - glUniform1fARB( g_location_meshTime, rs_realtime); - - glUniform1iARB( g_location_meshFog, map_fog); - } + R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); + qglNormalPointer(GL_FLOAT, 0, NormalsArray); + glEnableVertexAttribArrayARB (1); + glVertexAttribPointerARB(1, 4, GL_FLOAT, GL_FALSE, 0, TangentsArray); for (i=0; inum_triangles; i++) { @@ -1627,72 +1567,73 @@ VArray[3] = currentmodel->st[index_st].s; VArray[4] = currentmodel->st[index_st].t; - if(stage->normalmap) { //send normals and tangents to shader - VectorCopy(currentmodel->animatenormal[index_xyz].dir, NormalsArray[va]); - Vector4Copy(currentmodel->animatetangent[index_xyz].dir, TangentsArray[va]); - VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; // increment pointer and counter - } - else - { - float red = 1, green = 1, blue = 1; + VectorCopy(currentmodel->animatenormal[index_xyz].dir, NormalsArray[va]); + Vector4Copy(currentmodel->animatetangent[index_xyz].dir, TangentsArray[va]); - if (stage->lightmap) - { - IQM_Vlight (shadelight, ¤tmodel->animatenormal[index_xyz], currententity->angles, lightcolor); - red = lightcolor[0]; - green = lightcolor[1]; - blue = lightcolor[2]; - } - if(mirror && !(currententity->flags & RF_WEAPONMODEL) ) - { - VArray[7] = red; - VArray[8] = green; - VArray[9] = blue; - VArray[10] = alpha; - } - else - { - VArray[5] = red; - VArray[6] = green; - VArray[7] = blue; - VArray[8] = alpha; - } - - VArray += VertexSizes[VERT_COLOURED_TEXTURED]; // increment pointer and counter - } - + VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; // increment pointer and counter va++; } } + + R_DrawVarrays(GL_TRIANGLES, 0, va); + } + else + { + glUniform1iARB(g_location_useGPUanim, 1); - if (!(!cl_gun->value && ( currententity->flags & RF_WEAPONMODEL ) ) ) - { - R_DrawVarrays(GL_TRIANGLES, 0, va, false); - } + glUniformMatrix3x4fvARB( g_location_outframe, currentmodel->num_joints, GL_FALSE, (const GLfloat *) currentmodel->outframe ); + + IQM_DrawVBO (true); + } + + qglColor4f(1,1,1,1); + + glUseProgramObjectARB( 0 ); + GL_EnableMultitexture( false ); + } + else + { + //base render no shaders - qglColor4f(1,1,1,1); + R_InitVArrays (VERT_COLOURED_TEXTURED); - if(stage->normalmap) + GL_SelectTexture( GL_TEXTURE0); + GL_Bind (skinnum); + + for (i=0; inum_triangles; i++) + { + for (j=0; j<3; j++) { - glUseProgramObjectARB( 0 ); - GL_EnableMultitexture( false ); - } + index_xyz = index_st = currentmodel->tris[i].vertex[j]; + + VArray[0] = currentmodel->animatevertexes[index_xyz].position[0]; + VArray[1] = currentmodel->animatevertexes[index_xyz].position[1]; + VArray[2] = currentmodel->animatevertexes[index_xyz].position[2]; + + VArray[3] = currentmodel->st[index_st].s; + VArray[4] = currentmodel->st[index_st].t; + + IQM_Vlight (shadelight, ¤tmodel->animatenormal[index_xyz], currententity->angles, lightcolor); - stage=stage->next; + VArray[5] = lightcolor[0] > 0.2 ? lightcolor[0] : 0.2; + VArray[6] = lightcolor[1] > 0.2 ? lightcolor[1] : 0.2; + VArray[7] = lightcolor[2] > 0.2 ? lightcolor[2] : 0.2; + VArray[8] = alpha; + VArray += VertexSizes[VERT_COLOURED_TEXTURED]; // increment pointer and counter + va++; + } } - } -done: - if (depthmaskrscipt) - qglDepthMask(true); + R_DrawVarrays(GL_TRIANGLES, 0, va); + } GLSTATE_DISABLE_ALPHATEST GLSTATE_DISABLE_BLEND GLSTATE_DISABLE_TEXGEN - qglDisableClientState( GL_NORMAL_ARRAY); - qglDisableClientState( GL_COLOR_ARRAY ); - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); + glDisableVertexAttribArrayARB(1); + glDisableVertexAttribArrayARB(6); + glDisableVertexAttribArrayARB(7); R_KillVArrays (); @@ -1700,544 +1641,9 @@ qglEnable( GL_TEXTURE_2D ); } -//Similar to above, but geared more specifically toward ragdoll player models -void IQM_DrawRagDollFrame(int RagDollID, int skinnum, float shellAlpha, int shellEffect) +static qboolean IQM_CullModel( void ) { - int i, j; - vec3_t vectors[3]; - rscript_t *rs = NULL; - rs_stage_t *stage = NULL; - float alpha, basealpha; - vec3_t lightcolor; - int index_xyz, index_st; - int va = 0; - qboolean mirror = false; - qboolean glass = false; - qboolean depthmaskrscipt = false; - - if (r_shaders->value && RagDoll[RagDollID].script) - rs = RagDoll[RagDollID].script; - - VectorCopy(shadelight, lightcolor); - for (i=0;ivalue) - mirror = true; - else - glass = true; - } - else - glass = true; - } - else - alpha = basealpha = 1.0; - - AngleVectors (RagDoll[RagDollID].angles, vectors[0], vectors[1], vectors[2]); - - if(shellEffect) - { - //shell render - float shellscale = 1.6; - va=0; - VArray = &VArrayVerts[0]; - - qglEnable (GL_BLEND); - qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) { - - vec3_t lightVec, lightVal; - - R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); - qglNormalPointer(GL_FLOAT, 0, NormalsArray); - glEnableVertexAttribArrayARB (1); - glVertexAttribPointerARB(1, 4, GL_FLOAT,GL_FALSE, 0, TangentsArray); - - R_GetLightVals(RagDoll[RagDollID].curPos, true, true); - - //send light level and color to shader, ramp up a bit - VectorCopy(lightcolor, lightVal); - for(i = 0; i < 3; i++) { - if(lightVal[i] < shadelight[i]/2) - lightVal[i] = shadelight[i]/2; //never go completely black - lightVal[i] *= 5; - lightVal[i] += dynFactor; - if(lightVal[i] > 1.0+dynFactor) - lightVal[i] = 1.0+dynFactor; - } - - //simple directional(relative light position) - VectorSubtract(lightPosition, RagDoll[RagDollID].curPos, lightVec); - VectorMA(lightPosition, 1.0, lightVec, lightPosition); - R_ModelViewTransform(lightPosition, lightVec); - - //brighten things slightly - for (i = 0; i < 3; i++ ) - lightVal[i] *= 1.25; - - GL_EnableMultitexture( true ); - - glUseProgramObjectARB( g_meshprogramObj ); - - glUniform3fARB( g_location_meshlightPosition, lightVec[0], lightVec[1], lightVec[2]); - - GL_SelectTexture( GL_TEXTURE1); - qglBindTexture (GL_TEXTURE_2D, r_shelltexture2->texnum); - glUniform1iARB( g_location_baseTex, 1); - - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, r_shellnormal->texnum); - glUniform1iARB( g_location_normTex, 0); - - GL_SelectTexture( GL_TEXTURE0); - - glUniform1iARB( g_location_useFX, 0); - - glUniform1iARB( g_location_useGlow, 0); - - glUniform3fARB( g_location_color, lightVal[0], lightVal[1], lightVal[2]); - - glUniform1fARB( g_location_meshTime, rs_realtime); - - glUniform1iARB( g_location_meshFog, map_fog); - } - else - { - GL_Bind(r_shelltexture2->texnum); - R_InitVArrays (VERT_COLOURED_TEXTURED); - } - - for (i=0; inum_triangles; i++) - { - for (j=0; j<3; j++) - { - index_xyz = index_st = RagDoll[RagDollID].ragDollMesh->tris[i].vertex[j]; - - VArray[0] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[0] + - RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz].dir[0]*shellscale; - VArray[1] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[1] + - RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz].dir[1]*shellscale; - VArray[2] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[2] + - RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz].dir[2]*shellscale; - - VArray[3] = (RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[1] + - RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[0]) * (1.0f/40.f); - VArray[4] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[2] * (1.0f/40.f) - r_newrefdef.time * 0.25f; - - VArray[5] = shadelight[0]; - VArray[6] = shadelight[1]; - VArray[7] = shadelight[2]; - VArray[8] = shellAlpha; //decrease over time - - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) - { - VectorCopy(RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz].dir, NormalsArray[va]); //shader needs normal array - Vector4Copy(RagDoll[RagDollID].ragDollMesh->animatetangent[index_xyz].dir, TangentsArray[va]); - VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; // increment pointer and counter - } - else - VArray += VertexSizes[VERT_COLOURED_TEXTURED]; // increment pointer and counter - va++; - } - } - - R_DrawVarrays(GL_TRIANGLES, 0, va, false); - - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) - { - glUseProgramObjectARB( 0 ); - GL_EnableMultitexture( false ); - } - - } - else if(!rs || mirror || glass) - { //base render no shaders - va=0; - VArray = &VArrayVerts[0]; - - R_InitVArrays (VERT_COLOURED_TEXTURED); - - if(mirror) - { - qglDepthMask(false); - - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, r_mirrortexture->texnum); - } - else if(glass) - { - qglDepthMask(false); - - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, r_reflecttexture->texnum); - } - else - { - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, skinnum); - - R_GetLightVals(RagDoll[RagDollID].curPos, true, false); - } - - for (i=0; inum_triangles; i++) - { - for (j=0; j<3; j++) - { - index_xyz = index_st = RagDoll[RagDollID].ragDollMesh->tris[i].vertex[j]; - - VArray[0] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[0]; - VArray[1] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[1]; - VArray[2] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[2]; - - if(mirror) - { - VArray[5] = VArray[3] = -(RagDoll[RagDollID].ragDollMesh->st[index_st].s - DotProduct (RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz].dir, vectors[1])); - VArray[6] = VArray[4] = RagDoll[RagDollID].ragDollMesh->st[index_st].t + DotProduct (RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz].dir, vectors[2]); - } - else if(glass) - { - VArray[3] = -(RagDoll[RagDollID].ragDollMesh->st[index_st].s - DotProduct (RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz].dir, vectors[1])); - VArray[4] = RagDoll[RagDollID].ragDollMesh->st[index_st].t + DotProduct (RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz].dir, vectors[2]); - } - else - { - VArray[3] = RagDoll[RagDollID].ragDollMesh->st[index_st].s; - VArray[4] = RagDoll[RagDollID].ragDollMesh->st[index_st].t; - } - - IQM_Vlight (shadelight, &RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz], RagDoll[RagDollID].angles, lightcolor); - - VArray[5] = lightcolor[0]; - VArray[6] = lightcolor[1]; - VArray[7] = lightcolor[2]; - VArray[8] = alpha; - - // increment pointer and counter - VArray += VertexSizes[VERT_COLOURED_TEXTURED]; - va++; - } - } - - R_DrawVarrays(GL_TRIANGLES, 0, va, false); - - if(mirror) - GL_EnableMultitexture( false ); - - if(mirror || glass) - qglDepthMask(true); - } - else if(rs) - { //render with shaders - - if (rs->stage && rs->stage->has_alpha) - depthmaskrscipt = true; - - if (depthmaskrscipt) - qglDepthMask(false); - - stage=rs->stage; - - while (stage) - { - va=0; - VArray = &VArrayVerts[0]; - GLSTATE_ENABLE_ALPHATEST - - if (stage->normalmap && (!gl_normalmaps->value || !gl_glsl_shaders->value || !gl_state.glsl_shaders)) - { - if(stage->next) - { - stage = stage->next; - continue; - } - else - goto done; - } - - if(!stage->normalmap) - { - R_InitVArrays (VERT_COLOURED_TEXTURED); - - GL_Bind (stage->texture->texnum); - - if (stage->blendfunc.blend) - { - GL_BlendFunction(stage->blendfunc.source,stage->blendfunc.dest); - GLSTATE_ENABLE_BLEND - } - else if (basealpha==1.0f) - { - GLSTATE_DISABLE_BLEND - } - else - { - GLSTATE_ENABLE_BLEND - GL_BlendFunction(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - alpha = basealpha; - } - - if (stage->alphashift.min || stage->alphashift.speed) - { - if (!stage->alphashift.speed && stage->alphashift.min > 0) - { - alpha=basealpha*stage->alphashift.min; - } - else if (stage->alphashift.speed) - { - alpha=basealpha*sin(rs_realtime * stage->alphashift.speed); - if (alpha < 0) alpha=-alpha*basealpha; - if (alpha > stage->alphashift.max) alpha=basealpha*stage->alphashift.max; - if (alpha < stage->alphashift.min) alpha=basealpha*stage->alphashift.min; - } - } - else - alpha=basealpha; - - if (!stage->alphamask) - GLSTATE_DISABLE_ALPHATEST - - if(stage->lightmap) - R_GetLightVals(RagDoll[RagDollID].curPos, true, false); - } - - if(stage->normalmap) - { - vec3_t lightVec, lightVal; - - R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); - qglNormalPointer(GL_FLOAT, 0, NormalsArray); - glEnableVertexAttribArrayARB (1); - glVertexAttribPointerARB(1, 4, GL_FLOAT,GL_FALSE, 0, TangentsArray); - - R_GetLightVals(RagDoll[RagDollID].curPos, true, true); - - //send light level and color to shader, ramp up a bit - VectorCopy(lightcolor, lightVal); - for(i = 0; i < 3; i++) - { - if(lightVal[i] < shadelight[i]/2) - lightVal[i] = shadelight[i]/2; //never go completely black - lightVal[i] *= 5; - lightVal[i] += dynFactor; - if(lightVal[i] > 1.0+dynFactor) - lightVal[i] = 1.0+dynFactor; - } - - //simple directional(relative light position) - VectorSubtract(lightPosition, RagDoll[RagDollID].curPos, lightVec); - VectorMA(lightPosition, 5.0, lightVec, lightPosition); - R_ModelViewTransform(lightPosition, lightVec); - - //brighten things slightly - for (i = 0; i < 3; i++ ) - { - lightVal[i] *= 1.05; - } - - GL_EnableMultitexture( true ); - - glUseProgramObjectARB( g_meshprogramObj ); - - glUniform3fARB( g_location_meshlightPosition, lightVec[0], lightVec[1], lightVec[2]); - - GL_SelectTexture( GL_TEXTURE1); - qglBindTexture (GL_TEXTURE_2D, skinnum); - glUniform1iARB( g_location_baseTex, 1); - - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, stage->texture->texnum); - glUniform1iARB( g_location_normTex, 0); - - GL_SelectTexture( GL_TEXTURE2); - qglBindTexture (GL_TEXTURE_2D, stage->texture2->texnum); - glUniform1iARB( g_location_fxTex, 2); - - GL_SelectTexture( GL_TEXTURE0); - - if(stage->fx) - glUniform1iARB( g_location_useFX, 1); - else - glUniform1iARB( g_location_useFX, 0); - - if(stage->glow) - glUniform1iARB( g_location_useGlow, 1); - else - glUniform1iARB( g_location_useGlow, 0); - - glUniform3fARB( g_location_color, lightVal[0], lightVal[1], lightVal[2]); - - //if using shadowmaps, offset self shadowed areas a bit so not to get too dark - if(gl_shadowmaps->value) - glUniform1fARB( g_location_minLight, 0.20); - else - glUniform1fARB( g_location_minLight, 0.15); - - glUniform1fARB( g_location_meshTime, rs_realtime); - - glUniform1iARB( g_location_meshFog, map_fog); - } - - for (i=0; inum_triangles; i++) - { - for (j=0; j<3; j++) - { - index_xyz = index_st = RagDoll[RagDollID].ragDollMesh->tris[i].vertex[j]; - - VArray[0] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[0]; - VArray[1] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[1]; - VArray[2] = RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position[2]; - - VArray[3] = RagDoll[RagDollID].ragDollMesh->st[index_st].s; - VArray[4] = RagDoll[RagDollID].ragDollMesh->st[index_st].t; - - if(stage->normalmap) { //send normals and tangents to shader - VectorCopy(RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz].dir, NormalsArray[va]); - Vector4Copy(RagDoll[RagDollID].ragDollMesh->animatetangent[index_xyz].dir, TangentsArray[va]); - VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; // increment pointer and counter - } - else - { - float red = 1, green = 1, blue = 1; - - if (stage->lightmap) - { - IQM_Vlight (shadelight, &RagDoll[RagDollID].ragDollMesh->animatenormal[index_xyz], RagDoll[RagDollID].angles, lightcolor); - red = lightcolor[0]; - green = lightcolor[1]; - blue = lightcolor[2]; - } - if(mirror) - { - VArray[7] = red; - VArray[8] = green; - VArray[9] = blue; - VArray[10] = alpha; - } - else - { - VArray[5] = red; - VArray[6] = green; - VArray[7] = blue; - VArray[8] = alpha; - } - - VArray += VertexSizes[VERT_COLOURED_TEXTURED]; // increment pointer and counter - } - - va++; - } - } - - R_DrawVarrays(GL_TRIANGLES, 0, va, false); - - qglColor4f(1,1,1,1); - - if(stage->normalmap) - { - glUseProgramObjectARB( 0 ); - GL_EnableMultitexture( false ); - } - - stage=stage->next; - } - } - -done: - if (depthmaskrscipt) - qglDepthMask(true); - - GLSTATE_DISABLE_ALPHATEST - GLSTATE_DISABLE_BLEND - GLSTATE_DISABLE_TEXGEN - - qglDisableClientState( GL_NORMAL_ARRAY); - qglDisableClientState( GL_COLOR_ARRAY ); - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); - - R_KillVArrays (); - - if ( shellEffect ) - qglEnable( GL_TEXTURE_2D ); -} - -void IQM_DrawShadow(vec3_t origin) -{ - vec3_t point; - float height, lheight; - int i, j; - int index_xyz, index_st; - int va = 0; - - lheight = origin[2] - lightspot[2]; - - height = -lheight + 0.1f; - - // if above entity's origin, skip - if ((origin[2]+height) > origin[2]) - return; - - if (r_newrefdef.vieworg[2] < (origin[2] + height)) - return; - - if (have_stencil) - { - qglDepthMask(0); - qglEnable(GL_STENCIL_TEST); - qglStencilFunc(GL_EQUAL,1,2); - qglStencilOp(GL_KEEP,GL_KEEP,GL_INCR); - } - - va=0; - VArray = &VArrayVerts[0]; - R_InitVArrays (VERT_SINGLE_TEXTURED); - - for (i=0; inum_triangles; i++) - { - for (j=0; j<3; j++) - { - index_xyz = index_st = currentmodel->tris[i].vertex[j]; - - memcpy( point, currentmodel->animatevertexes[index_xyz].position, sizeof( point ) ); - - point[0] -= shadevector[0]*(point[2]+lheight); - point[1] -= shadevector[1]*(point[2]+lheight); - point[2] = height; - - VArray[0] = point[0]; - VArray[1] = point[1]; - VArray[2] = point[2]; - - VArray[3] = currentmodel->st[index_st].s; - VArray[4] = currentmodel->st[index_st].t; - - // increment pointer and counter - VArray += VertexSizes[VERT_SINGLE_TEXTURED]; - va++; - } - } - - R_DrawVarrays(GL_TRIANGLES, 0, va, false); - - qglDisableClientState( GL_COLOR_ARRAY ); - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); - - R_KillVArrays (); - qglDepthMask(1); - qglColor4f(1,1,1,1); - if (have_stencil) - qglDisable(GL_STENCIL_TEST); -} - -static qboolean IQM_CullModel( void ) -{ - int i; + int i; vec3_t vectors[3]; vec3_t angles; trace_t r_trace; @@ -2397,11 +1803,14 @@ if((r_newrefdef.rdflags & RDF_NOWORLDMODEL ) && !(currententity->flags & RF_MENUMODEL)) return; + if ((currententity->flags & RF_WEAPONMODEL) && r_lefthand->integer == 2) + return; + //do culling if ( IQM_CullModel() ) return; - if(r_ragdolls->value) + if(r_ragdolls->integer) { //Ragdolls take over at beginning of each death sequence if(!(currententity->flags & RF_TRANSLUCENT)) @@ -2415,6 +1824,13 @@ return; } + //modelpitch = 0.52 * sinf(rs_realtime); //use this for testing only + modelpitch = degreeToRadian(currententity->angles[PITCH]); + + R_GetLightVals(currententity->origin, false); + + R_GenerateEntityShadow(); + if ( currententity->flags & ( RF_SHELL_HALF_DAM | RF_SHELL_GREEN | RF_SHELL_RED | RF_SHELL_BLUE | RF_SHELL_DOUBLE) ) { @@ -2456,7 +1872,7 @@ { float minlight; - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) minlight = 0.1; else minlight = 0.2; @@ -2477,7 +1893,7 @@ float minlight; scale = 0.2 * sin(r_newrefdef.time*7); - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) minlight = 0.1; else minlight = 0.2; @@ -2487,14 +1903,40 @@ if (shadelight[i] < minlight) shadelight[i] = minlight; } - } + } - //modelpitch = 0.52 * sinf(rs_realtime); //use this for testing only - modelpitch = degreeToRadian(currententity->angles[PITCH]); + if (currententity->flags & RF_DEPTHHACK) // hack the depth range to prevent view model from poking into walls + qglDepthRange (gldepthmin, gldepthmin + 0.3*(gldepthmax-gldepthmin)); - qglPushMatrix (); - currententity->angles[PITCH] = currententity->angles[ROLL] = 0; - R_RotateForEntity (currententity); + if (currententity->flags & RF_WEAPONMODEL) + { + qglMatrixMode(GL_PROJECTION); + qglPushMatrix(); + qglLoadIdentity(); + + if (r_lefthand->integer == 1) + { + qglScalef(-1, 1, 1); + qglCullFace(GL_BACK); + } + if(r_newrefdef.fov_y < 75.0f) + MYgluPerspective(r_newrefdef.fov_y, (float)r_newrefdef.width / (float)r_newrefdef.height, 4.0f, 4096.0f); + else + MYgluPerspective(75.0f, (float)r_newrefdef.width / (float)r_newrefdef.height, 4.0f, 4096.0f); + + qglMatrixMode(GL_MODELVIEW); + + qglPushMatrix (); + currententity->angles[PITCH] = -currententity->angles[PITCH]; // sigh. + R_RotateForEntity (currententity); + currententity->angles[PITCH] = -currententity->angles[PITCH]; // sigh. + } + else + { + qglPushMatrix (); + currententity->angles[PITCH] = currententity->angles[ROLL] = 0; + R_RotateForEntity (currententity); + } // select skin if (currententity->skin) { @@ -2508,6 +1950,21 @@ skin = r_notexture; // fallback... GL_Bind(skin->texnum); + //check for valid script + use_vbo = true; + if(currententity->script && currententity->script->stage) + { + if(!strcmp("***r_notexture***", currententity->script->stage->texture->name) || + ((currententity->script->stage->fx || currententity->script->stage->glow) && !strcmp("***r_notexture***", currententity->script->stage->texture2->name)) || + (currententity->script->stage->cube && !strcmp("***r_notexture***", currententity->script->stage->texture3->name))) + { + currententity->script = NULL; //bad shader! + use_vbo = false; //cannot use vbo without a valid shader + } + } + else if(!(currententity->flags & RF_TRANSLUCENT)) + use_vbo = false; + // draw it qglShadeModel (GL_SMOOTH); @@ -2537,101 +1994,34 @@ IQM_AnimateFrame(frame, IQM_NextFrame(currententity->frame)); if(!(currententity->flags & RF_VIEWERMODEL)) - IQM_DrawFrame(skin->texnum); + if (!(!cl_gun->integer && ( currententity->flags & RF_WEAPONMODEL ) ) ) + IQM_DrawFrame(skin->texnum, false, 0.33); GL_TexEnv( GL_REPLACE ); qglShadeModel (GL_FLAT); qglPopMatrix (); - if ( currententity->flags & RF_TRANSLUCENT ) + if ( ( currententity->flags & RF_WEAPONMODEL ) ) { - qglDisable (GL_BLEND); - qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + qglMatrixMode( GL_PROJECTION ); + qglPopMatrix(); + qglMatrixMode( GL_MODELVIEW ); + qglCullFace( GL_FRONT ); } - //Basic stencil shadows - if (!(r_newrefdef.rdflags & RDF_NOWORLDMODEL) && gl_shadows->integer && !gl_shadowmaps->integer && !(currententity->flags & (RF_WEAPONMODEL | RF_NOSHADOWS))) + if ( currententity->flags & RF_TRANSLUCENT ) { - float casted; - float an = currententity->angles[1]/180*M_PI; - shadevector[0] = cos(-an); - shadevector[1] = sin(-an); - shadevector[2] = 1; - VectorNormalize (shadevector); - - switch (gl_shadows->integer) - { - case 0: - break; - case 1: //dynamic only - always cast something - casted = SHD_ShadowLight (currententity->origin, currententity->angles, shadevector, 0); - qglPushMatrix (); - qglTranslatef (currententity->origin[0], currententity->origin[1], currententity->origin[2]); - qglRotatef (currententity->angles[1], 0, 0, 1); - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_BLEND); - - if (currententity->flags & RF_TRANSLUCENT) - qglColor4f (0,0,0,0.3 * currententity->alpha); //Knightmare- variable alpha - else - qglColor4f (0,0,0,0.3); - - IQM_DrawShadow (currententity->origin); - - qglEnable (GL_TEXTURE_2D); - qglDisable (GL_BLEND); - qglPopMatrix (); - - break; - case 2: //dynamic and world - //world - casted = SHD_ShadowLight (currententity->origin, currententity->angles, shadevector, 1); - qglPushMatrix (); - qglTranslatef (currententity->origin[0], currententity->origin[1], currententity->origin[2]); - qglRotatef (currententity->angles[1], 0, 0, 1); - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_BLEND); - - if (currententity->flags & RF_TRANSLUCENT) - qglColor4f (0,0,0,casted * currententity->alpha); - else - qglColor4f (0,0,0,casted); - - IQM_DrawShadow (currententity->origin); - - qglEnable (GL_TEXTURE_2D); - qglDisable (GL_BLEND); - qglPopMatrix (); - //dynamic - casted = 0; - casted = SHD_ShadowLight (currententity->origin, currententity->angles, shadevector, 0); - if (casted > 0) - { //only draw if there's a dynamic light there - qglPushMatrix (); - qglTranslatef (currententity->origin[0], currententity->origin[1], currententity->origin[2]); - qglRotatef (currententity->angles[1], 0, 0, 1); - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_BLEND); - - if (currententity->flags & RF_TRANSLUCENT) - qglColor4f (0,0,0,casted * currententity->alpha); - else - qglColor4f (0,0,0,casted); - - IQM_DrawShadow (currententity->origin); - - qglEnable (GL_TEXTURE_2D); - qglDisable (GL_BLEND); - qglPopMatrix (); - } + qglDisable (GL_BLEND); + qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + } - break; - } - } - qglColor4f (1,1,1,1); + if (currententity->flags & RF_DEPTHHACK) + qglDepthRange (gldepthmin, gldepthmax); + + qglColor4f (1,1,1,1); - if(r_minimap->value) + if(r_minimap->integer) { if ( currententity->flags & RF_MONSTER) { @@ -2652,39 +2042,68 @@ { int i, j; int index_xyz, index_st; - int va; + int va = 0; + + if(!has_vbo) + { + R_InitVArrays (VERT_NO_TEXTURE); - va=0; + for (i=0; inum_triangles; i++) + { + for (j=0; j<3; j++) + { + index_xyz = index_st = currentmodel->tris[i].vertex[j]; - R_InitVArrays (VERT_NO_TEXTURE); + VArray[0] = currentmodel->animatevertexes[index_xyz].position[0]; + VArray[1] = currentmodel->animatevertexes[index_xyz].position[1]; + VArray[2] = currentmodel->animatevertexes[index_xyz].position[2]; - for (i=0; inum_triangles; i++) - { - for (j=0; j<3; j++) - { - index_xyz = index_st = currentmodel->tris[i].vertex[j]; - - VArray[0] = currentmodel->animatevertexes[index_xyz].position[0]; - VArray[1] = currentmodel->animatevertexes[index_xyz].position[1]; - VArray[2] = currentmodel->animatevertexes[index_xyz].position[2]; - - VArray[3] = currentmodel->st[index_st].s; - VArray[4] = currentmodel->st[index_st].t; - - // increment pointer and counter - VArray += VertexSizes[VERT_NO_TEXTURE]; - va++; - } - } + // increment pointer and counter + VArray += VertexSizes[VERT_NO_TEXTURE]; + va++; + } + } + + R_DrawVarrays(GL_TRIANGLES, 0, va); + } + else + { + //to do - just use a very basic shader for this instead of the normal mesh shader + glUseProgramObjectARB( g_blankmeshprogramObj ); + + //send outframe, blendweights, and blendindexes to shader + glUniformMatrix3x4fvARB( g_location_bmOutframe, currentmodel->num_joints, GL_FALSE, (const GLfloat *) currentmodel->outframe ); + + qglEnableClientState( GL_VERTEX_ARRAY ); + GL_BindVBO(vbo_xyz); + qglVertexPointer(3, GL_FLOAT, 0, 0); - R_DrawVarrays(GL_TRIANGLES, 0, va, false); + GL_BindVBO(NULL); + GL_BindIBO(vbo_indices); + + glEnableVertexAttribArrayARB(6); + glEnableVertexAttribArrayARB(7); + glVertexAttribPointerARB(6, 4, GL_UNSIGNED_BYTE, GL_TRUE, sizeof(unsigned char)*4, currentmodel->blendweights); + glVertexAttribPointerARB(7, 4, GL_UNSIGNED_BYTE, GL_FALSE, sizeof(unsigned char)*4, currentmodel->blendindexes); + + qglDrawElements(GL_TRIANGLES, currentmodel->num_triangles*3, GL_UNSIGNED_INT, 0); + + GL_BindIBO(NULL); + + glUseProgramObjectARB( 0 ); + + glDisableVertexAttribArrayARB(6); + glDisableVertexAttribArrayARB(7); + } + R_KillVArrays (); } void IQM_DrawCaster ( void ) { float frame, time; + vec3_t sv_angles; if(currententity->team) //don't draw flag models, handled by sprites return; @@ -2695,15 +2114,14 @@ if ( currententity->flags & ( RF_SHELL_HALF_DAM | RF_SHELL_GREEN | RF_SHELL_RED | RF_SHELL_BLUE | RF_SHELL_DOUBLE) ) //no shells return; - if ( IQM_CullModel() ) - return; - //modelpitch = 0.52 * sinf(rs_realtime); //use this for testing only modelpitch = degreeToRadian(currententity->angles[PITCH]); + VectorCopy(currententity->angles, sv_angles); qglPushMatrix (); currententity->angles[PITCH] = currententity->angles[ROLL] = 0; R_RotateForEntity (currententity); + VectorCopy(sv_angles, currententity->angles); //frame interpolation time = (Sys_Milliseconds() - currententity->frametime) / 100; @@ -2719,6 +2137,7 @@ frame = currententity->frame + time; + use_vbo = true; IQM_AnimateFrame(frame, IQM_NextFrame(currententity->frame)); IQM_DrawCasterFrame(); @@ -2733,7 +2152,8 @@ qglPushMatrix (); - IQM_AnimateRagdoll(RagDollID); + use_vbo = true; + IQM_AnimateRagdoll(RagDollID, false); currentmodel = RagDoll[RagDollID].ragDollMesh; diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_light.c alien-arena-7.66+dfsg/source/ref_gl/r_light.c --- alien-arena-7.53+dfsg/source/ref_gl/r_light.c 2011-01-15 19:20:13.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_light.c 2013-06-22 20:07:35.000000000 +0000 @@ -40,6 +40,8 @@ R_MarkLights ============= */ +static int num_dlight_surfaces, old_dlightframecount; +static qboolean new_dlight; void R_MarkLights (dlight_t *light, int bit, mnode_t *node) { cplane_t *splitplane; @@ -70,13 +72,16 @@ if (dist >= 0) //Discoloda sidebit = 0; //Discoloda else //Discoloda - sidebit = SURF_PLANEBACK; //Discoloda + sidebit = ISURF_PLANEBACK; //Discoloda - if ( (surf->flags & SURF_PLANEBACK) != sidebit ) //Discoloda + if ( (surf->iflags & ISURF_PLANEBACK) != sidebit ) //Discoloda continue; //Discoloda if (surf->dlightframe != r_dlightframecount) { + if (surf->dlightframe != old_dlightframecount) + new_dlight = true; + num_dlight_surfaces++; surf->dlightbits = bit; surf->dlightframe = r_dlightframecount; } else @@ -95,14 +100,23 @@ */ void R_PushDlights (void) { - int i; + int i; dlight_t *l; + old_dlightframecount = r_dlightframecount; + new_dlight = false; + num_dlight_surfaces = 0; + r_dlightframecount = r_framecount + 1; // because the count hasn't // advanced yet for this frame l = r_newrefdef.dlights; for (i=0 ; inodes ); + + r_newrefdef.dlights_changed = false; + if (num_dlight_surfaces != r_newrefdef.num_dlight_surfaces || new_dlight) + r_newrefdef.dlights_changed = true; + r_newrefdef.num_dlight_surfaces = num_dlight_surfaces; } /* @@ -261,26 +275,21 @@ R_LightPoint =============== */ -void R_LightPoint (vec3_t p, vec3_t color, qboolean addDynamic) +void R_StaticLightPoint (vec3_t p, vec3_t color) { - vec3_t end; float r; - int lnum; - dlight_t *dl; - float light; - vec3_t dist, dlightcolor; - float add; + vec3_t end; if (!r_worldmodel->lightdata) { color[0] = color[1] = color[2] = 1.0; return; } - + end[0] = p[0]; end[1] = p[1]; end[2] = p[2] - 2048; - + r = RecursiveLightPoint (r_worldmodel->nodes, p, end); if (r == -1) @@ -291,10 +300,16 @@ { VectorCopy (pointcolor, color); } +} - if (!addDynamic) - return; - +void R_DynamicLightPoint (vec3_t p, vec3_t color) +{ + int lnum; + dlight_t *dl; + float light; + vec3_t dist, dlightcolor; + float add; + // // add dynamic lights // @@ -313,13 +328,26 @@ VectorMA (dlightcolor, add, dl->color, dlightcolor); } } + + VectorScale (dlightcolor, gl_modulate->value, color); +} + - VectorMA (color, gl_modulate->value, dlightcolor, color); +void R_LightPoint (vec3_t p, vec3_t color, qboolean addDynamic) +{ + vec3_t dynamic; + + R_StaticLightPoint (p, color); + if (addDynamic) + { + R_DynamicLightPoint (p, dynamic); + VectorAdd (color, dynamic, color); + } } //=================================================================== -static float s_blocklights[34*34*3]; +static float s_blocklights[1024*1024*3]; /* ** R_SetCacheState @@ -342,12 +370,11 @@ Combine and scale multiple lightmaps into the floating format in blocklights =============== */ -void R_BuildLightMap (msurface_t *surf, byte *dest, int stride) +void R_BuildLightMap (msurface_t *surf, byte *dest, int smax, int tmax, int stride) { - int smax, tmax; int r, g, b, a, max; int i, j, size; - byte *lightmap; + byte *lightmap, *old_dest; float scale[4]; int nummaps; float *bl; @@ -356,8 +383,6 @@ if ( SurfaceHasNoLightmap( surf ) ) Com_Error (ERR_DROP, "R_BuildLightMap called for non-lit surface"); - smax = (surf->extents[0]>>4)+1; - tmax = (surf->extents[1]>>4)+1; size = smax*tmax; if (size > (sizeof(s_blocklights)>>4) ) Com_Error (ERR_DROP, "Bad s_blocklights size"); @@ -425,7 +450,7 @@ int maps; memset( s_blocklights, 0, sizeof( s_blocklights[0] ) * size * 3 ); - + for (maps = 0 ; maps < MAXLIGHTMAPS && surf->styles[maps] != 255 ; maps++) { @@ -462,6 +487,8 @@ store: stride -= (smax<<2); bl = s_blocklights; + + old_dest = dest; for (i=0 ; i 255) { @@ -501,16 +529,19 @@ r = r*t; g = g*t; b = b*t; - a = a*t; } - dest[0] = r; + // GL_BGRA + dest[0] = b; dest[1] = g; - dest[2] = b; + dest[2] = r; dest[3] = a; bl += 3; dest += 4; } } + + #define GET_SAMPLE(x,y) (old_dest+((y*smax+x)*4)+y*stride) + #define SAMPLEDIST(a,b) sqrt((float)((a[0]-b[0])*(a[0]-b[0])+(a[1]-b[1])*(a[1]-b[1])+(a[2]-b[2])*(a[2]-b[2]))) } diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_local.h alien-arena-7.66+dfsg/source/ref_gl/r_local.h --- alien-arena-7.53+dfsg/source/ref_gl/r_local.h 2011-12-22 20:26:37.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_local.h 2013-06-22 20:07:35.000000000 +0000 @@ -81,7 +81,7 @@ extern float gldepthmin, gldepthmax; -#define MAX_LBM_HEIGHT 512 +#define MAX_LBM_HEIGHT 1024 #define BACKFACE_EPSILON 0.01 @@ -103,12 +103,12 @@ // extern refdef_t r_newrefdef; extern int r_viewcluster, r_viewcluster2, r_oldviewcluster, r_oldviewcluster2; +mleaf_t *r_viewleaf, *r_viewleaf2; extern cvar_t *r_norefresh; extern cvar_t *r_lefthand; extern cvar_t *r_drawentities; extern cvar_t *r_drawworld; -extern cvar_t *r_speeds; extern cvar_t *r_fullbright; extern cvar_t *r_novis; extern cvar_t *r_nocull; @@ -132,7 +132,6 @@ extern cvar_t *gl_mode; extern cvar_t *gl_log; extern cvar_t *gl_lightmap; -extern cvar_t *gl_shadows; extern cvar_t *gl_dynamic; extern cvar_t *gl_nobind; extern cvar_t *gl_picmip; @@ -160,27 +159,41 @@ extern cvar_t *vid_contrast; extern cvar_t *r_anisotropic; +extern cvar_t *r_alphamasked_anisotropic; extern cvar_t *r_ext_max_anisotropy; extern cvar_t *r_overbrightbits; extern cvar_t *gl_normalmaps; +extern cvar_t *gl_bspnormalmaps; extern cvar_t *gl_shadowmaps; -extern cvar_t *gl_glsl_postprocess; +extern cvar_t *gl_fog; extern cvar_t *r_shaders; extern cvar_t *r_bloom; extern cvar_t *r_lensflare; extern cvar_t *r_lensflare_intens; extern cvar_t *r_drawsun; +extern cvar_t *r_godrays; +extern cvar_t *r_godray_intensity; +extern cvar_t *r_optimize; + +extern cvar_t *r_lightmapfiles; extern cvar_t *r_ragdolls; extern cvar_t *r_ragdoll_debug; extern qboolean map_fog; -extern char map_music[128]; +#if defined WIN32_VARIANT +extern char map_music[MAX_PATH]; +#else +extern char map_music[MAX_OSPATH]; +#endif extern unsigned r_weather; extern unsigned r_nosun; +extern float r_sunX; +extern float r_sunY; +extern float r_sunZ; extern cvar_t *r_minimap; extern cvar_t *r_minimap_size; @@ -214,19 +227,26 @@ extern int r_viewport[4]; extern float r_farclip, r_farclip_min, r_farclip_bias; +extern int r_origin_leafnum; + //Image -extern void R_InitImageSubsystem(void); -extern void GL_Bind (int texnum); -extern void GL_MBind( GLenum target, int texnum ); -extern void GL_TexEnv( GLenum value ); -extern void GL_EnableMultitexture( qboolean enable ); -extern void GL_SelectTexture( GLenum ); +void R_InitImageSubsystem(void); +void GL_Bind (int texnum); +void GL_MBind( GLenum target, int texnum ); +void GL_TexEnv( GLenum value ); +void GL_EnableMultitexture( qboolean enable ); +void GL_SelectTexture( GLenum ); +void RefreshFont (void); + extern void vectoangles (vec3_t value1, vec3_t angles); -extern void R_LightPoint (vec3_t p, vec3_t color, qboolean addDynamic); -extern void R_PushDlights (void); -extern void R_PushDlightsForBModel (entity_t *e); -extern void SetVertexOverbrights (qboolean toggle); -extern void RefreshFont (void); + +// dynamic lights +void R_StaticLightPoint (vec3_t p, vec3_t color); +void R_DynamicLightPoint (vec3_t p, vec3_t color); +void R_LightPoint (vec3_t p, vec3_t color, qboolean addDynamic); +void R_PushDlights (void); +void R_PushDlightsForBModel (entity_t *e); +void SetVertexOverbrights (qboolean toggle); //==================================================================== extern model_t *r_worldmodel; @@ -241,14 +261,14 @@ extern int R_Init( void *hinstance, void *hWnd ); extern void R_Shutdown( void ); +extern void R_SetupViewport (void); extern void R_RenderView (refdef_t *fd); extern void GL_ScreenShot_f (void); extern void R_DrawAliasModel (void); extern void R_DrawBrushModel (void); -extern void R_DrawWorld (void); +extern void R_DrawWorldSurfs (void); extern void R_RenderDlights (void); extern void R_DrawAlphaSurfaces (void); -extern void R_DrawRSSurfaces(void); extern void R_InitParticleTexture (void); extern void R_DrawParticles (void); extern void R_DrawRadar(void); @@ -258,12 +278,12 @@ extern void Draw_InitLocal (void); //Renderer utils -extern void R_SubdivideSurface (msurface_t *fa); +extern void R_SubdivideSurface (msurface_t *fa, int firstedge, int numedges); extern qboolean R_CullBox (vec3_t mins, vec3_t maxs); extern qboolean R_CullOrigin(vec3_t origin); extern qboolean R_CullSphere( const vec3_t centre, const float radius, const int clipflags ); extern void R_RotateForEntity (entity_t *e); -extern void R_MarkLeaves (void); +extern void R_MarkWorldSurfs (void); extern void R_AddSkySurface (msurface_t *fa); extern void R_RenderWaterPolys (msurface_t *fa, int texnum, float scaleX, float scaleY); extern void R_ReadFogScript(char config_file[128]); @@ -278,16 +298,21 @@ //BSP extern GLuint normalisationCubeMap; +extern image_t *r_droplets; +extern image_t *r_droplets_nm; +extern image_t *r_blooddroplets; +extern image_t *r_blooddroplets_nm; extern void BSP_DrawTexturelessPoly (msurface_t *fa); extern void BSP_DrawTexturelessBrushModel (entity_t *e); -extern void BSP_RenderBrushPoly (msurface_t *fa); //Postprocess void R_GLSLPostProcess(void); void R_FB_InitTextures(void); //VBO +extern qboolean use_vbo; extern GLuint vboId; +extern GLuint eboId; extern int totalVBOsize; extern int vboPosition; extern void R_LoadVBOSubsystem(void); @@ -295,10 +320,11 @@ extern void VB_VCInit(void); extern void VB_BuildVBOBufferSize(msurface_t *surf); extern void VB_BuildWorldVBO(void); +void GL_SetupWorldVBO (void); void GL_BindVBO(vertCache_t *cache); void GL_BindIBO(vertCache_t *cache); -vertCache_t *R_VCFindCache(vertStoreMode_t store, entity_t *ent); -vertCache_t *R_VCLoadData(vertCacheMode_t mode, int size, void *buffer, vertStoreMode_t store, entity_t *ent); +vertCache_t *R_VCFindCache(vertStoreMode_t store, model_t *mod); +vertCache_t *R_VCLoadData(vertCacheMode_t mode, int size, void *buffer, vertStoreMode_t store, model_t *mod); //Light Bloom extern void R_BloomBlend( refdef_t *fd ); @@ -329,6 +355,12 @@ extern void Mod_AddVegetationSurface (msurface_t *surf, int texnum, vec3_t color, float size, char name[MAX_QPATH], int type); extern void R_DrawVegetationSurface (void); extern void R_ClearGrasses(void); +extern void R_FinalizeGrass(model_t *mod); + +//Simple Items +extern void R_SI_InitTextures( void ); +extern void R_DrawSimpleItems( void ); +void R_SetSimpleTexnum (model_t *loadmodel, const char *pathname); //Light beams/volumes int r_numbeams; @@ -344,17 +376,13 @@ //Team colors int r_teamColor; +qboolean r_gotFlag; +qboolean r_lostFlag; -extern void Draw_GetPicSize (int *w, int *h, char *name); -extern void Draw_Pic (int x, int y, char *name); -extern void Draw_ScaledPic (int x, int y, float scale, char *pic); -extern void Draw_StretchPic (int x, int y, int w, int h, char *name); -extern void Draw_Char (int x, int y, int c); -extern void Draw_ColorChar (int x, int y, int num, vec4_t color); -extern void Draw_ScaledChar(float x, float y, int num, float scale, int from_menu); -extern void Draw_ScaledColorChar (float x, float y, int num, vec4_t color, float scale, int from_menu); -extern void Draw_TileClear (int x, int y, int w, int h, char *name); -extern void Draw_Fill (int x, int y, int w, int h, int c); +extern void Draw_GetPicSize (int *w, int *h, const char *name); +extern void Draw_Pic (float x, float y, const char *name); +extern void Draw_ScaledPic (float x, float y, float scale, const char *pic); +extern void Draw_StretchPic (float x, float y, float w, float h, const char *name); extern void Draw_FadeScreen (void); extern void R_BeginFrame( float camera_separation ); @@ -362,14 +390,13 @@ extern void R_SetPalette ( const unsigned char *palette); extern int Draw_GetPalette (void); -extern void GL_ResampleTexture (unsigned *in, int inwidth, int inheight, unsigned *out, int outwidth, int outheight); - image_t *R_RegisterSkin (char *name); image_t *R_RegisterParticlePic(const char *name); image_t *R_RegisterParticleNormal(const char *name); image_t *R_RegisterGfxPic(const char *name); extern void LoadPCX (char *filename, byte **pic, byte **palette, int *width, int *height); +extern image_t *GL_FindFreeImage (char *name, int width, int height, imagetype_t type); extern image_t *GL_LoadPic (char *name, byte *pic, int width, int height, imagetype_t type, int bits); extern image_t *GL_GetImage( const char * name ); extern image_t *GL_FindImage (char *name, imagetype_t type); @@ -453,31 +480,33 @@ typedef struct { - float inverse_intensity; - qboolean fullscreen; + float inverse_intensity; + qboolean fullscreen; + + int prev_mode; - int prev_mode; + unsigned char *d_16to8table; - unsigned char *d_16to8table; + int lightmap_textures; - int lightmap_textures; + int currenttextures[3]; + int currenttmu; - int currenttextures[3]; - int currenttmu; - - float camera_separation; - qboolean stereo_enabled; - - qboolean alpha_test; - qboolean blend; - qboolean texgen; - qboolean fragment_program; - qboolean glsl_shaders; - qboolean separateStencil; - qboolean stencil_wrap; - qboolean vbo; - qboolean fbo; - qboolean hasFBOblit; + float camera_separation; + qboolean stereo_enabled; + + qboolean alpha_test; + qboolean blend; + qboolean texgen; + qboolean fragment_program; + qboolean glsl_shaders; + qboolean separateStencil; + qboolean stencil_wrap; + qboolean vbo; + qboolean fbo; + qboolean hasFBOblit; + + qboolean ati; } glstate_t; @@ -523,48 +552,42 @@ #define VERT_BUMPMAPPED_COLOURED 8 // verts and st for 1 tmu, 2 texoord pointers and colour #define VERT_NORMAL_COLOURED_TEXTURED 9 // verts and st for 1tmu and color, with normals -#if 0 -// vertex array kill flags +// looks like these should be bit flags (2010-08) +// apparently not - this was not working as bit flags, works fine as ints #define KILL_TMU0_POINTER 1 #define KILL_TMU1_POINTER 2 #define KILL_TMU2_POINTER 3 #define KILL_TMU3_POINTER 4 -#define KILL_RGBA_POINTER 5 -#define KILL_NORMAL_POINTER 6 -#else -// looks like these should be bit flags (2010-08) -#define KILL_TMU0_POINTER 0x01 -#define KILL_TMU1_POINTER 0x02 -#define KILL_TMU2_POINTER 0x04 -#define KILL_TMU3_POINTER 0x08 -#define KILL_RGBA_POINTER 0x10 -#define KILL_NORMAL_POINTER 0x20 -#endif +#define KILL_TMU4_POINTER 5 +#define KILL_TMU5_POINTER 6 +#define KILL_RGBA_POINTER 7 +#define KILL_NORMAL_POINTER 8 // vertex array subsystem -extern void R_InitVArrays (int varraytype); -extern void R_KillVArrays (void); -extern void R_DrawVarrays(GLenum mode, GLint first, GLsizei count, qboolean vbo); -extern void R_InitQuadVarrays(void); -extern void R_AddSurfToVArray (msurface_t *surf); -extern void R_AddTexturedSurfToVArray (msurface_t *surf, float scroll); -extern void R_AddLightMappedSurfToVArray (msurface_t *surf, float scroll); -extern void R_AddGLSLShadedWarpSurfToVArray (msurface_t *surf, float scroll); -extern void R_KillNormalTMUs(void); +void R_InitVArrays (int varraytype); +void R_KillVArrays (void); +void R_DrawVarrays(GLenum mode, GLint first, GLsizei count); +void R_InitQuadVarrays(void); +void R_AddSurfToVArray (msurface_t *surf); +void R_AddShadowSurfToVArray (msurface_t *surf, vec3_t origin); +void R_AddTexturedSurfToVArray (msurface_t *surf, float scroll); +void R_AddLightMappedSurfToVArray (msurface_t *surf, float scroll); +void R_AddGLSLShadedWarpSurfToVArray (msurface_t *surf, float scroll); +void R_KillNormalTMUs(void); //shadows -extern cvar_t *r_shadowmapratio; +extern void R_InitShadowSubsystem(void); +extern void R_CastShadow(void); +extern cvar_t *r_shadowmapscale; extern int r_lightgroups; extern image_t *r_depthtexture; extern image_t *r_depthtexture2; extern image_t *r_colorbuffer; -extern image_t *r_shadowbuffer; -extern image_t *r_shadowbufferBlur; extern GLuint fboId[3]; extern GLuint rboId; extern vec3_t r_worldLightVec; -extern qboolean have_stencil; -typedef struct LightGroup { +typedef struct LightGroup +{ vec3_t group_origin; vec3_t accum_origin; float avg_intensity; @@ -572,16 +595,21 @@ } LightGroup_t; extern LightGroup_t LightGroups[MAX_LIGHTS]; +extern void R_CheckFBOExtensions (void); extern void R_GenerateShadowFBO(void); -extern void R_InitShadowSubsystem(void); extern void MD2_DrawCaster (void); extern void IQM_DrawCaster (void); extern void IQM_DrawRagDollCaster (int); extern void R_DrawDynamicCaster(void); extern void R_DrawVegetationCaster(void); -extern void R_CastShadow(void); -extern float SHD_ShadowLight (vec3_t pos, vec3_t angles, vec3_t lightAdd, int type); +extern void R_DrawEntityCaster(entity_t *ent); +extern void R_GenerateEntityShadow( void ); +extern void R_GenerateRagdollShadow( int RagDollID ); +extern void BSP_DrawShadowPoly (msurface_t *fa, vec3_t origin); +extern void R_DrawShadowMapWorld(qboolean forEnt, vec3_t origin); int FB_texture_width, FB_texture_height; +float fadeShadow; +cvar_t *r_shadowcutoff; //shader programs extern void R_LoadARBPrograms(void); @@ -592,11 +620,16 @@ //glsl extern GLhandleARB g_programObj; +extern GLhandleARB g_shadowprogramObj; extern GLhandleARB g_waterprogramObj; extern GLhandleARB g_meshprogramObj; +extern GLhandleARB g_glassprogramObj; +extern GLhandleARB g_blankmeshprogramObj; extern GLhandleARB g_fbprogramObj; extern GLhandleARB g_blurprogramObj; extern GLhandleARB g_rblurprogramObj; +extern GLhandleARB g_dropletsprogramObj; +extern GLhandleARB g_godraysprogramObj; extern GLhandleARB g_vertexShader; extern GLhandleARB g_fragmentShader; @@ -616,16 +649,31 @@ extern GLuint g_location_dynamic; extern GLuint g_location_shadowmap; extern GLuint g_Location_statshadow; +extern GLuint g_location_xOffs; +extern GLuint g_location_yOffs; extern GLuint g_location_lightPosition; extern GLuint g_location_staticLightPosition; extern GLuint g_location_lightColour; extern GLuint g_location_lightCutoffSquared; +extern GLuint g_location_liquid; +extern GLuint g_location_shiny; +extern GLuint g_location_rsTime; +extern GLuint g_location_liquidTexture; +extern GLuint g_location_liquidNormTex; +extern GLuint g_location_chromeTex; + +//shadows on white bsp surface +extern GLuint g_location_entShadow; +extern GLuint g_location_fadeShadow; +extern GLuint g_location_xOffset; +extern GLuint g_location_yOffset; //water extern GLuint g_location_baseTexture; extern GLuint g_location_normTexture; extern GLuint g_location_refTexture; -extern GLuint g_location_tangent; +extern GLuint g_location_waterEyePos; +extern GLuint g_location_tangentSpaceTransform; extern GLuint g_location_time; extern GLuint g_location_lightPos; extern GLuint g_location_reflect; @@ -637,13 +685,28 @@ extern GLuint g_location_baseTex; extern GLuint g_location_normTex; extern GLuint g_location_fxTex; +extern GLuint g_location_fx2Tex; extern GLuint g_location_color; -extern GLuint g_location_minLight; extern GLuint g_location_meshNormal; extern GLuint g_location_meshTime; extern GLuint g_location_meshFog; extern GLuint g_location_useFX; extern GLuint g_location_useGlow; +extern GLuint g_location_useShell; +extern GLuint g_location_useCube; +extern GLuint g_location_useGPUanim; +extern GLuint g_location_outframe; +extern GLuint g_location_fromView; + +//glass +extern GLuint g_location_gmirTexture; +extern GLuint g_location_grefTexture; +extern GLuint g_location_gLightPos; +extern GLuint g_location_gFog; +extern GLuint g_location_gOutframe; + +//blank mesh +extern GLuint g_location_bmOutframe; //fullscreen distortion effects extern GLuint g_location_framebuffTex; @@ -660,6 +723,18 @@ extern GLuint g_location_rsource; extern GLuint g_location_rparams; +//water droplets +extern GLuint g_location_drSource; +extern GLuint g_location_drTex; +extern GLuint g_location_drTime; +extern GLuint g_location_drParams; + +//god rays +extern GLuint g_location_lightPositionOnScreen; +extern GLuint g_location_sunTex; +extern GLuint g_location_godrayScreenAspect; +extern GLuint g_location_sunRadius; + //MD2 extern void Mod_LoadMD2Model (model_t *mod, void *buffer); @@ -671,8 +746,10 @@ extern image_t *r_mirrortexture; extern cvar_t *cl_gun; vec3_t lightPosition; +vec3_t statLightPosition; +float statLightIntensity; float dynFactor; -extern void R_GetLightVals(vec3_t origin, qboolean RagDoll, qboolean dynamic); +extern void R_GetLightVals(vec3_t origin, qboolean RagDoll); extern void R_ModelViewTransform(const vec3_t in, vec3_t out); extern void GL_BlendFunction (GLenum sfactor, GLenum dfactor); @@ -686,8 +763,8 @@ extern void IQM_AnimateFrame(float curframe, int nextframe); extern qboolean IQM_InAnimGroup(int frame, int oldframe); extern int IQM_NextFrame(int frame); -extern void IQM_AnimateRagdoll(int RagDollID); -extern void IQM_DrawRagDollFrame(int RagDollID, int skinnum, float shellAlpha, int shellEffect); +extern void IQM_AnimateRagdoll(int RagDollID, int shellEffect); +extern void IQM_DrawFrame(int skinnum, qboolean ragdoll, float shellAlpha); extern void IQM_DrawShadow(vec3_t origin); //Ragdoll diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_lodcalc.h alien-arena-7.66+dfsg/source/ref_gl/r_lodcalc.h --- alien-arena-7.53+dfsg/source/ref_gl/r_lodcalc.h 1970-01-01 00:00:00.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_lodcalc.h 2013-06-22 20:07:35.000000000 +0000 @@ -0,0 +1,23 @@ +/* +============= +LOD calculation + +The width and height occupied by a model on screen after it's been rendered +will scale as the square of the FOV setting, and proportionally to the +width/height of the screen itself. Based on the assumption that 500 units is +an adequate LOD cutoff distance at 1920*1080 with an FOV of 90, we can scale +the LOD cutoff distance to the lowest point where there will be no noticable +ugliness. + +NOTE: Turns out the player's FOV setting goes to fov_x and not fov_y. Go +figure. +============= +*/ +#define LOD_BASE_H 1920.0 +#define LOD_BASE_W 1080.0 +#define LOD_BASE_DIST 500.0 +#define LOD_BASE_FOV 90.0 +#define LOD_DIST (LOD_BASE_DIST*\ + (r_newrefdef.width/LOD_BASE_W)*(r_newrefdef.height/LOD_BASE_H)*\ + (LOD_BASE_FOV/r_newrefdef.fov_x)*\ + (LOD_BASE_FOV/r_newrefdef.fov_x)) diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_main.c alien-arena-7.66+dfsg/source/ref_gl/r_main.c --- alien-arena-7.53+dfsg/source/ref_gl/r_main.c 2011-12-21 05:24:02.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_main.c 2013-08-19 03:26:16.000000000 +0000 @@ -46,13 +46,14 @@ glstate_t gl_state; cvar_t *gl_normalmaps; +cvar_t *gl_bspnormalmaps; cvar_t *gl_shadowmaps; -cvar_t *gl_glsl_postprocess; cvar_t *gl_arb_fragment_program; cvar_t *gl_glsl_shaders; +cvar_t *gl_fog; entity_t *currententity; -model_t *currentmodel; +model_t *currentmodel; cplane_t frustum[4]; @@ -66,6 +67,7 @@ int c_flares; int c_grasses; int c_beams; +extern int c_vbo_batches; extern int c_visible_lightmaps; extern int c_visible_textures; @@ -82,6 +84,7 @@ vec3_t vpn; vec3_t vright; vec3_t r_origin; +int r_origin_leafnum; float r_world_matrix[16]; float r_project_matrix[16]; @@ -96,7 +99,6 @@ cvar_t *r_norefresh; cvar_t *r_drawentities; cvar_t *r_drawworld; -cvar_t *r_speeds; cvar_t *r_fullbright; cvar_t *r_novis; cvar_t *r_nocull; @@ -105,7 +107,7 @@ cvar_t *r_wave; // Water waves -cvar_t *r_shadowmapratio; +cvar_t *r_shadowmapscale; cvar_t *r_overbrightbits; @@ -122,16 +124,13 @@ cvar_t *gl_particle_att_b; cvar_t *gl_particle_att_c; -cvar_t *gl_ext_swapinterval; cvar_t *gl_ext_pointparameters; -cvar_t *gl_ext_compiled_vertex_array; cvar_t *gl_log; cvar_t *gl_bitdepth; cvar_t *gl_drawbuffer; cvar_t *gl_driver; cvar_t *gl_lightmap; -cvar_t *gl_shadows; cvar_t *gl_mode; cvar_t *gl_dynamic; cvar_t *gl_modulate; @@ -156,6 +155,7 @@ cvar_t *vid_ref; cvar_t *r_anisotropic; +cvar_t *r_alphamasked_anisotropic; cvar_t *r_ext_max_anisotropy; cvar_t *r_shaders; @@ -163,6 +163,12 @@ cvar_t *r_lensflare; cvar_t *r_lensflare_intens; cvar_t *r_drawsun; +cvar_t *r_lightbeam; +cvar_t *r_godrays; +cvar_t *r_godray_intensity; +cvar_t *r_optimize; + +cvar_t *r_lightmapfiles; qboolean map_fog; @@ -191,7 +197,7 @@ //ODE initialization error check int r_odeinit_success; // 0 if dODEInit2() fails, 1 otherwise. -//fog stuff +//fog script stuff struct r_fog { float red; @@ -203,6 +209,9 @@ } fog; unsigned r_weather; unsigned r_nosun; +float r_sunX; +float r_sunY; +float r_sunZ; /* ================= @@ -217,7 +226,7 @@ char a_string[128]; char *buffer; char *s; - size_t result; + size_t result; if((fp = fopen(config_file, "rb" )) == NULL) { @@ -251,6 +260,12 @@ r_weather = atoi(a_string); strcpy( a_string, COM_Parse( &s ) ); r_nosun = atoi(a_string); + strcpy( a_string, COM_Parse( &s ) ); + r_sunX = atof(a_string); + strcpy( a_string, COM_Parse( &s ) ); + r_sunY = atof(a_string); + strcpy( a_string, COM_Parse( &s ) ); + r_sunZ = atof(a_string); if(fog.density > 0) map_fog = true; @@ -263,6 +278,12 @@ free( buffer ); } fclose( fp ); + + if (gl_fog->integer < 1) + { + map_fog = false; + r_weather = false; + } return; } @@ -273,6 +294,7 @@ ================= */ +//to do - read in secondary music location(for CTF music shift) void R_ReadMusicScript( char *config_file ) { FILE *fp; @@ -323,7 +345,7 @@ int i; cplane_t *p; - if (r_nocull->value) + if (r_nocull->integer) return false; for (i=0,p=frustum ; i<4; i++,p++) @@ -388,12 +410,34 @@ return false; } +qboolean R_CullSphere( const vec3_t centre, const float radius, const int clipflags ) +{ + int i; + cplane_t *p; + + if (r_nocull->value) + return false; + + for (i=0,p=frustum ; i<4; i++,p++) + { + if ( !(clipflags & (1<normal ) - p->dist <= -radius ) + return true; + } + + return false; +} + void R_RotateForEntity (entity_t *e) { qglTranslatef (e->origin[0], e->origin[1], e->origin[2]); qglRotatef (e->angles[1], 0, 0, 1); qglRotatef (-e->angles[0], 0, 1, 0); + qglRotatef (-e->angles[2], 1, 0, 0); } @@ -435,43 +479,21 @@ qglEnable (GL_TEXTURE_2D); } -/* -============= -LOD calculation - -The width and height occupied by a model on screen after it's been rendered -will scale as the square of the FOV setting, and proportionally to the -width/height of the screen itself. Based on the assumption that 500 units is -an adequate LOD cutoff distance at 1920*1080 with an FOV of 90, we can scale -the LOD cutoff distance to the lowest point where there will be no noticable -ugliness. - -NOTE: Turns out the player's FOV setting goes to fov_x and not fov_y. Go -figure. -============= -*/ -#define LOD_BASE_H 1920.0 -#define LOD_BASE_W 1080.0 -#define LOD_BASE_DIST 500.0 -#define LOD_BASE_FOV 90.0 -#define LOD_DIST (LOD_BASE_DIST*\ - (vid.width/LOD_BASE_W)*(vid.height/LOD_BASE_H)*\ - (LOD_BASE_FOV/r_newrefdef.fov_x)*\ - (LOD_BASE_FOV/r_newrefdef.fov_x)) +#include "r_lodcalc.h" /* ============= R_DrawEntitiesOnList ============= */ +extern cvar_t *cl_simpleitems; void R_DrawEntitiesOnList (void) { int i; rscript_t *rs = NULL; vec3_t dist; - char shortname[MAX_QPATH]; - if (!r_drawentities->value) + if (!r_drawentities->integer) return; if ( !r_odeinit_success ) @@ -485,16 +507,15 @@ currententity = &r_newrefdef.entities[i]; if (currententity->flags & RF_TRANSLUCENT) continue; // transluscent - - if (currententity->model && r_shaders->value) + + if (currententity->model && r_shaders->integer) { rs=(rscript_t *)currententity->model->script; //custom player skin (must be done here) if (currententity->skin) { - COM_StripExtension ( currententity->skin->name, shortname ); - rs = RS_FindScript(shortname); + rs = currententity->skin->script; if(rs) RS_ReadyScript(rs); } @@ -506,9 +527,14 @@ } currentmodel = currententity->model; + + if (cl_simpleitems->integer && currentmodel && currentmodel->simple_texnum) + continue; - //get distance, set lod if available - VectorSubtract(r_origin, currententity->origin, dist); + //get distance + VectorSubtract(r_origin, currententity->origin, dist); + + //set lod if available if(VectorLength(dist) > LOD_DIST*2.0) { if(currententity->lod2) @@ -551,15 +577,14 @@ if (!(currententity->flags & RF_TRANSLUCENT)) continue; // solid - if (currententity->model && r_shaders->value) + if (currententity->model && r_shaders->integer) { rs=(rscript_t *)currententity->model->script; //custom player skin (must be done here) if (currententity->skin) { - COM_StripExtension ( currententity->skin->name, shortname ); - rs = RS_FindScript(shortname); + rs = currententity->skin->script; if(rs) RS_ReadyScript(rs); } @@ -571,6 +596,7 @@ } currentmodel = currententity->model; + fadeShadow = 1.0; if (!currentmodel) { @@ -600,9 +626,8 @@ { int i; rscript_t *rs = NULL; - char shortname[MAX_QPATH]; - if (!r_drawentities->value) + if (!r_drawentities->integer) return; if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) @@ -615,15 +640,14 @@ if (currententity->flags & RF_TRANSLUCENT) continue; // transluscent - if (currententity->model && r_shaders->value) + if (currententity->model && r_shaders->integer) { rs=(rscript_t *)currententity->model->script; //custom player skin (must be done here) if (currententity->skin) { - COM_StripExtension ( currententity->skin->name, shortname ); - rs = RS_FindScript(shortname); + rs = currententity->skin->script; if(rs) RS_ReadyScript(rs); } @@ -664,15 +688,14 @@ if (!(currententity->flags & RF_TRANSLUCENT)) continue; // solid - if (currententity->model && r_shaders->value) + if (currententity->model && r_shaders->integer) { rs=(rscript_t *)currententity->model->script; //custom player skin (must be done here) if (currententity->skin) { - COM_StripExtension ( currententity->skin->name, shortname ); - rs = RS_FindScript(shortname); + rs = currententity->skin->script; if(rs) RS_ReadyScript(rs); } @@ -717,12 +740,12 @@ */ void R_PolyBlend (void) { - if (!gl_polyblend->value) + if (!gl_polyblend->integer) return; if (!v_blend[3]) return; - if(!r_drawing_fbeffect && cl_paindist->value) { + if(!r_drawing_fbeffect && cl_paindist->integer) { if(v_blend[0] > 2*v_blend[1] && v_blend[0] > 2*v_blend[2]) { r_drawing_fbeffect = true; r_fbFxType = 2; //FLASH DISTORTION @@ -806,7 +829,7 @@ void R_SetupFrame (void) { int i; - mleaf_t *leaf; + mleaf_t *leaf; r_framecount++; @@ -820,7 +843,8 @@ { r_oldviewcluster = r_viewcluster; r_oldviewcluster2 = r_viewcluster2; - leaf = Mod_PointInLeaf (r_origin, r_worldmodel); + r_viewleaf = leaf = Mod_PointInLeaf (r_origin, r_worldmodel); + r_origin_leafnum = CM_PointLeafnum (r_origin); r_viewcluster = r_viewcluster2 = leaf->cluster; // check above and below so crossing solid water doesn't draw wrong @@ -830,7 +854,7 @@ VectorCopy (r_origin, temp); temp[2] -= 16; - leaf = Mod_PointInLeaf (temp, r_worldmodel); + r_viewleaf2 = leaf = Mod_PointInLeaf (temp, r_worldmodel); if ( !(leaf->contents & CONTENTS_SOLID) && (leaf->cluster != r_viewcluster2) ) r_viewcluster2 = leaf->cluster; @@ -841,7 +865,7 @@ VectorCopy (r_origin, temp); temp[2] += 16; - leaf = Mod_PointInLeaf (temp, r_worldmodel); + r_viewleaf2 = leaf = Mod_PointInLeaf (temp, r_worldmodel); if ( !(leaf->contents & CONTENTS_SOLID) && (leaf->cluster != r_viewcluster2) ) r_viewcluster2 = leaf->cluster; @@ -878,26 +902,37 @@ /* ============= -R_SetupGL +R_SetupViewport ============= */ -void R_SetupGL (void) +void R_SetupViewport (void) { - float screenaspect; - int x, x2, y2, y, w, h; + int x, y, w, h; - // - // set up viewport - // - x = floor(r_newrefdef.x * vid.width / vid.width); - x2 = ceil((r_newrefdef.x + r_newrefdef.width) * vid.width / vid.width); - y = floor(vid.height - r_newrefdef.y * vid.height / vid.height); - y2 = ceil(vid.height - (r_newrefdef.y + r_newrefdef.height) * vid.height / vid.height); + // The viewport info in r_newrefdef is constructed with the upper left + // corner as the origin, whereas glViewport treats the lower left corner + // as the origin. So we have to do some math to fix the y-coordinates. + + x = r_newrefdef.x; + w = r_newrefdef.width; + y = vid.height - r_newrefdef.y - r_newrefdef.height; + h = r_newrefdef.height; + + qglViewport (x, y, w, h); // MPO : note this happens every frame interestingly enough +} - w = x2 - x; - h = y - y2; - qglViewport (x, y2, w, h); // MPO : note this happens every frame interestingly enough + +/* +============= +R_SetupGL +============= +*/ +void R_SetupGL (void) +{ + float screenaspect; + + R_SetupViewport (); // // set up projection matrix @@ -932,7 +967,7 @@ // set drawing parms // - if (gl_cull->value) + if (gl_cull->integer) qglEnable(GL_CULL_FACE); qglDisable(GL_BLEND); @@ -952,9 +987,9 @@ void R_Clear (void) { qglClearColor(0,0,0,1); - if (gl_clear->value) + if (gl_clear->integer) qglClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); - else if (!cl_add_blend->value && info_spectator->value && (CM_PointContents(r_newrefdef.vieworg, 0) & CONTENTS_SOLID)) + else if (!cl_add_blend->integer && info_spectator->integer && (CM_PointContents(r_newrefdef.vieworg, 0) & CONTENTS_SOLID)) qglClear (GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //out of map else qglClear (GL_DEPTH_BUFFER_BIT); @@ -965,16 +1000,12 @@ qglDepthRange (gldepthmin, gldepthmax); - //our shadow system uses a combo of shadmaps and stencil volumes. - if (have_stencil && (gl_shadows->integer || gl_shadowmaps->value)) { + //our shadow system uses a combo of shadmaps and stencil volumes. + if (have_stencil && gl_shadowmaps->integer) { - if(gl_shadowmaps->value) - qglClearStencil(0); - else - qglClearStencil(1); - - qglClear(GL_STENCIL_BUFFER_BIT); - } + qglClearStencil(0); + qglClear(GL_STENCIL_BUFFER_BIT); + } } void R_Flash( void ) @@ -993,17 +1024,16 @@ void R_RenderView (refdef_t *fd) { GLfloat colors[4] = {(GLfloat) fog.red, (GLfloat) fog.green, (GLfloat) fog.blue, (GLfloat) 0.1}; - static int printf_throttle; numRadarEnts = 0; - if (r_norefresh->value) + if (r_norefresh->integer) return; r_newrefdef = *fd; //shadowmaps - if(gl_shadowmaps->value) { + if(gl_shadowmaps->integer) { qglEnable(GL_DEPTH_TEST); qglClearColor(0,0,0,1.0f); @@ -1024,7 +1054,7 @@ if (!r_worldmodel && !( r_newrefdef.rdflags & RDF_NOWORLDMODEL ) ) Com_Error (ERR_DROP, "R_RenderView: NULL worldmodel"); - + // init r_speeds counters last_c_brush_polys = c_brush_polys; last_c_alias_polys = c_alias_polys; @@ -1033,20 +1063,23 @@ c_flares = 0; c_grasses = 0; c_beams = 0; + c_vbo_batches = 0; R_PushDlights (); - if (gl_finish->value) - qglFinish (); - R_SetupFrame (); R_SetFrustum (); + + R_MarkWorldSurfs (); // done here so we know if we're in water + + if (gl_finish->integer) + qglFinish (); + + // OpenGL calls come after here R_SetupGL (); - R_MarkLeaves (); // done here so we know if we're in water - if(map_fog) { qglFogi(GL_FOG_MODE, GL_LINEAR); @@ -1057,17 +1090,17 @@ qglEnable(GL_FOG); } - R_DrawWorld (); - - R_DrawRSSurfaces(); + R_DrawWorldSurfs (); - if(r_lensflare->value) + if(r_lensflare->integer) R_RenderFlares (); R_DrawEntitiesOnList (); - + R_DrawVegetationSurface (); + R_DrawSimpleItems (); + R_CastShadow(); R_RenderAllRagdolls(); //move back ahead of r_castshadow when we figure out shadow jitter bug @@ -1076,20 +1109,29 @@ R_DrawAlphaSurfaces (); - R_DrawBeamSurface (); - - qglLoadMatrixf (r_world_matrix); //moving trans brushes + if (r_lightbeam->integer) + R_DrawBeamSurface (); R_DrawParticles (); - if(gl_mirror->value) { - - qglBindTexture(GL_TEXTURE_2D, r_mirrortexture->texnum); - qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, - 0, 0, 0, 256, 512, 512); + if(gl_mirror->integer) + { + int ms = Sys_Milliseconds (); + if ( ms < r_newrefdef.last_mirrorupdate_time || + (ms-r_newrefdef.last_mirrorupdate_time) >= 16) + { + GL_SelectTexture (GL_TEXTURE0); + GL_Bind (r_mirrortexture->texnum); + qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, + 0, 0, 0, r_mirrortexture->upload_height/2, + r_mirrortexture->upload_width, + r_mirrortexture->upload_height); + r_newrefdef.last_mirrorupdate_time = ms; + } } - R_BloomBlend( fd );//BLOOMS + + R_BloomBlend( &r_newrefdef );//BLOOMS R_RenderSun(); @@ -1099,27 +1141,12 @@ R_Flash(); - if (r_speeds->value == 1 ) - { // display r_speeds 'wpoly' and 'epoly'counters (value==2 puts on HUD) - if ( c_brush_polys != last_c_brush_polys - || c_alias_polys != last_c_alias_polys ) - { - Com_Printf( "%5i wpoly %5i epoly\n", c_brush_polys, c_alias_polys ); - } - } - else if( r_speeds->value == 3 ) - { // display other counters, of unknown utility - if ( !(++printf_throttle % 32) ) - { - Com_Printf( "%5i flares %5i grasses %5i vlmaps %5i vtex %5i beams\n", - c_flares, c_grasses, c_visible_lightmaps, c_visible_textures, c_beams ); - } - } - if(map_fog) qglDisable(GL_FOG); R_DrawRadar(); + + *fd = r_newrefdef; } void R_SetGL2D (void) @@ -1173,7 +1200,8 @@ con_font = Cvar_Get ("con_font", "default", CVAR_ARCHIVE); - r_lefthand = Cvar_Get( "hand", "0", CVAR_USERINFO | CVAR_ARCHIVE ); + r_lefthand = Cvar_Get( "hand", "0", CVAR_USERINFO | CVAR_ARCHIVE | CVARDOC_INT); + Cvar_Describe (r_lefthand, "0 means show gun on the right, 1 means show gun on the left, 2 means hide the gun altogether."); r_norefresh = Cvar_Get ("r_norefresh", "0", 0); r_fullbright = Cvar_Get ("r_fullbright", "0", 0); r_drawentities = Cvar_Get ("r_drawentities", "1", 0); @@ -1181,7 +1209,6 @@ r_novis = Cvar_Get ("r_novis", "0", 0); r_nocull = Cvar_Get ("r_nocull", "0", 0); r_lerpmodels = Cvar_Get ("r_lerpmodels", "1", 0); - r_speeds = Cvar_Get ("r_speeds", "0", 0); r_wave = Cvar_Get ("r_wave", "2", CVAR_ARCHIVE); // Water waves @@ -1194,87 +1221,106 @@ gl_particle_att_b = Cvar_Get( "gl_particle_att_b", "0.0", CVAR_ARCHIVE ); gl_particle_att_c = Cvar_Get( "gl_particle_att_c", "0.01", CVAR_ARCHIVE ); - gl_modulate = Cvar_Get ("gl_modulate", "2", CVAR_ARCHIVE ); + gl_modulate = Cvar_Get ("gl_modulate", "2", CVAR_ARCHIVE|CVARDOC_INT ); + Cvar_Describe (gl_modulate, "Brightness setting. Higher means brighter."); gl_log = Cvar_Get( "gl_log", "0", 0 ); gl_bitdepth = Cvar_Get( "gl_bitdepth", "0", 0 ); gl_mode = Cvar_Get( "gl_mode", "3", CVAR_ARCHIVE ); gl_lightmap = Cvar_Get ("gl_lightmap", "0", 0); - gl_shadows = Cvar_Get ("gl_shadows", "2", CVAR_ARCHIVE ); gl_nobind = Cvar_Get ("gl_nobind", "0", 0); - gl_picmip = Cvar_Get ("gl_picmip", "0", 0); + gl_picmip = Cvar_Get ("gl_picmip", "0", CVAR_ARCHIVE|CVARDOC_INT); + Cvar_Describe (gl_picmip, "Texture detail. 0 means full detail. Each higher setting has 1/4 less detail."); gl_skymip = Cvar_Get ("gl_skymip", "0", 0); gl_showtris = Cvar_Get ("gl_showtris", "0", 0); - gl_showpolys = Cvar_Get ("gl_showpolys", "0", 0); - gl_finish = Cvar_Get ("gl_finish", "0", CVAR_ARCHIVE); - gl_clear = Cvar_Get ("gl_clear", "0", 0); - gl_cull = Cvar_Get ("gl_cull", "1", 0); + gl_showpolys = Cvar_Get ("gl_showpolys", "0", CVARDOC_INT); + Cvar_Describe (gl_showpolys, "Useful tool for mappers. 1 means show world polygon outlines for visible surfaces. 2 means show outlines for all surfaces in the PVS, even if they are hidden. Only works with gl_usevbo 0."); + gl_finish = Cvar_Get ("gl_finish", "0", CVAR_ARCHIVE|CVARDOC_BOOL); + Cvar_Describe (gl_finish, "Waits for graphics driver to finish drawing each frame before drawing the next one. Hurts performance but may improve smoothness on very low-end machines."); + gl_clear = Cvar_Get ("gl_clear", "0", CVARDOC_BOOL); + gl_cull = Cvar_Get ("gl_cull", "1", CVARDOC_BOOL); + Cvar_Describe (gl_cull, "Avoid rendering anything that's off the edge of the screen. Good for performance, recommend leaving it on."); gl_polyblend = Cvar_Get ("gl_polyblend", "1", 0); // OPENGL_DRIVER defined by in config.h -#if defined DARWIN_SPECIAL_CASE - // archiving gl_driver means the lib specified in config.h may be - // overridden by what is in config.cfg. This defeats any attempt - // by configure to specify a different location for the libGL.dylib - // for now make it a special case, but questionable whether it should - // be archived for others. gl_driver = Cvar_Get( "gl_driver", OPENGL_DRIVER, 0 ); -#else - gl_driver = Cvar_Get( "gl_driver", OPENGL_DRIVER, CVAR_ARCHIVE ); -#endif gl_texturemode = Cvar_Get( "gl_texturemode", "GL_LINEAR_MIPMAP_LINEAR", CVAR_ARCHIVE ); gl_texturealphamode = Cvar_Get( "gl_texturealphamode", "default", CVAR_ARCHIVE ); gl_texturesolidmode = Cvar_Get( "gl_texturesolidmode", "default", CVAR_ARCHIVE ); gl_lockpvs = Cvar_Get( "gl_lockpvs", "0", 0 ); - gl_ext_swapinterval = Cvar_Get( "gl_ext_swapinterval", "1", CVAR_ARCHIVE ); gl_ext_pointparameters = Cvar_Get( "gl_ext_pointparameters", "0", CVAR_ARCHIVE ); - gl_ext_compiled_vertex_array = Cvar_Get( "gl_ext_compiled_vertex_array", "1", CVAR_ARCHIVE ); gl_drawbuffer = Cvar_Get( "gl_drawbuffer", "GL_BACK", 0 ); - gl_swapinterval = Cvar_Get( "gl_swapinterval", "1", CVAR_ARCHIVE ); + gl_swapinterval = Cvar_Get( "gl_swapinterval", "1", CVAR_ARCHIVE|CVARDOC_BOOL ); + Cvar_Describe (gl_swapinterval, "Sync to Vblank. Eliminates \"tearing\" effects, but it can hurt framerates."); - r_shaders = Cvar_Get ("r_shaders", "1", CVAR_ARCHIVE); + r_shaders = Cvar_Get ("r_shaders", "1", CVAR_ARCHIVE|CVARDOC_BOOL); r_overbrightbits = Cvar_Get( "r_overbrightbits", "2", CVAR_ARCHIVE ); - gl_usevbo = Cvar_Get("gl_usevbo", "1", CVAR_ARCHIVE ); + gl_usevbo = Cvar_Get("gl_usevbo", "1", CVAR_ARCHIVE|CVARDOC_BOOL); + Cvar_Describe (gl_usevbo, "Use VBOs for mesh and world geometry. Leave this on unless you've got a very old graphics card."); - gl_mirror = Cvar_Get("gl_mirror", "1", CVAR_ARCHIVE); + gl_mirror = Cvar_Get("gl_mirror", "1", CVAR_ARCHIVE|CVARDOC_BOOL); - vid_fullscreen = Cvar_Get( "vid_fullscreen", "1", CVAR_ARCHIVE ); + vid_fullscreen = Cvar_Get( "vid_fullscreen", "1", CVAR_ARCHIVE|CVARDOC_BOOL); vid_gamma = Cvar_Get( "vid_gamma", "1.0", CVAR_ARCHIVE ); vid_contrast = Cvar_Get( "vid_contrast", "1.0", CVAR_ARCHIVE); - vid_ref = Cvar_Get( "vid_ref", "gl", CVAR_ARCHIVE ); + //TODO: remove, unless we decide to add GL ES support or something. + vid_ref = Cvar_Get( "vid_ref", "gl", CVAR_ARCHIVE|CVAR_ROM ); gl_vlights = Cvar_Get("gl_vlights", "1", CVAR_ARCHIVE); - gl_normalmaps = Cvar_Get("gl_normalmaps", "0", CVAR_ARCHIVE); - gl_shadowmaps = Cvar_Get("gl_shadowmaps", "0", CVAR_ARCHIVE); - gl_glsl_postprocess = Cvar_Get("gl_glsl_postprocess", "1", CVAR_ARCHIVE); + gl_normalmaps = Cvar_Get("gl_normalmaps", "1", CVAR_ARCHIVE|CVARDOC_BOOL); + gl_bspnormalmaps = Cvar_Get("gl_bspnormalmaps", "0", CVAR_ARCHIVE|CVARDOC_BOOL); + gl_shadowmaps = Cvar_Get("gl_shadowmaps", "0", CVAR_ARCHIVE|CVARDOC_BOOL); + gl_fog = Cvar_Get ("gl_fog", "1", CVAR_ARCHIVE|CVARDOC_BOOL); + Cvar_Describe (gl_fog, "Fog and weather effects."); - r_shadowmapratio = Cvar_Get( "r_shadowmapratio", "2", CVAR_ARCHIVE ); + r_shadowmapscale = Cvar_Get( "r_shadowmapscale", "1", CVAR_ARCHIVE ); + r_shadowcutoff = Cvar_Get( "r_shadowcutoff", "880", CVAR_ARCHIVE ); - r_lensflare = Cvar_Get( "r_lensflare", "1", CVAR_ARCHIVE ); - r_lensflare_intens = Cvar_Get ("r_lensflare_intens", "3", CVAR_ARCHIVE); + r_lensflare = Cvar_Get( "r_lensflare", "1", CVAR_ARCHIVE|CVARDOC_BOOL); + r_lensflare_intens = Cvar_Get ("r_lensflare_intens", "3", CVAR_ARCHIVE|CVARDOC_INT); r_drawsun = Cvar_Get("r_drawsun", "2", CVAR_ARCHIVE); + r_lightbeam = Cvar_Get ("r_lightbeam", "1", CVAR_ARCHIVE|CVARDOC_BOOL); + r_godrays = Cvar_Get ("r_godrays", "0", CVAR_ARCHIVE|CVARDOC_BOOL); + r_godray_intensity = Cvar_Get ("r_godray_intensity", "1.0", CVAR_ARCHIVE); + r_optimize = Cvar_Get ("r_optimize", "1", CVAR_ARCHIVE|CVARDOC_BOOL); + Cvar_Describe (r_optimize, "Skip BSP recursion unless you move. Good for performance, recommend leaving it on."); + + r_lightmapfiles = Cvar_Get("r_lightmapfiles", "1", CVAR_ARCHIVE|CVARDOC_BOOL); + Cvar_Describe (r_lightmapfiles, "Enables the loading of .lightmap files, with more detailed light and shadow. Turn this off if video RAM is limited."); r_minimap_size = Cvar_Get ("r_minimap_size", "256", CVAR_ARCHIVE ); r_minimap_zoom = Cvar_Get ("r_minimap_zoom", "1", CVAR_ARCHIVE ); r_minimap_style = Cvar_Get ("r_minimap_style", "1", CVAR_ARCHIVE ); - r_minimap = Cvar_Get ("r_minimap", "0", CVAR_ARCHIVE ); - r_ragdolls = Cvar_Get ("r_ragdolls", "1", CVAR_ARCHIVE ); - r_ragdoll_debug = Cvar_Get("r_ragdoll_debug", "0", CVAR_ARCHIVE ); + r_minimap = Cvar_Get ("r_minimap", "0", CVAR_ARCHIVE|CVARDOC_BOOL ); + + r_ragdolls = Cvar_Get ("r_ragdolls", "1", CVAR_ARCHIVE|CVARDOC_BOOL); + r_ragdoll_debug = Cvar_Get("r_ragdoll_debug", "0", CVAR_ARCHIVE|CVARDOC_BOOL); sys_priority = Cvar_Get("sys_priority", "0", CVAR_ARCHIVE); sys_affinity = Cvar_Get("sys_affinity", "1", CVAR_ARCHIVE); - gl_screenshot_type = Cvar_Get("gl_screenshot_type", "jpeg", CVAR_ARCHIVE); - gl_screenshot_jpeg_quality = Cvar_Get("gl_screenshot_jpeg_quality", "85", CVAR_ARCHIVE); + gl_screenshot_type = Cvar_Get("gl_screenshot_type", "jpeg", CVAR_ARCHIVE|CVARDOC_STR); + gl_screenshot_jpeg_quality = Cvar_Get("gl_screenshot_jpeg_quality", "85", CVAR_ARCHIVE|CVARDOC_INT); - r_firstrun = Cvar_Get("r_firstrun", "0", CVAR_ARCHIVE); //first time running the game + r_firstrun = Cvar_Get("r_firstrun", "0", CVAR_ARCHIVE|CVARDOC_BOOL); //first time running the game + Cvar_Describe (r_firstrun, "Set this to 0 if you want the game to auto detect your graphics settings next time you run it."); r_test = Cvar_Get("r_test", "0", CVAR_ARCHIVE); //for testing things + + // FIXME HACK copied over from the video menu code. These are initialized + // again elsewhere. TODO: work out any complications that may arise from + // deleting these duplicate initializations. + Cvar_Get( "r_bloom", "0", CVAR_ARCHIVE ); + Cvar_Get( "r_bloom_intensity", "0.5", CVAR_ARCHIVE); + Cvar_Get( "r_overbrightbits", "2", CVAR_ARCHIVE); + Cvar_Get( "vid_width", "640", CVAR_ARCHIVE); + Cvar_Get( "vid_height", "400", CVAR_ARCHIVE); + Cvar_Get( "gl_glsl_shaders", "1", CVAR_ARCHIVE); Cmd_AddCommand( "imagelist", GL_ImageList_f ); Cmd_AddCommand( "screenshot", GL_ScreenShot_f ); @@ -1295,18 +1341,18 @@ if ( vid_fullscreen->modified && !gl_config.allow_cds ) { Com_Printf ("R_SetMode() - CDS not allowed with this driver\n" ); - Cvar_SetValue( "vid_fullscreen", !vid_fullscreen->value ); + Cvar_SetValue( "vid_fullscreen", !vid_fullscreen->integer ); vid_fullscreen->modified = false; } - fullscreen = vid_fullscreen->value; + fullscreen = vid_fullscreen->integer; vid_fullscreen->modified = false; gl_mode->modified = false; - if ( ( err = GLimp_SetMode( &vid.width, &vid.height, gl_mode->value, fullscreen ) ) == rserr_ok ) + if ( ( err = GLimp_SetMode( &vid.width, &vid.height, gl_mode->integer, fullscreen ) ) == rserr_ok ) { - gl_state.prev_mode = gl_mode->value; + gl_state.prev_mode = gl_mode->integer; } else { @@ -1315,7 +1361,7 @@ Cvar_SetValue( "vid_fullscreen", 0); vid_fullscreen->modified = false; Com_Printf ("ref_gl::R_SetMode() - fullscreen unavailable in this mode\n" ); - if ( ( err = GLimp_SetMode( &vid.width, &vid.height, gl_mode->value, false ) ) == rserr_ok ) + if ( ( err = GLimp_SetMode( &vid.width, &vid.height, gl_mode->integer, false ) ) == rserr_ok ) return true; } else if ( err == rserr_invalid_mode ) @@ -1337,142 +1383,67 @@ /* =============== -R_SetLowest +R_SetCompatibility =============== */ -void R_SetLowest(void) +void R_SetCompatibility(void) { - Cvar_SetValue("r_bloom", 0); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 0); - Cvar_SetValue("gl_shadowmaps", 0); - Cvar_SetValue("gl_glsl_postprocess", 0); - Cvar_SetValue("gl_glsl_shaders", 0); - Cvar_SetValue("r_shaders", 0); - Cvar_SetValue("gl_shadows", 0); - Cvar_SetValue("gl_dynamic", 0); - Cvar_SetValue("gl_mirror", 0); - Cvar_SetValue("gl_vlights", 0); - - Com_Printf("...autodetected LOWEST game setting\n"); + Cmd_ExecuteString ("exec graphical_presets/compatibility.cfg"); + Cbuf_Execute (); + Com_Printf("...autodetected MAX COMPATIBILITY game setting\n"); } /* =============== -R_SetLow +R_SetMaxPerformance =============== */ -void R_SetLow( void ) +void R_SetMaxPerformance( void ) { - Cvar_SetValue("r_bloom", 0); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 0); - Cvar_SetValue("gl_shadowmaps", 0); - Cvar_SetValue("gl_glsl_postprocess", 0); - Cvar_SetValue("gl_glsl_shaders", 0); - Cvar_SetValue("r_shaders", 1); - Cvar_SetValue("gl_shadows", 2); - Cvar_SetValue("gl_dynamic", 0); - Cvar_SetValue("gl_mirror", 1); - Cvar_SetValue("gl_vlights", 0); - - Com_Printf("...autodetected LOW game setting\n"); + Cmd_ExecuteString ("exec graphical_presets/maxperformance.cfg"); + Cbuf_Execute (); + Com_Printf("...autodetected MAX PERFORMANCE game setting\n"); } /* =============== -R_SetMedium +R_SetPerformance =============== */ -void R_SetMedium( void ) +void R_SetPerformance( void ) { - Cvar_SetValue("r_bloom", 0); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 0); - Cvar_SetValue("gl_shadowmaps", 0); - Cvar_SetValue("gl_glsl_postprocess", 1); - Cvar_SetValue("gl_glsl_shaders", 1); - Cvar_SetValue("r_shaders", 1); - Cvar_SetValue("gl_shadows", 2); - Cvar_SetValue("gl_dynamic", 1); - Cvar_SetValue("gl_mirror", 1); - Cvar_SetValue("gl_vlights", 1); - - Com_Printf("...autodetected MEDIUM game setting\n"); + Cmd_ExecuteString ("exec graphical_presets/performance.cfg"); + Cbuf_Execute (); + Com_Printf("...autodetected PERFORMANCE game setting\n"); } /* =============== -R_SetHigh +R_SetQuality =============== */ -void R_SetHigh( void ) +void R_SetQuality( void ) { - Cvar_SetValue("r_bloom", 1); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 1); - Cvar_SetValue("gl_shadowmaps", 0); - Cvar_SetValue("gl_glsl_postprocess", 1); - Cvar_SetValue("gl_glsl_shaders", 1); - Cvar_SetValue("r_shaders", 1); - Cvar_SetValue("gl_shadows", 2); - Cvar_SetValue("gl_dynamic", 1); - Cvar_SetValue("gl_mirror", 1); - Cvar_SetValue("gl_vlights", 1); - - Com_Printf("...autodetected HIGH game setting\n"); + Cmd_ExecuteString ("exec graphical_presets/quality.cfg"); + Cbuf_Execute (); + Com_Printf("...autodetected QUALITY game setting\n"); } /* =============== -R_SetHighest +R_SetMaxQuality =============== */ -void R_SetHighest( void ) +void R_SetMaxQuality( void ) { - Cvar_SetValue("r_bloom", 1); - Cvar_SetValue("r_bloom_intensity", 0.5); - Cvar_SetValue("r_overbrightbits", 2); - Cvar_SetValue("gl_modulate", 2); - Cvar_SetValue("gl_picmip", 0); - Cvar_SetValue("vid_gamma", 1); - Cvar_SetValue("vid_contrast", 1); - Cvar_SetValue("gl_normalmaps", 1); - Cvar_SetValue("gl_shadowmaps", 1); - Cvar_SetValue("gl_glsl_postprocess", 1); - Cvar_SetValue("gl_glsl_shaders", 1); - Cvar_SetValue("r_shaders", 1); - Cvar_SetValue("gl_shadows", 0); - Cvar_SetValue("gl_dynamic", 1); - Cvar_SetValue("gl_mirror", 1); - Cvar_SetValue("gl_vlights", 1); - - Com_Printf("...autodetected HIGHEST game setting\n"); + Cmd_ExecuteString ("exec graphical_presets/maxquality.cfg"); + Cbuf_Execute (); + Com_Printf("...autodetected MAX QUALITY game setting\n"); } #if defined WIN32_VARIANT @@ -1553,8 +1524,6 @@ return -1; } - VID_MenuInit(); - /* ** get our various GL strings */ @@ -1599,7 +1568,7 @@ if (strstr(gl_config.extensions_string, "GL_EXT_point_parameters")) { - if(gl_ext_pointparameters->value) + if(gl_ext_pointparameters->integer) { qglPointParameterfEXT = (void(APIENTRY*)(GLenum, GLfloat))qwglGetProcAddress("glPointParameterfEXT"); qglPointParameterfvEXT = (void(APIENTRY*)(GLenum, const GLfloat*))qwglGetProcAddress("glPointParameterfvEXT"); @@ -1633,21 +1602,25 @@ gl_glsl_shaders = Cvar_Get("gl_glsl_shaders", "0", CVAR_ARCHIVE); gl_dynamic = Cvar_Get ("gl_dynamic", "0", CVAR_ARCHIVE); Cvar_SetValue("r_firstrun", 1); - R_SetLow(); + R_SetMaxPerformance(); Com_Printf("...Development Workaround. Low game settings forced.\n"); #else + //always do this check for ATI drivers - they are somewhat bugged in regards to shadowmapping and use of shadow2dproj command + if(!strcmp(gl_config.vendor_string, "ATI Technologies Inc.")) + gl_state.ati = true; + //load shader programs R_LoadARBPrograms(); R_LoadGLSLPrograms(); //if running for the very first time, automatically set video settings - if(!r_firstrun->value) + if(!r_firstrun->integer) { qboolean ati_nvidia = false; double CPUTotalSpeed = 4000.0; //default to this - int OGLVer = atoi(&gl_config.version_string[0]); + double OGLVer = atof(&gl_config.version_string[0]); //int OGLSubVer = atoi(&gl_config.version_string[2]); #if defined WIN32_VARIANT @@ -1697,25 +1670,25 @@ if(!strcmp(gl_config.vendor_string, "ATI Technologies Inc.") || !strcmp(gl_config.vendor_string, "NVIDIA Corporation")) ati_nvidia = true; - if(OGLVer < 2) + if(OGLVer < 2.1) { - //weak GPU, set low - R_SetLow(); + //weak GPU, set to maximum compatibility + R_SetCompatibility(); } - else if(OGLVer == 3) + else if(OGLVer >= 3) { //GPU is modern, check CPU if(CPUTotalSpeed > 3800.0 && ati_nvidia) - R_SetHighest(); + R_SetMaxQuality(); else - R_SetMedium(); + R_SetQuality(); } - else + else { if(CPUTotalSpeed > 3800.0 && ati_nvidia) - R_SetHigh(); + R_SetQuality(); else - R_SetMedium(); + R_SetPerformance(); } //never run again @@ -1724,6 +1697,8 @@ #endif GL_SetDefaultState(); + + R_CheckFBOExtensions (); GL_InitImages (); Mod_Init (); @@ -1829,11 +1804,11 @@ if ( gl_log->modified ) { - GLimp_EnableLogging( gl_log->value ); + GLimp_EnableLogging( gl_log->integer ); gl_log->modified = false; } - if ( gl_log->value ) + if ( gl_log->integer ) { GLimp_LogNewFrame(); } diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_mesh.c alien-arena-7.66+dfsg/source/ref_gl/r_mesh.c --- alien-arena-7.53+dfsg/source/ref_gl/r_mesh.c 2011-12-22 21:47:54.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_mesh.c 2013-06-26 15:56:34.000000000 +0000 @@ -25,6 +25,7 @@ #include "r_local.h" #include "r_ragdoll.h" +#include "r_lodcalc.h" /* ============================================================= @@ -47,6 +48,11 @@ static vec3_t NormalsArray[MAX_VERTICES]; static vec4_t TangentsArray[MAX_VERTICES]; +static vertCache_t *vbo_st; +static vertCache_t *vbo_xyz; +static vertCache_t *vbo_normals; +static vertCache_t *vbo_tangents; + extern vec3_t lightspot; vec3_t shadevector; float shadelight[3]; @@ -547,13 +553,6 @@ for (i=0 ; inum_glcmds ; i++) poutcmd[i] = LittleLong (pincmd[i]); -#if 0 - // register all skins - memcpy ((char *)pheader + pheader->ofs_skins, (char *)pinmodel + pheader->ofs_skins, - pheader->num_skins*MAX_SKINNAME); - for (i=0 ; inum_skins ; i++) - mod->skins[i] = GL_FindImage ((char *)pheader + pheader->ofs_skins + i*MAX_SKINNAME, it_skin); -#else // skin names are not always valid or file may not exist // do not register skins that cannot be found to eliminate extraneous // file system searching. @@ -573,37 +572,27 @@ pheader->num_skins--; // the important part: adjust skin count pstring += MAX_SKINNAME; } - } -#endif - - // load script - if(pheader->num_skins) - { - char rs[MAX_OSPATH]; - - strcpy(rs,(char *)pinmodel + LittleLong(pinmodel->ofs_skins)); - - rs[strlen(rs)-4]=0; - - mod->script = RS_FindScript(rs); - + + // load script + if (mod->skins[0] != NULL) + mod->script = mod->skins[0]->script; if (mod->script) RS_ReadyScript( mod->script ); } cx = pheader->num_st * sizeof(fstvert_t); - mod->st = st = (fstvert_t*)Hunk_Alloc (cx); + mod->st = st = (fstvert_t*)Hunk_Alloc (cx); // Calculate texcoords for triangles - iw = 1.0 / pheader->skinwidth; - ih = 1.0 / pheader->skinheight; - for (i=0; inum_st ; i++) - { - s = poutst[i].s; - t = poutst[i].t; - st[i].s = (s + 1.0) * iw; //tweak by one pixel - st[i].t = (t + 1.0) * ih; - } + iw = 1.0 / pheader->skinwidth; + ih = 1.0 / pheader->skinheight; + for (i=0; inum_st ; i++) + { + s = poutst[i].s; + t = poutst[i].t; + st[i].s = (s + 1.0) * iw; //tweak by one pixel + st[i].t = (t + 1.0) * ih; + } MD2_LoadVertexArrays(mod); @@ -682,7 +671,7 @@ //redo this using max/min from all frames pframe = ( daliasframe_t * ) ( ( byte * ) paliashdr + - paliashdr->ofs_frames); + paliashdr->ofs_frames); /* ** compute axially aligned mins and maxs @@ -736,21 +725,21 @@ #if 0 void MD2_VlightModel (vec3_t baselight, dtrivertx_t *verts, vec3_t lightOut) { - int i; - float l; + int i; + float l; - l = shadedots[verts->lightnormalindex]; - VectorScale(baselight, l, lightOut); + l = shadedots[verts->lightnormalindex]; + VectorScale(baselight, l, lightOut); - for (i=0; i<3; i++) - { + for (i=0; i<3; i++) + { //add contrast - lights lighter, darks darker lightOut[i] += (lightOut[i] - 0.25); //keep values sane - if (lightOut[i]<0) lightOut[i] = 0; - if (lightOut[i]>1) lightOut[i] = 1; - } + if (lightOut[i]<0) lightOut[i] = 0; + if (lightOut[i]>1) lightOut[i] = 1; + } } #else /* Profiling shows this is a "hotspot". Calculation rearranged. @@ -781,44 +770,9 @@ } #endif -void MD2_LerpSelfShadowVerts( int nverts, dtrivertx_t *v, dtrivertx_t *ov, float *lerp, float move[3], float frontv[3], float backv[3] ) -{ - int i; - for (i=0 ; i < nverts; i++, v++, ov++, lerp+=4) - { - lerp[0] = move[0] + ov->v[0]*backv[0] + v->v[0]*frontv[0]; - lerp[1] = move[1] + ov->v[1]*backv[1] + v->v[1]*frontv[1]; - lerp[2] = move[2] + ov->v[2]*backv[2] + v->v[2]*frontv[2]; - } -} - -float calcEntAlpha (float alpha, vec3_t point) -{ - float newAlpha; - vec3_t vert_len; - - newAlpha = alpha; - - if (!(currententity->flags&RF_TRANSLUCENT)) - { - if (newAlpha<0) newAlpha = 0; - if (newAlpha>1) newAlpha = 1; - return newAlpha; - } - - VectorSubtract(r_newrefdef.vieworg, point, vert_len); - newAlpha *= VectorLength(vert_len); - if (newAlpha>alpha) newAlpha = alpha; - - if (newAlpha<0) newAlpha = 0; - if (newAlpha>1) newAlpha = 1; - - return newAlpha; -} - //This routine bascially finds the average light position, by factoring in all lights and //accounting for their distance, visiblity, and intensity. -void R_GetLightVals(vec3_t meshOrigin, qboolean RagDoll, qboolean dynamic) +void R_GetLightVals(vec3_t meshOrigin, qboolean RagDoll) { int i, j, lnum; dlight_t *dl; @@ -826,8 +780,9 @@ vec3_t temp, tempOrg, lightAdd; trace_t r_trace; vec3_t mins, maxs; - float numlights, weight; + float numlights, nonweighted_numlights, weight; float bob; + qboolean copy; VectorSet(mins, 0, 0, 0); VectorSet(maxs, 0, 0, 0); @@ -844,31 +799,87 @@ VectorCopy(meshOrigin, tempOrg); tempOrg[2] += 24 - bob; //generates more consistent tracing - numlights = 0; + numlights = nonweighted_numlights = 0; VectorClear(lightAdd); - for (i=0; iflags & RF_WEAPONMODEL) && (LightGroups[i].group_origin[2] > meshOrigin[2])) - r_trace.fraction = 1.0; //don't do traces for lights above weapon models, not smooth enough - else - r_trace = CM_BoxTrace(tempOrg, LightGroups[i].group_origin, mins, maxs, r_worldmodel->firstnode, MASK_OPAQUE); - - if(r_trace.fraction == 1.0) + copy = cl_persistent_ents[currententity->number].setlightstuff; + for (i = 0; i < 3; i++) { - VectorSubtract(meshOrigin, LightGroups[i].group_origin, temp); - dist = VectorLength(temp); - if(dist == 0) - dist = 1; - dist = dist*dist; - weight = (int)250000/(dist/(LightGroups[i].avg_intensity+1.0f)); - for(j = 0; j < 3; j++) - lightAdd[j] += LightGroups[i].group_origin[j]*weight; - numlights+=weight; + if (fabs(meshOrigin[i] - cl_persistent_ents[currententity->number].oldorigin[i]) > 0.0001) + { + copy = false; + break; + } + } + } + else + { + copy = false; + } + + if (copy) + { + numlights = cl_persistent_ents[currententity->number].oldnumlights; + VectorCopy ( cl_persistent_ents[currententity->number].oldlightadd, lightAdd); + statLightIntensity = cl_persistent_ents[currententity->number].oldlightintens; + } + else + { + for (i=0; iflags & RF_WEAPONMODEL) && (LightGroups[i].group_origin[2] > meshOrigin[2])) + { + r_trace.fraction = 1.0; //don't do traces for lights above weapon models, not smooth enough + } + else + { + if (CM_inPVS (tempOrg, LightGroups[i].group_origin)) + r_trace = CM_BoxTrace(tempOrg, LightGroups[i].group_origin, mins, maxs, r_worldmodel->firstnode, MASK_OPAQUE); + else + r_trace.fraction = 0.0; + } + + + if(r_trace.fraction == 1.0) + { + VectorSubtract(meshOrigin, LightGroups[i].group_origin, temp); + dist = VectorLength(temp); + if(dist == 0) + dist = 1; + dist = dist*dist; + weight = (int)250000/(dist/(LightGroups[i].avg_intensity+1.0f)); + for(j = 0; j < 3; j++) + { + lightAdd[j] += LightGroups[i].group_origin[j]*weight; + } + statLightIntensity += LightGroups[i].avg_intensity; + numlights+=weight; + nonweighted_numlights++; + } } + + if (numlights > 0.0) + statLightIntensity /= (float)nonweighted_numlights; + + cl_persistent_ents[currententity->number].oldnumlights = numlights; + VectorCopy (lightAdd, cl_persistent_ents[currententity->number].oldlightadd); + cl_persistent_ents[currententity->number].setlightstuff = true; + VectorCopy (currententity->origin, cl_persistent_ents[currententity->number].oldorigin); + cl_persistent_ents[currententity->number].oldlightintens = statLightIntensity; } + if(numlights > 0.0) { + for(i = 0; i < 3; i++) + { + statLightPosition[i] = lightAdd[i]/numlights; + } + } + dynFactor = 0; - if(dynamic) + if(gl_dynamic->integer != 0) { dl = r_newrefdef.dlights; //limit to five lights(maybe less)? @@ -888,8 +899,8 @@ { //make dynamic lights more influential than world for(j = 0; j < 3; j++) - lightAdd[j] += dl->origin[j]*100*dl->intensity; - numlights+=100*dl->intensity; + lightAdd[j] += dl->origin[j]*10*dl->intensity; + numlights+=10*dl->intensity; VectorSubtract (dl->origin, meshOrigin, temp); dynFactor += (dl->intensity/20.0)/VectorLength(temp); @@ -906,11 +917,11 @@ void R_ModelViewTransform(const vec3_t in, vec3_t out){ const float *v = in; - const float *m = r_world_matrix; + const float *m = r_world_matrix; - out[0] = m[0] * v[0] + m[4] * v[1] + m[8] * v[2] + m[12]; - out[1] = m[1] * v[0] + m[5] * v[1] + m[9] * v[2] + m[13]; - out[2] = m[2] * v[0] + m[6] * v[1] + m[10] * v[2] + m[14]; + out[0] = m[0] * v[0] + m[4] * v[1] + m[8] * v[2] + m[12]; + out[1] = m[1] * v[0] + m[5] * v[1] + m[9] * v[2] + m[13]; + out[2] = m[2] * v[0] + m[6] * v[1] + m[10] * v[2] + m[14]; } @@ -933,6 +944,7 @@ return true; } + VectorSubtract(r_origin, currententity->origin, dist); /* @@ -984,6 +996,208 @@ } } +void MD2_LerpSelfShadowVerts( int nverts, dtrivertx_t *v, dtrivertx_t *ov, float *lerp, float move[3], float frontv[3], float backv[3] ) +{ + int i; + for (i=0 ; i < nverts; i++, v++, ov++, lerp+=4) + { + lerp[0] = move[0] + ov->v[0]*backv[0] + v->v[0]*frontv[0]; + lerp[1] = move[1] + ov->v[1]*backv[1] + v->v[1]*frontv[1]; + lerp[2] = move[2] + ov->v[2]*backv[2] + v->v[2]*frontv[2]; + } +} + +void R_Mesh_SetupShell (int shell_skinnum, qboolean ragdoll, qboolean using_varray, vec3_t lightcolor) +{ + int i; + + //shell render + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) + { + vec3_t lightVec, lightVal; + + if(using_varray) + { + R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); + qglNormalPointer(GL_FLOAT, 0, NormalsArray); + glEnableVertexAttribArrayARB (1); + glVertexAttribPointerARB(1, 4, GL_FLOAT,GL_FALSE, 0, TangentsArray); + } + + //send light level and color to shader, ramp up a bit + VectorCopy(lightcolor, lightVal); + for(i = 0; i < 3; i++) + { + if(lightVal[i] < shadelight[i]/2) + lightVal[i] = shadelight[i]/2; //never go completely black + lightVal[i] *= 5; + lightVal[i] += dynFactor; + if(lightVal[i] > 1.0+dynFactor) + lightVal[i] = 1.0+dynFactor; + } + + //brighten things slightly + for (i = 0; i < 3; i++ ) + lightVal[i] *= (ragdoll?1.25:2.5); + + //simple directional(relative light position) + VectorSubtract(lightPosition, currententity->origin, lightVec); + VectorMA(lightPosition, 1.0, lightVec, lightPosition); + R_ModelViewTransform(lightPosition, lightVec); + + GL_EnableMultitexture( true ); + + if (ragdoll) + qglDepthMask(false); + + glUseProgramObjectARB( g_meshprogramObj ); + + glUniform3fARB( g_location_meshlightPosition, lightVec[0], lightVec[1], lightVec[2]); + + KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER); + + GL_SelectTexture( GL_TEXTURE1); + GL_Bind (r_shelltexture2->texnum); + glUniform1iARB( g_location_baseTex, 1); + + GL_SelectTexture( GL_TEXTURE0); + GL_Bind (r_shellnormal->texnum); + glUniform1iARB( g_location_normTex, 0); + + glUniform1iARB( g_location_useFX, 0); + + glUniform1iARB( g_location_useGlow, 0); + + glUniform1iARB( g_location_useCube, 0); + + glUniform1iARB( g_location_useShell, 1); + + glUniform3fARB( g_location_color, lightVal[0], lightVal[1], lightVal[2]); + + glUniform1fARB( g_location_meshTime, rs_realtime); + + glUniform1iARB( g_location_meshFog, map_fog); + + glUniform1iARB(g_location_useGPUanim, 0); + } + else + { + GL_Bind(shell_skinnum); + R_InitVArrays (VERT_COLOURED_TEXTURED); + } +} + +void R_Mesh_SetupGLSL (int skinnum, rscript_t *rs, vec3_t lightcolor) +{ + int i; + + //render with shaders - assume correct single pass glsl shader struct(let's put some checks in for this) + vec3_t lightVec, lightVal; + + GLSTATE_ENABLE_ALPHATEST + + //send light level and color to shader, ramp up a bit + VectorCopy(lightcolor, lightVal); + for(i = 0; i < 3; i++) + { + if(lightVal[i] < shadelight[i]/2) + lightVal[i] = shadelight[i]/2; //never go completely black + lightVal[i] *= 5; + lightVal[i] += dynFactor; + if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) + { + if(lightVal[i] > 1.5) + lightVal[i] = 1.5; + } + else + { + if(lightVal[i] > 1.0+dynFactor) + lightVal[i] = 1.0+dynFactor; + } + } + + if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) //menu model + { + //fixed light source pointing down, slightly forward and to the left + lightPosition[0] = -25.0; + lightPosition[1] = 300.0; + lightPosition[2] = 400.0; + VectorMA(lightPosition, 5.0, lightVec, lightPosition); + R_ModelViewTransform(lightPosition, lightVec); + + for (i = 0; i < 3; i++ ) + { + lightVal[i] = 1.1; + } + } + else + { + //simple directional(relative light position) + VectorSubtract(lightPosition, currententity->origin, lightVec); + VectorMA(lightPosition, 5.0, lightVec, lightPosition); + R_ModelViewTransform(lightPosition, lightVec); + + //brighten things slightly + for (i = 0; i < 3; i++ ) + { + lightVal[i] *= 1.05; + } + } + + GL_EnableMultitexture( true ); + + glUseProgramObjectARB( g_meshprogramObj ); + + glUniform3fARB( g_location_meshlightPosition, lightVec[0], lightVec[1], lightVec[2]); + glUniform3fARB( g_location_color, lightVal[0], lightVal[1], lightVal[2]); + + KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER | KILL_TMU2_POINTER); + + GL_SelectTexture( GL_TEXTURE1); + GL_Bind (skinnum); + glUniform1iARB( g_location_baseTex, 1); + + GL_SelectTexture( GL_TEXTURE0); + GL_Bind (rs->stage->texture->texnum); + glUniform1iARB( g_location_normTex, 0); + + GL_SelectTexture( GL_TEXTURE2); + GL_Bind (rs->stage->texture2->texnum); + glUniform1iARB( g_location_fxTex, 2); + + qglActiveTextureARB(GL_TEXTURE3); + GL_Bind (rs->stage->texture3->texnum); + glUniform1iARB( g_location_fx2Tex, 3); + + GL_SelectTexture( GL_TEXTURE0); + + if(rs->stage->fx) + glUniform1iARB( g_location_useFX, 1); + else + glUniform1iARB( g_location_useFX, 0); + + if(rs->stage->glow) + glUniform1iARB( g_location_useGlow, 1); + else + glUniform1iARB( g_location_useGlow, 0); + + glUniform1iARB( g_location_useShell, 0); + + if(rs->stage->cube) + { + glUniform1iARB( g_location_useCube, 1); + if(currententity->flags & RF_WEAPONMODEL) + glUniform1iARB( g_location_fromView, 1); + else + glUniform1iARB( g_location_fromView, 0); + } + else + glUniform1iARB( g_location_useCube, 0); + + glUniform1fARB( g_location_meshTime, rs_realtime); + + glUniform1iARB( g_location_meshFog, map_fog); +} /* ============= MD2_DrawFrame - standard md2 rendering @@ -1000,18 +1214,16 @@ vec3_t frontv, backv; int i, j; int index_xyz, index_st; - qboolean depthmaskrscipt = false; rscript_t *rs = NULL; - rs_stage_t *stage = NULL; int va = 0; float shellscale; vec3_t lightcolor; - float *lerp; fstvert_t *st; float os, ot, os2, ot2; unsigned offs, offs2; byte *tangents, *oldtangents = NULL; qboolean mirror = false; + qboolean glass = false; offs = paliashdr->num_xyz; @@ -1025,7 +1237,8 @@ offs2 = offs*currententity->frame; tangents = currentmodel->tangents + offs2; - if(lerped) { + if(lerped) + { oldframe = (daliasframe_t *)((byte *)paliashdr + paliashdr->ofs_frames + currententity->oldframe * paliashdr->framesize); ov = oldframe->verts; @@ -1038,7 +1251,7 @@ st = currentmodel->st; - if (r_shaders->value) + if (r_shaders->integer) rs=(rscript_t *)currententity->script; VectorCopy(shadelight, lightcolor); @@ -1046,22 +1259,27 @@ VectorAdd(lightcolor, model_dlights[i].color, lightcolor); VectorNormalize(lightcolor); - if (currententity->flags & RF_TRANSLUCENT) { + if (currententity->flags & RF_TRANSLUCENT) + { basealpha = alpha = currententity->alpha; if(rs_glass) rs=(rscript_t *)rs_glass; if(!rs) GL_Bind(r_reflecttexture->texnum); - else if (!(r_newrefdef.rdflags & RDF_NOWORLDMODEL)) { - if(gl_mirror->value) + else if (!(r_newrefdef.rdflags & RDF_NOWORLDMODEL)) + { + if(gl_mirror->integer) mirror = true; + else + glass = true; } } else basealpha = alpha = 1.0; - if(lerped) { + if(lerped) + { frontlerp = 1.0 - backlerp; // move should be the delta back to the previous frame * backlerp @@ -1070,7 +1288,8 @@ AngleVectors (currententity->angles, vectors[0], vectors[1], vectors[2]); - if(lerped) { + if(lerped) + { move[0] = DotProduct (delta, vectors[0]); // forward move[1] = -DotProduct (delta, vectors[1]); // left move[2] = DotProduct (delta, vectors[2]); // up @@ -1084,8 +1303,11 @@ backv[i] = backlerp*oldframe->scale[i]; } - if(currententity->flags & RF_VIEWERMODEL) { //lerp the vertices for self shadows, and leave - if(gl_shadows->value && !gl_shadowmaps->value) { + if(currententity->flags & RF_VIEWERMODEL) + { + float *lerp; + //lerp the vertices for self shadows, and leave + if(gl_shadowmaps->integer) { lerp = s_lerped[0]; MD2_LerpSelfShadowVerts( paliashdr->num_xyz, v, ov, lerp, move, frontv, backv); return; @@ -1097,73 +1319,16 @@ if(( currententity->flags & ( RF_SHELL_RED | RF_SHELL_GREEN | RF_SHELL_BLUE | RF_SHELL_DOUBLE | RF_SHELL_HALF_DAM) ) ) { + R_Mesh_SetupShell (r_shelltexture->texnum, false, true, lightcolor); + qglColor4f( shadelight[0], shadelight[1], shadelight[2], alpha); - va=0; VArray = &VArrayVerts[0]; - - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) { - - vec3_t lightVec, lightVal; - - R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); - qglNormalPointer(GL_FLOAT, 0, NormalsArray); - glEnableVertexAttribArrayARB (1); - glVertexAttribPointerARB(1, 4, GL_FLOAT,GL_FALSE, 0, TangentsArray); - - R_GetLightVals(currententity->origin, false, true); - - //send light level and color to shader, ramp up a bit - VectorCopy(lightcolor, lightVal); - for(i = 0; i < 3; i++) { - if(lightVal[i] < shadelight[i]/2) - lightVal[i] = shadelight[i]/2; //never go completely black - lightVal[i] *= 5; - lightVal[i] += dynFactor; - if(lightVal[i] > 1.0+dynFactor) - lightVal[i] = 1.0+dynFactor; - } - - //simple directional(relative light position) - VectorSubtract(lightPosition, currententity->origin, lightVec); - VectorMA(lightPosition, 1.0, lightVec, lightPosition); - R_ModelViewTransform(lightPosition, lightVec); - - //brighten things slightly - for (i = 0; i < 3; i++ ) - lightVal[i] *= 2.5; - - GL_EnableMultitexture( true ); - - glUseProgramObjectARB( g_meshprogramObj ); - - glUniform3fARB( g_location_meshlightPosition, lightVec[0], lightVec[1], lightVec[2]); - - GL_SelectTexture( GL_TEXTURE1); - qglBindTexture (GL_TEXTURE_2D, r_shelltexture2->texnum); - glUniform1iARB( g_location_baseTex, 1); - - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, r_shellnormal->texnum); - glUniform1iARB( g_location_normTex, 0); - - GL_SelectTexture( GL_TEXTURE0); - - glUniform1iARB( g_location_useFX, 0); - - glUniform1iARB( g_location_useGlow, 0); - - glUniform3fARB( g_location_color, lightVal[0], lightVal[1], lightVal[2]); - - glUniform1fARB( g_location_meshTime, rs_realtime); - - glUniform1iARB( g_location_meshFog, map_fog); - } - else - { - R_InitVArrays (VERT_COLOURED_TEXTURED); - GL_Bind(r_shelltexture->texnum); - } + + if (alpha < 0.0) + alpha = 0.0; + else if (alpha > 1.0) + alpha = 1.0; for (i=0; inum_tris; i++) { @@ -1171,12 +1336,12 @@ { vec3_t normal; vec4_t tangent; - int k; + int k; index_xyz = tris[i].index_xyz[j]; index_st = tris[i].index_st[j]; - if((currententity->flags & (RF_WEAPONMODEL | RF_SHELL_GREEN)) || (gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value)) + if((currententity->flags & (RF_WEAPONMODEL | RF_SHELL_GREEN)) || (gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer)) shellscale = .4; else shellscale = 1.6; @@ -1190,26 +1355,26 @@ VArray[3] = (s_lerped[index_xyz][1] + s_lerped[index_xyz][0]) * (1.0f / 40.0f); VArray[4] = s_lerped[index_xyz][2] * (1.0f / 40.0f) - r_newrefdef.time * 0.5f; - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) { for (k=0; k<3; k++) { - normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k] + - ( r_avertexnormals[ov[index_xyz].lightnormalindex][k] - - r_avertexnormals[verts[index_xyz].lightnormalindex][k] ) * backlerp; + normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k] + + ( r_avertexnormals[ov[index_xyz].lightnormalindex][k] - + r_avertexnormals[verts[index_xyz].lightnormalindex][k] ) * backlerp; tangent[k] = r_avertexnormals[tangents[index_xyz]][k] + ( r_avertexnormals[oldtangents[index_xyz]][k] - r_avertexnormals[tangents[index_xyz]][k] ) * backlerp; } - } + } else { VArray[5] = shadelight[0]; VArray[6] = shadelight[1]; VArray[7] = shadelight[2]; - VArray[8] = calcEntAlpha(alpha, s_lerped[index_xyz]); + VArray[8] = alpha; } } else @@ -1221,547 +1386,404 @@ VArray[3] = (currentmodel->vertexes[index_xyz].position[1] + currentmodel->vertexes[index_xyz].position[0]) * (1.0f / 40.0f); VArray[4] = currentmodel->vertexes[index_xyz].position[2] * (1.0f / 40.0f) - r_newrefdef.time * 0.5f; - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) { - for (k=0;k<3;k++) + for (k=0;k<3;k++) { - normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k]; + normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k]; tangent[k] = r_avertexnormals[tangents[index_xyz]][k]; } - } + } else { VArray[5] = shadelight[0]; VArray[6] = shadelight[1]; VArray[7] = shadelight[2]; - VArray[8] = calcEntAlpha(alpha, currentmodel->vertexes[index_xyz].position); + VArray[8] = alpha; } } tangent[3] = 1.0; - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) { - VectorNormalize ( normal ); - VectorCopy(normal, NormalsArray[va]); //shader needs normal array + VectorNormalize ( normal ); + VectorCopy(normal, NormalsArray[va]); //shader needs normal array Vector4Copy(tangent, TangentsArray[va]); - } + } - // increment pointer and counter - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) - VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; - else - VArray += VertexSizes[VERT_COLOURED_TEXTURED]; - va++; - } - } + // increment pointer and counter + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) + VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; + else + VArray += VertexSizes[VERT_COLOURED_TEXTURED]; + va++; + } + } - if (!(!cl_gun->value && ( currententity->flags & RF_WEAPONMODEL ) ) ) + if (!(!cl_gun->integer && ( currententity->flags & RF_WEAPONMODEL ) ) ) { - R_DrawVarrays(GL_TRIANGLES, 0, va, false); + R_DrawVarrays(GL_TRIANGLES, 0, va); } - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) { - glUseProgramObjectARB( 0 ); - GL_EnableMultitexture( false ); - } + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) { + glUseProgramObjectARB( 0 ); + GL_EnableMultitexture( false ); + } } - else if(!rs) - { - va=0; - VArray = &VArrayVerts[0]; - alpha = basealpha; - R_InitVArrays (VERT_COLOURED_TEXTURED); - GLSTATE_ENABLE_ALPHATEST + else if(mirror || glass) + { + qboolean mirror_noweap; + int vertsize = VertexSizes[VERT_COLOURED_TEXTURED]; + + mirror_noweap = mirror && !(currententity->flags & RF_WEAPONMODEL); + + qglDepthMask(false); + if(mirror) + { + if( !(currententity->flags & RF_WEAPONMODEL)) + { + R_InitVArrays(VERT_COLOURED_MULTI_TEXTURED); + vertsize = VertexSizes[VERT_COLOURED_MULTI_TEXTURED]; + + GL_EnableMultitexture( true ); + GL_SelectTexture( GL_TEXTURE0); + GL_TexEnv ( GL_COMBINE_EXT ); + GL_Bind (r_mirrortexture->texnum); + qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); + GL_SelectTexture( GL_TEXTURE1); + GL_TexEnv ( GL_COMBINE_EXT ); + GL_Bind (r_mirrorspec->texnum); + qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PREVIOUS_EXT ); + } + else + { + R_InitVArrays (VERT_COLOURED_TEXTURED); + GL_SelectTexture( GL_TEXTURE0); + GL_Bind (r_mirrortexture->texnum); + } + } + else + { + R_InitVArrays (VERT_COLOURED_TEXTURED); + GL_SelectTexture( GL_TEXTURE0); + GL_Bind (r_reflecttexture->texnum); + } + + if (mirror) + { + rs->stage->scale.scaleX = -1.0; + rs->stage->scale.scaleY = 1.0; + } + else + { + rs->stage->scale.scaleX = rs->stage->scale.scaleY = 0.5; + } + for (i=0; inum_tris; i++) { for (j=0; j<3; j++) { + vec3_t normal; + int k; + index_xyz = tris[i].index_xyz[j]; index_st = tris[i].index_st[j]; - if(lerped) { - MD2_VlightModel (shadelight, &verts[index_xyz], lightcolor); + os = os2 = st[index_st].s; + ot = ot2 = st[index_st].t; + if(lerped) + { VArray[0] = s_lerped[index_xyz][0] = move[0] + ov[index_xyz].v[0]*backv[0] + v[index_xyz].v[0]*frontv[0]; VArray[1] = s_lerped[index_xyz][1] = move[1] + ov[index_xyz].v[1]*backv[1] + v[index_xyz].v[1]*frontv[1]; VArray[2] = s_lerped[index_xyz][2] = move[2] + ov[index_xyz].v[2]*backv[2] + v[index_xyz].v[2]*frontv[2]; - VArray[3] = st[index_st].s; - VArray[4] = st[index_st].t; + for (k=0; k<3; k++) + { + normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k] + + ( r_avertexnormals[ov[index_xyz].lightnormalindex][k] - + r_avertexnormals[verts[index_xyz].lightnormalindex][k] ) * backlerp; - VArray[5] = lightcolor[0]; - VArray[6] = lightcolor[1]; - VArray[7] = lightcolor[2]; - VArray[8] = calcEntAlpha(alpha, s_lerped[index_xyz]); + } + // we can safely assume that the contents of + // r_avertexnormals need not be converted to unit + // vectors, however lerped normals may require this. + VectorNormalize ( normal ); } - else { - MD2_VlightModel (shadelight, &verts[index_xyz], lightcolor); - + else + { VArray[0] = currentmodel->vertexes[index_xyz].position[0]; VArray[1] = currentmodel->vertexes[index_xyz].position[1]; VArray[2] = currentmodel->vertexes[index_xyz].position[2]; - VArray[3] = st[index_st].s; - VArray[4] = st[index_st].t; + for (k=0;k<3;k++) + { + normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k]; + } - VArray[5] = lightcolor[0]; - VArray[6] = lightcolor[1]; - VArray[7] = lightcolor[2]; - VArray[8] = calcEntAlpha(alpha, currentmodel->vertexes[index_xyz].position); } + + if (!mirror || mirror_noweap) + { + os -= DotProduct (normal, vectors[1]); + ot += DotProduct (normal, vectors[2]); + } + + RS_SetTexcoords2D(rs->stage, &os, &ot); - // increment pointer and counter - VArray += VertexSizes[VERT_COLOURED_TEXTURED]; - va++; - } + VArray[3] = os; + VArray[4] = ot; - } - if (!(!cl_gun->value && ( currententity->flags & RF_WEAPONMODEL ) ) ) - { - R_DrawVarrays(GL_TRIANGLES, 0, va, false); - } - } - else if(rs) - { - if (rs->stage && rs->stage->has_alpha) - { - depthmaskrscipt = true; - } - - if (depthmaskrscipt) - qglDepthMask(false); - - stage=rs->stage; - - while (stage) - { - va=0; - VArray = &VArrayVerts[0]; - GLSTATE_ENABLE_ALPHATEST - - if (stage->normalmap && (!gl_normalmaps->value || !gl_glsl_shaders->value || !gl_state.glsl_shaders)) - { - if(stage->next) + if(mirror_noweap) { - stage = stage->next; - continue; - } - else - goto done; - } - - if(!stage->normalmap) - { - if(mirror) - { - if( !(currententity->flags & RF_WEAPONMODEL)) - { - R_InitVArrays(VERT_COLOURED_MULTI_TEXTURED); + os2 -= DotProduct (normal, vectors[1] ); + ot2 += DotProduct (normal, vectors[2] ); + RS_SetTexcoords2D(rs->stage, &os2, &ot2); - GL_EnableMultitexture( true ); - GL_SelectTexture( GL_TEXTURE0); - GL_TexEnv ( GL_COMBINE_EXT ); - qglBindTexture (GL_TEXTURE_2D, r_mirrortexture->texnum); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); - GL_SelectTexture( GL_TEXTURE1); - GL_TexEnv ( GL_COMBINE_EXT ); - qglBindTexture (GL_TEXTURE_2D, r_mirrorspec->texnum); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PREVIOUS_EXT ); - } - else - { - R_InitVArrays (VERT_COLOURED_TEXTURED); - GL_Bind(r_mirrortexture->texnum); - } + VArray[5] = os2; + VArray[6] = ot2; + VArray[7] = VArray[8] = VArray[9] = 1; + VArray[10] = alpha; } else { - R_InitVArrays (VERT_COLOURED_TEXTURED); - GL_Bind (stage->texture->texnum); + VArray[5] = VArray[6] = VArray[7] = 1; + VArray[8] = alpha; } - if (stage->blendfunc.blend) - { - GL_BlendFunction(stage->blendfunc.source,stage->blendfunc.dest); - GLSTATE_ENABLE_BLEND - } - else if (basealpha==1.0f) - { - GLSTATE_DISABLE_BLEND - } - else - { - GLSTATE_ENABLE_BLEND - GL_BlendFunction(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - alpha = basealpha; - } + // increment pointer and counter + VArray += vertsize; + va++; + } + } + + if (!(!cl_gun->integer && ( currententity->flags & RF_WEAPONMODEL ))) + { + R_DrawVarrays(GL_TRIANGLES, 0, paliashdr->num_tris*3); + } - if (stage->alphashift.min || stage->alphashift.speed) - { - if (!stage->alphashift.speed && stage->alphashift.min > 0) - { - alpha=basealpha*stage->alphashift.min; - } - else if (stage->alphashift.speed) - { - alpha=basealpha*sin(rs_realtime * stage->alphashift.speed); - if (alpha < 0) alpha=-alpha*basealpha; - if (alpha > stage->alphashift.max) alpha=basealpha*stage->alphashift.max; - if (alpha < stage->alphashift.min) alpha=basealpha*stage->alphashift.min; - } - } - else - alpha=basealpha; + if(mirror && !(currententity->flags & RF_WEAPONMODEL)) + GL_EnableMultitexture( false ); - if (!stage->alphamask) - { - GLSTATE_DISABLE_ALPHATEST - } - } + qglDepthMask(true); + + } + else if(rs && rs->stage->normalmap && gl_normalmaps->integer && gl_glsl_shaders->integer && gl_state.glsl_shaders) + { + qboolean dovbo; + + dovbo = gl_state.vbo && !lerped; + + if(rs->stage->depthhack) + qglDepthMask(false); + + R_Mesh_SetupGLSL (skinnum, rs, lightcolor); + + if(dovbo) + { + KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER | KILL_TMU2_POINTER | KILL_TMU3_POINTER | KILL_NORMAL_POINTER); + } + else + { + R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); + qglNormalPointer(GL_FLOAT, 0, NormalsArray); + glEnableVertexAttribArrayARB (1); + glVertexAttribPointerARB(1, 4, GL_FLOAT, GL_FALSE, 0, TangentsArray); + + KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER | KILL_TMU2_POINTER | KILL_TMU3_POINTER | KILL_NORMAL_POINTER); //needed to kill all of these texture units + } + + glUniform1iARB(g_location_useGPUanim, 0); - if(stage->normalmap) + if (dovbo) + { + vbo_xyz = R_VCFindCache(VBO_STORE_XYZ, currentmodel); + vbo_st = R_VCFindCache(VBO_STORE_ST, currentmodel); + vbo_normals = R_VCFindCache(VBO_STORE_NORMAL, currentmodel); + vbo_tangents = R_VCFindCache(VBO_STORE_TANGENT, currentmodel); + if(vbo_xyz && vbo_st && vbo_normals && vbo_tangents) + { + goto skipLoad; + } + } + + for (i=0; inum_tris; i++) + { + for (j=0; j<3; j++) { - vec3_t lightVec, lightVal; + vec3_t normal; + vec4_t tangent; + int k; - if(gl_state.vbo && !lerped) - { - KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER | KILL_TMU2_POINTER | KILL_NORMAL_POINTER); - } - else - { - R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); - qglNormalPointer(GL_FLOAT, 0, NormalsArray); - glEnableVertexAttribArrayARB (1); - glVertexAttribPointerARB(1, 4, GL_FLOAT, GL_FALSE, 0, TangentsArray); - } + index_xyz = tris[i].index_xyz[j]; + index_st = tris[i].index_st[j]; - R_GetLightVals(currententity->origin, false, true); + os = os2 = st[index_st].s; + ot = ot2 = st[index_st].t; - //send light level and color to shader, ramp up a bit - VectorCopy(lightcolor, lightVal); - for(i = 0; i < 3; i++) + if(lerped) { - if(lightVal[i] < shadelight[i]/2) - lightVal[i] = shadelight[i]/2; //never go completely black - lightVal[i] *= 5; - lightVal[i] += dynFactor; - if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) - { - if(lightVal[i] > 1.5) - lightVal[i] = 1.5; - } - else + VArray[0] = s_lerped[index_xyz][0] = move[0] + ov[index_xyz].v[0]*backv[0] + v[index_xyz].v[0]*frontv[0]; + VArray[1] = s_lerped[index_xyz][1] = move[1] + ov[index_xyz].v[1]*backv[1] + v[index_xyz].v[1]*frontv[1]; + VArray[2] = s_lerped[index_xyz][2] = move[2] + ov[index_xyz].v[2]*backv[2] + v[index_xyz].v[2]*frontv[2]; + + for (k=0; k<3; k++) { - if(lightVal[i] > 1.0+dynFactor) - lightVal[i] = 1.0+dynFactor; + normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k] + + ( r_avertexnormals[ov[index_xyz].lightnormalindex][k] - + r_avertexnormals[verts[index_xyz].lightnormalindex][k] ) * backlerp; + + tangent[k] = r_avertexnormals[tangents[index_xyz]][k] + + ( r_avertexnormals[oldtangents[index_xyz]][k] - + r_avertexnormals[tangents[index_xyz]][k] ) * backlerp; } - } - - if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) - { - //fixed light source pointing down, slightly forward and to the left - lightPosition[0] = -1.0; - lightPosition[1] = 4.0; - lightPosition[2] = 8.0; - R_ModelViewTransform(lightPosition, lightVec); + // we can safely assume that the contents of + // r_avertexnormals need not be converted to unit + // vectors, however lerped normals may require this. + VectorNormalize ( normal ); } else { - //simple directional(relative light position) - VectorSubtract(lightPosition, currententity->origin, lightVec); - VectorMA(lightPosition, 5.0, lightVec, lightPosition); - R_ModelViewTransform(lightPosition, lightVec); + VArray[0] = currentmodel->vertexes[index_xyz].position[0]; + VArray[1] = currentmodel->vertexes[index_xyz].position[1]; + VArray[2] = currentmodel->vertexes[index_xyz].position[2]; - //brighten things slightly - for (i = 0; i < 3; i++ ) + for (k=0;k<3;k++) { - lightVal[i] *= 1.15; - } - } - - GL_EnableMultitexture( true ); - - glUseProgramObjectARB( g_meshprogramObj ); - - glUniform3fARB( g_location_meshlightPosition, lightVec[0], lightVec[1], lightVec[2]); - - GL_SelectTexture( GL_TEXTURE1); - qglBindTexture (GL_TEXTURE_2D, skinnum); - glUniform1iARB( g_location_baseTex, 1); - - GL_SelectTexture( GL_TEXTURE0); - qglBindTexture (GL_TEXTURE_2D, stage->texture->texnum); - glUniform1iARB( g_location_normTex, 0); - - GL_SelectTexture( GL_TEXTURE2); - qglBindTexture (GL_TEXTURE_2D, stage->texture2->texnum); - glUniform1iARB( g_location_fxTex, 2); - - GL_SelectTexture( GL_TEXTURE0); - - if(stage->fx) - glUniform1iARB( g_location_useFX, 1); - else - glUniform1iARB( g_location_useFX, 0); - - if(stage->glow) - glUniform1iARB( g_location_useGlow, 1); - else - glUniform1iARB( g_location_useGlow, 0); - - glUniform3fARB( g_location_color, lightVal[0], lightVal[1], lightVal[2]); - - //if using shadowmaps, offset self shadowed areas a bit so not to get too dark - if(gl_shadowmaps->value && !(currententity->flags & (RF_WEAPONMODEL | RF_NOSHADOWS))) - glUniform1fARB( g_location_minLight, 0.20); - else - glUniform1fARB( g_location_minLight, 0.15); - - glUniform1fARB( g_location_meshTime, rs_realtime); - - glUniform1iARB( g_location_meshFog, map_fog); - - if (gl_state.vbo && !lerped) - { - currentmodel->vbo_xyz = R_VCFindCache(VBO_STORE_XYZ, currententity); - if (currentmodel->vbo_xyz) - { - currentmodel->vbo_st = R_VCFindCache(VBO_STORE_ST, currententity); - if(currentmodel->vbo_st) - { - currentmodel->vbo_normals = R_VCFindCache(VBO_STORE_NORMAL, currententity); - if(currentmodel->vbo_normals) - { - currentmodel->vbo_tangents = R_VCFindCache(VBO_STORE_TANGENT, currententity); - if(currentmodel->vbo_tangents) - { - //Com_Printf("skipped\n"); - goto skipLoad; - } - } - } + normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k]; + tangent[k] = r_avertexnormals[tangents[index_xyz]][k]; } } - } - for (i=0; inum_tris; i++) - { - for (j=0; j<3; j++) + tangent[3] = 1.0; + + VArray[3] = os; + VArray[4] = ot; + + //send tangent to shader + VectorCopy(normal, NormalsArray[va]); //shader needs normal array + Vector4Copy(tangent, TangentsArray[va]); + if (dovbo) { - vec3_t normal; - vec4_t tangent; - int k; - - index_xyz = tris[i].index_xyz[j]; - index_st = tris[i].index_st[j]; - - os = os2 = st[index_st].s; - ot = ot2 = st[index_st].t; - - if(lerped) - { - VArray[0] = s_lerped[index_xyz][0] = move[0] + ov[index_xyz].v[0]*backv[0] + v[index_xyz].v[0]*frontv[0]; - VArray[1] = s_lerped[index_xyz][1] = move[1] + ov[index_xyz].v[1]*backv[1] + v[index_xyz].v[1]*frontv[1]; - VArray[2] = s_lerped[index_xyz][2] = move[2] + ov[index_xyz].v[2]*backv[2] + v[index_xyz].v[2]*frontv[2]; - - for (k=0; k<3; k++) - { - normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k] + - ( r_avertexnormals[ov[index_xyz].lightnormalindex][k] - - r_avertexnormals[verts[index_xyz].lightnormalindex][k] ) * backlerp; - - tangent[k] = r_avertexnormals[tangents[index_xyz]][k] + - ( r_avertexnormals[oldtangents[index_xyz]][k] - - r_avertexnormals[tangents[index_xyz]][k] ) * backlerp; - } - } - else - { - VArray[0] = currentmodel->vertexes[index_xyz].position[0]; - VArray[1] = currentmodel->vertexes[index_xyz].position[1]; - VArray[2] = currentmodel->vertexes[index_xyz].position[2]; - - for (k=0;k<3;k++) - { - normal[k] = r_avertexnormals[verts[index_xyz].lightnormalindex][k]; - tangent[k] = r_avertexnormals[tangents[index_xyz]][k]; - } - } - - VectorNormalize ( normal ); - tangent[3] = 1.0; - - if(stage->normalmap) - { - //send tangent to shader - VectorCopy(normal, NormalsArray[va]); //shader needs normal array - Vector4Copy(tangent, TangentsArray[va]); - } - - if (stage->envmap) - { - vec3_t envmapvec; - - VectorAdd(currententity->origin, s_lerped[index_xyz], envmapvec); - - if(mirror) - { - if( !(currententity->flags & RF_WEAPONMODEL)) - { - stage->scale.scaleX = -0.5; - stage->scale.scaleY = 0.5; - os -= DotProduct (normal , vectors[1]); - ot += DotProduct (normal, vectors[2]); - } - else - { - stage->scale.scaleX = -1.0; - stage->scale.scaleY = 1.0; - } + VertexArray[va][0] = VArray[0]; + VertexArray[va][1] = VArray[1]; + VertexArray[va][2] = VArray[2]; - } - else - { - RS_SetEnvmap (envmapvec, &os, &ot); + TexCoordArray[va][0] = VArray[3]; + TexCoordArray[va][1] = VArray[4]; + } - if (currententity->flags & RF_TRANSLUCENT) //return to original glass script's scale(mostly for when going into menu) - stage->scale.scaleX = stage->scale.scaleY = 0.5; + // increment pointer and counter + VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; + va++; + } + } - os -= DotProduct (normal , vectors[1] ); - ot += DotProduct (normal, vectors[2] ); - } - } + if(dovbo) + { + vbo_xyz = R_VCLoadData(VBO_STATIC, va*sizeof(vec3_t), VertexArray, VBO_STORE_XYZ, currentmodel); + vbo_st = R_VCLoadData(VBO_STATIC, va*sizeof(vec2_t), TexCoordArray, VBO_STORE_ST, currentmodel); + vbo_normals = R_VCLoadData(VBO_STATIC, va*sizeof(vec3_t), NormalsArray, VBO_STORE_NORMAL, currentmodel); + vbo_tangents = R_VCLoadData(VBO_STATIC, va*sizeof(vec4_t), TangentsArray, VBO_STORE_TANGENT, currentmodel); + } +skipLoad: + if(dovbo) + { + qglEnableClientState( GL_VERTEX_ARRAY ); + GL_BindVBO(vbo_xyz); + qglVertexPointer(3, GL_FLOAT, 0, 0); + + qglEnableClientState(GL_TEXTURE_COORD_ARRAY); + GL_BindVBO(vbo_st); + qglTexCoordPointer(2, GL_FLOAT, 0, 0); + + qglEnableClientState( GL_NORMAL_ARRAY ); + GL_BindVBO(vbo_normals); + qglNormalPointer(GL_FLOAT, 0, 0); - RS_SetTexcoords2D(stage, &os, &ot); + glEnableVertexAttribArrayARB (1); + GL_BindVBO(vbo_tangents); + glVertexAttribPointerARB(1, 4, GL_FLOAT, GL_FALSE, sizeof(vec4_t), 0); + } + + if (!(!cl_gun->integer && ( currententity->flags & RF_WEAPONMODEL ))) + R_DrawVarrays(GL_TRIANGLES, 0, paliashdr->num_tris*3); - VArray[3] = os; - VArray[4] = ot; + glUseProgramObjectARB( 0 ); + GL_EnableMultitexture( false ); - if(mirror && !(currententity->flags & RF_WEAPONMODEL)) - { - os2 -= DotProduct (normal , vectors[1] ); - ot2 += DotProduct (normal, vectors[2] ); - RS_SetTexcoords2D(stage, &os2, &ot2); + if(rs->stage->depthhack) + qglDepthMask(true); + } + else //base render no shaders + { + va=0; + VArray = &VArrayVerts[0]; - VArray[5] = os2; - VArray[6] = ot2; - } + alpha = basealpha; + if (alpha < 0.0) + alpha = 0.0; + else if (alpha > 1.0) + alpha = 1.0; - if(!stage->normalmap) - { - float red = 1, green = 1, blue = 1, nAlpha; + R_InitVArrays (VERT_COLOURED_TEXTURED); + GLSTATE_ENABLE_ALPHATEST - if(lerped) - nAlpha = RS_AlphaFuncAlias (stage->alphafunc, - calcEntAlpha(alpha, s_lerped[index_xyz]), normal, s_lerped[index_xyz]); - else - nAlpha = RS_AlphaFuncAlias (stage->alphafunc, - calcEntAlpha(alpha, currentmodel->vertexes[index_xyz].position), normal, currentmodel->vertexes[index_xyz].position); + for (i=0; inum_tris; i++) + { + for (j=0; j<3; j++) + { + index_xyz = tris[i].index_xyz[j]; + index_st = tris[i].index_st[j]; - if (stage->lightmap) - { - if(lerped) - MD2_VlightModel (shadelight, &verts[index_xyz], lightcolor); - else - MD2_VlightModel (shadelight, &verts[index_xyz], lightcolor); - red = lightcolor[0]; - green = lightcolor[1]; - blue = lightcolor[2]; - } + if(lerped) { + MD2_VlightModel (shadelight, &verts[index_xyz], lightcolor); - if(mirror && !(currententity->flags & RF_WEAPONMODEL) ) - { - VArray[7] = red; - VArray[8] = green; - VArray[9] = blue; - VArray[10] = nAlpha; - } - else { - VArray[5] = red; - VArray[6] = green; - VArray[7] = blue; - VArray[8] = nAlpha; - } - } - else if(gl_state.vbo && !lerped) - { - VertexArray[va][0] = VArray[0]; - VertexArray[va][1] = VArray[1]; - VertexArray[va][2] = VArray[2]; + VArray[0] = s_lerped[index_xyz][0] = move[0] + ov[index_xyz].v[0]*backv[0] + v[index_xyz].v[0]*frontv[0]; + VArray[1] = s_lerped[index_xyz][1] = move[1] + ov[index_xyz].v[1]*backv[1] + v[index_xyz].v[1]*frontv[1]; + VArray[2] = s_lerped[index_xyz][2] = move[2] + ov[index_xyz].v[2]*backv[2] + v[index_xyz].v[2]*frontv[2]; - TexCoordArray[va][0] = VArray[3]; - TexCoordArray[va][1] = VArray[4]; - } + VArray[3] = st[index_st].s; + VArray[4] = st[index_st].t; - // increment pointer and counter - if(stage->normalmap) - VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; - else if(mirror && !(currententity->flags & RF_WEAPONMODEL)) - VArray += VertexSizes[VERT_COLOURED_MULTI_TEXTURED]; - else - VArray += VertexSizes[VERT_COLOURED_TEXTURED]; - va++; + VArray[5] = lightcolor[0]; + VArray[6] = lightcolor[1]; + VArray[7] = lightcolor[2]; + VArray[8] = alpha; } - } + else { + MD2_VlightModel (shadelight, &verts[index_xyz], lightcolor); - if(gl_state.vbo && !lerped && stage->normalmap) - { - currentmodel->vbo_xyz = R_VCLoadData(VBO_STATIC, va*sizeof(vec3_t), VertexArray, VBO_STORE_XYZ, currententity); - currentmodel->vbo_st = R_VCLoadData(VBO_STATIC, va*sizeof(vec2_t), TexCoordArray, VBO_STORE_ST, currententity); - currentmodel->vbo_normals = R_VCLoadData(VBO_STATIC, va*sizeof(vec3_t), NormalsArray, VBO_STORE_NORMAL, currententity); - currentmodel->vbo_tangents = R_VCLoadData(VBO_STATIC, va*sizeof(vec4_t), TangentsArray, VBO_STORE_TANGENT, currententity); - //Com_Printf("Loading mesh vbo.\n"); - } -skipLoad: - if(gl_state.vbo && !lerped && stage->normalmap) - { - qglEnableClientState( GL_VERTEX_ARRAY ); - GL_BindVBO(currentmodel->vbo_xyz); - qglVertexPointer(3, GL_FLOAT, 0, 0); - - qglEnableClientState(GL_TEXTURE_COORD_ARRAY); - GL_BindVBO(currentmodel->vbo_st); - qglTexCoordPointer(2, GL_FLOAT, 0, 0); - - qglEnableClientState( GL_NORMAL_ARRAY ); - GL_BindVBO(currentmodel->vbo_normals); - qglNormalPointer(GL_FLOAT, 0, 0); - - glEnableVertexAttribArrayARB (1); - GL_BindVBO(currentmodel->vbo_tangents); - glVertexAttribPointerARB(1, 4, GL_FLOAT, GL_FALSE, sizeof(vec4_t), 0); - - if (!(!cl_gun->value && ( currententity->flags & RF_WEAPONMODEL ))) - R_DrawVarrays(GL_TRIANGLES, 0, paliashdr->num_tris*3, true); - } - else if (!(!cl_gun->value && ( currententity->flags & RF_WEAPONMODEL ))) - { - R_DrawVarrays(GL_TRIANGLES, 0, paliashdr->num_tris*3, false); - } + VArray[0] = currentmodel->vertexes[index_xyz].position[0]; + VArray[1] = currentmodel->vertexes[index_xyz].position[1]; + VArray[2] = currentmodel->vertexes[index_xyz].position[2]; - qglColor4f(1,1,1,1); + VArray[3] = st[index_st].s; + VArray[4] = st[index_st].t; - if(mirror && !(currententity->flags & RF_WEAPONMODEL)) - GL_EnableMultitexture( false ); + VArray[5] = lightcolor[0] > 0.2 ? lightcolor[0] : 0.2; + VArray[6] = lightcolor[1] > 0.2 ? lightcolor[1] : 0.2; + VArray[7] = lightcolor[2] > 0.2 ? lightcolor[2] : 0.2; + VArray[8] = alpha; + } - if(stage->normalmap) - { - glUseProgramObjectARB( 0 ); - GL_EnableMultitexture( false ); + // increment pointer and counter + VArray += VertexSizes[VERT_COLOURED_TEXTURED]; + va++; } - stage=stage->next; + } + if (!(!cl_gun->integer && ( currententity->flags & RF_WEAPONMODEL ) ) ) + { + R_DrawVarrays(GL_TRIANGLES, 0, va); } } -done: - if (depthmaskrscipt) - qglDepthMask(true); GLSTATE_DISABLE_ALPHATEST GLSTATE_DISABLE_BLEND @@ -1779,106 +1801,6 @@ } -extern qboolean have_stencil; -extern vec3_t lightspot; - -/* -============= -MD2_DrawShadow -============= -*/ -void MD2_DrawShadow(dmdl_t *paliashdr, qboolean lerped) -{ - dtrivertx_t *verts; - vec3_t point; - float height, lheight; - daliasframe_t *frame; - fstvert_t *st; - dtriangle_t *tris; - int i, j; - int index_xyz, index_st; - int va = 0; - - lheight = currententity->origin[2] - lightspot[2]; - - if(lerped) - frame = (daliasframe_t *)((byte *)paliashdr + paliashdr->ofs_frames - + currententity->frame * paliashdr->framesize); - else - frame = (daliasframe_t *)((byte *)paliashdr + paliashdr->ofs_frames); - - verts = frame->verts; - - tris = (dtriangle_t *) ((byte *)paliashdr + paliashdr->ofs_tris); - - st = currentmodel->st; - - height = -lheight + 0.1f; - - // if above entity's origin, skip - if ((currententity->origin[2]+height) > currententity->origin[2]) - return; - - if (r_newrefdef.vieworg[2] < (currententity->origin[2] + height)) - return; - - if (have_stencil) { - - qglDepthMask(0); - - qglEnable(GL_STENCIL_TEST); - - qglStencilFunc(GL_EQUAL,1,2); - - qglStencilOp(GL_KEEP,GL_KEEP,GL_INCR); - - } - - va=0; - VArray = &VArrayVerts[0]; - R_InitVArrays (VERT_SINGLE_TEXTURED); - - for (i=0; inum_tris; i++) - { - for (j=0; j<3; j++) - { - index_xyz = tris[i].index_xyz[j]; - index_st = tris[i].index_st[j]; - - if(lerped) - memcpy( point, s_lerped[index_xyz], sizeof( point ) ); - else - memcpy( point, currentmodel->vertexes[index_xyz].position, sizeof( point ) ); - - point[0] -= shadevector[0]*(point[2]+lheight); - point[1] -= shadevector[1]*(point[2]+lheight); - point[2] = height; - - VArray[0] = point[0]; - VArray[1] = point[1]; - VArray[2] = point[2]; - - VArray[3] = st[index_st].s; - VArray[4] = st[index_st].t; - - // increment pointer and counter - VArray += VertexSizes[VERT_SINGLE_TEXTURED]; - va++; - } - - } - - R_DrawVarrays(GL_TRIANGLES, 0, va, false); - - qglDisableClientState( GL_COLOR_ARRAY ); - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); - - R_KillVArrays (); - qglDepthMask(1); - qglColor4f(1,1,1,1); - if (have_stencil) qglDisable(GL_STENCIL_TEST); -} - /* ================= R_DrawAliasModel - render alias models(using MD2 format) @@ -1905,21 +1827,23 @@ } else { - if ( r_lefthand->value == 2 ) + if ( r_lefthand->integer == 2 ) return; } + R_GetLightVals(currententity->origin, false); + + //R_GenerateEntityShadow(); //not using this for now, it's generally a bit slower than the stencil volumes at the moment when dealing with static meshes + paliashdr = (dmdl_t *)currentmodel->extradata; // // get lighting information // - // PMM - rewrote, reordered to handle new shells & mixing - // PMM - 3.20 code .. replaced with original way of doing it to keep mod authors happy - // + if ( currententity->flags & ( RF_SHELL_HALF_DAM | RF_SHELL_GREEN | RF_SHELL_RED | RF_SHELL_BLUE | RF_SHELL_DOUBLE) ) { - if(!cl_gun->value && (currententity->flags & RF_WEAPONMODEL)) + if(!cl_gun->integer && (currententity->flags & RF_WEAPONMODEL)) return; VectorClear (shadelight); @@ -1961,7 +1885,7 @@ { float minlight; - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) minlight = 0.1; else minlight = 0.2; @@ -1982,7 +1906,7 @@ float minlight; scale = 0.2 * sin(r_newrefdef.time*7); - if(gl_glsl_shaders->value && gl_state.glsl_shaders && gl_normalmaps->value) + if(gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) minlight = 0.1; else minlight = 0.2; @@ -2000,8 +1924,10 @@ // locate the proper data // - if ( !(currententity->flags & RF_VIEWERMODEL) ) - c_alias_polys += paliashdr->num_tris; // for r_speeds epoly count + if ( !(currententity->flags & RF_VIEWERMODEL) && !(currententity->flags & RF_WEAPONMODEL) ) + { + c_alias_polys += paliashdr->num_tris; /* for rspeed_epoly count */ + } // // draw all the triangles @@ -2009,13 +1935,13 @@ if (currententity->flags & RF_DEPTHHACK) // hack the depth range to prevent view model from poking into walls qglDepthRange (gldepthmin, gldepthmin + 0.3*(gldepthmax-gldepthmin)); - if ((currententity->flags & RF_WEAPONMODEL) && r_lefthand->value != 2.0F) - { + if ((currententity->flags & RF_WEAPONMODEL) && r_lefthand->integer != 2) + { qglMatrixMode(GL_PROJECTION); qglPushMatrix(); qglLoadIdentity(); - if (r_lefthand->value == 1.0F) + if (r_lefthand->integer == 1) { qglScalef(-1, 1, 1); qglCullFace(GL_BACK); @@ -2026,9 +1952,9 @@ MYgluPerspective(75.0f, (float)r_newrefdef.width / (float)r_newrefdef.height, 4.0f, 4096.0f); qglMatrixMode(GL_MODELVIEW); - } + } - qglPushMatrix (); + qglPushMatrix (); currententity->angles[PITCH] = -currententity->angles[PITCH]; // sigh. R_RotateForEntity (currententity); currententity->angles[PITCH] = -currententity->angles[PITCH]; // sigh. @@ -2089,7 +2015,7 @@ currententity->oldframe = 0; } - if ( !r_lerpmodels->value ) + if ( !r_lerpmodels->integer ) currententity->backlerp = 0; if(currententity->frame == 0 && currentmodel->num_frames == 1) { @@ -2104,7 +2030,7 @@ qglPopMatrix (); - if ( ( currententity->flags & RF_WEAPONMODEL ) && ( r_lefthand->value != 2.0F ) ) + if ( ( currententity->flags & RF_WEAPONMODEL ) && ( r_lefthand->integer != 2 ) ) { qglMatrixMode( GL_PROJECTION ); qglPopMatrix(); @@ -2126,104 +2052,17 @@ qglDisable(GL_TEXTURE_GEN_T); qglDisable (GL_BLEND); qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - qglColor4f(1,1,1,1); - qglTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); + qglColor4f(1,1,1,1); + qglTexEnvf(GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE); } if (currententity->flags & RF_DEPTHHACK) qglDepthRange (gldepthmin, gldepthmax); - - //simple stencil shadows - if (!(r_newrefdef.rdflags & RDF_NOWORLDMODEL) && gl_shadows->integer && !gl_shadowmaps->integer && !(currententity->flags & (RF_WEAPONMODEL | RF_NOSHADOWS))) - { - float casted; - float an = currententity->angles[1]/180*M_PI; - shadevector[0] = cos(-an); - shadevector[1] = sin(-an); - shadevector[2] = 1; - VectorNormalize (shadevector); - - switch (gl_shadows->integer) - { - case 0: - break; - case 1: //dynamic only - always cast something - casted = SHD_ShadowLight (currententity->origin, currententity->angles, shadevector, 0); - qglPushMatrix (); - qglTranslatef (currententity->origin[0], currententity->origin[1], currententity->origin[2]); - qglRotatef (currententity->angles[1], 0, 0, 1); - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_BLEND); - - if (currententity->flags & RF_TRANSLUCENT) - qglColor4f (0,0,0,0.3 * currententity->alpha); //Knightmare- variable alpha - else - qglColor4f (0,0,0,0.3); - - if(currententity->frame == 0 && currentmodel->num_frames == 1) - MD2_DrawShadow (paliashdr, false); - else - MD2_DrawShadow (paliashdr, true); - - qglEnable (GL_TEXTURE_2D); - qglDisable (GL_BLEND); - qglPopMatrix (); - - break; - case 2: //dynamic and world - //world - casted = SHD_ShadowLight (currententity->origin, currententity->angles, shadevector, 1); - qglPushMatrix (); - qglTranslatef (currententity->origin[0], currententity->origin[1], currententity->origin[2]); - qglRotatef (currententity->angles[1], 0, 0, 1); - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_BLEND); - - if (currententity->flags & RF_TRANSLUCENT) - qglColor4f (0,0,0,casted * currententity->alpha); - else - qglColor4f (0,0,0,casted); - - if(currententity->frame == 0 && currentmodel->num_frames == 1) - MD2_DrawShadow (paliashdr, false); - else - MD2_DrawShadow (paliashdr, true); - - qglEnable (GL_TEXTURE_2D); - qglDisable (GL_BLEND); - qglPopMatrix (); - //dynamic - casted = 0; - casted = SHD_ShadowLight (currententity->origin, currententity->angles, shadevector, 0); - if (casted > 0) { //only draw if there's a dynamic light there - qglPushMatrix (); - qglTranslatef (currententity->origin[0], currententity->origin[1], currententity->origin[2]); - qglRotatef (currententity->angles[1], 0, 0, 1); - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_BLEND); - - if (currententity->flags & RF_TRANSLUCENT) - qglColor4f (0,0,0,casted * currententity->alpha); - else - qglColor4f (0,0,0,casted); - - if(currententity->frame == 0 && currentmodel->num_frames == 1) - MD2_DrawShadow (paliashdr, false); - else - MD2_DrawShadow (paliashdr, true); - - qglEnable (GL_TEXTURE_2D); - qglDisable (GL_BLEND); - qglPopMatrix (); - } - - break; - } - } + qglColor4f (1,1,1,1); - if(r_minimap->value) - { + if(r_minimap->integer) + { if ( currententity->flags & RF_MONSTER) { RadarEnts[numRadarEnts].color[0]= 1.0; @@ -2231,13 +2070,12 @@ RadarEnts[numRadarEnts].color[2]= 2.0; RadarEnts[numRadarEnts].color[3]= 1.0; } - else + else return; VectorCopy(currententity->origin,RadarEnts[numRadarEnts].org); numRadarEnts++; } - } void MD2_DrawCasterFrame (dmdl_t *paliashdr, float backlerp, qboolean lerped) @@ -2301,10 +2139,9 @@ if (gl_state.vbo && !lerped) { - currentmodel->vbo_xyz = R_VCFindCache(VBO_STORE_XYZ, currententity); - if (currentmodel->vbo_xyz) + vbo_xyz = R_VCFindCache(VBO_STORE_XYZ, currentmodel); + if (vbo_xyz) { - //Com_Printf("Skipped.\n"); goto skipLoad; } } @@ -2345,23 +2182,18 @@ if(gl_state.vbo && !lerped) { - currentmodel->vbo_xyz = R_VCLoadData(VBO_STATIC, va*sizeof(vec3_t), VertexArray, VBO_STORE_XYZ, currententity); - //Com_Printf("Loading mesh vbo.\n"); - } + vbo_xyz = R_VCLoadData(VBO_STATIC, va*sizeof(vec3_t), VertexArray, VBO_STORE_XYZ, currentmodel); + } skipLoad: if(gl_state.vbo && !lerped) { qglEnableClientState( GL_VERTEX_ARRAY ); - GL_BindVBO(currentmodel->vbo_xyz); + GL_BindVBO(vbo_xyz); qglVertexPointer(3, GL_FLOAT, 0, 0); - - R_DrawVarrays(GL_TRIANGLES, 0, paliashdr->num_tris*3, true); - } - else - { - R_DrawVarrays(GL_TRIANGLES, 0, paliashdr->num_tris*3, false); } + + R_DrawVarrays(GL_TRIANGLES, 0, paliashdr->num_tris*3); R_KillVArrays (); } @@ -2388,7 +2220,7 @@ // draw it - qglPushMatrix (); + qglPushMatrix (); currententity->angles[PITCH] = -currententity->angles[PITCH]; R_RotateForEntity (currententity); currententity->angles[PITCH] = -currententity->angles[PITCH]; @@ -2407,7 +2239,7 @@ currententity->oldframe = 0; } - if ( !r_lerpmodels->value ) + if ( !r_lerpmodels->integer ) currententity->backlerp = 0; if(currententity->frame == 0 && currentmodel->num_frames == 1) diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_misc.c alien-arena-7.66+dfsg/source/ref_gl/r_misc.c --- alien-arena-7.53+dfsg/source/ref_gl/r_misc.c 2011-12-13 03:46:28.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_misc.c 2013-06-22 20:07:35.000000000 +0000 @@ -72,6 +72,7 @@ image_t *r_voltagetexture; image_t *r_raintexture; image_t *r_leaftexture; +image_t *r_trashtexture; image_t *r_splashtexture; image_t *r_splash2texture; image_t *r_radarmap; @@ -292,7 +293,7 @@ if (!r_bubbletexture) { r_bubbletexture = GL_LoadPic ("***particle***", (byte *)data, 16, 16, it_sprite, 32); } - r_reflecttexture = R_RegisterParticlePic("reflect"); + r_reflecttexture = R_RegisterGfxPic("reflect"); if (!r_reflecttexture) { r_reflecttexture = GL_LoadPic ("***particle***", (byte *)data, 16, 16, it_sprite, 32); } @@ -352,6 +353,10 @@ if (!r_leaftexture) { r_leaftexture = GL_LoadPic ("***particle***", (byte *)data, 16, 16, it_sprite, 32); } + r_trashtexture = R_RegisterParticlePic("trash"); + if (!r_trashtexture) { + r_trashtexture = GL_LoadPic ("***particle***", (byte *)data, 16, 16, it_sprite, 32); + } r_splashtexture = R_RegisterParticlePic("ripples"); if (!r_splashtexture) { r_splashtexture = GL_LoadPic ("***particle***", (byte *)data, 16, 16, it_sprite, 32); @@ -360,6 +365,8 @@ if (!r_splash2texture) { r_splash2texture = GL_LoadPic ("***particle***", (byte *)data, 16, 16, it_sprite, 32); } + + //to do - move more or all of this to their appropriate places r_radarmap = GL_FindImage("gfx/radar/radarmap",it_pic); if (!r_radarmap) { r_radarmap = GL_LoadPic ("***particle***", (byte *)data, 16, 16, it_sprite, 32); @@ -412,7 +419,7 @@ } r_notexture = GL_LoadPic ("***r_notexture***", (byte *)data, 16, 16, it_wall, 32); - R_InitCubemapTextures (); + //R_InitCubemapTextures (); //not used for now - may use later for HDR, and others //will eventually add more flaretypes Com_sprintf (flares, sizeof(flares), "gfx/flares/flare0.tga"); @@ -459,6 +466,28 @@ FILE *f; char picname[80], checkname[MAX_OSPATH]; int i, offset; + cvar_t *blocking_cvars[20]; + int nblocking = 0; + + // Yes, you can set gl_picmip to 40. No, we don't want you to show anyone. + if (gl_picmip->integer > 1) + blocking_cvars[nblocking++] = gl_picmip; + if (gl_fog->integer < 1) + blocking_cvars[nblocking++] = gl_fog; + // TODO: check for other avant-garde video settings here. + + if (nblocking > 0) + { + Com_Printf ("Screenshots are disabled because of your settings for the following cvar"); + if (nblocking > 1) + Com_Printf ("s"); + Com_Printf (":\n"); + for (i = 0; i < nblocking; i++) + { + Com_Printf (" %s: %s\n", blocking_cvars[i]->name, blocking_cvars[i]->string); + } + return; + } /* Create the scrnshots directory if it doesn't exist */ Com_sprintf(checkname, sizeof(checkname), "%s/scrnshot/", FS_Gamedir()); @@ -515,10 +544,10 @@ cinfo.input_components = 3; jpeg_set_defaults(&cinfo); - if ((gl_screenshot_jpeg_quality->value >= 101) || (gl_screenshot_jpeg_quality->value <= 0)) + if ((gl_screenshot_jpeg_quality->integer >= 101) || (gl_screenshot_jpeg_quality->integer <= 0)) Cvar_Set("gl_screenshot_jpeg_quality", "85"); - jpeg_set_quality(&cinfo, gl_screenshot_jpeg_quality->value, TRUE); + jpeg_set_quality(&cinfo, gl_screenshot_jpeg_quality->integer, TRUE); /* Start Compression */ jpeg_start_compress(&cinfo, true); diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_model.c alien-arena-7.66+dfsg/source/ref_gl/r_model.c --- alien-arena-7.53+dfsg/source/ref_gl/r_model.c 2011-12-13 23:47:12.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_model.c 2013-08-19 03:26:16.000000000 +0000 @@ -27,6 +27,7 @@ #include "r_local.h" #include "r_iqm.h" #include "r_ragdoll.h" +#include "client/sound.h" model_t *loadmodel; int modfilelen; @@ -46,10 +47,15 @@ LightGroup_t LightGroups[MAX_LIGHTS]; int r_lightgroups; - int registration_sequence; -char map_music[128]; +#if defined WIN32_VARIANT +char map_music[MAX_PATH]; +char map_music_sec[MAX_PATH]; +#else +char map_music[MAX_OSPATH]; +char map_music_sec[MAX_OSPATH]; +#endif char map_entitystring[MAX_MAP_ENTSTRING]; int numentitychars; @@ -527,7 +533,7 @@ if (!name[0]) Com_Error (ERR_DROP, "Mod_ForName: NULL name"); - + // // inline models are grabbed only from worldmodel // @@ -555,15 +561,12 @@ if (mod->type == mod_alias || mod->type == mod_iqm) { // Make sure models scripts are definately reloaded between maps - char rs[MAX_OSPATH]; image_t *img; img=mod->skins[0]; if (img != NULL) { - strcpy(rs,mod->skins[0]->name); - rs[strlen(rs)-4]=0; - mod->script = RS_FindScript(rs); + mod->script = mod->skins[0]->script; if (mod->script) RS_ReadyScript( mod->script ); } @@ -588,6 +591,8 @@ mod_numknown++; } strcpy (mod->name, name); + + R_SetSimpleTexnum (mod, name); // // load the file @@ -828,16 +833,23 @@ Mod_LoadTexinfo ================= */ + +int compare_unique_texinfo (const void *_a, const void *_b) +{ + mtexinfo_t *a = *(mtexinfo_t **)_a, *b = *(mtexinfo_t **)_b; + return a->image->texnum-b->image->texnum; +} + void Mod_LoadTexinfo (lump_t *l) { - texinfo_t *in; - mtexinfo_t *out, *step; - int i, j, count; + texinfo_t *in, *in_base; + mtexinfo_t *out, *step, **unique_temp; + int i, j, count, num_unique; char name[MAX_QPATH]; char sv_name[MAX_QPATH]; int next; - in = (void *)(mod_base + l->fileofs); + in_base = in = (void *)(mod_base + l->fileofs); if (l->filelen % sizeof(*in)) Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size in %s",loadmodel->name); count = l->filelen / sizeof(*in); @@ -857,16 +869,19 @@ out->value = LittleLong (in->value); out->flags = LittleLong (in->flags); next = LittleLong (in->nexttexinfo); - if (next > 0) + if (next > 0 && next < loadmodel->numtexinfo) out->next = loadmodel->texinfo + next; else out->next = NULL; + + out->equiv = out; Com_sprintf (name, sizeof(name), "textures/%s.wal", in->texture); out->image = GL_FindImage (name, it_wall); Com_sprintf (name, sizeof(name), "textures/%s", in->texture); out->image->script = RS_FindScript(name); + if (out->image->script) RS_ReadyScript(out->image->script); @@ -918,6 +933,36 @@ for (step = out->next ; step && step != out ; step=step->next) out->numframes++; } + + //find equivalent texinfos + num_unique = 0; + unique_temp = Z_Malloc (sizeof(mtexinfo_t*)*count); + for (i = 0; i < count; i++) + { + for (j = 0; j < i; j++) + { + if (in_base[i].flags == in_base[j].flags && + in_base[i].nexttexinfo == in_base[j].nexttexinfo && + !strcmp (in_base[i].texture, in_base[j].texture)) + { + loadmodel->texinfo[i].equiv = loadmodel->texinfo[j].equiv; + break; + } + } + if (j == i) + { + unique_temp[num_unique++] = loadmodel->texinfo[i].equiv; + } + } + + qsort (unique_temp, num_unique, sizeof(mtexinfo_t*), compare_unique_texinfo); + + loadmodel->unique_texinfo = Hunk_Alloc (num_unique*sizeof(mtexinfo_t*)); + memcpy (loadmodel->unique_texinfo, unique_temp, num_unique*sizeof(mtexinfo_t*)); + Z_Free (unique_temp); + loadmodel->num_unique_texinfos = num_unique; + + Com_Printf ("Condensed ^2%i texinfos into ^2%i equivalent texinfos\n", count, num_unique); } /* @@ -927,10 +972,10 @@ Fills in s->texturemins[] and s->extents[] ================ */ -void CalcSurfaceExtents (msurface_t *s) +void CalcSurfaceExtents (msurface_t *s, qboolean override, int *smax, int *tmax, float *xscale, float *yscale, int firstedge, int numedges) { float mins[2], maxs[2], val; - int i,j, e; + int i,j, e, vnum; mvertex_t *v; mtexinfo_t *tex; int bmins[2], bmaxs[2]; @@ -940,13 +985,26 @@ tex = s->texinfo; - for (i=0 ; inumedges ; i++) - { - e = loadmodel->surfedges[s->firstedge+i]; + if (firstedge < 0 || firstedge+numedges-1 >= loadmodel->numsurfedges) + Com_Error (ERR_DROP, + "Map contains invalid value for s->firstedge!\n" + "The file is likely corrupted, please obtain a fresh copy."); + for (i=0 ; isurfedges[firstedge+i]; + if (abs(e) > loadmodel->numedges) + Com_Error (ERR_DROP, + "Map contains invalid edge offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); if (e >= 0) - v = &loadmodel->vertexes[loadmodel->edges[e].v[0]]; + vnum = loadmodel->edges[e].v[0]; else - v = &loadmodel->vertexes[loadmodel->edges[-e].v[1]]; + vnum = loadmodel->edges[-e].v[1]; + if (vnum < 0 || vnum >= loadmodel->numvertexes) + Com_Error (ERR_DROP, + "Map contains invalid vertex offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); + v = &loadmodel->vertexes[vnum]; for (j=0 ; j<2 ; j++) { @@ -961,14 +1019,33 @@ } } - for (i=0 ; i<2 ; i++) + if (!override) { - bmins[i] = floor(mins[i]/16); - bmaxs[i] = ceil(maxs[i]/16); - - s->texturemins[i] = bmins[i] * 16; - s->extents[i] = (bmaxs[i] - bmins[i]) * 16; - } +#define DEFAULT_LIGHTMAP_SCALE 16 //each lightmap pixel represents 16x16 units + *xscale = *yscale = DEFAULT_LIGHTMAP_SCALE; + for (i=0 ; i<2 ; i++) + { + bmins[i] = floor(mins[i]/DEFAULT_LIGHTMAP_SCALE); + bmaxs[i] = ceil(maxs[i]/DEFAULT_LIGHTMAP_SCALE); + + s->texturemins[i] = bmins[i] * DEFAULT_LIGHTMAP_SCALE; + s->extents[i] = (bmaxs[i] - bmins[i]) * DEFAULT_LIGHTMAP_SCALE; + } + *smax = (s->extents[0]/DEFAULT_LIGHTMAP_SCALE)+1; + *tmax = (s->extents[1]/DEFAULT_LIGHTMAP_SCALE)+1; + } + else + { + bmins[0] = floor(mins[0]/(*xscale)); + bmaxs[0] = ceil(maxs[0]/(*xscale)); + s->texturemins[0] = bmins[0] * (*xscale); + s->extents[0] = (bmaxs[0] - bmins[0]) * (*xscale); + + bmins[1] = floor(mins[1]/(*yscale)); + bmaxs[1] = ceil(maxs[1]/(*yscale)); + s->texturemins[1] = bmins[1] * (*yscale); + s->extents[1] = (bmaxs[1] - bmins[1]) * (*yscale); + } } void Mod_CalcSurfaceNormals(msurface_t *surf) @@ -977,6 +1054,7 @@ glpoly_t *p = surf->polys; float *v; int i; + float temp_tangentSpaceTransform[3][3]; for (; p; p = p->chain) { @@ -989,6 +1067,10 @@ vec = p->verts[0]; _VectorCopy(surf->plane->normal, normal); + // FIXME: on some maps, this code doesn't always initialize v02, + // leading to Valgrind complaining about use of uninitialized memory. + // dm-infinity and dm-zorn2k11 are two such maps. Probably not a huge + // deal, doesn't seem to be causing any issues. for (v = p->verts[0], i = 0 ; i < p->numverts; i++, v += VERTEXSIZE) { @@ -1016,9 +1098,9 @@ VectorNormalize( normal ); //we have the largest normal - surf->tangentSpaceTransform[ 0 ][ 2 ] = normal[ 0 ]; - surf->tangentSpaceTransform[ 1 ][ 2 ] = normal[ 1 ]; - surf->tangentSpaceTransform[ 2 ][ 2 ] = normal[ 2 ]; + temp_tangentSpaceTransform[ 0 ][ 2 ] = normal[ 0 ]; + temp_tangentSpaceTransform[ 1 ][ 2 ] = normal[ 1 ]; + temp_tangentSpaceTransform[ 2 ][ 2 ] = normal[ 2 ]; //now get the tangent s = ( p->verts[ 1 ][ 3 ] - p->verts[ 0 ][ 3 ] ) @@ -1033,9 +1115,9 @@ VectorScale( temp3, s, tangent ); VectorNormalize( tangent ); - surf->tangentSpaceTransform[ 0 ][ 0 ] = tangent[ 0 ]; - surf->tangentSpaceTransform[ 1 ][ 0 ] = tangent[ 1 ]; - surf->tangentSpaceTransform[ 2 ][ 0 ] = tangent[ 2 ]; + temp_tangentSpaceTransform[ 0 ][ 0 ] = tangent[ 0 ]; + temp_tangentSpaceTransform[ 1 ][ 0 ] = tangent[ 1 ]; + temp_tangentSpaceTransform[ 2 ][ 0 ] = tangent[ 2 ]; //now get the binormal VectorScale( v02, p->verts[ 1 ][ 3 ] - p->verts[ 0 ][ 3 ], temp1 ); @@ -1044,30 +1126,267 @@ VectorScale( temp3, s, binormal ); VectorNormalize( binormal ); - surf->tangentSpaceTransform[ 0 ][ 1 ] = binormal[ 0 ]; - surf->tangentSpaceTransform[ 1 ][ 1 ] = binormal[ 1 ]; - surf->tangentSpaceTransform[ 2 ][ 1 ] = binormal[ 2 ]; + temp_tangentSpaceTransform[ 0 ][ 1 ] = binormal[ 0 ]; + temp_tangentSpaceTransform[ 1 ][ 1 ] = binormal[ 1 ]; + temp_tangentSpaceTransform[ 2 ][ 1 ] = binormal[ 2 ]; + + //Try to find this tangentSpaceTransform in the existing array or else + //add it. This is not a RAM-saving measure, it's to allow comparison + //of different tangentSpaceTransforms using the == operator, which is + //more efficient. + { + float *tst; + int i; + int j; + for (tst = loadmodel->tangentSpaceTransforms, i = 0; i < loadmodel->numTangentSpaceTransforms; i++, tst += 9) + { + qboolean match = true; + for (j = 0; j < 9; j++) + { + // If we reduce our precision to just 4 decimal places, + // we can cut the number of transforms by a factor of more + // than 5. Single-precision floating point is precise to + // just 6 places anyway, so we're not loosing too much. + // Subjectively, it still looks fine. + if (fabs (tst[j]-temp_tangentSpaceTransform[j/3][j%3]) > 0.0001) + { + match = false; + break; + } + } + if (match) + break; + } + surf->tangentSpaceTransform = tst; + if (i == loadmodel->numTangentSpaceTransforms) + { + for (i = 0; i < 3; i++) + for (j = 0; j < 3; j++) + *(tst++) = temp_tangentSpaceTransform[i][j]; + loadmodel->numTangentSpaceTransforms++; + } + } } } -void BSP_BuildPolygonFromSurface(msurface_t *fa); -void BSP_CreateSurfaceLightmap (msurface_t *surf); +void BSP_BuildPolygonFromSurface(msurface_t *fa, float xscale, float yscale, int light_s, int light_t, int firstedge, int lnumverts); +void BSP_CreateSurfaceLightmap (msurface_t *surf, int smax, int tmax, int *light_s, int *light_t); void BSP_EndBuildingLightmaps (void); void BSP_BeginBuildingLightmaps (model_t *m); + +// FOR REFINE: .lightmap high-detail lightmap override files + +ltmp_facelookup_t lfacelookups[MAX_MAP_FACES]; +int lightdatasize; +byte override_lightdata[MAX_OVERRIDE_LIGHTING]; +byte *lightmap_header; + +// choose up to one override for each map face +void Mod_LoadRefineFaceLookups (lump_t *l) +{ + int i, count; + ltmp_facelookup_t *in; + ltmp_facelookup_t *out; + + if (!l->filelen) + return; + in = (void *)(lightmap_header+l->fileofs); + printf ("%d / %d\n", l->filelen, sizeof(*in)); + if (l->filelen % sizeof (*in)) + Com_Error (ERR_DROP, "Mod_LoadRefineFaceLookups: funny lump size"); + count = l->filelen / sizeof (*in); + + Com_Printf ("%f\n", in->xscale); + for (i = 0; i < count; i++, in++) + { + int facenum, format, offset, size, width, height; + + // Silently skip over pixel formats we don't understand. We do this + // check first so that in the future it can be used to work around the + // following two for backward compatibility. + format = LittleLong(in->format); + if (format >= LTMP_NUM_SUPPORTED_PIXFMTS) + continue; + + // make a federal case out of bad face offsets + facenum = LittleLong(in->facenum); + if (facenum >= MAX_MAP_FACES || facenum < 0) + Com_Error (ERR_DROP, "Mod_LoadRefineFaceeLookups: bad facenum"); + + // make a federal case out of bad pixel data offsets + offset = LittleLong(in->offset); + width = LittleLong(in->width); + height = LittleLong(in->height); + switch (format) + { + case LTMP_PIXFMT_RGB24: + size = 3*width*height; + break; + } + if (offset < 1 || offset+size > MAX_OVERRIDE_LIGHTING*4) + Com_Error (ERR_DROP, "Mod_LoadRefineFaceeLookups: bad offset"); + + out = &lfacelookups[facenum]; + out->offset = offset; + out->format = format; + out->width = width; + out->height = height; + out->xscale = LittleFloat(in->xscale); + out->yscale = LittleFloat(in->yscale); + } +} + +// load only the lightmap data that will actually be used; readjust the +// pixel data offsets accordingly +void Mod_LoadRefineLighting (lump_t *l) +{ + int i; + byte *in_buffer; + qboolean overflowed = false; + + if (!l->filelen) + return; + if (l->filelen > MAX_OVERRIDE_LIGHTING*4) + Com_Error (ERR_DROP, "Mod_LoadRefineLighting: too much light data"); + + lightdatasize = 0; + in_buffer = lightmap_header + l->fileofs; + for (i = 0; i < loadmodel->numsurfaces; i++) + { + int in_offset = lfacelookups[i].offset; + if (in_offset) + { + int size = 0; + switch (lfacelookups[i].format) + { + case LTMP_PIXFMT_RGB24: + size = 3*lfacelookups[i].width*lfacelookups[i].height; + break; + } + if (lightdatasize + size >= MAX_OVERRIDE_LIGHTING) + { + overflowed = true; + break; + } + memcpy (override_lightdata+lightdatasize, in_buffer+in_offset-1, size); + lfacelookups[i].offset = lightdatasize+1; + lightdatasize += size; + } + } + + if (overflowed) + { + Com_Printf ("Mod_LoadRefineLighting: MAX_OVERRIDE_LIGHTING overflow!\n"); + Com_Printf ("Disabling HD lightmaps for this map.\n"); + memset (lfacelookups, 0, sizeof(lfacelookups)); + } +} + +void Mod_LoadRefineLightmap (char *bsp_name) +{ + byte *buf, *uncompressed_buf; + lightmapheader_t header; + int length; + char name[MAX_OSPATH]; + char *extension; + int lightmap_file_lump_order[LTMP_LUMPS] = { + LTMP_LUMP_FACELOOKUP, LTMP_LUMP_LIGHTING + }; + + sizebuf_t in, out; + +#ifndef HAVE_ZLIB + Com_Printf ("Zlib support must be enabled to use HD lightmaps!\n"); + Com_Printf ("Please recompile with Zlib support.\n"); + return; +#endif + + strncpy (name, bsp_name, MAX_OSPATH-1-strlen(".lightmap")+strlen(".bsp")); + extension = strstr (name, ".bsp"); + if (extension) + *extension = 0; + strcat (name, ".lightmap"); + + length = FS_LoadFile (name, (void **)&buf); + if (!buf) + { + Com_Printf ("Could not load %s\n", name); + return; + } + else + Com_Printf ("Loaded %s\n", name); + + SZ_Init (&in, buf, length); + in.cursize = length; + uncompressed_buf = malloc (LTMP_MAX_UNCOMPRESSED_DATA); + if (!uncompressed_buf) + { + Com_Printf ("Mod_LoadRefineLightmap: unable to allocate %d bytes!\n", LTMP_MAX_UNCOMPRESSED_DATA); + return; + } + SZ_Init (&out, (byte *)uncompressed_buf, LTMP_MAX_UNCOMPRESSED_DATA); + qdecompress (&in, &out, compression_zlib_header); + FS_FreeFile (buf); + + if (!out.cursize) + { + Com_Printf ("Mod_LoadRefineLightmap: unable to decompress data in %s!\n",name); + free (uncompressed_buf); + return; + } + + lightmap_header = (byte *)uncompressed_buf; + header = *(lightmapheader_t *)uncompressed_buf; + + if (header.ident != IDLIGHTMAPHEADER) + { + Com_Printf ("Mod_LoadRefineLightmap: invalid magic number in %s!\n" + "The file is likely corrupt, please obtain a fresh copy.\n", name); + free (uncompressed_buf); + return; + } + if (header.version != LTMPVERSION) + { + Com_Printf ("Mod_LoadRefineLightmap: invalid major version number in %s!\n" + "Version %d of the format is not supported. Current major version number is %d\n", + name, header.version, LTMPVERSION); + free (uncompressed_buf); + return; + } + + if (checkLumps (header.lumps, sizeof(int)*3, lightmap_file_lump_order, uncompressed_buf, LTMP_LUMPS, out.cursize)) + { + Com_Printf ("Mod_LoadRefineLightmap: lumps in %s don't add up right!\n" + "The file is likely corrupt, please obtain a fresh copy.\n",name); + free (uncompressed_buf); + return; + } + + Mod_LoadRefineFaceLookups (&header.lumps[LTMP_LUMP_FACELOOKUP]); + Mod_LoadRefineLighting (&header.lumps[LTMP_LUMP_LIGHTING]); + + free (uncompressed_buf); +} + /* ================= Mod_LoadFaces ================= */ -void Mod_LoadFaces (lump_t *l) +// We need access to the lighting lump so we can check the bounds of lightmap +// offsets. Otherwise, crafted or corrupted BSPs could crash the client. +void Mod_LoadFaces (lump_t *l, lump_t *lighting) { dface_t *in; msurface_t *out; int i, count, surfnum; int planenum, side; int ti; + int smax, tmax; + int light_s, light_t; + float xscale, yscale; rscript_t *rs; vec3_t color; @@ -1079,8 +1398,15 @@ loadmodel->surfaces = out; loadmodel->numsurfaces = count; + + //we are guaranteed not to need more than this + loadmodel->tangentSpaceTransforms = Hunk_Alloc (sizeof(float)*9*count); currentmodel = loadmodel; + + memset (lfacelookups, 0, sizeof(lfacelookups)); + if (r_lightmapfiles->integer) + Mod_LoadRefineLightmap (loadmodel->name); BSP_BeginBuildingLightmaps (loadmodel); @@ -1088,24 +1414,41 @@ for ( surfnum=0 ; surfnumfirstedge = LittleLong(in->firstedge); - out->numedges = LittleShort(in->numedges); - out->flags = 0; + int firstedge = LittleLong(in->firstedge); + int numedges = LittleShort(in->numedges); + out->iflags = 0; out->polys = NULL; - planenum = LittleShort(in->planenum); + planenum = (unsigned short)LittleShort(in->planenum); side = LittleShort(in->side); if (side) - out->flags |= SURF_PLANEBACK; + out->iflags |= ISURF_PLANEBACK; + if (planenum >= loadmodel->numplanes) + Com_Error (ERR_DROP, + "Map has invalid plane offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); out->plane = loadmodel->planes + planenum; ti = LittleShort (in->texinfo); if (ti < 0 || ti >= loadmodel->numtexinfo) - Com_Error (ERR_DROP, "MOD_LoadBmodel: bad texinfo number"); + Com_Error (ERR_DROP, + "Map has invalid texinfo offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); out->texinfo = loadmodel->texinfo + ti; - CalcSurfaceExtents (out); + if (lfacelookups[surfnum].offset) + { + smax=lfacelookups[surfnum].width; + tmax=lfacelookups[surfnum].height; + xscale=lfacelookups[surfnum].xscale; + yscale=lfacelookups[surfnum].yscale; + CalcSurfaceExtents (out, true, &smax, &tmax, &xscale, &yscale, firstedge, numedges); + } + else + { + CalcSurfaceExtents (out, false, &smax, &tmax, &xscale, &yscale, firstedge, numedges); + } // lighting info @@ -1113,32 +1456,35 @@ out->styles[i] = in->styles[i]; i = LittleLong(in->lightofs); - if (i == -1) + if (i < 0 || i >= lighting->filelen) out->samples = NULL; + else if (lfacelookups[surfnum].offset > 0 && lfacelookups[surfnum].offset <= lightdatasize) + out->samples = override_lightdata + lfacelookups[surfnum].offset-1; else out->samples = loadmodel->lightdata + i; // set the drawing flags if (out->texinfo->flags & SURF_WARP) { - out->flags |= SURF_DRAWTURB; + out->iflags |= ISURF_DRAWTURB; for (i=0 ; i<2 ; i++) { out->extents[i] = 16384; out->texturemins[i] = -8192; } if(!(gl_state.glsl_shaders && gl_glsl_shaders->value) || !strcmp(out->texinfo->normalMap->name, out->texinfo->image->name)) - R_SubdivideSurface (out); // cut up polygon for warps + R_SubdivideSurface (out, firstedge, numedges); // cut up polygon for warps } // create lightmaps and polygons + light_s = light_t = 0; if ( !SurfaceHasNoLightmap(out) ) { - BSP_CreateSurfaceLightmap (out); + BSP_CreateSurfaceLightmap (out, smax, tmax, &light_s, &light_t); } if ( (! (out->texinfo->flags & SURF_WARP)) || (gl_state.glsl_shaders && gl_glsl_shaders->value && strcmp(out->texinfo->normalMap->name, out->texinfo->image->name))) - BSP_BuildPolygonFromSurface(out); + BSP_BuildPolygonFromSurface(out, xscale, yscale, light_s, light_t, firstedge, numedges); rs = (rscript_t *)out->texinfo->image->script; @@ -1167,6 +1513,8 @@ Mod_AddBeamSurface(out, stage->texture->texnum, color, stage->scale.scaleX, stage->texture->bare_name, stage->beamtype, stage->xang, stage->yang, stage->rotating); } + if (stage->cube) + out->texinfo->flags |= SURF_SHINY; } while ( (stage = stage->next) ); } Mod_CalcSurfaceNormals(out); @@ -1223,19 +1571,35 @@ } p = LittleLong(in->planenum); + if (p < 0 || p >= loadmodel->numplanes) + Com_Error (ERR_DROP, + "Map has invalid plane offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); out->plane = loadmodel->planes + p; - out->firstsurface = LittleShort (in->firstface); - out->numsurfaces = LittleShort (in->numfaces); + out->firstsurface = (unsigned short)LittleShort (in->firstface); + out->numsurfaces = (unsigned short)LittleShort (in->numfaces); out->contents = -1; // differentiate from leafs for (j=0 ; j<2 ; j++) { p = LittleLong (in->children[j]); if (p >= 0) + { + if (p >= loadmodel->numnodes) + Com_Error (ERR_DROP, + "Map file has invalid node offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); out->children[j] = loadmodel->nodes + p; + } else + { + if (-1-p >= loadmodel->numleafs) + Com_Error (ERR_DROP, + "Map file has invalid leaf offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); out->children[j] = (mnode_t *)(loadmodel->leafs + (-1 - p)); + } } } @@ -1253,6 +1617,7 @@ dleaf_t *in; mleaf_t *out; int i, j, count, p; + int to_subtract = 0; //for removing SURF_NODRAW surfaces in = (void *)(mod_base + l->fileofs); if (l->filelen % sizeof(*in)) @@ -1278,18 +1643,46 @@ out->area = LittleShort(in->area); out->firstmarksurface = loadmodel->marksurfaces + - LittleShort(in->firstleafface); - out->nummarksurfaces = LittleShort(in->numleaffaces); + (unsigned short)(LittleShort(in->firstleafface)); + out->nummarksurfaces = (unsigned short)LittleShort(in->numleaffaces); + if (out->firstmarksurface < loadmodel->marksurfaces || + out->nummarksurfaces < 0 || + (unsigned short)LittleShort(in->firstleafface) > + loadmodel->nummarksurfaces) + Com_Error (ERR_DROP, + "Map file has invalid leaf surface offsets!\n" + "The file is likely corrupted, please obtain a fresh copy."); + + out->firstmarksurface -= to_subtract; + + // Remove SURF_NODRAW surfaces. We do this here instead of in + // Mod_LoadMarkSurfaces so we can correct the offsets in each leaf. + for (j = 0; j < out->nummarksurfaces; j++) + { + msurface_t *s; + out->firstmarksurface[j] = out->firstmarksurface[j+to_subtract]; + s = out->firstmarksurface[j]; + if (s->texinfo->flags & SURF_NODRAW) + { + to_subtract++; + j--; + out->nummarksurfaces--; + } + } // gl underwater warp - if (out->contents & MASK_WATER ) + for (j=0 ; jnummarksurfaces ; j++) { - for (j=0 ; jnummarksurfaces ; j++) - { - out->firstmarksurface[j]->flags |= SURF_UNDERWATER; - } + msurface_t *s = out->firstmarksurface[j]; + if ( (out->contents & MASK_WATER) || + (s->texinfo->flags & SURF_UNDERWATER)) + out->firstmarksurface[j]->iflags |= ISURF_UNDERWATER; } } + + loadmodel->nummarksurfaces -= to_subtract; + + Com_Printf ("Eliminated ^2%i invisible surfaces.\n", to_subtract); } /* @@ -1331,6 +1724,7 @@ int i, count; int *in, *out; + in = (void *)(mod_base + l->fileofs); if (l->filelen % sizeof(*in)) Com_Error (ERR_DROP, "MOD_LoadBmodel: funny lump size in %s",loadmodel->name); @@ -1389,6 +1783,79 @@ /* ================= +Mod_SummarizePVS + +Gather some statistics from the PVS data which allows the renderer to take +some shortcuts. +================= +*/ +void Mod_SummarizePVS (void) +{ + byte *vis; + mleaf_t *leaf, *leaf2; + int cluster; + int i; + + loadmodel->num_areas = 0; + for (i = 0; i < MAX_MAP_AREAS; i++) + { + loadmodel->area_min_leaf[i] = loadmodel->numleafs-1; + loadmodel->area_max_leaf[i] = 0; + } + + for (i=0,leaf=loadmodel->leafs ; inumleafs ; i++, leaf++) + { + cluster = leaf->cluster; + if (cluster == -1) + continue; + + vis = Mod_ClusterPVS (cluster, loadmodel); + + if (loadmodel->area_min_leaf[leaf->area] > i) + loadmodel->area_min_leaf[leaf->area] = i; + if (loadmodel->area_max_leaf[leaf->area] < i) + loadmodel->area_max_leaf[leaf->area] = i; + if (leaf->area > loadmodel->num_areas) + loadmodel->num_areas = leaf->area; + + // Two separate loops, one for minPVSleaf and one for maxPVSleaf, + // each coming from opposite directions, for greater efficiency. + + for ( leaf->minPVSleaf = 0, leaf2 = loadmodel->leafs; + leaf->minPVSleaf < loadmodel->numleafs; + leaf->minPVSleaf++, leaf2++ + ) + { + cluster = leaf2->cluster; + if ((leaf2->contents & CONTENTS_SOLID) || cluster == -1) + continue; + if (leaf2->nummarksurfaces == 0) + continue; + + if (vis[cluster>>3] & (1<<(cluster&7))) + break; + } + + for ( leaf->maxPVSleaf = loadmodel->numleafs-1, leaf2 = &loadmodel->leafs[leaf->maxPVSleaf]; + leaf->maxPVSleaf >= leaf->minPVSleaf; + leaf->maxPVSleaf--, leaf2-- + ) + { + cluster = leaf2->cluster; + if ((leaf2->contents & CONTENTS_SOLID) || cluster == -1) + continue; + if (leaf2->nummarksurfaces == 0) + continue; + + if (vis[cluster>>3] & (1<<(cluster&7))) + break; + } + } + loadmodel->num_areas++; +} + +/* +================= Mod_LoadBrushModel ================= */ @@ -1448,11 +1915,12 @@ Mod_LoadLighting (&header->lumps[LUMP_LIGHTING]); Mod_LoadPlanes (&header->lumps[LUMP_PLANES]); Mod_LoadTexinfo (&header->lumps[LUMP_TEXINFO]); - Mod_LoadFaces (&header->lumps[LUMP_FACES]); + Mod_LoadFaces (&header->lumps[LUMP_FACES], &header->lumps[LUMP_LIGHTING]); Mod_LoadMarksurfaces (&header->lumps[LUMP_LEAFFACES]); Mod_LoadVisibility (&header->lumps[LUMP_VISIBILITY]); Mod_LoadLeafs (&header->lumps[LUMP_LEAFS]); Mod_LoadNodes (&header->lumps[LUMP_NODES]); + Mod_SummarizePVS (); Mod_LoadSubmodels (&header->lumps[LUMP_MODELS]); mod->num_frames = 2; // regular and alternate animation @@ -1486,6 +1954,7 @@ R_ParseLightEntities(); R_FindSunEntity(); + R_FinalizeGrass(loadmodel); } //============================================================================= @@ -1515,6 +1984,8 @@ { { "martianenforcer" }, { "martiancyborg" }, + { "martianoverlord" }, + { "martianwarrior" }, { "enforcer" }, { "commander" }, { "lauren" }, @@ -1573,6 +2044,9 @@ Com_sprintf( mod_filename, sizeof(mod_filename), "players/%s/%s", BasePModels[i].name, BaseWModels[j]); R_RegisterModel(mod_filename); } + + //register standard sounds + S_RegisterSoundsForPlayer (BasePModels[i].name); //register all skins Com_sprintf( scratch, sizeof(scratch), "players/%s/*.jpg", BasePModels[i].name); @@ -1633,6 +2107,9 @@ if(FS_FileExists(mod_filename)) R_RegisterModel(mod_filename); } + + //register standard sounds + S_RegisterSoundsForPlayer (dirnames[i]); //register all skins strcpy( scratch, dirnames[i] ); @@ -1679,6 +2156,11 @@ // check for fog file, using file system search path path = NULL; map_fog = false; + r_weather = false; + r_nosun = false; + r_sunX = 0; + r_sunY = 0; + r_sunZ = 0; for(;;) { path = FS_NextPath( path ); @@ -1698,7 +2180,10 @@ } // check for background music file, , using file system search path - strcpy(map_music, "music/none.wav"); + //defaults below + strcpy(map_music, "music/menumusic.ogg"); + strcpy(map_music_sec, "music/adrenaline.ogg"); + S_RegisterSound (map_music_sec); path = NULL; for(;;) { @@ -1710,13 +2195,18 @@ Com_sprintf(fullname, sizeof(fullname), "%s/maps/scripts/%s.mus", path, model); i = 0; R_FindFile( fullname, &file ); //does a music file exist? - if(file) { + if(file) + { //read the file, get music information fclose( file ); - R_ReadMusicScript( fullname ); + R_ReadMusicScript( fullname ); break; } } + //set ctf flags + r_gotFlag = false; + r_lostFlag = false; + Cvar_Set("rs_hasflag", "0"); Com_sprintf (fullname, sizeof(fullname), "maps/%s.bsp", model); diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_model.h alien-arena-7.66+dfsg/source/ref_gl/r_model.h --- alien-arena-7.53+dfsg/source/ref_gl/r_model.h 2011-11-16 16:55:39.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_model.h 2013-06-22 20:07:35.000000000 +0000 @@ -112,7 +112,7 @@ //base player models and weapons for prechache typedef struct PModelList_s { - const char *name; + char *name; } PModelList_t; @@ -121,7 +121,7 @@ typedef struct WModelList_s { - const char *name; + char *name; } WModelList_t; @@ -169,13 +169,18 @@ #define SIDE_BACK 1 #define SIDE_ON 2 - -#define SURF_PLANEBACK 1 -#define SURF_DRAWTURB 2 -#define SURF_UNDERWATER 0x80 - -#define SurfaceIsTranslucent(surf) ((surf)->texinfo->flags & (SURF_TRANS33|SURF_TRANS66)) -#define SurfaceIsAlphaBlended(surf) ((surf)->texinfo->flags & SURF_TRANS33 && (surf)->texinfo->flags & SURF_TRANS66) +//Internal surface flags, applied by the engine +#define ISURF_PLANEBACK 0x1 +#define ISURF_DRAWTURB 0x2 +// same effect as SURF_UNDERWATER, but has to be separate because +// SURF_UNDERWATER applies to texinfos, whereas we have to work with +// individual surfaces. +#define ISURF_UNDERWATER 0x4 + +#define TexinfoIsTranslucent(texinfo) ((texinfo)->flags & (SURF_TRANS33|SURF_TRANS66)) +#define SurfaceIsTranslucent(surf) (TexinfoIsTranslucent((surf)->texinfo)) +#define TexinfoIsAlphaBlended(texinfo) ((texinfo)->flags & SURF_TRANS33 && (texinfo)->flags & SURF_TRANS66) +#define SurfaceIsAlphaBlended(surf) (TexinfoIsAlphaBlended ((surf)->texinfo)) #define SurfaceHasNoLightmap(surf) ((surf)->texinfo->flags & (SURF_SKY|SURF_TRANS33|SURF_TRANS66|SURF_WARP) && !SurfaceIsAlphaBlended((surf))) // !!! if this is changed, it must be changed in asm_draw.h too !!! @@ -198,6 +203,7 @@ int flags; int numframes; struct mtexinfo_s *next; // animation chain + struct mtexinfo_s *equiv; // equivalent texinfo image_t *image; image_t *normalMap; image_t *heightMap; @@ -205,6 +211,16 @@ qboolean has_heightmap; struct rscript_s *script; int value; + + //for BSP rendering-- not always cleared each frame + struct msurface_s *w_glsl_surfaces, + *w_glsl_dynamic_surfaces, + *w_lightmap_surfaces; + + //for entity rendering-- cleared for each brush model drawn + struct msurface_s *e_glsl_surfaces, + *e_glsl_dynamic_surfaces, + *e_lightmap_surfaces; } mtexinfo_t; #define VERTEXSIZE 10 @@ -218,38 +234,42 @@ } glpoly_t; +// FIXME: We really need a smaller version of this struct with less data in +// it, for use by BSP_RecursiveWorldNode. This one is 136 bytes, which is huge +// and killing our cache locality. typedef struct msurface_s { int visframe; // should be drawn when node is crossed + + int iflags; // internal flags, applied by the engine + + mtexinfo_t *texinfo; cplane_t *plane; - int flags; - - int firstedge; // look up in model->surfedges[], negative numbers - int numedges; // are backwards edges + + //texture chains for batching + struct msurface_s *texturechain; + struct msurface_s *rscriptchain; + + //texture chain for lightstyle updating + struct msurface_s *flickerchain; + + vec3_t mins; + vec3_t maxs; int texturemins[2]; int extents[2]; - int light_s, light_t; // gl lightmap coordinates - int dlight_s, dlight_t; // gl lightmap coordinates for dynamic lightmaps - glpoly_t *polys; // multiple if warped - //texture chains for batching - struct msurface_s *texturechain; - struct msurface_s *glslchain; - struct msurface_s *glsldynamicchain; - struct msurface_s *lightmapchain; - struct msurface_s *rscriptchain; - struct msurface_s *normalchain; - - mtexinfo_t *texinfo; float c_s, c_t; // lighting info int dlightframe; int dlightbits; + + int lightmins[2]; + int lightmaxs[2]; int lightmaptexturenum; byte styles[MAXLIGHTMAPS]; @@ -258,17 +278,15 @@ entity_t *entity; - float tangentSpaceTransform[3][3]; - - vec3_t mins; - vec3_t maxs; + float *tangentSpaceTransform; //vbo - size_t vbo_pos; - int xyz_size; - int st_size; - int lm_size; int has_vbo; + int vbo_first_vert; + int vbo_num_verts; + + // XXX: for future reference, the glDrawRangeElements code was last seen + // here at revision 3246. } msurface_t; @@ -308,6 +326,8 @@ msurface_t **firstmarksurface; int nummarksurfaces; + + int minPVSleaf, maxPVSleaf; } mleaf_t; @@ -331,6 +351,9 @@ typedef enum {mod_bad, mod_brush, mod_sprite, mod_alias, mod_iqm } modtype_t; +typedef enum { simplecolor_white, simplecolor_green, simplecolor_blue, + simplecolor_purple } simplecolor_t; + typedef struct model_s { char name[MAX_QPATH]; @@ -374,9 +397,14 @@ int numtexinfo; mtexinfo_t *texinfo; + int num_unique_texinfos; + mtexinfo_t **unique_texinfo; int numsurfaces; msurface_t *surfaces; + + int numTangentSpaceTransforms; + float *tangentSpaceTransforms; int numsurfedges; int *surfedges; @@ -387,6 +415,11 @@ dvis_t *vis; byte *lightdata; + + //minimum and maximum leaf indexes for each area + int area_min_leaf[MAX_MAP_AREAS]; + int area_max_leaf[MAX_MAP_AREAS]; + int num_areas; // for alias models and skins image_t *skins[MAX_MD2SKINS]; @@ -415,7 +448,7 @@ mtangent_t *tangent; mtangent_t *animatetangent; unsigned char *blendindexes; - float *blendweights; + unsigned char *blendweights; char skinname[MAX_QPATH]; char *jointname; //end iqm @@ -429,15 +462,10 @@ //ragdoll info int hasRagDoll; mragdoll_t ragdoll; - - //vbo - vertCache_t *vbo_st; - vertCache_t *vbo_xyz; - vertCache_t *vbo_color; - vertCache_t *vbo_normals; - vertCache_t *vbo_tangents; - vertCache_t *vbo_shadowxyz; - vertCache_t *vbo_shadowindices; + + //simple item texnum + int simple_texnum; + simplecolor_t simple_color; } model_t; @@ -457,4 +485,4 @@ void Hunk_Free (void *base); void Mod_Free (model_t *mod); -void Mod_FreeAll (void); \ No newline at end of file +void Mod_FreeAll (void); diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_particle.c alien-arena-7.66+dfsg/source/ref_gl/r_particle.c --- alien-arena-7.53+dfsg/source/ref_gl/r_particle.c 2011-12-22 20:26:37.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_particle.c 2013-06-26 15:56:34.000000000 +0000 @@ -34,18 +34,37 @@ =============== */ static float yawOrRoll; +static int compare_particle (const void *_a, const void *_b) +{ + particle_t *a = *(particle_t **)_a; + particle_t *b = *(particle_t **)_b; + if (a->image != NULL && b->image == NULL) + return 1; + if (a->image == NULL && b->image != NULL) + return -1; + if (a->image == NULL && b->image == NULL) + return 0; + if (a->image->texnum != b->image->texnum) + return a->image->texnum-b->image->texnum; + if (a->blendsrc != b->blendsrc) + return a->blendsrc-b->blendsrc; + if (a->blenddst != b->blenddst) + return a->blenddst-b->blenddst; + return 0; +} void PART_DrawParticles( int num_particles, particle_t **particles, const unsigned colortable[768]) { particle_t **p1; particle_t *p; - int i, k; + int i, k, j; vec3_t corner[4], up, right, pup, pright, dir; - float scale, oldscale=0.0f; - byte color[4], oldcolor[4]= {0,0,0,0}; - int oldtype; + float scale; + byte color[4]; + int oldblendsrc = -1, oldblenddst = -1; int texnum=0, blenddst, blendsrc; float *corner0 = corner[0]; vec3_t move, delta, v; + float sh, th, sl, tl; if ( !num_particles ) return; @@ -54,13 +73,32 @@ qglEnable( GL_BLEND); GL_TexEnv( GL_MODULATE ); - R_InitVArrays (VERT_SINGLE_TEXTURED); - - for ( p1 = particles, i=0, oldtype=-1 ; i < num_particles ; i++,p1++) + R_InitVArrays (VERT_COLOURED_TEXTURED); + + qglDisable (GL_CULL_FACE); + + qsort (particles, num_particles, sizeof (particle_t *), compare_particle); + + GL_SelectTexture (GL_TEXTURE0); + // FIXME: OH FFS this is so stupid: tell the GL_Bind batching mechanism + // that texture unit 0 has been re-bound, as it most certainly has been. + gl_state.currenttextures[gl_state.currenttmu] = -1; + + for ( p1 = particles, i=0; i < num_particles ; i++,p1++) { p = *p1; - if( R_CullSphere( p->current_origin, 64, 15 ) ) + if( p->type == PARTICLE_CHAINED && p->chain_prev) + { + vec3_t span, beam_org; + VectorSubtract (p->current_origin, p->chain_prev->current_origin, span); + VectorAdd (p->current_origin, p->chain_prev->current_origin, beam_org); + VectorScale (beam_org, 0.5, beam_org); + VectorScale (span, 0.5, span); + if (R_CullSphere( beam_org, VectorLength (span), 15 ) ) + continue; + } + else if (R_CullSphere( p->current_origin, 64, 15 ) ) continue; if(p->type == PARTICLE_NONE) { @@ -70,45 +108,38 @@ *(int *)color = colortable[p->current_color]; scale = 1; + VectorCopy (vup, up); + VectorCopy (vright, right); } else { - texnum = p->texnum; + if (p->image != NULL) + texnum = p->image->texnum; + else + texnum = 0; blendsrc = p->blendsrc; blenddst = p->blenddst; scale = p->current_scale; + VectorScale (vup, scale, up); + VectorScale (vright, scale, right); *(int *)color = colortable[p->current_color]; } color[3] = p->current_alpha*255; + + GL_Bind (texnum); - if ( - p->type != oldtype - || color[0] != oldcolor[0] || color[1] != oldcolor[1] - || color[2] != oldcolor[2] || color[3] != oldcolor[3] || scale != oldscale) - { - if ( scale != 1 ) - { - VectorScale (vup, scale, up); - VectorScale (vright, scale, right); - } - else - { - VectorCopy (vup, up); - VectorCopy (vright, right); - } - - oldtype = p->type; - oldscale = scale; - oldcolor[3] = color[3]; - VectorCopy ( color, oldcolor ); - - GL_Bind ( texnum ); - qglBlendFunc ( blendsrc, blenddst ); - if(p->type == PARTICLE_RAISEDDECAL) { - qglColor4f(1,1,1,1); - } - else - qglColor4ubv( color ); + if (oldblendsrc != blendsrc || oldblenddst != blenddst) + { + if (oldblendsrc != blendsrc || oldblenddst != blenddst) + qglBlendFunc ( blendsrc, blenddst ); + + oldblendsrc = blendsrc; + oldblenddst = blenddst; + } + + if(p->type == PARTICLE_RAISEDDECAL) { + for (k = 0; k < 4; k++) + color[k] = 255; } if(p->type == PARTICLE_BEAM) { @@ -149,7 +180,13 @@ VectorScale(up, -5*scale, pup); } } - else if(p->type == PARTICLE_WEATHER || p->type == PARTICLE_VERT){ // keep it vertical + else if(p->type == PARTICLE_FLUTTERWEATHER){ + VectorCopy(p->angle, dir); + AngleVectors(dir, NULL, right, up); + VectorScale(right, 3*scale, pright); + VectorScale(up, 3*scale, pup); + } + else if(p->type == PARTICLE_VERT || p->type == PARTICLE_WEATHER){ // keep it vertical VectorCopy(r_newrefdef.viewangles, v); v[0] = 0; // keep weather particles vertical by removing pitch AngleVectors(v, NULL, right, up); @@ -176,51 +213,97 @@ VectorScale ( right, p->dist, pright ); VectorScale ( up, p->dist, pup ); } + + if (p->type == PARTICLE_CHAINED && p->chain_prev) { + particle_t *pr; + vec3_t pspan, prev_pspan; + pr = p->chain_prev; + VectorCopy (p->current_pspan, pspan); + if (pr->type == PARTICLE_CHAINED && pr->chain_prev) + VectorCopy (pr->current_pspan, prev_pspan); + else + VectorCopy (pspan, prev_pspan); + VectorCopy (pspan, pright); + VectorSet ( corner[0], + p->current_origin[0] + pspan[0]*(0.5), + p->current_origin[1] + pspan[1]*(0.5), + p->current_origin[2] + pspan[2]*(0.5)); + VectorSet ( corner[1], + pr->current_origin[0] + prev_pspan[0]*(0.5), + pr->current_origin[1] + prev_pspan[1]*(0.5), + pr->current_origin[2] + prev_pspan[2]*(0.5)); + VectorSet (corner[2], + pr->current_origin[0] + prev_pspan[0]*(-0.5), + pr->current_origin[1] + prev_pspan[1]*(-0.5), + pr->current_origin[2] + prev_pspan[2]*(-0.5)); + VectorSet (corner[3], + p->current_origin[0] + pspan[0]*(-0.5), + p->current_origin[1] + pspan[1]*(-0.5), + p->current_origin[2] + pspan[2]*(-0.5)); + } else { + VectorSet (corner[0], + p->current_origin[0] + (pup[0] + pright[0])*(-0.5), + p->current_origin[1] + (pup[1] + pright[1])*(-0.5), + p->current_origin[2] + (pup[2] + pright[2])*(-0.5)); - VectorSet (corner[0], - p->current_origin[0] + (pup[0] + pright[0])*(-0.5), - p->current_origin[1] + (pup[1] + pright[1])*(-0.5), - p->current_origin[2] + (pup[2] + pright[2])*(-0.5)); - - VectorSet ( corner[1], - corner0[0] + pup[0], corner0[1] + pup[1], corner0[2] + pup[2]); - VectorSet ( corner[2], corner0[0] + (pup[0]+pright[0]), - corner0[1] + (pup[1]+pright[1]), corner0[2] + (pup[2]+pright[2])); - VectorSet ( corner[3], - corner0[0] + pright[0], corner0[1] + pright[1], corner0[2] + pright[2]); + VectorSet ( corner[1], + corner0[0] + pup[0], corner0[1] + pup[1], corner0[2] + pup[2]); + VectorSet ( corner[2], corner0[0] + (pup[0]+pright[0]), + corner0[1] + (pup[1]+pright[1]), corner0[2] + (pup[2]+pright[2])); + VectorSet ( corner[3], + corner0[0] + pright[0], corner0[1] + pright[1], corner0[2] + pright[2]); + } VArray = &VArrayVerts[0]; + + if (p->image != NULL) + { + sh = p->image->sh; + th = p->image->th; + sl = p->image->sl; + tl = p->image->tl; + } + else + { + sh = th = 1; + sl = tl = 0; + } - for(k = 0; k < 4; k++) { - - VArray[0] = corner[k][0]; - VArray[1] = corner[k][1]; - VArray[2] = corner[k][2]; - - switch(k) { - case 0: - VArray[3] = 1; - VArray[4] = 1; - break; - case 1: - VArray[3] = 0; - VArray[4] = 1; - break; - case 2: - VArray[3] = 0; - VArray[4] = 0; - break; - case 3: - VArray[3] = 1; - VArray[4] = 0; - break; - } + for(k = 0; k < 4; k++) + { + VArray[0] = corner[k][0]; + VArray[1] = corner[k][1]; + VArray[2] = corner[k][2]; + + switch(k) { + case 0: + VArray[3] = sh; + VArray[4] = th; + break; + case 1: + VArray[3] = sl; + VArray[4] = th; + break; + case 2: + VArray[3] = sl; + VArray[4] = tl; + break; + case 3: + VArray[3] = sh; + VArray[4] = tl; + break; + } + + for (j = 0; j < 4; j++) + VArray[5+j] = (float)color[j]/255.0f; - VArray += VertexSizes[VERT_SINGLE_TEXTURED]; + VArray += VertexSizes[VERT_COLOURED_TEXTURED]; } - R_DrawVarrays(GL_QUADS, 0, 4, false); - } + R_DrawVarrays(GL_QUADS, 0, 4); + } + + R_KillVArrays (); qglTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); @@ -229,6 +312,7 @@ qglDisable(GL_BLEND); qglDepthMask( GL_TRUE ); // back to normal Z buffering GL_TexEnv( GL_REPLACE ); + qglEnable (GL_CULL_FACE); } /* @@ -251,6 +335,12 @@ } //lens flares +// TODO: flare rendering is actually shockingly slow, and the reason is the +// overhead of each glDrawArrays call. It MIGHT be worth using a variation on +// this method: http://stackoverflow.com/a/1039082 and batching up all flares +// of each texture into a single VArray consisting of vertex and vertex color +// data, with a size attribute, one vertex per flare. This would reduce the +// usage of the PCI bus. void Mod_AddFlareSurface (msurface_t *surf, int type ) { @@ -263,7 +353,10 @@ vec3_t origin = {0,0,0}, color = {1,1,1}, tmp, rgbSum; vec3_t poly_center, mins, maxs, tmp1; - if (surf->texinfo->flags & (SURF_SKY|SURF_TRANS33|SURF_TRANS66|SURF_FLOWING|SURF_DRAWTURB|SURF_WARP)) + if (surf->iflags & ISURF_DRAWTURB) + return; + + if (surf->texinfo->flags & (SURF_SKY|SURF_TRANS33|SURF_TRANS66|SURF_FLOWING|SURF_WARP)) return; if (!(surf->texinfo->flags & (SURF_LIGHT))) @@ -358,7 +451,7 @@ ================================== */ - if (surf->flags & SURF_PLANEBACK) + if (surf->iflags & ISURF_PLANEBACK) VectorNegate(surf->plane->normal, tmp); else VectorCopy(surf->plane->normal, tmp); @@ -367,6 +460,8 @@ VectorCopy(origin, light->origin); light->style = type; + + light->leafnum = CM_PointLeafnum (light->origin); free (buffer); } @@ -376,6 +471,7 @@ vec3_t v, tmp; int j; float dist; + float alpha; unsigned flaretex; if(light->style == 0) @@ -385,48 +481,48 @@ VectorSubtract (light->origin, r_origin, v); dist = VectorLength(v) * (light->size*0.01); - + + // Flares which are very close are too small to see; fade them out as we + // get closer. + alpha = light->alpha; + if (dist < 2.0*light->size) + alpha *= 0.5*(dist-(float)light->size)/(float)light->size; + if (alpha < 0.0) + return; + //limit their size to reasonable. if(dist > 10*light->size) dist = 10*light->size; - R_InitQuadVarrays(); - - qglDisable(GL_DEPTH_TEST); - qglEnable (GL_TEXTURE_2D); - GL_Bind(flaretex); - qglEnableClientState( GL_COLOR_ARRAY ); - GL_TexEnv( GL_MODULATE ); - - VectorScale(light->color, light->alpha, tmp ); - for (j=0; j<4; j++) - VA_SetElem4(col_array[j], tmp[0],tmp[1],tmp[2], 1); - - - VectorMA (light->origin, -1-dist, vup, vert_array[0]); - VectorMA (vert_array[0], 1+dist, vright, vert_array[0]); - VA_SetElem2(tex_array[0], 0, 1); - VectorMA (light->origin, -1-dist, vup, vert_array[1]); VectorMA (vert_array[1], -1-dist, vright, vert_array[1]); - VA_SetElem2(tex_array[1], 0, 0); - - VectorMA (light->origin, 1+dist, vup, vert_array[2]); - VectorMA (vert_array[2], -1-dist, vright, vert_array[2]); - VA_SetElem2(tex_array[2], 1, 0); VectorMA (light->origin, 1+dist, vup, vert_array[3]); VectorMA (vert_array[3], 1+dist, vright, vert_array[3]); - VA_SetElem2(tex_array[3], 1, 1); - - R_DrawVarrays(GL_QUADS, 0 , 4, false); + + if (R_CullBox (vert_array[1], vert_array[3])) + return; + + VectorMA (light->origin, -1-dist, vup, vert_array[0]); + VectorMA (vert_array[0], 1+dist, vright, vert_array[0]); + + VectorMA (light->origin, 1+dist, vup, vert_array[2]); + VectorMA (vert_array[2], -1-dist, vright, vert_array[2]); + + c_flares++; + + GL_Bind(flaretex); + + VectorScale(light->color, alpha, tmp ); + for (j=0; j<4; j++) + VA_SetElem4(col_array[j], tmp[0],tmp[1],tmp[2], 1); - GL_TexEnv( GL_REPLACE ); - qglEnable(GL_DEPTH_TEST); - qglDisable (GL_TEXTURE_2D); - qglDisableClientState(GL_COLOR_ARRAY); + VA_SetElem2(tex_array[0], 0, 1); + VA_SetElem2(tex_array[1], 0, 0); + VA_SetElem2(tex_array[2], 1, 0); + VA_SetElem2(tex_array[3], 1, 1); - R_KillVArrays(); + R_DrawVarrays(GL_QUADS, 0 , 4); } @@ -441,14 +537,19 @@ VectorSet(mins, 0, 0, 0); VectorSet(maxs, 0, 0, 0); - if(!r_lensflare->value) - return; if ( r_newrefdef.rdflags & RDF_NOWORLDMODEL )return; qglDepthMask (0); qglDisable (GL_TEXTURE_2D); qglShadeModel (GL_SMOOTH); qglEnable (GL_BLEND); qglBlendFunc (GL_SRC_ALPHA, GL_ONE); + + R_InitQuadVarrays(); + + qglDisable(GL_DEPTH_TEST); + qglEnable (GL_TEXTURE_2D); + qglEnableClientState( GL_COLOR_ARRAY ); + GL_TexEnv( GL_MODULATE ); l = r_flares; for (i=0; itime > 0.02){ + if (!CM_inPVS_leafs (r_origin_leafnum, l->leafnum)) + continue; + r_trace = CM_BoxTrace(r_origin, l->origin, mins, maxs, r_worldmodel->firstnode, MASK_VISIBILILITY); visible = r_trace.fraction == 1.0; @@ -473,9 +577,16 @@ if (l->alpha > 0) { PART_RenderFlare (l); - c_flares++; } } + + GL_TexEnv( GL_REPLACE ); + qglEnable(GL_DEPTH_TEST); + qglDisable (GL_TEXTURE_2D); + qglDisableClientState(GL_COLOR_ARRAY); + + R_KillVArrays(); + qglColor3f (1,1,1); qglDisable (GL_BLEND); qglEnable (GL_TEXTURE_2D); @@ -542,8 +653,6 @@ } -float sun_time = 0; -float sun_alpha = 0; void R_InitSun() { draw_sun = false; @@ -567,11 +676,12 @@ } -void PART_RenderSunFlare(image_t * tex, float offset, float size, float r, +void PART_RenderSunFlare(image_t * tex, float offset, float radius, float r, float g, float b, float alpha) { float minx, miny, maxx, maxy; - float new_x, new_y, corr; + float new_x, new_y; + float diameter = 2.0*radius; qglColor4f(r, g, b, alpha); GL_Bind(tex->texnum); @@ -584,28 +694,55 @@ new_y = sun_y; } - corr = 1; - - minx = new_x - size * corr; - miny = new_y - size; - maxx = new_x + size * corr; - maxy = new_y + size; - - qglBegin(GL_QUADS); - qglTexCoord2f(0, 0); - qglVertex2f(minx, miny); - qglTexCoord2f(1, 0); - qglVertex2f(maxx, miny); - qglTexCoord2f(1, 1); - qglVertex2f(maxx, maxy); - qglTexCoord2f(0, 1); - qglVertex2f(minx, maxy); - qglEnd(); + + minx = new_x - radius; + miny = new_y - radius; + maxx = new_x + radius; + maxy = new_y + radius; + + if (r_test->integer && false) + { + // TODO: add an alpha channel to gfx/sun.jpg (will require converting + // to TGA) because otherwise this code makes no difference. + + minx += diameter * (float)tex->crop_left / (float)tex->upload_width; + miny += diameter * (float)tex->crop_top / (float)tex->upload_height; + maxx = minx + diameter * (float)tex->crop_width / (float)tex->upload_width; + maxy = miny + diameter * (float)tex->crop_height / (float)tex->upload_height; + + qglBegin(GL_QUADS); + qglTexCoord2f(tex->crop_sl, tex->crop_tl); + qglVertex2f(minx, miny); + qglTexCoord2f(tex->crop_sh, tex->crop_tl); + qglVertex2f(maxx, miny); + qglTexCoord2f(tex->crop_sh, tex->crop_th); + qglVertex2f(maxx, maxy); + qglTexCoord2f(tex->crop_sl, tex->crop_th); + qglVertex2f(minx, maxy); + qglEnd(); + } + else + { + qglBegin(GL_QUADS); + qglTexCoord2f(0, 0); + qglVertex2f(minx, miny); + qglTexCoord2f(1, 0); + qglVertex2f(maxx, miny); + qglTexCoord2f(1, 1); + qglVertex2f(maxx, maxy); + qglTexCoord2f(0, 1); + qglVertex2f(minx, maxy); + qglEnd(); + } } +float sun_alpha = 0; void R_RenderSun() { - float l, hx, hy; + static float l; + static float sun_vistest_time = 0; + static float sun_ramp_time = 0; + float hx, hy; float vec[2]; float size; @@ -618,21 +755,32 @@ if (r_newrefdef.rdflags & RDF_NOWORLDMODEL) return; - qglReadPixels(sun_x, r_newrefdef.height - sun_y, 1, 1, - GL_DEPTH_COMPONENT, GL_FLOAT, &l); + // The sun is only visible if a single pixel at sun_x, sun_y is not + // covered by anything. Just like lens flares, we ramp the opacity up and + // down linearly to smooth out transitions. Since glReadPixels is + // expensive, we only test visibility every SUN_VIS_TEST_PERIOD seconds, + // but to keep the opacity animation smooth, we do that every frame. + + #define SUN_VIS_TEST_PERIOD 0.1 + #define SUN_ALPHA_RAMP_PER_SECOND 7.5 + #define SUN_ALPHA_RAMP_PER_FRAME (SUN_ALPHA_RAMP_PER_SECOND*(rs_realtime-sun_ramp_time)) // periodically test visibility to ramp alpha - if(rs_realtime - sun_time > 0.02) { - - sun_alpha += (l == 1.0 ? 0.15 : -0.15); // ramp - - if(sun_alpha > 1.0) // clamp - sun_alpha = 1.0; - else if(sun_alpha < 0) - sun_alpha = 0.0; - - sun_time = rs_realtime; - } + if(rs_realtime - sun_vistest_time > SUN_VIS_TEST_PERIOD) + { + qglReadPixels ( sun_x, r_newrefdef.height - sun_y, 1, 1, + GL_DEPTH_COMPONENT, GL_FLOAT, &l); + sun_vistest_time = rs_realtime; + } + + // ramp opacity up or down each frame + sun_alpha += (l == 1.0 ? 1.0 : -1.0)*SUN_ALPHA_RAMP_PER_FRAME; + sun_ramp_time = rs_realtime; + + if(sun_alpha > 1.0) // clamp + sun_alpha = 1.0; + else if(sun_alpha < 0) + sun_alpha = 0.0; if (sun_alpha > 0) { @@ -641,7 +789,6 @@ hy = r_newrefdef.height / 2; vec[0] = 1 - fabs(sun_x - hx) / hx; vec[1] = 1 - fabs(sun_y - hy) / hy; - l = 3 * vec[0] * vec[1] + 0.25; // set 2d qglMatrixMode(GL_PROJECTION); @@ -710,7 +857,7 @@ VectorMA(origin, -32*frand(), tangent, origin); - if (surf->flags & SURF_PLANEBACK) + if (surf->iflags & ISURF_PLANEBACK) VectorNegate(surf->plane->normal, tmp); else VectorCopy(surf->plane->normal, tmp); @@ -731,13 +878,78 @@ grass->size = size; strcpy(grass->name, name); grass->type = type; + + grass->leafnum = CM_PointLeafnum (grass->origin); if(grass->type == 1) r_hasleaves = true; } +// Mark any vegetation sprites that can cast shadows in sunlight, and get +// static light levels. +void R_FinalizeGrass(model_t *mod) +{ + vec3_t origin, orig2, mins, maxs; + trace_t r_trace; + grass_t *grass; + int i; + model_t *old; + + grass = r_grasses; + + VectorSet (mins, 0, 0, 0); + VectorSet (maxs, 0, 0, 0); + + old = r_worldmodel; + + for (i=0; iorigin, origin); + if (grass->type == 0) + origin[2] += (grass->texsize/32) * grass->size; + // XXX: HACK! + r_worldmodel = mod; + R_StaticLightPoint (origin, grass->static_light); + r_worldmodel = old; + + if (grass->type == 0) + { + grass->sunVisible = false; + continue; //only deal with leaves, grass shadows look kind of bad + } + + //cull for pathline to sunlight + VectorCopy (grass->origin, orig2); + orig2[2] += (grass->texsize/32) * grass->size; + r_trace = CM_BoxTrace(r_sunLight->origin, orig2, maxs, mins, mod->firstnode, MASK_VISIBILILITY); + grass->sunVisible = r_trace.fraction == 1.0; + } +} + //rendering +int compare_grass (void const *_a, void const *_b) +{ + vec3_t dist; + int distA, distB; + + grass_t a = *(grass_t *)_a; + grass_t b = *(grass_t *)_b; + + VectorSubtract(a.origin, r_origin, dist); + distA = VectorLength(dist); + VectorSubtract(b.origin, r_origin, dist); + distB = VectorLength(dist); + + if (distA > distB) + return -1; + else if (distA < distB) + return 1; + + return 0; +} +static int g_lastGSort = 0; void R_DrawVegetationSurface ( void ) { int i, k; @@ -753,7 +965,16 @@ if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) return; - + + //sort the grasses from furthest to closest(we can safely do this every 3/4 second + //instead of every frame since our POV shouldn't change that drastically enough + //to create artifacts. Grasses must be sorted to prevent major artifacting. + if(g_lastGSort < Sys_Milliseconds() - 750) + { + qsort( r_grasses, r_numgrasses, sizeof( r_grasses[0] ), compare_grass ); + g_lastGSort = Sys_Milliseconds(); + } + grass = r_grasses; VectorSet(mins, 0, 0, 0); @@ -762,8 +983,7 @@ qglDepthMask( GL_FALSE ); qglEnable( GL_BLEND); qglBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); - qglTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST ); - qglTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST ); + GL_Bind (0); GL_TexEnv( GL_MODULATE ); for (i=0; isize; - if(grass->type) - gCount = 1; - else - qglDisable( GL_CULL_FACE ); - - //the next two statements create a slight swaying in the wind - //perhaps we should add a parameter to control ammount in shader? + VectorCopy(grass->origin, origin); if(grass->type) + { sway = 3; - else - sway = 2; - - VectorCopy(grass->origin, origin); + gCount = 1; - // adjust vertical position, scaled - origin[2] += (grass->texsize/32) * grass->size; - - if(!grass->type) - { - r_trace = CM_BoxTrace(r_origin, origin, maxs, mins, r_worldmodel->firstnode, MASK_VISIBILILITY); - visible = r_trace.fraction == 1.0; + visible = true; //leaves tend to use much larger images, culling results in undesired effects } else - visible = true; //leaves tend to use much larger images, culling results in undesired effects + { + sway = 2; + qglDisable( GL_CULL_FACE ); + + // adjust vertical position, scaled + origin[2] += (grass->texsize/32) * grass->size; + + visible = CM_inPVS_leafs (r_origin_leafnum, grass->leafnum); + if (visible) + { + r_trace = CM_BoxTrace(r_origin, origin, maxs, mins, r_worldmodel->firstnode, MASK_VISIBILILITY); + visible = r_trace.fraction == 1.0; + } + } if(visible) { GL_Bind(grass->texnum); - - if(gl_dynamic->value) - R_LightPoint (origin, lightLevel, true); + + if(gl_dynamic->integer) + R_DynamicLightPoint (origin, lightLevel); else - R_LightPoint (origin, lightLevel, false); + VectorClear (lightLevel); + VectorAdd (grass->static_light, lightLevel, lightLevel); + VectorScale(lightLevel, 2.0, lightLevel); qglColor4f( grass->color[0]*(lightLevel[0]+0.1),grass->color[1]*(lightLevel[1]+0.1),grass->color[2]*(lightLevel[2]+0.1), 1 ); - VectorCopy(r_newrefdef.viewangles, angle); + if(grass->type) + VectorCopy(r_newrefdef.viewangles, angle); + else + VectorSet(angle, 0, 0, 0); for(ng = 0; ng < gCount; ng ++) { - if(!grass->type) - angle[0] = 0; // keep vertical by removing pitch(grass and plants grow upwards) - AngleVectors(angle, NULL, right, up); VectorScale(right, scale, right); VectorScale(up, scale, up); @@ -879,14 +1100,12 @@ c_grasses++; - R_DrawVarrays(GL_QUADS, 0, va, false); + R_DrawVarrays(GL_QUADS, 0, va); R_KillVArrays (); } } - - qglTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - qglBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); + qglColor4f( 1,1,1,1 ); qglDisable(GL_BLEND); qglDepthMask( GL_TRUE ); @@ -952,7 +1171,7 @@ VectorNormalize(tangent); VectorNormalize(binormal); - if (surf->flags & SURF_PLANEBACK) + if (surf->iflags & ISURF_PLANEBACK) VectorNegate(surf->plane->normal, tmp); else VectorCopy(surf->plane->normal, tmp); @@ -976,33 +1195,84 @@ beam->xang = xang; beam->yang = yang; beam->rotating = rotating; + beam->leafnum = 0; + + if (!beam->rotating) + { + vec3_t start, end; + double maxang; + float movdir; + + if(fabs(beam->xang) > fabs(beam->yang)) + maxang = beam->xang; + else + maxang = beam->yang; + + if(maxang >= 0.0) + movdir = 1.0; + else + movdir = 0; + + VectorCopy(beam->origin, start); + if(!beam->type) + start[2] -= (2.5 - (10.0*maxang))*beam->size*movdir; + else + start[2] += (2.5 - (10.0*maxang))*beam->size*movdir; + + VectorCopy(start, end); + if(!beam->type) + end[2] -= (2.5 + pow(fabs(maxang),2)*10)*beam->size; + else + end[2] += (2.5 + pow(fabs(maxang),2)*10)*beam->size; + + end[0] += (pow(fabs(maxang*10), 3)*beam->xang)*beam->size; //angle in rads + end[1] += (pow(fabs(maxang*10), 3)*beam->yang)*beam->size; + + beam->leafnum = CM_PointLeafnum (start); + beam->leafnum2 = CM_PointLeafnum (end); + if (beam->leafnum == beam->leafnum2) + beam->leafnum2 = 0; + } } //Rendering void R_DrawBeamSurface ( void ) { - int i, k; + int i, j, k; beam_t *beam; double scale, maxang; - vec3_t start, end, mins, maxs, angle, right, up, move, delta, vec, corner[4]; + vec3_t start, end, mins, maxs, angle, right, up, delta, corner[4]; float *corner0 = corner[0]; qboolean visible; trace_t r_trace; + vec3_t absmins, absmaxs; if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) return; - + beam = r_beams; VectorSet(mins, 32, 32, 64); VectorSet(maxs, -32, -32, -64); R_InitVArrays (VERT_SINGLE_TEXTURED); + qglDepthMask( GL_FALSE ); + qglEnable( GL_BLEND); + qglBlendFunc (GL_SRC_ALPHA, GL_ONE); + GL_TexEnv( GL_MODULATE ); for (i=0; ileafnum && beam->leafnum2 && + !CM_inPVS_leafs (r_origin_leafnum, beam->leafnum) && + !CM_inPVS_leafs (r_origin_leafnum, beam->leafnum2)) + continue; + if ( beam->leafnum && !beam->leafnum2 && + !CM_inPVS_leafs (r_origin_leafnum, beam->leafnum)) + continue; + scale = 10.0*beam->size; if(fabs(beam->xang) > fabs(beam->yang)) @@ -1040,18 +1310,16 @@ end[1] += (pow(fabs(maxang*10), 3)*beam->yang)*beam->size; } - VectorSubtract(end, start, vec); + VectorSubtract(end, start, up); if(!beam->type) - VectorScale(vec, beam->size, vec); + VectorScale(up, -beam->size, up); else - VectorScale(vec, -beam->size, vec); + VectorScale(up, beam->size, up); - VectorAdd(start, vec, angle); - - VectorSubtract(start, angle, move); - VectorNormalize(move); + VectorAdd(start, up, angle); + + VectorNormalize(up); - VectorCopy(move, up); VectorSubtract(r_newrefdef.vieworg, angle, delta); CrossProduct(up, delta, right); VectorNormalize(right); @@ -1059,41 +1327,54 @@ VectorScale(right, scale, right); VectorScale(up, scale, up); + VectorCopy (beam->origin, absmins); + VectorCopy (beam->origin, absmaxs); + + VectorSet (corner[0], + end[0] + (up[0] + right[0])*(-0.5), + end[1] + (up[1] + right[1])*(-0.5), + end[2] + (up[2] + right[2])*(-0.5)); + + VectorSet ( corner[1], + corner0[0] + up[0], + corner0[1] + up[1], + corner0[2] + up[2]); + + VectorSet ( corner[2], + corner0[0] + (up[0]+right[0]), + corner0[1] + (up[1]+right[1]), + corner0[2] + (up[2]+right[2])); + + VectorSet ( corner[3], + corner0[0] + right[0], + corner0[1] + right[1], + corner0[2] + right[2]); + + for (j = 0; j < 4; j++) + { + for (k = 0; k < 3; k++) + { + if (corner[j][k] < absmins[k]) + absmins[k] = corner[j][k]; + else if (corner[j][k] > absmaxs[k]) + absmaxs[k] = corner[j][k]; + } + } + + if (R_CullBox (absmins, absmaxs)) + continue; + + // TODO: establish if we should even be using CM_BoxTrace at all-- + // performance-wise it's very bad to use it a lot. r_trace = CM_BoxTrace(r_origin, beam->origin, mins, maxs, r_worldmodel->firstnode, MASK_VISIBILILITY); visible = r_trace.fraction == 1.0; - + if(visible) { - //render polygon - qglDepthMask( GL_FALSE ); - qglEnable( GL_BLEND); - qglBlendFunc (GL_SRC_ALPHA, GL_ONE); - qglColor4f( beam->color[0],beam->color[1],beam->color[2], 1 ); - GL_TexEnv( GL_MODULATE ); GL_Bind(beam->texnum); - VectorSet (corner[0], - end[0] + (up[0] + right[0])*(-0.5), - end[1] + (up[1] + right[1])*(-0.5), - end[2] + (up[2] + right[2])*(-0.5)); - - VectorSet ( corner[1], - corner0[0] + up[0], - corner0[1] + up[1], - corner0[2] + up[2]); - - VectorSet ( corner[2], - corner0[0] + (up[0]+right[0]), - corner0[1] + (up[1]+right[1]), - corner0[2] + (up[2]+right[2])); - - VectorSet ( corner[3], - corner0[0] + right[0], - corner0[1] + right[1], - corner0[2] + right[2]); - VArray = &VArrayVerts[0]; for(k = 0; k < 4; k++) { @@ -1124,7 +1405,7 @@ VArray += VertexSizes[VERT_SINGLE_TEXTURED]; } - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); c_beams++; } @@ -1144,4 +1425,357 @@ { memset(r_beams, 0, sizeof(r_beams)); r_numbeams = 0; -} \ No newline at end of file +} + +//Simple items + +//simple item images +image_t *s_item0; +image_t *s_item1; +image_t *s_item2; +image_t *s_item3; +image_t *s_item4; +image_t *s_item5; +image_t *s_item6; +image_t *s_item7; +image_t *s_item8; +image_t *s_item9; +image_t *s_item10; +image_t *s_item11; +image_t *s_item12; +image_t *s_item13; +image_t *s_item14; +image_t *s_item17; +image_t *s_item18; +image_t *s_item19; +image_t *s_item20; +image_t *s_item21; +image_t *s_item22; +image_t *s_item23; +image_t *s_item24; + +extern int gl_filter_max; +void R_SI_InitTextures( void ) +{ + byte nullpic[16][16][4]; + int x, y; + + // + // blank texture + // + for (x = 0 ; x < 16 ; x++) + { + for (y = 0 ; y < 16 ; y++) + { + nullpic[y][x][0] = 255; + nullpic[y][x][1] = 255; + nullpic[y][x][2] = 255; + nullpic[y][x][3] = 255; + } + } + +#define R_SI_InitTexture(itemnum,imgname) \ + /* load the texture */ \ + s_item ## itemnum = GL_FindImage ("pics/" #imgname ".tga,", it_pic);\ + /* load a blank texture if it isn't found */ \ + if (!s_item ## itemnum) \ + s_item ## itemnum = GL_LoadPic ("***s_item" #itemnum "***", (byte *)nullpic, 16, 16, it_pic, 32); \ + /* Disable more than one mipmap level. FIXME: improve mushy mipmap + * detection so this isn't necessary. + */ \ + GL_Bind(s_item ## itemnum ->texnum); \ + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAX_LEVEL, 1); + + R_SI_InitTexture (0, w_sshotgun); + R_SI_InitTexture (1, w_railgun); + R_SI_InitTexture (2, w_chaingun); + R_SI_InitTexture (3, w_rlauncher); + R_SI_InitTexture (4, w_shotgun); + R_SI_InitTexture (5, p_haste); + R_SI_InitTexture (6, p_invulnerability); + R_SI_InitTexture (7, p_quad); + R_SI_InitTexture (8, p_sproing); + R_SI_InitTexture (9, p_adrenaline); + R_SI_InitTexture (10, p_shard); + R_SI_InitTexture (11, p_jacket); + R_SI_InitTexture (12, p_combat); + R_SI_InitTexture (13, p_body); + R_SI_InitTexture (14, p_health); + R_SI_InitTexture (17, i_beamgun); + R_SI_InitTexture (18, i_vaporizer); + R_SI_InitTexture (19, i_disruptor); + R_SI_InitTexture (20, i_flamegun); + R_SI_InitTexture (21, i_smartgun); + R_SI_InitTexture (22, i_chaingun); + R_SI_InitTexture (23, i_rocketlauncher); + R_SI_InitTexture (24, i_minderaser); +} + +//rendering +extern cvar_t *cl_simpleitems; +void R_DrawSimpleItems ( void ) +{ + int i, k; + float scale; + vec3_t origin, mins, maxs, angle, right, up, corner[4]; + float *corner0 = corner[0]; + qboolean visible; + trace_t r_trace; + + if (!cl_simpleitems->integer) + return; + + if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) + return; + + VectorSet(mins, 0, 0, 0); + VectorSet(maxs, 0, 0, 0); + + qglEnable( GL_BLEND); + qglBlendFunc ( GL_ONE, GL_ONE_MINUS_SRC_ALPHA ); + GL_Bind (0); + qglTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST ); + qglTexParameteri( GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST ); + GL_TexEnv( GL_MODULATE ); + + qglDepthMask( GL_TRUE ); + GLSTATE_ENABLE_ALPHATEST + + + for (i=0 ; imodel || !currententity->model->simple_texnum) + continue; + currentmodel = currententity->model; + + R_InitVArrays (VERT_SINGLE_TEXTURED); + VArray = &VArrayVerts[0]; + + VectorCopy(currententity->origin, origin); + + //PVS checking is not necessary; the server already does that for + //entities. + r_trace = CM_BoxTrace(r_origin, origin, maxs, mins, r_worldmodel->firstnode, MASK_VISIBILILITY); + visible = r_trace.fraction == 1.0; + + if(visible) + { + GL_Bind (currentmodel->simple_texnum); + switch (currentmodel->simple_color) + { + case simplecolor_white: + qglColor4f( 1, 1, 1, 1 ); //uses texture for color unless specified + break; + case simplecolor_green: + qglColor4f( 0, 1, 0, 1 ); + break; + case simplecolor_blue: + qglColor4f( 0, .3, 1, 1 ); + break; + case simplecolor_purple: + qglColor4f( 1, 0, 1, 1 ); + break; + } + if ( (currentmodel->simple_texnum == s_item17->texnum) || + (currentmodel->simple_texnum == s_item18->texnum) || + (currentmodel->simple_texnum == s_item19->texnum) || + (currentmodel->simple_texnum == s_item20->texnum) || + (currentmodel->simple_texnum == s_item21->texnum) || + (currentmodel->simple_texnum == s_item22->texnum) || + (currentmodel->simple_texnum == s_item23->texnum) || + (currentmodel->simple_texnum == s_item24->texnum)) + { + scale = 40.0; + } + else + { + scale = 20.0; + } + + VectorCopy(r_newrefdef.viewangles, angle); + + angle[0] = 0; // keep vertical by removing pitch + + AngleVectors(angle, NULL, right, up); + VectorScale(right, scale, right); + VectorScale(up, scale, up); + + //render polygon + + VectorSet (corner[0], + origin[0] + (up[0] + right[0])*(-0.5), + origin[1] + (up[1] + right[1])*(-0.5), + origin[2] + (up[2] + right[2])*(-0.5)); + + VectorSet ( corner[1], + corner0[0] + up[0], + corner0[1] + up[1], + corner0[2] + up[2]); + + VectorSet ( corner[2], + corner0[0] + (up[0]+right[0]), + corner0[1] + (up[1]+right[1]), + corner0[2] + (up[2]+right[2])); + + VectorSet ( corner[3], + corner0[0] + right[0], + corner0[1] + right[1], + corner0[2] + right[2]); + + for(k = 0; k < 4; k++) + { + VArray[0] = corner[k][0]; + VArray[1] = corner[k][1]; + VArray[2] = corner[k][2]; + switch(k) + { + + case 0: + VArray[3] = 0; + VArray[4] = 1; + break; + case 1: + VArray[3] = 0; + VArray[4] = 0; + break; + case 2: + VArray[3] = 1; + VArray[4] = 0; + break; + case 3: + VArray[3] = 1; + VArray[4] = 1; + break; + } + + VArray += VertexSizes[VERT_SINGLE_TEXTURED]; + va++; + } + + R_DrawVarrays(GL_QUADS, 0, va); + + R_KillVArrays (); + } + } + + qglBlendFunc ( GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA ); + qglDisable(GL_BLEND); + GLSTATE_DISABLE_ALPHATEST + qglTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); + GL_TexEnv( GL_REPLACE ); +} + +void R_SetSimpleTexnum (model_t *loadmodel, const char *pathname) +{ + loadmodel->simple_texnum = 0; + loadmodel->simple_color = simplecolor_white; + if (!Q_strcasecmp (pathname, "models/items/ammo/bullets/medium/tris.md2")) + { + loadmodel->simple_texnum = s_item0->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/ammo/cells/medium/tris.md2")) + { + loadmodel->simple_texnum = s_item1->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/ammo/grenades/medium/tris.md2")) + { + loadmodel->simple_texnum = s_item2->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/ammo/rockets/medium/tris.md2")) + { + loadmodel->simple_texnum = s_item3->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/ammo/shells/medium/tris.md2")) + { + loadmodel->simple_texnum = s_item4->texnum; + } + //powerups + else if (!Q_strcasecmp (pathname, "models/items/haste/tris.md2")) + { + loadmodel->simple_texnum = s_item5->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/invulner/tris.md2")) + { + loadmodel->simple_texnum = s_item6->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/quaddama/tris.md2")) + { + loadmodel->simple_texnum = s_item7->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/sproing/tris.md2")) + { + loadmodel->simple_texnum = s_item8->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/adrenaline/tris.md2")) + { + loadmodel->simple_texnum = s_item9->texnum; + } + //armor + else if (!Q_strcasecmp (pathname, "models/items/armor/shard/tris.md2")) + { + loadmodel->simple_texnum = s_item10->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/armor/jacket/tris.md2")) + { + loadmodel->simple_texnum = s_item11->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/armor/combat/tris.md2")) + { + loadmodel->simple_texnum = s_item12->texnum; + } + else if (!Q_strcasecmp (pathname, "models/items/armor/body/tris.md2")) + { + loadmodel->simple_texnum = s_item13->texnum; + } + //health + else if (!Q_strcasecmp (pathname, "models/items/healing/small/tris.md2")) + { + loadmodel->simple_texnum = s_item14->texnum; + loadmodel->simple_color = simplecolor_green; + } + else if (!Q_strcasecmp (pathname, "models/items/healing/medium/tris.md2")) + { + loadmodel->simple_texnum = s_item14->texnum; + loadmodel->simple_color = simplecolor_blue; + } + else if (!Q_strcasecmp (pathname, "models/items/healing/large/tris.md2")) + { + loadmodel->simple_texnum = s_item14->texnum; + loadmodel->simple_color = simplecolor_purple; + } + //weapons + else if (!Q_strcasecmp (pathname, "models/weapons/g_rail/tris.md2")) + { + loadmodel->simple_texnum = s_item17->texnum; + } + else if (!Q_strcasecmp (pathname, "models/weapons/g_bfg/tris.md2")) + { + loadmodel->simple_texnum = s_item18->texnum; + } + else if (!Q_strcasecmp (pathname, "models/weapons/g_hyperb/tris.md2")) + { + loadmodel->simple_texnum = s_item19->texnum; + } + else if (!Q_strcasecmp (pathname, "models/weapons/g_chain/tris.md2")) + { + loadmodel->simple_texnum = s_item20->texnum; + } + else if (!Q_strcasecmp (pathname, "models/weapons/g_shotg/tris.md2")) + { + loadmodel->simple_texnum = s_item21->texnum; + } + else if (!Q_strcasecmp (pathname, "models/weapons/g_shotg2/tris.md2")) + { + loadmodel->simple_texnum = s_item22->texnum; + } + else if (!Q_strcasecmp (pathname, "models/weapons/g_rocket/tris.md2")) + { + loadmodel->simple_texnum = s_item23->texnum; + } + else if (!Q_strcasecmp (pathname, "models/weapons/g_minderaser/tris.md2")) + { + loadmodel->simple_texnum = s_item24->texnum; + } +} diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_postprocess.c alien-arena-7.66+dfsg/source/ref_gl/r_postprocess.c --- alien-arena-7.53+dfsg/source/ref_gl/r_postprocess.c 2011-12-22 20:26:37.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_postprocess.c 2013-06-26 15:56:34.000000000 +0000 @@ -34,6 +34,9 @@ image_t *r_framebuffer; image_t *r_distortwave; +image_t *r_droplets; +image_t *r_blooddroplets; +image_t *r_blooddroplets_nm; vec3_t r_explosionOrigin; int r_drawing_fbeffect; @@ -41,7 +44,9 @@ float r_fbeffectTime; int frames; -void R_GLSLPostProcess(void) +extern cvar_t *cl_raindist; + +void R_GLSLDistortion(void) { vec2_t fxScreenPos; int offsetX, offsetY; @@ -51,7 +56,7 @@ trace_t r_trace; float hScissor, wScissor; - if(!gl_glsl_postprocess->value || !gl_glsl_shaders->value || vid.width > 2048 || !gl_state.glsl_shaders) + if(!gl_glsl_shaders->integer || vid.width > 2048 || !gl_state.glsl_shaders) return; if(r_fbFxType == EXPLOSION) @@ -142,16 +147,14 @@ qglActiveTextureARB(GL_TEXTURE1); qglBindTexture (GL_TEXTURE_2D,r_framebuffer->texnum); glUniform1iARB( g_location_framebuffTex, 1); - KillFlags |= KILL_TMU0_POINTER; + KillFlags |= KILL_TMU1_POINTER; qglActiveTextureARB(GL_TEXTURE0); if(r_distortwave) qglBindTexture(GL_TEXTURE_2D, r_distortwave->texnum); glUniform1iARB( g_location_distortTex, 0); - KillFlags |= KILL_TMU1_POINTER; - - qglActiveTextureARB(GL_TEXTURE0); + KillFlags |= KILL_TMU0_POINTER; glUniform2fARB( g_location_dParams, wScissor, hScissor); @@ -170,7 +173,7 @@ fxScreenPos[1] -= (float)frames*.001; glUniform2fARB( g_location_fxPos, fxScreenPos[0], fxScreenPos[1]); - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); glUseProgramObjectARB( 0 ); } @@ -189,7 +192,7 @@ glUniform3fARB( g_location_rparams, viddef.width/2.0, viddef.height/2.0, 0.25); - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); glUseProgramObjectARB( 0 ); } @@ -205,6 +208,105 @@ return; } +void R_GLSLWaterDroplets(void) +{ + int offsetX, offsetY; + float hScissor, wScissor; + trace_t tr; + vec3_t end; + static float r_drTime; + + if(!(r_weather == 1) || !cl_raindist->integer || !gl_glsl_shaders->integer || vid.width > 2048 || !gl_state.glsl_shaders) + return; + + VectorCopy(r_newrefdef.vieworg, end); + end[2] += 8192; + + // trace up looking for sky + tr = CM_BoxTrace(r_newrefdef.vieworg, end, vec3_origin, vec3_origin, 0, MASK_SHOT); + + if((tr.surface->flags & SURF_SKY)) + { + r_drTime = rs_realtime; + } + + if(rs_realtime - r_drTime > 0.5) + return; //been out of the rain long enough for effect to dry up + + //set up full screen workspace + qglViewport( 0, 0, viddef.width, viddef.height ); + qglDisable( GL_DEPTH_TEST ); + qglMatrixMode( GL_PROJECTION ); + qglLoadIdentity (); + qglOrtho(0, viddef.width, viddef.height, 0, -10, 100); + qglMatrixMode( GL_MODELVIEW ); + qglLoadIdentity (); + qglDisable(GL_CULL_FACE); + + qglDisable( GL_BLEND ); + qglEnable( GL_TEXTURE_2D ); + + qglViewport(0,0,FB_texture_width,FB_texture_height); + + //we need to grab the frame buffer + qglBindTexture(GL_TEXTURE_2D, r_framebuffer->texnum); + qglCopyTexSubImage2D(GL_TEXTURE_2D, 0, + 0, 0, 0, 0, FB_texture_width, FB_texture_height); + + qglViewport(0,0,viddef.width, viddef.height); + + //render quad on screen + + offsetY = viddef.height - FB_texture_height; + offsetX = viddef.width - FB_texture_width; + + hScissor = (float)viddef.height/(float)FB_texture_height; + wScissor = (float)viddef.width/(float)FB_texture_width; + + qglEnableClientState (GL_VERTEX_ARRAY); + qglEnableClientState (GL_TEXTURE_COORD_ARRAY); + + qglTexCoordPointer (2, GL_FLOAT, sizeof(tex_array[0]), tex_array[0]); + qglVertexPointer (2, GL_FLOAT, sizeof(vert_array[0]), vert_array[0]); + qglColorPointer (4, GL_FLOAT, sizeof(col_array[0]), col_array[0]); + + VA_SetElem2(vert_array[0],0, viddef.height); + VA_SetElem2(vert_array[1],viddef.width-offsetX, viddef.height); + VA_SetElem2(vert_array[2],viddef.width-offsetX, offsetY); + VA_SetElem2(vert_array[3],0, offsetY); + + VA_SetElem2(tex_array[0],r_framebuffer->sl, r_framebuffer->tl); + VA_SetElem2(tex_array[1],r_framebuffer->sh, r_framebuffer->tl); + VA_SetElem2(tex_array[2],r_framebuffer->sh, r_framebuffer->th); + VA_SetElem2(tex_array[3],r_framebuffer->sl, r_framebuffer->th); + + //draw water droplets + glUseProgramObjectARB( g_dropletsprogramObj ); //this program will have two or three of the normalmap scrolling over the buffer + + qglActiveTextureARB(GL_TEXTURE1); + qglBindTexture (GL_TEXTURE_2D,r_framebuffer->texnum); + glUniform1iARB( g_location_drSource, 1); + KillFlags |= KILL_TMU1_POINTER; + + qglActiveTextureARB(GL_TEXTURE0); + qglBindTexture(GL_TEXTURE_2D, r_droplets->texnum); + glUniform1iARB( g_location_drTex, 0); + KillFlags |= KILL_TMU0_POINTER; + + glUniform1fARB( g_location_drTime, rs_realtime); + + glUniform2fARB( g_location_drParams, wScissor, hScissor); + + R_DrawVarrays(GL_QUADS, 0, 4); + + glUseProgramObjectARB( 0 ); + + R_KillVArrays(); + + return; +} + + /* ============== R_ShadowBlend @@ -325,7 +427,7 @@ VA_SetElem2(tex_array[2],r_colorbuffer->sh, r_colorbuffer->th); VA_SetElem2(tex_array[3],r_colorbuffer->sl, r_colorbuffer->th); - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); //now blur horizontally @@ -350,7 +452,7 @@ VA_SetElem2(tex_array[2],r_colorbuffer->sh, r_colorbuffer->th); VA_SetElem2(tex_array[3],r_colorbuffer->sl, r_colorbuffer->th); - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); R_KillVArrays(); @@ -382,7 +484,22 @@ void R_FB_InitTextures( void ) { byte *data; - int size; + int size, x, y; + byte nullpic[16][16][4]; + + // + // blank texture + // + for (x = 0 ; x < 16 ; x++) + { + for (y = 0 ; y < 16 ; y++) + { + nullpic[y][x][0] = 255; + nullpic[y][x][1] = 255; + nullpic[y][x][2] = 255; + nullpic[y][x][3] = 255; + } + } //find closer power of 2 to screen size for (FB_texture_width = 1;FB_texture_width < viddef.width;FB_texture_width *= 2); @@ -408,8 +525,21 @@ r_colorbuffer = GL_LoadPic( "***r_colorbuffer***", (byte *)data, FB_texture_width, FB_texture_height, it_pic, 3 ); free ( data ); - //init the distortion textures - to do move this to r_misc? - r_distortwave = GL_FindImage("gfx/distortwave.jpg",it_pic); + //init the distortion textures + r_distortwave = GL_FindImage("gfx/distortwave.jpg", it_pic); + if (!r_distortwave) + r_distortwave = GL_LoadPic ("***r_distortwave***", (byte *)nullpic, 16, 16, it_pic, 32); + r_droplets = GL_FindImage("gfx/droplets.jpg", it_pic); + if (!r_droplets) + r_droplets = GL_LoadPic ("***r_droplets***", (byte *)nullpic, 16, 16, it_pic, 32); + + //init gore/blood textures + r_blooddroplets = GL_FindImage("gfx/blooddrops.jpg", it_pic); + if (!r_blooddroplets) + r_blooddroplets = GL_LoadPic ("***r_blooddroplets***", (byte *)nullpic, 16, 16, it_pic, 32); + r_blooddroplets_nm = GL_FindImage("gfx/blooddrops_nm.jpg", it_pic); + if (!r_blooddroplets_nm) + r_blooddroplets_nm = GL_LoadPic ("***r_blooddroplets_nm***", (byte *)nullpic, 16, 16, it_pic, 32); } extern int vehicle_hud; @@ -423,7 +553,7 @@ char shortname[MAX_QPATH]; //draw image over screen - if(!cl_vehicle_huds->value) + if(!cl_vehicle_huds->integer) return; switch(vehicle_hud) @@ -478,12 +608,13 @@ qglMatrixMode( GL_MODELVIEW ); qglLoadIdentity (); - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); COM_StripExtension ( gl->name, shortname ); - rs=RS_FindScript(shortname); - if(r_shaders->value && rs) + rs = gl->script; + + if(r_shaders->integer && rs) { RS_ReadyScript(rs); @@ -543,7 +674,7 @@ qglMatrixMode( GL_MODELVIEW ); qglLoadIdentity (); - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); stage=stage->next; } @@ -595,9 +726,157 @@ qglMatrixMode( GL_MODELVIEW ); qglLoadIdentity (); - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); qglDisable (GL_BLEND); R_KillVArrays(); } + +extern void PART_RenderSunFlare(image_t * tex, float offset, float size, float r, + float g, float b, float alpha); +extern void R_DrawShadowMapWorld (qboolean forEnt, vec3_t origin); +extern void R_DrawVegetationCasters( qboolean forShadows ); +extern float sun_alpha; +extern void MYgluPerspective(GLdouble fovy, GLdouble aspect, GLdouble zNear, GLdouble zFar); +void R_GLSLGodRays(void) +{ + float size, screenaspect; + vec2_t fxScreenPos; + vec3_t origin = {0, 0, 0}; + + if(!r_godrays->integer || !r_drawsun->integer) + return; + + if (!draw_sun || sun_alpha <= 0) + return; + + //switch to fbo + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId[2]); //need color buffer + + qglDisable( GL_DEPTH_TEST ); + qglDepthMask (1); + + qglClear ( GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT | GL_STENCIL_BUFFER_BIT ); + + //render sun object center + qglMatrixMode(GL_PROJECTION); + qglPushMatrix(); + qglLoadIdentity(); + qglOrtho(0, r_newrefdef.width, r_newrefdef.height, 0, -99999, 99999); + qglMatrixMode(GL_MODELVIEW); + qglPushMatrix(); + qglLoadIdentity(); + + size = r_newrefdef.width * sun_size/4.0; + PART_RenderSunFlare(sun2_object, 0, size, 1.0, 1.0, 1.0, 1.0); + + qglPopMatrix(); + qglMatrixMode(GL_PROJECTION); + qglPopMatrix(); + qglLoadIdentity(); + + //render occuders simple, textureless + //need to set up proper matrix for this view! + screenaspect = (float)r_newrefdef.width/(float)r_newrefdef.height; + + if(r_newrefdef.fov_y < 90) + MYgluPerspective (r_newrefdef.fov_y, screenaspect, 4, 128000); + else + MYgluPerspective(r_newrefdef.fov_y, screenaspect, 4 * 74 / r_newrefdef.fov_y, 15000); + + qglMatrixMode(GL_MODELVIEW); + qglLoadIdentity (); + + qglRotatef (-90, 1, 0, 0); // put Z going up + qglRotatef (90, 0, 0, 1); // put Z going up + + qglRotatef (-r_newrefdef.viewangles[2], 1, 0, 0); + qglRotatef (-r_newrefdef.viewangles[0], 0, 1, 0); + qglRotatef (-r_newrefdef.viewangles[1], 0, 0, 1); + qglTranslatef (-r_newrefdef.vieworg[0], -r_newrefdef.vieworg[1], -r_newrefdef.vieworg[2]); + + qglCullFace(GL_FRONT); + if (gl_cull->integer) + qglEnable(GL_CULL_FACE); + + R_DrawShadowMapWorld(false, origin); //could tweak this to only draw surfaces that are in the sun? + R_DrawVegetationCasters(false); + + qglMatrixMode(GL_PROJECTION); + qglPushMatrix(); + qglLoadIdentity(); + qglOrtho(0, r_newrefdef.width, r_newrefdef.height, 0, -99999, 99999); + qglMatrixMode(GL_MODELVIEW); + qglPushMatrix(); + qglLoadIdentity(); + + //glsl the fbo with effect + + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); + + glUseProgramObjectARB( g_godraysprogramObj ); + + qglActiveTextureARB(GL_TEXTURE0); + qglBindTexture(GL_TEXTURE_2D, r_colorbuffer->texnum); + + glUniform1iARB( g_location_sunTex, 0); + + R_TransformVectorToScreen(&r_newrefdef, sun_origin, fxScreenPos); + + fxScreenPos[0] /= viddef.width; + fxScreenPos[1] /= viddef.height; + + glUniform2fARB( g_location_lightPositionOnScreen, fxScreenPos[0], fxScreenPos[1]); + + glUniform1fARB( g_location_godrayScreenAspect, screenaspect); + glUniform1fARB( g_location_sunRadius, sun_size*r_godray_intensity->value); + + //render quad + qglEnable (GL_BLEND); + qglBlendFunc(GL_SRC_ALPHA, GL_ONE); + qglDisable(GL_CULL_FACE); + + qglEnableClientState (GL_VERTEX_ARRAY); + qglEnableClientState (GL_TEXTURE_COORD_ARRAY); + + qglTexCoordPointer (2, GL_FLOAT, sizeof(tex_array[0]), tex_array[0]); + qglVertexPointer (2, GL_FLOAT, sizeof(vert_array[0]), vert_array[0]); + qglColorPointer (4, GL_FLOAT, sizeof(col_array[0]), col_array[0]); + + VA_SetElem2(vert_array[0],0, vid.height); + VA_SetElem2(vert_array[1],vid.width, vid.height); + VA_SetElem2(vert_array[2],vid.width, 0); + VA_SetElem2(vert_array[3],0, 0); + + VA_SetElem2(tex_array[0],r_colorbuffer->sl, r_colorbuffer->tl); + VA_SetElem2(tex_array[1],r_colorbuffer->sh, r_colorbuffer->tl); + VA_SetElem2(tex_array[2],r_colorbuffer->sh, r_colorbuffer->th); + VA_SetElem2(tex_array[3],r_colorbuffer->sl, r_colorbuffer->th); + + R_DrawVarrays(GL_QUADS, 0, 4); + + qglDisable (GL_BLEND); + qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + + R_KillVArrays(); + + glUseProgramObjectARB( 0 ); + + qglPopMatrix(); + qglMatrixMode(GL_PROJECTION); + qglPopMatrix(); + qglMatrixMode(GL_MODELVIEW); +} + +void R_GLSLPostProcess(void) +{ + if(gl_glsl_shaders->integer && gl_state.glsl_shaders) + { + R_GLSLGodRays(); + + R_GLSLWaterDroplets(); + + R_GLSLDistortion(); + } +} diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_program.c alien-arena-7.66+dfsg/source/ref_gl/r_program.c --- alien-arena-7.53+dfsg/source/ref_gl/r_program.c 2011-10-26 04:31:57.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_program.c 2013-06-22 20:07:35.000000000 +0000 @@ -53,17 +53,23 @@ PFNGLUNIFORM1IARBPROC glUniform1iARB = NULL; PFNGLUNIFORM1FARBPROC glUniform1fARB = NULL; PFNGLUNIFORMMATRIX3FVARBPROC glUniformMatrix3fvARB = NULL; +PFNGLUNIFORMMATRIX3X4FVARBPROC glUniformMatrix3x4fvARB = NULL; PFNGLVERTEXATTRIBPOINTERARBPROC glVertexAttribPointerARB = NULL; PFNGLENABLEVERTEXATTRIBARRAYARBPROC glEnableVertexAttribArrayARB = NULL; PFNGLDISABLEVERTEXATTRIBARRAYARBPROC glDisableVertexAttribArrayARB = NULL; PFNGLBINDATTRIBLOCATIONARBPROC glBindAttribLocationARB = NULL; GLhandleARB g_programObj; +GLhandleARB g_shadowprogramObj; GLhandleARB g_waterprogramObj; GLhandleARB g_meshprogramObj; +GLhandleARB g_glassprogramObj; +GLhandleARB g_blankmeshprogramObj; GLhandleARB g_fbprogramObj; GLhandleARB g_blurprogramObj; GLhandleARB g_rblurprogramObj; +GLhandleARB g_dropletsprogramObj; +GLhandleARB g_godraysprogramObj; GLhandleARB g_vertexShader; GLhandleARB g_fragmentShader; @@ -82,16 +88,31 @@ GLuint g_location_dynamic; GLuint g_location_shadowmap; GLuint g_Location_statshadow; +GLuint g_location_xOffs; +GLuint g_location_yOffs; GLuint g_location_lightPosition; GLuint g_location_staticLightPosition; GLuint g_location_lightColour; GLuint g_location_lightCutoffSquared; +GLuint g_location_liquid; +GLuint g_location_shiny; +GLuint g_location_rsTime; +GLuint g_location_liquidTexture; +GLuint g_location_liquidNormTex; +GLuint g_location_chromeTex; + +//shadow on white bsp polys +GLuint g_location_entShadow; +GLuint g_location_fadeShadow; +GLuint g_location_xOffset; +GLuint g_location_yOffset; //water GLuint g_location_baseTexture; GLuint g_location_normTexture; GLuint g_location_refTexture; -GLuint g_location_tangent; +GLuint g_location_waterEyePos; +GLuint g_location_tangentSpaceTransform; GLuint g_location_time; GLuint g_location_lightPos; GLuint g_location_reflect; @@ -103,13 +124,28 @@ GLuint g_location_baseTex; GLuint g_location_normTex; GLuint g_location_fxTex; +GLuint g_location_fx2Tex; GLuint g_location_color; -GLuint g_location_minLight; GLuint g_location_meshNormal; GLuint g_location_meshTime; GLuint g_location_meshFog; GLuint g_location_useFX; GLuint g_location_useGlow; +GLuint g_location_useShell; +GLuint g_location_useCube; +GLuint g_location_useGPUanim; +GLuint g_location_outframe; +GLuint g_location_fromView; + +//glass +GLuint g_location_gmirTexture; +GLuint g_location_grefTexture; +GLuint g_location_gLightPos; +GLuint g_location_gFog; +GLuint g_location_gOutframe; + +//blank mesh +GLuint g_location_bmOutframe; //fullscreen distortion effects GLuint g_location_framebuffTex; @@ -126,6 +162,21 @@ GLuint g_location_rsource; GLuint g_location_rparams; +//water droplets +GLuint g_location_drSource; +GLuint g_location_drTex; +GLuint g_location_drTime; +GLuint g_location_drParams; + +//god rays +GLuint g_location_lightPositionOnScreen; +GLuint g_location_sunTex; +GLuint g_location_godrayScreenAspect; +GLuint g_location_sunRadius; + +//doesn't work with ARB shaders, unfortunately, due to the #comments +#define STRINGIFY(...) #__VA_ARGS__ + static char water_ARB_program[] = "!!ARBfp1.0\n" @@ -260,678 +311,1574 @@ //GLSL Programs //BSP Surfaces -static char bsp_vertex_program[] = -"uniform mat3 tangentSpaceTransform;\n" -"uniform vec3 Eye;\n" -"uniform vec3 lightPosition;\n" -"uniform vec3 staticLightPosition;\n" -"uniform int FOG;\n" - -"varying vec3 EyeDir;\n" -"varying vec3 LightDir;\n" -"varying vec3 StaticLightDir;\n" -"varying vec4 sPos;\n" -"varying float fog;\n" - -"void main( void )\n" -"{\n" -" sPos = gl_Vertex;\n" - -" gl_Position = ftransform();\n" - -" gl_FrontColor = gl_Color;\n" - -" EyeDir = tangentSpaceTransform * ( Eye - gl_Vertex.xyz );\n" -" LightDir = tangentSpaceTransform * (lightPosition - gl_Vertex.xyz);\n" -" StaticLightDir = tangentSpaceTransform * (staticLightPosition - gl_Vertex.xyz);\n" - -" // pass any active texunits through\n" -" gl_TexCoord[0] = gl_MultiTexCoord0;\n" -" gl_TexCoord[1] = gl_MultiTexCoord1;\n" - -" //fog\n" -" if(FOG > 0){\n" -" fog = (gl_Position.z - gl_Fog.start) / (gl_Fog.end - gl_Fog.start);\n" -" fog = clamp(fog, 0.0, 1.0);\n" -" }\n" -"}\n"; - -static char bsp_fragment_program[] = -"uniform sampler2D surfTexture;\n" -"uniform sampler2D HeightTexture;\n" -"uniform sampler2D NormalTexture;\n" -"uniform sampler2D lmTexture;\n" -"uniform sampler2D ShadowMap;\n" -"uniform sampler2D StatShadowMap;\n" -"uniform vec3 lightColour;\n" -"uniform float lightCutoffSquared;\n" -"uniform int FOG;\n" -"uniform int PARALLAX;\n" -"uniform int DYNAMIC;\n" -"uniform int STATSHADOW;\n" -"uniform int SHADOWMAP;\n" - -"varying vec4 sPos;\n" -"varying vec3 EyeDir;\n" -"varying vec3 LightDir;\n" -"varying vec3 StaticLightDir;\n" -"varying float fog;\n" - -"float lookupDynshadow( void )\n" -"{\n" -" vec4 ShadowCoord;\n" -" vec4 shadowCoordinateWdivide;\n" -" float distanceFromLight;\n" -" vec4 tempShadowCoord;\n" -" float shadow1 = 1.0;\n" -" float shadow2 = 1.0;\n" -" float shadow3 = 1.0;\n" -" float shadows = 1.0;\n" - -" if(SHADOWMAP > 0) {\n" - -" ShadowCoord = gl_TextureMatrix[7] * sPos;\n" - -" shadowCoordinateWdivide = ShadowCoord / ShadowCoord.w ;\n" -" // Used to lower moir pattern and self-shadowing\n" -" shadowCoordinateWdivide.z += 0.0005;\n" - -" distanceFromLight = texture2D(ShadowMap,shadowCoordinateWdivide.xy).z;\n" - -" if (ShadowCoord.w > 0.0)\n" -" shadow1 = distanceFromLight < shadowCoordinateWdivide.z ? 0.25 : 1.0 ;\n" - -" //Blur shadows a bit\n" -" tempShadowCoord = ShadowCoord + vec4(.2, 0, 0, 0);\n" -" shadowCoordinateWdivide = tempShadowCoord / tempShadowCoord.w ;\n" -" shadowCoordinateWdivide.z += 0.0005;\n" - -" distanceFromLight = texture2D(ShadowMap,shadowCoordinateWdivide.xy).z;\n" - -" if (ShadowCoord.w > 0.0)\n" -" shadow2 = distanceFromLight < shadowCoordinateWdivide.z ? 0.25 : 1.0 ;\n" - -" tempShadowCoord = ShadowCoord + vec4(0, .2, 0, 0);\n" -" shadowCoordinateWdivide = tempShadowCoord / tempShadowCoord.w ;\n" -" shadowCoordinateWdivide.z += 0.0005;\n" - -" distanceFromLight = texture2D(ShadowMap,shadowCoordinateWdivide.xy).z;\n" - -" if (ShadowCoord.w > 0.0)\n" -" shadow3 = distanceFromLight < shadowCoordinateWdivide.z ? 0.25 : 1.0 ;\n" - -" shadows = 0.33 * (shadow1 + shadow2 + shadow3);\n" - -" }\n" - -" return shadows;\n" -"}\n" - -"float lookupStatshadow( void )\n" -"{\n" -" vec4 ShadowCoord;\n" -" vec4 shadowCoordinateWdivide;\n" -" float distanceFromLight;\n" -" vec4 tempShadowCoord;\n" -" float shadow1 = 1.0;\n" -" float shadow2 = 1.0;\n" -" float shadow3 = 1.0;\n" -" float shadows = 1.0;\n" - -" if(SHADOWMAP > 0) {\n" - -" ShadowCoord = gl_TextureMatrix[6] * sPos;\n" - -" shadowCoordinateWdivide = ShadowCoord / ShadowCoord.w ;\n" -" // Used to lower moir pattern and self-shadowing\n" -" shadowCoordinateWdivide.z += 0.0005;\n" - -" distanceFromLight = texture2D(StatShadowMap,shadowCoordinateWdivide.xy).z;\n" - -" if (ShadowCoord.w > 0.0)\n" -" shadow1 = distanceFromLight < shadowCoordinateWdivide.z ? 0.5 : 1.0 ;\n" - -" //Blur shadows a bit\n" -" tempShadowCoord = ShadowCoord + vec4(.2, 0, 0, 0);\n" -" shadowCoordinateWdivide = tempShadowCoord / tempShadowCoord.w ;\n" -" shadowCoordinateWdivide.z += 0.0005;\n" - -" distanceFromLight = texture2D(StatShadowMap,shadowCoordinateWdivide.xy).z;\n" - -" if (ShadowCoord.w > 0.0)\n" -" shadow2 = distanceFromLight < shadowCoordinateWdivide.z ? 0.5 : 1.0 ;\n" - -" tempShadowCoord = ShadowCoord + vec4(0, .2, 0, 0);\n" -" shadowCoordinateWdivide = tempShadowCoord / tempShadowCoord.w ;\n" -" shadowCoordinateWdivide.z += 0.0005;\n" - -" distanceFromLight = texture2D(StatShadowMap,shadowCoordinateWdivide.xy).z;\n" - -" if (ShadowCoord.w > 0.0)\n" -" shadow3 = distanceFromLight < shadowCoordinateWdivide.z ? 0.5 : 1.0 ;\n" - -" shadows = 0.33 * (shadow1 + shadow2 + shadow3);\n" - -" }\n" - -" return shadows;\n" -"}\n" - -"void main( void )\n" -"{\n" -" vec4 diffuse;\n" -" vec4 lightmap;\n" -" vec4 alphamask;\n" -" float distanceSquared;\n" -" vec3 relativeLightDirection;\n" -" float diffuseTerm;\n" -" vec3 colour;\n" -" vec3 halfAngleVector;\n" -" float specularTerm;\n" -" float swamp;\n" -" float attenuation;\n" -" vec4 litColour;\n" -" vec3 varyingLightColour;\n" -" float varyingLightCutoffSquared;\n" -" float dynshadowval;\n" -" float statshadowval;\n" - -" varyingLightColour = lightColour;\n" -" varyingLightCutoffSquared = lightCutoffSquared;\n" - -" vec3 relativeEyeDirection = normalize( EyeDir );\n" -" vec3 normal = 2.0 * ( texture2D( NormalTexture, gl_TexCoord[0].xy).xyz - vec3( 0.5, 0.5, 0.5 ) );\n" -" vec3 textureColour = texture2D( surfTexture, gl_TexCoord[0].xy ).rgb;\n" - -" lightmap = texture2D( lmTexture, gl_TexCoord[1].st );\n" -" alphamask = texture2D( surfTexture, gl_TexCoord[0].xy );\n" - -" //shadows\n" -" if(DYNAMIC > 0)\n" -" dynshadowval = lookupDynshadow();\n" -" else\n" -" dynshadowval = 0.0;\n" - -" if(STATSHADOW > 0)\n" -" statshadowval = lookupStatshadow();\n" -" else\n" -" statshadowval = 1.0;\n" - -" if(PARALLAX > 0) {\n" -" //do the parallax mapping\n" -" vec4 Offset = texture2D( HeightTexture,gl_TexCoord[0].xy );\n" -" Offset = Offset * 0.04 - 0.02;\n" -" vec2 TexCoords = Offset.xy * relativeEyeDirection.xy + gl_TexCoord[0].xy;\n" - -" diffuse = texture2D( surfTexture, TexCoords );\n" - -" distanceSquared = dot( StaticLightDir, StaticLightDir );\n" -" relativeLightDirection = StaticLightDir / sqrt( distanceSquared );\n" - -" diffuseTerm = clamp( dot( normal, relativeLightDirection ), 0.0, 1.0 );\n" -" colour = vec3( 0.0, 0.0, 0.0 );\n" - -" if( diffuseTerm > 0.0 )\n" -" {\n" -" halfAngleVector = normalize( relativeLightDirection + relativeEyeDirection );\n" - -" specularTerm = clamp( dot( normal, halfAngleVector ), 0.0, 1.0 );\n" -" specularTerm = pow( specularTerm, 32.0 );\n" - -" colour = specularTerm * vec3( 1.0, 1.0, 1.0 ) / 2.0;\n" -" }\n" -" attenuation = 0.25;\n" -" swamp = attenuation;\n" -" swamp *= swamp;\n" -" swamp *= swamp;\n" -" swamp *= swamp;\n" - -" colour += ( ( ( 0.5 - swamp ) * diffuseTerm ) + swamp ) * textureColour * 4.0;\n" - -" litColour = vec4( attenuation * colour, 1.0 );\n" -" litColour = litColour * lightmap * 6.0;\n" -" gl_FragColor = max(litColour, diffuse * lightmap * 2.0);\n" -" gl_FragColor = (gl_FragColor * statshadowval);\n" -" }\n" -" else {\n" -" diffuse = texture2D(surfTexture, gl_TexCoord[0].xy);\n" -" gl_FragColor = (diffuse * lightmap * 2.0);\n" -" gl_FragColor = (gl_FragColor * statshadowval);\n" -" }\n" - -" if(DYNAMIC > 0) {\n" - -" lightmap = texture2D(lmTexture, gl_TexCoord[1].st);\n" - -" //now do the dynamic lighting\n" -" distanceSquared = dot( LightDir, LightDir );\n" -" relativeLightDirection = LightDir / sqrt( distanceSquared );\n" - -" diffuseTerm = clamp( dot( normal, relativeLightDirection ), 0.0, 1.0 );\n" -" colour = vec3( 0.0, 0.0, 0.0 );\n" - -" if( diffuseTerm > 0.0 )\n" -" {\n" -" halfAngleVector = normalize( relativeLightDirection + relativeEyeDirection );\n" - -" float specularTerm = clamp( dot( normal, halfAngleVector ), 0.0, 1.0 );\n" -" specularTerm = pow( specularTerm, 32.0 );\n" - -" colour = specularTerm * vec3( 1.0, 1.0, 1.0 ) / 2.0;\n" -" }\n" - -" attenuation = clamp( 1.0 - ( distanceSquared / varyingLightCutoffSquared ), 0.0, 1.0 );\n" - -" swamp = attenuation;\n" -" swamp *= swamp;\n" -" swamp *= swamp;\n" -" swamp *= swamp;\n" - -" colour += ( ( ( 0.5 - swamp ) * diffuseTerm ) + swamp ) * textureColour * 3.0;\n" - -" vec4 dynamicColour = vec4( attenuation * colour * dynshadowval * varyingLightColour, 1.0 );\n" -" if(PARALLAX > 0) {\n" -" dynamicColour = max(dynamicColour, gl_FragColor);\n" -" }\n" -" else {\n" -" dynamicColour = max(dynamicColour, vec4(textureColour, 1.0) * lightmap * 2.0);\n" -" }\n" -" gl_FragColor = dynamicColour;\n" -" }\n" -" gl_FragColor = mix(vec4(0.0, 0.0, 0.0, alphamask.a), gl_FragColor, alphamask.a);\n" -" if(FOG > 0)\n" -" gl_FragColor = mix(gl_FragColor, gl_Fog.color, fog);\n" -"}\n"; +static char bsp_vertex_program[] = "#version 120\n" STRINGIFY ( + uniform mat3 tangentSpaceTransform; + uniform vec3 Eye; + uniform vec3 lightPosition; + uniform vec3 staticLightPosition; + uniform float rsTime; + uniform int LIQUID; + uniform int FOG; + uniform int PARALLAX; + uniform int DYNAMIC; + uniform int SHINY; + + const float Eta = 0.66; + const float FresnelPower = 5.0; + const float F = ((1.0-Eta) * (1.0-Eta))/((1.0+Eta) * (1.0+Eta)); + + varying float FresRatio; + varying vec3 EyeDir; + varying vec3 LightDir; + varying vec3 StaticLightDir; + varying vec4 sPos; + varying float fog; + + void main( void ) + { + sPos = gl_Vertex; + + gl_Position = ftransform(); + + if(SHINY > 0) + { + vec3 norm = vec3(0, 0, 1); + + vec4 neyeDir = gl_ModelViewMatrix * gl_Vertex; + vec3 refeyeDir = neyeDir.xyz / neyeDir.w; + refeyeDir = normalize(refeyeDir); + + FresRatio = F + (1.0-F) * pow((1.0-dot(refeyeDir,norm)),FresnelPower); + } + + gl_FrontColor = gl_Color; + + EyeDir = tangentSpaceTransform * ( Eye - gl_Vertex.xyz ); + + if (DYNAMIC > 0) + { + LightDir = tangentSpaceTransform * (lightPosition - gl_Vertex.xyz); + } + if (PARALLAX > 0) + { + StaticLightDir = tangentSpaceTransform * (staticLightPosition - gl_Vertex.xyz); + } + + // pass any active texunits through + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_TexCoord[1] = gl_MultiTexCoord1; + + //fog + if(FOG > 0){ + fog = (gl_Position.z - gl_Fog.start) / (gl_Fog.end - gl_Fog.start); + fog = clamp(fog, 0.0, 1.0); + } + } +); + +static char bsp_fragment_program[] = "#version 120\n" STRINGIFY ( + uniform sampler2D surfTexture; + uniform sampler2D HeightTexture; + uniform sampler2D NormalTexture; + uniform sampler2D lmTexture; + uniform sampler2D liquidTexture; + uniform sampler2D liquidNormTex; + uniform sampler2D chromeTex; + uniform sampler2DShadow ShadowMap; + uniform sampler2DShadow StatShadowMap; + uniform vec3 lightColour; + uniform float lightCutoffSquared; + uniform int FOG; + uniform int PARALLAX; + uniform int DYNAMIC; + uniform int STATSHADOW; + uniform int SHADOWMAP; + uniform int LIQUID; + uniform int SHINY; + uniform float rsTime; + uniform float xPixelOffset; + uniform float yPixelOffset; + + varying float FresRatio; + varying vec4 sPos; + varying vec3 EyeDir; + varying vec3 LightDir; + varying vec3 StaticLightDir; + varying float fog; + + vec4 ShadowCoord; + + float lookup( vec2 offSet, sampler2DShadow Map) + { + return shadow2DProj(Map, ShadowCoord + vec4(offSet.x * xPixelOffset * ShadowCoord.w, offSet.y * yPixelOffset * ShadowCoord.w, 0.05, 0.0) ).w; + } + + + float lookupShadow( sampler2DShadow Map ) + { + float shadow = 1.0; + + if(SHADOWMAP > 0) + { + if (ShadowCoord.w > 1.0) + { + vec2 o = mod(floor(gl_FragCoord.xy), 2.0); + + shadow += lookup(vec2(-1.5, 1.5) + o, Map); + shadow += lookup(vec2( 0.5, 1.5) + o, Map); + shadow += lookup(vec2(-1.5, -0.5) + o, Map); + shadow += lookup(vec2( 0.5, -0.5) + o, Map); + shadow *= 0.25 ; + } + + shadow += 0.2; + if(shadow > 1.0) + shadow = 1.0; + } + + return shadow; + } + + void main( void ) + { + vec4 diffuse; + vec4 lightmap; + vec4 alphamask; + vec4 bloodColor; + float distanceSquared; + vec3 relativeLightDirection; + float diffuseTerm; + vec3 halfAngleVector; + float specularTerm; + float swamp; + float attenuation; + vec4 litColour; + vec3 varyingLightColour; + float varyingLightCutoffSquared; + float dynshadowval; + float statshadowval; + vec2 displacement; + vec2 displacement2; + vec2 displacement3; + vec2 displacement4; + + varyingLightColour = lightColour; + varyingLightCutoffSquared = lightCutoffSquared; + + vec3 relativeEyeDirection = normalize( EyeDir ); + + vec3 normal = 2.0 * ( texture2D( NormalTexture, gl_TexCoord[0].xy).xyz - vec3( 0.5, 0.5, 0.5 ) ); + vec3 textureColour = texture2D( surfTexture, gl_TexCoord[0].xy ).rgb; + + lightmap = texture2D( lmTexture, gl_TexCoord[1].st ); + alphamask = texture2D( surfTexture, gl_TexCoord[0].xy ); + + //shadows + if(DYNAMIC > 0) + { + ShadowCoord = gl_TextureMatrix[7] * sPos; + dynshadowval = lookupShadow(ShadowMap); + } + else + dynshadowval = 0.0; + + if(STATSHADOW > 0) + { + ShadowCoord = gl_TextureMatrix[6] * sPos; + statshadowval = lookupShadow(StatShadowMap); + } + else + statshadowval = 1.0; + + bloodColor = vec4(0.0, 0.0, 0.0, 0.0); + displacement4 = vec2(0.0, 0.0); + if(LIQUID > 0) + { + vec3 noiseVec; + vec3 noiseVec2; + vec3 noiseVec3; + + //for liquid fx scrolling + vec4 texco = gl_TexCoord[0]; + texco.t = texco.t - rsTime*1.0/LIQUID; + + vec4 texco2 = gl_TexCoord[0]; + texco2.t = texco2.t - rsTime*0.9/LIQUID; + //shift the horizontal here a bit + texco2.s = texco2.s/1.5; + + vec4 texco3 = gl_TexCoord[0]; + texco3.t = texco3.t - rsTime*0.6/LIQUID; + + vec4 Offset = texture2D( HeightTexture,gl_TexCoord[0].xy ); + Offset = Offset * 0.04 - 0.02; + vec2 TexCoords = Offset.xy * relativeEyeDirection.xy + gl_TexCoord[0].xy; + + displacement = texco.st; + + noiseVec = normalize(texture2D(liquidNormTex, texco.st)).xyz; + noiseVec = (noiseVec * 2.0 - 0.635) * 0.035; + + displacement2 = texco2.st; + + noiseVec2 = normalize(texture2D(liquidNormTex, displacement2.xy)).xyz; + noiseVec2 = (noiseVec2 * 2.0 - 0.635) * 0.035; + + if(LIQUID > 2) + { + displacement3 = texco3.st; + + noiseVec3 = normalize(texture2D(liquidNormTex, displacement3.xy)).xyz; + noiseVec3 = (noiseVec3 * 2.0 - 0.635) * 0.035; + } + else + { + //used for water effect only + displacement4.x = noiseVec.x + noiseVec2.x; + displacement4.y = noiseVec.y + noiseVec2.y; + } + + displacement.x = texco.s + noiseVec.x + TexCoords.x; + displacement.y = texco.t + noiseVec.y + TexCoords.y; + displacement2.x = texco2.s + noiseVec2.x + TexCoords.x; + displacement2.y = texco2.t + noiseVec2.y + TexCoords.y; + displacement3.x = texco3.s + noiseVec3.x + TexCoords.x; + displacement3.y = texco3.t + noiseVec3.y + TexCoords.y; + + if(LIQUID > 2) + { + vec4 diffuse1 = texture2D(liquidTexture, texco.st + displacement.xy); + vec4 diffuse2 = texture2D(liquidTexture, texco2.st + displacement2.xy); + vec4 diffuse3 = texture2D(liquidTexture, texco3.st + displacement3.xy); + vec4 diffuse4 = texture2D(liquidTexture, gl_TexCoord[0].st + displacement4.xy); + bloodColor = max(diffuse1, diffuse2); + bloodColor = max(bloodColor, diffuse3); + } + } + + if(PARALLAX > 0) + { + //do the parallax mapping + vec4 Offset = texture2D( HeightTexture,gl_TexCoord[0].xy ); + Offset = Offset * 0.04 - 0.02; + vec2 TexCoords = Offset.xy * relativeEyeDirection.xy + gl_TexCoord[0].xy + displacement4.xy; + + diffuse = texture2D( surfTexture, TexCoords ); + + relativeLightDirection = normalize (StaticLightDir); + + diffuseTerm = dot( normal, relativeLightDirection ); + + if( diffuseTerm > 0.0 ) + { + halfAngleVector = normalize( relativeLightDirection + relativeEyeDirection ); + + specularTerm = clamp( dot( normal, halfAngleVector ), 0.0, 1.0 ); + specularTerm = pow( specularTerm, 32.0 ); + + litColour = vec4 (specularTerm + ( 3.0 * diffuseTerm ) * textureColour, 6.0); + } + else + { + litColour = vec4( 0.0, 0.0, 0.0, 6.0 ); + } + + gl_FragColor = max(litColour, diffuse * 2.0); + gl_FragColor = (gl_FragColor * lightmap) + bloodColor; + gl_FragColor = (gl_FragColor * statshadowval); + } + else + { + diffuse = texture2D(surfTexture, gl_TexCoord[0].xy); + gl_FragColor = (diffuse * lightmap * 2.0); + gl_FragColor = (gl_FragColor * statshadowval); + } + + if(DYNAMIC > 0) + { + lightmap = texture2D(lmTexture, gl_TexCoord[1].st); + + //now do the dynamic lighting + distanceSquared = dot( LightDir, LightDir ); + relativeLightDirection = LightDir / sqrt( distanceSquared ); + + diffuseTerm = clamp( dot( normal, relativeLightDirection ), 0.0, 1.0 ); + vec3 colour = vec3( 0.0, 0.0, 0.0 ); + + if( diffuseTerm > 0.0 ) + { + halfAngleVector = normalize( relativeLightDirection + relativeEyeDirection ); + + float specularTerm = clamp( dot( normal, halfAngleVector ), 0.0, 1.0 ); + specularTerm = pow( specularTerm, 32.0 ); + + colour = specularTerm * vec3( 1.0, 1.0, 1.0 ) / 2.0; + } + + attenuation = clamp( 1.0 - ( distanceSquared / varyingLightCutoffSquared ), 0.0, 1.0 ); + + swamp = attenuation; + swamp *= swamp; + swamp *= swamp; + swamp *= swamp; + + colour += ( ( ( 0.5 - swamp ) * diffuseTerm ) + swamp ) * textureColour * 3.0; + + vec4 dynamicColour = vec4( attenuation * colour * dynshadowval * varyingLightColour, 1.0 ); + if(PARALLAX > 0) + { + dynamicColour = max(dynamicColour, gl_FragColor); + } + else + { + dynamicColour = max(dynamicColour, vec4(textureColour, 1.0) * lightmap * 2.0); + } + gl_FragColor = dynamicColour; + } + + gl_FragColor = mix(vec4(0.0, 0.0, 0.0, alphamask.a), gl_FragColor, alphamask.a); + + if(SHINY > 0) + { + vec3 reflection = reflect(relativeEyeDirection, normal); + vec3 refraction = refract(relativeEyeDirection, normal, 0.66); + + vec4 Tl = texture2DProj(chromeTex, vec4(reflection.xy, 1.0, 1.0) ); + vec4 Tr = texture2DProj(chromeTex, vec4(refraction.xy, 1.0, 1.0) ); + + vec4 cubemap = mix(Tl,Tr,FresRatio); + + gl_FragColor = max(gl_FragColor, (cubemap * 0.05 * alphamask.a)); + } + + if(FOG > 0) + gl_FragColor = mix(gl_FragColor, gl_Fog.color, fog); + } +); + +static char bsp_fragment_program_ATI[] = "#version 120\n" STRINGIFY ( + uniform sampler2D surfTexture; + uniform sampler2D HeightTexture; + uniform sampler2D NormalTexture; + uniform sampler2D lmTexture; + uniform sampler2D liquidTexture; + uniform sampler2D liquidNormTex; + uniform sampler2D chromeTex; + uniform sampler2D ShadowMap; + uniform sampler2D StatShadowMap; + uniform vec3 lightColour; + uniform float lightCutoffSquared; + uniform int FOG; + uniform int PARALLAX; + uniform int DYNAMIC; + uniform int STATSHADOW; + uniform int SHADOWMAP; + uniform int LIQUID; + uniform int SHINY; + uniform float rsTime; + uniform float xPixelOffset; + uniform float yPixelOffset; + + varying float FresRatio; + varying vec4 sPos; + varying vec3 EyeDir; + varying vec3 LightDir; + varying vec3 StaticLightDir; + varying float fog; + + vec4 ShadowCoord; + + float lookup( vec2 offSet, sampler2D Map) + { + + float shadow = 1.0; + + vec4 shadowCoordinateWdivide = (ShadowCoord + vec4(offSet.x * xPixelOffset * ShadowCoord.w, offSet.y * yPixelOffset * ShadowCoord.w, 0.0, 0.0)) / ShadowCoord.w ; + // Used to lower moir pattern and self-shadowing + shadowCoordinateWdivide.z += 0.0005; + + float distanceFromLight = texture2D(Map, shadowCoordinateWdivide.xy).z; + + if (ShadowCoord.w > 0.0) + shadow = distanceFromLight < shadowCoordinateWdivide.z ? 0.25 : 1.0 ; + + return shadow; + } + + float lookupShadow( sampler2D Map ) + { + float shadow = 1.0; + + if(SHADOWMAP > 0) + { + if (ShadowCoord.w > 1.0) + { + vec2 o = mod(floor(gl_FragCoord.xy), 2.0); + + shadow += lookup(vec2(-1.5, 1.5) + o, Map); + shadow += lookup(vec2( 0.5, 1.5) + o, Map); + shadow += lookup(vec2(-1.5, -0.5) + o, Map); + shadow += lookup(vec2( 0.5, -0.5) + o, Map); + shadow *= 0.25 ; + } + + if(shadow > 1.0) + shadow = 1.0; + } + + return shadow; + } + + void main( void ) + { + vec4 diffuse; + vec4 lightmap; + vec4 alphamask; + vec4 bloodColor; + float distanceSquared; + vec3 relativeLightDirection; + float diffuseTerm; + vec3 halfAngleVector; + float specularTerm; + float swamp; + float attenuation; + vec4 litColour; + vec3 varyingLightColour; + float varyingLightCutoffSquared; + float dynshadowval; + float statshadowval; + vec2 displacement; + vec2 displacement2; + vec2 displacement3; + vec2 displacement4; + + varyingLightColour = lightColour; + varyingLightCutoffSquared = lightCutoffSquared; + + vec3 relativeEyeDirection = normalize( EyeDir ); + + vec3 normal = 2.0 * ( texture2D( NormalTexture, gl_TexCoord[0].xy).xyz - vec3( 0.5, 0.5, 0.5 ) ); + vec3 textureColour = texture2D( surfTexture, gl_TexCoord[0].xy ).rgb; + + lightmap = texture2D( lmTexture, gl_TexCoord[1].st ); + alphamask = texture2D( surfTexture, gl_TexCoord[0].xy ); + + //shadows + if(DYNAMIC > 0) + { + ShadowCoord = gl_TextureMatrix[7] * sPos; + dynshadowval = lookupShadow(ShadowMap); + } + else + dynshadowval = 0.0; + + if(STATSHADOW > 0) + { + ShadowCoord = gl_TextureMatrix[6] * sPos; + statshadowval = lookupShadow(StatShadowMap); + } + else + statshadowval = 1.0; + + bloodColor = vec4(0.0, 0.0, 0.0, 0.0); + displacement4 = vec2(0.0, 0.0); + if(LIQUID > 0) + { + vec3 noiseVec; + vec3 noiseVec2; + vec3 noiseVec3; + + //for liquid fx scrolling + vec4 texco = gl_TexCoord[0]; + texco.t = texco.t - rsTime*1.0/LIQUID; + + vec4 texco2 = gl_TexCoord[0]; + texco2.t = texco2.t - rsTime*0.9/LIQUID; + //shift the horizontal here a bit + texco2.s = texco2.s/1.5; + + vec4 texco3 = gl_TexCoord[0]; + texco3.t = texco3.t - rsTime*0.6/LIQUID; + + vec4 Offset = texture2D( HeightTexture,gl_TexCoord[0].xy ); + Offset = Offset * 0.04 - 0.02; + vec2 TexCoords = Offset.xy * relativeEyeDirection.xy + gl_TexCoord[0].xy; + + displacement = texco.st; + + noiseVec = normalize(texture2D(liquidNormTex, texco.st)).xyz; + noiseVec = (noiseVec * 2.0 - 0.635) * 0.035; + + displacement2 = texco2.st; + + noiseVec2 = normalize(texture2D(liquidNormTex, displacement2.xy)).xyz; + noiseVec2 = (noiseVec2 * 2.0 - 0.635) * 0.035; + + if(LIQUID > 2) + { + displacement3 = texco3.st; + + noiseVec3 = normalize(texture2D(liquidNormTex, displacement3.xy)).xyz; + noiseVec3 = (noiseVec3 * 2.0 - 0.635) * 0.035; + } + else + { + //used for water effect only + displacement4.x = noiseVec.x + noiseVec2.x; + displacement4.y = noiseVec.y + noiseVec2.y; + } + + displacement.x = texco.s + noiseVec.x + TexCoords.x; + displacement.y = texco.t + noiseVec.y + TexCoords.y; + displacement2.x = texco2.s + noiseVec2.x + TexCoords.x; + displacement2.y = texco2.t + noiseVec2.y + TexCoords.y; + displacement3.x = texco3.s + noiseVec3.x + TexCoords.x; + displacement3.y = texco3.t + noiseVec3.y + TexCoords.y; + + if(LIQUID > 2) + { + vec4 diffuse1 = texture2D(liquidTexture, texco.st + displacement.xy); + vec4 diffuse2 = texture2D(liquidTexture, texco2.st + displacement2.xy); + vec4 diffuse3 = texture2D(liquidTexture, texco3.st + displacement3.xy); + vec4 diffuse4 = texture2D(liquidTexture, gl_TexCoord[0].st + displacement4.xy); + bloodColor = max(diffuse1, diffuse2); + bloodColor = max(bloodColor, diffuse3); + } + } + + if(PARALLAX > 0) + { + //do the parallax mapping + vec4 Offset = texture2D( HeightTexture,gl_TexCoord[0].xy ); + Offset = Offset * 0.04 - 0.02; + vec2 TexCoords = Offset.xy * relativeEyeDirection.xy + gl_TexCoord[0].xy + displacement4.xy; + + diffuse = texture2D( surfTexture, TexCoords ); + + relativeLightDirection = normalize (StaticLightDir); + + diffuseTerm = dot( normal, relativeLightDirection ); + + if( diffuseTerm > 0.0 ) + { + halfAngleVector = normalize( relativeLightDirection + relativeEyeDirection ); + + specularTerm = clamp( dot( normal, halfAngleVector ), 0.0, 1.0 ); + specularTerm = pow( specularTerm, 32.0 ); + + litColour = vec4 (specularTerm + ( 3.0 * diffuseTerm ) * textureColour, 6.0); + } + else + { + litColour = vec4( 0.0, 0.0, 0.0, 6.0 ); + } + + gl_FragColor = max(litColour, diffuse * 2.0); + gl_FragColor = (gl_FragColor * lightmap) + bloodColor; + gl_FragColor = (gl_FragColor * statshadowval); + } + else + { + diffuse = texture2D(surfTexture, gl_TexCoord[0].xy); + gl_FragColor = (diffuse * lightmap * 2.0); + gl_FragColor = (gl_FragColor * statshadowval); + } + + if(DYNAMIC > 0) + { + lightmap = texture2D(lmTexture, gl_TexCoord[1].st); + + //now do the dynamic lighting + distanceSquared = dot( LightDir, LightDir ); + relativeLightDirection = LightDir / sqrt( distanceSquared ); + + diffuseTerm = clamp( dot( normal, relativeLightDirection ), 0.0, 1.0 ); + vec3 colour = vec3( 0.0, 0.0, 0.0 ); + + if( diffuseTerm > 0.0 ) + { + halfAngleVector = normalize( relativeLightDirection + relativeEyeDirection ); + + float specularTerm = clamp( dot( normal, halfAngleVector ), 0.0, 1.0 ); + specularTerm = pow( specularTerm, 32.0 ); + + colour = specularTerm * vec3( 1.0, 1.0, 1.0 ) / 2.0; + } + + attenuation = clamp( 1.0 - ( distanceSquared / varyingLightCutoffSquared ), 0.0, 1.0 ); + + swamp = attenuation; + swamp *= swamp; + swamp *= swamp; + swamp *= swamp; + + colour += ( ( ( 0.5 - swamp ) * diffuseTerm ) + swamp ) * textureColour * 3.0; + + vec4 dynamicColour = vec4( attenuation * colour * dynshadowval * varyingLightColour, 1.0 ); + if(PARALLAX > 0) + { + dynamicColour = max(dynamicColour, gl_FragColor); + } + else + { + dynamicColour = max(dynamicColour, vec4(textureColour, 1.0) * lightmap * 2.0); + } + gl_FragColor = dynamicColour; + } + + gl_FragColor = mix(vec4(0.0, 0.0, 0.0, alphamask.a), gl_FragColor, alphamask.a); + + if(SHINY > 0) + { + vec3 reflection = reflect(relativeEyeDirection, normal); + vec3 refraction = refract(relativeEyeDirection, normal, 0.66); + + vec4 Tl = texture2DProj(chromeTex, vec4(reflection.xy, 1.0, 1.0) ); + vec4 Tr = texture2DProj(chromeTex, vec4(refraction.xy, 1.0, 1.0) ); + + vec4 cubemap = mix(Tl,Tr,FresRatio); + + gl_FragColor = max(gl_FragColor, (cubemap * 0.05 * alphamask.a)); + } + + if(FOG > 0) + gl_FragColor = mix(gl_FragColor, gl_Fog.color, fog); + } +); + + +//SHADOWS +static char shadow_vertex_program[] = "#version 120\n" STRINGIFY ( + varying vec4 ShadowCoord; + + void main( void ) + { + ShadowCoord = gl_TextureMatrix[6] * gl_Vertex; + + gl_Position = ftransform(); + + gl_Position.z -= 0.05; //eliminate z-fighting on some drivers + } +); + +static char shadow_fragment_program[] = "#version 120\n" STRINGIFY ( + + uniform sampler2DShadow StatShadowMap; + uniform float fadeShadow; + uniform float xPixelOffset; + uniform float yPixelOffset; + + varying vec4 ShadowCoord; + + float lookup( vec2 offSet) + { + return shadow2DProj(StatShadowMap, ShadowCoord + vec4(offSet.x * xPixelOffset * ShadowCoord.w, offSet.y * yPixelOffset * ShadowCoord.w, 0.05, 0.0) ).w; + } + + float lookupStatshadow( void ) + { + float shadow = 1.0; + + if (ShadowCoord.w > 1.0) + { + vec2 o = mod(floor(gl_FragCoord.xy), 2.0); + + shadow += lookup(vec2(-1.5, 1.5) + o); + shadow += lookup(vec2( 0.5, 1.5) + o); + shadow += lookup(vec2(-1.5, -0.5) + o); + shadow += lookup(vec2( 0.5, -0.5) + o); + shadow *= 0.25 ; + } + shadow += 0.3; + if(shadow > 1.0) + shadow = 1.0; + + return shadow; + } + + void main( void ) + { + float statshadowval = 1/fadeShadow * lookupStatshadow(); + + gl_FragColor = vec4(1.0); + gl_FragColor = (gl_FragColor * statshadowval); + } +); + +static char shadow_fragment_program_ATI[] = "#version 120\n" STRINGIFY ( + + uniform sampler2D StatShadowMap; + uniform float fadeShadow; + uniform float xPixelOffset; + uniform float yPixelOffset; + + varying vec4 ShadowCoord; + + float lookup( vec2 offSet) + { + float shadow = 1.0; + + vec4 shadowCoordinateWdivide = (ShadowCoord + vec4(offSet.x * xPixelOffset * ShadowCoord.w, offSet.y * yPixelOffset * ShadowCoord.w, 0.0, 0.0)) / ShadowCoord.w ; + // Used to lower moir pattern and self-shadowing + shadowCoordinateWdivide.z += 0.0005; + + float distanceFromLight = texture2D(StatShadowMap,shadowCoordinateWdivide.xy).z; + + if (ShadowCoord.w > 0.0) + shadow = distanceFromLight < shadowCoordinateWdivide.z ? 0.25 : 1.0 ; + + return shadow; + } + + float lookupStatshadow( void ) + { + float shadow = 1.0; + + if (ShadowCoord.w > 1.0) + { + vec2 o = mod(floor(gl_FragCoord.xy), 2.0); + + shadow += lookup(vec2(-1.5, 1.5) + o); + shadow += lookup(vec2( 0.5, 1.5) + o); + shadow += lookup(vec2(-1.5, -0.5) + o); + shadow += lookup(vec2( 0.5, -0.5) + o); + shadow *= 0.25 ; + } + if(shadow > 1.0) + shadow = 1.0; + + return shadow; + } + + void main( void ) + { + float statshadowval = 1/fadeShadow * lookupStatshadow(); + + gl_FragColor = vec4(1.0); + gl_FragColor = (gl_FragColor * statshadowval); + } +); + //MESHES -static char mesh_vertex_program[] = -"uniform vec3 lightPos;\n" -"uniform float time;\n" -"uniform int FOG;\n" - -"attribute vec4 tangent;\n" - -"varying vec3 LightDir;\n" -"varying vec3 EyeDir;\n" -"varying float fog;\n" - -"void main()\n" -"{\n" -" vec3 t;\n" -" vec3 b;\n" - -" gl_Position = ftransform();\n" - -" EyeDir = vec3(gl_ModelViewMatrix * gl_Vertex);\n" -" gl_TexCoord[0] = gl_MultiTexCoord0;\n" - -" vec3 n = normalize(gl_NormalMatrix * gl_Normal);\n" - -" vec3 tangent3 = vec3(tangent);\n" -" t = normalize(gl_NormalMatrix * tangent3);\n" -" b = tangent[3] * cross(n, t);\n" - -" vec3 v;\n" -" v.x = dot(lightPos, t);\n" -" v.y = dot(lightPos, b);\n" -" v.z = dot(lightPos, n);\n" -" LightDir = normalize(v);\n" - -" v.x = dot(EyeDir, t);\n" -" v.y = dot(EyeDir, b);\n" -" v.z = dot(EyeDir, n);\n" -" EyeDir = normalize(v);\n" - -" //for scrolling fx\n" -" vec4 texco = gl_MultiTexCoord0;\n" -" texco.s = texco.s + time*1.0;\n" -" texco.t = texco.t + time*1.0;\n" -" gl_TexCoord[1] = texco;\n" - -" //fog\n" -" if(FOG > 0){\n" -" fog = (gl_Position.z - gl_Fog.start) / (gl_Fog.end - gl_Fog.start);\n" -" fog = clamp(fog, 0.0, 0.3); //any higher and meshes disappear\n" -" }\n" -"}\n"; - -static char mesh_fragment_program[] = -"uniform sampler2D baseTex;\n" -"uniform sampler2D normalTex;\n" -"uniform sampler2D fxTex;\n" -"uniform vec3 baseColor;\n" -"uniform int FOG;\n" -"uniform int useFX;\n" -"uniform int useGlow;\n" -"uniform float minLight;\n" -"const float SpecularFactor = 0.5;\n" - -"varying vec3 LightDir;\n" -"varying vec3 EyeDir;\n" -"varying float fog;\n" - -"void main()\n" -"{\n" -" vec3 litColor;\n" -" vec4 fx;\n" -" vec4 glow;\n" - -" vec3 textureColour = texture2D( baseTex, gl_TexCoord[0].xy ).rgb;\n" -" vec3 normal = 2.0 * ( texture2D( normalTex, gl_TexCoord[0].xy).xyz - vec3( 0.5, 0.5, 0.5 ) );\n" - -" vec4 alphamask = texture2D( baseTex, gl_TexCoord[0].xy);\n" -" vec4 specmask = texture2D( normalTex, gl_TexCoord[0].xy);\n" - -" //moving fx texture\n" -" if(useFX > 0)\n" -" fx = texture2D( fxTex, gl_TexCoord[1].xy );\n" -" else\n" -" fx = vec4(0.0, 0.0, 0.0, 0.0);\n" - -" //glowing fx texture\n" -" if(useGlow > 0)\n" -" glow = texture2D(fxTex, gl_TexCoord[0].xy );\n" - -" litColor = textureColour * max(dot(normal, LightDir), 0.0);\n" -" vec3 reflectDir = reflect(LightDir, normal);\n" - -" float spec = max(dot(EyeDir, reflectDir), 0.0);\n" -" spec = pow(spec, 6.0);\n" -" spec *= (SpecularFactor*specmask.a);\n" -" litColor = min(litColor + spec, vec3(1.0));\n" - -" //keep shadows from making meshes completely black\n" -" litColor = max(litColor, (textureColour * vec3(minLight)));\n" - -" gl_FragColor = vec4(litColor * baseColor, 1.0);\n" - -" gl_FragColor = mix(fx, gl_FragColor, alphamask.a);\n" - -" if(useGlow > 0)\n" -" gl_FragColor = mix(gl_FragColor, glow, glow.a);\n" - -" if(FOG > 0)\n" -" gl_FragColor = mix(gl_FragColor, gl_Fog.color, fog);\n" -"}\n"; - -static char water_vertex_program[] = -"const float Eta = 0.66;\n" -"const float FresnelPower = 5.0;\n" - -"const float F = ((1.0-Eta) * (1.0-Eta))/((1.0+Eta) * (1.0+Eta));\n" -"varying float FresRatio;\n" - -"varying vec3 lightDir;\n" -"varying vec3 eyeDir;\n" -"varying vec3 reflectDir;\n" -"varying vec3 refractDir;\n" - -"varying float fog;\n" - -"uniform vec3 stangent;\n" -"uniform vec3 LightPos;\n" -"uniform float time;\n" -"uniform int REFLECT;\n" -"uniform int FOG;\n" - -"void main(void)\n" -"{\n" - -" vec4 v = vec4(gl_Vertex);\n" -" gl_Position = ftransform();\n" - -" vec3 norm = normalize(gl_NormalMatrix * gl_Normal);\n" -" vec3 tang = normalize(gl_NormalMatrix * stangent);\n" -" vec3 binorm = cross(norm,tang);\n" - -" eyeDir = vec3(gl_ModelViewMatrix * v);\n" - -" //for refraction\n" -" vec4 neyeDir = gl_ModelViewMatrix * v;\n" -" vec3 refeyeDir = neyeDir.xyz / neyeDir.w;\n" -" refeyeDir = normalize(refeyeDir);\n" - -" refeyeDir.x *= -1.0;\n" -" refeyeDir.y *= -1.0;\n" -" refeyeDir.z *= -1.0;\n" - -" reflectDir = reflect(eyeDir,norm);\n" -" refractDir = refract(eyeDir,norm,Eta);\n" -" refractDir = vec3(gl_TextureMatrix[0] * vec4(refractDir,1.0));\n" -" FresRatio = F + (1.0-F) * pow((1.0-dot(-refeyeDir,norm)),FresnelPower);\n" - -" vec3 tmp;\n" -" tmp.x = dot(LightPos,tang);\n" -" tmp.y = dot(LightPos,binorm);\n" -" tmp.z = dot(LightPos,norm);\n" -" lightDir = normalize(tmp);\n" - -" tmp.x = dot(eyeDir,tang);\n" -" tmp.y = dot(eyeDir,binorm);\n" -" tmp.z = dot(eyeDir,norm);\n" -" eyeDir = normalize(tmp);\n" - -" vec4 texco = gl_MultiTexCoord0;\n" -" if(REFLECT > 0) {\n" -" texco.s = texco.s - LightPos.x/256.0;\n" -" texco.t = texco.t + LightPos.y/256.0;\n" -" }\n" - -" gl_TexCoord[0] = texco;\n" - -" texco = gl_MultiTexCoord0;\n" -" texco.s = texco.s + time*0.05;\n" -" texco.t = texco.t + time*0.05;\n" - -" gl_TexCoord[1] = texco;\n" - -" texco = gl_MultiTexCoord0;\n" -" texco.s = texco.s + -time*0.05;\n" -" texco.t = texco.t + -time*0.05;\n" -" gl_TexCoord[2] = texco;\n" - -" //fog\n" -" if(FOG > 0){\n" -" fog = (gl_Position.z - gl_Fog.start) / (gl_Fog.end - gl_Fog.start);\n" -" fog = clamp(fog, 0.0, 1.0);\n" -" }\n" -"}\n"; - -static char water_fragment_program[] = -"varying vec3 lightDir;\n" -"varying vec3 eyeDir;\n" -"varying float FresRatio;\n" - -"varying float fog;\n" - -"uniform sampler2D refTexture;\n" -"uniform sampler2D normalMap;\n" -"uniform sampler2D baseTexture;\n" - -"uniform int REFLECT;\n" -"uniform int TRANSPARENT;\n" -"uniform int FOG;\n" - -"void main (void)\n" -"{\n" -" vec4 refColor;\n" - -" float distSqr = dot(lightDir, lightDir);\n" -" float att = clamp(1.0 - 0.0 * sqrt(distSqr), 0.0, 1.0);\n" -" vec3 lVec = lightDir * inversesqrt(distSqr);\n" - -" vec3 vVec = normalize(eyeDir);\n" - -" vec4 base = vec4(0.15,0.67,0.93,1.0); //base water color\n" -" if(REFLECT > 0)\n" -" refColor = mix(base, texture2D(refTexture, gl_TexCoord[0].xy), 1.0);\n" -" else\n" -" refColor = mix(base, texture2D(baseTexture, gl_TexCoord[0].xy), 1.0);\n" - -" vec3 bump = normalize( texture2D(normalMap, gl_TexCoord[1].xy).xyz * 2.0 - 1.0);\n" -" vec3 secbump = normalize( texture2D(normalMap, gl_TexCoord[2].xy).xyz * 2.0 - 1.0);\n" -" vec3 modbump = mix(secbump,bump,0.5);\n" - -" vec3 reflection = reflect(eyeDir,modbump);\n" -" vec3 refraction = refract(eyeDir,modbump,0.66);\n" - -" vec4 Tl = texture2DProj(baseTexture, vec4(reflection.xy, 1.0, 1.0) );\n" -" vec4 Tr = texture2DProj(baseTexture, vec4(refraction.xy, 1.0, 1.0) );\n" - -" vec4 cubemap = mix(Tl,Tr,FresRatio);\n" - -" gl_FragColor = mix(cubemap,refColor,0.5);\n" -" if(TRANSPARENT > 0)\n" -" gl_FragColor.a = 0.5;\n" +static char mesh_vertex_program[] = "#version 120\n" STRINGIFY ( + + uniform vec3 lightPos; + uniform float time; + uniform int FOG; + uniform mat3x4 bonemats[70]; + uniform int GPUANIM; + uniform int useShell; + uniform int useCube; + + attribute vec4 tangent; + attribute vec4 weights; + attribute vec4 bones; + + const float Eta = 0.66; + const float FresnelPower = 5.0; + const float F = ((1.0-Eta) * (1.0-Eta))/((1.0+Eta) * (1.0+Eta)); + + varying vec3 LightDir; + varying vec3 EyeDir; + varying float fog; + varying float FresRatio; + varying vec3 vertPos, lightVec; + varying vec3 worldNormal; + + void subScatterVS(in vec4 ecVert) + { + if(useShell == 0 && useCube == 0) + { + lightVec = lightPos - ecVert.xyz; + vertPos = ecVert.xyz; + } + } + + void main() + { + vec3 n; + vec3 t; + vec3 b; + vec4 neyeDir; + + if(GPUANIM > 0) + { + mat3x4 m = bonemats[int(bones.x)] * weights.x; + m += bonemats[int(bones.y)] * weights.y; + m += bonemats[int(bones.z)] * weights.z; + m += bonemats[int(bones.w)] * weights.w; + vec4 mpos = vec4(gl_Vertex * m, gl_Vertex.w); + gl_Position = gl_ModelViewProjectionMatrix * mpos; + + subScatterVS(gl_Position); + + n = normalize(gl_NormalMatrix * (vec4(gl_Normal, 0.0) * m)); + + t = normalize(gl_NormalMatrix * (vec4(tangent.xyz, 0.0) * m)); + + b = normalize(gl_NormalMatrix * (vec4(tangent.w, 0.0, 0.0, 0.0) * m)) * cross(n, t); + + EyeDir = vec3(gl_ModelViewMatrix * mpos); + neyeDir = gl_ModelViewMatrix * mpos; + } + else + { + subScatterVS(gl_ModelViewProjectionMatrix * gl_Vertex); + + gl_Position = ftransform(); + + n = normalize(gl_NormalMatrix * gl_Normal); + + t = normalize(gl_NormalMatrix * tangent.xyz); + + b = tangent.w * cross(n, t); + + EyeDir = vec3(gl_ModelViewMatrix * gl_Vertex); + neyeDir = gl_ModelViewMatrix * gl_Vertex;; + } + + worldNormal = n; + gl_TexCoord[0] = gl_MultiTexCoord0; + + vec3 v; + v.x = dot(lightPos, t); + v.y = dot(lightPos, b); + v.z = dot(lightPos, n); + LightDir = normalize(v); + + v.x = dot(EyeDir, t); + v.y = dot(EyeDir, b); + v.z = dot(EyeDir, n); + EyeDir = normalize(v); + + //for scrolling fx + vec4 texco = gl_MultiTexCoord0; + texco.s = texco.s + time*1.0; + texco.t = texco.t + time*2.0; + gl_TexCoord[1] = texco; + + if(useShell > 0) + gl_TexCoord[0] = texco; -" if(FOG > 0)\n" -" gl_FragColor = mix(gl_FragColor, gl_Fog.color, fog);\n" + if(useCube > 0) + { + vec3 refeyeDir = neyeDir.xyz / neyeDir.w; + refeyeDir = normalize(refeyeDir); + + FresRatio = F + (1.0-F) * pow((1.0-dot(refeyeDir, n)), FresnelPower); + } + + //fog + if(FOG > 0) + { + fog = (gl_Position.z - gl_Fog.start) / (gl_Fog.end - gl_Fog.start); + fog = clamp(fog, 0.0, 0.3); //any higher and meshes disappear + } + } +); + +static char mesh_fragment_program[] = "#version 120\n" STRINGIFY ( -"}\n"; + uniform sampler2D baseTex; + uniform sampler2D normalTex; + uniform sampler2D fxTex; + uniform sampler2D fx2Tex; + uniform vec3 baseColor; + uniform int GPUANIM; + uniform int FOG; + uniform int useFX; + uniform int useCube; + uniform int useGlow; + uniform int useShell; + uniform int fromView; + uniform vec3 lightPos; + const float SpecularFactor = 0.5; + //next group could be made uniforms if we want to control this + const float MaterialThickness = 2.0; //this val seems good for now + const vec3 ExtinctionCoefficient = vec3(0.80, 0.12, 0.20); //controls subsurface value + const float RimScalar = 10.0; //intensity of the rim effect + + varying vec3 LightDir; + varying vec3 EyeDir; + varying float fog; + varying float FresRatio; + varying vec3 vertPos, lightVec, worldNormal; + + float halfLambert(in vec3 vect1, in vec3 vect2) + { + float product = dot(vect1,vect2); + return product * 0.5 + 0.5; + } + + float blinnPhongSpecular(in vec3 normalVec, in vec3 lightVec, in float specPower) + { + vec3 halfAngle = normalize(normalVec + lightVec); + return pow(clamp(0.0,1.0,dot(normalVec,halfAngle)),specPower); + } + + void main() + { + vec3 litColor; + vec4 fx; + vec4 glow; + vec4 scatterCol = vec4(0.0); + + vec3 textureColour = texture2D( baseTex, gl_TexCoord[0].xy ).rgb; + vec3 normal = 2.0 * ( texture2D( normalTex, gl_TexCoord[0].xy).xyz - vec3( 0.5 ) ); + + vec4 alphamask = texture2D( baseTex, gl_TexCoord[0].xy); + vec4 specmask = texture2D( normalTex, gl_TexCoord[0].xy); + + if(useShell == 0 && useCube == 0 && specmask.a < 1.0) + { + vec4 SpecColor = vec4(baseColor, 1.0)/2.0; + + float attenuation = 2.0 * (1.0 / distance(lightPos, vertPos)); + vec3 wNorm = worldNormal; + vec3 eVec = EyeDir; + vec3 lVec = normalize(lightVec); + + vec4 dotLN = vec4(halfLambert(lVec, wNorm) * attenuation); + + vec3 indirectLightComponent = vec3(MaterialThickness * max(0.0,dot(-wNorm, lVec))); + indirectLightComponent += MaterialThickness * halfLambert(-eVec, lVec); + indirectLightComponent *= attenuation; + indirectLightComponent.r *= ExtinctionCoefficient.r; + indirectLightComponent.g *= ExtinctionCoefficient.g; + indirectLightComponent.b *= ExtinctionCoefficient.b; + + vec3 rim = vec3(1.0 - max(0.0,dot(wNorm, eVec))); + rim *= rim; + rim *= max(0.0,dot(wNorm, lVec)) * SpecColor.rgb; + + scatterCol = dotLN + vec4(indirectLightComponent, 1.0); + scatterCol.rgb += (rim * RimScalar * attenuation * scatterCol.a); + scatterCol.rgb += vec3(blinnPhongSpecular(wNorm, lVec, SpecularFactor*2.0) * attenuation * SpecColor * scatterCol.a * 0.05); + scatterCol.rgb *= baseColor; + scatterCol.rgb /= (specmask.a*specmask.a);//we use the spec mask for scatter mask, presuming non-spec areas are always soft/skin + } + + //moving fx texture + if(useFX > 0) + fx = texture2D( fxTex, gl_TexCoord[1].xy ); + else + fx = vec4(0.0, 0.0, 0.0, 0.0); + + //glowing fx texture + if(useGlow > 0) + glow = texture2D(fxTex, gl_TexCoord[0].xy ); + + litColor = textureColour * max(dot(normal, LightDir), 0.0); + vec3 reflectDir = reflect(LightDir, normal); + + float spec = max(dot(EyeDir, reflectDir), 0.0); + if(GPUANIM > 0) + spec = pow(spec, 4.0); + else + spec = pow(spec, 6.0); + spec *= (SpecularFactor*specmask.a); + litColor = min(litColor + spec, vec3(1.0)); + + //keep shadows from making meshes completely black + litColor = max(litColor, (textureColour * vec3(0.15))); + + gl_FragColor = vec4(litColor * baseColor, 1.0); + + gl_FragColor = mix(fx, gl_FragColor + scatterCol, alphamask.a); + + if(useCube > 0 && specmask.a < 1.0) + { + vec3 relEyeDir; + + if(fromView > 0) + relEyeDir = normalize(LightDir); + else + relEyeDir = normalize(EyeDir); + + vec3 reflection = reflect(relEyeDir, normal); + vec3 refraction = refract(relEyeDir, normal, 0.66); + + vec4 Tl = texture2D(fx2Tex, reflection.xy ); + vec4 Tr = texture2D(fx2Tex, refraction.xy ); + + vec4 cubemap = mix(Tl,Tr,FresRatio); + + cubemap.rgb = max(gl_FragColor.rgb, cubemap.rgb * litColor); + + gl_FragColor = mix(cubemap, gl_FragColor, specmask.a); + } + + if(useGlow > 0) + gl_FragColor = mix(gl_FragColor, glow, glow.a); + + if(FOG > 0) + gl_FragColor = mix(gl_FragColor, gl_Fog.color, fog); + } +); + +//GLASS +static char glass_vertex_program[] = "#version 120\n" STRINGIFY ( + + uniform mat3x4 bonemats[70]; + uniform int FOG; + + attribute vec4 weights; + attribute vec4 bones; + + varying vec3 r; + varying float fog; + varying vec3 normal, vert; + + void main(void) + { + mat3x4 m = bonemats[int(bones.x)] * weights.x; + m += bonemats[int(bones.y)] * weights.y; + m += bonemats[int(bones.z)] * weights.z; + m += bonemats[int(bones.w)] * weights.w; + vec4 mpos = vec4(gl_Vertex * m, gl_Vertex.w); + gl_Position = gl_ModelViewProjectionMatrix * mpos; + + vec3 u = normalize( vec3(gl_ModelViewMatrix * mpos) ); + vec3 n = normalize(gl_NormalMatrix * (vec4(gl_Normal, 0.0) * m)); + + r = reflect( u, n ); + + normal = n; + vert = vec3( gl_ModelViewMatrix * mpos ); + + //fog + if(FOG > 0) + { + fog = (gl_Position.z - gl_Fog.start) / (gl_Fog.end - gl_Fog.start); + fog = clamp(fog, 0.0, 0.3); //any higher and meshes disappear + } + } +); + +static char glass_fragment_program[] = "#version 120\n" STRINGIFY ( + + uniform vec3 LightPos; + uniform sampler2D refTexture; + uniform sampler2D mirTexture; + uniform int FOG; + + varying vec3 r; + varying float fog; + varying vec3 normal, vert; + + void main (void) + { + vec3 light_dir = normalize( LightPos - vert ); + vec3 eye_dir = normalize( -vert.xyz ); + vec3 ref = normalize( -reflect( light_dir, normal ) ); + + float ld = max( dot(normal, light_dir), 0.0 ); + float ls = 0.75 * pow( max( dot(ref, eye_dir), 0.0 ), 0.70 ); //0.75 specular, .7 shininess + + float m = -1.0 * sqrt( r.x*r.x + r.y*r.y + (r.z+1.0)*(r.z+1.0) ); + vec2 coord = -vec2(r.x/m + 0.5, r.y/m + 0.5); + + vec4 t0 = texture2D(refTexture, coord.st); + vec4 t1 = texture2D(mirTexture, coord.st); + + //gl_FragColor = 0.3 * t0 + 0.3 * t1 * (ld + ls); + gl_FragColor = 0.3 * t0 + 0.3 * t1 * vec4(ld + ls); + + if(FOG > 0) + gl_FragColor = mix(gl_FragColor, gl_Fog.color, fog); + } +); + +//NO TEXTURE +static char blankmesh_vertex_program[] = "#version 120\n" STRINGIFY ( + uniform mat3x4 bonemats[70]; + + attribute vec4 weights; + attribute vec4 bones; + + void main(void) + { + mat3x4 m = bonemats[int(bones.x)] * weights.x; + m += bonemats[int(bones.y)] * weights.y; + m += bonemats[int(bones.z)] * weights.z; + m += bonemats[int(bones.w)] * weights.w; + vec4 mpos = vec4(gl_Vertex * m, gl_Vertex.w); + gl_Position = gl_ModelViewProjectionMatrix * mpos; + } +); + +static char blankmesh_fragment_program[] = "#version 120\n" STRINGIFY ( + void main (void) + { + gl_FragColor = vec4(1.0); + } +); + + +static char water_vertex_program[] = "#version 120\n" STRINGIFY ( + uniform mat3 tangentSpaceTransform; + uniform vec3 Eye; + uniform vec3 LightPos; + uniform float time; + uniform int REFLECT; + uniform int FOG; + + const float Eta = 0.66; + const float FresnelPower = 2.5; + const float F = ((1.0-Eta) * (1.0-Eta))/((1.0+Eta) * (1.0+Eta)); + + varying float FresRatio; + varying vec3 lightDir; + varying vec3 eyeDir; + varying float fog; + + void main(void) + { + gl_Position = ftransform(); + + lightDir = tangentSpaceTransform * (LightPos - gl_Vertex.xyz); + + vec4 neyeDir = gl_ModelViewMatrix * gl_Vertex; + vec3 refeyeDir = neyeDir.xyz / neyeDir.w; + refeyeDir = normalize(refeyeDir); + + // The normal is always 0, 0, 1 because water is always up. Thus, + // dot (refeyeDir,norm) is always refeyeDir.z + FresRatio = F + (1.0-F) * pow((1.0-refeyeDir.z),FresnelPower); + + eyeDir = tangentSpaceTransform * ( Eye - gl_Vertex.xyz ); + + vec4 texco = gl_MultiTexCoord0; + if(REFLECT > 0) + { + texco.s = texco.s - LightPos.x/256.0; + texco.t = texco.t + LightPos.y/256.0; + } + gl_TexCoord[0] = texco; + + texco = gl_MultiTexCoord0; + texco.s = texco.s + time*0.05; + texco.t = texco.t + time*0.05; + gl_TexCoord[1] = texco; + + texco = gl_MultiTexCoord0; + texco.s = texco.s - time*0.05; + texco.t = texco.t - time*0.05; + gl_TexCoord[2] = texco; + + //fog + if(FOG > 0) + { + fog = (gl_Position.z - gl_Fog.start) / (gl_Fog.end - gl_Fog.start); + fog = clamp(fog, 0.0, 1.0); + } + } +); + +static char water_fragment_program[] = "#version 120\n" STRINGIFY ( + varying vec3 lightDir; + varying vec3 eyeDir; + varying float FresRatio; + + varying float fog; + + uniform sampler2D refTexture; + uniform sampler2D normalMap; + uniform sampler2D baseTexture; + + uniform float TRANSPARENT; + uniform int FOG; + + void main (void) + { + vec4 refColor; + + vec3 vVec = normalize(eyeDir); + + refColor = texture2D(refTexture, gl_TexCoord[0].xy); + + vec3 bump = normalize( texture2D(normalMap, gl_TexCoord[1].xy).xyz - 0.5); + vec3 secbump = normalize( texture2D(normalMap, gl_TexCoord[2].xy).xyz - 0.5); + vec3 modbump = mix(secbump,bump,0.5); + + vec3 reflection = reflect(vVec,modbump); + vec3 refraction = refract(vVec,modbump,0.66); + + vec4 Tl = texture2D(baseTexture, reflection.xy); + vec4 Tr = texture2D(baseTexture, refraction.xy); + + vec4 cubemap = mix(Tl,Tr,FresRatio); + + gl_FragColor = mix(cubemap,refColor,0.5); + + gl_FragColor.a = TRANSPARENT; + + if(FOG > 0) + gl_FragColor = mix(gl_FragColor, gl_Fog.color, fog); + + } +); //FRAMEBUFFER DISTORTION EFFECTS -static char fb_vertex_program[] = -"void main( void )\n" -"{\n" -" gl_Position = ftransform();\n" - -" gl_TexCoord[0] = gl_MultiTexCoord0;\n" -"}\n"; - -static char fb_fragment_program[] = -"uniform sampler2D fbtexture;\n" -"uniform sampler2D distortiontexture;\n" -"uniform vec2 dParams;\n" -"uniform vec2 fxPos;\n" - -"void main(void)\n" -"{\n" -" vec3 noiseVec;\n" -" vec2 displacement;\n" -" float wScissor;\n" -" float hScissor;\n" - -" displacement = gl_TexCoord[0].st;\n" - -" displacement.x -= fxPos.x;\n" -" displacement.y -= fxPos.y;\n" - -" noiseVec = normalize(texture2D(distortiontexture, displacement.xy)).xyz;\n" -" noiseVec = (noiseVec * 2.0 - 0.635) * 0.035;\n" - -" //clamp edges to prevent artifacts\n" - -" wScissor = dParams.x - 0.008;\n" -" hScissor = dParams.y - 0.008;\n" - -" if(gl_TexCoord[0].s > 0.1 && gl_TexCoord[0].s < wScissor)\n" -" displacement.x = gl_TexCoord[0].s + noiseVec.x;\n" -" else\n" -" displacement.x = gl_TexCoord[0].s;\n" - -" if(gl_TexCoord[0].t > 0.1 && gl_TexCoord[0].t < hScissor) \n" -" displacement.y = gl_TexCoord[0].t + noiseVec.y;\n" -" else\n" -" displacement.y = gl_TexCoord[0].t;\n" +static char fb_vertex_program[] = "#version 120\n" STRINGIFY ( + void main( void ) + { + gl_Position = ftransform(); + + gl_TexCoord[0] = gl_MultiTexCoord0; + } +); + +static char fb_fragment_program[] = "#version 120\n" STRINGIFY ( + uniform sampler2D fbtexture; + uniform sampler2D distortiontexture; + uniform vec2 dParams; + uniform vec2 fxPos; + + void main(void) + { + vec3 noiseVec; + vec2 displacement; + float wScissor; + float hScissor; -" gl_FragColor = texture2D(fbtexture, displacement.xy);\n" -"}\n"; + displacement = gl_TexCoord[0].st; + + displacement.x -= fxPos.x; + displacement.y -= fxPos.y; + + noiseVec = normalize(texture2D(distortiontexture, displacement.xy)).xyz; + noiseVec = (noiseVec * 2.0 - 0.635) * 0.035; + + //clamp edges to prevent artifacts + + wScissor = dParams.x - 0.008; + hScissor = dParams.y - 0.008; + + if(gl_TexCoord[0].s > 0.1 && gl_TexCoord[0].s < wScissor) + displacement.x = gl_TexCoord[0].s + noiseVec.x; + else + displacement.x = gl_TexCoord[0].s; + + if(gl_TexCoord[0].t > 0.1 && gl_TexCoord[0].t < hScissor) + displacement.y = gl_TexCoord[0].t + noiseVec.y; + else + displacement.y = gl_TexCoord[0].t; + + gl_FragColor = texture2D(fbtexture, displacement.xy); + } +); //GAUSSIAN BLUR EFFECTS -static char blur_vertex_program[] = -"void main()\n" -"{\n" -" gl_Position = ftransform();\n" -" gl_TexCoord[0] = gl_MultiTexCoord0;\n" -"}\n"; - -static char blur_fragment_program[] = -"uniform vec2 ScaleU;\n" -"uniform sampler2D textureSource;\n" - -"void main()\n" -"{\n" -" vec4 sum = vec4(0.0);\n" - -" // take nine samples\n" -" sum += texture2D(textureSource, vec2(gl_TexCoord[0].x - 4.0*ScaleU.x, gl_TexCoord[0].y - 4.0*ScaleU.y)) * 0.05;\n" -" sum += texture2D(textureSource, vec2(gl_TexCoord[0].x - 3.0*ScaleU.x, gl_TexCoord[0].y - 3.0*ScaleU.y)) * 0.09;\n" -" sum += texture2D(textureSource, vec2(gl_TexCoord[0].x - 2.0*ScaleU.x, gl_TexCoord[0].y - 2.0*ScaleU.y)) * 0.12;\n" -" sum += texture2D(textureSource, vec2(gl_TexCoord[0].x - ScaleU.x, gl_TexCoord[0].y - ScaleU.y)) * 0.15;\n" -" sum += texture2D(textureSource, vec2(gl_TexCoord[0].x, gl_TexCoord[0].y)) * 0.16;\n" -" sum += texture2D(textureSource, vec2(gl_TexCoord[0].x + ScaleU.x, gl_TexCoord[0].y + ScaleU.y)) * 0.15;\n" -" sum += texture2D(textureSource, vec2(gl_TexCoord[0].x + 2.0*ScaleU.x, gl_TexCoord[0].y + 2.0*ScaleU.y)) * 0.12;\n" -" sum += texture2D(textureSource, vec2(gl_TexCoord[0].x + 3.0*ScaleU.x, gl_TexCoord[0].y + 3.0*ScaleU.y)) * 0.09;\n" -" sum += texture2D(textureSource, vec2(gl_TexCoord[0].x + 4.0*ScaleU.x, gl_TexCoord[0].y + 4.0*ScaleU.y)) * 0.05;\n" +static char blur_vertex_program[] = "#version 120\n" STRINGIFY ( + varying vec2 texcoord1, texcoord2, texcoord3, + texcoord4, texcoord5, texcoord6, + texcoord7, texcoord8, texcoord9; + uniform vec2 ScaleU; + + void main() + { + gl_Position = ftransform(); + + // If we do all this math here, and let GLSL do its built-in + // interpolation of varying variables, the math still comes out right, + // but it's faster. + texcoord1 = gl_MultiTexCoord0.xy-4.0*ScaleU; + texcoord2 = gl_MultiTexCoord0.xy-3.0*ScaleU; + texcoord3 = gl_MultiTexCoord0.xy-2.0*ScaleU; + texcoord4 = gl_MultiTexCoord0.xy-ScaleU; + texcoord5 = gl_MultiTexCoord0.xy; + texcoord6 = gl_MultiTexCoord0.xy+ScaleU; + texcoord7 = gl_MultiTexCoord0.xy+2.0*ScaleU; + texcoord8 = gl_MultiTexCoord0.xy+3.0*ScaleU; + texcoord9 = gl_MultiTexCoord0.xy+4.0*ScaleU; + } +); + +static char blur_fragment_program[] = "#version 120\n" STRINGIFY ( + varying vec2 texcoord1, texcoord2, texcoord3, + texcoord4, texcoord5, texcoord6, + texcoord7, texcoord8, texcoord9; + uniform sampler2D textureSource; + + void main() + { + vec4 sum = vec4(0.0); + + // take nine samples + sum += texture2D(textureSource, texcoord1) * 0.05; + sum += texture2D(textureSource, texcoord2) * 0.09; + sum += texture2D(textureSource, texcoord3) * 0.12; + sum += texture2D(textureSource, texcoord4) * 0.15; + sum += texture2D(textureSource, texcoord5) * 0.16; + sum += texture2D(textureSource, texcoord6) * 0.15; + sum += texture2D(textureSource, texcoord7) * 0.12; + sum += texture2D(textureSource, texcoord8) * 0.09; + sum += texture2D(textureSource, texcoord9) * 0.05; -" gl_FragColor = sum;\n" -"}\n"; + gl_FragColor = sum; + } +); //RADIAL BLUR EFFECTS // xy = radial center screen space position, z = radius attenuation, w = blur strength -static char rblur_vertex_program[] = -"void main()\n" -"{\n" -" gl_Position = ftransform();\n" -" gl_TexCoord[0] = gl_MultiTexCoord0;\n" -"}\n"; - -static char rblur_fragment_program[] = -"uniform sampler2D rtextureSource;\n" -"uniform vec3 radialBlurParams;\n" -"uniform vec3 rblurScale;\n" - -"void main(void)\n" -"{\n" -" float wScissor;\n" -" float hScissor;\n" - -" vec2 dir = vec2(radialBlurParams.x - gl_TexCoord[0].x, radialBlurParams.x - gl_TexCoord[0].x);\n" -" float dist = sqrt(dir.x*dir.x + dir.y*dir.y);\n" -" dir = dir/dist;\n" -" vec4 color = texture2D(rtextureSource,gl_TexCoord[0].xy);\n" -" vec4 sum = color;\n" - -" float strength = radialBlurParams.z;\n" -" vec2 pDir = vec2(rblurScale.y * 0.5 - gl_TexCoord[0].s, rblurScale.z * 0.5 - gl_TexCoord[0].t);\n" -" float pDist = sqrt(pDir.x*pDir.x + pDir.y*pDir.y);\n" -" clamp(pDist, 0.0, 1.0);\n" - -" //the following ugliness is due to ATI's drivers inablity to handle a simple for-loop!\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.06 * strength * pDist );\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.05 * strength * pDist );\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.03 * strength * pDist );\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.02 * strength * pDist );\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.01 * strength * pDist );\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.01 * strength * pDist );\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.02 * strength * pDist );\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.03 * strength * pDist );\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.05 * strength * pDist );\n" -" sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.06 * strength * pDist );\n" +static char rblur_vertex_program[] = "#version 120\n" STRINGIFY ( + void main() + { + gl_Position = ftransform(); + gl_TexCoord[0] = gl_MultiTexCoord0; + } +); + +static char rblur_fragment_program[] = "#version 120\n" STRINGIFY ( + uniform sampler2D rtextureSource; + uniform vec3 radialBlurParams; + uniform vec3 rblurScale; + + void main(void) + { + float wScissor; + float hScissor; + + vec2 dir = vec2(radialBlurParams.x - gl_TexCoord[0].x, radialBlurParams.x - gl_TexCoord[0].x); + float dist = sqrt(dir.x*dir.x + dir.y*dir.y); + dir = dir/dist; + vec4 color = texture2D(rtextureSource,gl_TexCoord[0].xy); + vec4 sum = color; + + float strength = radialBlurParams.z; + vec2 pDir = vec2(rblurScale.y * 0.5 - gl_TexCoord[0].s, rblurScale.z * 0.5 - gl_TexCoord[0].t); + float pDist = sqrt(pDir.x*pDir.x + pDir.y*pDir.y); + clamp(pDist, 0.0, 1.0); + + //the following ugliness is due to ATI's drivers inablity to handle a simple for-loop! + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.06 * strength * pDist ); + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.05 * strength * pDist ); + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.03 * strength * pDist ); + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.02 * strength * pDist ); + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * -0.01 * strength * pDist ); + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.01 * strength * pDist ); + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.02 * strength * pDist ); + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.03 * strength * pDist ); + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.05 * strength * pDist ); + sum += texture2D( rtextureSource, gl_TexCoord[0].xy + dir * 0.06 * strength * pDist ); -" sum *= 1.0/11.0;\n" + sum *= 1.0/11.0; -" float t = dist * rblurScale.x;\n" -" t = clamp( t ,0.0,1.0);\n" + float t = dist * rblurScale.x; + t = clamp( t ,0.0,1.0); -" vec4 final = mix( color, sum, t );\n" + vec4 final = mix( color, sum, t ); -" //clamp edges to prevent artifacts\n" + //clamp edges to prevent artifacts + wScissor = rblurScale.y - 0.008; + hScissor = rblurScale.z - 0.008; -" wScissor = rblurScale.y - 0.008;\n" -" hScissor = rblurScale.z - 0.008;\n" + if(gl_TexCoord[0].s > 0.008 && gl_TexCoord[0].s < wScissor && gl_TexCoord[0].t > 0.008 && gl_TexCoord[0].t < hScissor) + gl_FragColor = final; + else + gl_FragColor = color; + } +); -" if(gl_TexCoord[0].s > 0.008 && gl_TexCoord[0].s < wScissor && gl_TexCoord[0].t > 0.008 && gl_TexCoord[0].t < hScissor)\n" -" gl_FragColor = final;\n" -" else\n" -" gl_FragColor = color;\n" -"}\n"; +//WATER DROPLETS +static char droplets_vertex_program[] = "#version 120\n" STRINGIFY ( + uniform float drTime; -void R_LoadGLSLPrograms(void) + void main( void ) + { + gl_Position = ftransform(); + + //for vertical scrolling + vec4 texco = gl_MultiTexCoord0; + texco.t = texco.t + drTime*1.0; + gl_TexCoord[1] = texco; + + texco = gl_MultiTexCoord0; + texco.t = texco.t + drTime*0.8; + gl_TexCoord[2] = texco; + + gl_TexCoord[0] = gl_MultiTexCoord0; + } +); + +static char droplets_fragment_program[] = "#version 120\n" STRINGIFY ( + uniform sampler2D drSource; + uniform sampler2D drTex; + uniform vec2 drParams; + + void main(void) + { + vec3 noiseVec; + vec3 noiseVec2; + vec2 displacement; + float wScissor; + float hScissor; + + displacement = gl_TexCoord[1].st; + + noiseVec = normalize(texture2D(drTex, displacement.xy)).xyz; + noiseVec = (noiseVec * 2.0 - 0.635) * 0.035; + + displacement = gl_TexCoord[2].st; + + noiseVec2 = normalize(texture2D(drTex, displacement.xy)).xyz; + noiseVec2 = (noiseVec2 * 2.0 - 0.635) * 0.035; + + //clamp edges to prevent artifacts + wScissor = drParams.x - 0.008; + hScissor = drParams.y - 0.028; + + if(gl_TexCoord[0].s > 0.1 && gl_TexCoord[0].s < wScissor) + displacement.x = gl_TexCoord[0].s + noiseVec.x + noiseVec2.x; + else + displacement.x = gl_TexCoord[0].s; + + if(gl_TexCoord[0].t > 0.1 && gl_TexCoord[0].t < hScissor) + displacement.y = gl_TexCoord[0].t + noiseVec.y + noiseVec2.y; + else + displacement.y = gl_TexCoord[0].t; + + gl_FragColor = texture2D(drSource, displacement.xy); + } +); + +static char rgodrays_vertex_program[] = "#version 120\n" STRINGIFY ( + void main() + { + gl_TexCoord[0] = gl_MultiTexCoord0; + gl_Position = ftransform(); + } +); + +static char rgodrays_fragment_program[] = "#version 120\n" STRINGIFY ( + uniform vec2 lightPositionOnScreen; + uniform sampler2D sunTexture; + uniform float aspectRatio; //width/height + uniform float sunRadius; + + //note - these could be made uniforms to control externally + const float exposure = 0.0034; + const float decay = 1.0; + const float density = 0.84; + const float weight = 5.65; + const int NUM_SAMPLES = 75; + + void main() + { + vec2 deltaTextCoord = vec2( gl_TexCoord[0].st - lightPositionOnScreen.xy ); + vec2 textCoo = gl_TexCoord[0].st; + float adjustedLength = length (vec2 (deltaTextCoord.x*aspectRatio, deltaTextCoord.y)); + deltaTextCoord *= 1.0 / float(NUM_SAMPLES) * density; + float illuminationDecay = 1.0; + + int lim = NUM_SAMPLES; + + if (adjustedLength > sunRadius) + { + //first simulate the part of the loop for which we won't get any + //samples anyway + float ratio = (adjustedLength-sunRadius)/adjustedLength; + lim = int (float(lim)*ratio); + + textCoo -= deltaTextCoord*lim; + illuminationDecay *= pow (decay, lim); + + //next set up the following loop so it gets the correct number of + //samples. + lim = NUM_SAMPLES-lim; + } + + gl_FragColor = vec4(0.0); + for(int i = 0; i < lim; i++) + { + textCoo -= deltaTextCoord; + + vec4 sample = texture2D(sunTexture, textCoo ); + + sample *= illuminationDecay * weight; + + gl_FragColor += sample; + + illuminationDecay *= decay; + } + gl_FragColor *= exposure; + } +); + +typedef struct { + const char *name; + int index; +} vertex_attribute_t; + +// add new vertex attributes here +#define NO_ATTRIBUTES 0 +const vertex_attribute_t standard_attributes[] = +{ + #define ATTRIBUTE_TANGENT (1<<0) + {"tangent", 1}, + #define ATTRIBUTE_WEIGHTS (1<<1) + {"weights", 6}, + #define ATTRIBUTE_BONES (1<<2) + {"bones", 7} +}; +const int num_standard_attributes = sizeof(standard_attributes)/sizeof(vertex_attribute_t); + +void R_LoadGLSLProgram (const char *name, char *vertex, char *fragment, int attributes, GLhandleARB *program) { - const char *shaderStrings[1]; - int nResult; - char str[4096]; + char str[4096]; + const char *shaderStrings[1]; + int nResult; + int i; + + *program = glCreateProgramObjectARB(); + + g_vertexShader = glCreateShaderObjectARB( GL_VERTEX_SHADER_ARB ); + shaderStrings[0] = vertex; + glShaderSourceARB( g_vertexShader, 1, shaderStrings, NULL ); + glCompileShaderARB( g_vertexShader); + glGetObjectParameterivARB( g_vertexShader, GL_OBJECT_COMPILE_STATUS_ARB, &nResult ); + + if( nResult ) + glAttachObjectARB( *program, g_vertexShader ); + else + { + Com_Printf("...%s Vertex Shader Compile Error\n", name); + } + + g_fragmentShader = glCreateShaderObjectARB( GL_FRAGMENT_SHADER_ARB ); + shaderStrings[0] = fragment; + + glShaderSourceARB( g_fragmentShader, 1, shaderStrings, NULL ); + glCompileShaderARB( g_fragmentShader ); + glGetObjectParameterivARB( g_fragmentShader, GL_OBJECT_COMPILE_STATUS_ARB, &nResult ); + + if( nResult ) + glAttachObjectARB( *program, g_fragmentShader ); + else + { + Com_Printf("...%s Fragment Shader Compile Error\n", name); + } + + for (i = 0; i < num_standard_attributes; i++) + { + if (attributes & (1<a[0] = r.a[0]; - rm->a[1] = r.b[0]; - rm->a[2] = r.c[0]; - rm->a[3] = 0.0; - rm->b[0] = r.a[1]; - rm->b[1] = r.b[1]; - rm->b[2] = r.c[1]; - rm->b[3] = 0.0; - rm->c[0] = r.a[2]; - rm->c[1] = r.b[2]; - rm->c[2] = r.c[2]; - rm->c[3] = 0.0; - rm->d[0] = p[0]; - rm->d[1] = p[1]; - rm->d[2] = p[2]; - rm->d[3] = 1.0; - - return rm; -} - extern void Matrix3x4ForEntity(matrix3x4_t *out, entity_t *ent); extern void Matrix3x4_Invert(matrix3x4_t *out, matrix3x4_t in); extern void Matrix3x4_Multiply(matrix3x4_t *out, matrix3x4_t mat1, matrix3x4_t mat2); @@ -166,7 +142,7 @@ } if(nans > 0) { - if(r_ragdoll_debug->value) + if(r_ragdoll_debug->integer) Com_Printf("There was a NaN in creating body %i\n", objectID); } @@ -285,6 +261,22 @@ } +#if !defined WIN32_VARIANT +/* Constants: + * CFM -- "Constraint Force Mixing" + * ERP -- "Error Reduction Parameter" + * See ODE documentation for more info. + * + * These are needed to get ragdolls to come to complete rest. + * They are determined empirically by observing when the ragdolls on + * the floor stop vibrating. + * + * We will just hard code them, until there is some reason not to. + */ +const dReal world_cfm_setting = 5.5e-6; +const dReal world_erp_setting = 0.3; +#endif + void RGD_CreateWorldObject( void ) { // Initialize the world @@ -292,6 +284,15 @@ dWorldSetGravity(RagDollWorld, 0.0, 0.0, -512.0); +#if !defined WIN32_VARIANT + /* Added to support dWorldQuickStep(), which is needed for ODE v0.12 + */ + dWorldSetCFM( RagDollWorld, world_cfm_setting ); + dWorldSetERP( RagDollWorld, world_erp_setting ); + Com_Printf("RagDollWorld Settings: CFM (%.12f) ERP (%.3f)\n", + world_cfm_setting, world_erp_setting ); +#endif + RagDollSpace = dSimpleSpaceCreate(0); contactGroup = dJointGroupCreate(0); @@ -399,7 +400,7 @@ RagDoll[RagDollID].initframe = (matrix3x4_t *)malloc (currententity->model->num_joints*sizeof(matrix3x4_t)); memcpy(RagDoll[RagDollID].initframe, currententity->model->outframe, currententity->model->num_joints*sizeof(matrix3x4_t)); - if(r_shaders->value && currententity->script) + if(r_shaders->integer && currententity->script) { RagDoll[RagDollID].script = (rscript_t *)malloc (sizeof(rscript_t)); memcpy(RagDoll[RagDollID].script, currententity->script, sizeof(rscript_t)); @@ -777,7 +778,7 @@ } else { - if (!( surf->flags & SURF_DRAWTURB ) ) + if (!( surf->iflags & ISURF_DRAWTURB ) ) { RGD_BuildODEGeoms(surf); } @@ -988,7 +989,7 @@ { RGD_RagdollBody_Init(RagDollID, origin, name); - if(r_ragdoll_debug->value == 2) + if(r_ragdoll_debug->integer == 2) { Com_Printf("RagDoll name: %s Ent name: %s Mesh: %s Ent Mesh: %s\n", RagDoll[RagDollID].name, name, RagDoll[RagDollID].ragDollMesh->name, currentmodel->name); @@ -997,7 +998,7 @@ Com_Printf("ragdoll val %i: %4.2f\n", i, RagDoll[RagDollID].ragDollMesh->ragdoll.RagDollDims[i]); } - if(r_ragdoll_debug->value) + if(r_ragdoll_debug->integer) Com_Printf("Added a ragdoll @ %4.2f,%4.2f,%4.2f\n", RagDoll[RagDollID].origin[0], RagDoll[RagDollID].origin[1], RagDoll[RagDollID].origin[2]); @@ -1078,91 +1079,12 @@ } } -extern qboolean have_stencil; -extern vec3_t lightspot; -void RGD_DrawRagDollShadow(int RagDollID) -{ - vec3_t point, point2, mins, maxs; - float height; - int i, j; - int index_xyz, index_st; - int va = 0; - trace_t r_trace; - - //trace to get ground - VectorSet(mins, 0, 0, 0); - VectorSet(maxs, 0, 0, 0); - - VectorCopy(RagDoll[RagDollID].curPos, point); - point[2] += 24; - VectorCopy(RagDoll[RagDollID].curPos, point2); - point2[2] -= 1024; - - r_trace = CM_BoxTrace(point, point2, mins, maxs, r_worldmodel->firstnode, MASK_SOLID); - - if(r_trace.fraction == 1.0) - return; - - height = r_trace.endpos[2] + 0.1f; - - if (r_newrefdef.vieworg[2] < height) - return; - - if (have_stencil) - { - qglDepthMask(0); - qglEnable(GL_STENCIL_TEST); - qglStencilFunc(GL_EQUAL,1,2); - qglStencilOp(GL_KEEP,GL_KEEP,GL_INCR); - } - - va=0; - VArray = &VArrayVerts[0]; - R_InitVArrays (VERT_SINGLE_TEXTURED); - - for (i=0; inum_triangles; i++) - { - for (j=0; j<3; j++) - { - index_xyz = index_st = RagDoll[RagDollID].ragDollMesh->tris[i].vertex[j]; - - memcpy( point, RagDoll[RagDollID].ragDollMesh->animatevertexes[index_xyz].position, sizeof( point ) ); - - point[0] -= shadevector[0]; - point[1] -= shadevector[1]; - point[2] = height; - - VArray[0] = point[0]; - VArray[1] = point[1]; - VArray[2] = point[2]; - - VArray[3] = currentmodel->st[index_st].s; - VArray[4] = currentmodel->st[index_st].t; - - // increment pointer and counter - VArray += VertexSizes[VERT_SINGLE_TEXTURED]; - va++; - } - } - - R_DrawVarrays(GL_TRIANGLES, 0, va, false); - - qglDisableClientState( GL_COLOR_ARRAY ); - qglEnableClientState( GL_TEXTURE_COORD_ARRAY ); - - R_KillVArrays (); - qglDepthMask(1); - qglColor4f(1,1,1,1); - if (1) - qglDisable(GL_STENCIL_TEST); -} - void R_RenderAllRagdolls ( void ) { int RagDollID; int i; - if(!r_ragdolls->value) + if(!r_ragdolls->integer) return; //Iterate though the ragdoll stack, and render each one that is active. @@ -1184,7 +1106,7 @@ { R_DestroyRagDoll(RagDollID, true); RagDoll[RagDollID].destroyed = true; - if(r_ragdoll_debug->value) + if(r_ragdoll_debug->integer) Com_Printf("Destroyed a ragdoll"); } else @@ -1219,72 +1141,40 @@ shellEffect = true; } - IQM_AnimateRagdoll(RagDollID); - - IQM_DrawRagDollFrame(RagDollID, RagDoll[RagDollID].texnum, shellAlpha, shellEffect); - - GL_TexEnv( GL_REPLACE ); - qglShadeModel (GL_FLAT); - - //simple stencil shadows - if (gl_shadows->integer && !shellEffect && !gl_shadowmaps->integer) + //check for valid script + use_vbo = true; + if(RagDoll[RagDollID].script && RagDoll[RagDollID].script->stage) { - float casted; - float an = RagDoll[RagDollID].angles[1]/180*M_PI; - shadevector[0] = cos(-an); - shadevector[1] = sin(-an); - shadevector[2] = 1; - VectorNormalize (shadevector); + if(!strcmp("***r_notexture***", RagDoll[RagDollID].script->stage->texture->name) || + ((RagDoll[RagDollID].script->stage->fx || RagDoll[RagDollID].script->stage->glow) && !strcmp("***r_notexture***", RagDoll[RagDollID].script->stage->texture2->name)) || + (RagDoll[RagDollID].script->stage->cube && !strcmp("***r_notexture***", RagDoll[RagDollID].script->stage->texture3->name))) + { + RagDoll[RagDollID].script = NULL; //bad shader! + use_vbo = false; //cannot use vbo without a valid shader + } + } - currentmodel = RagDoll[RagDollID].ragDollMesh; + R_GetLightVals(RagDoll[RagDollID].curPos, true); - switch (gl_shadows->integer) - { - case 0: - break; - case 1: //dynamic only - always cast something - casted = SHD_ShadowLight (RagDoll[RagDollID].curPos, RagDoll[RagDollID].angles, shadevector, 0); - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_BLEND); - - qglColor4f (0,0,0,0.3); - - RGD_DrawRagDollShadow (RagDollID); - - qglEnable (GL_TEXTURE_2D); - qglDisable (GL_BLEND); - break; - case 2: //dynamic and world - //world - casted = SHD_ShadowLight (RagDoll[RagDollID].curPos, RagDoll[RagDollID].angles, shadevector, 1); - - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_BLEND); - - qglColor4f (0,0,0,casted); - - RGD_DrawRagDollShadow (RagDollID); - - qglEnable (GL_TEXTURE_2D); - qglDisable (GL_BLEND); - //dynamic - casted = 0; - casted = SHD_ShadowLight (RagDoll[RagDollID].curPos, RagDoll[RagDollID].angles, shadevector, 0); - if (casted > 0) - { //only draw if there's a dynamic light there - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_BLEND); + R_GenerateRagdollShadow(RagDollID); - qglColor4f (0,0,0,casted); + IQM_AnimateRagdoll(RagDollID, shellEffect); - RGD_DrawRagDollShadow (RagDollID); + currentmodel = RagDoll[RagDollID].ragDollMesh; + + // HACK: This is a bit wasteful, but it allows us to reuse code + // that expects these values to be in an entity_t struct. + VectorCopy (RagDoll[RagDollID].curPos, RagDollEntity.origin); + VectorCopy (RagDoll[RagDollID].angles, RagDollEntity.angles); + RagDollEntity.script = RagDoll[RagDollID].script; + RagDollEntity.flags = shellEffect?RF_SHELL_RED:0; + currententity = &RagDollEntity; - qglEnable (GL_TEXTURE_2D); - qglDisable (GL_BLEND); - } - break; - } - } + IQM_DrawFrame (RagDoll[RagDollID].texnum, true, shellAlpha); + + GL_TexEnv( GL_REPLACE ); + qglShadeModel (GL_FLAT); + qglColor4f (1,1,1,1); //apply forces from explosions @@ -1317,7 +1207,7 @@ } - if(r_ragdoll_debug->value) + if(r_ragdoll_debug->integer) { //debug - draw ragdoll bodies for(i = CHEST; i <= LEFTHAND; i++) @@ -1343,6 +1233,7 @@ } } +#if defined WIN32_VARIANT if(r_DrawingRagDoll) //here we handle the physics { int ODEIterationsPerFrame; @@ -1358,12 +1249,25 @@ ODEIterationsPerFrame = MIN_ODESTEPS; dSpaceCollide(RagDollSpace, 0, &near_callback); - dWorldStepFast1(RagDollWorld, (float)(frametime/1000.0f), ODEIterationsPerFrame); // Remove all temporary collision joints now that the world has been stepped dJointGroupEmpty(contactGroup); } +#else + /* ODE library 0.12 does not support dWorldStepFast1. + * Using dWorldQuickStep. See RGD_CreateWorldObject(), above. + */ + if(r_DrawingRagDoll) //here we handle the physics + { + int frametime = Sys_Milliseconds() - lastODEUpdate; + dSpaceCollide(RagDollSpace, 0, &near_callback); + dWorldQuickStep( RagDollWorld, ((dReal)frametime)/1000.0 ); + // Remove all temporary collision joints now that the world has been stepped + dJointGroupEmpty(contactGroup); + } +#endif + lastODEUpdate = Sys_Milliseconds(); r_DrawingRagDoll = false; } @@ -1372,7 +1276,7 @@ { int RagDollID, i; - if(!r_ragdolls->value) + if(!r_ragdolls->integer) return; for(RagDollID = 0; RagDollID < MAX_RAGDOLLS; RagDollID++) diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_ragdoll.h alien-arena-7.66+dfsg/source/ref_gl/r_ragdoll.h --- alien-arena-7.53+dfsg/source/ref_gl/r_ragdoll.h 2011-01-14 07:18:18.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_ragdoll.h 2013-06-22 20:07:35.000000000 +0000 @@ -128,8 +128,6 @@ #define HEAD_LOSTOP2 54 #define HEAD_HISTOP2 55 -//to do - we eventually want to add contraints for hips, knees, shoulders, elbows, wrists, and head(hi, lo stops) - dWorldID RagDollWorld; dSpaceID RagDollSpace; @@ -210,6 +208,10 @@ RagDoll_t RagDoll[MAX_RAGDOLLS]; +// A few values will be copied into this. It's a bit wasteful, but it allows +// us to reuse code that expects them to be in an entity_t struct. +entity_t RagDollEntity; + //surface for ragdoll to collide RagDollWorld_t RagDollTriWorld; @@ -221,4 +223,4 @@ extern void RGD_AddNewRagdoll( vec3_t origin, char name[MAX_QPATH] ); extern void RGD_DestroyWorldTrimesh(); extern void RGD_BuildWorldTrimesh (); -extern qboolean RGD_CullRagDolls( int RagDollID ); \ No newline at end of file +extern qboolean RGD_CullRagDolls( int RagDollID ); diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_script.c alien-arena-7.66+dfsg/source/ref_gl/r_script.c --- alien-arena-7.53+dfsg/source/ref_gl/r_script.c 2011-12-22 20:26:37.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_script.c 2013-06-26 15:56:34.000000000 +0000 @@ -132,12 +132,28 @@ rs->ready = false; } +void rs_free_if_subexpr (rs_cond_val_t *expr) +{ + if (expr->lval.string) + Z_Free (expr->lval.string); + if (expr->subexpr1) + rs_free_if_subexpr (expr->subexpr1); + if (expr->subexpr2) + rs_free_if_subexpr (expr->subexpr2); + Z_Free (expr); +} + void RS_ClearStage (rs_stage_t *stage) { anim_stage_t *anim = stage->anim_stage, *tmp_anim; random_stage_t *randStage = stage->rand_stage, *tmp_rand; + if (stage->condv != NULL) + { + rs_free_if_subexpr (stage->condv); + stage->condv = NULL; + } while (anim != NULL) { tmp_anim = anim; @@ -188,21 +204,14 @@ stage->scroll.typeX = 0; stage->scroll.typeY = 0; - stage->frames.enabled = false; - stage->frames.start = 0; - stage->frames.end = 0; - stage->rot_speed = 0; - VectorClear(stage->origin); - VectorClear(stage->angle); - stage->texture = NULL; stage->texture2 = NULL; + stage->texture3 = NULL; - stage->depthhack = 0; + stage->depthhack = false; stage->envmap = false; - stage->dynamic = false; stage->lensflare = false; stage->flaretype = 0; stage->normalmap = false; @@ -215,21 +224,30 @@ stage->rotating = false; stage->fx = false; stage->glow = false; + stage->cube = false; stage->lightmap = true; stage->next = NULL; } -rscript_t *RS_NewScript (char *name) +// Create a new script with the given name. Reuse the "old" struct if possible +// to avoid breaking old pointers. +rscript_t *RS_NewScript (char *name, rscript_t *old) { rscript_t *rs; unsigned int i; - if (!rs_rootscript) + if (old != NULL) + { + RS_ResetScript (old); + rs = old; + } + else if (!rs_rootscript) { rs_rootscript = (rscript_t *)malloc(sizeof(rscript_t)); rs = rs_rootscript; + rs->next = NULL; } else { @@ -240,13 +258,13 @@ rs->next = (rscript_t *)malloc(sizeof(rscript_t)); rs = rs->next; + rs->next = NULL; } COMPUTE_HASH_KEY(rs->hash_key, name, i); strncpy (rs->name, name, sizeof(rs->name)); rs->stage = NULL; - rs->next = NULL; rs->dontflush = false; rs->ready = false; @@ -274,11 +292,13 @@ strncpy (stage->name, "***r_notexture***", sizeof(stage->name)); strncpy (stage->name2, "***r_notexture***", sizeof(stage->name2)); + strncpy (stage->name3, "***r_notexture***", sizeof(stage->name3)); stage->rand_stage = NULL; stage->anim_stage = NULL; stage->next = NULL; stage->last_anim = NULL; + stage->condv = NULL; RS_ClearStage (stage); @@ -301,10 +321,14 @@ void RS_ReloadImageScriptLinks (void) { image_t *image; - int i; + int i; + char shortname[MAX_QPATH]; for (i=0, image=gltextures ; iscript = RS_FindScript(image->bare_name); + { + COM_StripExtension (image->name, shortname); + image->script = RS_FindScript (shortname); + } } @@ -335,8 +359,16 @@ void RS_FreeUnmarked (void) { + image_t *image; + int i; rscript_t *rs = rs_rootscript, *tmp_rs; + for (i=0, image=gltextures ; iscript && !((rscript_t *)image->script)->dontflush) + image->script = NULL; + } + while (rs != NULL) { tmp_rs = rs->next; @@ -420,6 +452,10 @@ stage->texture2 = GL_FindImage (stage->name2, mode); if (!stage->texture2) stage->texture2 = r_notexture; + if (stage->name3[0]) + stage->texture3 = GL_FindImage (stage->name3, mode); + if (!stage->texture3) + stage->texture3 = r_notexture; //check alpha if (stage->blendfunc.blend) @@ -483,7 +519,8 @@ safe { map - map2 + map2 - specific to "fx" + map3 - specific to "cube" scroll blendfunc alphashift @@ -503,6 +540,7 @@ rotating fx glow + cube } } */ @@ -521,11 +559,11 @@ strncpy (stage->name2, *token, sizeof(stage->name2)); } -void rs_stage_model (rs_stage_t *stage, char **token) +void rs_stage_map3 (rs_stage_t *stage, char **token) { *token = strtok (NULL, TOK_DELIMINATORS); - strncpy (stage->model, *token, sizeof(stage->model)); + strncpy (stage->name3, *token, sizeof(stage->name3)); } void rs_stage_colormap (rs_stage_t *stage, char **token) @@ -542,20 +580,6 @@ stage->colormap.blue = atof(*token); } -void rs_stage_frames (rs_stage_t *stage, char **token) -{ - stage->frames.enabled = true; - - *token = strtok (NULL, TOK_DELIMINATORS); - stage->frames.speed = atof(*token); - - *token = strtok (NULL, TOK_DELIMINATORS); - stage->frames.start = atoi(*token); - - *token = strtok (NULL, TOK_DELIMINATORS); - stage->frames.end = atoi(*token); -} - void rs_stage_scroll (rs_stage_t *stage, char **token) { *token = strtok (NULL, TOK_DELIMINATORS); @@ -676,8 +700,7 @@ void rs_stage_depthhack (rs_stage_t *stage, char **token) { - *token = strtok (NULL, TOK_DELIMINATORS); - stage->depthhack = (float)atof(*token); + stage->depthhack = true; } void rs_stage_envmap (rs_stage_t *stage, char **token) @@ -685,11 +708,6 @@ stage->envmap = true; } -void rs_stage_dynamic (rs_stage_t *stage, char **token) -{ - stage->dynamic = true; -} - void rs_stage_nolightmap (rs_stage_t *stage, char **token) { stage->lightmap = false; @@ -706,30 +724,6 @@ stage->rot_speed = (float)atof(*token); } -void rs_stage_origin (rs_stage_t *stage, char **token) -{ - *token = strtok (NULL, TOK_DELIMINATORS); - stage->origin[0] = (float)atof(*token); - - *token = strtok (NULL, TOK_DELIMINATORS); - stage->origin[1] = (float)atof(*token); - - *token = strtok (NULL, TOK_DELIMINATORS); - stage->origin[2] = (float)atof(*token); -} - -void rs_stage_angle (rs_stage_t *stage, char **token) -{ - *token = strtok (NULL, TOK_DELIMINATORS); - stage->angle[0] = (float)atof(*token); - - *token = strtok (NULL, TOK_DELIMINATORS); - stage->angle[1] = (float)atof(*token); - - *token = strtok (NULL, TOK_DELIMINATORS); - stage->angle[2] = (float)atof(*token); -} - void rs_stage_scale (rs_stage_t *stage, char **token) { *token = strtok (NULL, TOK_DELIMINATORS); @@ -814,14 +808,162 @@ { stage->glow = true; } +void rs_stage_cube (rs_stage_t *stage, char **token) +{ + stage->cube = true; +} + +typedef struct +{ + char *opname; + rs_cond_op_t op; +} rs_cond_op_key_t; +static rs_cond_op_key_t rs_cond_op_keys[] = +{ + { "==", rs_cond_eq }, + { "!=", rs_cond_neq }, + { ">", rs_cond_gt }, + { "<=", rs_cond_ngt }, + { "<", rs_cond_lt }, + { ">=", rs_cond_nlt }, + { "&&", rs_cond_and }, + { "||", rs_cond_or }, + + { NULL, 0 } +}; +rs_cond_val_t *rs_stage_if_subexpr (char **token) +{ + int i; + rs_cond_val_t *res = Z_Malloc (sizeof(rs_cond_val_t)); + *token = strtok (NULL, TOK_DELIMINATORS); + if (!(*token)) + { + Z_Free (res); + return NULL; + } + if (!Q_strcasecmp (*token, "(")) + { + res->subexpr1 = rs_stage_if_subexpr (token); + if (!res->subexpr1) //there was an error somewhere + { + Z_Free (res); + return NULL; + } + *token = strtok (NULL, TOK_DELIMINATORS); + if (!(*token)) { + Com_Printf ("Ran out of tokens in stage conditional!\n"); + rs_free_if_subexpr (res->subexpr1); + Z_Free (res); + return NULL; + } + if (!Q_strcasecmp (*token, ")")) + { + res->optype = rs_cond_is; + return res; + } + for (i = 0; rs_cond_op_keys[i].opname; i++) + if (!Q_strcasecmp (*token, rs_cond_op_keys[i].opname)) + break; + if (!rs_cond_op_keys[i].opname) + { + Com_Printf ("Invalid stage conditional operation %s\n", *token); + rs_free_if_subexpr (res->subexpr1); + Z_Free (res); + return NULL; + } + res->optype = rs_cond_op_keys[i].op; + res->subexpr2 = rs_stage_if_subexpr (token); + if (!res->subexpr2) //there was an error somewhere + { + rs_free_if_subexpr (res->subexpr1); + Z_Free (res); + return NULL; + } + *token = strtok (NULL, TOK_DELIMINATORS); + if (!(*token) || Q_strcasecmp (*token, ")")) + { + Com_Printf ("Missing ) in stage conditional!\n"); + if (*token) + Com_Printf ("Instead got %s\n", *token); + rs_free_if_subexpr (res->subexpr1); + rs_free_if_subexpr (res->subexpr2); + Z_Free (res); + return NULL; + } + return res; + } + else if (!Q_strcasecmp (*token, "!")) + { + res->optype = rs_cond_lnot; + res->subexpr1 = rs_stage_if_subexpr (token); + if (!res->subexpr1) // there was an error somewhere + { + Z_Free (res); + return NULL; + } + return res; + } + else if (!Q_strcasecmp (*token, "$")) + { + res->optype = rs_cond_none; + *token = strtok (NULL, TOK_DELIMINATORS); + if (!(*token)) { + Com_Printf ("Missing cvar name in stage conditional!\n"); + rs_free_if_subexpr (res->subexpr1); + Z_Free (res); + return NULL; + } + res->val = Cvar_Get (*token, "0", 0); + return res; + } + else + { + res->optype = rs_cond_none; + res->val = &(res->lval); + Anon_Cvar_Set (res->val, *token); + return res; + } +} +void rs_stage_if (rs_stage_t *stage, char **token) +{ + stage->condv = rs_stage_if_subexpr (token); + if (!stage->condv) + Com_Printf ("ERROR in stage conditional!\n"); +} + +// For legacy origin and angle commands that aren't actually used in the code. +// Some old rscripts still have the origin command in them, so we should parse +// it anyway. Can't find any angle commands, but may as well handle those too. +void rs_stage_consume3 (rs_stage_t *stage, char **token) +{ + Com_Printf ("WARN: depreciated Rscript command: %s\n", *token); + *token = strtok (NULL, TOK_DELIMINATORS); + *token = strtok (NULL, TOK_DELIMINATORS); + *token = strtok (NULL, TOK_DELIMINATORS); +} + +// Used for the old "model" command, even though I can't find any rscripts +// that have that command. +void rs_stage_consume1 (rs_stage_t *stage, char **token) +{ + Com_Printf ("WARN: depreciated Rscript command: %s\n", *token); + *token = strtok (NULL, TOK_DELIMINATORS); +} + +// Used for the old "dynamic" command, even though I can't find any rscripts +// that have that command. +void rs_stage_consume0 (rs_stage_t *stage, char **token) +{ + Com_Printf ("WARN: depreciated Rscript command: %s\n", *token); +} + static rs_stagekey_t rs_stagekeys[] = { { "colormap", &rs_stage_colormap }, { "map", &rs_stage_map }, { "map2", &rs_stage_map2 }, - { "model", &rs_stage_model }, + { "map3", &rs_stage_map3 }, { "scroll", &rs_stage_scroll }, - { "frames", &rs_stage_frames }, { "blendfunc", &rs_stage_blendfunc }, { "alphashift", &rs_stage_alphashift }, { "rand", &rs_stage_random }, @@ -831,10 +973,7 @@ { "nolightmap", &rs_stage_nolightmap }, { "alphamask", &rs_stage_alphamask }, { "rotate", &rs_stage_rotate }, - { "origin", &rs_stage_origin }, - { "angle", &rs_stage_angle }, { "scale", &rs_stage_scale }, - { "dynamic", &rs_stage_dynamic }, { "alphafunc", &rs_stage_alphafunc }, { "lensflare", &rs_stage_lensflare }, { "flaretype", &rs_stage_flaretype }, @@ -848,6 +987,15 @@ { "rotating", &rs_stage_rotating }, { "fx", &rs_stage_fx }, { "glow", &rs_stage_glow }, + { "cube", &rs_stage_cube }, + { "if", &rs_stage_if }, + + // Depreciated stuff + { "model", &rs_stage_consume1 }, + { "frames", &rs_stage_consume3 }, + { "origin", &rs_stage_consume3 }, + { "angle", &rs_stage_consume3 }, + { "dynamic", &rs_stage_consume1 }, { NULL, NULL } }; @@ -903,10 +1051,7 @@ { rs = RS_FindScript(token); - if (rs) - RS_FreeScript(rs); - - rs = RS_NewScript(token); + rs = RS_NewScript (token, rs); } } else if (inscript && !ignored) @@ -969,6 +1114,21 @@ FS_FreeFileList(script_list, script_count); } + + script_count = 0; + //TODO: gl_interactivescripts cvar + script_list = FS_ListFilesInFS("scripts/interactive/*.rscript", &script_count, 0, SFF_SUBDIR | SFF_HIDDEN | SFF_SYSTEM); + + if(script_list) { + for (i = 0; i < script_count; i++) + { + c = COM_SkipPath(script_list[i]); + Com_sprintf(script, MAX_OSPATH, "scripts/interactive/%s", c); + RS_LoadScript(script); + } + + FS_FreeFileList(script_list, script_count); + } script_count = 0; if(gl_normalmaps->value) { //search for normal map scripts ONLY if we are using normal mapping, do last to overide anything @@ -1180,27 +1340,6 @@ return alpha; } -float RS_AlphaFuncAlias (int alphafunc, float alpha, vec3_t normal, vec3_t org) -{ - // float oldalpha = alpha; // unused - - if (!abs(alphafunc)) - goto endalpha; - - if (alphafunc == ALPHAFUNC_GLOSS) - { - //glossmap stuff here... - } - -endalpha: - - if (alpha<0) alpha = 0; - if (alpha>1) alpha = 1; - if (alphafunc<0) alpha = 1-alpha; - - return alpha; -} - image_t *BSP_TextureAnimation (mtexinfo_t *tex); rscript_t *surfaceScript(msurface_t *surf) { @@ -1306,6 +1445,69 @@ } } +static cvar_t *rs_eval_if_subexpr (rs_cond_val_t *expr) +{ + int resv; + switch (expr->optype) + { + case rs_cond_none: + return expr->val; + case rs_cond_is: + return rs_eval_if_subexpr (expr->subexpr1); + case rs_cond_lnot: + resv = (rs_eval_if_subexpr (expr->subexpr1)->value == 0); + break; + case rs_cond_eq: + resv = Q_strcasecmp ( + rs_eval_if_subexpr (expr->subexpr1)->string, + rs_eval_if_subexpr (expr->subexpr2)->string + ) == 0; + break; + case rs_cond_neq: + resv = Q_strcasecmp ( + rs_eval_if_subexpr (expr->subexpr1)->string, + rs_eval_if_subexpr (expr->subexpr2)->string + ) != 0; + break; + case rs_cond_gt: + resv = (rs_eval_if_subexpr (expr->subexpr1)->value > + rs_eval_if_subexpr (expr->subexpr2)->value + ); + break; + case rs_cond_ngt: + resv = (rs_eval_if_subexpr (expr->subexpr1)->value <= + rs_eval_if_subexpr (expr->subexpr2)->value + ); + break; + case rs_cond_lt: + resv = (rs_eval_if_subexpr (expr->subexpr1)->value < + rs_eval_if_subexpr (expr->subexpr2)->value + ); + break; + case rs_cond_nlt: + resv = (rs_eval_if_subexpr (expr->subexpr1)->value >= + rs_eval_if_subexpr (expr->subexpr2)->value + ); + break; + case rs_cond_and: + resv = (rs_eval_if_subexpr (expr->subexpr1)->value && + rs_eval_if_subexpr (expr->subexpr2)->value + ); + break; + case rs_cond_or: + resv = (rs_eval_if_subexpr (expr->subexpr1)->value || + rs_eval_if_subexpr (expr->subexpr2)->value + ); + break; + default: + Com_Printf ("Unknown optype %d! (Can't happen)\n", expr->optype); + resv = 0; + break; + } + Anon_Cvar_Set (&(expr->lval), va ("%d", resv)); + return &(expr->lval); +} + //This is the shader drawing routine for bsp surfaces - it will draw on top of the //existing texture. void RS_DrawSurfaceTexture (msurface_t *surf, rscript_t *rs) @@ -1333,8 +1535,10 @@ lightmaptoggle = true; do { - if (stage->lensflare || stage->grass || stage->beam) + if (stage->lensflare || stage->grass || stage->beam || stage->cube) break; //handled elsewhere + if (stage->condv && !(rs_eval_if_subexpr(stage->condv)->value)) + continue; //stage should not execute if(stage->lightmap) { @@ -1516,7 +1720,7 @@ VertexCounter++; } - R_DrawVarrays(GL_POLYGON, 0, VertexCounter, false); + R_DrawVarrays(GL_POLYGON, 0, VertexCounter); qglColor4f(1,1,1,1); if (stage->colormap.enabled) @@ -1560,7 +1764,7 @@ //Underwater Caustics if(rs_caustics) - if (surf->flags & SURF_UNDERWATER ) + if (surf->iflags & ISURF_UNDERWATER ) RS_DrawSurfaceTexture(surf, rs_caustics); //all other textures shaders diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_script.h alien-arena-7.66+dfsg/source/ref_gl/r_script.h --- alien-arena-7.53+dfsg/source/ref_gl/r_script.h 2011-01-24 05:10:49.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_script.h 2013-06-22 20:07:35.000000000 +0000 @@ -59,22 +59,41 @@ float red, green, blue; // colors - duh! } rs_colormap_t; -typedef struct +//conditional operation types +typedef enum { - qboolean enabled; - float speed; - int start, end; -} rs_frames_t; + rs_cond_none, // no comparison, no subexpressions + rs_cond_is, // no comparison, use first subexpresson + rs_cond_eq, // == + rs_cond_neq, // != + rs_cond_gt, // > + rs_cond_ngt, // <= + rs_cond_lt, // < + rs_cond_nlt, // >= + rs_cond_and, // && + rs_cond_or, // || + rs_cond_lnot, // !, use first subexpression +} rs_cond_op_t; +//conditional operation value +typedef struct rs_cond_val_s +{ + rs_cond_op_t optype; //what type of operation + struct rs_cond_val_s *subexpr1, *subexpr2; //sub expressions, if applicable + cvar_t *val; //value, if applicable + cvar_t lval; //for use storing literal values +} rs_cond_val_t; // Script stage typedef struct rs_stage_s { image_t *texture; // texture - char name[MAX_OSPATH]; // tex name + char name[MAX_OSPATH]; // texture name image_t *texture2; // texture for combining(GLSL) char name2[MAX_OSPATH]; // texture name + image_t *texture3; // texture for combining(GLSL) + char name3[MAX_OSPATH]; // texture name - char model[MAX_OSPATH]; // name of model + rs_cond_val_t *condv; // conditional expression anim_stage_t *anim_stage; // first animation stage float anim_delay; // Delay between anim frames @@ -92,13 +111,8 @@ rs_scale_t scale; // tcmod float rot_speed; // rotate speed (0 for no rotate); - float depthhack; // fake zdepth - - vec3_t origin; //origin for models; - vec3_t angle; //angles for models; - rs_frames_t frames; //frames - qboolean dynamic; // dynamic texture + qboolean depthhack; // fake zdepth qboolean envmap; // fake envmapping - spheremapping qboolean lightmap; // lightmap this stage? @@ -123,6 +137,7 @@ qboolean fx; // for glsl effect layer qboolean glow; // for glsl effect layer + qboolean cube; // for glsl effect layer struct rs_stage_s *next; // next stage } rs_stage_t; @@ -163,7 +178,6 @@ void RS_SetTexcoords2D (rs_stage_t *stage, float *os, float *ot); void RS_Surface (msurface_t *surf); void RS_LoadSpecialScripts(void); -float RS_AlphaFuncAlias (int alphafunc, float alpha, vec3_t normal, vec3_t org); #define RS_DrawPolyNoLightMap(surf) RS_DrawSurface((surf),false) diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_shadowmaps.c alien-arena-7.66+dfsg/source/ref_gl/r_shadowmaps.c --- alien-arena-7.53+dfsg/source/ref_gl/r_shadowmaps.c 2011-12-22 20:26:37.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_shadowmaps.c 2013-06-22 20:07:35.000000000 +0000 @@ -60,41 +60,30 @@ GLuint fboId[3]; GLuint rboId; -void getOpenGLFunctionPointers(void) +void R_CheckFBOExtensions (void) { - // FBO + gl_state.fbo = true; + gl_state.hasFBOblit = false; + qglGenFramebuffersEXT = (PFNGLGENFRAMEBUFFERSEXTPROC) qwglGetProcAddress("glGenFramebuffersEXT"); qglBindFramebufferEXT = (PFNGLBINDFRAMEBUFFEREXTPROC) qwglGetProcAddress("glBindFramebufferEXT"); qglFramebufferTexture2DEXT = (PFNGLFRAMEBUFFERTEXTURE2DEXTPROC) qwglGetProcAddress("glFramebufferTexture2DEXT"); qglCheckFramebufferStatusEXT = (PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC) qwglGetProcAddress("glCheckFramebufferStatusEXT"); qglGenRenderbuffersEXT = (PFNGLGENRENDERBUFFERSEXTPROC)qwglGetProcAddress("glGenRenderbuffersEXT"); - qglBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)qwglGetProcAddress("glBindRenderbufferEXT"); - qglRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)qwglGetProcAddress("glRenderbufferStorageEXT"); + qglBindRenderbufferEXT = (PFNGLBINDRENDERBUFFEREXTPROC)qwglGetProcAddress("glBindRenderbufferEXT"); + qglRenderbufferStorageEXT = (PFNGLRENDERBUFFERSTORAGEEXTPROC)qwglGetProcAddress("glRenderbufferStorageEXT"); qglFramebufferRenderbufferEXT = (PFNGLFRAMEBUFFERRENDERBUFFEREXTPROC)qwglGetProcAddress("glFramebufferRenderbufferEXT"); qglBlitFramebufferEXT = (PFNGLBLITFRAMEBUFFEREXTPROC)qwglGetProcAddress("glBlitFramebufferEXT"); -} - -//used for post process stencil volume blurring and shadowmapping -void R_GenerateShadowFBO() -{ - int shadowMapWidth = vid.width * r_shadowmapratio->value; - int shadowMapHeight = vid.height * r_shadowmapratio->value; - GLenum FBOstatus; - - gl_state.fbo = true; - - getOpenGLFunctionPointers(); if(!qglGenFramebuffersEXT || !qglBindFramebufferEXT || !qglFramebufferTexture2DEXT || !qglCheckFramebufferStatusEXT || !qglGenRenderbuffersEXT || !qglBindRenderbufferEXT || !qglRenderbufferStorageEXT || !qglFramebufferRenderbufferEXT) { - Com_Printf("...GL_FRAMEBUFFER_COMPLETE_EXT failed, CANNOT use FBO\n"); + Com_Printf("...Cannot find OpenGL Framebuffer extension, CANNOT use FBO\n"); gl_state.fbo = false; return; } // Framebuffer object blit - gl_state.hasFBOblit = false; if (strstr(gl_config.extensions_string, "GL_EXT_framebuffer_blit")) { Com_Printf("...using GL_EXT_framebuffer_blit\n"); @@ -102,13 +91,33 @@ } else { Com_Printf("...GL_EXT_framebuffer_blit not found\n"); - gl_state.hasFBOblit = false; } + + //must check for ability to blit(Many old ATI drivers do not support) + //TODO: redundant with previous check? + if(gl_state.hasFBOblit) { + if(!qglBlitFramebufferEXT) { + Com_Printf("glBlitFramebufferEXT not found...\n"); + gl_state.hasFBOblit = false; + } + } +} + + +//used for post process stencil volume blurring and shadowmapping +void R_GenerateShadowFBO() +{ + int shadowMapWidth = vid.width * r_shadowmapscale->value; + int shadowMapHeight = vid.height * r_shadowmapscale->value; + GLenum FBOstatus; + + if (!gl_state.fbo || !gl_state.hasFBOblit) + return; //FBO for shadowmapping qglBindTexture(GL_TEXTURE_2D, r_depthtexture->texnum); - // GL_LINEAR does not make sense for depth texture. However, next tutorial shows usage of GL_LINEAR and PCF + // GL_LINEAR removes pixelation - GL_NEAREST removes artifacts on outer edges in some cases qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); @@ -116,8 +125,13 @@ qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); + // This is to allow usage of shadow2DProj function in the shader + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE); + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL); + qglTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY); + // No need to force GL_DEPTH_COMPONENT24, drivers usually give you the max precision if available - qglTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, shadowMapWidth, shadowMapHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, 0); + qglTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, shadowMapWidth, shadowMapHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, 0); qglBindTexture(GL_TEXTURE_2D, 0); // create a framebuffer object @@ -144,16 +158,17 @@ //Second FBO for shadowmapping qglBindTexture(GL_TEXTURE_2D, r_depthtexture2->texnum); - // GL_LINEAR does not make sense for depth texture. However, next tutorial shows usage of GL_LINEAR and PCF - qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); - qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); - - // Remove artefact on the edges of the shadowmap - qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP ); - qglTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP ); + // GL_LINEAR removes pixelation - GL_NEAREST removes artifacts on outer edges in some cases + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + + // This is to allow usage of shadow2DProj function in the shader + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_MODE, GL_COMPARE_R_TO_TEXTURE); + qglTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_COMPARE_FUNC, GL_LEQUAL); + qglTexParameteri(GL_TEXTURE_2D, GL_DEPTH_TEXTURE_MODE, GL_INTENSITY); // No need to force GL_DEPTH_COMPONENT24, drivers usually give you the max precision if available - qglTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT, shadowMapWidth, shadowMapHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, 0); + qglTexImage2D( GL_TEXTURE_2D, 0, GL_DEPTH_COMPONENT16, shadowMapWidth, shadowMapHeight, 0, GL_DEPTH_COMPONENT, GL_UNSIGNED_BYTE, 0); qglBindTexture(GL_TEXTURE_2D, 0); // create a framebuffer object @@ -179,16 +194,6 @@ //FBO for capturing stencil volumes - //must check for abilit to blit(Many old ATI drivers do not support) - if(gl_state.hasFBOblit) { - if(!qglBlitFramebufferEXT) { - Com_Printf("qglBlitFramebufferEXT not found...\n"); - //no point in continuing on - gl_state.hasFBOblit = false; - return; - } - } - qglBindTexture(GL_TEXTURE_2D, r_colorbuffer->texnum); qglTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, vid.width, vid.height, 0, GL_RGBA, GL_UNSIGNED_BYTE, 0); qglBindTexture(GL_TEXTURE_2D, 0); @@ -217,6 +222,19 @@ if(FBOstatus != GL_FRAMEBUFFER_COMPLETE_EXT) Com_Printf("GL_FRAMEBUFFER_COMPLETE_EXT failed, CANNOT use secondary FBO\n"); + // In the case we render the shadowmap to a higher resolution, the viewport must be modified accordingly. + qglViewport(0,0,vid.width,vid.height); + + // Initialize frame values. + // This only makes a difference if the viewport is less than the screen + // size, like when the netgraph is on-- otherwise it's redundant with + // later glClear calls. + qglClearColor (1, 1, 1, 1); + qglClear( GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT | GL_COLOR_BUFFER_BIT ); + + // back to previous screen coordinates + R_SetupViewport (); + // switch back to window-system-provided framebuffer qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); } @@ -224,7 +242,6 @@ #define M3D_INV_PI_DIV_180 (57.2957795130823229) #define m3dRadToDeg(x) ((x)*M3D_INV_PI_DIV_180) - static void normalize( float vec[3] ) { float len; @@ -284,7 +301,7 @@ qglMatrixMode(GL_PROJECTION); qglLoadIdentity(); - MYgluPerspective(120.0f, vid.width/vid.height, 10.0f, 4096.0f); + MYgluPerspective(120.0f, r_newrefdef.width/r_newrefdef.height, 10.0f, 4096.0f); qglMatrixMode(GL_MODELVIEW); qglLoadIdentity(); lookAt( position_x , position_y , position_z , lookAt_x , lookAt_y , lookAt_z ); @@ -329,6 +346,7 @@ qglMatrixMode(GL_MODELVIEW); qglActiveTextureARB(GL_TEXTURE0); + } /* @@ -356,6 +374,8 @@ for (i=0,clipplane=frustum ; i<4 ; i++,clipplane++) { + if (!(clipflags & (1<minmaxs, node->minmaxs+3, clipplane); if (clipped == 1) @@ -398,6 +418,9 @@ if (surf->visframe != r_framecount) continue; + if (R_CullBox (surf->mins, surf->maxs)) + continue; + if (surf->texinfo->flags & SURF_SKY) { // no skies here continue; @@ -408,7 +431,7 @@ } else { - if (!( surf->flags & SURF_DRAWTURB ) ) + if (!( surf->iflags & ISURF_DRAWTURB ) ) { BSP_DrawTexturelessPoly (surf); } @@ -420,12 +443,175 @@ } +inline float point_dist_from_plane (cplane_t *plane, vec3_t point) +{ + switch (plane->type) + { + case PLANE_X: + return point[0] - plane->dist; + case PLANE_Y: + return point[1] - plane->dist; + case PLANE_Z: + return point[2] - plane->dist; + default: + return DotProduct (point, plane->normal) - plane->dist; + } +} + +/* +================ +SM_RecursiveWorldNode2 - this variant of the classic routine renders only one side for shadowing +================ +*/ + +static float fadeshadow_cutoff; + +void SM_RecursiveWorldNode2 (mnode_t *node, int clipflags, vec3_t origin, vec3_t absmins, vec3_t absmaxs) +{ + int c; + float dist, dist_model, dist_light; + int side, side_model, side_light; + cplane_t *plane; + msurface_t *surf, **mark; + mleaf_t *pleaf; + qboolean caster_off_plane; + + if (node->contents == CONTENTS_SOLID) + return; // solid + + if (node->visframe != r_visframecount) + return; + + if (!r_nocull->value) + { + int i, clipped; + cplane_t *clipplane; + + for (i=0,clipplane=frustum ; i<4 ; i++,clipplane++) + { + if (!(clipflags & (1<minmaxs, node->minmaxs+3, clipplane); + + if (clipped == 1) + clipflags &= ~(1<contents != -1) + { + pleaf = (mleaf_t *)node; + + // check for door connected areas + if (r_newrefdef.areabits) + { + if (! (r_newrefdef.areabits[pleaf->area>>3] & (1<<(pleaf->area&7)) ) ) + return; // not visible + } + + mark = pleaf->firstmarksurface; + if (! (c = pleaf->nummarksurfaces) ) + return; + + do + { + (*mark++)->visframe = r_framecount; + } while (--c); + + return; + } + + // node is just a decision point, so go down the apropriate sides + + // find which side of the node we are on + plane = node->plane; + + dist = point_dist_from_plane (plane, r_origin); + dist_model = point_dist_from_plane (plane, origin); + dist_light = point_dist_from_plane (plane, statLightPosition); + + side = dist < 0; + side_model = dist_model < 0; + side_light = dist_light < 0; + + dist = fabs (dist); + dist_model = fabs (dist_model); + dist_light = fabs (dist_light); + + //TODO: figure out the cutoff distance based on mins and maxs? + caster_off_plane = (dist_model > 64.0f) || (BoxOnPlaneSide (absmins, absmaxs, plane) != 3); + + if (side != side_model && caster_off_plane) + { + if (side != side_light) + { + if (dist_light < dist_model) + goto skip_draw; + } + else + goto skip_draw; + } + + // recurse down the children, front side first + SM_RecursiveWorldNode2 (node->children[side], clipflags, origin, absmins, absmaxs); + + // draw stuff + for ( c = node->numsurfaces, surf = r_worldmodel->surfaces + node->firstsurface; c ; c--, surf++) + { + if (surf->visframe != r_framecount) + continue; + + if (R_CullBox (surf->mins, surf->maxs)) + continue; + + if (surf->texinfo->flags & SURF_SKY) + { // no skies here + continue; + } + else if (SurfaceIsTranslucent(surf) || SurfaceIsAlphaBlended(surf)) + { // no trans surfaces + continue; + } + else + { + if (!( surf->iflags & ISURF_DRAWTURB ) ) + { + BSP_DrawShadowPoly (surf, origin); + } + } + } + + if (side == side_model && caster_off_plane) + { + if (side == side_light) + { + if (dist_light < dist_model) + return; + } + else + return; + } + +skip_draw: + + if (dist >= fadeshadow_cutoff+512) + return; + + // recurse down the back side + SM_RecursiveWorldNode2 (node->children[!side], clipflags, origin, absmins, absmaxs); +} + + /* ============= R_DrawWorld ============= */ -void R_DrawShadowMapWorld (void) + +void R_DrawShadowMapWorld (qboolean forEnt, vec3_t origin) { int i; @@ -435,34 +621,75 @@ if ( r_newrefdef.rdflags & RDF_NOWORLDMODEL ) return; - SM_RecursiveWorldNode (r_worldmodel->nodes, 15); - - //draw brush models - for (i=0 ; iflags & RF_TRANSLUCENT) - continue; // transluscent + vec3_t absmins, absmaxs; + + glUseProgramObjectARB( g_shadowprogramObj ); - currentmodel = currententity->model; + glUniform1iARB( g_location_entShadow, 6); + qglActiveTextureARB(GL_TEXTURE6); + qglBindTexture(GL_TEXTURE_2D, r_depthtexture2->texnum); + + glUniform1fARB( g_location_xOffset, 1.0/(r_newrefdef.width*r_shadowmapscale->value)); + glUniform1fARB( g_location_yOffset, 1.0/(r_newrefdef.height*r_shadowmapscale->value)); + + glUniform1fARB( g_location_fadeShadow, fadeShadow ); + + R_InitVArrays(VERT_NO_TEXTURE); + + VectorAdd (currentmodel->mins, origin, absmins); + VectorAdd (currentmodel->maxs, origin, absmaxs); + + SM_RecursiveWorldNode2 (r_worldmodel->nodes, 15, origin, absmins, absmaxs); + + R_KillVArrays(); + + glUseProgramObjectARB( 0 ); - if (!currentmodel) + qglActiveTextureARB(GL_TEXTURE0); + + return; + } + else + { + R_InitVArrays(VERT_NO_TEXTURE); + + SM_RecursiveWorldNode (r_worldmodel->nodes, 15); + + R_KillVArrays(); + + //draw brush models(not for ent shadow, for now) + for (i=0 ; iflags & RF_TRANSLUCENT) + continue; // transluscent + + currentmodel = currententity->model; + + if (!currentmodel) + { + continue; + } + if( currentmodel->type == mod_brush) + BSP_DrawTexturelessBrushModel (currententity); + else + continue; } - if( currentmodel->type == mod_brush) - BSP_DrawTexturelessBrushModel (currententity); - else - continue; } } +#include "r_lodcalc.h" + +extern cvar_t *cl_simpleitems; void R_DrawDynamicCaster(void) { int i; vec3_t dist, mins, maxs; trace_t r_trace; int RagDollID; + vec3_t origin = {0, 0, 0}; VectorSet(mins, 0, 0, 0); VectorSet(maxs, 0, 0, 0); @@ -477,7 +704,7 @@ qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT,fboId[0]); // In the case we render the shadowmap to a higher resolution, the viewport must be modified accordingly. - qglViewport(0,0,(int)(vid.width * r_shadowmapratio->value),(int)(vid.height * r_shadowmapratio->value)); + qglViewport(0,0,(int)(vid.width * r_shadowmapscale->value),(int)(vid.height * r_shadowmapscale->value)); // Clear previous frame values qglClear( GL_DEPTH_BUFFER_BIT); @@ -498,7 +725,7 @@ qglPolygonOffset( 0.5f, 0.5f ); //render world - very basic geometry - R_DrawShadowMapWorld(); + R_DrawShadowMapWorld(false, origin); //render entities near light for (i=0 ; iinteger && currententity->model->simple_texnum != 0) + continue; //TODO: simple items casting shadows? if(r_ragdolls->value && currententity->model->type == mod_iqm && currententity->model->hasRagDoll) { @@ -534,16 +764,22 @@ currentmodel = currententity->model; - //get view distance, set lod if available + //get distance VectorSubtract(r_origin, currententity->origin, dist); - if(VectorLength(dist) > 300) { + + //set lod if available + if(VectorLength(dist) > LOD_DIST*(3.0/5.0)) + { if(currententity->lod2) currentmodel = currententity->lod2; } - else if(VectorLength(dist) > 100) { + else if(VectorLength(dist) > LOD_DIST*(1.0/5.0)) + { if(currententity->lod1) currentmodel = currententity->lod1; } + if (currententity->lod2) + currentmodel = currententity->lod2; if(currentmodel->type == mod_iqm) IQM_DrawCaster (); @@ -619,15 +855,13 @@ angles[ROLL] = 0.0f; } -void R_DrawVegetationCasters ( void ) +void R_DrawVegetationCasters ( qboolean forShadows ) { int i, k; grass_t *grass; float scale; - vec3_t dir, origin, mins, maxs, angle, right, up, corner[4]; + vec3_t dir, origin, angle, right, up, corner[4]; float *corner0 = corner[0]; - qboolean visible; - trace_t r_trace; float sway; if(r_newrefdef.rdflags & RDF_NOWORLDMODEL) @@ -635,41 +869,34 @@ grass = r_grasses; - VectorSet(mins, 0, 0, 0); - VectorSet(maxs, 0, 0, 0); - R_InitVArrays (VERT_SINGLE_TEXTURED); - for (i=0; itype) continue; //only deal with leaves, grass shadows look kind of bad - scale = 10.0*grass->size; + if(grass->sunVisible) + { + scale = 10.0*grass->size; - VectorSubtract(r_sunLight->origin, r_sunLight->target, dir); - R_Vectoangles(dir, angle); + VectorSubtract(r_sunLight->origin, r_sunLight->target, dir); + R_Vectoangles(dir, angle); - AngleVectors(angle, NULL, right, up); - VectorScale(right, scale, right); - VectorScale(up, scale, up); - VectorCopy(grass->origin, origin); - - // adjust vertical position, scaled - origin[2] += (grass->texsize/32) * grass->size; - - //cull for pathline to sunlight - r_trace = CM_BoxTrace(r_sunLight->origin, origin, maxs, mins, r_worldmodel->firstnode, MASK_VISIBILILITY); - visible = r_trace.fraction == 1.0; + AngleVectors(angle, NULL, right, up); + VectorScale(right, scale, right); + VectorScale(up, scale, up); - if(visible) { + VectorCopy(grass->origin, origin); //render grass polygon - GL_Bind(grass->texnum); + + GL_SelectTexture( GL_TEXTURE0); + qglBindTexture (GL_TEXTURE_2D, grass->texnum); GLSTATE_ENABLE_ALPHATEST - qglColor4f( grass->color[0],grass->color[1],grass->color[2], 1 ); + qglColor4f( 0, 0, 0, 1 ); VectorSet (corner[0], origin[0] + (up[0] + right[0])*(-0.5), @@ -695,13 +922,14 @@ VArray = &VArrayVerts[0]; - for(k = 0; k < 4; k++) { - + for(k = 0; k < 4; k++) + { VArray[0] = corner[k][0]; VArray[1] = corner[k][1]; VArray[2] = corner[k][2]; - switch(k) { + switch(k) + { case 0: VArray[3] = 1; VArray[4] = 1; @@ -723,9 +951,10 @@ VArray += VertexSizes[VERT_SINGLE_TEXTURED]; } - R_DrawVarrays(GL_QUADS, 0, 4, false); + R_DrawVarrays(GL_QUADS, 0, 4); - r_shadowmapcount = 2; + if(forShadows) + r_shadowmapcount = 2; } } @@ -745,7 +974,7 @@ qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT,fboId[1]); // In the case we render the shadowmap to a higher resolution, the viewport must be modified accordingly. - qglViewport(0,0,(int)(vid.width * r_shadowmapratio->value),(int)(vid.height * r_shadowmapratio->value)); + qglViewport(0,0,(int)(vid.width * r_shadowmapscale->value),(int)(vid.height * r_shadowmapscale->value)); //Clear previous frame values qglClear( GL_DEPTH_BUFFER_BIT); @@ -767,7 +996,238 @@ qglPolygonOffset( 0.5f, 0.5f ); //render vegetation - R_DrawVegetationCasters(); + R_DrawVegetationCasters(true); + + SM_SetTextureMatrix(1); + + qglDepthMask (1); // back to writing + + qglPolygonOffset( 0.0f, 0.0f ); + qglDisable( GL_POLYGON_OFFSET_FILL ); + qglEnable(GL_CULL_FACE); +} + +void R_DrawEntityCaster(entity_t *ent) +{ + vec3_t dist, mins, maxs; + trace_t r_trace; + + VectorSet(mins, 0, 0, 0); + VectorSet(maxs, 0, 0, 0); + + r_shadowmapcount = 0; + + //check caster validity + if (ent->flags & RF_NOSHADOWS || ent->flags & RF_TRANSLUCENT) + return; + + if(!ent->model) + return; + + if (cl_simpleitems->integer && ent->model->simple_texnum != 0) + return; + + if(r_ragdolls->value && ent->model->type == mod_iqm && ent->model->hasRagDoll) + { + if(ent->frame > 198) + return; + } + + //trace visibility from light - we don't render objects the light doesn't hit! + r_trace = CM_BoxTrace(statLightPosition, ent->origin, mins, maxs, r_worldmodel->firstnode, MASK_OPAQUE); + if(r_trace.fraction != 1.0) + return; + + qglMatrixMode(GL_PROJECTION); + qglPushMatrix(); + qglMatrixMode(GL_MODELVIEW); + qglPushMatrix(); + + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT,fboId[1]); + + // In the case we render the shadowmap to a higher resolution, the viewport must be modified accordingly. + qglViewport(0,0,(int)(vid.width * r_shadowmapscale->value),(int)(vid.height * r_shadowmapscale->value)); + + //Clear previous frame values + qglClear( GL_DEPTH_BUFFER_BIT); + + //Disable color rendering, we only want to write to the Z-Buffer + qglColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + + // Culling switching, rendering only frontfaces + qglDisable(GL_CULL_FACE); + + // attach the texture to FBO depth attachment point + qglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,GL_TEXTURE_2D, r_depthtexture2->texnum, 0); + + //get light origin + //set camera + SM_SetupMatrices(statLightPosition[0],statLightPosition[1],statLightPosition[2]+64,ent->origin[0],ent->origin[1],ent->origin[2]-128); + + qglEnable( GL_POLYGON_OFFSET_FILL ); + qglPolygonOffset( 0.5f, 0.5f ); + + //we could loop the entities here, and render any nearby models, to make sure we get shadows on the this entity if a mesh is nearby. + //this would be only if we want to do self shadowing, or have player shadows cast on other mesh objects. At this time, I think that the + //performance losses would not be worth doing this, but we can revisit. + + currentmodel = ent->model; + + //get view distance + VectorSubtract(r_origin, ent->origin, dist); + + //set lod if available + if(VectorLength(dist) > LOD_DIST*(3.0/5.0)) + { + if(currententity->lod2) + currentmodel = currententity->lod2; + } + else if(VectorLength(dist) > LOD_DIST*(1.0/5.0)) + { + if(currententity->lod1) + currentmodel = currententity->lod1; + } + if (currententity->lod2) + currentmodel = currententity->lod2; + + if(currentmodel->type == mod_iqm) + IQM_DrawCaster (); + else + MD2_DrawCaster (); + + SM_SetTextureMatrix(1); + + qglDepthMask (1); // back to writing + + qglPolygonOffset( 0.0f, 0.0f ); + qglDisable( GL_POLYGON_OFFSET_FILL ); + qglEnable(GL_CULL_FACE); + + // back to previous screen coordinates + R_SetupViewport (); + + qglPopMatrix(); + qglMatrixMode(GL_PROJECTION); + qglPopMatrix(); + qglMatrixMode(GL_MODELVIEW); + + r_shadowmapcount = 1; +} + +void R_GenerateEntityShadow( void ) +{ + if(gl_shadowmaps->integer && gl_state.vbo && gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) + { + vec3_t dist, tmp; + float rad; + + if((r_newrefdef.rdflags & RDF_NOWORLDMODEL) || (currententity->flags & RF_MENUMODEL)) + return; + + if (r_newrefdef.vieworg[2] < (currententity->origin[2] - 128)) + return; + + VectorSubtract(currententity->model->maxs, currententity->model->mins, tmp); + VectorScale (tmp, 1.666, tmp); + rad = VectorLength (tmp); + + if( R_CullSphere( currententity->origin, rad, 15 ) ) + return; + + //get view distance + VectorSubtract(r_origin, currententity->origin, dist); + + //fade out shadows both by distance from view, and by distance from light + fadeshadow_cutoff = r_shadowcutoff->value * (LOD_DIST/LOD_BASE_DIST); + + if (r_shadowcutoff->value < 0.1) + fadeShadow = 1.0; + else if (VectorLength (dist) > fadeshadow_cutoff) + { + fadeShadow = VectorLength(dist) - fadeshadow_cutoff; + if (fadeShadow > 512) + return; + else + fadeShadow = 1.0 - fadeShadow/512.0; //fade out smoothly over 512 units. + } + else + fadeShadow = 1.0; + + qglEnable(GL_DEPTH_TEST); + qglClearColor(0,0,0,1.0f); + + qglHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); + + R_DrawEntityCaster(currententity); + + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT,0); + + //Enabling color write (previously disabled for light POV z-buffer rendering) + qglColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + + //re-render affected polys with shadowmap for this entity + if(r_shadowmapcount > 0) + { + qglEnable( GL_BLEND ); + qglBlendFunc (GL_ZERO, GL_SRC_COLOR); + + R_DrawShadowMapWorld(true, currententity->origin); + + qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + qglDisable ( GL_BLEND ); + } + + currentmodel = currententity->model; + + r_shadowmapcount = 0; + } +} + +void R_DrawRagdollCaster(int RagDollID) +{ + vec3_t mins, maxs; + trace_t r_trace; + + VectorSet(mins, 0, 0, 0); + VectorSet(maxs, 0, 0, 0); + + r_shadowmapcount = 0; + + //trace visibility from light - we don't render objects the light doesn't hit! + r_trace = CM_BoxTrace(statLightPosition, RagDoll[RagDollID].origin, mins, maxs, r_worldmodel->firstnode, MASK_OPAQUE); + if(r_trace.fraction != 1.0) + return; + + qglMatrixMode(GL_PROJECTION); + qglPushMatrix(); + qglMatrixMode(GL_MODELVIEW); + qglPushMatrix(); + + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT,fboId[1]); + + // In the case we render the shadowmap to a higher resolution, the viewport must be modified accordingly. + qglViewport(0,0,(int)(vid.width * r_shadowmapscale->value),(int)(vid.height * r_shadowmapscale->value)); + + //Clear previous frame values + qglClear( GL_DEPTH_BUFFER_BIT); + + //Disable color rendering, we only want to write to the Z-Buffer + qglColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); + + // Culling switching, rendering only frontfaces + qglDisable(GL_CULL_FACE); + + // attach the texture to FBO depth attachment point + qglFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT,GL_TEXTURE_2D, r_depthtexture2->texnum, 0); + + //get light origin + //set camera + SM_SetupMatrices(statLightPosition[0],statLightPosition[1],statLightPosition[2]+64,RagDoll[RagDollID].origin[0],RagDoll[RagDollID].origin[1],RagDoll[RagDollID].origin[2]-128); + + qglEnable( GL_POLYGON_OFFSET_FILL ); + qglPolygonOffset( 0.5f, 0.5f ); + + IQM_DrawRagDollCaster ( RagDollID ); SM_SetTextureMatrix(1); @@ -777,4 +1237,76 @@ qglDisable( GL_POLYGON_OFFSET_FILL ); qglEnable(GL_CULL_FACE); + // back to previous screen coordinates + R_SetupViewport (); + + qglPopMatrix(); + qglMatrixMode(GL_PROJECTION); + qglPopMatrix(); + qglMatrixMode(GL_MODELVIEW); + + r_shadowmapcount = 1; +} + +void R_GenerateRagdollShadow( int RagDollID ) +{ + if(gl_shadowmaps->integer && gl_state.vbo && gl_glsl_shaders->integer && gl_state.glsl_shaders && gl_normalmaps->integer) + { + vec3_t dist, tmp; + float rad; + + VectorSubtract(RagDoll[RagDollID].ragDollMesh->maxs, RagDoll[RagDollID].ragDollMesh->mins, tmp); + VectorScale (tmp, 1.666, tmp); + rad = VectorLength (tmp); + + if( R_CullSphere( RagDoll[RagDollID].origin, rad, 15 ) ) + return; + + //get view distance + VectorSubtract(r_origin, RagDoll[RagDollID].origin, dist); + + //fade out shadows both by distance from view, and by distance from light + fadeshadow_cutoff = r_shadowcutoff->value * (LOD_DIST/LOD_BASE_DIST); + + if (r_shadowcutoff->value < 0.1) + fadeShadow = 1.0; + else if (VectorLength (dist) > fadeshadow_cutoff) + { + fadeShadow = VectorLength(dist) - fadeshadow_cutoff; + if (fadeShadow > 512) + return; + else + fadeShadow = 1.0 - fadeShadow/512.0; //fade out smoothly over 512 units. + } + else + fadeShadow = 1.0; + + qglEnable(GL_DEPTH_TEST); + qglClearColor(0,0,0,1.0f); + + qglHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); + + R_DrawRagdollCaster(RagDollID); + + qglBindFramebufferEXT(GL_FRAMEBUFFER_EXT,0); + + //Enabling color write (previously disabled for light POV z-buffer rendering) + qglColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); + + //re-render affected polys with shadowmap for this entity(note - blend "if darker"). + if(r_shadowmapcount > 0) + { + qglEnable( GL_BLEND ); + qglBlendFunc (GL_ZERO, GL_SRC_COLOR); + + R_DrawShadowMapWorld(true, RagDoll[RagDollID].origin); + + qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); + qglDisable ( GL_BLEND ); + } + + currentmodel = RagDoll[RagDollID].ragDollMesh; + + r_shadowmapcount = 0; + } } diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_shadows.c alien-arena-7.66+dfsg/source/ref_gl/r_shadows.c --- alien-arena-7.53+dfsg/source/ref_gl/r_shadows.c 2011-12-22 23:10:01.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_shadows.c 2013-06-22 20:07:35.000000000 +0000 @@ -142,42 +142,6 @@ } } -void SHD_MarkIQMShadowTriangles(vec3_t lightOrg) -{ - vec3_t r_triangleNormals[MAX_INDICES / 3]; - vec3_t temp, dir0, dir1; - int i; - float f; - float *v0, *v1, *v2; - - for (i = 0; i < currentmodel->num_triangles; i++) - { - v0 = (float*)currentmodel->animatevertexes[currentmodel->tris[i].vertex[0]].position; - v1 = (float*)currentmodel->animatevertexes[currentmodel->tris[i].vertex[1]].position; - v2 = (float*)currentmodel->animatevertexes[currentmodel->tris[i].vertex[2]].position; - - //Calculate shadow volume triangle normals - VectorSubtract( v0, v1, dir0 ); - VectorSubtract( v2, v1, dir1 ); - - CrossProduct( dir0, dir1, r_triangleNormals[i] ); - - // Find front facing triangles - VectorSubtract(lightOrg, v0, temp); - f = DotProduct(temp, r_triangleNormals[i]); - - triangleFacingLight[i] = f > 0; - } -} - -/* Notes on this section of code - In my tests, it appears that using VBO/IBO for rendering these shadows - is actually a tad slower than just building them each time. There are also - some odd problems regarding the bobbing items, as well as the issue with gibs - or any other moving object. The code is left here, commented out, because there - are some useful things that could be used in other places of the engine. However - for shadows, it appears to be quite useless. -*/ void SHD_BuildShadowVolume(dmdl_t * hdr, vec3_t light, float projectdistance, qboolean lerp) { dtriangle_t *ot, *tris; @@ -190,22 +154,6 @@ daliasframe_t *frame; dtrivertx_t *verts; - //check for vbo -#ifdef SHADOWVBO - if(gl_state.vbo && !lerp && !(currententity->flags & RF_BOBBING)) - { - currentmodel->vbo_shadowxyz = R_VCFindCache(VBO_STORE_SHADOWXYZ, currententity); - { - if (currentmodel->vbo_shadowxyz) - { - currentmodel->vbo_shadowindices = R_VCFindCache(VBO_STORE_SHADOWINDICES, currententity); - if(currentmodel->vbo_shadowindices) - goto skipLoad; - } - } - } -#endif - frame = (daliasframe_t *) ((byte *) hdr + hdr->ofs_frames + currententity->frame * hdr->framesize); verts = frame->verts; @@ -389,207 +337,16 @@ ShadowIndex[index++] = shadow_vert+0; shadow_vert +=3; } -#ifdef SHADOWVBO - //store vbo - if(gl_state.vbo && !lerp) - { - currentmodel->vbo_shadowxyz = R_VCLoadData(VBO_DYNAMIC, index*sizeof(vec3_t), ShadowArray, VBO_STORE_SHADOWXYZ, currententity); - currentmodel->vbo_shadowindices = R_VCLoadData(VBO_DYNAMIC, index*sizeof(unsigned int), ShadowIndex, VBO_STORE_SHADOWINDICES, currententity); - //Com_Printf("Loading shadow vbo\n"); - } - -skipLoad: - - if(gl_state.vbo && !lerp) - { - GL_BindVBO(currentmodel->vbo_shadowxyz); - qglVertexPointer(3, GL_FLOAT, sizeof(vec3_t), 0); - - GL_BindIBO(currentmodel->vbo_shadowindices); - - qglDrawElements(GL_TRIANGLES, currentmodel->vbo_shadowxyz->size/sizeof(vec3_t), GL_UNSIGNED_INT, 0); - - GL_BindVBO(NULL); - GL_BindIBO(NULL); - } - else -#endif - { - if(shadow_vert > 0) - { - if(gl_state.vbo) - GL_BindVBO(NULL); //make sure that we aren't using an invalid buffer - - if ( qglLockArraysEXT != 0 ) - qglLockArraysEXT( 0, shadow_vert ); - - qglDrawElements(GL_TRIANGLES, index, GL_UNSIGNED_INT, ShadowIndex); - - if ( qglUnlockArraysEXT != 0 ) - qglUnlockArraysEXT(); - } - } -} - - -void SHD_BuildIQMShadowVolume(vec3_t light, float projectdistance) -{ - int i, j, shadow_vert = 0, index = 0; - unsigned ShadowIndex[MAX_INDICES]; - vec3_t v0, v1, v2, v3; - vec3_t currentShadowLight; - - SHD_MarkIQMShadowTriangles(light); - - VectorCopy(light, currentShadowLight); - - //note - do we really need this extra pointer stuff? Just access it directly - - for (i = 0; i < currentmodel->num_triangles; i++) - { - if (!triangleFacingLight[i]) - continue; - - if (currentmodel->neighbors[i].n[0] < 0 || !triangleFacingLight[currentmodel->neighbors[i].n[0]]) - { - for (j = 0; j < 3; j++) - { - - v0[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[1]].position[j]; - v1[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[0]].position[j]; - - v2[j] = v1[j] + ((v1[j] - light[j]) * projectdistance); - v3[j] = v0[j] + ((v0[j] - light[j]) * projectdistance); - - } - - VA_SetElem3(ShadowArray[shadow_vert+0], v0[0], v0[1], v0[2]); - VA_SetElem3(ShadowArray[shadow_vert+1], v1[0], v1[1], v1[2]); - VA_SetElem3(ShadowArray[shadow_vert+2], v2[0], v2[1], v2[2]); - VA_SetElem3(ShadowArray[shadow_vert+3], v3[0], v3[1], v3[2]); - - - ShadowIndex[index++] = shadow_vert+0; - ShadowIndex[index++] = shadow_vert+1; - ShadowIndex[index++] = shadow_vert+3; - ShadowIndex[index++] = shadow_vert+3; - ShadowIndex[index++] = shadow_vert+1; - ShadowIndex[index++] = shadow_vert+2; - shadow_vert +=4; - } - - if (currentmodel->neighbors[i].n[1] < 0 || !triangleFacingLight[currentmodel->neighbors[i].n[1]]) - { - for (j = 0; j < 3; j++) { - - v0[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[2]].position[j]; - v1[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[1]].position[j]; - - v2[j] = v1[j] + ((v1[j] - light[j]) * projectdistance); - v3[j] = v0[j] + ((v0[j] - light[j]) * projectdistance); - } - - VA_SetElem3(ShadowArray[shadow_vert+0], v0[0], v0[1], v0[2]); - VA_SetElem3(ShadowArray[shadow_vert+1], v1[0], v1[1], v1[2]); - VA_SetElem3(ShadowArray[shadow_vert+2], v2[0], v2[1], v2[2]); - VA_SetElem3(ShadowArray[shadow_vert+3], v3[0], v3[1], v3[2]); - - - ShadowIndex[index++] = shadow_vert+0; - ShadowIndex[index++] = shadow_vert+1; - ShadowIndex[index++] = shadow_vert+3; - ShadowIndex[index++] = shadow_vert+3; - ShadowIndex[index++] = shadow_vert+1; - ShadowIndex[index++] = shadow_vert+2; - shadow_vert +=4; - } - - if (currentmodel->neighbors[i].n[2] < 0 || !triangleFacingLight[currentmodel->neighbors[i].n[2]]) - { - for (j = 0; j < 3; j++) - { - - v0[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[0]].position[j]; - v1[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[2]].position[j]; - - v2[j] = v1[j] + ((v1[j] - light[j]) * projectdistance); - v3[j] = v0[j] + ((v0[j] - light[j]) * projectdistance); - } - - VA_SetElem3(ShadowArray[shadow_vert+0], v0[0], v0[1], v0[2]); - VA_SetElem3(ShadowArray[shadow_vert+1], v1[0], v1[1], v1[2]); - VA_SetElem3(ShadowArray[shadow_vert+2], v2[0], v2[1], v2[2]); - VA_SetElem3(ShadowArray[shadow_vert+3], v3[0], v3[1], v3[2]); - - ShadowIndex[index++] = shadow_vert+0; - ShadowIndex[index++] = shadow_vert+1; - ShadowIndex[index++] = shadow_vert+3; - ShadowIndex[index++] = shadow_vert+3; - ShadowIndex[index++] = shadow_vert+1; - ShadowIndex[index++] = shadow_vert+2; - shadow_vert +=4; - } - } - - // triangle is frontface and therefore casts shadow, - // output front and back caps for shadow volume front cap - - for (i = 0; i < currentmodel->num_triangles; i++) - { - if (!triangleFacingLight[i]) - continue; - - for (j = 0; j < 3; j++) - { - v0[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[0]].position[j]; - v1[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[1]].position[j]; - v2[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[2]].position[j]; - } - - VA_SetElem3(ShadowArray[shadow_vert+0], v0[0], v0[1], v0[2]); - VA_SetElem3(ShadowArray[shadow_vert+1], v1[0], v1[1], v1[2]); - VA_SetElem3(ShadowArray[shadow_vert+2], v2[0], v2[1], v2[2]); - - ShadowIndex[index++] = shadow_vert+0; - ShadowIndex[index++] = shadow_vert+1; - ShadowIndex[index++] = shadow_vert+2; - shadow_vert +=3; - - // rear cap (with flipped winding order) - - for (j = 0; j < 3; j++) - { - v0[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[0]].position[j]; - v1[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[1]].position[j]; - v2[j] = currentmodel->animatevertexes[currentmodel->tris[i].vertex[2]].position[j]; - - v0[j] = v0[j] + ((v0[j] - light[j]) * projectdistance); - v1[j] = v1[j] + ((v1[j] - light[j]) * projectdistance); - v2[j] = v2[j] + ((v2[j] - light[j]) * projectdistance); - } - - VA_SetElem3(ShadowArray[shadow_vert+0], v0[0], v0[1], v0[2]); - VA_SetElem3(ShadowArray[shadow_vert+1], v1[0], v1[1], v1[2]); - VA_SetElem3(ShadowArray[shadow_vert+2], v2[0], v2[1], v2[2]); - - ShadowIndex[index++] = shadow_vert+2; - ShadowIndex[index++] = shadow_vert+1; - ShadowIndex[index++] = shadow_vert+0; - shadow_vert +=3; - } if(shadow_vert > 0) { - if(gl_state.vbo) - GL_BindVBO(NULL); //make sure that we aren't using an invalid buffer - if ( qglLockArraysEXT != 0 ) - qglLockArraysEXT( 0, shadow_vert ); + qglLockArraysEXT( 0, shadow_vert ); qglDrawElements(GL_TRIANGLES, index, GL_UNSIGNED_INT, ShadowIndex); - + if ( qglUnlockArraysEXT != 0 ) - qglUnlockArraysEXT(); + qglUnlockArraysEXT(); } } @@ -626,40 +383,6 @@ } } -void SHD_RenderIQMVolumes(vec3_t lightdir, int projdist) -{ - int incr = gl_state.stencil_wrap ? GL_INCR_WRAP_EXT : GL_INCR; - int decr = gl_state.stencil_wrap ? GL_DECR_WRAP_EXT : GL_DECR; - - if(VectorCompare(lightdir, vec3_origin)) - return; - - if(gl_state.separateStencil) - { - qglDisable(GL_CULL_FACE); - - qglStencilOpSeparate(GL_BACK, GL_KEEP, incr, GL_KEEP); - qglStencilOpSeparate(GL_FRONT, GL_KEEP, decr, GL_KEEP); - - SHD_BuildIQMShadowVolume(lightdir, projdist); - - qglEnable(GL_CULL_FACE); - } - else - { - qglEnable(GL_CULL_FACE); - - qglCullFace(GL_BACK); - qglStencilOp(GL_KEEP, incr, GL_KEEP); - - SHD_BuildIQMShadowVolume(lightdir, projdist); - - qglCullFace(GL_FRONT); - qglStencilOp(GL_KEEP, decr, GL_KEEP); - SHD_BuildIQMShadowVolume(lightdir, projdist); - } -} - void SHD_DrawAliasShadowVolume(dmdl_t * paliashdr, qboolean lerp) { vec3_t light, temp, tempOrg; @@ -746,113 +469,6 @@ SHD_RenderVolumes(paliashdr, light, project, lerp); } -void SHD_DrawIQMShadowVolume( vec3_t meshOrigin, vec3_t meshAngles, qboolean RagDoll ) -{ - vec3_t light, temp, tempOrg; - int i, j, o; - float cost, sint; - float is, it, dist; - int worldlight = 0; - float numlights, weight; - float bob, project; - trace_t r_trace; - vec3_t mins, maxs, lightAdd; - - VectorSet(mins, 0, 0, 0); - VectorSet(maxs, 0, 0, 0); - - if((currententity->flags & RF_BOBBING) && !RagDoll) - bob = currententity->bob; - else - bob = 0; - - VectorCopy(meshOrigin, tempOrg); - tempOrg[2] -= bob; - - VectorClear(light); - - cost = cos(-meshAngles[1] / 180 * M_PI), - sint = sin(-meshAngles[1] / 180 * M_PI); - - numlights = 0; - VectorClear(lightAdd); - for (i=0; iflags & RF_VIEWERMODEL)) - { - r_trace = CM_BoxTrace(tempOrg, LightGroups[i].group_origin, mins, maxs, r_worldmodel->firstnode, MASK_OPAQUE); - if(r_trace.fraction != 1.0) - continue; - } - - VectorSubtract(LightGroups[i].group_origin, meshOrigin, temp); - - dist = VectorLength(temp); - - //accum and weight - weight = (int)250000/(dist/(LightGroups[i].avg_intensity+1.0f)); - for(j = 0; j < 3; j++) - lightAdd[j] += LightGroups[i].group_origin[j]*weight; - numlights+=weight; - - if(numlights > 0.0) - { - for(o = 0; o < 3; o++) - light[o] = -meshOrigin[o] + lightAdd[o]/numlights; - - is = light[0], it = light[1]; - light[0] = (cost * (is - 0) + sint * (0 - it) + 0); - light[1] = (cost * (it - 0) + sint * (is - 0) + 0); - light[2] += currentmodel->maxs[2] + 56; - } - - worldlight++; - } - - if(!worldlight) - { //no lights found, create light straight down - - VectorSet(light, 0, 0, 200); - - is = light[0], it = light[1]; - light[0] = (cost * (is - 0) + sint * (0 - it) + 0); - light[1] = (cost * (it - 0) + sint * (is - 0) + 0); - light[2] += 8; - } - - if(currentmodel->maxs[2] - currentmodel->mins[2] > 200) - project = 2.0; - else - project = 1.5; - - SHD_RenderIQMVolumes(light, project); -} - -qboolean R_CullSphere( const vec3_t centre, const float radius, const int clipflags ) -{ - int i; - cplane_t *p; - - if (r_nocull->value) - return false; - - for (i=0,p=frustum ; i<4; i++,p++) - { - if ( !(clipflags & (1<normal ) - p->dist <= -radius ) - return true; - } - - return false; -} - void SHD_DrawShadowVolume() { dmdl_t *paliashdr=NULL; @@ -940,51 +556,18 @@ if(currentmodel->type == mod_alias) SHD_DrawAliasShadowVolume(paliashdr, lerped); - else - { - float time, frame; - - modelpitch = degreeToRadian(currententity->angles[PITCH]); - - //frame interpolation - time = (Sys_Milliseconds() - currententity->frametime) / 100; - if(time > 1.0) - time = 1.0; - - if((currententity->frame == currententity->oldframe ) && !IQM_InAnimGroup(currententity->frame, currententity->oldframe)) - time = 0; - - //Check for stopped death anims - if(currententity->frame == 257 || currententity->frame == 237 || currententity->frame == 219) - time = 0; - - frame = currententity->frame + time; - - IQM_AnimateFrame(frame, IQM_NextFrame(currententity->frame)); - - SHD_DrawIQMShadowVolume(currententity->origin, currententity->angles, false); - } - - qglEnable(GL_TEXTURE_2D); - qglPopMatrix(); -} - -void SHD_DrawRagDollShadowVolume(int RagDollID) -{ - qglPushMatrix(); - qglDisable(GL_TEXTURE_2D); - - IQM_AnimateRagdoll(RagDollID); - - SHD_DrawIQMShadowVolume(RagDoll[RagDollID].curPos, RagDoll[RagDollID].angles, true); qglEnable(GL_TEXTURE_2D); qglPopMatrix(); } +#include "r_lodcalc.h" + +//to do - all of this will be replaced by shadowmapping +extern cvar_t *cl_simpleitems; void R_CastShadow(void) { - int i, RagDollID; + int i; vec3_t dist, tmp; float rad, thresh; trace_t r_trace; @@ -1030,15 +613,11 @@ if (!currentmodel) continue; - if (currentmodel->type != mod_alias && currentmodel->type != mod_iqm) + if (currentmodel->type != mod_alias) + continue; + + if (cl_simpleitems->integer && currentmodel->simple_texnum != 0) continue; - - if(r_ragdolls->value && currentmodel->type == mod_iqm && currentmodel->hasRagDoll) - { - //Do not render deathframes if using ragdolls - if(currententity->frame > 198) - continue; - } if (r_newrefdef.vieworg[2] < (currententity->origin[2] - 128)) continue; @@ -1066,63 +645,24 @@ thresh = 1024; //cull by distance if soft shadows - if(VectorLength(dist) > thresh && gl_state.hasFBOblit && atoi(&gl_config.version_string[0]) >= 3.0) + if ( VectorLength(dist) > LOD_DIST*(((float)thresh)/500.0) && + gl_state.hasFBOblit && + atoi(&gl_config.version_string[0]) >= 3.0 + ) continue; - if(VectorLength(dist) > 1000) { + if(VectorLength(dist) > LOD_DIST*2.0) { if(currententity->lod2) currentmodel = currententity->lod2; } - else if(VectorLength(dist) > 500) { + else if(VectorLength(dist) > LOD_DIST) { if(currententity->lod1) currentmodel = currententity->lod1; } SHD_DrawShadowVolume(); } - - //render volumes for ragdolls - for(RagDollID = 0; RagDollID < MAX_RAGDOLLS; RagDollID++) - { - if(RagDoll[RagDollID].destroyed) - continue; - - if(Sys_Milliseconds() - RagDoll[RagDollID].spawnTime > RAGDOLL_DURATION - 2500) - continue; - - currentmodel = RagDoll[RagDollID].ragDollMesh; - - if (!currentmodel) - continue; - - if (r_newrefdef.vieworg[2] < (RagDoll[RagDollID].curPos[2] - 10)) - continue; - - VectorSubtract(currentmodel->maxs, currentmodel->mins, tmp); - VectorScale (tmp, 1.666, tmp); - rad = VectorLength (tmp); - - if( R_CullSphere( RagDoll[RagDollID].curPos, rad, 15 ) ) - continue; - - if (r_worldmodel ) { - //occulusion culling - why draw shadows of entities we cannot see? - r_trace = CM_BoxTrace(r_origin, RagDoll[RagDollID].curPos, currentmodel->maxs, currentmodel->mins, r_worldmodel->firstnode, MASK_OPAQUE); - if(r_trace.fraction != 1.0) - continue; - } - - //get distance, set lod if available - VectorSubtract(r_origin, RagDoll[RagDollID].origin, dist); - - //cull by distance if soft shadows(to do - test/tweak this) - if(VectorLength(dist) > 1024 && gl_state.hasFBOblit && atoi(&gl_config.version_string[0]) >= 3.0) - continue; - - SHD_DrawRagDollShadowVolume(RagDollID); - } - - + qglDisableClientState(GL_VERTEX_ARRAY); qglColorMask(1,1,1,1); @@ -1130,115 +670,5 @@ qglDepthFunc(GL_LEQUAL); qglDisable(GL_POLYGON_OFFSET_FILL); - R_ShadowBlend(0.3); - -} - - -/* -=============== -SHD_ShadowLight - Planar stencil shadows -=============== -*/ - -float SHD_ShadowLight (vec3_t entPos, vec3_t angles, vec3_t lightAdd, int type) -{ - int lnum, i; - dlight_t *dl; - vec3_t pos, dist, angle, mins, maxs; - trace_t r_trace; - float add, shadowdist, bob; - float intens = 0; - - if (!r_worldmodel) - return 0; - - if (!r_worldmodel->lightdata) - return 0; - - VectorCopy(entPos, pos); - - VectorSet(mins, 0, 0, 0); - VectorSet(maxs, 0, 0, 0); - - VectorClear(lightAdd); - // - // add dynamic light shadow angles - // - if(!type) { - dl = r_newrefdef.dlights; - for (lnum=0; lnumorigin, pos, dist); - add = sqrt(dl->intensity - VectorLength(dist)); - VectorNormalize(dist); - if (add > 0) - { - VectorScale(dist, add, dist); - VectorAdd (lightAdd, dist, lightAdd); - intens = 0.3; - } - } - } - // - // add world light shadow angles - // - if(currententity->flags & RF_BOBBING) - bob = currententity->bob; - else - bob = 0; - - pos[2] -= bob; - - if(gl_shadows->integer == 2 && type) { - - for (i=0; iflags & RF_VIEWERMODEL)) { - r_trace = CM_BoxTrace(pos, LightGroups[i].group_origin, mins, maxs, r_worldmodel->firstnode, MASK_OPAQUE); - if(r_trace.fraction != 1.0) - continue; - } - - VectorSubtract (LightGroups[i].group_origin, pos, dist); - add = sqrt(LightGroups[i].avg_intensity*50.0f - VectorLength(dist)); - VectorNormalize(dist); - if (add > 0) - { - VectorScale(dist, sqrt(add), dist); - VectorAdd (lightAdd, dist, lightAdd); - intens+=(LightGroups[i].avg_intensity - VectorLength(dist)*3.5f); //darken shadows where light is stronger - } - } - - //cap some limits of lightness, darkness, subtley. - if (intens < 0.1) - intens = 0.1; - if (intens > 0.3) - intens = 0.3; - } - - shadowdist = VectorNormalize(lightAdd)/5.0; - if (shadowdist > 4) shadowdist = 4; - if (shadowdist <= 0) // static shadow - { - angle[PITCH] = angles[PITCH]; - angle[YAW] = -angles[YAW]; - angle[ROLL] = angles[ROLL]; - shadowdist = 1; - } - else // shadow from dynamic lights - { - vectoangles (lightAdd, angle); - angle[YAW] -= angles[YAW]; - } - AngleVectors (angle, dist, NULL, NULL); - VectorScale (dist, shadowdist, lightAdd); - - return intens; + R_ShadowBlend(0.4); } diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_surf.c alien-arena-7.66+dfsg/source/ref_gl/r_surf.c --- alien-arena-7.53+dfsg/source/ref_gl/r_surf.c 2011-12-22 20:39:18.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_surf.c 2013-06-22 20:07:35.000000000 +0000 @@ -33,61 +33,48 @@ vec3_t r_worldLightVec; dlight_t *dynLight; -msurface_t *r_alpha_surfaces; -msurface_t *r_rscript_surfaces; -msurface_t *r_normalsurfaces; -msurface_t *r_glsl_surfaces; -msurface_t *r_glsl_dynamic_surfaces; - #define LIGHTMAP_BYTES 4 -#define BLOCK_WIDTH 128 -#define BLOCK_HEIGHT 128 - -#define LIGHTMAP_SIZE 1024 -#define MAX_LIGHTMAPS 8 +//Pretty safe bet most cards support this +#define LIGHTMAP_SIZE 2048 +#define MAX_LIGHTMAPS 12 int c_visible_lightmaps; int c_visible_textures; -#define GL_LIGHTMAP_FORMAT GL_RGBA +// This is supposed to be faster on some older hardware. +#define GL_LIGHTMAP_FORMAT GL_BGRA typedef struct { - int internal_format; int current_lightmap_texture; - msurface_t *lightmap_surfaces[MAX_LIGHTMAPS]; - + // For each column, what is the last row where a pixel is used int allocated[LIGHTMAP_SIZE]; - // the lightmap texture data needs to be kept in - // main memory so texsubimage can update properly + // Lightmap texture data (RGBA, alpha not used) byte lightmap_buffer[4*LIGHTMAP_SIZE*LIGHTMAP_SIZE]; } gllightmapstate_t; -static gllightmapstate_t gl_lms; +// TODO: dynamically allocate this so we can free it for RAM savings? It's +// using over 16 megs. +static gllightmapstate_t gl_lms; static void LM_InitBlock( void ); -static void LM_UploadBlock( qboolean dynamic ); +static void LM_UploadBlock( ); static qboolean LM_AllocBlock (int w, int h, int *x, int *y); extern void R_SetCacheState( msurface_t *surf ); -extern void R_BuildLightMap (msurface_t *surf, byte *dest, int stride); - -/* -============================================================= - - BRUSH MODELS - -============================================================= -*/ +extern void R_BuildLightMap (msurface_t *surf, byte *dest, int smax, int tmax, int stride); /* =============== BSP_TextureAnimation Returns the proper texture for a given time and base texture +XXX: AFAIK this is only used for the old .wal textures, and is a bit redundant +with the rscript system, although it is implemented more efficiently. Maybe +merge the two systems somehow? =============== */ image_t *BSP_TextureAnimation (mtexinfo_t *tex) @@ -107,28 +94,16 @@ return tex->image; } -/* -================ -BSP_DrawPoly -================ -*/ -void BSP_DrawPoly (msurface_t *fa, int flags) -{ - float scroll; - scroll = 0; - if (flags & SURF_FLOWING) - { - scroll = -64 * ( (r_newrefdef.time / 40.0) - (int)(r_newrefdef.time / 40.0) ); - if (scroll == 0.0) - scroll = -64.0; - } - R_InitVArrays(VERT_SINGLE_TEXTURED); - R_AddTexturedSurfToVArray (fa, scroll); - R_KillVArrays(); +/* +========================================= -} +Textureless Surface Rendering +Used by the shadow system + +========================================= +*/ /* ================ @@ -137,11 +112,14 @@ */ void BSP_DrawTexturelessPoly (msurface_t *fa) { - R_InitVArrays(VERT_NO_TEXTURE); R_AddSurfToVArray (fa); R_KillVArrays(); +} +void BSP_DrawShadowPoly (msurface_t *fa, vec3_t origin) +{ + R_AddShadowSurfToVArray (fa, origin); } void BSP_DrawTexturelessInlineBModel (entity_t *e) @@ -226,209 +204,163 @@ } + /* -** BSP_DrawTriangleOutlines +========================================= + +BSP Surface Rendering +Common between brush and world models + +========================================= */ -void BSP_DrawTriangleOutlines (void) -{ - int i, j; - glpoly_t *p; - if (!gl_showtris->value) - return; - qglDisable (GL_TEXTURE_2D); - qglDisable (GL_DEPTH_TEST); - qglColor4f (1,1,1,1); +/* +========================================= +Special surfaces - Somewhat less common, require more work to render + - Translucent ("alpha") surfaces + These are special because they have to be rendered all in one pass, despite + consisting of several different types of surfaces, so the code can't make + too many assumptions about the surface. + - Rscript surfaces (those with material shaders) + Rscript surfaces are first rendered through the "ordinary" path, then + this one. + - Wavy, rippling ("warp") surfaces + The code to actually render these is in r_warp.c. +========================================= +*/ - for (i=0 ; ilightmapchain ) - { - p = surf->polys; - for (j=2 ; jnumverts ; j++ ) - { - qglBegin (GL_LINE_STRIP); - qglVertex3fv (p->verts[0]); - qglVertex3fv (p->verts[j-1]); - qglVertex3fv (p->verts[j]); - qglVertex3fv (p->verts[0]); - qglEnd (); - } - } - } +// The "special" surfaces use these for linked lists. +// The reason to have linked lists for surfaces from brush model entities +// separate from the linked lists for world surfaces is that the world +// surface linked lists can be preserved between frames if r_optimize is on, +// whereas the entity linked lists must be cleared each time an entity is +// drawn. +msurface_t *r_alpha_surfaces; +msurface_t *r_ent_alpha_surfaces; +msurface_t *r_rscript_surfaces; // no brush models can have rscript surfs +msurface_t *r_warp_surfaces; +msurface_t *r_ent_warp_surfaces; + +// This is a chain of surfaces that may need to have their lightmaps updated. +// They are not rendered in the order of this chain and will be linked into +// other chains for rendering. +msurface_t *r_flicker_surfaces; - qglEnable (GL_DEPTH_TEST); - qglEnable (GL_TEXTURE_2D); -} /* ================ -BSP_RenderBrushPoly +BSP_DrawWarpSurfaces ================ */ -void BSP_RenderBrushPoly (msurface_t *fa) +void BSP_DrawWarpSurfaces (qboolean forEnt) { + msurface_t *surf; image_t *image; - float scroll; - - c_brush_polys++; - - image = BSP_TextureAnimation (fa->texinfo); - - if (fa->flags & SURF_DRAWTURB) - { - GL_Bind( image->texnum ); - - // warp texture, no lightmaps - GL_TexEnv( GL_MODULATE ); - qglColor4f( gl_state.inverse_intensity, - gl_state.inverse_intensity, - gl_state.inverse_intensity, - 1.0F ); - R_RenderWaterPolys(fa, 0, 1, 1); - - GL_TexEnv( GL_REPLACE ); - - return; - } + + if (forEnt) + surf = r_ent_warp_surfaces; else + surf = r_warp_surfaces; + + if (surf == NULL) + return; + + // no lightmaps rendered on these surfaces + GL_EnableMultitexture( false ); + GL_TexEnv( GL_MODULATE ); + qglColor4f( gl_state.inverse_intensity, + gl_state.inverse_intensity, + gl_state.inverse_intensity, + 1.0F ); + while (surf) { - GL_Bind( image->texnum ); - - GL_TexEnv( GL_REPLACE ); - } - - if(fa->texinfo->has_normalmap) - { - //add to normal chain - fa->normalchain = r_normalsurfaces; - r_normalsurfaces = fa; + c_brush_polys++; + image = BSP_TextureAnimation (surf->texinfo); + GL_Bind (image->texnum); + R_RenderWaterPolys(surf, 0, 1, 1); + surf = surf->texturechain; } + + if (forEnt) + r_ent_warp_surfaces = NULL; + + GL_EnableMultitexture( true ); + GL_TexEnv( GL_REPLACE ); + R_KillVArrays (); +} +/* +================ +BSP_DrawAlphaPoly +================ +*/ +void BSP_DrawAlphaPoly (msurface_t *fa, int flags) - if (SurfaceIsAlphaBlended(fa)) - qglEnable( GL_ALPHA_TEST ); +{ + float scroll; scroll = 0; - if (fa->texinfo->flags & SURF_FLOWING) + if (flags & SURF_FLOWING) { + scroll = -64 * ( (r_newrefdef.time / 40.0) - (int)(r_newrefdef.time / 40.0) ); if (scroll == 0.0) + scroll = -64.0; } + R_InitVArrays(VERT_SINGLE_TEXTURED); + R_AddTexturedSurfToVArray (fa, scroll); R_KillVArrays(); - - if (SurfaceIsAlphaBlended(fa)) - { - qglDisable( GL_ALPHA_TEST ); - return; - } } -/* -================ -DrawTextureChains -================ -*/ -void DrawTextureChains (void) -{ - int i; - msurface_t *s; - image_t *image; - - c_visible_textures = 0; - - if ( !qglSelectTextureARB && !qglActiveTextureARB ) - { - for ( i = 0, image=gltextures ; iregistration_sequence) - continue; - s = image->texturechain; - if (!s) - continue; - c_visible_textures++; - - for ( ; s ; s=s->texturechain) - BSP_RenderBrushPoly (s); - - image->texturechain = NULL; - } - } - else - { - for ( i = 0, image=gltextures ; iregistration_sequence) - continue; - if (!image->texturechain) - continue; - c_visible_textures++; - - for ( s = image->texturechain; s ; s=s->texturechain) - { - if ( !( s->flags & SURF_DRAWTURB ) ) - BSP_RenderBrushPoly (s); - } - } - - GL_EnableMultitexture( false ); - for ( i = 0, image=gltextures ; iregistration_sequence) - continue; - s = image->texturechain; - if (!s) - continue; - - for ( ; s ; s=s->texturechain) - { - if ( s->flags & SURF_DRAWTURB ) - BSP_RenderBrushPoly (s); - } - - image->texturechain = NULL; - } - } - - GL_TexEnv( GL_REPLACE ); -} /* ================ R_DrawAlphaSurfaces Draw water surfaces and windows. -The BSP tree is waled front to back, so unwinding the chain -of alpha_surfaces will draw back to front, giving proper ordering. + +Annoyingly, because alpha surfaces have to be drawn from back to front, +everything transparent-- water, rscripted surfs, and non-rscripted surfs-- has +to be drawn in a single pass. This is an inherently inefficient process. + +The BSP tree is walked front to back, so unwinding the chain of alpha surfaces +will draw back to front, giving proper ordering FOR BSP SURFACES! + + +It's a bit wrong for entity surfaces (i.e. glass doors.) Because they are in +separate linked lists, the entity surfaces must be either always behind or +always in front of the world surfaces. I chose always in front because that +seems to fix all rendering issues, regardless of whether the entity actually +is in front. Search me why. NOTE: this bug existed even when it was all one +linked list, although at that time entity surfaces were always behind map +surfaces (added to the beginning of the linked list after all the BSP +rendering code.) ================ */ -void R_DrawAlphaSurfaces (void) +void R_DrawAlphaSurfaces_chain (msurface_t *chain) { msurface_t *s; float intens; rscript_t *rs_shader; rs_stage_t *stage = NULL; int texnum = 0; - float scaleX = 1, scaleY = 1; + float scaleX = 1.0f, scaleY = 1.0f; // the textures are prescaled up for a better lighting range, // so scale it back down intens = gl_state.inverse_intensity; - - for (s=r_alpha_surfaces ; s ; s=s->texturechain) + + qglDepthMask ( GL_FALSE ); + qglEnable (GL_BLEND); + GL_TexEnv( GL_MODULATE ); + + for (s=chain ; s ; s=s->texturechain) { - qglLoadMatrixf (r_world_matrix); //moving trans brushes - - qglDepthMask ( GL_FALSE ); - qglEnable (GL_BLEND); - GL_TexEnv( GL_MODULATE ); - GL_Bind(s->texinfo->image->texnum); c_brush_polys++; @@ -442,57 +374,61 @@ //moving trans brushes if (s->entity) { + qglLoadMatrixf (r_world_matrix); //moving trans brushes s->entity->angles[0] = -s->entity->angles[0]; // stupid quake bug s->entity->angles[2] = -s->entity->angles[2]; // stupid quake bug R_RotateForEntity (s->entity); s->entity->angles[0] = -s->entity->angles[0]; // stupid quake bug s->entity->angles[2] = -s->entity->angles[2]; // stupid quake bug } + + rs_shader = NULL; + if (r_shaders->integer) + rs_shader = (rscript_t *)s->texinfo->image->script; - if (s->flags & SURF_DRAWTURB) + if (s->iflags & ISURF_DRAWTURB) { //water shaders - if(r_shaders->value) + scaleX = scaleY = 1.0f; + if(rs_shader) { - rs_shader = (rscript_t *)s->texinfo->image->script; - if(rs_shader) + stage = rs_shader->stage; + if(stage) + { //for now, just map a reflection texture + texnum = stage->texture->texnum; //pass this to renderwaterpolys + } + if(stage->scale.scaleX != 0 && stage->scale.scaleY !=0) { - stage = rs_shader->stage; - if(stage) - { //for now, just map a reflection texture - texnum = stage->texture->texnum; //pass this to renderwaterpolys - } - if(stage->scale.scaleX != 0 && stage->scale.scaleY !=0) - { - scaleX = stage->scale.scaleX; - scaleY = stage->scale.scaleY; - } + scaleX = stage->scale.scaleX; + scaleY = stage->scale.scaleY; } } R_RenderWaterPolys (s, texnum, scaleX, scaleY); + qglEnable (GL_BLEND); + GL_TexEnv( GL_MODULATE ); } - else + else if(rs_shader && !(s->texinfo->flags & SURF_FLOWING)) { - if(r_shaders->value && !(s->texinfo->flags & SURF_FLOWING)) - { - rs_shader = (rscript_t *)s->texinfo->image->script; - if(rs_shader) - RS_Surface(s); - else - BSP_DrawPoly (s, s->texinfo->flags); - } - else - BSP_DrawPoly (s, s->texinfo->flags); + RS_Surface(s); + qglEnable (GL_BLEND); + GL_TexEnv( GL_MODULATE ); } - + else + BSP_DrawAlphaPoly (s, s->texinfo->flags); } GL_TexEnv( GL_REPLACE ); qglColor4f (1,1,1,1); qglDisable (GL_BLEND); qglDepthMask ( GL_TRUE ); +} - r_alpha_surfaces = NULL; +void R_DrawAlphaSurfaces (void) +{ + R_DrawAlphaSurfaces_chain (r_alpha_surfaces); + R_DrawAlphaSurfaces_chain (r_ent_alpha_surfaces); + qglLoadMatrixf (r_world_matrix); //moving trans brushes + r_ent_alpha_surfaces = NULL; } /* @@ -509,7 +445,7 @@ if(!s) return; - if (!r_shaders->value) + if (!r_shaders->integer) { r_rscript_surfaces = NULL; return; @@ -530,255 +466,509 @@ GLSTATE_DISABLE_ALPHATEST qglDepthMask(true); - - r_rscript_surfaces = NULL; } -/* -================ -BSP_RenderLightmappedPoly - -Main polygon rendering routine(all standard surfaces) -================ -*/ -int r_currTex = -9999; //only bind a texture if it is not the same as previous surface -static void BSP_RenderLightmappedPoly( msurface_t *surf ) -{ - float scroll; - image_t *image = BSP_TextureAnimation( surf->texinfo ); - unsigned lmtex = surf->lightmaptexturenum; - glpoly_t *p = surf->polys; - - c_brush_polys++; - if (SurfaceIsAlphaBlended(surf)) - qglEnable( GL_ALPHA_TEST ); - scroll = 0; - if (surf->texinfo->flags & SURF_FLOWING) +/* +========================================= +Ordinary surfaces (fixed-function, normalmapped, and dynamically lit) +These are the most commonly used types of surfaces, so the rendering code path +for each is more optimized-- surfaces grouped by texinfo, VBOs, VBO batching, +etc. +========================================= +*/ + +// The "ordinary" surfaces do not use global variables for linked lists. The +// linked lists are in the texinfo struct, so the textures can be grouped by +// texinfo. Like the "special" surfaces, there are separate linked lists for +// entity surfaces and world surfaces. + +// State variables for detecting changes from one surface to the next. If any +// of these change, the current batch of polygons to render is flushed. This +// helps minimize GL state change calls and draw calls. +int r_currTex = -9999; //only bind a texture if it is not the same as previous surface +int r_currLMTex = -9999; //lightmap texture +mtexinfo_t *r_currTexInfo = NULL; //texinfo struct +float *r_currTangentSpaceTransform; //etc. + +// VBO batching +// This system allows contiguous sequences of polygons to be merged into +// batches, even if they are added out of order. + +// There is a linked list of these, but they are not dynamically allocated. +// They are allocated from a static array. This prevents us wasting CPU with +// lots of malloc/free calls. Keep this struct small for performance! +typedef struct vbobatch_s { + int first_vert, last_vert; + struct vbobatch_s *next; +} vbobatch_t; + +#define MAX_VBO_BATCHES 100 // 100 ought to be enough. If we run out, we can + // always just draw some prematurely. + +// use a static array and counter to avoid lots of malloc nonsense +int num_vbo_batches; +vbobatch_t vbobatch_buffer[MAX_VBO_BATCHES]; +// never used directly; linked list base only +vbobatch_t first_vbobatch[] = {{-1, -1, NULL}}; +// if false, flushVBOAccum will set up the VBO GL state +qboolean r_vboOn = false; +// for the rspeed_vbobatches HUD gauge +int c_vbo_batches; + +// clear all accumulated surfaces without rendering +static inline void BSP_ClearVBOAccum (void) +{ + memset (vbobatch_buffer, 0, sizeof(vbobatch_buffer)); + num_vbo_batches = 0; + first_vbobatch->next = NULL; +} + +// render all accumulated surfaces, then clear them +// XXX: assumes that global OpenGL state is correct for whatever surfaces are +// in the accumulator, so don't change state until you've called this! +static inline void BSP_FlushVBOAccum (void) +{ + vbobatch_t *batch = first_vbobatch->next; + + if (!batch) + return; + + if (!r_vboOn) { - scroll = -64 * ( (r_newrefdef.time / 40.0) - (int)(r_newrefdef.time / 40.0) ); - if (scroll == 0.0) - scroll = -64.0; + GL_SetupWorldVBO (); + r_vboOn = true; } - - if(image->texnum != r_currTex) + + // XXX: for future reference, the glDrawRangeElements code was last seen + // here at revision 3246. + for (; batch; batch = batch->next) { - qglActiveTextureARB(GL_TEXTURE0); - qglBindTexture(GL_TEXTURE_2D, image->texnum ); + qglDrawArrays (GL_TRIANGLES, batch->first_vert, batch->last_vert-batch->first_vert); + c_vbo_batches++; } - qglActiveTextureARB(GL_TEXTURE1); - qglBindTexture(GL_TEXTURE_2D, gl_state.lightmap_textures + lmtex ); + + BSP_ClearVBOAccum (); +} - if(surf->texinfo->has_normalmap) +// Add a new surface to the VBO batch accumulator. If its vertex data is next +// to any other surfaces within the VBO, opportunistically merge the surfaces +// together into a larger "batch," so they can be rendered with one draw call. +// Whenever two batches touch each other, they are merged. Hundreds of +// surfaces can be rendered with a single call, which is easier on the OpenGL +// pipeline. +static inline void BSP_AddToVBOAccum (int first_vert, int last_vert) +{ + vbobatch_t *batch = first_vbobatch->next, *prev = first_vbobatch; + vbobatch_t *new; + + if (!batch) { - //add to normal chain - surf->normalchain = r_normalsurfaces; - r_normalsurfaces = surf; + batch = first_vbobatch->next = vbobatch_buffer; + batch->first_vert = first_vert; + batch->last_vert = last_vert; + num_vbo_batches++; + return; } - if(gl_state.vbo && surf->has_vbo && !(surf->texinfo->flags & SURF_FLOWING)) + // This is optimal. Because of the way the surface linked lists are built + // by BSP_AddToTextureChain, they are usually in reverse order, so it's + // best to start toward the beginning of the list of VBO batches where + // you're more likely to merge something. + + while (batch->next && batch->next->first_vert < first_vert) { - qglBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId); - - qglEnableClientState( GL_VERTEX_ARRAY ); - qglVertexPointer(3, GL_FLOAT, 0, (void *)surf->vbo_pos); - - qglClientActiveTextureARB (GL_TEXTURE0); - qglEnableClientState(GL_TEXTURE_COORD_ARRAY); - qglTexCoordPointer(2, GL_FLOAT, 0, (void*)(surf->vbo_pos + surf->xyz_size)); - - qglClientActiveTextureARB (GL_TEXTURE1); - qglEnableClientState(GL_TEXTURE_COORD_ARRAY); - qglTexCoordPointer(2, GL_FLOAT, 0, (void*)(surf->vbo_pos + surf->xyz_size + surf->st_size)); + prev = batch; + batch = batch->next; + } + + if (batch->first_vert > last_vert) + { + new = &vbobatch_buffer[num_vbo_batches++]; + new->next = batch; + prev->next = new; + new->first_vert = first_vert; + new->last_vert = last_vert; + } + else if (batch->last_vert == first_vert) + { + batch->last_vert = last_vert; + if (batch->next && batch->next->first_vert == last_vert) + { + // This is the special case where the new surface bridges the gap + // between two existing batches, allowing us to merge them into + // the first one. This is the only case where we actually remove a + // batch instead of growing one or adding one. + batch->last_vert = batch->next->last_vert; + if (batch->next == &vbobatch_buffer[num_vbo_batches-1]) + num_vbo_batches--; + batch->next = batch->next->next; + } + return; //no need to check for maximum batch count being hit + } + else if (batch->next && batch->next->first_vert == last_vert) + { + batch->next->first_vert = first_vert; + return; //no need to check for maximum batch count being hit + } + else if (batch->first_vert == last_vert) + { + batch->first_vert = first_vert; + return; //no need to check for maximum batch count being hit + } + else //if (batch->last_vert < first_vert) + { + new = &vbobatch_buffer[num_vbo_batches++]; + new->next = batch->next; + batch->next = new; + new->first_vert = first_vert; + new->last_vert = last_vert; + } + + //running out of space + if (num_vbo_batches == MAX_VBO_BATCHES) + { +/* Com_Printf ("MUSTFLUSH\n");*/ + BSP_FlushVBOAccum (); + } +} - KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER); - - R_DrawVarrays (GL_POLYGON, 0, p->numverts, true); +/* +================ +BSP_NonGLSLTexinfoChanged - qglBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); +Update GL state as needed so we can draw a new batch of surfaces for the +provided texinfo (version for all fixed-function standard surfaces) +================ +*/ +static void BSP_NonGLSLTexinfoChanged (mtexinfo_t *texinfo) +{ + int texnum; + + BSP_FlushVBOAccum (); + + if (TexinfoIsAlphaBlended (texinfo)) + { + if (!r_currTexInfo || !TexinfoIsAlphaBlended(r_currTexInfo)) + { + qglEnable( GL_ALPHA_TEST ); + } } else { - R_InitVArrays (VERT_MULTI_TEXTURED); - R_AddLightMappedSurfToVArray (surf, scroll); + if (!r_currTexInfo || TexinfoIsAlphaBlended(r_currTexInfo)) + { + qglDisable( GL_ALPHA_TEST ); + } + } + + // do this here so only have to do it once instead of for each surface + texnum = BSP_TextureAnimation( texinfo )->texnum; + + if(texnum != r_currTex) + { + qglActiveTextureARB(GL_TEXTURE0); + qglBindTexture(GL_TEXTURE_2D, texnum ); + r_currTex = texnum; } - if (SurfaceIsAlphaBlended(surf)) - qglDisable( GL_ALPHA_TEST); + r_currTexInfo = texinfo; } -static void BSP_RenderGLSLLightmappedPoly( msurface_t *surf ) +/* +================ +BSP_RenderLightmappedPoly + +Main polygon rendering routine (all fixed-function standard surfaces) +================ +*/ +static void BSP_RenderLightmappedPoly( msurface_t *surf) { float scroll; unsigned lmtex = surf->lightmaptexturenum; - glpoly_t *p = surf->polys; - - c_brush_polys++; - - if (SurfaceIsAlphaBlended(surf)) - qglEnable( GL_ALPHA_TEST ); - - scroll = 0; - if (surf->texinfo->flags & SURF_FLOWING) - { - scroll = -64 * ( (r_newrefdef.time / 40.0) - (int)(r_newrefdef.time / 40.0) ); - if (scroll == 0.0) - scroll = -64.0; - } - if(surf->texinfo->image->texnum != r_currTex) + c_brush_polys++; + + if (lmtex != r_currLMTex) { - glUniform1iARB( g_location_surfTexture, 0); - qglActiveTextureARB(GL_TEXTURE0); - qglBindTexture(GL_TEXTURE_2D, surf->texinfo->image->texnum); - - glUniform1iARB( g_location_heightTexture, 1); + BSP_FlushVBOAccum (); qglActiveTextureARB(GL_TEXTURE1); - qglBindTexture(GL_TEXTURE_2D, surf->texinfo->heightMap->texnum); - - glUniform1iARB( g_location_normalTexture, 2); - qglActiveTextureARB(GL_TEXTURE2); - qglBindTexture(GL_TEXTURE_2D, surf->texinfo->normalMap->texnum); - KillFlags |= KILL_TMU2_POINTER; + qglBindTexture(GL_TEXTURE_2D, gl_state.lightmap_textures + lmtex ); } - glUniform1iARB( g_location_lmTexture, 3); - qglActiveTextureARB(GL_TEXTURE3); - qglBindTexture(GL_TEXTURE_2D, gl_state.lightmap_textures + lmtex); - KillFlags |= KILL_TMU3_POINTER; - - glUniformMatrix3fvARB( g_tangentSpaceTransform, 1, GL_FALSE, (const GLfloat *) surf->tangentSpaceTransform ); - if(gl_state.vbo && surf->has_vbo && !(surf->texinfo->flags & SURF_FLOWING)) { - qglBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId); - - qglEnableClientState( GL_VERTEX_ARRAY ); - qglVertexPointer(3, GL_FLOAT, 0, (void *)surf->vbo_pos); - - qglClientActiveTextureARB (GL_TEXTURE0); - qglEnableClientState(GL_TEXTURE_COORD_ARRAY); - qglTexCoordPointer(2, GL_FLOAT, 0, (void*)(surf->vbo_pos + surf->xyz_size)); - - qglClientActiveTextureARB (GL_TEXTURE1); - qglEnableClientState(GL_TEXTURE_COORD_ARRAY); - qglTexCoordPointer(2, GL_FLOAT, 0, (void*)(surf->vbo_pos + surf->xyz_size + surf->st_size)); - - KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER); - - R_DrawVarrays (GL_POLYGON, 0, p->numverts, true); - - qglBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); + BSP_AddToVBOAccum (surf->vbo_first_vert, surf->vbo_first_vert+surf->vbo_num_verts); } else { + BSP_FlushVBOAccum (); + r_vboOn = false; + scroll = 0; + if (surf->texinfo->flags & SURF_FLOWING) + { + scroll = -64 * ( (r_newrefdef.time / 40.0) - (int)(r_newrefdef.time / 40.0) ); + if (scroll == 0.0) + scroll = -64.0; + } R_InitVArrays (VERT_MULTI_TEXTURED); R_AddLightMappedSurfToVArray (surf, scroll); } - if (SurfaceIsAlphaBlended(surf)) - qglDisable( GL_ALPHA_TEST); } -static void BSP_RenderGLSLDynamicLightmappedPoly( msurface_t *surf ) -{ - float scroll; - unsigned lmtex = surf->lightmaptexturenum; - glpoly_t *p = surf->polys; - - c_brush_polys++; - - if (SurfaceIsAlphaBlended(surf)) - qglEnable( GL_ALPHA_TEST ); +/* +================ +BSP_GLSLTexinfoChanged - scroll = 0; - if (surf->texinfo->flags & SURF_FLOWING) +Update GL state as needed so we can draw a new batch of surfaces for the +provided texinfo (version for all normalmapped and/or dynamically lit standard +surfaces) +================ +*/ +static void BSP_GLSLTexinfoChanged (mtexinfo_t *texinfo, qboolean dynamic) +{ + int texnum; + + BSP_FlushVBOAccum (); + + if (TexinfoIsAlphaBlended (texinfo)) { - scroll = -64 * ( (r_newrefdef.time / 40.0) - (int)(r_newrefdef.time / 40.0) ); - if (scroll == 0.0) - scroll = -64.0; + if (!r_currTexInfo || !TexinfoIsAlphaBlended(r_currTexInfo)) + { + qglEnable( GL_ALPHA_TEST ); + } } - - if(gl_normalmaps->value && surf->texinfo->has_heightmap) - glUniform1iARB( g_location_parallax, 1); else { - glUniform1iARB( g_location_parallax, 0); - //add to normal chain(this must be done since this surface is not self shadowed with glsl by worldlights) - surf->normalchain = r_normalsurfaces; - r_normalsurfaces = surf; + if (!r_currTexInfo || TexinfoIsAlphaBlended(r_currTexInfo)) + { + qglDisable( GL_ALPHA_TEST ); + } } - - if(surf->texinfo->image->texnum != r_currTex) + + // no texture animation for normalmapped surfaces, for some reason + texnum = texinfo->image->texnum; + + if(texnum != r_currTex) { - glUniform1iARB( g_location_surfTexture, 0); - qglActiveTextureARB(GL_TEXTURE0); - qglBindTexture(GL_TEXTURE_2D, surf->texinfo->image->texnum); + r_currTex = texnum; + + if (!r_currTexInfo) + { + glUniform1iARB( g_location_surfTexture, 0); + glUniform1iARB( g_location_heightTexture, 1); + glUniform1iARB( g_location_normalTexture, 2); + glUniform1iARB( g_location_lmTexture, 3); + } - glUniform1iARB( g_location_heightTexture, 1); - qglActiveTextureARB(GL_TEXTURE1); - qglBindTexture(GL_TEXTURE_2D, surf->texinfo->heightMap->texnum); + qglActiveTextureARB(GL_TEXTURE0); + qglBindTexture(GL_TEXTURE_2D, texnum); - glUniform1iARB( g_location_normalTexture, 2); + qglActiveTextureARB(GL_TEXTURE1); + qglBindTexture(GL_TEXTURE_2D, texinfo->heightMap->texnum); + qglActiveTextureARB(GL_TEXTURE2); - qglBindTexture(GL_TEXTURE_2D, surf->texinfo->normalMap->texnum); + qglBindTexture(GL_TEXTURE_2D, texinfo->normalMap->texnum); KillFlags |= KILL_TMU2_POINTER; } - - glUniform1iARB( g_location_lmTexture, 3); - qglActiveTextureARB(GL_TEXTURE3); - qglBindTexture(GL_TEXTURE_2D, gl_state.lightmap_textures + lmtex); - KillFlags |= KILL_TMU3_POINTER; - glUniformMatrix3fvARB( g_tangentSpaceTransform, 1, GL_FALSE, (const GLfloat *) surf->tangentSpaceTransform ); + if (dynamic) + { + if(gl_bspnormalmaps->integer && texinfo->has_heightmap) + { + if (!r_currTexInfo || !r_currTexInfo->has_heightmap) + { + glUniform1iARB( g_location_parallax, 1); + } + } + else + { + if (!r_currTexInfo || r_currTexInfo->has_heightmap) + { + glUniform1iARB( g_location_parallax, 0); + } + } + } - if(gl_state.vbo && surf->has_vbo && !(surf->texinfo->flags & SURF_FLOWING)) + if (!gl_bspnormalmaps->integer) { - qglBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId); - - qglEnableClientState( GL_VERTEX_ARRAY ); - qglVertexPointer(3, GL_FLOAT, 0, (void *)surf->vbo_pos); + if (!r_currTexInfo) + { + glUniform1iARB( g_location_liquid, 0 ); + glUniform1iARB( g_location_shiny, 0 ); + } + } + else if (r_currTexInfo && + (texinfo->flags & (SURF_BLOOD|SURF_WATER|SURF_SHINY)) == + (r_currTexInfo->flags & (SURF_BLOOD|SURF_WATER|SURF_SHINY))) + { + //no change to GL state is needed + } + else if (texinfo->flags & SURF_BLOOD) + { + //need to bind the blood drop normal map, and set flag, and time + glUniform1iARB( g_location_liquid, 8 ); //blood type 8, water 1 + glUniform1iARB( g_location_shiny, 0 ); + glUniform1fARB( g_location_rsTime, rs_realtime); + glUniform1iARB( g_location_liquidTexture, 4); //for blood we are going to need to send a diffuse texture with it + qglActiveTextureARB(GL_TEXTURE4); + qglBindTexture(GL_TEXTURE_2D, r_blooddroplets->texnum); + KillFlags |= KILL_TMU4_POINTER; + glUniform1iARB( g_location_liquidNormTex, 5); + qglActiveTextureARB(GL_TEXTURE5); + qglBindTexture(GL_TEXTURE_2D, r_blooddroplets_nm->texnum); + KillFlags |= KILL_TMU5_POINTER; + } + else if (texinfo->flags & SURF_WATER) + { + //need to bind the water drop normal map, and set flag, and time + glUniform1iARB( g_location_liquid, 1 ); + glUniform1iARB( g_location_shiny, 0 ); + glUniform1fARB( g_location_rsTime, rs_realtime); + glUniform1iARB( g_location_liquidNormTex, 4); //for blood we are going to need to send a diffuse texture with it(maybe even height!) + qglActiveTextureARB(GL_TEXTURE4); + qglBindTexture(GL_TEXTURE_2D, r_droplets->texnum); + KillFlags |= KILL_TMU4_POINTER; + } + else if (texinfo->flags & SURF_SHINY) + { + glUniform1iARB( g_location_liquid, 0 ); + glUniform1iARB( g_location_shiny, 1 ); - qglClientActiveTextureARB (GL_TEXTURE0); - qglEnableClientState(GL_TEXTURE_COORD_ARRAY); - qglTexCoordPointer(2, GL_FLOAT, 0, (void*)(surf->vbo_pos + surf->xyz_size)); + glUniform1iARB( g_location_chromeTex, 4); + qglActiveTextureARB(GL_TEXTURE4); + qglBindTexture(GL_TEXTURE_2D, r_mirrorspec->texnum); + KillFlags |= KILL_TMU4_POINTER; + } + else if (!r_currTexInfo || r_currTexInfo->flags & (SURF_BLOOD|SURF_WATER|SURF_SHINY)) + { + glUniform1iARB( g_location_liquid, 0 ); + glUniform1iARB( g_location_shiny, 0 ); + } + + r_currTexInfo = texinfo; +} - qglClientActiveTextureARB (GL_TEXTURE1); - qglEnableClientState(GL_TEXTURE_COORD_ARRAY); - qglTexCoordPointer(2, GL_FLOAT, 0, (void*)(surf->vbo_pos + surf->xyz_size + surf->st_size)); +/* +================ +BSP_RenderGLSLLightmappedPoly - KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER); - - R_DrawVarrays (GL_POLYGON, 0, p->numverts, true); +Main polygon rendering routine (all normalmapped and/or dynamically lit +standard surfaces) +================ +*/ +static void BSP_RenderGLSLLightmappedPoly( msurface_t *surf) +{ + static float scroll; + unsigned lmtex = surf->lightmaptexturenum; + + c_brush_polys++; + + scroll = 0; - qglBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); + if (lmtex != r_currLMTex) + { + BSP_FlushVBOAccum (); + qglActiveTextureARB(GL_TEXTURE3); + qglBindTexture(GL_TEXTURE_2D, gl_state.lightmap_textures + lmtex); + KillFlags |= KILL_TMU3_POINTER; + } + + if (r_currTangentSpaceTransform != surf->tangentSpaceTransform) + { + BSP_FlushVBOAccum (); + glUniformMatrix3fvARB( g_tangentSpaceTransform, 1, GL_FALSE, (const GLfloat *) surf->tangentSpaceTransform ); + r_currTangentSpaceTransform = (float *)surf->tangentSpaceTransform; + } + + if(gl_state.vbo && surf->has_vbo && !(surf->texinfo->flags & SURF_FLOWING)) + { + BSP_AddToVBOAccum (surf->vbo_first_vert, surf->vbo_first_vert+surf->vbo_num_verts); } else { + BSP_FlushVBOAccum (); + r_vboOn = false; + scroll = 0; + if (surf->texinfo->flags & SURF_FLOWING) + { + scroll = -64 * ( (r_newrefdef.time / 40.0) - (int)(r_newrefdef.time / 40.0) ); + if (scroll == 0.0) + scroll = -64.0; + } R_InitVArrays (VERT_MULTI_TEXTURED); R_AddLightMappedSurfToVArray (surf, scroll); } - - if (SurfaceIsAlphaBlended(surf)) - qglDisable( GL_ALPHA_TEST); } -void BSP_DrawGLSLSurfaces (void) +void BSP_DrawNonGLSLSurfaces (qboolean forEnt) { - msurface_t *s = r_glsl_surfaces; + int i; - if(!s) - return; + // reset VBO batching state + r_currTex = r_currLMTex = -99999; + r_currTexInfo = NULL; + r_currTangentSpaceTransform = NULL; + + BSP_FlushVBOAccum (); - r_currTex = -99999; + r_vboOn = false; + + qglEnableClientState( GL_VERTEX_ARRAY ); + qglClientActiveTextureARB (GL_TEXTURE0); + qglEnableClientState(GL_TEXTURE_COORD_ARRAY); + qglClientActiveTextureARB (GL_TEXTURE1); + qglEnableClientState(GL_TEXTURE_COORD_ARRAY); + KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER); + + for (i = 0; i < currentmodel->num_unique_texinfos; i++) + { + msurface_t *s; + if (forEnt) + { + s = currentmodel->unique_texinfo[i]->e_lightmap_surfaces; + currentmodel->unique_texinfo[i]->e_lightmap_surfaces = NULL; + } + else + { + s = currentmodel->unique_texinfo[i]->w_lightmap_surfaces; + } + if (!s) + continue; + BSP_NonGLSLTexinfoChanged (s->texinfo->equiv); + for (; s; s = s->texturechain) { + BSP_RenderLightmappedPoly(s); + r_currLMTex = s->lightmaptexturenum; + } + } + + BSP_FlushVBOAccum (); + + qglActiveTextureARB(GL_TEXTURE1); + qglBindTexture(GL_TEXTURE_2D, 0 ); + + qglDisable (GL_ALPHA_TEST); - glUseProgramObjectARB( g_programObj ); +} + +void BSP_DrawGLSLSurfaces (qboolean forEnt) +{ + int i; + + // reset VBO batching state + r_currTex = r_currLMTex = -99999; + r_currTexInfo = NULL; + r_currTangentSpaceTransform = NULL; - glUniform3fARB( g_location_eyePos, r_origin[0], r_origin[1], r_origin[2] ); - glUniform1iARB( g_location_fog, map_fog); - glUniform3fARB( g_location_staticLightPosition, r_worldLightVec[0], r_worldLightVec[1], r_worldLightVec[2]); - + if (!gl_bspnormalmaps->integer) + { + return; + } + + BSP_ClearVBOAccum (); + if(r_shadowmapcount == 2) { //static vegetation shadow @@ -788,6 +978,9 @@ glUniform1iARB( g_location_shadowmap, 1); glUniform1iARB( g_Location_statshadow, 1 ); + + glUniform1fARB( g_location_xOffs, 1.0/(viddef.width*r_shadowmapscale->value)); + glUniform1fARB( g_location_yOffs, 1.0/(viddef.height*r_shadowmapscale->value)); } else { @@ -796,30 +989,61 @@ } glUniform1iARB( g_location_dynamic, 0); - glUniform1iARB( g_location_parallax, 1); + glUniform1iARB( g_location_parallax, 1); + + r_vboOn = false; - for (; s; s = s->glslchain) { - BSP_RenderGLSLLightmappedPoly(s); - r_currTex = s->texinfo->image->texnum; + qglEnableClientState( GL_VERTEX_ARRAY ); + qglClientActiveTextureARB (GL_TEXTURE0); + qglEnableClientState(GL_TEXTURE_COORD_ARRAY); + qglClientActiveTextureARB (GL_TEXTURE1); + qglEnableClientState(GL_TEXTURE_COORD_ARRAY); + KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER); + + for (i = 0; i < currentmodel->num_unique_texinfos; i++) + { + msurface_t *s; + if (forEnt) + { + s = currentmodel->unique_texinfo[i]->e_glsl_surfaces; + currentmodel->unique_texinfo[i]->e_glsl_surfaces = NULL; + } + else + { + s = currentmodel->unique_texinfo[i]->w_glsl_surfaces; + } + if (!s) + continue; + BSP_GLSLTexinfoChanged (s->texinfo->equiv, false); + for (; s; s = s->texturechain) { + BSP_RenderGLSLLightmappedPoly(s); + r_currLMTex = s->lightmaptexturenum; + } } + + BSP_FlushVBOAccum (); - glUseProgramObjectARB( 0 ); + qglDisable (GL_ALPHA_TEST); + + qglActiveTextureARB (GL_TEXTURE1); + qglDisable (GL_TEXTURE_2D); - r_glsl_surfaces = NULL; } -void BSP_DrawGLSLDynamicSurfaces (void) +void BSP_DrawGLSLDynamicSurfaces (qboolean forEnt) { - msurface_t *s = r_glsl_dynamic_surfaces; + int i; dlight_t *dl = NULL; int lnum, sv_lnum = 0; float add, brightest = 0; vec3_t lightVec; float lightCutoffSquared = 0.0f; qboolean foundLight = false; - - if(!s) + + if (gl_dynamic->integer == 0) + { return; + } dl = r_newrefdef.dlights; for (lnum=0; lnum 0) { //we have a light @@ -854,14 +1072,19 @@ lightCutoffSquared *= 2.0f; lightCutoffSquared *= lightCutoffSquared; - r_currTex = -99999; + // reset VBO batching state + r_currTex = r_currLMTex = -99999; + r_currTexInfo = NULL; + r_currTangentSpaceTransform = NULL; + + BSP_ClearVBOAccum (); glUniform3fARB( g_location_lightPosition, dynLight->origin[0], dynLight->origin[1], dynLight->origin[2]); glUniform3fARB( g_location_lightColour, dynLight->color[0], dynLight->color[1], dynLight->color[2]); glUniform1fARB( g_location_lightCutoffSquared, lightCutoffSquared); - if(gl_shadowmaps->value) + if(gl_shadowmaps->integer) { //dynamic shadow glUniform1iARB( g_location_bspShadowmapTexture, 7); @@ -869,6 +1092,9 @@ qglBindTexture(GL_TEXTURE_2D, r_depthtexture->texnum); glUniform1iARB( g_location_shadowmap, 1); + + glUniform1fARB( g_location_xOffs, 1.0/(viddef.width*r_shadowmapscale->value)); + glUniform1fARB( g_location_yOffs, 1.0/(viddef.height*r_shadowmapscale->value)); } else glUniform1iARB( g_location_shadowmap, 0); @@ -876,182 +1102,358 @@ glUniform1iARB( g_location_dynamic, foundLight); - for (; s; s = s->glsldynamicchain) - { - BSP_RenderGLSLDynamicLightmappedPoly(s); - r_currTex = s->texinfo->image->texnum; + r_vboOn = false; + + qglEnableClientState( GL_VERTEX_ARRAY ); + qglClientActiveTextureARB (GL_TEXTURE0); + qglEnableClientState(GL_TEXTURE_COORD_ARRAY); + qglClientActiveTextureARB (GL_TEXTURE1); + qglEnableClientState(GL_TEXTURE_COORD_ARRAY); + KillFlags |= (KILL_TMU0_POINTER | KILL_TMU1_POINTER); + + for (i = 0; i < currentmodel->num_unique_texinfos; i++) + { + msurface_t *s; + if (forEnt) + { + s = currentmodel->unique_texinfo[i]->e_glsl_dynamic_surfaces; + currentmodel->unique_texinfo[i]->e_glsl_dynamic_surfaces = NULL; + } + else + { + s = currentmodel->unique_texinfo[i]->w_glsl_dynamic_surfaces; + } + if (!s) + continue; + BSP_GLSLTexinfoChanged (s->texinfo->equiv, true); + for (; s; s = s->texturechain) { + BSP_RenderGLSLLightmappedPoly(s); + r_currLMTex = s->lightmaptexturenum; + } } - - glUseProgramObjectARB( 0 ); + BSP_FlushVBOAccum (); + + qglDisable (GL_ALPHA_TEST); + qglActiveTextureARB (GL_TEXTURE1); qglDisable (GL_TEXTURE_2D); - - r_glsl_dynamic_surfaces = NULL; } -/* -================ -BSP_DrawNormalSurfaces -Fixed function rendering of non-glsl normalmapped surfaces -================ -*/ -static void BSP_InitNormalSurfaces () -{ - qglActiveTextureARB (GL_TEXTURE0); - qglDisable (GL_TEXTURE_2D); - qglEnable (GL_TEXTURE_CUBE_MAP_ARB); - - qglBindTexture (GL_TEXTURE_CUBE_MAP_ARB, normalisationCubeMap); - qglMatrixMode (GL_TEXTURE); - qglLoadIdentity (); - - // rotate around Y to bring blue/pink to the front - qglRotatef (145, 0, 1, 0); - - // now reposition so that the bright spot is center screen, and up a little - qglRotatef (-45, 1, 0, 0); - qglRotatef (-45, 0, 0, 1); - - //rotate by view angles(area in front of view brightens up, lower depth) - qglRotatef (-r_newrefdef.viewangles[2], 1, 0, 0); - qglRotatef (-r_newrefdef.viewangles[0], 0, 1, 0); - qglRotatef (-r_newrefdef.viewangles[1], 0, 0, 1); - // the next 2 statements will move the cmstr calculations into hardware so that we don;t - // have to evaluate them once per vert... - - // translate after rotation - qglTranslatef (r_newrefdef.vieworg[0], r_newrefdef.vieworg[1], r_newrefdef.vieworg[2]); +/* +========================================= +This is the "API" for the BSP surface renderer backend, hiding most of the +complexity of the previous functions. +========================================= +*/ - // now flip everything by -1 again to mimic the software calculation - // we won't bother batching this part up... - qglScalef (-1, -1, -1); - qglMatrixMode (GL_MODELVIEW); +/* +================ +BSP_ClearWorldTextureChains - // basic replace texenv - qglTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); +Reset linked lists for the world (non-entity/non-brushmodel) surfaces. This +need not be called every frame if r_optimize is on. No equivalent function is +needed for entity surfaces because they are reset automatically when they are +drawn. +================ +*/ +void BSP_ClearWorldTextureChains (void) +{ + int i; + + for (i = 0; i < currentmodel->num_unique_texinfos; i++) + { + currentmodel->unique_texinfo[i]->w_lightmap_surfaces = NULL; + currentmodel->unique_texinfo[i]->w_glsl_surfaces = NULL; + currentmodel->unique_texinfo[i]->w_glsl_dynamic_surfaces = NULL; + } + + r_warp_surfaces = NULL; + r_alpha_surfaces = NULL; + r_rscript_surfaces = NULL; + r_flicker_surfaces = NULL; } -void BSP_KillNormalTMUs(void) { - - //kill TMU1 - qglActiveTextureARB (GL_TEXTURE1); - qglTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - qglDisable (GL_TEXTURE_2D); - - //kill TMU0 - qglActiveTextureARB (GL_TEXTURE0); - qglMatrixMode (GL_TEXTURE); - qglLoadIdentity (); - qglMatrixMode (GL_MODELVIEW); - qglDisable (GL_TEXTURE_CUBE_MAP_ARB); - qglEnable (GL_TEXTURE_2D); -} +/* +================ +BSP_AddToTextureChain -static void BSP_DrawNormalSurfaces (void) +Call this on a surface (and indicate whether it's an entity surface) and it +will figure out which texture chain to add it to; this function is responsible +for deciding if the surface is "ordinary" or somehow "special," whether it +should be normalmapped and/or dynamically lit, etc. + +This function will be repeatedly called on all the surfaces in the current +brushmodel entity or in the world's static geometry, followed by a single call +to BSP_DrawTextureChains to render them all in one fell swoop. +================ +*/ +void BSP_UpdateSurfaceLightmap (msurface_t *surf); +void BSP_AddToTextureChain(msurface_t *surf, qboolean forEnt) { - msurface_t *surf = r_normalsurfaces; - - // nothing to draw! - if (!surf) - return; - - if (!gl_normalmaps->value) - { - r_normalsurfaces = NULL; + int map; + rscript_t *rs_shader; + qboolean is_dynamic = false; + + // Special surfaces that need to be handled separately + + if (surf->texinfo->flags & SURF_SKY) + { // just adds to visible sky bounds + R_AddSkySurface (surf); return; } - - R_InitVArrays (VERT_BUMPMAPPED); - BSP_InitNormalSurfaces(); - - qglActiveTextureARB (GL_TEXTURE1); - qglEnable (GL_TEXTURE_2D); - - qglTexEnvi (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_COMBINE); - qglTexEnvi (GL_TEXTURE_ENV, GL_COMBINE_RGB_ARB, GL_DOT3_RGB); - qglTexEnvi (GL_TEXTURE_ENV, GL_SOURCE0_RGB_ARB, GL_PREVIOUS_ARB); - qglTexEnvi (GL_TEXTURE_ENV, GL_SOURCE1_RGB_ARB, GL_TEXTURE); - qglTexEnvi (GL_TEXTURE_ENV, GL_OPERAND0_RGB_ARB, GL_SRC_COLOR); - qglTexEnvi (GL_TEXTURE_ENV, GL_OPERAND1_RGB_ARB, GL_SRC_COLOR); - - qglEnable (GL_BLEND); - - // set the correct blending mode for normal maps - qglBlendFunc (GL_ZERO, GL_SRC_COLOR); - - for (; surf; surf = surf->normalchain) - { - if (SurfaceIsAlphaBlended(surf)) - continue; - - qglBindTexture (GL_TEXTURE_2D, surf->texinfo->normalMap->texnum); - - R_AddTexturedSurfToVArray (surf, 0); + + if (SurfaceIsTranslucent(surf) && !SurfaceIsAlphaBlended(surf)) + { // add to the translucent chain + if (forEnt) + { + surf->texturechain = r_ent_alpha_surfaces; + r_ent_alpha_surfaces = surf; + } + else + { + surf->texturechain = r_alpha_surfaces; + r_alpha_surfaces = surf; + } + return; } - - BSP_KillNormalTMUs(); - // restore original blend - qglTexEnvf (GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE); - qglBlendFunc (GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - qglDisable (GL_BLEND); - - r_normalsurfaces = NULL; -} - -void BSP_AddToTextureChain(msurface_t *surf) -{ - int map; - qboolean is_dynamic = false; - - if(r_newrefdef.num_dlights && gl_state.glsl_shaders && gl_glsl_shaders->value) - { - for ( map = 0; map < MAXLIGHTMAPS && surf->styles[map] != 255; map++ ) + if (surf->iflags & ISURF_DRAWTURB) + { // add to the warped surfaces chain + if (forEnt) { - if ( r_newrefdef.lightstyles[surf->styles[map]].white != surf->cached_light[map] ) - goto dynamic; + surf->texturechain = r_ent_warp_surfaces; + r_ent_warp_surfaces = surf; } - + else + { + surf->texturechain = r_warp_surfaces; + r_warp_surfaces = surf; + } + return; + } + + + // The rest of the function handles most ordinary surfaces: normalmapped, + // non-normalmapped, and dynamically lit surfaces. As these three cases + // are the most common, they are the most optimized-- grouped by texinfo, + // etc. + + // XXX: we could require gl_bspnormalmaps here, but that would result in + // weird inconsistency with only meshes lighting up. Better to fall back + // on GLSL for dynamically lit surfaces, even with gl_bspnormalmaps 0. + if(r_newrefdef.num_dlights && gl_state.glsl_shaders && gl_glsl_shaders->integer && gl_dynamic->integer) + { // dynamic this frame or dynamic previously if ( ( surf->dlightframe == r_framecount ) ) { - dynamic: - if ( gl_dynamic->value ) + if ( !SurfaceHasNoLightmap(surf) ) + is_dynamic = true; + } + } + + // reviving the ancient lightstyle system + if ( !SurfaceHasNoLightmap(surf) ) + { + for ( map = 0; map < MAXLIGHTMAPS && surf->styles[map] != 255; map++ ) + { + // Chain of surfaces that may need to have their lightmaps updated + // in future frames (for dealing with r_optimize) + if (surf->styles[map] != 0) { - if ( !SurfaceHasNoLightmap(surf) ) - is_dynamic = true; + if (!forEnt) + { + surf->flickerchain = r_flicker_surfaces; + r_flicker_surfaces = surf; + break; + } + if ( r_newrefdef.lightstyles[surf->styles[map]].white != surf->cached_light[map]) + { + BSP_UpdateSurfaceLightmap (surf); + break; + } } } } if(is_dynamic && surf->texinfo->has_normalmap - && gl_state.glsl_shaders && gl_glsl_shaders->value) //always glsl for dynamic if it has a normalmap + && gl_state.glsl_shaders && gl_glsl_shaders->integer) //always glsl for dynamic if it has a normalmap { - surf->glsldynamicchain = r_glsl_dynamic_surfaces; - r_glsl_dynamic_surfaces = surf; + if (forEnt) + { + surf->texturechain = surf->texinfo->equiv->e_glsl_dynamic_surfaces; + surf->texinfo->equiv->e_glsl_dynamic_surfaces = surf; + } + else + { + surf->texturechain = surf->texinfo->equiv->w_glsl_dynamic_surfaces; + surf->texinfo->equiv->w_glsl_dynamic_surfaces = surf; + } } - else if(gl_normalmaps->value && surf->texinfo->has_heightmap + else if(gl_bspnormalmaps->integer + && surf->texinfo->has_heightmap && surf->texinfo->has_normalmap - && gl_state.glsl_shaders && gl_glsl_shaders->value) + && gl_state.glsl_shaders && gl_glsl_shaders->integer) { - surf->glslchain = r_glsl_surfaces; - r_glsl_surfaces = surf; + if (forEnt) + { + surf->texturechain = surf->texinfo->equiv->e_glsl_surfaces; + surf->texinfo->equiv->e_glsl_surfaces = surf; + } + else + { + surf->texturechain = surf->texinfo->equiv->w_glsl_surfaces; + surf->texinfo->equiv->w_glsl_surfaces = surf; + } } else { - BSP_RenderLightmappedPoly(surf); - r_currTex = surf->texinfo->image->texnum; + if (forEnt) + { + surf->texturechain = surf->texinfo->equiv->e_lightmap_surfaces; + surf->texinfo->equiv->e_lightmap_surfaces = surf; + } + else + { + surf->texturechain = surf->texinfo->equiv->w_lightmap_surfaces; + surf->texinfo->equiv->w_lightmap_surfaces = surf; + } + } + + // Add to the rscript chain if there is actually a shader + // TODO: investigate the possibility of doing this for brush models as + // well-- might cause problems with caustics and brush models only half + // submerged? + if(!forEnt && r_shaders->integer) + { + rs_shader = (rscript_t *)surf->texinfo->image->script; + if(rs_shader || (surf->iflags & ISURF_UNDERWATER)) + { + surf->rscriptchain = r_rscript_surfaces; + r_rscript_surfaces = surf; + } } } /* +================ +BSP_DrawTextureChains + +Draw ALL surfaces for either the current entity or the world model. If drawing +entity surfaces, reset the linked lists afterward. +================ +*/ +void BSP_DrawTextureChains (qboolean forEnt) +{ + msurface_t *flickersurf; + int map; + + if (!forEnt) + { + R_KillVArrays (); // TODO: check if necessary + + for (flickersurf = r_flicker_surfaces; flickersurf != NULL; flickersurf = flickersurf->flickerchain) + { + for ( map = 0; map < MAXLIGHTMAPS && flickersurf->styles[map] != 255; map++ ) + { + if ( r_newrefdef.lightstyles[flickersurf->styles[map]].white != flickersurf->cached_light[map]) + { + BSP_UpdateSurfaceLightmap (flickersurf); + break; + } + } + } + } + + // Setup GL state for lightmap render + // (TODO: only necessary for fixed-function pipeline?) + + GL_EnableMultitexture( true ); + + GL_SelectTexture( GL_TEXTURE0); + + if ( !gl_config.mtexcombine ) + { + GL_TexEnv( GL_REPLACE ); + GL_SelectTexture( GL_TEXTURE1); + + if ( gl_lightmap->integer ) + GL_TexEnv( GL_REPLACE ); + else + GL_TexEnv( GL_MODULATE ); + } + else + { + GL_TexEnv ( GL_COMBINE_EXT ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_ALPHA_EXT, GL_REPLACE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_EXT, GL_TEXTURE ); + GL_SelectTexture( GL_TEXTURE1 ); + GL_TexEnv ( GL_COMBINE_EXT ); + + if ( gl_lightmap->integer ) + { + qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_ALPHA_EXT, GL_REPLACE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_EXT, GL_TEXTURE ); + } + else + { + qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PREVIOUS_EXT ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_ALPHA_EXT, GL_MODULATE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_EXT, GL_TEXTURE ); + qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_EXT, GL_PREVIOUS_EXT ); + } + + if ( r_overbrightbits->value ) + qglTexEnvi ( GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, r_overbrightbits->value ); + } + + // render all fixed-function surfaces + BSP_DrawNonGLSLSurfaces(forEnt); + + // render all GLSL surfaces, including normalmapped and dynamically lit + if(gl_state.glsl_shaders && gl_glsl_shaders->integer) + { + glUseProgramObjectARB( g_programObj ); + glUniform3fARB( g_location_eyePos, r_origin[0], r_origin[1], r_origin[2] ); + glUniform1iARB( g_location_fog, map_fog); + glUniform3fARB( g_location_staticLightPosition, r_worldLightVec[0], r_worldLightVec[1], r_worldLightVec[2]); + BSP_DrawGLSLSurfaces(forEnt); + BSP_DrawGLSLDynamicSurfaces(forEnt); + glUseProgramObjectARB( 0 ); + } + + // this has to come last because it messes with GL state + BSP_DrawWarpSurfaces (forEnt); + + GL_EnableMultitexture( false ); +} + + + +/* +============================================================= + + BRUSH MODELS + +============================================================= +*/ + +/* ================= BSP_DrawInlineBModel + +Picks which of the current entity's surfaces face toward the camera, and calls +BSP_AddToTextureChain on those. ================= */ void BSP_DrawInlineBModel ( void ) @@ -1070,60 +1472,36 @@ GL_TexEnv( GL_MODULATE ); } - r_currTex = -99999; - psurf = ¤tmodel->surfaces[currentmodel->firstmodelsurface]; for (i=0 ; inummodelsurfaces ; i++, psurf++) { + if (psurf->texinfo->flags & SURF_NODRAW) + continue; //can skip dot product stuff + // TODO: remove these at load-time for inline models? + // find which side of the plane we are on pplane = psurf->plane; dot = DotProduct (modelorg, pplane->normal) - pplane->dist; // draw the polygon - if (((psurf->flags & SURF_PLANEBACK) && (dot < -BACKFACE_EPSILON)) || - (!(psurf->flags & SURF_PLANEBACK) && (dot > BACKFACE_EPSILON))) + if (((psurf->iflags & ISURF_PLANEBACK) && (dot < -BACKFACE_EPSILON)) || + (!(psurf->iflags & ISURF_PLANEBACK) && (dot > BACKFACE_EPSILON))) { - if (SurfaceIsTranslucent(psurf) && !SurfaceIsAlphaBlended(psurf)) - { // add to the translucent chain - psurf->texturechain = r_alpha_surfaces; - r_alpha_surfaces = psurf; - psurf->entity = currententity; - } - else if ( !( psurf->flags & SURF_DRAWTURB ) ) - { - BSP_AddToTextureChain( psurf ); - } - else - { - GL_EnableMultitexture( false ); - BSP_RenderBrushPoly( psurf ); - GL_EnableMultitexture( true ); - } + // TODO: do this once at load time + psurf->entity = currententity; + + BSP_AddToTextureChain( psurf, true ); psurf->visframe = r_framecount; } } - - //render all GLSL surfaces - if(gl_state.glsl_shaders && gl_glsl_shaders->value) - { - BSP_DrawGLSLSurfaces(); - BSP_DrawGLSLDynamicSurfaces(); - } - - if ( !(currententity->flags & RF_TRANSLUCENT) ) - { - GL_EnableMultitexture( false ); - BSP_DrawNormalSurfaces(); - GL_EnableMultitexture( true ); - } - else - { - qglDisable (GL_BLEND); - qglColor4f (1,1,1,1); - GL_TexEnv( GL_REPLACE ); - } - + + BSP_DrawTextureChains (true); + + qglDisable (GL_BLEND); + qglColor4f (1,1,1,1); + GL_TexEnv( GL_REPLACE ); + R_KillVArrays (); } @@ -1164,7 +1542,6 @@ } qglColor3f (1,1,1); - memset (gl_lms.lightmap_surfaces, 0, sizeof(gl_lms.lightmap_surfaces)); VectorSubtract (r_newrefdef.vieworg, currententity->origin, modelorg); @@ -1187,66 +1564,94 @@ currententity->angles[0] = -currententity->angles[0]; // stupid quake bug currententity->angles[2] = -currententity->angles[2]; // stupid quake bug - GL_EnableMultitexture( true ); - GL_SelectTexture( GL_TEXTURE0); + BSP_DrawInlineBModel (); - if ( !gl_config.mtexcombine ) { + qglPopMatrix (); +} - GL_TexEnv( GL_REPLACE ); - GL_SelectTexture( GL_TEXTURE1); - if ( gl_lightmap->value ) - GL_TexEnv( GL_REPLACE ); - else - GL_TexEnv( GL_MODULATE ); +/* +============================================================= - } else { - GL_TexEnv ( GL_COMBINE_EXT ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_ALPHA_EXT, GL_REPLACE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_EXT, GL_TEXTURE ); - GL_SelectTexture( GL_TEXTURE1 ); - GL_TexEnv ( GL_COMBINE_EXT ); + WORLD MODEL - if ( gl_lightmap->value ) { - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_ALPHA_EXT, GL_REPLACE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_EXT, GL_TEXTURE ); - } else { - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PREVIOUS_EXT ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_ALPHA_EXT, GL_MODULATE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_EXT, GL_TEXTURE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_EXT, GL_PREVIOUS_EXT ); - } +============================================================= +*/ - if ( r_overbrightbits->value ) { - qglTexEnvi ( GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, r_overbrightbits->value ); +/* +================= +R_CullBox + +Returns true if the box is completely outside the frustum + +Variant: uses clipflags +================= +*/ +qboolean R_CullBox_ClipFlags (vec3_t mins, vec3_t maxs, int clipflags) +{ + int i; + cplane_t *p; + + for (i=0,p=frustum ; i<4; i++,p++) + { + if (!(clipflags & (1<signbits) + { + case 0: + if (p->normal[0]*maxs[0] + p->normal[1]*maxs[1] + p->normal[2]*maxs[2] < p->dist) + return true; + break; + case 1: + if (p->normal[0]*mins[0] + p->normal[1]*maxs[1] + p->normal[2]*maxs[2] < p->dist) + return true; + break; + case 2: + if (p->normal[0]*maxs[0] + p->normal[1]*mins[1] + p->normal[2]*maxs[2] < p->dist) + return true; + break; + case 3: + if (p->normal[0]*mins[0] + p->normal[1]*mins[1] + p->normal[2]*maxs[2] < p->dist) + return true; + break; + case 4: + if (p->normal[0]*maxs[0] + p->normal[1]*maxs[1] + p->normal[2]*mins[2] < p->dist) + return true; + break; + case 5: + if (p->normal[0]*mins[0] + p->normal[1]*maxs[1] + p->normal[2]*mins[2] < p->dist) + return true; + break; + case 6: + if (p->normal[0]*maxs[0] + p->normal[1]*mins[1] + p->normal[2]*mins[2] < p->dist) + return true; + break; + case 7: + if (p->normal[0]*mins[0] + p->normal[1]*mins[1] + p->normal[2]*mins[2] < p->dist) + return true; + break; + default: + return false; } - } - BSP_DrawInlineBModel (); - GL_EnableMultitexture( false ); - - qglPopMatrix (); + return false; } /* -============================================================= +================ +BSP_RecursiveWorldNode - WORLD MODEL +Goes through the entire world (the BSP tree,) picks out which surfaces should +be drawn, and calls BSP_AddToTextureChain on each. -============================================================= -*/ +node: the BSP node to work on +clipflags: indicate which planes of the frustum may intersect the node -/* -================ -BSP_RecursiveWorldNode +Since each node is inside its parent in 3D space, if a frustum plane can be +shown not to intersect a node at all, then it won't intersect either of its +children. ================ */ void BSP_RecursiveWorldNode (mnode_t *node, int clipflags) @@ -1256,22 +1661,38 @@ msurface_t *surf, **mark; mleaf_t *pleaf; float dot; - image_t *image; - rscript_t *rs_shader; - + if (node->contents == CONTENTS_SOLID) return; // solid if (node->visframe != r_visframecount) return; + + // if a leaf node, draw stuff (pt 1) + c = 0; + if (node->contents != -1) + { + pleaf = (mleaf_t *)node; + + if (! (c = pleaf->nummarksurfaces) ) + return; + + // check for door connected areas + if (! (r_newrefdef.areabits[pleaf->area>>3] & (1<<(pleaf->area&7)) ) ) + return; // not visible + + mark = pleaf->firstmarksurface; + } - if (!r_nocull->value) + if (!r_nocull->integer && clipflags) { int i, clipped; cplane_t *clipplane; for (i=0,clipplane=frustum ; i<4 ; i++,clipplane++) { + if (!(clipflags & (1<minmaxs, node->minmaxs+3, clipplane); if (clipped == 1) @@ -1281,22 +1702,9 @@ } } - // if a leaf node, draw stuff - if (node->contents != -1) + //if a leaf node, draw stuff (pt 2) + if (c != 0) { - pleaf = (mleaf_t *)node; - - // check for door connected areas - if (r_newrefdef.areabits) - { - if (! (r_newrefdef.areabits[pleaf->area>>3] & (1<<(pleaf->area&7)) ) ) - return; // not visible - } - - mark = pleaf->firstmarksurface; - if (! (c = pleaf->nummarksurfaces) ) - return; - do { (*mark++)->visframe = r_framecount; @@ -1313,20 +1721,20 @@ switch (plane->type) { case PLANE_X: - dot = modelorg[0] - plane->dist; + dot = modelorg[0]; break; case PLANE_Y: - dot = modelorg[1] - plane->dist; + dot = modelorg[1]; break; case PLANE_Z: - dot = modelorg[2] - plane->dist; + dot = modelorg[2]; break; default: - dot = DotProduct (modelorg, plane->normal) - plane->dist; + dot = DotProduct (modelorg, plane->normal); break; } - side = !(dot >= 0); + side = dot < plane->dist; // recurse down the children, front side first BSP_RecursiveWorldNode (node->children[side], clipflags); @@ -1337,59 +1745,27 @@ if (surf->visframe != r_framecount) continue; + /* XXX: this doesn't seem to cull any surfaces AT ALL when positioned + * here! The surf->visframe check seems to catch any back-facing + * surfaces, but the back-facing surface check seems to allow some + * surfaces which are later caught by the surf->visframe check. So the + * visframe check renders the planeback check redundant and useless. + * I'm pretty sure it's because the map compiler structures the BSP + * tree in such a way as to avoid back-facing surfaces being drawn. + * -M if ( (surf->flags & SURF_PLANEBACK) != side ) continue; // wrong side + */ - if ( !( surf->flags & SURF_DRAWTURB ) ) + if (clipflags != 0 && !( surf->iflags & ISURF_DRAWTURB )) { - if (R_CullBox (surf->mins, surf->maxs)) + if (R_CullBox_ClipFlags (surf->mins, surf->maxs, clipflags)) continue; } - if (surf->texinfo->flags & SURF_SKY) - { // just adds to visible sky bounds - R_AddSkySurface (surf); - } - else if (SurfaceIsTranslucent(surf) && !SurfaceIsAlphaBlended(surf)) - { // add to the translucent chain - surf->texturechain = r_alpha_surfaces; - r_alpha_surfaces = surf; - surf->entity = NULL; - } - else - { - if ( !( surf->flags & SURF_DRAWTURB ) ) - { - BSP_AddToTextureChain( surf ); - - if(r_shaders->value) { //only add to the chain if there is actually a shader - rs_shader = (rscript_t *)surf->texinfo->image->script; - if(rs_shader || (surf->flags & SURF_UNDERWATER)) { - surf->rscriptchain = r_rscript_surfaces; - r_rscript_surfaces = surf; - } - } - } - else - { - // the polygon is visible, so add it to the texture - // sorted chain - - // FIXME: this is a hack for animation - image = BSP_TextureAnimation (surf->texinfo); - - surf->texturechain = image->texturechain; - image->texturechain = surf; - - if(r_shaders->value) { //only add to the chain if there is actually a shader - rs_shader = (rscript_t *)surf->texinfo->image->script; - if(rs_shader) { - surf->rscriptchain = r_rscript_surfaces; - r_rscript_surfaces = surf; - } - } - } - } + // the polygon is visible, so add it to the appropriate linked list + // list + BSP_AddToTextureChain( surf, false ); } // recurse down the back side @@ -1408,7 +1784,7 @@ float dist, weight; int numlights = 0; - if(gl_glsl_shaders->value && gl_state.glsl_shaders) + if(gl_glsl_shaders->integer && gl_state.glsl_shaders) { //get light position relative to player's position VectorClear(lightAdd); @@ -1435,111 +1811,36 @@ /* ============= -R_DrawWorld +R_DrawWorldSurfs ============= */ -void R_DrawWorld (void) +void R_DrawWorldSurfs (void) { - entity_t ent; - - if (!r_drawworld->value) + if (!r_drawworld->integer) return; if ( r_newrefdef.rdflags & RDF_NOWORLDMODEL ) return; - - currentmodel = r_worldmodel; - - VectorCopy (r_newrefdef.vieworg, modelorg); - - // auto cycle the world frame for texture animation - memset (&ent, 0, sizeof(ent)); - ent.frame = (int)(r_newrefdef.time*2); - currententity = &ent; - - gl_state.currenttextures[0] = gl_state.currenttextures[1] = -1; - - qglColor3f (1,1,1); - memset (gl_lms.lightmap_surfaces, 0, sizeof(gl_lms.lightmap_surfaces)); - - R_CalcWorldLights(); - - R_ClearSkyBox (); - - GL_EnableMultitexture( true ); - - GL_SelectTexture( GL_TEXTURE0); - - if ( !gl_config.mtexcombine ) - { - GL_TexEnv( GL_REPLACE ); - GL_SelectTexture( GL_TEXTURE1); - - if ( gl_lightmap->value ) - GL_TexEnv( GL_REPLACE ); - else - GL_TexEnv( GL_MODULATE ); - - } else - { - GL_TexEnv ( GL_COMBINE_EXT ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_ALPHA_EXT, GL_REPLACE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_EXT, GL_TEXTURE ); - GL_SelectTexture( GL_TEXTURE1 ); - GL_TexEnv ( GL_COMBINE_EXT ); - - if ( gl_lightmap->value ) - { - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_REPLACE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_ALPHA_EXT, GL_REPLACE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_EXT, GL_TEXTURE ); - } else - { - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_RGB_EXT, GL_MODULATE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_RGB_EXT, GL_TEXTURE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_RGB_EXT, GL_PREVIOUS_EXT ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_COMBINE_ALPHA_EXT, GL_MODULATE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE0_ALPHA_EXT, GL_TEXTURE ); - qglTexEnvi ( GL_TEXTURE_ENV, GL_SOURCE1_ALPHA_EXT, GL_PREVIOUS_EXT ); - } - - if ( r_overbrightbits->value ) - qglTexEnvi ( GL_TEXTURE_ENV, GL_RGB_SCALE_EXT, r_overbrightbits->value ); - } - - r_currTex = -99999; - - BSP_RecursiveWorldNode (r_worldmodel->nodes, 15); - - //render all GLSL surfaces - if(gl_state.glsl_shaders && gl_glsl_shaders->value) + + if (r_newrefdef.areabits == NULL) { - BSP_DrawGLSLSurfaces(); - BSP_DrawGLSLDynamicSurfaces(); + Com_Printf ("WARN: No area bits!\n"); + return; } - GL_EnableMultitexture( false ); - - DrawTextureChains (); - - //render fixed function normalmap self shadowing - BSP_DrawNormalSurfaces (); + qglColor3f (1,1,1); - R_KillVArrays (); + BSP_DrawTextureChains ( false ); R_InitSun(); qglDepthMask(0); R_DrawSkyBox(); qglDepthMask(1); - - BSP_DrawTriangleOutlines (); + + R_DrawRSSurfaces(); } - /* =============== R_MarkLeaves @@ -1550,27 +1851,33 @@ */ void R_MarkLeaves (void) { - byte *vis; - byte fatvis[MAX_MAP_LEAFS/8]; + static byte *vis; + static byte fatvis[MAX_MAP_LEAFS/8]; mnode_t *node; int i, c; mleaf_t *leaf; int cluster; - - if (r_oldviewcluster == r_viewcluster && r_oldviewcluster2 == r_viewcluster2 && !r_novis->value && r_viewcluster != -1) + static int minleaf_allareas, maxleaf_allareas; + int minleaf, maxleaf; + + if ( r_oldviewcluster == r_viewcluster && + r_oldviewcluster2 == r_viewcluster2 && + !r_novis->integer && r_viewcluster != -1 && + !r_newrefdef.areabits_changed) return; - + r_newrefdef.areabits_changed = false; + // development aid to let you run around and see exactly where // the pvs ends - if (gl_lockpvs->value) + if (gl_lockpvs->integer) return; - r_visframecount++; r_oldviewcluster = r_viewcluster; r_oldviewcluster2 = r_viewcluster2; - if (r_novis->value || r_viewcluster == -1 || !r_worldmodel->vis) + if (r_novis->integer || r_viewcluster == -1 || !r_worldmodel->vis) { + r_visframecount++; // mark everything for (i=0 ; inumleafs ; i++) r_worldmodel->leafs[i].visframe = r_visframecount; @@ -1580,9 +1887,15 @@ } vis = Mod_ClusterPVS (r_viewcluster, r_worldmodel); + minleaf_allareas = r_viewleaf->minPVSleaf; + maxleaf_allareas = r_viewleaf->maxPVSleaf; // may have to combine two clusters because of solid water boundaries if (r_viewcluster2 != r_viewcluster) { + if (r_viewleaf2->minPVSleaf < minleaf_allareas) + minleaf_allareas = r_viewleaf2->minPVSleaf; + if (r_viewleaf2->maxPVSleaf > maxleaf_allareas) + maxleaf_allareas = r_viewleaf2->maxPVSleaf; memcpy (fatvis, vis, (r_worldmodel->numleafs+7)/8); vis = Mod_ClusterPVS (r_viewcluster2, r_worldmodel); c = (r_worldmodel->numleafs+31)/32; @@ -1590,8 +1903,36 @@ ((int *)fatvis)[i] |= ((int *)vis)[i]; vis = fatvis; } - - for (i=0,leaf=r_worldmodel->leafs ; inumleafs ; i++, leaf++) + + r_visframecount++; + + minleaf = minleaf_allareas; + maxleaf = maxleaf_allareas; + + //restrict leaf range further to the range leafs in connected areas. + { + int areamax = 0; + int areamin = r_worldmodel->numleafs; + for (i = 0; i < r_worldmodel->num_areas; i++) + { + if (r_newrefdef.areabits[i>>3] & (1<<(i&7))) + { + if (r_worldmodel->area_max_leaf[i] > areamax) + areamax = r_worldmodel->area_max_leaf[i]; + if (r_worldmodel->area_min_leaf[i] < areamin) + areamin = r_worldmodel->area_min_leaf[i]; + } + } + if (areamin < areamax) + { + if (areamin > minleaf) + minleaf = areamin; + if (areamax < maxleaf) + maxleaf = areamax; + } + } + + for (i=minleaf,leaf=r_worldmodel->leafs+minleaf ; i<=maxleaf ; i++, leaf++) { cluster = leaf->cluster; if (cluster == -1) @@ -1610,73 +1951,159 @@ } } +/* +=============== +R_MarkWorldSurfs + +Mark all surfaces that will need to be drawn this frame +=============== +*/ +void R_MarkWorldSurfs (void) +{ + static entity_t ent; + static int old_visframecount, old_dlightcount, last_bsp_time; + static vec3_t old_origin, old_angle; + vec3_t delta_origin, delta_angle; + qboolean do_bsp; + int cur_ms; + + if (!r_drawworld->integer) + return; + + if ( r_newrefdef.rdflags & RDF_NOWORLDMODEL ) + return; + + if (r_newrefdef.areabits == NULL) + { + Com_Printf ("WARN: No area bits!\n"); + return; + } + + R_MarkLeaves (); + + currentmodel = r_worldmodel; + + VectorCopy (r_newrefdef.vieworg, modelorg); + + // auto cycle the world frame for texture animation + memset (&ent, 0, sizeof(ent)); + ent.frame = (int)(r_newrefdef.time*2); + currententity = &ent; + + gl_state.currenttextures[0] = gl_state.currenttextures[1] = -1; + + R_CalcWorldLights(); + + // r_optimize: only re-recurse the BSP tree if the player has moved enough + // to matter. + VectorSubtract (r_origin, old_origin, delta_origin); + VectorSubtract (r_newrefdef.viewangles, old_angle, delta_angle); + do_bsp = old_visframecount != r_visframecount || + VectorLength (delta_origin) > 5.0 || + VectorLength (delta_angle) > 2.0 || + r_newrefdef.num_dlights != 0 || + old_dlightcount != 0 || + !r_optimize->integer || draw_sun; + + cur_ms = Sys_Milliseconds (); + + // After a certain amount of time, increase the sensitivity to movement + // and angle. If we go too long without re-recursing the BSP tree, it + // means the player is either moving very slowly or not moving at all. If + // the player is moving slowly enough, it can catch the r_optimize code + // napping and cause artefacts, so we should be extra vigilant just in + // case. Something you basically have to do on purpose, but we go the + // extra mile. + if (r_optimize->integer && !do_bsp) + { + // be sure to handle integer overflow of the millisecond counter + if (cur_ms < last_bsp_time || last_bsp_time+100 < cur_ms) + do_bsp = VectorLength (delta_origin) > 0.5 || + VectorLength (delta_angle) > 0.2; + + } + + if (do_bsp) + { + R_ClearSkyBox (); + BSP_ClearWorldTextureChains (); + BSP_RecursiveWorldNode (r_worldmodel->nodes, 15); + + old_visframecount = r_visframecount; + VectorCopy (r_origin, old_origin); + VectorCopy (r_newrefdef.viewangles, old_angle); + last_bsp_time = cur_ms; + } + old_dlightcount = r_newrefdef.num_dlights; +} + /* ============================================================================= LIGHTMAP ALLOCATION + + TODO: move this to another file, this is load-time stuff that doesn't run + every frame. ============================================================================= */ -static void LM_InitBlock( void ) +static void LM_InitBlock (void) { memset( gl_lms.allocated, 0, sizeof( gl_lms.allocated ) ); } -static void LM_UploadBlock( qboolean dynamic ) -{ - int texture; - int height = 0; - - if ( dynamic ) - { - texture = 0; - } - else - { - texture = gl_lms.current_lightmap_texture; - } - +// Upload the current lightmap data to OpenGL, then clear it and prepare for +// the next lightmap texture to be filled with data. +// TODO: With HD lightmaps, are mipmaps a good idea here? +// TODO: Opportunistically make lightmap texture smaller if not all is used? +// Will require delaying lightmap texcoords for all surfaces until after +// upload. +static void LM_UploadBlock (void) +{ + int texture = gl_lms.current_lightmap_texture; + + GL_SelectTexture (GL_TEXTURE0); + // FIXME: OH FFS this is so stupid: tell the GL_Bind batching mechanism + // that texture unit 0 has been re-bound, as it most certainly has been. + gl_state.currenttextures[gl_state.currenttmu] = -1; GL_Bind( gl_state.lightmap_textures + texture ); qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - - if ( dynamic ) - { - int i; - - for ( i = 0; i < LIGHTMAP_SIZE; i++ ) - { - if ( gl_lms.allocated[i] > height ) - height = gl_lms.allocated[i]; - } - - qglTexSubImage2D( GL_TEXTURE_2D, - 0, - 0, 0, - LIGHTMAP_SIZE, height, - GL_LIGHTMAP_FORMAT, - GL_UNSIGNED_BYTE, - gl_lms.lightmap_buffer ); - } - else + + qglTexImage2D( GL_TEXTURE_2D, + 0, + GL_RGBA, + LIGHTMAP_SIZE, LIGHTMAP_SIZE, + 0, + GL_LIGHTMAP_FORMAT, + GL_UNSIGNED_INT_8_8_8_8_REV, + gl_lms.lightmap_buffer ); + +#if 0 + height = 0; + for (i = 0; i < LIGHTMAP_SIZE; i++) { - qglTexImage2D( GL_TEXTURE_2D, - 0, - gl_lms.internal_format, - LIGHTMAP_SIZE, LIGHTMAP_SIZE, - 0, - GL_LIGHTMAP_FORMAT, - GL_UNSIGNED_BYTE, - gl_lms.lightmap_buffer ); - if ( ++gl_lms.current_lightmap_texture == MAX_LIGHTMAPS ) - Com_Error( ERR_DROP, "LM_UploadBlock() - MAX_LIGHTMAPS exceeded\n" ); + if (gl_lms.allocated[i] > height) + height = gl_lms.allocated[i]; } + + Com_Printf (" LIGHTMAP %d HEIGHT %d\n", gl_lms.current_lightmap_texture, height); +#endif + + if ( ++gl_lms.current_lightmap_texture == MAX_LIGHTMAPS ) + Com_Error( ERR_DROP, "LM_UploadBlock() - MAX_LIGHTMAPS exceeded\n" ); } -// returns a texture number and the position inside it +// LM_AllocBlock - given a certain size rectangle, allocates space inside the +// lightmap texture atlas. +// Returns a texture number and the position inside it. +// TODO: there are some clever tricks I can think of to pack these more +// tightly: opportunistically rotating lightmap textures by 90 degrees, +// wrapping the lightmap textures around the edges of the atlas, and even +// recognizing that not all surfaces are rectangular. static qboolean LM_AllocBlock (int w, int h, int *x, int *y) { int i, j; @@ -1716,9 +2143,9 @@ BSP_BuildPolygonFromSurface ================ */ -void BSP_BuildPolygonFromSurface(msurface_t *fa) +void BSP_BuildPolygonFromSurface(msurface_t *fa, float xscale, float yscale, int light_s, int light_t, int firstedge, int lnumverts) { - int i, lindex, lnumverts; + int i, lindex; medge_t *r_pedge; float *vec; float s, t; @@ -1727,9 +2154,6 @@ vec3_t surfmaxs = {-99999999, -99999999, -99999999}; vec3_t surfmins = {99999999, 99999999, 99999999}; - // reconstruct the polygon - lnumverts = fa->numedges; - // // draw texture // @@ -1740,7 +2164,7 @@ for (i=0 ; isurfedges[fa->firstedge + i]; + lindex = currentmodel->surfedges[firstedge + i]; if (lindex > 0) { @@ -1777,15 +2201,15 @@ // s = DotProduct (vec, fa->texinfo->vecs[0]) + fa->texinfo->vecs[0][3]; s -= fa->texturemins[0]; - s += fa->light_s*16; - s += 8; - s /= LIGHTMAP_SIZE*16; //fa->texinfo->texture->width; + s += light_s*xscale; + s += xscale/2.0; + s /= LIGHTMAP_SIZE*xscale; t = DotProduct (vec, fa->texinfo->vecs[1]) + fa->texinfo->vecs[1][3]; t -= fa->texturemins[1]; - t += fa->light_t*16; - t += 8; - t /= LIGHTMAP_SIZE*16; //fa->texinfo->texture->height; + t += light_t*yscale; + t += yscale/2.0; + t /= LIGHTMAP_SIZE*yscale; poly->verts[i][5] = s; poly->verts[i][6] = t; @@ -1799,7 +2223,21 @@ poly->verts[i][7] = s; poly->verts[i][8] = t; + + } +#if 0 //SO PRETTY and useful for checking how much lightmap data is used up + if (lnumverts == 4) + { + poly->verts[0][5] = 1; + poly->verts[0][6] = 1; + poly->verts[1][5] = 1; + poly->verts[1][6] = 0; + poly->verts[2][5] = 0; + poly->verts[2][6] = 0; + poly->verts[3][5] = 0; + poly->verts[3][6] = 1; } +#endif // store out the completed bbox VectorCopy (surfmins, fa->mins); @@ -1811,9 +2249,8 @@ BSP_CreateSurfaceLightmap ======================== */ -void BSP_CreateSurfaceLightmap (msurface_t *surf) +void BSP_CreateSurfaceLightmap (msurface_t *surf, int smax, int tmax, int *light_s, int *light_t) { - int smax, tmax; byte *base; if (!surf->samples) @@ -1822,44 +2259,61 @@ if (surf->texinfo->flags & (SURF_SKY|SURF_WARP)) return; //may not need this? - smax = (surf->extents[0]>>4)+1; - tmax = (surf->extents[1]>>4)+1; - - if ( !LM_AllocBlock( smax, tmax, &surf->light_s, &surf->light_t ) ) + if ( !LM_AllocBlock( smax, tmax, light_s, light_t ) ) { - LM_UploadBlock( false ); + LM_UploadBlock( ); LM_InitBlock(); - if ( !LM_AllocBlock( smax, tmax, &surf->light_s, &surf->light_t ) ) + if ( !LM_AllocBlock( smax, tmax, light_s, light_t ) ) { Com_Error( ERR_FATAL, "Consecutive calls to LM_AllocBlock(%d,%d) failed\n", smax, tmax ); } } surf->lightmaptexturenum = gl_lms.current_lightmap_texture; + + surf->lightmins[0] = *light_s; + surf->lightmins[1] = *light_t; + surf->lightmaxs[0] = smax; + surf->lightmaxs[1] = tmax; base = gl_lms.lightmap_buffer; - base += (surf->light_t * LIGHTMAP_SIZE + surf->light_s) * LIGHTMAP_BYTES; + base += ((*light_t) * LIGHTMAP_SIZE + *light_s) * LIGHTMAP_BYTES; R_SetCacheState( surf ); - R_BuildLightMap (surf, base, LIGHTMAP_SIZE*LIGHTMAP_BYTES); + R_BuildLightMap (surf, base, smax, tmax, LIGHTMAP_SIZE*LIGHTMAP_BYTES); +} + +void BSP_UpdateSurfaceLightmap (msurface_t *surf) +{ + R_SetCacheState (surf); + R_BuildLightMap (surf, gl_lms.lightmap_buffer, surf->lightmaxs[0], surf->lightmaxs[1], surf->lightmaxs[0]*LIGHTMAP_BYTES); + + GL_SelectTexture (GL_TEXTURE0); + // FIXME: OH FFS this is so stupid: tell the GL_Bind batching mechanism + // that texture unit 0 has been re-bound, as it most certainly has been. + gl_state.currenttextures[gl_state.currenttmu] = -1; + GL_Bind( gl_state.lightmap_textures + surf->lightmaptexturenum ); + qglTexSubImage2D( GL_TEXTURE_2D, + 0, + surf->lightmins[0], surf->lightmins[1], + surf->lightmaxs[0], surf->lightmaxs[1], + GL_LIGHTMAP_FORMAT, + GL_UNSIGNED_INT_8_8_8_8_REV, + gl_lms.lightmap_buffer ); } /* ================== BSP_BeginBuildingLightmaps - ================== */ void BSP_BeginBuildingLightmaps (model_t *m) { static lightstyle_t lightstyles[MAX_LIGHTSTYLES]; int i; - byte *dummy; memset( gl_lms.allocated, 0, sizeof(gl_lms.allocated) ); - dummy = Z_Malloc(LIGHTMAP_BYTES * LIGHTMAP_SIZE * LIGHTMAP_SIZE); - r_framecount = 1; // no dlightcache GL_EnableMultitexture( true ); @@ -1883,24 +2337,6 @@ gl_lms.current_lightmap_texture = 1; - gl_lms.internal_format = gl_tex_solid_format; - - /* - ** initialize the dynamic lightmap texture - */ - GL_Bind( gl_state.lightmap_textures + 0 ); - qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR); - qglTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); - qglTexImage2D( GL_TEXTURE_2D, - 0, - gl_lms.internal_format, - LIGHTMAP_SIZE, LIGHTMAP_SIZE, - 0, - GL_LIGHTMAP_FORMAT, - GL_UNSIGNED_BYTE, - dummy ); - - Z_Free(dummy); } /* @@ -1910,19 +2346,27 @@ */ void BSP_EndBuildingLightmaps (void) { - LM_UploadBlock( false ); + LM_UploadBlock( ); GL_EnableMultitexture( false ); } + + /* -======================== -Mini map -======================== +============================================================================= + + MINI MAP + + Draws a little 2D map in the corner of the HUD. + TODO: do a bit more calculation at load time, right now this is a huge FPS + hit. + +============================================================================= */ void R_RecursiveRadarNode (mnode_t *node) { - int c, side, sidebit; + int c, side; cplane_t *plane; msurface_t *surf, **mark; mleaf_t *pleaf; @@ -1939,6 +2383,7 @@ distance = 1024.0; } + if ( r_origin[0]+distance < node->minmaxs[0] || r_origin[0]-distance > node->minmaxs[3] || r_origin[1]+distance < node->minmaxs[1] || @@ -1950,10 +2395,8 @@ if (node->contents != -1) { pleaf = (mleaf_t *)node; // check for door connected areas - if (r_newrefdef.areabits) { - // not visible - if (! (r_newrefdef.areabits[pleaf->area>>3] & (1<<(pleaf->area&7)) ) ) return; - } + if (! (r_newrefdef.areabits[pleaf->area>>3] & (1<<(pleaf->area&7)) ) ) + return; // not visible mark = pleaf->firstmarksurface; c = pleaf->nummarksurfaces; @@ -1987,10 +2430,8 @@ if (dot >= 0) { side = 0; - sidebit = 0; } else { side = 1; - sidebit = SURF_PLANEBACK; } // recurse down the children, front side first @@ -2069,9 +2510,13 @@ float fS[4]={0,0,-1.0/512.0,0}; if ( r_newrefdef.rdflags & RDF_NOWORLDMODEL ) return; - if(!r_minimap->value) return; + if(!r_minimap->integer) return; + + if (!r_newrefdef.areabits) return; - qglViewport (vid.width-r_minimap_size->value,0, r_minimap_size->value, r_minimap_size->value); + qglViewport ( r_newrefdef.x+r_newrefdef.width-r_minimap_size->value, + vid.height-r_newrefdef.y-r_newrefdef.height, + r_minimap_size->value, r_minimap_size->value); qglDisable(GL_DEPTH_TEST); qglMatrixMode(GL_PROJECTION); @@ -2079,7 +2524,7 @@ qglLoadIdentity (); - if (r_minimap_style->value) { + if (r_minimap_style->integer) { qglOrtho(-1024,1024,-1024,1024,-256,256); } else { qglOrtho(-1024,1024,-512,1536,-256,256); @@ -2106,7 +2551,7 @@ if(r_around) GL_Bind(r_around->texnum); qglBegin(GL_TRIANGLE_FAN); - if (r_minimap_style->value){ + if (r_minimap_style->integer){ qglTexCoord2f(0,1); qglVertex3f(1024,-1024,1); qglTexCoord2f(1,1); qglVertex3f(-1024,-1024,1); qglTexCoord2f(1,0); qglVertex3f(-1024,1024,1); @@ -2131,7 +2576,7 @@ qglScalef(r_minimap_zoom->value,r_minimap_zoom->value,r_minimap_zoom->value); } - if (r_minimap_style->value) { + if (r_minimap_style->integer) { qglPushMatrix(); qglRotatef (90-r_newrefdef.viewangles[1], 0, 0, -1); @@ -2207,4 +2652,3 @@ qglColor4f(1,1,1,1); } - diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_text.c alien-arena-7.66+dfsg/source/ref_gl/r_text.c --- alien-arena-7.53+dfsg/source/ref_gl/r_text.c 2010-12-01 17:42:18.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_text.c 2013-06-22 20:07:35.000000000 +0000 @@ -32,7 +32,6 @@ #include "r_text.h" #include "r_ttf.h" -#include "r_bmfont.h" @@ -114,6 +113,16 @@ } +static int _FNT_NullFont_PredictSize( + FNT_font_t font , + const char * text, + qboolean color + ) +{ + /* EMPTY */ +} + + /**************************************************************************/ /* AUTOMATIC FONT MANAGEMENT */ @@ -221,6 +230,7 @@ face = NULL; } if ( face == NULL ) { + // fallback font face = FNT_GetFace( auto_font->face ); } @@ -265,6 +275,7 @@ _FNT_NullFont->RawPrint = _FNT_NullFont_RawPrint; _FNT_NullFont->BoundedPrint = _FNT_NullFont_BoundedPrint; _FNT_NullFont->WrappedPrint = _FNT_NullFont_WrappedPrint; + _FNT_NullFont->PredictSize = _FNT_NullFont_PredictSize; } // Create hash tables for both faces and fonts @@ -378,7 +389,9 @@ // Try looking it up first face = HT_GetItem( _FNT_LoadedFaces , baseName , &created ); if ( created ) { - face->used = 0; + // Changed from 0 to 1. An initial value of 0 was causing face to be + // used after being freed. + face->used = 1; } else { face->used ++; return face; @@ -387,9 +400,6 @@ // Try loading it as a TrueType font if ( TTF_InitFace( face ) ) return face; - // Now try as a bitmap font - if ( BMF_InitFace( face ) ) - return face; // Could not load Com_Printf( "FNT: could not load face '%s'\n" , baseName ); diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_text.h alien-arena-7.66+dfsg/source/ref_gl/r_text.h --- alien-arena-7.53+dfsg/source/ref_gl/r_text.h 2010-12-01 17:42:18.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_text.h 2013-06-22 20:07:35.000000000 +0000 @@ -194,6 +194,28 @@ typedef void (* FNT_DestroyFont_funct)( FNT_font_t font ); +/* + * Size prediction function + * + * Determine how long the given text would be if drawn in the given font. + * Assumes no wrapping or boundaries-- it could well return a number greater + * than the horizontal resolution of the display. + * + * Parameters: + * font the font to use + * text the text to use + * color enable ^color code filtering + * + * Returns: + * The width in pixels required to render the text in the font + */ +typedef int (* FNT_PredictSize_funct)( + FNT_font_t font , + const char * text, + qboolean color + ); + + /**************************************************************************/ /* STRUCTURES FOR FACES AND FONTS */ @@ -235,11 +257,16 @@ /* The font's height in pixels */ unsigned int size; + /* total line height in pixels, including spacing */ + unsigned int height; + /* theoretical maximum character width in pixels, given current size */ + unsigned int width; /* Printing functions */ FNT_RawPrint_funct RawPrint; FNT_BoundedPrint_funct BoundedPrint; FNT_WrappedPrint_funct WrappedPrint; + FNT_PredictSize_funct PredictSize; /* Destructor */ FNT_DestroyFont_funct Destroy; @@ -416,6 +443,14 @@ ( font->WrappedPrint( font , text , cmode , align , indent , box , color ) ) +/* + * Determine how much space is required to print the string. See comment on + * FNT_PredictSize_funct for more information. + */ +#define FNT_PredictSize(font,text,color) \ + ( font->PredictSize( font , text , color ) ) + + /**************************************************************************/ /* AUTOMATIC FONT MANAGEMENT */ diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_ttf.c alien-arena-7.66+dfsg/source/ref_gl/r_ttf.c --- alien-arena-7.53+dfsg/source/ref_gl/r_ttf.c 2010-12-07 06:50:13.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_ttf.c 2013-06-22 20:07:35.000000000 +0000 @@ -141,6 +141,13 @@ const float * color ); +/* Wrapped printing function */ +static int _TTF_PredictSize( + FNT_font_t font , + const char * text, + qboolean color + ); + /***************************************************************************** * LOCAL VARIABLES * @@ -335,7 +342,7 @@ unsigned int n_lines; unsigned int i; unsigned int texture_height; - + // Load TTF face information error = FT_New_Memory_Face( _TTF_library , faceInt->data , faceInt->size , 0 , &face ); if ( error != 0 ) { @@ -400,8 +407,16 @@ if ( temp > max_descent ) max_descent = temp; } - fontInt->height = max_ascent + max_descent; + + font->height = fontInt->height = max_ascent + max_descent; + + // FIXME HACK: some fonts (like freemono) disappear if used as the menu + // font if we don't do this, because the menu code ends up calculating + // negative margins. + if (font->height < font->size) + font->height = font->size; + font->width = 0; // Get kerning information if ( FT_HAS_KERNING( face ) ) { for ( i = 0 ; i < TTF_CHARACTERS ; i ++ ) { @@ -410,12 +425,17 @@ FT_Vector kvec; FT_Get_Kerning( face , glyphs[ i ] , glyphs[ j ] , FT_KERNING_DEFAULT , &kvec ); fontInt->kerning[ i ][ j ] = kvec.x >> 6; + if (fontInt->kerning[i][j] + fontInt->widths[i] > font->width) + font->width = fontInt->kerning[i][j] + fontInt->widths[i]; + if (fontInt->kerning[i][j] + fontInt->widths[j] > font->width) + font->width = fontInt->kerning[i][j] + fontInt->widths[j]; } } } else { + font->width = font->size; memset( fontInt->kerning , 0 , sizeof( fontInt->kerning ) ); } - + // Compute texture height texture_height = ( max_ascent + max_descent) * n_lines; for ( i = 16 ; i <= 4096 ; i <<= 1 ) { @@ -622,6 +642,7 @@ font->RawPrint = _TTF_RawPrint; font->BoundedPrint = _TTF_BoundedPrint; font->WrappedPrint = _TTF_WrappedPrint; + font->PredictSize = _TTF_PredictSize; font->Destroy = _TTF_Destroy; return true; } @@ -686,6 +707,9 @@ const unsigned char * ptr = ( const unsigned char *) text; int ptrInc = r2l ? -1 : 1; int previous = -1; + + if (r2l) + ptr += text_length-1; while ( text_length ) { unsigned int i = ( *ptr & 0x7F ) - ' '; @@ -1275,3 +1299,55 @@ _TTF_WrappedPrintInternal( fInternal , text , cmode , align , indent , box , color ); _TTF_RestoreEnvironment( ); } + + +/* + * Size prediction function + */ +static int _TTF_PredictSize( + FNT_font_t font , + const char * text, + qboolean color + ) +{ + _TTF_font_t fInternal; + float tx; + int ret; + unsigned int previous; + const unsigned char * ptr; + + fInternal = (_TTF_font_t) font->internal; + ptr = ( const unsigned char *) text; + + if (*ptr == '\0') + return 0; + + if (*ptr == '^' && color) + ptr += 2; + + previous = ( *ptr & 0x7F ) - ' '; + + tx = fInternal->widths[ previous ]; + + while ( *(++ptr) ) { + unsigned int i = ( *ptr & 0x7F ) - ' '; + + if (*ptr == '^' && color) + { + ptr++; + continue; + } + + if ( i < TTF_CHARACTERS ) { + tx += fInternal->kerning[ previous ][ i ] + fInternal->widths[ i ]; + previous = i; + } + } + + // always round up the pixel count + ret = (int)tx; + if (ret < tx) + ret++; + + return ret; +} diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_varray.c alien-arena-7.66+dfsg/source/ref_gl/r_varray.c --- alien-arena-7.53+dfsg/source/ref_gl/r_varray.c 2011-12-22 21:50:00.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_varray.c 2013-06-22 20:07:35.000000000 +0000 @@ -272,6 +272,18 @@ if (KillFlags & KILL_RGBA_POINTER) qglDisableClientState (GL_COLOR_ARRAY); + if (KillFlags & KILL_TMU5_POINTER) + { + qglClientActiveTextureARB (GL_TEXTURE5); + qglDisableClientState (GL_TEXTURE_COORD_ARRAY); + } + + if (KillFlags & KILL_TMU4_POINTER) + { + qglClientActiveTextureARB (GL_TEXTURE4); + qglDisableClientState (GL_TEXTURE_COORD_ARRAY); + } + if (KillFlags & KILL_TMU3_POINTER) { qglClientActiveTextureARB (GL_TEXTURE3); @@ -300,8 +312,7 @@ qglDisableClientState (GL_VERTEX_ARRAY); } -void R_DrawVarrays(GLenum mode, GLint first, GLsizei count, qboolean vbo) - +void R_DrawVarrays(GLenum mode, GLint first, GLsizei count) { if(count < 1) return; //do not send arrays of zero size to GPU! @@ -309,18 +320,7 @@ if(gl_state.vbo) GL_BindVBO(NULL); //make sure that we aren't using an invalid buffer - if(!vbo) - { - if(qglLockArraysEXT) - qglLockArraysEXT(0, count); - - qglDrawArrays (mode, first, count); - - if(qglUnlockArraysEXT) - qglUnlockArraysEXT(); - } - else - qglDrawArrays (mode, first, count); + qglDrawArrays (mode, first, count); } void R_AddSurfToVArray (msurface_t *surf) @@ -349,10 +349,99 @@ } // draw the poly - R_DrawVarrays(GL_POLYGON, 0, VertexCounter, false); + R_DrawVarrays(GL_POLYGON, 0, VertexCounter); } } +extern int SignbitsForPlane (cplane_t *out); +void R_AddShadowSurfToVArray (msurface_t *surf, vec3_t origin) +{ + glpoly_t *p = surf->polys; + float *v, *v2; + int i; + float sq_len; + vec3_t vDist; + vec3_t tmp, mins, maxs; + + qboolean renderPoly; + + VectorAdd (currentmodel->maxs, origin, maxs); + VectorAdd (currentmodel->mins, origin, mins); + + for (; p; p = p->chain) + { + // reset pointer and counter + VArray = &VArrayVerts[0]; + VertexCounter = 0; + + VectorSubtract(currentmodel->maxs, currentmodel->mins, tmp); + + /* lengths used for comparison only, so squared lengths may be used.*/ + sq_len = tmp[0]*tmp[0] + tmp[1]*tmp[1] + tmp[2]*tmp[2] ; + if ( sq_len < 4096.0f ) + sq_len = 4096.0f; /* 64^2 */ + else if ( sq_len > 65536.0f ) + sq_len = 65536.0f; /* 256^2 */ + + renderPoly = false; + for ( v = p->verts[0], i = 0; i < p->numverts; i++, v += VERTEXSIZE ) + { + // Generate plane out of the triangle between v, v+1, and the + // light point. This plane will be one of the borders of the + // 3D volume within which an object may cast a shadow on the + // world polygon. + vec3_t plane_line_1, plane_line_2; + cplane_t plane; + + // generate two vectors representing two sides of the triangle + VectorSubtract (v, statLightPosition, plane_line_1); + v2 = p->verts[(i+1)%p->numverts]; + VectorSubtract (v2, v, plane_line_2); + + // generate the actual plane + CrossProduct (plane_line_1, plane_line_2, plane.normal); + VectorNormalize (plane.normal); + plane.type = PLANE_ANYZ; + plane.dist = DotProduct (v, plane.normal); + plane.signbits = SignbitsForPlane (&plane); + + // CullBox-type operation + if (BoxOnPlaneSide (mins, maxs, &plane) == 2) + { + //completely clipped; we can skip this surface + return; + } + + if ( !renderPoly ) + { /* once set, no need for calculation */ + float vsq_len; + + VectorSubtract( origin, v, vDist ); + vsq_len = vDist[0]*vDist[0] + vDist[1]*vDist[1] + vDist[2]*vDist[2]; + if ( vsq_len < sq_len ) + { + renderPoly = true; + } + } + + // copy in vertex data + VArray[0] = v[0]; + VArray[1] = v[1]; + VArray[2] = v[2]; + + // nothing else is needed + // increment pointer and counter + VArray += VertexSizes[VERT_NO_TEXTURE]; + VertexCounter++; + } + + // draw the poly + if(renderPoly) + R_DrawVarrays(GL_POLYGON, 0, VertexCounter); + } + } + + /* ================= R_AddTexturedSurfToVArray @@ -393,7 +482,7 @@ } // draw the poly - R_DrawVarrays(GL_POLYGON, 0, VertexCounter, false); + R_DrawVarrays(GL_POLYGON, 0, VertexCounter); } } @@ -444,10 +533,10 @@ * gl_showpolys == 1 : perform depth test. * gl_showpolys == 2 : disable depth test. everything in "visible set" */ - if (gl_showpolys->value) // restricted cvar, maxclients = 1 + if (gl_showpolys->integer) // restricted cvar, maxclients = 1 { qglDisable (GL_TEXTURE_2D); - if (gl_showpolys->value > 1.9f) + if (gl_showpolys->integer >= 2) { // lots of lines so make them narrower qglDisable(GL_DEPTH_TEST); qglLineWidth (2.0f); @@ -467,7 +556,7 @@ } // draw the polys - R_DrawVarrays(GL_POLYGON, 0, VertexCounter, false); + R_DrawVarrays(GL_POLYGON, 0, VertexCounter); } void R_AddGLSLShadedWarpSurfToVArray (msurface_t *surf, float scroll) @@ -493,19 +582,15 @@ VArray[3] = v[3] + scroll; VArray[4] = v[4]; - VectorCopy(surf->plane->normal, NormalsArray[VertexCounter]); - // nothing else is needed // increment pointer and counter - VArray += VertexSizes[VERT_NORMAL_COLOURED_TEXTURED]; + VArray += VertexSizes[VERT_COLOURED_TEXTURED]; VertexCounter++; } } - qglNormalPointer(GL_FLOAT, 0, NormalsArray); - // draw the polys - R_DrawVarrays(GL_POLYGON, 0, VertexCounter, false); + R_DrawVarrays(GL_POLYGON, 0, VertexCounter); } diff -Nru alien-arena-7.53+dfsg/source/ref_gl/r_vbo.c alien-arena-7.66+dfsg/source/ref_gl/r_vbo.c --- alien-arena-7.53+dfsg/source/ref_gl/r_vbo.c 2011-12-22 20:39:18.000000000 +0000 +++ alien-arena-7.66+dfsg/source/ref_gl/r_vbo.c 2013-06-22 20:07:35.000000000 +0000 @@ -26,8 +26,13 @@ #include "r_local.h" GLuint vboId = 0; -int vboPosition; +GLuint eboId = 0; int totalVBObufferSize; +int totalEBObufferSize; +int currVertexNum, currElemNum; +size_t vbo_xyz_base, vbo_xyz_pos, + vbo_st_base, vbo_st_pos, + vbo_lm_base, vbo_lm_pos; GLvoid (APIENTRY * qglBindBufferARB)(GLenum target, GLuint buffer); GLvoid (APIENTRY * qglDeleteBuffersARB)(GLsizei n, const GLuint *buffers); @@ -39,7 +44,7 @@ { gl_state.vbo = false; - if(!gl_usevbo->value) + if(!gl_usevbo->integer) return; if (strstr(gl_config.extensions_string, "GL_ARB_vertex_buffer_object")) @@ -69,14 +74,20 @@ float *v; int i; int l, m, n; + int trinum; float map[MAX_VBO_XYZs]; float map2[MAX_VBO_XYZs]; float map3[MAX_VBO_XYZs]; - + int xyz_size, st_size, lm_size; + + // XXX: for future reference, the glDrawRangeElements code was last seen + // here at revision 3246. if (gl_state.vbo) { - for (v = p->verts[0], i = 0, l = 0, m = 0, n = 0; i < p->numverts; i++, v += VERTEXSIZE) + for (trinum = 1, l = 0, m = 0, n = 0; trinum < p->numverts-1; trinum++) { + v = p->verts[0]; + // copy in vertex data map[n++] = v[0]; map[n++] = v[1]; @@ -89,45 +100,90 @@ // lightmap texture coords map3[m++] = v[5]; map3[m++] = v[6]; + + for (i = trinum; i < trinum+2; i++) + { + v = p->verts[i]; + + // copy in vertex data + map[n++] = v[0]; + map[n++] = v[1]; + map[n++] = v[2]; + + // world texture coords + map2[l++] = v[3]; + map2[l++] = v[4]; + + // lightmap texture coords + map3[m++] = v[5]; + map3[m++] = v[6]; + } } - - surf->vbo_pos = vboPosition; - - surf->xyz_size = n*sizeof(float); - surf->st_size = l*sizeof(float); - surf->lm_size = m*sizeof(float); + + xyz_size = n*sizeof(float); + st_size = l*sizeof(float); + lm_size = m*sizeof(float); surf->has_vbo = true; + surf->vbo_first_vert = currVertexNum; + surf->vbo_num_verts = 3*(p->numverts-2); + currVertexNum += surf->vbo_num_verts; - qglBufferSubDataARB(GL_ARRAY_BUFFER_ARB, vboPosition, surf->xyz_size, &map); - qglBufferSubDataARB(GL_ARRAY_BUFFER_ARB, vboPosition + surf->xyz_size, surf->st_size, &map2); - qglBufferSubDataARB(GL_ARRAY_BUFFER_ARB, vboPosition + surf->xyz_size + surf->st_size, surf->lm_size, &map3); - - vboPosition += (surf->xyz_size + surf->st_size + surf->lm_size); + qglBufferSubDataARB(GL_ARRAY_BUFFER_ARB, vbo_xyz_pos, xyz_size, &map); + qglBufferSubDataARB(GL_ARRAY_BUFFER_ARB, vbo_st_pos, st_size, &map2); + qglBufferSubDataARB(GL_ARRAY_BUFFER_ARB, vbo_lm_pos, lm_size, &map3); + + vbo_xyz_pos += xyz_size; + vbo_st_pos += st_size; + vbo_lm_pos += lm_size; } } void VB_BuildWorldVBO(void) { - msurface_t *surf; + msurface_t *surf, *surfs; + int i, firstsurf, lastsurf; + int num_vertexes = totalVBObufferSize/7; + + currVertexNum = currElemNum = 0; + vbo_xyz_base = vbo_xyz_pos = 0; + vbo_st_base = vbo_st_pos = num_vertexes*3*sizeof(float); + vbo_lm_base = vbo_lm_pos = num_vertexes*5*sizeof(float); qglGenBuffersARB(1, &vboId); qglBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId); qglBufferDataARB(GL_ARRAY_BUFFER_ARB, totalVBObufferSize*sizeof(float), 0, GL_STATIC_DRAW_ARB); - - for (surf = &r_worldmodel->surfaces[r_worldmodel->firstmodelsurface]; surf < &r_worldmodel->surfaces[r_worldmodel->firstmodelsurface + r_worldmodel->nummodelsurfaces] ; surf++) - { - if (surf->texinfo->flags & SURF_SKY) - { // no skies here - continue; + + // just to keep the lines of code short + surfs = r_worldmodel->surfaces; + firstsurf = 0; + lastsurf = r_worldmodel->numsurfaces; + + for (i = 0; i < currentmodel->num_unique_texinfos; i++) + { + if (currentmodel->unique_texinfo[i]->flags & (SURF_SKY|SURF_NODRAW)) + continue; + //TODO: use VBO for alpha surfaces? But for now they're just + //cluttering up the VBO. + if ( TexinfoIsTranslucent(currentmodel->unique_texinfo[i]) && + !TexinfoIsAlphaBlended(currentmodel->unique_texinfo[i])) + continue; + for (surf = &surfs[firstsurf]; surf < &surfs[lastsurf]; surf++) + { + if ( (currentmodel->unique_texinfo[i] != surf->texinfo->equiv) || + (surf->iflags & ISURF_DRAWTURB) || + (surf->iflags & ISURF_PLANEBACK)) + continue; + VB_BuildSurfaceVBO(surf); } - else + for (surf = &surfs[firstsurf]; surf < &surfs[lastsurf]; surf++) { - if (!( surf->flags & SURF_DRAWTURB ) ) - { - VB_BuildSurfaceVBO(surf); - } + if ( (currentmodel->unique_texinfo[i] != surf->texinfo->equiv) || + (surf->iflags & ISURF_DRAWTURB) || + !(surf->iflags & ISURF_PLANEBACK)) + continue; + VB_BuildSurfaceVBO(surf); } } @@ -138,18 +194,31 @@ { glpoly_t *p = surf->polys; - if (!( surf->flags & SURF_DRAWTURB ) ) + if (!( surf->iflags & ISURF_DRAWTURB ) ) { - totalVBObufferSize += 7*p->numverts; + totalVBObufferSize += 7*3*(p->numverts-2); } } +void GL_SetupWorldVBO (void) +{ + qglBindBufferARB(GL_ARRAY_BUFFER_ARB, vboId); + + qglVertexPointer(3, GL_FLOAT, 0, (void *)vbo_xyz_base); + + qglClientActiveTextureARB (GL_TEXTURE0); + qglTexCoordPointer(2, GL_FLOAT, 0, (void *)vbo_st_base); + + qglClientActiveTextureARB (GL_TEXTURE1); + qglTexCoordPointer(2, GL_FLOAT, 0, (void *)vbo_lm_base); + + qglBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); +} + void GL_BindVBO(vertCache_t *cache) { if (cache) - { qglBindBufferARB(GL_ARRAY_BUFFER_ARB, cache->id); - } else qglBindBufferARB(GL_ARRAY_BUFFER_ARB, 0); } @@ -157,50 +226,29 @@ void GL_BindIBO(vertCache_t *cache) { if (cache) - { qglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, cache->id); - } else qglBindBufferARB(GL_ELEMENT_ARRAY_BUFFER, 0); } -vertCache_t *R_VCFindCache(vertStoreMode_t store, entity_t *ent) +vertCache_t *R_VCFindCache(vertStoreMode_t store, model_t *mod) { - model_t *mod; vertCache_t *cache, *next; - mod = ent->model; - for (cache = vcm.activeVertCache.next; cache != &vcm.activeVertCache; cache = next) { next = cache->next; -#ifdef SHADOWVBO - if(store == VBO_STORE_SHADOWINDICES || store == VBO_STORE_SHADOWXYZ) - { - if (cache->store == store && cache->ent == ent) - { // already cached! - if(store == VBO_STORE_SHADOWINDICES) - GL_BindIBO(cache); - else - GL_BindVBO(cache); - return cache; - } - } - else -#endif - { - if (cache->store == store && cache->mod == mod) - { // already cached! - GL_BindVBO(cache); - return cache; - } + + if (cache->store == store && !strcmp(cache->mod->name, mod->name)) + { // already cached! + return cache; } } return NULL; } -vertCache_t *R_VCLoadData(vertCacheMode_t mode, int size, void *buffer, vertStoreMode_t store, entity_t *ent) +vertCache_t *R_VCLoadData(vertCacheMode_t mode, int size, void *buffer, vertStoreMode_t store, model_t *mod) { vertCache_t *cache; @@ -212,12 +260,8 @@ cache->size = size; cache->pointer = buffer; cache->store = store; - cache->mod = ent->model; -#ifdef SHADOWVBO - cache->ent = ent; -#endif - VectorCopy(ent->origin, cache->position); - + cache->mod = mod; + // link vcm.freeVertCache = vcm.freeVertCache->next; @@ -226,49 +270,36 @@ vcm.activeVertCache.next->prev = cache; vcm.activeVertCache.next = cache; -#ifdef SHADOWVBO - if(store == VBO_STORE_SHADOWINDICES) + + if(store == VBO_STORE_INDICES) GL_BindIBO(cache); else -#endif GL_BindVBO(cache); switch (cache->mode) { case VBO_STATIC: -#ifdef SHADOWVBO - if(store == VBO_STORE_SHADOWINDICES) + if(store == VBO_STORE_INDICES) qglBufferDataARB(GL_ELEMENT_ARRAY_BUFFER, cache->size, cache->pointer, GL_STATIC_DRAW_ARB); else -#endif qglBufferDataARB(GL_ARRAY_BUFFER_ARB, cache->size, cache->pointer, GL_STATIC_DRAW_ARB); break; case VBO_DYNAMIC: -#ifdef SHADOWVBO - if(store == VBO_STORE_SHADOWINDICES) + if(store == VBO_STORE_INDICES) qglBufferDataARB(GL_ELEMENT_ARRAY_BUFFER, cache->size, cache->pointer, GL_DYNAMIC_DRAW_ARB); else -#endif qglBufferDataARB(GL_ARRAY_BUFFER_ARB, cache->size, cache->pointer, GL_DYNAMIC_DRAW_ARB); break; } - return cache; -} - - -vertCache_t *R_VCCreate(vertCacheMode_t mode, int size, void *buffer, vertStoreMode_t store, entity_t *ent) -{ - vertCache_t *cache; - - cache = R_VCFindCache(store, ent); - if (cache) - return cache; + if(store == VBO_STORE_INDICES) + GL_BindIBO(NULL); + else + GL_BindVBO(NULL); - return R_VCLoadData(mode, size, buffer, store, ent); + return cache; } - void R_VCFree(vertCache_t *cache) { if (!cache) @@ -316,11 +347,10 @@ for (i=0; inext; R_VCFree(cache); } - - for (i=0; inumedges ; i++) + for (i=0 ; isurfedges[fa->firstedge + i]; + lindex = loadmodel->surfedges[firstedge + i]; if (lindex > 0) vec = loadmodel->vertexes[loadmodel->edges[lindex].v[0]].position; @@ -221,7 +221,7 @@ float s, t, os, ot; float scroll; float rdt = r_newrefdef.time; - vec3_t nv, tangent; + vec3_t nv; if (fa->texinfo->flags & SURF_FLOWING) scroll = -64.0f * ((r_newrefdef.time * 0.5f) - (int)(r_newrefdef.time * 0.5f)); @@ -229,12 +229,12 @@ scroll = 0.0f; if(gl_state.glsl_shaders && gl_glsl_shaders->value - && fa->texinfo->has_normalmap) { - + && fa->texinfo->has_normalmap) + { if (SurfaceIsAlphaBlended(fa)) qglEnable( GL_ALPHA_TEST ); - R_InitVArrays (VERT_NORMAL_COLOURED_TEXTURED); + R_InitVArrays (VERT_COLOURED_TEXTURED); glUseProgramObjectARB( g_waterprogramObj ); @@ -244,33 +244,34 @@ qglBindTexture (GL_TEXTURE_2D, fa->texinfo->image->texnum); glUniform1iARB( g_location_baseTexture, 0); - //note - moving this to tmu2 fixed a very odd, obsure bug. It isn't clear yet why it fixes it, but it does qglActiveTextureARB(GL_TEXTURE1); qglBindTexture(GL_TEXTURE_2D, fa->texinfo->normalMap->texnum); glUniform1iARB( g_location_normTexture, 1); - if(fa->texinfo->flags &(SURF_TRANS33|SURF_TRANS66)) - glUniform1iARB( g_location_trans, 1); + if (texnum) + { + qglActiveTextureARB(GL_TEXTURE2); + qglBindTexture(GL_TEXTURE_2D, texnum); + glUniform1iARB( g_location_refTexture, 2); + } else - glUniform1iARB( g_location_trans, 0); - - qglActiveTextureARB(GL_TEXTURE2); - qglBindTexture(GL_TEXTURE_2D, texnum); - glUniform1iARB( g_location_refTexture, 2); + { + glUniform1iARB( g_location_refTexture, 0); + } + if(fa->texinfo->flags &(SURF_TRANS33|SURF_TRANS66)) + glUniform1fARB( g_location_trans, 0.5); + else + glUniform1fARB( g_location_trans, 0.75); + if(texnum) - { glUniform1iARB( g_location_reflect, 1); - } else - { glUniform1iARB( g_location_reflect, 0); - } - - AngleVectors(fa->plane->normal, NULL, tangent, NULL); //send these to the shader program - glUniform3fARB( g_location_tangent, tangent[0], tangent[1], tangent[2]); + glUniformMatrix3fvARB( g_location_tangentSpaceTransform, 1, GL_FALSE, (const GLfloat *) fa->tangentSpaceTransform ); + glUniform3fARB( g_location_waterEyePos, r_origin[0], r_origin[1], r_origin[2] ); glUniform3fARB( g_location_lightPos, r_worldLightVec[0], r_worldLightVec[1], r_worldLightVec[2]); glUniform1iARB( g_location_fogamount, map_fog); glUniform1fARB( g_location_time, rs_realtime); @@ -866,9 +867,8 @@ for (i=0 ; i<6 ; i++) { - // chop down rotating skies for less memory - if (gl_skymip->value || skyrotate) - gl_picmip->value++; + if (gl_skymip->integer) + gl_picmip->integer += gl_skymip->integer; Com_sprintf (pathname, sizeof(pathname), "env/%s%s.tga", skyname, suf[i]); @@ -879,32 +879,40 @@ if (r_shaders->value) { strcpy(pathname,sky_images[i]->name); pathname[strlen(pathname)-4]=0; - sky_images[i]->script = RS_FindScript(pathname); if(sky_images[i]->script) RS_ReadyScript(sky_images[i]->script); } } - if (strstr(pathname, "space")) { - VectorSet(sun_origin, -5000, -100000, 115000); - spacebox = true; - } - else if (strstr(pathname, "sea")) { - VectorSet(sun_origin, 140000, -80000, 125000); - spacebox = false; - } - else if (strstr(pathname, "hell")) { - VectorSet(sun_origin, 140000, 160000, 85000); - spacebox = false; + //set only if not set by fog script + if(r_sunX == 0.0 && r_sunY == 0.0 && r_sunZ == 0.0) + { + if (strstr(pathname, "space")) { + VectorSet(sun_origin, -5000, -100000, 115000); + spacebox = true; + } + else if (strstr(pathname, "sea")) { + VectorSet(sun_origin, 140000, -80000, 125000); + spacebox = false; + } + else if (strstr(pathname, "hell")) { + VectorSet(sun_origin, 140000, 160000, 85000); + spacebox = false; + } + else { + VectorSet(sun_origin, 140000, -80000, 45000); + spacebox = false; + } } - else { - VectorSet(sun_origin, 140000, -80000, 45000); - spacebox = false; + else + { + VectorSet(sun_origin, r_sunX, r_sunY, r_sunZ); + spacebox = false; //we will change this to sun vs star } - if (gl_skymip->value || skyrotate) + if (gl_skymip->integer) { // take less memory - gl_picmip->value--; + gl_picmip->integer -= gl_skymip->integer; sky_min = 1.0/256; sky_max = 255.0/256; } diff -Nru alien-arena-7.53+dfsg/source/server/server.h alien-arena-7.66+dfsg/source/server/server.h --- alien-arena-7.53+dfsg/source/server/server.h 2011-11-27 05:59:57.000000000 +0000 +++ alien-arena-7.66+dfsg/source/server/server.h 2013-06-22 20:07:36.000000000 +0000 @@ -63,6 +63,9 @@ // demo server information FILE *demofile; qboolean timedemo; // don't time sync + size_t demosize; // in bytes + size_t demo_ofs; // in bytes + byte *demobuf; // full demo file contents } server_t; #define EDICT_NUM(n) ((edict_t *)((byte *)ge->edicts + ge->edict_size*(n))) @@ -244,6 +247,10 @@ int SV_SoundIndex (char *name); int SV_ImageIndex (char *name); +int SV_CheckModelIndex (char *name); +int SV_CheckSoundIndex (char *name); +int SV_CheckImageIndex (char *name); + void SV_WriteClientdataToMessage (client_t *client, sizebuf_t *msg); void SV_ExecuteUserCommand (char *s); diff -Nru alien-arena-7.53+dfsg/source/server/sv_ccmds.c alien-arena-7.66+dfsg/source/server/sv_ccmds.c --- alien-arena-7.53+dfsg/source/server/sv_ccmds.c 2011-10-10 22:40:49.000000000 +0000 +++ alien-arena-7.66+dfsg/source/server/sv_ccmds.c 2013-06-22 20:07:36.000000000 +0000 @@ -264,7 +264,15 @@ if (!cl->state) continue; Com_Printf ("%3i ", i); - Com_Printf ("%5i ", cl->edict->client->ps.stats[STAT_FRAGS]); + + if ( cl->edict->client->ps.stats[STAT_SPECTATOR] == 0 ) + { + Com_Printf ("%5i ", cl->edict->client->ps.stats[STAT_FRAGS]); + } + else + { + Com_Printf ("%s ", "SPEC"); + } if (cl->state == cs_connected) Com_Printf ("CNCT "); @@ -366,9 +374,19 @@ Examine or change the serverinfo string =========== */ +extern netadr_t *CL_GetRemoteServer (void); void SV_Serverinfo_f (void) { + netadr_t *remoteserver; Com_Printf ("Server info settings:\n"); + if (!(svs.clients || dedicated->value)) { + remoteserver = CL_GetRemoteServer (); + if (remoteserver) { + Netchan_OutOfBandPrint (NS_CLIENT, *remoteserver, va("status %i", PROTOCOL_VERSION)); + return; + } + Com_Printf ("(No remote server connected, printing local cvars.)\n"); + } Info_Print (Cvar_Serverinfo()); } diff -Nru alien-arena-7.53+dfsg/source/server/sv_ents.c alien-arena-7.66+dfsg/source/server/sv_ents.c --- alien-arena-7.53+dfsg/source/server/sv_ents.c 2011-06-14 08:08:28.000000000 +0000 +++ alien-arena-7.66+dfsg/source/server/sv_ents.c 2013-06-22 20:07:36.000000000 +0000 @@ -209,7 +209,13 @@ if (ps->rdflags != ops->rdflags) pflags |= PS_RDFLAGS; - if (ps->gunframe != ops->gunframe) + if (ps->gunframe != ops->gunframe + || (int)(ops->gunoffset[0]*4) != (int)(ps->gunoffset[0]*4) + || (int)(ops->gunoffset[1]*4) != (int)(ps->gunoffset[1]*4) + || (int)(ops->gunoffset[2]*4) != (int)(ps->gunoffset[2]*4) + || (int)(ops->gunangles[0]*4) != (int)(ps->gunangles[0]*4) + || (int)(ops->gunangles[1]*4) != (int)(ps->gunangles[1]*4) + || (int)(ops->gunangles[2]*4) != (int)(ps->gunangles[2]*4) ) pflags |= PS_WEAPONFRAME; pflags |= PS_WEAPONINDEX; @@ -228,9 +234,9 @@ if (pflags & PS_M_ORIGIN) { - MSG_WriteShort (msg, ps->pmove.origin[0]); - MSG_WriteShort (msg, ps->pmove.origin[1]); - MSG_WriteShort (msg, ps->pmove.origin[2]); + MSG_WriteSizeInt (msg, coord_bytes, ps->pmove.origin[0]); + MSG_WriteSizeInt (msg, coord_bytes, ps->pmove.origin[1]); + MSG_WriteSizeInt (msg, coord_bytes, ps->pmove.origin[2]); } if (pflags & PS_M_VELOCITY) @@ -440,6 +446,7 @@ vec3_t org; edict_t *ent; edict_t *clent; + edict_t *orig_clent; client_frame_t *frame; entity_state_t *state; int l; @@ -448,8 +455,27 @@ int c_fullsend; byte *clientphs; byte *bitvector; - - clent = client->edict; + + client_t *redir_client; + int redir_num; + + orig_clent = client->edict; + if (!orig_clent->client) + return; // not in game yet + + redir_num = client->edict->redirect_number; + if (redir_num != client->edict->s.number) + { + for (i=0, redir_client = svs.clients ; iinteger; i++, redir_client++) + if (redir_num == redir_client->edict->s.number) + break; + if (i == maxclients->integer) + redir_client = client; + } + else + redir_client = client; + + clent = redir_client->edict; if (!clent->client) return; // not in game yet @@ -471,6 +497,14 @@ // grab the current player_state_t frame->ps = clent->client->ps; + + if (client != redir_client) + { + //some adjustments for ghost mode + if (frame->ps.pmove.pm_type != PM_DEAD) + frame->ps.pmove.pm_type = PM_FREEZE; + frame->ps.fov = client->edict->client->ps.fov; + } SV_FatPVS (org); @@ -545,16 +579,25 @@ continue; } } - - // add it to the circular client_entities array - state = &svs.client_entities[svs.next_client_entities%svs.num_client_entities]; + if (ent->s.number != e) { // note: server has limited info about entities Com_DPrintf("Fixing ent->s.number: %i to %i for a %s\n", ent->s.number, e, (ent->client ? "client" : "non-client") ); ent->s.number = e; } + + if (ent == orig_clent && orig_clent != clent) + { + Com_Printf ("CAN'T HAPPEN?\n"); + continue; + } + + // add it to the circular client_entities array + state = &svs.client_entities[svs.next_client_entities%svs.num_client_entities]; *state = ent->s; + if (ent == clent && orig_clent != clent) + state->number = orig_clent->s.number; // don't mark players missiles as solid if (ent->owner == client->edict) diff -Nru alien-arena-7.53+dfsg/source/server/sv_game.c alien-arena-7.66+dfsg/source/server/sv_game.c --- alien-arena-7.53+dfsg/source/server/sv_game.c 2010-08-20 06:52:33.000000000 +0000 +++ alien-arena-7.66+dfsg/source/server/sv_game.c 2013-06-22 20:07:36.000000000 +0000 @@ -230,66 +230,6 @@ void PF_WriteAngle (float f) {MSG_WriteAngle (&sv.multicast, f);} -/* -================= -PF_inPVS - -Also checks portalareas so that doors block sight -================= -*/ -qboolean PF_inPVS (vec3_t p1, vec3_t p2) -{ - int leafnum; - int cluster; - int area1, area2; - byte *mask; - - leafnum = CM_PointLeafnum (p1); - cluster = CM_LeafCluster (leafnum); - area1 = CM_LeafArea (leafnum); - mask = CM_ClusterPVS (cluster); - - leafnum = CM_PointLeafnum (p2); - cluster = CM_LeafCluster (leafnum); - area2 = CM_LeafArea (leafnum); - if ( mask && (!(mask[cluster>>3] & (1<<(cluster&7)) ) ) ) - return false; - if (!CM_AreasConnected (area1, area2)) - return false; // a door blocks sight - return true; -} - - -/* -================= -PF_inPHS - -Also checks portalareas so that doors block sound -================= -*/ -qboolean PF_inPHS (vec3_t p1, vec3_t p2) -{ - int leafnum; - int cluster; - int area1, area2; - byte *mask; - - leafnum = CM_PointLeafnum (p1); - cluster = CM_LeafCluster (leafnum); - area1 = CM_LeafArea (leafnum); - mask = CM_ClusterPHS (cluster); - - leafnum = CM_PointLeafnum (p2); - cluster = CM_LeafCluster (leafnum); - area2 = CM_LeafArea (leafnum); - if ( mask && (!(mask[cluster>>3] & (1<<(cluster&7)) ) ) ) - return false; // more than one bounce away - if (!CM_AreasConnected (area1, area2)) - return false; // a door blocks hearing - - return true; -} - void PF_StartSound (edict_t *entity, int channel, int sound_num, float volume, float attenuation, float timeofs) { @@ -324,7 +264,7 @@ Init the game subsystem for a new map =============== */ -void SCR_DebugGraph (float value, int color); +void SCR_DebugGraph (float value, const float color[]); void SV_InitGameProgs (void) { @@ -350,13 +290,17 @@ import.trace = SV_Trace; import.pointcontents = SV_PointContents; import.setmodel = PF_setmodel; - import.inPVS = PF_inPVS; - import.inPHS = PF_inPHS; + import.inPVS = CM_inPVS; + import.inPHS = CM_inPHS; import.Pmove = Pmove; import.modelindex = SV_ModelIndex; import.soundindex = SV_SoundIndex; import.imageindex = SV_ImageIndex; + + import.checkmodelindex = SV_CheckModelIndex; + import.checksoundindex = SV_CheckSoundIndex; + import.checkimageindex = SV_CheckImageIndex; import.configstring = PF_Configstring; import.sound = PF_StartSound; @@ -379,6 +323,7 @@ import.cvar = Cvar_Get; import.cvar_set = Cvar_Set; import.cvar_forceset = Cvar_ForceSet; + import.cvar_describe = Cvar_Describe; import.argc = Cmd_Argc; import.argv = Cmd_Argv; diff -Nru alien-arena-7.53+dfsg/source/server/sv_init.c alien-arena-7.66+dfsg/source/server/sv_init.c --- alien-arena-7.53+dfsg/source/server/sv_init.c 2011-10-10 22:40:49.000000000 +0000 +++ alien-arena-7.66+dfsg/source/server/sv_init.c 2013-06-22 20:07:36.000000000 +0000 @@ -30,6 +30,7 @@ extern cvar_t *public_server; cvar_t *sv_excessive; cvar_t *sv_playerspeed; +cvar_t *sv_tactical; extern float pm_maxspeed; extern void SV_SetMaster_f(void); @@ -88,6 +89,30 @@ /* +================= +PF_Check*Index + +For checking if assets are already loaded - return 0 if they are not +================= +*/ + +int SV_CheckModelIndex (char *name) +{ + return SV_FindIndex (name, CS_MODELS, MAX_MODELS, false); +} + +int SV_CheckSoundIndex (char *name) +{ + return SV_FindIndex (name, CS_SOUNDS, MAX_SOUNDS, false); +} + +int SV_CheckImageIndex (char *name) +{ + return SV_FindIndex (name, CS_IMAGES, MAX_IMAGES, false); +} + + +/* ================ SV_CreateBaseline @@ -139,7 +164,11 @@ Com_DPrintf ("SpawnServer: %s\n",server); if (sv.demofile) + { + FS_FreeFile (sv.demobuf); + sv.demosize = sv.demo_ofs = 0; fclose (sv.demofile); + } svs.spawncount++; // any partially connected client will be // restarted @@ -280,8 +309,11 @@ //set player move speed according to excessive value sv_excessive = Cvar_Get ("excessive", "0", CVAR_LATCH|CVAR_GAMEINFO); sv_playerspeed = Cvar_Get ("playerspeed", "0", CVAR_LATCH|CVAR_GAMEINFO); + sv_tactical = Cvar_Get ("g_tactical", "0", CVAR_LATCH|CVAR_GAMEINFO); if(sv_excessive->value || sv_playerspeed->value) pm_maxspeed = 450; + else if(sv_tactical->value) + pm_maxspeed = 200; else pm_maxspeed = 300; diff -Nru alien-arena-7.53+dfsg/source/server/sv_main.c alien-arena-7.66+dfsg/source/server/sv_main.c --- alien-arena-7.53+dfsg/source/server/sv_main.c 2011-12-06 05:33:34.000000000 +0000 +++ alien-arena-7.66+dfsg/source/server/sv_main.c 2013-06-22 20:07:36.000000000 +0000 @@ -47,6 +47,8 @@ cvar_t *sv_airaccelerate; cvar_t *sv_joustmode; +cvar_t *sv_tactical; +cvar_t *sv_excessive; cvar_t *sv_noreload; // don't reload level state when reentering @@ -152,106 +154,88 @@ Builds the string that is sent as heartbeats and status replies =============== */ -char *SV_StatusString (void) +char *SV_StatusString (void) { - char player[1024]; - static char status[MAX_MSGLEN - 16]; - int i; -#ifdef NOTUSED - int j, k; -#endif - client_t *cl; - int statusLength; - int playerLength; - char *name; - //char *s; - char nametxt[MAX_INFO_STRING]; - - strcpy (status, Cvar_Serverinfo()); - strcat (status, "\n"); - statusLength = strlen(status); + static char status[MAX_MSGLEN - 16]; // static buffer for the status string + qboolean msg_overflow = false; + + char player[MAX_INFO_STRING]; + client_t *cl; + size_t count; - for (i=0 ; ivalue ; i++) + // server info string. MAX_INFO_STRING is always < sizeof(status) + strcpy( status, Cvar_Serverinfo() ); + strcat( status, "\n" ); + + // real player score info + for ( cl=svs.clients, count=maxclients->integer ; count-- ; cl++ ) { - cl = &svs.clients[i]; if (cl->state == cs_connected || cl->state == cs_spawned ) { - name = cl->name; -#ifdef NOTUSED - //handle color chars - nametxt[0] = 0; - k = 0; - while(j = *name) { - if ( Q_IsColorString( name ) ) { - name +=2; - continue; - } - nametxt[k] = j; - name++; - k++; - //failsafe - break at 32 chars - if(k>30) - break; + /* send score of 0 for spectators and players not yet in game + * statistics program uses this data when polling for scores + */ + int cl_score = 0; + if ( cl->state == cs_spawned + && cl->edict->client->ps.stats[STAT_SPECTATOR] == 0 ) + { + cl_score = cl->edict->client->ps.stats[STAT_FRAGS];; + } + /* + * send color characters + * do not send actual ip addresses for security/privacy reasons + */ + Com_sprintf( player, sizeof(player), + "%i %i \"%s\" \"127.0.0.1\"\n", + cl_score, cl->ping, cl->name); + if ( (strlen(status) + strlen(player) + 1) < sizeof(status) ) + { + strncat( status, player, strlen(player) ); + } + else + { + msg_overflow = true; + break; } - nametxt[k]=0; -#else - //allow color chars to be sent - Q_strncpyz2( nametxt, name, sizeof(nametxt) ); -#endif - //s = NET_AdrToString ( cl->netchan.remote_address); //fuck you Luigi - Com_sprintf (player, sizeof(player), "%i %i \"%s\" \"127.0.0.1\"\n", - cl->edict->client->ps.stats[STAT_FRAGS], cl->ping, nametxt); - playerLength = strlen(player); - if (statusLength + playerLength >= sizeof(status) ) - break; // can't hold any more - strcpy (status + statusLength, player); - statusLength += playerLength; - } } - //bot score info - for (i=0 ; ivalue ; i++) - { - cl = &svs.clients[i]; - - if(cl->edict->client->ps.botnum) { - for(i = 0; i < cl->edict->client->ps.botnum; i++) { - name = cl->edict->client->ps.bots[i].name; -#ifdef NOTUSED - //handle color chars - nametxt[0] = 0; - k = 0; - while(j = *name) { - if ( Q_IsColorString( name ) ) { - name +=2; - continue; + // bot score info + if ( !msg_overflow ) + { + for ( cl=svs.clients, count=maxclients->integer ; count-- ; cl++ ) + { + size_t bot_count; + bot_count = cl->edict->client->ps.botnum; + if ( bot_count ) + { // normally, first client contains the bot names and scores + bot_t* ps_bot; + for ( ps_bot = cl->edict->client->ps.bots ; bot_count-- ; ps_bot++ ) + { + int bot_score = ps_bot->score; + Com_sprintf( player, sizeof(player), + "%i %i \"%s\" \"127.0.0.1\"\n", + bot_score, + 0, // bot ping + ps_bot->name ); + if ( (strlen(status) + strlen(player) + 1) < sizeof(status) ) + { + strncat( status, player, strlen(player) ); } - nametxt[k] = j; - name++; - k++; - //failsafe - break at 32 chars - if(k>30) + else + { + msg_overflow = true; break; + } } - nametxt[k]=0; -#else - //allow color chars to be sent - Q_strncpyz2( nametxt, name, sizeof(nametxt) ); -#endif - - Com_sprintf (player, sizeof(player), "%i %i \"%s\" \"127.0.0.1\"\n", - cl->edict->client->ps.bots[i].score, 0, nametxt); - playerLength = strlen(player); - if (statusLength + playerLength >= sizeof(status) ) - break; // can't hold any more - strcpy (status + statusLength, player); - statusLength += playerLength; } break; } } - //end bot score info + if ( msg_overflow ) + { + Com_DPrintf("SV_StatusString overflowed\n"); + } return status; } @@ -362,7 +346,7 @@ int version; client_t *cl; - if (maxclients->value == 1) + if (maxclients->integer == 1) return; // ignore in single player version = atoi (Cmd_Argv(1)); @@ -376,12 +360,12 @@ else { count = 0; - for (i=0 ; ivalue ; i++) + for (i=0 ; iinteger ; i++) if (svs.clients[i].state >= cs_connected) count++; //bot score info - for (i=0 ; ivalue ; i++) + for (i=0 ; iinteger ; i++) { cl = &svs.clients[i]; if(cl->edict->client->ps.botnum > 0) @@ -494,8 +478,8 @@ version = atoi(Cmd_Argv(1)); if (version != PROTOCOL_VERSION) { - Netchan_OutOfBandPrint (NS_SERVER, adr, "print\nServer is version %s\n", VERSION); - Com_DPrintf (" rejected connect from version %i\n", version); + Netchan_OutOfBandPrint (NS_SERVER, adr, "print\nServer is protocol version %s\n", PROTOCOL_VERSION); + Com_DPrintf (" rejected connect from protocol version %i\n", version); SV_LogEvent( adr , "RVR" , NULL ); return; } @@ -508,7 +492,7 @@ //limit connections from a single IP previousclients = 0; - for (i=0,cl=svs.clients ; ivalue ; i++,cl++) + for (i=0,cl=svs.clients ; iinteger ; i++,cl++) { if (cl->state == cs_free) continue; @@ -612,7 +596,7 @@ memset (newcl, 0, sizeof(client_t)); // if there is already a slot for this ip, reuse it - for (i=0,cl=svs.clients ; ivalue ; i++,cl++) + for (i=0,cl=svs.clients ; iinteger ; i++,cl++) { if (cl->state == cs_free) continue; @@ -647,7 +631,7 @@ // find a client slot //get number of bots - for (i=botnum=0 ; ivalue ; i++) + for (i=botnum=0 ; iinteger ; i++) { cl = &svs.clients[i]; botnum = cl->edict->client->ps.botnum; @@ -670,7 +654,7 @@ botnum = sv_numbots; } - for (i=0,cl=svs.clients ; ivalue-botnum; i++,cl++) + for (i=0,cl=svs.clients ; iinteger-botnum; i++,cl++) { if (cl->state == cs_free) { @@ -732,6 +716,9 @@ newcl->datagram.allowoverflow = true; newcl->lastmessage = svs.realtime; // don't timeout newcl->lastconnect = svs.realtime; + + ge->ForceExitIntermission (); + Cbuf_Execute (); } int Rcon_Validate (void) @@ -874,7 +861,7 @@ client_t *cl; int total, count; - for (i=0 ; ivalue ; i++) + for (i=0 ; iinteger ; i++) { cl = &svs.clients[i]; if (cl->state != cs_spawned ) @@ -928,7 +915,7 @@ if (sv.framenum & 15) return; - for (i=0 ; ivalue ; i++) + for (i=0 ; iinteger ; i++) { cl = &svs.clients[i]; if (cl->state == cs_free ) @@ -969,7 +956,7 @@ qport = MSG_ReadShort (&net_message) & 0xffff; // check for packets from connected clients - for (i=0, cl=svs.clients ; ivalue ; i++,cl++) + for (i=0, cl=svs.clients ; iinteger ; i++,cl++) { if (cl->state == cs_free) continue; @@ -995,7 +982,7 @@ break; } - if (i != maxclients->value) + if (i != maxclients->integer) continue; } } @@ -1023,7 +1010,7 @@ droppoint = svs.realtime - 1000*timeout->value; zombiepoint = svs.realtime - 1000*zombietime->value; - for (i=0,cl=svs.clients ; ivalue ; i++,cl++) + for (i=0,cl=svs.clients ; iinteger ; i++,cl++) { @@ -1077,7 +1064,7 @@ */ void SV_RunGameFrame (void) { - if (host_speeds->value) + if (host_speeds->integer) time_before_game = Sys_Milliseconds (); // we always need to bump framenum, even if we @@ -1088,20 +1075,20 @@ sv.time = sv.framenum*100; // don't run if paused - if (!sv_paused->value || maxclients->value > 1) + if (!sv_paused->integer || maxclients->integer > 1) { ge->RunFrame (); // never get more than one tic behind if (sv.time < svs.realtime) { - if (sv_showclamp->value) + if (sv_showclamp->integer) Com_Printf ("sv highclamp\n"); svs.realtime = sv.time; } } - if (host_speeds->value) + if (host_speeds->integer) time_after_game = Sys_Milliseconds (); } @@ -1137,12 +1124,12 @@ SV_ReadPackets (); // move autonomous things around if enough time has passed - if (!sv_timedemo->value && svs.realtime < sv.time) + if (!sv_timedemo->integer && svs.realtime < sv.time) { // never let the time get too far off if (sv.time - svs.realtime > 100) { - if (sv_showclamp->value) + if (sv_showclamp->integer) Com_Printf ("sv lowclamp\n"); svs.realtime = sv.time - 100; } @@ -1197,7 +1184,7 @@ // pgm post3.19 change, cvar pointer not validated before dereferencing - if(!public_server || !public_server->value) + if(!public_server || !public_server->integer) return; // check for time wraparound @@ -1225,7 +1212,7 @@ { // pgm post3.19 change, cvar pointer not validated before dereferencing - if (!public_server || !public_server->value) + if (!public_server || !public_server->integer) return; // a private dedicated game SV_HandleMasters ("shutdown", "shutdown"); @@ -1246,7 +1233,7 @@ qboolean updated_master; // if the server is not dedicated, we need to check cl_master - if ( !( dedicated && dedicated->value ) ) + if ( !( dedicated && dedicated->integer ) ) { if ( !sv_master ) { @@ -1412,7 +1399,7 @@ allow_download_models = Cvar_Get ("allow_download_models", "1", CVAR_ARCHIVE); allow_download_sounds = Cvar_Get ("allow_download_sounds", "1", CVAR_ARCHIVE); allow_download_maps = Cvar_Get ("allow_download_maps", "1", CVAR_ARCHIVE); - sv_downloadurl = Cvar_Get("sv_downloadurl", "http://icculus.org/alienarena/sv_downloadurl", CVAR_SERVERINFO); + sv_downloadurl = Cvar_Get("sv_downloadurl", "http://red.planetarena.org/sv_downloadurl", CVAR_SERVERINFO); sv_iplogfile = Cvar_Get("sv_iplogfile" , "" , CVAR_ARCHIVE); @@ -1421,6 +1408,8 @@ sv_airaccelerate = Cvar_Get("sv_airaccelerate", "0", CVAR_LATCH); sv_joustmode = Cvar_Get("sv_joustmode", "0", CVAR_SERVERINFO); + sv_tactical = Cvar_Get("g_tactical", "0", CVAR_LATCH | CVAR_GAMEINFO); + sv_excessive = Cvar_Get("excessive", "0", CVAR_LATCH | CVAR_GAMEINFO); public_server = Cvar_Get ("sv_public", "1", 0); @@ -1432,6 +1421,8 @@ SZ_Init (&net_message, net_message_buffer, sizeof(net_message_buffer)); SZ_SetName (&net_message, "Net message buffer", true); + + remoteserver_runspeed = 300; //default } /* @@ -1462,13 +1453,13 @@ // send it twice // stagger the packets to crutch operating system limited buffers - for (i=0, cl = svs.clients ; ivalue ; i++, cl++) + for (i=0, cl = svs.clients ; iinteger ; i++, cl++) if (cl->state >= cs_connected) Netchan_Transmit (&cl->netchan, net_message.cursize , net_message.data); - for (i=0, cl = svs.clients ; ivalue ; i++, cl++) + for (i=0, cl = svs.clients ; iinteger ; i++, cl++) if (cl->state >= cs_connected) Netchan_Transmit (&cl->netchan, net_message.cursize diff -Nru alien-arena-7.53+dfsg/source/server/sv_send.c alien-arena-7.66+dfsg/source/server/sv_send.c --- alien-arena-7.53+dfsg/source/server/sv_send.c 2011-11-27 21:57:22.000000000 +0000 +++ alien-arena-7.66+dfsg/source/server/sv_send.c 2013-06-22 20:07:36.000000000 +0000 @@ -14,7 +14,7 @@ You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. +Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. */ // sv_send.c @@ -24,6 +24,7 @@ #endif #include "server.h" +#include "stdint.h" /* ============================================================================= @@ -171,18 +172,18 @@ qboolean reliable; int area1, area2; - /* 2011-11 Remove redundancy, was calling CM_PointLeafnum(origin) twice - * for every PVS/PHS message. Was doing unnecessary check on client - * location for PVS/PHS. Both minor performance hits. - */ + /* 2011-11 Remove redundancy, was calling CM_PointLeafnum(origin) twice + * for every PVS/PHS message. Was doing unnecessary check on client + * location for PVS/PHS. Both minor performance hits. + */ // if doing a serverrecord, store everything if (svs.demofile) SZ_Write (&svs.demo_multicast, sv.multicast.data, sv.multicast.cursize); - reliable = false; - mask = NULL; - area1 = 0; + reliable = false; + mask = NULL; + area1 = 0; switch (to) { case MULTICAST_ALL_R: @@ -193,9 +194,9 @@ case MULTICAST_PHS_R: reliable = true; // intentional fallthrough case MULTICAST_PHS: - // location for source of the sound that may be hearable + // location for source of the sound that may be hearable leafnum = CM_PointLeafnum (origin); - area1 = CM_LeafArea (leafnum); + area1 = CM_LeafArea (leafnum); cluster = CM_LeafCluster (leafnum); mask = CM_ClusterPHS (cluster); break; @@ -203,9 +204,9 @@ case MULTICAST_PVS_R: reliable = true; // intentional fallthrough case MULTICAST_PVS: - // location for entity or effect that may be visible + // location for entity or effect that may be visible leafnum = CM_PointLeafnum (origin); - area1 = CM_LeafArea (leafnum); + area1 = CM_LeafArea (leafnum); cluster = CM_LeafCluster (leafnum); mask = CM_ClusterPVS (cluster); break; @@ -215,7 +216,7 @@ } // send the data to all relevent clients - for ( j=maxclients->integer, client=svs.clients ; j-- ; client++ ) + for ( j=maxclients->integer, client=svs.clients ; j-- ; client++ ) { if (client->state == cs_free || client->state == cs_zombie) continue; @@ -223,15 +224,15 @@ continue; if (mask) - { // check for "hearable" or "visible" - // find cluster player is in + { // check for "hearable" or "visible" + // find cluster player is in leafnum = CM_PointLeafnum (client->edict->s.origin); cluster = CM_LeafCluster (leafnum); - if ( !(mask[cluster>>3] & (1<<(cluster & 7))) ) - continue; // by cluster mask, player cannot see/hear this + if ( !(mask[cluster>>3] & (1<<(cluster & 7))) ) + continue; // by cluster mask, player cannot see/hear this area2 = CM_LeafArea (leafnum); if (!CM_AreasConnected (area1, area2)) - continue; // by leaf, player cannot see/hear this + continue; // by leaf, player cannot see/hear this } if (reliable) @@ -445,6 +446,8 @@ { fclose (sv.demofile); sv.demofile = NULL; + FS_FreeFile (sv.demobuf); + sv.demosize = sv.demo_ofs = 0; } SV_Nextserver (); } @@ -495,7 +498,6 @@ client_t *c; int msglen; byte msgbuf[MAX_MSGLEN]; - int r; msglen = 0; @@ -507,13 +509,14 @@ else { // get the next message - r = fread (&msglen, 4, 1, sv.demofile); - if (r != 1) + if (sv.demo_ofs+4 >= sv.demosize) { SV_DemoCompleted (); return; } + msglen = *(int32_t *)(sv.demobuf+sv.demo_ofs); msglen = LittleLong (msglen); + sv.demo_ofs += sizeof (int32_t); if (msglen == -1) { SV_DemoCompleted (); @@ -521,12 +524,14 @@ } if (msglen > MAX_MSGLEN) Com_Error (ERR_DROP, "SV_SendClientMessages: msglen > MAX_MSGLEN"); - r = fread (msgbuf, msglen, 1, sv.demofile); - if (r != 1) + + if (sv.demo_ofs+msglen >= sv.demosize) { SV_DemoCompleted (); return; } + memcpy (msgbuf, sv.demobuf+sv.demo_ofs, msglen); + sv.demo_ofs += msglen; } } @@ -559,10 +564,21 @@ SV_SendClientDatagram (c); } else - { - // just update reliable if needed - if (c->netchan.message.cursize || curtime - c->netchan.last_sent > 1000 ) - Netchan_Transmit (&c->netchan, 0, NULL); + { // not spawned + /* send accumulated reliable messages when buffer has enough data + * or when a time limit is reached whichever comes first. + * time limit is 1 sec, buffer size trigger is 2800/4 = 700 + * keeps UDP packets mostly below 1000 bytes. some capture data + * collected 2012-11 indicated packets occasionally could exceed + * 1500 bytes which is not good. Possible cause of some overflow + * disconnects and other net comm problems. + */ + int timeout = curtime - c->netchan.last_sent ; + int cursize = c->netchan.message.cursize ; + if ( timeout > 1000 || cursize >= (MAX_MSGLEN)/4 ) + { + Netchan_Transmit( &c->netchan, 0, NULL ); + } } } } diff -Nru alien-arena-7.53+dfsg/source/server/sv_user.c alien-arena-7.66+dfsg/source/server/sv_user.c --- alien-arena-7.53+dfsg/source/server/sv_user.c 2011-11-27 21:57:22.000000000 +0000 +++ alien-arena-7.66+dfsg/source/server/sv_user.c 2013-06-22 20:07:36.000000000 +0000 @@ -49,6 +49,8 @@ FS_FOpenFile (name, &sv.demofile); if (!sv.demofile) Com_Error (ERR_DROP, "Couldn't open %s\n", name); + sv.demo_ofs = 0; + sv.demosize = FS_LoadFile (name, (void **)&sv.demobuf); } /* @@ -629,13 +631,13 @@ checksumIndex = net_message.readcount; checksum = MSG_ReadByte (&net_message); lastframe = MSG_ReadLong (&net_message); - if ( lastframe != cl->lastframe ) - { + if ( lastframe != cl->lastframe ) + { cl->lastframe = lastframe; - if ( cl->lastframe > 0 ) - { - cl->frame_latency[cl->lastframe & (LATENCY_COUNTS - 1)] - = svs.realtime - cl->frames[cl->lastframe & UPDATE_MASK].senttime; + if ( cl->lastframe > 0 ) + { + cl->frame_latency[cl->lastframe & (LATENCY_COUNTS - 1)] + = svs.realtime - cl->frames[cl->lastframe & UPDATE_MASK].senttime; } } @@ -644,20 +646,20 @@ MSG_ReadDeltaUsercmd (&net_message, &oldest, &oldcmd); MSG_ReadDeltaUsercmd (&net_message, &oldcmd, &newcmd); - // checks the lastframe and deltauser parts of command - calculatedChecksum = COM_BlockSequenceCRCByte( - net_message.data + checksumIndex + 1, // base - net_message.readcount - checksumIndex - 1, // length - cl->netchan.incoming_sequence ); // sequence - if ( calculatedChecksum != checksum ) - { + // checks the lastframe and deltauser parts of command + calculatedChecksum = COM_BlockSequenceCRCByte( + net_message.data + checksumIndex + 1, // base + net_message.readcount - checksumIndex - 1, // length + cl->netchan.incoming_sequence ); // sequence + if ( calculatedChecksum != checksum ) + { Com_Printf( - "PACKET: Failed command checksum for %s[%s] (%d != %d)/%d (UTC: %s)\n", - cl->name, ipaddr(cl), calculatedChecksum, checksum, + "PACKET: Failed command checksum for %s[%s] (%d != %d)/%d (UTC: %s)\n", + cl->name, ipaddr(cl), calculatedChecksum, checksum, cl->netchan.incoming_sequence, timestamp() ); - break; - } - + break; + } + if (cl->state == cs_spawned) { if ( move_issued ) @@ -674,19 +676,19 @@ //byte of zero. if (newcmd.msec > 250) { - Com_Printf( - "EXPLOIT: illegal msec value from %s[%s], %d (UTC: %s)\n", - cl->name, ipaddr(cl), newcmd.msec, timestamp() ); + Com_Printf( + "EXPLOIT: illegal msec value from %s[%s], %d (UTC: %s)\n", + cl->name, ipaddr(cl), newcmd.msec, timestamp() ); SV_KickClient (cl, "illegal pmove msec detected", NULL); return; } else if (newcmd.msec == 0) { Com_Printf( - "EXPLOIT: 0 msec move from %s[%s] (UTC: %s)\n", + "EXPLOIT: 0 msec move from %s[%s] (UTC: %s)\n", cl->name, ipaddr(cl), timestamp() ); SV_KickClient (cl, "zero pmove msec detected", NULL); - return; + return; } if (sv_enforcetime->integer) @@ -745,7 +747,7 @@ if (!sv_paused->value) { net_drop = cl->netchan.dropped; - if ( net_drop > 0 ) + if ( net_drop > 0 ) { /* when packets are dropped, or out of sequence * execute backup commands. if drop is more than @@ -768,8 +770,8 @@ cl->lastcmd = newcmd; break; - case clc_stringcmd: - + case clc_stringcmd: + s = MSG_ReadString (&net_message); // malicious users may try using too many string commands diff -Nru alien-arena-7.53+dfsg/source/server/sv_world.c alien-arena-7.66+dfsg/source/server/sv_world.c --- alien-arena-7.53+dfsg/source/server/sv_world.c 2010-08-20 06:52:33.000000000 +0000 +++ alien-arena-7.66+dfsg/source/server/sv_world.c 2013-06-22 20:07:36.000000000 +0000 @@ -546,6 +546,18 @@ continue; // don't clip against own missiles if (clip->passedict->owner == touch) continue; // don't clip against owner + // don't clip against teammates + { + int n, n2; + n = NUM_FOR_EDICT (clip->passedict); + n2 = NUM_FOR_EDICT (touch); + if ( n > 0 && n <= maxclients->integer && + n2 > 0 && n2 <= maxclients->integer && + clip->passedict->teamset && touch->teamset && + clip->passedict->dmteam != NO_TEAM && + clip->passedict->dmteam == touch->dmteam ) + continue; + } } if ( !(clip->contentmask & CONTENTS_DEADMONSTER) diff -Nru alien-arena-7.53+dfsg/source/unix/gl_glx.c alien-arena-7.66+dfsg/source/unix/gl_glx.c --- alien-arena-7.53+dfsg/source/unix/gl_glx.c 2011-06-07 20:06:30.000000000 +0000 +++ alien-arena-7.66+dfsg/source/unix/gl_glx.c 2013-06-22 20:07:36.000000000 +0000 @@ -64,8 +64,6 @@ extern qboolean mouse_is_position; extern int mouse_diff_x; extern int mouse_diff_y; -extern int mouse_odiff_x; -extern int mouse_odiff_y; extern float rs_realtime; extern viddef_t vid; @@ -461,6 +459,7 @@ int mwy = vid.height / 2; int multiclicktime = 750; int mouse_button; + static int last_mouse_x = 0, last_mouse_y = 0; float f_sys_msecs; unsigned u_sys_msecs; @@ -492,28 +491,8 @@ break; case MotionNotify: - if ( mouse_is_position ) - { // allow mouse movement on menus in windowed mode - mouse_diff_x = event.xmotion.x; - mouse_diff_y = event.xmotion.y; - } - else - { - if ( dgamouse ) - { // TODO: find documentation for DGA mouse, explain this - mouse_diff_x += (event.xmotion.x + (vidmode_active ? 0 : win_x)) * 2; - mouse_diff_y += (event.xmotion.y + (vidmode_active ? 0 : win_y)) * 2; - } - else - { // add the delta from the current position to the center - // to the pointer motion accumulator - mouse_diff_x += ((int)event.xmotion.x - mwx); - mouse_diff_y += ((int)event.xmotion.y - mwy); - - // flag to recenter pointer - dowarp = (mouse_diff_x != 0 || mouse_diff_y != 0 ); - } - } + last_mouse_x = event.xmotion.x; + last_mouse_y = event.xmotion.y; break; case ButtonPress: @@ -529,21 +508,24 @@ mouse_button = 1; break; } - - if ( (f_sys_msecs - cursor.buttontime[mouse_button]) - < multiclicktime ) - cursor.buttonclicks[mouse_button] += 1; - else - cursor.buttonclicks[mouse_button] = 1; - - if ( cursor.buttonclicks[mouse_button] > 3 ) - cursor.buttonclicks[mouse_button] = 3; - - cursor.buttontime[mouse_button] = f_sys_msecs; - - cursor.buttondown[mouse_button] = true; - cursor.buttonused[mouse_button] = false; - cursor.mouseaction = true; + + if (mouse_button < MENU_CURSOR_BUTTON_MAX) + { + if ( (f_sys_msecs - cursor.buttontime[mouse_button]) + < multiclicktime ) + cursor.buttonclicks[mouse_button] += 1; + else + cursor.buttonclicks[mouse_button] = 1; + + if ( cursor.buttonclicks[mouse_button] > 3 ) + cursor.buttonclicks[mouse_button] = 3; + + cursor.buttontime[mouse_button] = f_sys_msecs; + + cursor.buttondown[mouse_button] = true; + cursor.buttonused[mouse_button] = false; + cursor.mouseaction = true; + } switch ( event.xbutton.button ) { @@ -598,9 +580,11 @@ break; } - cursor.buttondown[mouse_button] = false; - cursor.buttonused[mouse_button] = false; - cursor.mouseaction = true; + if (mouse_button < MENU_CURSOR_BUTTON_MAX) + { + cursor.buttondown[mouse_button] = false; + cursor.buttonused[mouse_button] = false; + } switch ( event.xbutton.button ) { @@ -657,6 +641,29 @@ break; } } + + if ( mouse_is_position ) + { // allow mouse movement on menus in windowed mode + mouse_diff_x = last_mouse_x; + mouse_diff_y = last_mouse_y; + } + else + { + if ( dgamouse ) + { // TODO: find documentation for DGA mouse, explain this + mouse_diff_x += (last_mouse_x + (vidmode_active ? 0 : win_x)) * 2; + mouse_diff_y += (last_mouse_y + (vidmode_active ? 0 : win_y)) * 2; + } + else + { // add the delta from the current position to the center + // to the pointer motion accumulator + mouse_diff_x += ((int)last_mouse_x - mwx); + mouse_diff_y += ((int)last_mouse_y - mwy); + + // flag to recenter pointer + dowarp = (mouse_diff_x != 0 || mouse_diff_y != 0 ); + } + } if ( dowarp ) { /* move the pointer back to the window center */ @@ -696,6 +703,10 @@ */ rserr_t GLimp_SetMode( unsigned *pwidth, unsigned *pheight, int mode, qboolean fullscreen ) { + extern cvar_t *vid_xpos; // X coordinate of window position + extern cvar_t *vid_ypos; // Y coordinate of window position + int xpos, ypos; + int width, height; int attrib[] = { GLX_RGBA, @@ -783,6 +794,9 @@ have_stencil = true; vidmode_active = false; + + xpos = ypos = 0; + #if defined HAVE_XXF86VM if (vidmode_ext) { int best_fit, best_dist, dist, x, y, num_vidmodes; @@ -818,6 +832,15 @@ // Move the viewport to top left XF86VidModeSetViewPort(dpy, scrnum, 0, 0); + + if (width != actualWidth || height != actualHeight) + { + xpos = vid_xpos->integer; + ypos = vid_ypos->integer; + Com_Printf ("Resolution %dx%d is not supported natively by the display!\n", width, height); + Com_Printf ("Closest screen resolution is %dx%d. ", actualWidth, actualHeight); + Com_Printf ("Use vid_xpos and vid_ypos to adjust the position of the game window (current offset is %d, %d)\n", xpos, ypos); + } } else fullscreen = 0; } @@ -860,7 +883,7 @@ if (sizehints) XFree(sizehints); - XStoreName(dpy, win, "CRX"); + XStoreName(dpy, win, "Alien Arena"); wmDeleteWindow = XInternAtom(dpy, "WM_DELETE_WINDOW", False); XSetWMProtocols(dpy, win, &wmDeleteWindow, 1); @@ -871,12 +894,12 @@ #if defined HAVE_XXF86VM if (vidmode_active) { - XMoveWindow(dpy, win, 0, 0); + XMoveWindow(dpy, win, xpos, ypos); XRaiseWindow(dpy, win); XWarpPointer(dpy, None, win, 0, 0, 0, 0, 0, 0); XFlush(dpy); // Move the viewport to top left - XF86VidModeSetViewPort(dpy, scrnum, 0, 0); + XF86VidModeSetViewPort(dpy, scrnum, xpos, ypos); } #endif // defined HAVE_XXF86VM diff -Nru alien-arena-7.53+dfsg/source/unix/odesrc/joints/universal.cpp alien-arena-7.66+dfsg/source/unix/odesrc/joints/universal.cpp --- alien-arena-7.53+dfsg/source/unix/odesrc/joints/universal.cpp 2011-03-01 08:18:44.000000000 +0000 +++ alien-arena-7.66+dfsg/source/unix/odesrc/joints/universal.cpp 2013-06-22 20:07:36.000000000 +0000 @@ -640,10 +640,11 @@ { joint->getAngles( angle2, angle1 ); *angle2 = -(*angle2); - return; } else - return joint->getAngles( angle1, angle2 ); + { + joint->getAngles( angle1, angle2 ); + } } diff -Nru alien-arena-7.53+dfsg/source/unix/odesrc/mass.cpp alien-arena-7.66+dfsg/source/unix/odesrc/mass.cpp --- alien-arena-7.53+dfsg/source/unix/odesrc/mass.cpp 2011-03-01 08:18:44.000000000 +0000 +++ alien-arena-7.66+dfsg/source/unix/odesrc/mass.cpp 2013-06-22 20:07:36.000000000 +0000 @@ -544,11 +544,11 @@ // Backwards compatible API void dMassSetCappedCylinder(dMass *a, dReal b, int c, dReal d, dReal e) { - return dMassSetCapsule(a,b,c,d,e); + dMassSetCapsule(a,b,c,d,e); } void dMassSetCappedCylinderTotal(dMass *a, dReal b, int c, dReal d, dReal e) { - return dMassSetCapsuleTotal(a,b,c,d,e); + dMassSetCapsuleTotal(a,b,c,d,e); } diff -Nru alien-arena-7.53+dfsg/source/unix/qasm.h alien-arena-7.66+dfsg/source/unix/qasm.h --- alien-arena-7.53+dfsg/source/unix/qasm.h 2007-03-04 06:49:14.000000000 +0000 +++ alien-arena-7.66+dfsg/source/unix/qasm.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,478 +0,0 @@ -/* -Copyright (C) 1997-2001 Id Software, Inc. - -This program 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. - -This program 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 this program; if not, write to the Free Software -Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. - -*/ -#ifndef __ASM_I386__ -#define __ASM_I386__ - -#ifdef ELF -#define C(label) label -#else -#define C(label) _##label -#endif - - -//#define GLQUAKE 1 - -#if defined(_WIN32) && !defined(WINDED) - -#if defined(_M_IX86) -#define __i386__ 1 -#endif - -#endif - -#ifdef __i386__ -#define id386 1 -#else -#define id386 0 -#endif - -// !!! must be kept the same as in d_iface.h !!! -#define TRANSPARENT_COLOR 255 - -#ifndef GLQUAKE - .extern C(d_zistepu) - .extern C(d_pzbuffer) - .extern C(d_zistepv) - .extern C(d_zrowbytes) - .extern C(d_ziorigin) - .extern C(r_turb_s) - .extern C(r_turb_t) - .extern C(r_turb_pdest) - .extern C(r_turb_spancount) - .extern C(r_turb_turb) - .extern C(r_turb_pbase) - .extern C(r_turb_sstep) - .extern C(r_turb_tstep) - .extern C(r_bmodelactive) - .extern C(d_sdivzstepu) - .extern C(d_tdivzstepu) - .extern C(d_sdivzstepv) - .extern C(d_tdivzstepv) - .extern C(d_sdivzorigin) - .extern C(d_tdivzorigin) - .extern C(sadjust) - .extern C(tadjust) - .extern C(bbextents) - .extern C(bbextentt) - .extern C(cacheblock) - .extern C(d_viewbuffer) - .extern C(cachewidth) - .extern C(d_pzbuffer) - .extern C(d_zrowbytes) - .extern C(d_zwidth) - .extern C(d_scantable) - .extern C(r_lightptr) - .extern C(r_numvblocks) - .extern C(prowdestbase) - .extern C(pbasesource) - .extern C(r_lightwidth) - .extern C(lightright) - .extern C(lightrightstep) - .extern C(lightdeltastep) - .extern C(lightdelta) - .extern C(lightright) - .extern C(lightdelta) - .extern C(sourcetstep) - .extern C(surfrowbytes) - .extern C(lightrightstep) - .extern C(lightdeltastep) - .extern C(r_sourcemax) - .extern C(r_stepback) - .extern C(colormap) - .extern C(blocksize) - .extern C(sourcesstep) - .extern C(lightleft) - .extern C(blockdivshift) - .extern C(blockdivmask) - .extern C(lightleftstep) - .extern C(r_origin) - .extern C(r_ppn) - .extern C(r_pup) - .extern C(r_pright) - .extern C(ycenter) - .extern C(xcenter) - .extern C(d_vrectbottom_particle) - .extern C(d_vrectright_particle) - .extern C(d_vrecty) - .extern C(d_vrectx) - .extern C(d_pix_shift) - .extern C(d_pix_min) - .extern C(d_pix_max) - .extern C(d_y_aspect_shift) - .extern C(screenwidth) - .extern C(r_leftclipped) - .extern C(r_leftenter) - .extern C(r_rightclipped) - .extern C(r_rightenter) - .extern C(modelorg) - .extern C(xscale) - .extern C(r_refdef) - .extern C(yscale) - .extern C(r_leftexit) - .extern C(r_rightexit) - .extern C(r_lastvertvalid) - .extern C(cacheoffset) - .extern C(newedges) - .extern C(removeedges) - .extern C(r_pedge) - .extern C(r_framecount) - .extern C(r_u1) - .extern C(r_emitted) - .extern C(edge_p) - .extern C(surface_p) - .extern C(surfaces) - .extern C(r_lzi1) - .extern C(r_v1) - .extern C(r_ceilv1) - .extern C(r_nearzi) - .extern C(r_nearzionly) - .extern C(edge_aftertail) - .extern C(edge_tail) - .extern C(current_iv) - .extern C(edge_head_u_shift20) - .extern C(span_p) - .extern C(edge_head) - .extern C(fv) - .extern C(edge_tail_u_shift20) - .extern C(r_apverts) - .extern C(r_anumverts) - .extern C(aliastransform) - .extern C(r_avertexnormals) - .extern C(r_plightvec) - .extern C(r_ambientlight) - .extern C(r_shadelight) - .extern C(aliasxcenter) - .extern C(aliasycenter) - .extern C(a_sstepxfrac) - .extern C(r_affinetridesc) - .extern C(acolormap) - .extern C(d_pcolormap) - .extern C(r_affinetridesc) - .extern C(d_sfrac) - .extern C(d_ptex) - .extern C(d_pedgespanpackage) - .extern C(d_tfrac) - .extern C(d_light) - .extern C(d_zi) - .extern C(d_pdest) - .extern C(d_pz) - .extern C(d_aspancount) - .extern C(erroradjustup) - .extern C(errorterm) - .extern C(d_xdenom) - .extern C(r_p0) - .extern C(r_p1) - .extern C(r_p2) - .extern C(a_tstepxfrac) - .extern C(r_sstepx) - .extern C(r_tstepx) - .extern C(a_ststepxwhole) - .extern C(zspantable) - .extern C(skintable) - .extern C(r_zistepx) - .extern C(erroradjustdown) - .extern C(d_countextrastep) - .extern C(ubasestep) - .extern C(a_ststepxwhole) - .extern C(a_tstepxfrac) - .extern C(r_lstepx) - .extern C(a_spans) - .extern C(erroradjustdown) - .extern C(d_pdestextrastep) - .extern C(d_pzextrastep) - .extern C(d_sfracextrastep) - .extern C(d_ptexextrastep) - .extern C(d_countextrastep) - .extern C(d_tfracextrastep) - .extern C(d_lightextrastep) - .extern C(d_ziextrastep) - .extern C(d_pdestbasestep) - .extern C(d_pzbasestep) - .extern C(d_sfracbasestep) - .extern C(d_ptexbasestep) - .extern C(ubasestep) - .extern C(d_tfracbasestep) - .extern C(d_lightbasestep) - .extern C(d_zibasestep) - .extern C(zspantable) - .extern C(r_lstepy) - .extern C(r_sstepy) - .extern C(r_tstepy) - .extern C(r_zistepy) - .extern C(D_PolysetSetEdgeTable) - .extern C(D_RasterizeAliasPolySmooth) - - .extern float_point5 - .extern Float2ToThe31nd - .extern izistep - .extern izi - .extern FloatMinus2ToThe31nd - .extern float_1 - .extern float_particle_z_clip - .extern float_minus_1 - .extern float_0 - .extern fp_16 - .extern fp_64k - .extern fp_1m - .extern fp_1m_minus_1 - .extern fp_8 - .extern entryvec_table - .extern advancetable - .extern sstep - .extern tstep - .extern pspantemp - .extern counttemp - .extern jumptemp - .extern reciprocal_table - .extern DP_Count - .extern DP_u - .extern DP_v - .extern DP_32768 - .extern DP_Color - .extern DP_Pix - .extern DP_EntryTable - .extern pbase - .extern s - .extern t - .extern sfracf - .extern tfracf - .extern snext - .extern tnext - .extern spancountminus1 - .extern zi16stepu - .extern sdivz16stepu - .extern tdivz16stepu - .extern zi8stepu - .extern sdivz8stepu - .extern tdivz8stepu - .extern reciprocal_table_16 - .extern entryvec_table_16 - .extern ceil_cw - .extern single_cw - .extern fp_64kx64k - .extern pz - .extern spr8entryvec_table -#endif - - .extern C(snd_scaletable) - .extern C(paintbuffer) - .extern C(snd_linear_count) - .extern C(snd_p) - .extern C(snd_vol) - .extern C(snd_out) - .extern C(vright) - .extern C(vup) - .extern C(vpn) - .extern C(BOPS_Error) - -// -// !!! note that this file must match the corresponding C structures at all -// times !!! -// - -// plane_t structure -// !!! if this is changed, it must be changed in model.h too !!! -// !!! if the size of this is changed, the array lookup in SV_HullPointContents -// must be changed too !!! -#define pl_normal 0 -#define pl_dist 12 -#define pl_type 16 -#define pl_signbits 17 -#define pl_pad 18 -#define pl_size 20 - -// hull_t structure -// !!! if this is changed, it must be changed in model.h too !!! -#define hu_clipnodes 0 -#define hu_planes 4 -#define hu_firstclipnode 8 -#define hu_lastclipnode 12 -#define hu_clip_mins 16 -#define hu_clip_maxs 28 -#define hu_size 40 - -// dnode_t structure -// !!! if this is changed, it must be changed in bspfile.h too !!! -#define nd_planenum 0 -#define nd_children 4 -#define nd_mins 8 -#define nd_maxs 20 -#define nd_firstface 32 -#define nd_numfaces 36 -#define nd_size 40 - -// sfxcache_t structure -// !!! if this is changed, it much be changed in sound.h too !!! -#define sfxc_length 0 -#define sfxc_loopstart 4 -#define sfxc_speed 8 -#define sfxc_width 12 -#define sfxc_stereo 16 -#define sfxc_data 20 - -// channel_t structure -// !!! if this is changed, it much be changed in sound.h too !!! -#define ch_sfx 0 -#define ch_leftvol 4 -#define ch_rightvol 8 -#define ch_end 12 -#define ch_pos 16 -#define ch_looping 20 -#define ch_entnum 24 -#define ch_entchannel 28 -#define ch_origin 32 -#define ch_dist_mult 44 -#define ch_master_vol 48 -#define ch_size 52 - -// portable_samplepair_t structure -// !!! if this is changed, it much be changed in sound.h too !!! -#define psp_left 0 -#define psp_right 4 -#define psp_size 8 - - -// -// !!! note that this file must match the corresponding C structures at all -// times !!! -// - -// !!! if this is changed, it must be changed in r_local.h too !!! -#define NEAR_CLIP 0.01 - -// !!! if this is changed, it must be changed in r_local.h too !!! -#define CYCLE 128 - -// espan_t structure -// !!! if this is changed, it must be changed in r_shared.h too !!! -#define espan_t_u 0 -#define espan_t_v 4 -#define espan_t_count 8 -#define espan_t_pnext 12 -#define espan_t_size 16 - -// sspan_t structure -// !!! if this is changed, it must be changed in d_local.h too !!! -#define sspan_t_u 0 -#define sspan_t_v 4 -#define sspan_t_count 8 -#define sspan_t_size 12 - -// spanpackage_t structure -// !!! if this is changed, it must be changed in d_polyset.c too !!! -#define spanpackage_t_pdest 0 -#define spanpackage_t_pz 4 -#define spanpackage_t_count 8 -#define spanpackage_t_ptex 12 -#define spanpackage_t_sfrac 16 -#define spanpackage_t_tfrac 20 -#define spanpackage_t_light 24 -#define spanpackage_t_zi 28 -#define spanpackage_t_size 32 - -// edge_t structure -// !!! if this is changed, it must be changed in r_shared.h too !!! -#define et_u 0 -#define et_u_step 4 -#define et_prev 8 -#define et_next 12 -#define et_surfs 16 -#define et_nextremove 20 -#define et_nearzi 24 -#define et_owner 28 -#define et_size 32 - -// surf_t structure -// !!! if this is changed, it must be changed in r_shared.h too !!! -#define SURF_T_SHIFT 6 -#define st_next 0 -#define st_prev 4 -#define st_spans 8 -#define st_key 12 -#define st_last_u 16 -#define st_spanstate 20 -#define st_flags 24 -#define st_data 28 -#define st_entity 32 -#define st_nearzi 36 -#define st_insubmodel 40 -#define st_d_ziorigin 44 -#define st_d_zistepu 48 -#define st_d_zistepv 52 -#define st_pad 56 -#define st_size 64 - -// clipplane_t structure -// !!! if this is changed, it must be changed in r_local.h too !!! -#define cp_normal 0 -#define cp_dist 12 -#define cp_next 16 -#define cp_leftedge 20 -#define cp_rightedge 21 -#define cp_reserved 22 -#define cp_size 24 - -// medge_t structure -// !!! if this is changed, it must be changed in model.h too !!! -#define me_v 0 -#define me_cachededgeoffset 4 -#define me_size 8 - -// mvertex_t structure -// !!! if this is changed, it must be changed in model.h too !!! -#define mv_position 0 -#define mv_size 12 - -// refdef_t structure -// !!! if this is changed, it must be changed in render.h too !!! -#define rd_vrect 0 -#define rd_aliasvrect 20 -#define rd_vrectright 40 -#define rd_vrectbottom 44 -#define rd_aliasvrectright 48 -#define rd_aliasvrectbottom 52 -#define rd_vrectrightedge 56 -#define rd_fvrectx 60 -#define rd_fvrecty 64 -#define rd_fvrectx_adj 68 -#define rd_fvrecty_adj 72 -#define rd_vrect_x_adj_shift20 76 -#define rd_vrectright_adj_shift20 80 -#define rd_fvrectright_adj 84 -#define rd_fvrectbottom_adj 88 -#define rd_fvrectright 92 -#define rd_fvrectbottom 96 -#define rd_horizontalFieldOfView 100 -#define rd_xOrigin 104 -#define rd_yOrigin 108 -#define rd_vieworg 112 -#define rd_viewangles 124 -#define rd_ambientlight 136 -#define rd_size 140 - -// mtriangle_t structure -// !!! if this is changed, it must be changed in model.h too !!! -#define mtri_facesfront 0 -#define mtri_vertindex 4 -#define mtri_size 16 // !!! if this changes, array indexing in !!! - // !!! d_polysa.s must be changed to match !!! -#define mtri_shift 4 - -#endif diff -Nru alien-arena-7.53+dfsg/source/unix/qgl_unix.c alien-arena-7.66+dfsg/source/unix/qgl_unix.c --- alien-arena-7.53+dfsg/source/unix/qgl_unix.c 2011-01-13 19:07:57.000000000 +0000 +++ alien-arena-7.66+dfsg/source/unix/qgl_unix.c 2013-06-22 20:07:36.000000000 +0000 @@ -129,6 +129,7 @@ void ( APIENTRY * qglDrawArrays )(GLenum mode, GLint first, GLsizei count); void ( APIENTRY * qglDrawBuffer )(GLenum mode); void ( APIENTRY * qglDrawElements )(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices); +void ( APIENTRY * qglDrawRangeElements )(GLenum mode, GLuint start, GLuint end, GLsizei count, GLenum type, const GLvoid *indices); void ( APIENTRY * qglDrawPixels )(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels); void ( APIENTRY * qglEdgeFlag )(GLboolean flag); void ( APIENTRY * qglEdgeFlagPointer )(GLsizei stride, const GLvoid *pointer); @@ -405,9 +406,9 @@ void ( APIENTRY * qglPointParameterfvEXT)( GLenum param, const GLfloat *value ); void ( APIENTRY * qglColorTableEXT)( int, int, int, int, int, const void * ); void ( APIENTRY * qgl3DfxSetPaletteEXT)( GLuint * ); -void ( APIENTRY * qglSelectTextureARB)( GLenum ); -void ( APIENTRY * qglMTexCoord2fARB)( GLenum, GLfloat, GLfloat ); -void ( APIENTRY * qglMTexCoord3fARB)( GLenum, GLfloat, GLfloat, GLfloat ); +void ( APIENTRY * qglSelectTextureARB)( GLenum ); +void ( APIENTRY * qglMTexCoord2fARB)( GLenum, GLfloat, GLfloat ); +void ( APIENTRY * qglMTexCoord3fARB)( GLenum, GLfloat, GLfloat, GLfloat ); void ( APIENTRY * qglActiveTextureARB) ( GLenum ); void ( APIENTRY * qglClientActiveTextureARB) ( GLenum ); void (APIENTRY * qglMultiTexCoord3fvARB) (GLenum, GLfloat *); @@ -2720,6 +2721,7 @@ qglDrawArrays = NULL; qglDrawBuffer = NULL; qglDrawElements = NULL; + qglDrawRangeElements = NULL; qglDrawPixels = NULL; qglEdgeFlag = NULL; qglEdgeFlagPointer = NULL; @@ -3126,6 +3128,7 @@ qglDrawArrays = dllDrawArrays = GPA( "glDrawArrays" ); qglDrawBuffer = dllDrawBuffer = GPA( "glDrawBuffer" ); qglDrawElements = dllDrawElements = GPA( "glDrawElements" ); + qglDrawRangeElements = GPA ("glDrawRangeElements"); qglDrawPixels = dllDrawPixels = GPA( "glDrawPixels" ); qglEdgeFlag = dllEdgeFlag = GPA( "glEdgeFlag" ); qglEdgeFlagPointer = dllEdgeFlagPointer = GPA( "glEdgeFlagPointer" ); @@ -3420,7 +3423,7 @@ qglMTexCoord2fARB = 0; qglActiveTextureARB = 0; qglClientActiveTextureARB = 0; - qglMultiTexCoord3fvARB = 0; + qglMultiTexCoord3fvARB = 0; return true; } diff -Nru alien-arena-7.53+dfsg/source/unix/rw_unix.c alien-arena-7.66+dfsg/source/unix/rw_unix.c --- alien-arena-7.53+dfsg/source/unix/rw_unix.c 2011-09-29 05:04:07.000000000 +0000 +++ alien-arena-7.66+dfsg/source/unix/rw_unix.c 2013-06-22 20:07:36.000000000 +0000 @@ -45,8 +45,6 @@ mouse_available = true; - // Knightmare- added Psychospaz's menu mouse support - refreshCursorMenu(); refreshCursorLink(); } diff -Nru alien-arena-7.53+dfsg/source/unix/sys_unix.c alien-arena-7.66+dfsg/source/unix/sys_unix.c --- alien-arena-7.53+dfsg/source/unix/sys_unix.c 2011-02-22 16:00:07.000000000 +0000 +++ alien-arena-7.66+dfsg/source/unix/sys_unix.c 2013-06-22 20:07:36.000000000 +0000 @@ -63,42 +63,42 @@ // General routines // ======================================================================= -// Added ANSI color-escape output based on/inspired by Warsow. -M -void Sys_ConsoleOutput (char *string) -{ +// Added ANSI color-escape output based on/inspired by Warsow. -M +void Sys_ConsoleOutput (char *string) +{ #if defined ANSI_COLOR - - static int q3ToAnsi[ 8 ] = - { - 30, // COLOR_BLACK - 31, // COLOR_RED - 32, // COLOR_GREEN - 33, // COLOR_YELLOW - 34, // COLOR_BLUE - 36, // COLOR_CYAN - 35, // COLOR_MAGENTA - 0 // COLOR_WHITE - }; + + static int q3ToAnsi[ 8 ] = + { + 30, // COLOR_BLACK + 31, // COLOR_RED + 32, // COLOR_GREEN + 33, // COLOR_YELLOW + 34, // COLOR_BLUE + 36, // COLOR_CYAN + 35, // COLOR_MAGENTA + 0 // COLOR_WHITE + }; if ( nostdout && nostdout->integer ) return; - - while (*string) { - if (*string == '^' && string[1]) { - int colornum = (string[1]-'0')&7; - printf ("\033[%dm", q3ToAnsi[colornum]); - string += 2; - continue; - } - if (*string == '\n') - printf ("\033[0m\n"); - else if (*string == ' ') - printf ("\033[0m "); - else - printf ("%c", *string); - string++; - } - + + while (*string) { + if (*string == '^' && string[1]) { + int colornum = (string[1]-'0')&7; + printf ("\033[%dm", q3ToAnsi[colornum]); + string += 2; + continue; + } + if (*string == '\n') + printf ("\033[0m\n"); + else if (*string == ' ') + printf ("\033[0m "); + else + printf ("%c", *string); + string++; + } + #else if ( nostdout == NULL || !nostdout->integer ) @@ -208,9 +208,6 @@ fd_set fdset; struct timeval timeout; - if (!dedicated || !dedicated->value) - return NULL; - if (!stdin_active) return NULL; diff -Nru alien-arena-7.53+dfsg/source/unix/vid_so.c alien-arena-7.66+dfsg/source/unix/vid_so.c --- alien-arena-7.53+dfsg/source/unix/vid_so.c 2011-12-06 21:14:38.000000000 +0000 +++ alien-arena-7.66+dfsg/source/unix/vid_so.c 2013-06-22 20:07:36.000000000 +0000 @@ -196,8 +196,8 @@ { /* Create the video variables so we know how to start the graphics drivers */ vid_ref = Cvar_Get ("vid_ref", "glx", CVAR_ARCHIVE); - vid_xpos = Cvar_Get ("vid_xpos", "3", CVAR_ARCHIVE); - vid_ypos = Cvar_Get ("vid_ypos", "22", CVAR_ARCHIVE); + vid_xpos = Cvar_Get ("vid_xpos", "0", CVAR_ARCHIVE); + vid_ypos = Cvar_Get ("vid_ypos", "0", CVAR_ARCHIVE); vid_fullscreen = Cvar_Get ("vid_fullscreen", "0", CVAR_ARCHIVE); vid_gamma = Cvar_Get( "vid_gamma", "1", CVAR_ARCHIVE ); vid_width = Cvar_Get ( "vid_width", "640", CVAR_ARCHIVE ); diff -Nru alien-arena-7.53+dfsg/source/win32/in_win.c alien-arena-7.66+dfsg/source/win32/in_win.c --- alien-arena-7.53+dfsg/source/win32/in_win.c 2011-06-07 20:06:30.000000000 +0000 +++ alien-arena-7.66+dfsg/source/win32/in_win.c 2013-06-22 20:07:36.000000000 +0000 @@ -219,7 +219,6 @@ IN_StartupMouse =========== */ -void refreshCursorMenu(void); void refreshCursorLink (void); void IN_StartupMouse (void) { @@ -229,8 +228,6 @@ if ( !cv->value ) return; - // Knightmare- added Psychospaz's menu mouse support - refreshCursorMenu(); refreshCursorLink(); cursor.mouseaction = false; @@ -298,7 +295,6 @@ { //mouse let go cursor.buttondown[i] = false; cursor.buttonused[i] = false; - cursor.mouseaction = true; } } } @@ -747,7 +743,7 @@ return; } - if ( (in_speed.state & 1) ^ cl_run->integer) + if (!cl.tactical && ( (in_speed.state & 1) ^ cl_run->integer)) speed = 2; else speed = 1; diff -Nru alien-arena-7.53+dfsg/source/win32/q_shwin.c alien-arena-7.66+dfsg/source/win32/q_shwin.c --- alien-arena-7.53+dfsg/source/win32/q_shwin.c 2010-08-22 17:58:18.000000000 +0000 +++ alien-arena-7.66+dfsg/source/win32/q_shwin.c 2013-06-22 20:07:36.000000000 +0000 @@ -48,7 +48,7 @@ cursize = 0; hunkmaxsize = maxsize; #ifdef VIRTUAL_ALLOC - membase = VirtualAlloc (NULL, maxsize, MEM_RESERVE, PAGE_NOACCESS); + membase = VirtualAlloc (NULL, maxsize, MEM_RESERVE|MEM_TOP_DOWN, PAGE_NOACCESS); #else membase = malloc (maxsize); memset (membase, 0, maxsize); diff -Nru alien-arena-7.53+dfsg/source/win32/sys_win.c alien-arena-7.66+dfsg/source/win32/sys_win.c --- alien-arena-7.53+dfsg/source/win32/sys_win.c 2011-06-07 20:06:30.000000000 +0000 +++ alien-arena-7.66+dfsg/source/win32/sys_win.c 2013-06-22 20:07:36.000000000 +0000 @@ -141,6 +141,9 @@ char buffer[MAX_PRINTMSG]; int len = 0; + //FIXME: add a check for text == NULL and print an error message + //without potentially creating an infinite recursion loop + // Change \n to \r\n so it displays properly in the edit box and // remove color escapes while (*text){ @@ -752,8 +755,8 @@ } if ( mouse_available && GetCursorPos( ¤t_pos) ) { - mouse_diff_x = current_pos.x - window_center_x; - mouse_diff_y = current_pos.y - window_center_y; + mouse_diff_x += current_pos.x - window_center_x; + mouse_diff_y += current_pos.y - window_center_y; if ( mouse_diff_x || mouse_diff_y ) { SetCursorPos( window_center_x, window_center_y ); } diff -Nru alien-arena-7.53+dfsg/tactical/default.cfg alien-arena-7.66+dfsg/tactical/default.cfg --- alien-arena-7.53+dfsg/tactical/default.cfg 1970-01-01 00:00:00.000000000 +0000 +++ alien-arena-7.66+dfsg/tactical/default.cfg 2013-08-19 03:26:16.000000000 +0000 @@ -0,0 +1,158 @@ +// +// KEY BINDINGS +// + +unbindall + +bind ' "inven_drop" +bind 1 "use Blaster" +bind 2 "use Alien Disruptor" +bind 3 "use Pulse Rifle" +bind 4 "use Flame Thrower" +bind 5 "use Rocket Launcher" +bind 6 "use Alien Smartgun" +bind 7 "use Disruptor" +bind 8 "use Alien Vaporizer" +bind 9 "use Violator" +bind 0 "use Minderaser" + +bind MWHEELDOWN "weapprev" +bind MWHEELUP "weapnext" + +// +// CHARACTER CONTROLS +// + +bind CTRL +attack +bind MOUSE1 +attack +bind MOUSE2 +attack2 +bind ALT +strafe + +bind , +moveleft +bind . +moveright +bind DEL +lookdown +bind PGDN +lookup +bind END centerview +bind c +movedown + +bind i inven +bind ENTER invuse +bind [ invprev +bind ] invnext +bind ' invdrop +bind BACKSPACE invdrop + +bind TAB "score" + +bind / weapnext + +bind q use quad damage +bind i use invulnerability + +//waves +bind h "wave 0" +bind j "wave 1" +bind k "wave 2" +bind l "wave 3" +bind g "wave 4" + +bind SHIFT +speed + +bind UPARROW +forward +bind DOWNARROW +back +bind LEFTARROW +left +bind RIGHTARROW +right +bind w +forward +bind s +back +bind a +moveleft +bind d +moveright + +bind SPACE +moveup + +bind x "drop strafer; drop bomber; drop hover" + +// +// MOUSE OPTIONS +// + +bind \ +mlook + +// +// CLIENT ENVIRONMENT COMMANDS +// + +bind PAUSE "pause" +bind ESCAPE "togglemenu" +bind ~ "toggleconsole" +bind ` "toggleconsole" + +bind F1 "vote 1" +bind F2 "vote 2" +bind F3 "vote 3" +bind F4 "vote 4" +bind F10 "menu_quit" +bind F12 "screenshot" + +bind t "messagemode" +bind y "messagemode2" +bind u "messagemode3" + +bind + "sizeup" +bind = "sizeup" +bind - "sizedown" + +bind INS +klook + +// +// DEFAULT CVARS +// + +//set viewsize 100 +//set vid_fullscreen 1 +set win_noalttab 0 +set sensitivity 3 +set crosshair ch1 +set con_font "default" +set freelook 1 +set cl_run 1 +set hand 0 +set m_pitch 0.022 +set m_yaw 0.022 +set m_forward 1 +set m_side 0.8 +set m_smoothing 0 +set lookspring 1 +set lookstrafe 0 +set background_music 1 +set background_music_vol 0.8 +set s_volume 0.1 +set s_doppler 0 +set cl_noskins 0 +set cl_showplayernames 0 + +//---------------------------------------------- +// +// userinfo +// + +set name Player +set skin martianenforcer/default + +//---------------------------------------------- + +// +// DEMO STUFF +// +alias d1 "skill 1; deathmatch 1; fraglimit 0; maxclients 8; g_tactical 1; map tac-extermination" +// +// newgame command +// +alias newgame " killserver ; deathmatch 1; fraglimit 0; maxclients 8; g_tactical 1; map tac-extermination" + +// +// quake2 +set dedicated 1 +// will run this command if no other +map is included +// +alias dedicated_start "map tac-extermination" + + diff -Nru alien-arena-7.53+dfsg/tactical/maps.lst alien-arena-7.66+dfsg/tactical/maps.lst --- alien-arena-7.53+dfsg/tactical/maps.lst 1970-01-01 00:00:00.000000000 +0000 +++ alien-arena-7.66+dfsg/tactical/maps.lst 2013-08-19 03:26:16.000000000 +0000 @@ -0,0 +1,2 @@ +tac-extermination "Final Extermination" +0 \ No newline at end of file diff -Nru alien-arena-7.53+dfsg/tactical/motd.txt alien-arena-7.66+dfsg/tactical/motd.txt --- alien-arena-7.53+dfsg/tactical/motd.txt 1970-01-01 00:00:00.000000000 +0000 +++ alien-arena-7.66+dfsg/tactical/motd.txt 2013-08-19 03:26:16.000000000 +0000 @@ -0,0 +1,8 @@ +Welcome to Alien Arena Tactical Demo Alpha! + + +http://red.planetarena.org/ + + + + diff -Nru alien-arena-7.53+dfsg/tactical/server.cfg alien-arena-7.66+dfsg/tactical/server.cfg --- alien-arena-7.53+dfsg/tactical/server.cfg 1970-01-01 00:00:00.000000000 +0000 +++ alien-arena-7.66+dfsg/tactical/server.cfg 2013-08-19 03:26:16.000000000 +0000 @@ -0,0 +1,21 @@ +// Generic dedicated server config + +set dmflags 2359312 +set hostname "Alien Arena Tactical Demo Server" +set website "http://red.planetarena.org" s +set Admin "admin" s +set deathmatch 1 +set sv_botkickthreshold 4 +set maxclients 24 +set fraglimit 0 +set timelimit 0 +set sv_maplist "tac-extermination" +set sv_public 1 +set logfile 1 +set g_tactical 1 +set rcon_password "rconpw" +setmaster master.corservers.com master2.corservers.com +map tac-extermination + + +