mirror of
https://github.com/scp-fs2open/fs2open.github.com.git
synced 2026-11-07 18:31:26 -10:00
Compare commits
308
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
022a04472c | ||
|
|
e80b91c27e | ||
|
|
26a66f9c53 | ||
|
|
a337c9a5d5 | ||
|
|
85da72fb16 | ||
|
|
13ee1bdb60 | ||
|
|
02465b9db6 | ||
|
|
b33417a918 | ||
|
|
f802db8345 | ||
|
|
56054d6782 | ||
|
|
1c3fb592cb | ||
|
|
049870c973 | ||
|
|
22c0882bc6 | ||
|
|
ffd3fbd922 | ||
|
|
42e496d103 | ||
|
|
71f159840b | ||
|
|
854041749b | ||
|
|
a4a77744d6 | ||
|
|
dac335f3dd | ||
|
|
275ba09a3b | ||
|
|
40ab7fc0f3 | ||
|
|
3b16380936 | ||
|
|
67e18e30a7 | ||
|
|
293e984d60 | ||
|
|
35bf641cb7 | ||
|
|
c86461fd22 | ||
|
|
498edeb86e | ||
|
|
e6c7719bf4 | ||
|
|
e907a052e5 | ||
|
|
6f089c21c5 | ||
|
|
3d8ad87da9 | ||
|
|
92a0ed3c6d | ||
|
|
988b86238f | ||
|
|
f2c019adc3 | ||
|
|
bda256f095 | ||
|
|
77e48b4849 | ||
|
|
0ea85483dc | ||
|
|
54a034da9a | ||
|
|
84d249db18 | ||
|
|
5a1b5233b8 | ||
|
|
3a88ee37ed | ||
|
|
67464a2ad4 | ||
|
|
e1775947ec | ||
|
|
f18771b309 | ||
|
|
1716850f80 | ||
|
|
9ff5945744 | ||
|
|
13d91d590b | ||
|
|
4611c36631 | ||
|
|
0d5eb222a9 | ||
|
|
3508e8d309 | ||
|
|
cafe8965c1 | ||
|
|
5604bced59 | ||
|
|
08e2943edb | ||
|
|
656623be9c | ||
|
|
3ccc1da630 | ||
|
|
01c12c8010 | ||
|
|
dbd2ee4f3c | ||
|
|
84a5ae3268 | ||
|
|
949d8446f1 | ||
|
|
f7e17e90a7 | ||
|
|
f0078cc8fc | ||
|
|
833164823d | ||
|
|
77deede2de | ||
|
|
085a0aa0d4 | ||
|
|
3edcb0a519 | ||
|
|
c6ba1645a1 | ||
|
|
e1d2dfcf9e | ||
|
|
dccaa30202 | ||
|
|
e205ab47a2 | ||
|
|
a2e351779d | ||
|
|
f85ca67666 | ||
|
|
e1261c0340 | ||
|
|
89e4dc4fd5 | ||
|
|
fa480451d1 | ||
|
|
a42cf30bdb | ||
|
|
225bc96739 | ||
|
|
e15beaa7f9 | ||
|
|
fcc1ea98c4 | ||
|
|
afb0e066b0 | ||
|
|
7b5548642a | ||
|
|
5f1898c503 | ||
|
|
7854fb293f | ||
|
|
1e04df322c | ||
|
|
fb12c1df6e | ||
|
|
c4fcafccc5 | ||
|
|
cfbc2ebb46 | ||
|
|
4a85d415e5 | ||
|
|
94c2fab5b0 | ||
|
|
d6b179d3b5 | ||
|
|
32f7fd2c11 | ||
|
|
5a858562cc | ||
|
|
eb800ebbbc | ||
|
|
f3bd46dab2 | ||
|
|
b11a8c02a0 | ||
|
|
7564ecb19f | ||
|
|
65fd9ef338 | ||
|
|
aab49a95db | ||
|
|
f0110fab45 | ||
|
|
3c053feb30 | ||
|
|
68fde7a8ce | ||
|
|
abf067f708 | ||
|
|
0151279a55 | ||
|
|
633c391b4d | ||
|
|
fee9ff59ef | ||
|
|
290da64ffe | ||
|
|
46479ac3a0 | ||
|
|
016e525f62 | ||
|
|
58cb8f4a36 | ||
|
|
240c74da4e | ||
|
|
897d3f8ad5 | ||
|
|
3916653149 | ||
|
|
0baf2f7bc9 | ||
|
|
ef83ecbc05 | ||
|
|
53834ee415 | ||
|
|
7dcc40de8a | ||
|
|
edfd3fdc85 | ||
|
|
39e9cddb5f | ||
|
|
450ea5c63e | ||
|
|
36668ce6a1 | ||
|
|
8cacc9b1a0 | ||
|
|
03dd93b79d | ||
|
|
ee79809edc | ||
|
|
257675bb93 | ||
|
|
d9a01620f6 | ||
|
|
3b15d779d6 | ||
|
|
19796f7538 | ||
|
|
e594563d00 | ||
|
|
15d394edbf | ||
|
|
b07476fc96 | ||
|
|
d3e4c5c30b | ||
|
|
839be403b1 | ||
|
|
5c2c0ab09f | ||
|
|
81f8a9e375 | ||
|
|
4386cab9bc | ||
|
|
00773de340 | ||
|
|
450bd1e213 | ||
|
|
2092c2705f | ||
|
|
e592c64d8f | ||
|
|
0f275acc12 | ||
|
|
af1da198b3 | ||
|
|
e75e4b5640 | ||
|
|
9ed49694bf | ||
|
|
b0088c67ba | ||
|
|
3505a530d0 | ||
|
|
ec87a1f3ad | ||
|
|
0c9c758dbd | ||
|
|
17a9178c8b | ||
|
|
7628e19f26 | ||
|
|
97b506ca15 | ||
|
|
7c1c973917 | ||
|
|
e7340e703b | ||
|
|
1fa5e2bf54 | ||
|
|
dc12e5dd1e | ||
|
|
2c62498b62 | ||
|
|
2eb193101a | ||
|
|
11d8d11b04 | ||
|
|
37b0bd28ce | ||
|
|
13cccac317 | ||
|
|
4fce3b9610 | ||
|
|
fc22d35695 | ||
|
|
091c8b4d7e | ||
|
|
8d4512a612 | ||
|
|
c80bab1fcc | ||
|
|
ca0683ecfa | ||
|
|
31cfd8011f | ||
|
|
371f2e3869 | ||
|
|
cd48667a38 | ||
|
|
45d02246ee | ||
|
|
25e339a4d6 | ||
|
|
155f0f1cce | ||
|
|
807ee34c9d | ||
|
|
123515a33d | ||
|
|
cc741f5029 | ||
|
|
0fc5f831fc | ||
|
|
ecf181a2c7 | ||
|
|
000257bd8e | ||
|
|
30cbbfedf3 | ||
|
|
47cd793262 | ||
|
|
ed6be03aa0 | ||
|
|
afd83a21fb | ||
|
|
4a030dfb73 | ||
|
|
e4b6bc70bc | ||
|
|
fcaa985c2d | ||
|
|
3574628259 | ||
|
|
be71b9f6b5 | ||
|
|
5f5fe2b8cc | ||
|
|
5ff5467673 | ||
|
|
809b0155df | ||
|
|
1e6670c1b7 | ||
|
|
bda9f63f59 | ||
|
|
ea966211b5 | ||
|
|
1771fd2d3b | ||
|
|
7dd22631a9 | ||
|
|
7146c9f90c | ||
|
|
63a90da345 | ||
|
|
29a0e77753 | ||
|
|
1760554305 | ||
|
|
3f391d36b2 | ||
|
|
fee9efe1db | ||
|
|
c8a2551a6e | ||
|
|
9e5a3781b7 | ||
|
|
fa960dc625 | ||
|
|
364767a0b4 | ||
|
|
abdd8a6a79 | ||
|
|
15be002888 | ||
|
|
af9f703302 | ||
|
|
944981b835 | ||
|
|
f7760d69c0 | ||
|
|
b63c14fcb7 | ||
|
|
7ec2608d58 | ||
|
|
881b31f7fa | ||
|
|
6be53b57e1 | ||
|
|
13338a1c76 | ||
|
|
f843302d16 | ||
|
|
f4fe757d5d | ||
|
|
1a410e1f09 | ||
|
|
79fff22d2e | ||
|
|
e6536f612a | ||
|
|
031c50768a | ||
|
|
a805b8e293 | ||
|
|
7145251058 | ||
|
|
5a5e364bee | ||
|
|
6351a06b68 | ||
|
|
4dd27db603 | ||
|
|
d01ed806b9 | ||
|
|
2b6c194af7 | ||
|
|
87409846f0 | ||
|
|
88dca1dbea | ||
|
|
4bf29edec3 | ||
|
|
d1abacf7ae | ||
|
|
9d6126086c | ||
|
|
4c74af0b4a | ||
|
|
fb738a9319 | ||
|
|
c470ecc598 | ||
|
|
47302dd5ad | ||
|
|
431b588cef | ||
|
|
0f931f0275 | ||
|
|
0a3a0c525f | ||
|
|
c818bd61d5 | ||
|
|
3e220d87f0 | ||
|
|
58691c0d15 | ||
|
|
a59a1bbaad | ||
|
|
1d84bd94ea | ||
|
|
e777b3806e | ||
|
|
74afd2522f | ||
|
|
da831bf833 | ||
|
|
d21190d765 | ||
|
|
ae2eefeb92 | ||
|
|
c0968ba348 | ||
|
|
d469a505c4 | ||
|
|
34244e313b | ||
|
|
d77c3feef5 | ||
|
|
0fa9b99445 | ||
|
|
433688cc92 | ||
|
|
790af7d332 | ||
|
|
4fb733df43 | ||
|
|
0794d14a7a | ||
|
|
324747af39 | ||
|
|
5377b50e53 | ||
|
|
b745b8e545 | ||
|
|
cfa65cfe5c | ||
|
|
7d52af37fa | ||
|
|
d8f9376d55 | ||
|
|
2c95fa52f8 | ||
|
|
993740e06f | ||
|
|
da67b2b53c | ||
|
|
7d08fec7cc | ||
|
|
6ec2c31678 | ||
|
|
e469a54429 | ||
|
|
2352055d98 | ||
|
|
7892625474 | ||
|
|
58a1497614 | ||
|
|
76d94278a8 | ||
|
|
47b2c3cd88 | ||
|
|
1f55e87876 | ||
|
|
cdd1a0b743 | ||
|
|
f864a28bb3 | ||
|
|
993a176572 | ||
|
|
414a344f33 | ||
|
|
28848dcbc8 | ||
|
|
ea32341410 | ||
|
|
ad53507f1c | ||
|
|
8f9e7cf941 | ||
|
|
1f1339cb01 | ||
|
|
e5eafea546 | ||
|
|
373d2c201c | ||
|
|
ec63b64b1f | ||
|
|
e6da9a6d68 | ||
|
|
4fac9708ec | ||
|
|
71d4bd62b2 | ||
|
|
3e96899ace | ||
|
|
51c590c6a6 | ||
|
|
e7d1452827 | ||
|
|
137e7a8cdd | ||
|
|
77f769b328 | ||
|
|
c85cb1377b | ||
|
|
f3362d6a2f | ||
|
|
043310f88a | ||
|
|
46f524706c | ||
|
|
7b7df3caba | ||
|
|
a47ff4d7a5 | ||
|
|
70fc3119e7 | ||
|
|
830be35c58 | ||
|
|
2fff39194f | ||
|
|
fffa377d2f | ||
|
|
a819e73388 | ||
|
|
0562965e69 | ||
|
|
7928823b96 |
No files matched your search
@@ -1,15 +0,0 @@
|
||||
# The "checkoutlist" file is used to support additional version controlled
|
||||
# administrative files in $CVSROOT/CVSROOT, such as template files.
|
||||
#
|
||||
# The first entry on a line is a filename which will be checked out from
|
||||
# the corresponding RCS file in the $CVSROOT/CVSROOT directory.
|
||||
# The remainder of the line is an error message to use if the file cannot
|
||||
# be checked out.
|
||||
#
|
||||
# File format:
|
||||
#
|
||||
# [<whitespace>]<filename><whitespace><error message><end-of-line>
|
||||
#
|
||||
# comment lines begin with '#'
|
||||
new_commit_prep Error checking out/updating CVSROOT/new_commit_prep
|
||||
new_log_accum Error checking out/updating CVSROOT/new_log_accum
|
||||
@@ -1,17 +0,0 @@
|
||||
# The "commitinfo" file is used to control pre-commit checks.
|
||||
# The filter on the right is invoked with the repository and a list
|
||||
# of files to check. A non-zero exit of the filter program will
|
||||
# cause the commit to be aborted.
|
||||
#
|
||||
# The first entry on a line is a regular expression which is tested
|
||||
# against the directory that the change is being committed to, relative
|
||||
# to the $CVSROOT. For the first match that is found, then the remainder
|
||||
# of the line is the name of the filter to run.
|
||||
#
|
||||
# If the repository name does not match any of the regular expressions in this
|
||||
# file, the "DEFAULT" line is used, if it is specified.
|
||||
#
|
||||
# If the name "ALL" appears as a regular expression it is always used
|
||||
# in addition to the first matching regex or "DEFAULT".
|
||||
DEFAULT $CVSROOT/CVSROOT/new_commit_prep
|
||||
CVSROOT $CVSROOT/CVSROOT/new_commit_prep
|
||||
@@ -1,14 +0,0 @@
|
||||
# Set this to "no" if pserver shouldn't check system users/passwords
|
||||
#SystemAuth=no
|
||||
|
||||
# Put CVS lock files in this directory rather than directly in the repository.
|
||||
#LockDir=/var/lock/cvs
|
||||
|
||||
# Set `TopLevelAdmin' to `yes' to create a CVS directory at the top
|
||||
# level of the new working directory when using the `cvs checkout'
|
||||
# command.
|
||||
#TopLevelAdmin=no
|
||||
|
||||
# Set `LogHistory' to `all' or `TOFEWGCMAR' to log all transactions to the
|
||||
# history file, or a subset as needed (ie `TMAR' logs all write operations)
|
||||
#LogHistory=TOFEWGCMAR
|
||||
@@ -1,23 +0,0 @@
|
||||
# This file affects handling of files based on their names.
|
||||
#
|
||||
# The -t/-f options allow one to treat directories of files
|
||||
# as a single file, or to transform a file in other ways on
|
||||
# its way in and out of CVS.
|
||||
#
|
||||
# The -m option specifies whether CVS attempts to merge files.
|
||||
#
|
||||
# The -k option specifies keyword expansion (e.g. -kb for binary).
|
||||
#
|
||||
# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers)
|
||||
#
|
||||
# wildcard [option value][option value]...
|
||||
#
|
||||
# where option is one of
|
||||
# -f from cvs filter value: path to filter
|
||||
# -t to cvs filter value: path to filter
|
||||
# -m update methodology value: MERGE or COPY
|
||||
# -k expansion mode value: b, o, kkv, &c
|
||||
#
|
||||
# and value is a single-quote delimited value.
|
||||
# For example:
|
||||
#*.gif -k 'b'
|
||||
@@ -1,21 +0,0 @@
|
||||
# The "editinfo" file is used to allow verification of logging
|
||||
# information. It works best when a template (as specified in the
|
||||
# rcsinfo file) is provided for the logging procedure. Given a
|
||||
# template with locations for, a bug-id number, a list of people who
|
||||
# reviewed the code before it can be checked in, and an external
|
||||
# process to catalog the differences that were code reviewed, the
|
||||
# following test can be applied to the code:
|
||||
#
|
||||
# Making sure that the entered bug-id number is correct.
|
||||
# Validating that the code that was reviewed is indeed the code being
|
||||
# checked in (using the bug-id number or a seperate review
|
||||
# number to identify this particular code set.).
|
||||
#
|
||||
# If any of the above test failed, then the commit would be aborted.
|
||||
#
|
||||
# Actions such as mailing a copy of the report to each reviewer are
|
||||
# better handled by an entry in the loginfo file.
|
||||
#
|
||||
# One thing that should be noted is the the ALL keyword is not
|
||||
# supported. There can be only one entry that matches a given
|
||||
# repository.
|
||||
@@ -1,30 +0,0 @@
|
||||
# The "loginfo" file controls where "cvs commit" log information
|
||||
# is sent. The first entry on a line is a regular expression which must match
|
||||
# the directory that the change is being made to, relative to the
|
||||
# $CVSROOT. If a match is found, then the remainder of the line is a filter
|
||||
# program that should expect log information on its standard input.
|
||||
#
|
||||
# If the repository name does not match any of the regular expressions in this
|
||||
# file, the "DEFAULT" line is used, if it is specified.
|
||||
#
|
||||
# If the name ALL appears as a regular expression it is always used
|
||||
# in addition to the first matching regex or DEFAULT.
|
||||
#
|
||||
# You may specify a format string as part of the
|
||||
# filter. The string is composed of a `%' followed
|
||||
# by a single format character, or followed by a set of format
|
||||
# characters surrounded by `{' and `}' as separators. The format
|
||||
# characters are:
|
||||
#
|
||||
# s = file name
|
||||
# V = old version number (pre-checkin)
|
||||
# v = new version number (post-checkin)
|
||||
#
|
||||
# For example:
|
||||
#DEFAULT (echo ""; id; echo %s; date; cat) >> $CVSROOT/CVSROOT/commitlog
|
||||
# or
|
||||
#DEFAULT (echo ""; id; echo %{sVv}; date; cat) >> $CVSROOT/CVSROOT/commitlog
|
||||
|
||||
DEFAULT $CVSROOT/CVSROOT/new_log_accum -m [email protected] %{sVv}
|
||||
CVSROOT $CVSROOT/CVSROOT/new_log_accum -m [email protected] %{sVv}
|
||||
|
||||
@@ -1,26 +0,0 @@
|
||||
# Three different line formats are valid:
|
||||
# key -a aliases...
|
||||
# key [options] directory
|
||||
# key [options] directory files...
|
||||
#
|
||||
# Where "options" are composed of:
|
||||
# -i prog Run "prog" on "cvs commit" from top-level of module.
|
||||
# -o prog Run "prog" on "cvs checkout" of module.
|
||||
# -e prog Run "prog" on "cvs export" of module.
|
||||
# -t prog Run "prog" on "cvs rtag" of module.
|
||||
# -u prog Run "prog" on "cvs update" of module.
|
||||
# -d dir Place module in directory "dir" instead of module name.
|
||||
# -l Top-level directory only -- do not recurse.
|
||||
#
|
||||
# NOTE: If you change any of the "Run" options above, you'll have to
|
||||
# release and re-checkout any working directories of these modules.
|
||||
#
|
||||
# And "directory" is a path to a directory relative to $CVSROOT.
|
||||
#
|
||||
# The "-a" option specifies an alias. An alias is interpreted as if
|
||||
# everything on the right of the "-a" had been typed on the command line.
|
||||
#
|
||||
# You can encode a module within a module by using the special '&'
|
||||
# character to interpose another module into the current module. This
|
||||
# can be useful for creating a module that consists of many directories
|
||||
# spread out over the entire source repository.
|
||||
@@ -1,104 +0,0 @@
|
||||
#!/usr/bin/perl -w
|
||||
#
|
||||
# Copyright (C) 2000 by Kevin L. Mitchell <[email protected]>
|
||||
#
|
||||
# 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, 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.
|
||||
#
|
||||
# Script to store the last visited directory for newlogaccum.pl.
|
||||
#
|
||||
# $Id: new_commit_prep,v 1.1 2002-08-11 23:05:15 drevil Exp $
|
||||
|
||||
use strict;
|
||||
|
||||
# This routine removes everything in a directory
|
||||
sub clear_dir {
|
||||
my ($dir) = @_;
|
||||
my ($file);
|
||||
|
||||
opendir(DIR, $dir) || die "Cannot clear directory $dir: $!";
|
||||
while ($file = readdir(DIR)) {
|
||||
next
|
||||
if ($file eq "." || $file eq "..");
|
||||
|
||||
$file = "$dir/$file";
|
||||
|
||||
if (-d $file) {
|
||||
# It's a directory, recurse into it, then delete it.
|
||||
clear_dir($file);
|
||||
rmdir($file);
|
||||
} else {
|
||||
# It's a file, delete it.
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
closedir(DIR);
|
||||
}
|
||||
|
||||
# This routine prepares a temporary directory, hopefully in a secure
|
||||
# fashion; it uses the process group to make secondary programs be able
|
||||
# to find it.
|
||||
sub tmpdir (;$) {
|
||||
my ($clear) = @_;
|
||||
my ($pgrp, $own, $mode, $tmpdir);
|
||||
|
||||
$pgrp = getpgrp();
|
||||
|
||||
die "Don't run $0 setuid!"
|
||||
unless ($< == $>);
|
||||
|
||||
# Decide on the directory name, using various environment variables
|
||||
$tmpdir = ($ENV{TMPDIR} || $ENV{TMP} || $ENV{TEMP} || "/tmp") .
|
||||
"/.#cvs.$pgrp";
|
||||
|
||||
# Doesn't exist, but we can't create it...
|
||||
die "Can't create temporary directory $tmpdir: $!"
|
||||
unless (-e $tmpdir || mkdir($tmpdir, 0700));
|
||||
|
||||
die "Temporary directory $tmpdir is not a directory"
|
||||
unless (-d $tmpdir);
|
||||
|
||||
# Check ownership and permissions
|
||||
(undef, undef, $mode, undef, $own, undef) = stat($tmpdir);
|
||||
|
||||
die "Temporary directory $tmpdir not owned by $< (owned by $own)"
|
||||
unless ($own == $<);
|
||||
|
||||
die "Temporary directory $tmpdir group-writable"
|
||||
if ($mode & 0020);
|
||||
die "Temporary directory $tmpdir other-writable"
|
||||
if ($mode & 0002);
|
||||
|
||||
# If we're supposed to clear the directory, do so...
|
||||
clear_dir($tmpdir)
|
||||
if ($clear);
|
||||
|
||||
return $tmpdir;
|
||||
}
|
||||
|
||||
# This routine writes a single line to a file
|
||||
sub write_line ($$) {
|
||||
my ($fname, $line) = @_;
|
||||
|
||||
open(FILE, ">$fname") || die "Cannot open file $fname for writing";
|
||||
print FILE "$line\n";
|
||||
close(FILE);
|
||||
}
|
||||
|
||||
# Create and empty the temporary directory
|
||||
my ($tmpdir) = (tmpdir(1));
|
||||
|
||||
# Store the directory name
|
||||
write_line("$tmpdir/lastdir", shift(@ARGV));
|
||||
@@ -1,757 +0,0 @@
|
||||
#!/usr/bin/perl -w
|
||||
#
|
||||
# Copyright (C) 2000 by Kevin L. Mitchell <[email protected]>
|
||||
#
|
||||
# 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, 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.
|
||||
#
|
||||
# Script to accumulate log messages for an entire tree and send them along
|
||||
# with the diffs; deals correctly with all manner of branching (I hope)
|
||||
#
|
||||
# $Id: new_log_accum,v 1.1 2002-08-11 23:05:15 drevil Exp $
|
||||
#
|
||||
|
||||
use strict;
|
||||
|
||||
use vars qw($MAILER $CVS $debug $boundary);
|
||||
use MD5;
|
||||
|
||||
# Set this to the full path of a mailer that takes a list
|
||||
# of email addresses as arguments...
|
||||
$MAILER = "/usr/sbin/sendmail -oi -oeq";
|
||||
|
||||
# Set this to the path of the CVS binary responsible for this tree...
|
||||
$CVS = "/usr/bin/cvs";
|
||||
|
||||
# Don't touch this; use the -d command line option
|
||||
$debug = 0;
|
||||
|
||||
# This is initialized by build_mailheader()
|
||||
$boundary = '';
|
||||
|
||||
use POSIX qw(setsid);
|
||||
|
||||
# We have to dissociate from our parent, so that the CVS commit can
|
||||
# complete, before we try to extract the diffs
|
||||
sub daemonize {
|
||||
defined(my $pid = fork()) || die "Can't fork: $!";
|
||||
exit(0)
|
||||
if $pid;
|
||||
setsid() || die "Can't start a new session: $!";
|
||||
}
|
||||
|
||||
# Debugging output
|
||||
sub debug (@) {
|
||||
print STDERR @_
|
||||
if ($debug);
|
||||
}
|
||||
|
||||
# Constants used in the FSM below for parsing the log message
|
||||
sub STATE_NONE { 0 }
|
||||
sub STATE_MODIFIED { 1 }
|
||||
sub STATE_ADDED { 2 }
|
||||
sub STATE_REMOVED { 3 }
|
||||
sub STATE_LOG1 { 4 }
|
||||
sub STATE_LOG2 { 5 }
|
||||
|
||||
# This routine removes everything in a directory
|
||||
sub clear_dir {
|
||||
my ($dir) = @_;
|
||||
my ($file);
|
||||
|
||||
opendir(DIR, $dir) || die "Cannot clear directory $dir: $!";
|
||||
while ($file = readdir(DIR)) {
|
||||
next
|
||||
if ($file eq "." || $file eq "..");
|
||||
|
||||
$file = "$dir/$file";
|
||||
|
||||
if (-d $file) {
|
||||
# It's a directory, recurse into it, then delete it.
|
||||
clear_dir($file);
|
||||
rmdir($file);
|
||||
} else {
|
||||
# It's a file, delete it.
|
||||
unlink($file);
|
||||
}
|
||||
}
|
||||
closedir(DIR);
|
||||
}
|
||||
|
||||
# This routine prepares a temporary directory, hopefully in a secure
|
||||
# fashion; it uses the process group to make secondary programs be able
|
||||
# to find it.
|
||||
sub tmpdir (;$) {
|
||||
my ($clear) = @_;
|
||||
my ($pgrp, $own, $mode, $tmpdir);
|
||||
|
||||
$pgrp = getpgrp();
|
||||
|
||||
die "Don't run $0 setuid!"
|
||||
unless ($< == $>);
|
||||
|
||||
# Decide on the directory name, using various environment variables
|
||||
$tmpdir = ($ENV{TMPDIR} || $ENV{TMP} || $ENV{TEMP} || "/tmp") .
|
||||
"/.#cvs.$pgrp";
|
||||
|
||||
# Doesn't exist, but we can't create it...
|
||||
die "Can't create temporary directory $tmpdir: $!"
|
||||
unless (-e $tmpdir || mkdir($tmpdir, 0700));
|
||||
|
||||
die "Temporary directory $tmpdir is not a directory"
|
||||
unless (-d $tmpdir);
|
||||
|
||||
# Check ownership and permissions
|
||||
(undef, undef, $mode, undef, $own, undef) = stat($tmpdir);
|
||||
|
||||
die "Temporary directory $tmpdir not owned by $< (owned by $own)"
|
||||
unless ($own == $<);
|
||||
|
||||
die "Temporary directory $tmpdir group-writable"
|
||||
if ($mode & 0020);
|
||||
die "Temporary directory $tmpdir other-writable"
|
||||
if ($mode & 0002);
|
||||
|
||||
# If we're supposed to clear the directory, do so...
|
||||
clear_dir($tmpdir)
|
||||
if ($clear);
|
||||
|
||||
return $tmpdir;
|
||||
}
|
||||
|
||||
# Routine to remove the temporary directory when done
|
||||
sub cleanup_dir ($) {
|
||||
# If we're debugging, we may want to look at the contents...
|
||||
return
|
||||
if ($debug);
|
||||
|
||||
clear_dir($_[0]);
|
||||
rmdir($_[0]);
|
||||
}
|
||||
|
||||
# Retrieve a single line from a specified file
|
||||
sub get_line ($) {
|
||||
my ($fname) = @_;
|
||||
|
||||
open(FILE, "<$fname") || die "Cannot open file $fname for reading";
|
||||
my $line = <FILE>;
|
||||
close(FILE);
|
||||
|
||||
# Chomp off the \n
|
||||
chomp $line;
|
||||
|
||||
return $line;
|
||||
}
|
||||
|
||||
# Routine that only allows one value to be pushed on the array;
|
||||
# implemented by making the first element of the array a hash-reference.
|
||||
# When we add a new value, we also increment the count of an element in
|
||||
# the hash with the key being the array value...
|
||||
sub push_once (\@@) {
|
||||
my ($array, @values) = @_;
|
||||
|
||||
# If the array is empty, create our hash ref
|
||||
push @{$array}, {}
|
||||
if (@{$array} == 0);
|
||||
|
||||
foreach my $value (@values) {
|
||||
push @{$array}, $value
|
||||
if (!exists($array->[0]{$value}));
|
||||
|
||||
$array->[0]{$value}++;
|
||||
}
|
||||
|
||||
return @{$array} - 1;
|
||||
}
|
||||
|
||||
# Filter //, /./, and remove leading ./ or / from filenames
|
||||
sub fname_filter ($) {
|
||||
my ($fname) = @_;
|
||||
|
||||
$fname =~ s,//,/,g;
|
||||
$fname =~ s,/\./,/,g;
|
||||
$fname =~ s,^\.?/,,g;
|
||||
|
||||
return $fname;
|
||||
}
|
||||
|
||||
# Store file data in a temporary file
|
||||
sub names_to_file ($$@) {
|
||||
my ($fname, $dir, @names) = @_;
|
||||
|
||||
if (@names > 0) {
|
||||
open(FILE, ">>$fname") || die "Cannot open file $fname for appending";
|
||||
|
||||
# Store the directory data
|
||||
print FILE "D $dir\n";
|
||||
|
||||
foreach my $name (@names) {
|
||||
# Mark record as a file...
|
||||
print FILE "F ";
|
||||
|
||||
# Store the tag, if there is one...
|
||||
print FILE "$name->{tag}"
|
||||
if (defined($name->{tag}));
|
||||
|
||||
# Then store old revision, new revision, and file name
|
||||
print FILE ":$name->{old}:$name->{new}:$name->{file}\n";
|
||||
}
|
||||
|
||||
close(FILE);
|
||||
}
|
||||
}
|
||||
|
||||
# Retrieve file data from temporary file; updates branch tags with what it
|
||||
# reads
|
||||
sub file_to_names (\@$) {
|
||||
my ($btags, $fname) = @_;
|
||||
my ($dir) = (undef);
|
||||
my (@names) = ();
|
||||
|
||||
debug "Reading file names from $fname...\n";
|
||||
|
||||
# We may not have, say, added a file in this subdirectory...
|
||||
return ()
|
||||
if (!-e $fname);
|
||||
|
||||
open(FILE, "<$fname");
|
||||
while(<FILE>) {
|
||||
chomp;
|
||||
|
||||
# Get record type...
|
||||
my ($type, $data) = split(' ', $_, 2);
|
||||
|
||||
# ok, it's a directory, remember that...
|
||||
if ($type eq "D") {
|
||||
$dir = $data;
|
||||
|
||||
debug "Read directory $dir\n";
|
||||
|
||||
next;
|
||||
}
|
||||
|
||||
debug "Read file $data\n";
|
||||
|
||||
# Get all the information about the file
|
||||
my ($tag, $old, $new, $file) = split(':', $data);
|
||||
|
||||
# and store it all
|
||||
push(@names, { tag => $tag, old => $old, new => $new, file => $file,
|
||||
dir => $dir, name => fname_filter("$dir/$file") });
|
||||
|
||||
# Remember the tags...
|
||||
push_once(@{$btags}, $tag)
|
||||
if (defined($tag) && $tag ne "");
|
||||
}
|
||||
close(FILE);
|
||||
|
||||
return @names;
|
||||
}
|
||||
|
||||
# Create a text-formatted list of names
|
||||
sub name_to_list (\@@) {
|
||||
my ($btags, @names) = @_;
|
||||
my (@nlist, @nline) = ();
|
||||
|
||||
debug "Tags:", join(':', @{$btags}), "\n";
|
||||
|
||||
# We group them by tag
|
||||
foreach my $tag ("", @{$btags}[1..$#{$btags}]) {
|
||||
debug "Processing tag $tag...\n";
|
||||
|
||||
@nlist = ();
|
||||
|
||||
# Get a list of files by the tag...
|
||||
foreach my $name (@names) {
|
||||
debug "Processing $name->{file}...\n";
|
||||
|
||||
next
|
||||
if ($name->{tag} ne $tag);
|
||||
|
||||
debug "Pushing $name->{name} on \@nlist...\n";
|
||||
push(@nlist, $name->{name});
|
||||
}
|
||||
|
||||
# If the tag is not the empty string, list the tag...
|
||||
push(@nline, " Tag: $tag", " ")
|
||||
if ($tag ne "");
|
||||
|
||||
# Now list each file name
|
||||
foreach my $name (@nlist) {
|
||||
# indent if we run past the end of line limit
|
||||
push(@nline, " ")
|
||||
if (@nline == 0 || ($nline[$#nline] ne " " &&
|
||||
length($nline[$#nline]) + length($name) + 1 > 70));
|
||||
|
||||
# add the file name to the list
|
||||
debug "Adding $name to \@nline...\n";
|
||||
$nline[$#nline] .= " $name";
|
||||
}
|
||||
}
|
||||
|
||||
return @nline;
|
||||
}
|
||||
|
||||
# write the log message to a temporary file
|
||||
sub write_log ($@) {
|
||||
my ($fname, @text) = @_;
|
||||
|
||||
open(FILE, ">$fname") || die "Cannot open file $fname for writing";
|
||||
print FILE join("\n", @text), "\n";
|
||||
close(FILE);
|
||||
}
|
||||
|
||||
# Build the header of the commit message: CVSROOT, module name, any
|
||||
# branch tags, and the commit time
|
||||
sub build_header ($@) {
|
||||
my ($module, $subject, $mailto, @branch_tags) = @_;
|
||||
my (@text, @mailto);
|
||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time());
|
||||
my ($user, $dummy);
|
||||
my ($digest);
|
||||
|
||||
($user, $dummy, $dummy, $dummy, $dummy, $dummy, $dummy) = getpwuid($<);
|
||||
|
||||
@mailto = @{$mailto};
|
||||
|
||||
# generate a unique boundary by calculating the md5sum of the
|
||||
# current time
|
||||
$digest = new MD5;
|
||||
$digest->reset();
|
||||
$digest->add(time() . rand());
|
||||
$boundary = "----=MIME." . unpack("H*", $digest->digest());
|
||||
|
||||
# Build the mail header
|
||||
push(@text, "From: $user");
|
||||
push(@text, "To: " . join(' ', @mailto));
|
||||
push(@text, "Subject: $subject");
|
||||
push(@text, "MIME-Version: 1.0");
|
||||
push(@text, "Content-Type: multipart/mixed; boundary=\"$boundary\"");
|
||||
push(@text, "");
|
||||
push(@text, "This is a multipart message as defined by RFC2049 (MIME)");
|
||||
push(@text, "");
|
||||
push(@text, "--$boundary");
|
||||
push(@text, "Content-Type: text/plain; charset=us-ascii");
|
||||
push(@text, "Content-Disposition: inline");
|
||||
push(@text, "");
|
||||
|
||||
# Build the commit message header
|
||||
push(@text, "Commiter : $user");
|
||||
push(@text, "CVSROOT : $ENV{CVSROOT}");
|
||||
push(@text, "Module : $module");
|
||||
push(@text, "Branch tags: " . join(' ', @branch_tags[1..$#branch_tags]))
|
||||
if (@branch_tags > 0);
|
||||
push(@text, sprintf("Commit time: %04d-%02d-%02d %02d:%02d:%02d UTC",
|
||||
$year + 1900, $mon + 1, $mday, $hour, $min, $sec));
|
||||
|
||||
return @text, "";
|
||||
}
|
||||
|
||||
# Send the mail message
|
||||
sub send_mail {
|
||||
my ($mailto, $text) = @_;
|
||||
my (@mailto, @text);
|
||||
# I <heart> perl
|
||||
@mailto = @{$mailto};
|
||||
@text = @{$text};
|
||||
|
||||
open(MAIL, "|$MAILER " . join(' ', @mailto));
|
||||
push(@text, "--$boundary--", "");
|
||||
print MAIL join("\n", @text), "\n";
|
||||
close(MAIL);
|
||||
}
|
||||
|
||||
# Find the tmp directory
|
||||
my ($tmpdir) = (tmpdir());
|
||||
|
||||
my (@mailto) = ();
|
||||
my (@files) = ();
|
||||
my (@path) = ();
|
||||
my ($modname, $repdir, $dir) = (undef, undef, undef);
|
||||
|
||||
# Process command line arguments
|
||||
while (@ARGV > 0) {
|
||||
my ($arg) = (shift(@ARGV));
|
||||
|
||||
if ($arg eq '-d') {
|
||||
# Turn on debugging
|
||||
$debug++;
|
||||
} elsif ($arg eq '-M') {
|
||||
# Module name explicitly set -- XXX Not tested, use at your own risk
|
||||
die "Argument for -M missing"
|
||||
unless (@ARGV > 0);
|
||||
|
||||
$modname = shift(@ARGV);
|
||||
} elsif ($arg eq '-m') {
|
||||
# An address to mail the notification to
|
||||
die "Argument for -m missing"
|
||||
unless (@ARGV > 0);
|
||||
|
||||
push(@mailto, shift(@ARGV));
|
||||
} else {
|
||||
# the list of filenames passed by CVS--you *must* use %{sVv}!
|
||||
die "Too many arguments!"
|
||||
unless (@files == 0);
|
||||
|
||||
@files = split(" ", $arg);
|
||||
}
|
||||
}
|
||||
|
||||
die "Nobody to mail to"
|
||||
unless (@mailto > 0);
|
||||
|
||||
die "No files to process"
|
||||
unless (@files > 1);
|
||||
|
||||
# The repository directory
|
||||
$repdir = shift(@files);
|
||||
|
||||
# break it appart...
|
||||
@path = split("/", $repdir);
|
||||
|
||||
# Now we know the module name, if it wasn't explicitly set
|
||||
$modname = $path[0]
|
||||
unless (defined($modname));
|
||||
|
||||
# Figure out what our directory is
|
||||
if (@path == 1) {
|
||||
$dir = ".";
|
||||
} else {
|
||||
$dir = join("/", @path[1..$#path]);
|
||||
}
|
||||
|
||||
# append a / to it...
|
||||
$dir .= "/";
|
||||
|
||||
debug "module = $modname\n";
|
||||
debug "dir = $dir\n";
|
||||
debug "path = ", join(":", @path), "\n";
|
||||
debug "files = ", join(":", @files), "\n";
|
||||
debug "tmpdir = $tmpdir\n";
|
||||
|
||||
my (%fversions);
|
||||
|
||||
# Unless its a new directory or imported sources, create file records
|
||||
unless (defined($files[1]) && defined($files[2]) &&
|
||||
(($files[1] eq "New" && $files[2] eq "directory") ||
|
||||
($files[1] eq "Imported" && $files[2] eq "sources"))) {
|
||||
|
||||
foreach my $fname (@files) {
|
||||
# You *must* use %{sVv} in the call in loginfo!
|
||||
die "Invalid filenames"
|
||||
unless ($fname =~ /^(.*),([0-9.]+|NONE),([0-9.]+|NONE)$/);
|
||||
|
||||
$fversions{$1} = {
|
||||
old => ($2 eq "NONE" ? "0" : $2),
|
||||
new => ($3 eq "NONE" ? "0" : $3),
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
# process log message
|
||||
my ($state, $tag) = (STATE_NONE, undef);
|
||||
|
||||
my (@modified, @added, @removed, @log, @branch_tags) = ();
|
||||
|
||||
while (<STDIN>) {
|
||||
chomp;
|
||||
|
||||
debug "State $state, line:$_\n";
|
||||
|
||||
# Ignore empty space at the beginning of the log message
|
||||
next
|
||||
if ($state == STATE_LOG1 && /^\s*$/);
|
||||
|
||||
# We're done ignoring empty space
|
||||
if ($state == STATE_LOG1) {
|
||||
$state = STATE_LOG2;
|
||||
}
|
||||
|
||||
if ($state == STATE_LOG2) {
|
||||
# Don't modify the lines at all if we're processing the log message
|
||||
push(@log, $_);
|
||||
next;
|
||||
} else {
|
||||
# Strip out leading and trailing space
|
||||
s/^\s*(.*?)\s*$/$1/;
|
||||
}
|
||||
|
||||
if (/^Modified Files/) {
|
||||
# Collect list of modified files
|
||||
debug "State switching to STATE_MODIFIED\n";
|
||||
|
||||
$state = STATE_MODIFIED;
|
||||
$tag = undef;
|
||||
|
||||
next;
|
||||
|
||||
} elsif (/^Added Files/) {
|
||||
# Collect list of added files
|
||||
debug "State switching to STATE_ADDED\n";
|
||||
|
||||
$state = STATE_ADDED;
|
||||
$tag = undef;
|
||||
|
||||
next;
|
||||
|
||||
} elsif (/^Removed Files/) {
|
||||
# Collect list of removed files
|
||||
debug "State switching to STATE_REMOVED\n";
|
||||
|
||||
$state = STATE_REMOVED;
|
||||
$tag = undef;
|
||||
|
||||
next;
|
||||
|
||||
} elsif (/^Log Message/) {
|
||||
# Collect log message
|
||||
debug "State switching to STATE_LOG1\n";
|
||||
|
||||
$state = STATE_LOG1;
|
||||
$tag = undef;
|
||||
|
||||
next;
|
||||
|
||||
} elsif (/^Revision\/Branch/) {
|
||||
# Parse old-style Revision/Branch field
|
||||
debug "Found a branch tag\n";
|
||||
|
||||
/^[^:]+:\s*(.*)/;
|
||||
|
||||
push_once(@branch_tags, $1);
|
||||
|
||||
warn "Tag == $tag"
|
||||
if (defined($tag));
|
||||
|
||||
next;
|
||||
}
|
||||
|
||||
# Ignore the stuff at the top of the commit report
|
||||
next
|
||||
if ($state == STATE_NONE);
|
||||
|
||||
if (/^Tag:\s*(.*)$/) {
|
||||
# Remember the tag
|
||||
debug "Setting tag to $1\n";
|
||||
$tag = $1;
|
||||
next;
|
||||
}
|
||||
|
||||
my (@tfiles) = ();
|
||||
|
||||
# Find the file in our command line list of files
|
||||
foreach my $file (split) {
|
||||
die "Nothing known about file $file!"
|
||||
unless (exists($fversions{$file}));
|
||||
|
||||
push @tfiles, {
|
||||
file => $file,
|
||||
tag => $tag,
|
||||
old => $fversions{$file}{old},
|
||||
new => $fversions{$file}{new},
|
||||
};
|
||||
}
|
||||
|
||||
# Store the file list in the correct array
|
||||
push(@modified, @tfiles)
|
||||
if ($state == STATE_MODIFIED);
|
||||
|
||||
push(@added, @tfiles)
|
||||
if ($state == STATE_ADDED);
|
||||
|
||||
push(@removed, @tfiles)
|
||||
if ($state == STATE_REMOVED);
|
||||
}
|
||||
|
||||
# Remove trailing blank lines from the log message
|
||||
while (@log > 0 && $log[$#log] =~ /^\s*$/) {
|
||||
pop(@log);
|
||||
}
|
||||
|
||||
# If a new directory was added, we're done...
|
||||
if (defined($files[1]) && defined($files[2]) &&
|
||||
$files[1] eq "New" && $files[2] eq "directory") {
|
||||
|
||||
my (@text) = ();
|
||||
|
||||
# If there was a sticky tag for the directory, make it a branch tag
|
||||
if ($log[$#log] =~ /^--> Using per-directory sticky tag \`(.*)\'$/) {
|
||||
push_once(@branch_tags, $1);
|
||||
pop(@log);
|
||||
}
|
||||
|
||||
# Build the message...
|
||||
push(@text, build_header($modname, "Module $modname: New directory $dir",
|
||||
\@mailto, @branch_tags));
|
||||
push(@text, "Log message:", "", @log);
|
||||
|
||||
# and send it (synchronously)
|
||||
send_mail(\@mailto, \@text);
|
||||
|
||||
# Clean up after ourselves and exit.
|
||||
cleanup_dir($tmpdir);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
# If an import was done, we're done...
|
||||
if (defined($files[1]) && defined($files[2]) &&
|
||||
$files[1] eq "Imported" && $files[2] eq "sources") {
|
||||
|
||||
my (@text) = ();
|
||||
|
||||
# Build the message...
|
||||
push(@text, build_header($modname, "Module $modname: Imported $dir",
|
||||
\@mailto, @branch_tags));
|
||||
push(@text, "Log message:", "", @log);
|
||||
|
||||
# and send it (synchronously)
|
||||
send_mail(\@mailto, \@text);
|
||||
|
||||
# Clean up after ourselves and exit.
|
||||
cleanup_dir($tmpdir);
|
||||
exit(0);
|
||||
}
|
||||
|
||||
debug "Searching for log file index...";
|
||||
|
||||
my ($i);
|
||||
|
||||
# Look for an empty log file or one that matches our current log message
|
||||
for ($i = 0; ; $i++) {
|
||||
my (@text);
|
||||
|
||||
# found one that doesn't exist...
|
||||
last
|
||||
if (!-e "$tmpdir/logfile.$i");
|
||||
|
||||
# read in the log file
|
||||
open(FILE, "<$tmpdir/logfile.$i");
|
||||
while (<FILE>) {
|
||||
chomp;
|
||||
push(@text, $_);
|
||||
}
|
||||
close(FILE);
|
||||
|
||||
# If the log file was empty, use it
|
||||
last
|
||||
if (@text == 0);
|
||||
|
||||
# If the log messages are identical, use that
|
||||
last
|
||||
if (join(' ', @log) eq join(' ', @text));
|
||||
}
|
||||
|
||||
debug "$tmpdir/logfile.$i\n";
|
||||
|
||||
# Store modified, added, and removed file lists, along with the log message
|
||||
names_to_file("$tmpdir/modified.$i", $dir, @modified);
|
||||
names_to_file("$tmpdir/added.$i", $dir, @added);
|
||||
names_to_file("$tmpdir/removed.$i", $dir, @removed);
|
||||
write_log("$tmpdir/logfile.$i", @log);
|
||||
|
||||
# Now check to see if we're at the end of our rope
|
||||
my ($lastdir) = (get_line("$tmpdir/lastdir"));
|
||||
|
||||
debug "Checking $ENV{CVSROOT}/$repdir against lastdir $lastdir\n";
|
||||
|
||||
# Nope, exit instead of sending a message
|
||||
exit(0)
|
||||
if ($lastdir ne "$ENV{CVSROOT}/$repdir");
|
||||
|
||||
debug "At last, we've reached the end\n";
|
||||
|
||||
# We have to daemonize and sleep so that there isn't any lock hanging
|
||||
# around when we get to the cvs rdiff below...
|
||||
daemonize();
|
||||
sleep(10);
|
||||
|
||||
# Build the mail message...
|
||||
my (@text) = ();
|
||||
@files = ();
|
||||
@branch_tags = ();
|
||||
|
||||
for ($i = 0; ; $i++) {
|
||||
# No more log files
|
||||
last
|
||||
if (!-e "$tmpdir/logfile.$i");
|
||||
|
||||
# read and insert the log message
|
||||
open(FILE, "<$tmpdir/logfile.$i");
|
||||
push(@text, "Log message:", "");
|
||||
while (<FILE>) {
|
||||
chomp;
|
||||
push(@text, $_);
|
||||
}
|
||||
push(@text, "");
|
||||
close(FILE);
|
||||
|
||||
# read modified list and list all modified files if non-empty
|
||||
@modified = file_to_names(@branch_tags, "$tmpdir/modified.$i");
|
||||
push(@text, "Modified files:", name_to_list(@branch_tags, @modified), "")
|
||||
if (@modified > 0);
|
||||
|
||||
# read added list and list all added files if non-empty
|
||||
@added = file_to_names(@branch_tags, "$tmpdir/added.$i");
|
||||
push(@text, "Added files:", name_to_list(@branch_tags, @added), "")
|
||||
if (@added > 0);
|
||||
|
||||
# read removed list and list all removed files if non-empty
|
||||
@removed = file_to_names(@branch_tags, "$tmpdir/removed.$i");
|
||||
push(@text, "Removed files:", name_to_list(@branch_tags, @removed), "")
|
||||
if (@removed > 0);
|
||||
|
||||
# remember all the files we looked at
|
||||
push(@files, @modified, @added, @removed);
|
||||
}
|
||||
|
||||
# Now that name_to_list has rebuilt our list of branch tags, we can build the
|
||||
# header and prepend it to the message
|
||||
unshift(@text, build_header($modname, "Module $modname: Change committed",
|
||||
\@mailto, @branch_tags));
|
||||
|
||||
# sort the files out for our diff
|
||||
@files = sort { $a->{name} cmp $b->{name} } @files;
|
||||
|
||||
my ($user, $filename);
|
||||
my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = gmtime(time());
|
||||
$user = getpwuid($<);
|
||||
|
||||
$filename = sprintf("%s.%04d%02d%02d.%02d%02d%02d.%s.diff", $modname,
|
||||
$year + 1900, $mon + 1, $mday, $hour, $min, $sec, $user);
|
||||
|
||||
push(@text, "--$boundary");
|
||||
push(@text, "Content-Type: text/plain; name=\"$filename\"");
|
||||
push(@text, "Content-Disposition: attachment; filename=\"$filename\"");
|
||||
push(@text, "Content-Transfer-Encoding: 8bit");
|
||||
push(@text, "");
|
||||
|
||||
foreach my $file (@files) {
|
||||
debug "Diffing file $file->{name}...\n";
|
||||
|
||||
# Run cvs rdiff, extracting a diff between the old version and the new
|
||||
open(DIFF, "$CVS -Q rdiff -u -r $file->{old} -r $file->{new} " .
|
||||
"$modname/$file->{name}|");
|
||||
while (<DIFF>) {
|
||||
chomp;
|
||||
push(@text, $_);
|
||||
}
|
||||
close(DIFF);
|
||||
}
|
||||
|
||||
# send the mail...
|
||||
send_mail(\@mailto, \@text);
|
||||
|
||||
# and clean up after ourselves
|
||||
cleanup_dir($tmpdir);
|
||||
@@ -1,12 +0,0 @@
|
||||
# The "notify" file controls where notifications from watches set by
|
||||
# "cvs watch add" or "cvs edit" are sent. The first entry on a line is
|
||||
# a regular expression which is tested against the directory that the
|
||||
# change is being made to, relative to the $CVSROOT. If it matches,
|
||||
# then the remainder of the line is a filter program that should contain
|
||||
# one occurrence of %s for the user to notify, and information on its
|
||||
# standard input.
|
||||
#
|
||||
# "ALL" or "DEFAULT" can be used in place of the regular expression.
|
||||
#
|
||||
# For example:
|
||||
#ALL mail %s -s "CVS notification"
|
||||
@@ -1,9 +0,0 @@
|
||||
drevil:f76FWdDTUBG5c:fs2source
|
||||
mysterial:f7nJUwoIhmSrg:fs2source
|
||||
wmcoolmon:f7JRB.js9Q1sE:fs2source
|
||||
inquisitor:f7BVkOvwjDlWk:fs2source
|
||||
penguin:Jh.dOjaiO2jHk:fs2source
|
||||
DTP:f7M92Z/6/uep.:fs2source
|
||||
unknownplayer:f79BgAn.IzJs6:fs2source
|
||||
phreak:f7WQyGiT/jzlM:fs2source
|
||||
anonymous:oIKtWP1q6GDt6:fs2source
|
||||
@@ -1,13 +0,0 @@
|
||||
# The "rcsinfo" file is used to control templates with which the editor
|
||||
# is invoked on commit and import.
|
||||
#
|
||||
# The first entry on a line is a regular expression which is tested
|
||||
# against the directory that the change is being made to, relative to the
|
||||
# $CVSROOT. For the first match that is found, then the remainder of the
|
||||
# line is the name of the file that contains the template.
|
||||
#
|
||||
# If the repository name does not match any of the regular expressions in this
|
||||
# file, the "DEFAULT" line is used, if it is specified.
|
||||
#
|
||||
# If the name "ALL" appears as a regular expression it is always used
|
||||
# in addition to the first matching regex or "DEFAULT".
|
||||
@@ -1,20 +0,0 @@
|
||||
# The "taginfo" file is used to control pre-tag checks.
|
||||
# The filter on the right is invoked with the following arguments:
|
||||
#
|
||||
# $1 -- tagname
|
||||
# $2 -- operation "add" for tag, "mov" for tag -F, and "del" for tag -d
|
||||
# $3 -- repository
|
||||
# $4-> file revision [file revision ...]
|
||||
#
|
||||
# A non-zero exit of the filter program will cause the tag to be aborted.
|
||||
#
|
||||
# The first entry on a line is a regular expression which is tested
|
||||
# against the directory that the change is being committed to, relative
|
||||
# to the $CVSROOT. For the first match that is found, then the remainder
|
||||
# of the line is the name of the filter to run.
|
||||
#
|
||||
# If the repository name does not match any of the regular expressions in this
|
||||
# file, the "DEFAULT" line is used, if it is specified.
|
||||
#
|
||||
# If the name "ALL" appears as a regular expression it is always used
|
||||
# in addition to the first matching regex or "DEFAULT".
|
||||
@@ -1,21 +0,0 @@
|
||||
# The "verifymsg" file is used to allow verification of logging
|
||||
# information. It works best when a template (as specified in the
|
||||
# rcsinfo file) is provided for the logging procedure. Given a
|
||||
# template with locations for, a bug-id number, a list of people who
|
||||
# reviewed the code before it can be checked in, and an external
|
||||
# process to catalog the differences that were code reviewed, the
|
||||
# following test can be applied to the code:
|
||||
#
|
||||
# Making sure that the entered bug-id number is correct.
|
||||
# Validating that the code that was reviewed is indeed the code being
|
||||
# checked in (using the bug-id number or a seperate review
|
||||
# number to identify this particular code set.).
|
||||
#
|
||||
# If any of the above test failed, then the commit would be aborted.
|
||||
#
|
||||
# Actions such as mailing a copy of the report to each reviewer are
|
||||
# better handled by an entry in the loginfo file.
|
||||
#
|
||||
# One thing that should be noted is the the ALL keyword is not
|
||||
# supported. There can be only one entry that matches a given
|
||||
# repository.
|
||||
@@ -1,4 +0,0 @@
|
||||
drevil
|
||||
inquisitor
|
||||
mysterial
|
||||
penguin
|
||||
@@ -0,0 +1,29 @@
|
||||
Original source (Freespace 2) by Volition, Inc.; see "credits.tbl"
|
||||
|
||||
Modifications by the FreeSpace Source Code Project (FSSCP)
|
||||
http://fs2source.warpcore.org
|
||||
|
||||
FS2_OPEN STAFF:
|
||||
|
||||
Project leader:
|
||||
Edward "Inquisitor" Gardner
|
||||
|
||||
Programmers:
|
||||
"Bobboau"
|
||||
Dennis "DTP" Pedersen
|
||||
Ian "Goober5000" Warfield
|
||||
Joe "Righteous1" Dowd
|
||||
Mike "penguin" Harris
|
||||
"Mysterial"
|
||||
"PhReAk"
|
||||
Thomas "Random Tiger" Whittaker
|
||||
Will "Unknown PLayer" Rousnel
|
||||
"WMCoolmon"
|
||||
|
||||
Web support:
|
||||
Icefire and the staff at Volitionwatch.com
|
||||
Alex "Thunder" Avery and the staff at Hard Light Productions
|
||||
|
||||
Special thanks to:
|
||||
Volition for making FS2 such a great game
|
||||
Dave Baranec for giving us the code and keeping us sanity checked
|
||||
@@ -0,0 +1,14 @@
|
||||
Volition Copyright (applies to original FreeSpace2 source code
|
||||
developed and released by Volition):
|
||||
|
||||
"Copyright (C) Volition, Inc. 1999. All rights reserved.
|
||||
|
||||
All source code herein is the property of Volition, Inc. You may not
|
||||
sell or otherwise commercially exploit the source or things you
|
||||
created based on the source."
|
||||
|
||||
|
||||
Modifications by members of the FreeSpace Source Code Project are
|
||||
released under whatever terms the individual authors choose, but the
|
||||
above notice continues to apply to all fs2_open code.
|
||||
|
||||
Binary file not shown.
+15
-6
@@ -43,7 +43,7 @@ RSC=rc.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /c
|
||||
# ADD CPP /nologo /G5 /MT /W4 /GX /Zi /Ot /Ow /Og /Oi /Oy /I "code" /D "_MBCS" /D "NDEBUG" /D "_WINDOWS" /D "WIN32" /D "USE_OPENGL" /U "_DEBUG" /YX /FD /c
|
||||
# ADD CPP /nologo /G5 /MT /W4 /GX /Zi /Ot /Ow /Og /Oi /Oy /I "code" /D "NDEBUG" /D "_WINDOWS" /D "_MBCS" /D "WIN32" /D "USE_OPENGL" /U "_DEBUG" /FR /YX /FD /c
|
||||
# ADD BASE MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "NDEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "NDEBUG"
|
||||
@@ -53,7 +53,16 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /machine:I386
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib code.lib /nologo /subsystem:windows /map /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /out:"c:\games\freespace2\fs2_open.exe" /libpath:"release"
|
||||
# ADD LINK32 Dxerr8.lib d3d8.lib d3dx8.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib code.lib /nologo /subsystem:windows /map /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /out:"c:\games\Freespace2\fs2_open_r.exe" /libpath:"release"
|
||||
# SUBTRACT LINK32 /debug
|
||||
# Begin Custom Build
|
||||
InputPath=c:\games\Freespace2\fs2_open_r.exe
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"c:\games\freespace2\fs2_open_r.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
copy $(InputPath) c:\games\freespace2
|
||||
|
||||
# End Custom Build
|
||||
|
||||
!ELSEIF "$(CFG)" == "Freespace2 - Win32 Debug"
|
||||
|
||||
@@ -69,7 +78,7 @@ LINK32=link.exe
|
||||
# PROP Ignore_Export_Lib 0
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_WINDOWS" /D "_MBCS" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /G5 /MTd /W4 /Gm /Gi /GX /ZI /Od /I "code" /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "NO_CD_CHECK" /D "USE_DX81" /D "USE_OPENGL" /U "NDEBUG" /Fr /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /G5 /MTd /W4 /Gm /Gi /GX /ZI /Od /I "code" /D "WIN32" /D "_WINDOWS" /D "_DEBUG" /D "NO_CD_CHECK" /D "DBUGFILE_ACTIVE" /D "USE_OPENGL" /U "NDEBUG" /Fr /YX /FD /GZ /c
|
||||
# ADD BASE MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD MTL /nologo /D "_DEBUG" /mktyplib203 /win32
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
@@ -79,13 +88,13 @@ BSC32=bscmake.exe
|
||||
# ADD BSC32 /nologo /o"debug/profile/Freespace2.bsc" "./debug/profile/*.sbr"
|
||||
LINK32=link.exe
|
||||
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:windows /debug /machine:I386 /pdbtype:sept
|
||||
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib code.lib /nologo /subsystem:windows /debug /debugtype:both /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /out:"debug\fs2_open_debug.exe" /libpath:"debug"
|
||||
# ADD LINK32 Dxerr8.lib d3d8.lib d3dx8.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib wsock32.lib winmm.lib vfw32.lib msacm32.lib comctl32.lib code.lib /nologo /subsystem:windows /debug /debugtype:both /machine:I386 /nodefaultlib:"libc.lib" /nodefaultlib:"libcd.lib" /out:"C:\games\Freespace2/fs2_open_d.exe" /libpath:"debug"
|
||||
# SUBTRACT LINK32 /pdb:none /incremental:no /map
|
||||
# Begin Custom Build - Copying $(InputPath) to c:\games\freespace2
|
||||
InputPath=.\debug\fs2_open_debug.exe
|
||||
InputPath=C:\games\Freespace2\fs2_open_d.exe
|
||||
SOURCE="$(InputPath)"
|
||||
|
||||
"c:\games\freespace2\fs2_open.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
"c:\games\freespace2\fs2_open_d.exe" : $(SOURCE) "$(INTDIR)" "$(OUTDIR)"
|
||||
copy $(InputPath) c:\games\freespace2
|
||||
|
||||
# End Custom Build
|
||||
|
||||
@@ -0,0 +1,27 @@
|
||||
This is still in pretty rough form.
|
||||
|
||||
|
||||
=== for people building fs2_open:
|
||||
|
||||
Win32-MSVC:
|
||||
Use the Freespace2.dsw workspace and build within the IDE.
|
||||
|
||||
|
||||
Win32-MinGW:
|
||||
make
|
||||
|
||||
|
||||
Linux and other unix variants (NOT YET COMPLETE)
|
||||
./configure [options] (options tbd)
|
||||
make -f makefile.linux
|
||||
|
||||
|
||||
|
||||
=== for the project maintainers (people who need to
|
||||
=== keep the makefiles up to date):
|
||||
|
||||
aclocal
|
||||
autoconf
|
||||
automake
|
||||
./configure
|
||||
make
|
||||
@@ -0,0 +1,5 @@
|
||||
# Makefile.am for fs2_open (top level)
|
||||
#
|
||||
# This file uses GNU Automake to generate makefiles
|
||||
|
||||
SUBDIRS = code
|
||||
@@ -0,0 +1,506 @@
|
||||
# Makefile.in generated by automake 1.7.2 from Makefile.am.
|
||||
# @configure_input@
|
||||
|
||||
# Copyright 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002
|
||||
# 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.
|
||||
|
||||
# This program is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
|
||||
# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
||||
# PARTICULAR PURPOSE.
|
||||
|
||||
@SET_MAKE@
|
||||
|
||||
# Makefile.am for fs2_open (top level)
|
||||
#
|
||||
# This file uses GNU Automake to generate makefiles
|
||||
|
||||
srcdir = @srcdir@
|
||||
top_srcdir = @top_srcdir@
|
||||
VPATH = @srcdir@
|
||||
pkgdatadir = $(datadir)/@PACKAGE@
|
||||
pkglibdir = $(libdir)/@PACKAGE@
|
||||
pkgincludedir = $(includedir)/@PACKAGE@
|
||||
top_builddir = .
|
||||
|
||||
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
|
||||
INSTALL = @INSTALL@
|
||||
install_sh_DATA = $(install_sh) -c -m 644
|
||||
install_sh_PROGRAM = $(install_sh) -c
|
||||
install_sh_SCRIPT = $(install_sh) -c
|
||||
INSTALL_HEADER = $(INSTALL_DATA)
|
||||
transform = $(program_transform_name)
|
||||
NORMAL_INSTALL = :
|
||||
PRE_INSTALL = :
|
||||
POST_INSTALL = :
|
||||
NORMAL_UNINSTALL = :
|
||||
PRE_UNINSTALL = :
|
||||
POST_UNINSTALL = :
|
||||
host_triplet = @host@
|
||||
ACLOCAL = @ACLOCAL@
|
||||
AMDEP_FALSE = @AMDEP_FALSE@
|
||||
AMDEP_TRUE = @AMDEP_TRUE@
|
||||
AMTAR = @AMTAR@
|
||||
AUTOCONF = @AUTOCONF@
|
||||
AUTOHEADER = @AUTOHEADER@
|
||||
AUTOMAKE = @AUTOMAKE@
|
||||
AWK = @AWK@
|
||||
CPPFLAGS = @CPPFLAGS@
|
||||
CXX = @CXX@
|
||||
CXXDEPMODE = @CXXDEPMODE@
|
||||
CXXFLAGS = @CXXFLAGS@
|
||||
CYGPATH_W = @CYGPATH_W@
|
||||
DEFS = @DEFS@
|
||||
DEPDIR = @DEPDIR@
|
||||
DX8_INCLUDE = @DX8_INCLUDE@
|
||||
DX8_LIB = @DX8_LIB@
|
||||
ECHO_C = @ECHO_C@
|
||||
ECHO_N = @ECHO_N@
|
||||
ECHO_T = @ECHO_T@
|
||||
EXEEXT = @EXEEXT@
|
||||
FS2_GRSOFT_FALSE = @FS2_GRSOFT_FALSE@
|
||||
FS2_GRSOFT_TRUE = @FS2_GRSOFT_TRUE@
|
||||
FS2_JOYSTICK_FALSE = @FS2_JOYSTICK_FALSE@
|
||||
FS2_JOYSTICK_TRUE = @FS2_JOYSTICK_TRUE@
|
||||
FS2_NETWORKING_FALSE = @FS2_NETWORKING_FALSE@
|
||||
FS2_NETWORKING_TRUE = @FS2_NETWORKING_TRUE@
|
||||
FS2_OS_UNIX_FALSE = @FS2_OS_UNIX_FALSE@
|
||||
FS2_OS_UNIX_TRUE = @FS2_OS_UNIX_TRUE@
|
||||
FS2_OS_WIN32_FALSE = @FS2_OS_WIN32_FALSE@
|
||||
FS2_OS_WIN32_TRUE = @FS2_OS_WIN32_TRUE@
|
||||
FS2_SOUND_FALSE = @FS2_SOUND_FALSE@
|
||||
FS2_SOUND_TRUE = @FS2_SOUND_TRUE@
|
||||
INSTALL_DATA = @INSTALL_DATA@
|
||||
INSTALL_PROGRAM = @INSTALL_PROGRAM@
|
||||
INSTALL_SCRIPT = @INSTALL_SCRIPT@
|
||||
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
LIBS = @LIBS@
|
||||
LTLIBOBJS = @LTLIBOBJS@
|
||||
MAKEINFO = @MAKEINFO@
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE = @PACKAGE@
|
||||
PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_STRING = @PACKAGE_STRING@
|
||||
PACKAGE_TARNAME = @PACKAGE_TARNAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
PATH_SEPARATOR = @PATH_SEPARATOR@
|
||||
SET_MAKE = @SET_MAKE@
|
||||
SHELL = @SHELL@
|
||||
STRIP = @STRIP@
|
||||
VERSION = @VERSION@
|
||||
ac_ct_CXX = @ac_ct_CXX@
|
||||
ac_ct_STRIP = @ac_ct_STRIP@
|
||||
am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
|
||||
am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
|
||||
am__include = @am__include@
|
||||
am__quote = @am__quote@
|
||||
bindir = @bindir@
|
||||
build = @build@
|
||||
build_alias = @build_alias@
|
||||
build_cpu = @build_cpu@
|
||||
build_os = @build_os@
|
||||
build_vendor = @build_vendor@
|
||||
datadir = @datadir@
|
||||
exec_prefix = @exec_prefix@
|
||||
host = @host@
|
||||
host_alias = @host_alias@
|
||||
host_cpu = @host_cpu@
|
||||
host_os = @host_os@
|
||||
host_vendor = @host_vendor@
|
||||
includedir = @includedir@
|
||||
infodir = @infodir@
|
||||
install_sh = @install_sh@
|
||||
libdir = @libdir@
|
||||
libexecdir = @libexecdir@
|
||||
localstatedir = @localstatedir@
|
||||
mandir = @mandir@
|
||||
oldincludedir = @oldincludedir@
|
||||
prefix = @prefix@
|
||||
program_transform_name = @program_transform_name@
|
||||
sbindir = @sbindir@
|
||||
sharedstatedir = @sharedstatedir@
|
||||
sysconfdir = @sysconfdir@
|
||||
target_alias = @target_alias@
|
||||
|
||||
SUBDIRS = code
|
||||
subdir = .
|
||||
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
|
||||
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
|
||||
CONFIG_CLEAN_FILES =
|
||||
DIST_SOURCES =
|
||||
|
||||
RECURSIVE_TARGETS = info-recursive dvi-recursive pdf-recursive \
|
||||
ps-recursive install-info-recursive uninstall-info-recursive \
|
||||
all-recursive install-data-recursive install-exec-recursive \
|
||||
installdirs-recursive install-recursive uninstall-recursive \
|
||||
check-recursive installcheck-recursive
|
||||
DIST_COMMON = README AUTHORS COPYING ChangeLog INSTALL Makefile.am \
|
||||
Makefile.in NEWS aclocal.m4 config.guess config.sub configure \
|
||||
configure.in depcomp install-sh missing mkinstalldirs
|
||||
DIST_SUBDIRS = $(SUBDIRS)
|
||||
all: all-recursive
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
|
||||
configure.lineno
|
||||
$(srcdir)/Makefile.in: Makefile.am $(top_srcdir)/configure.in $(ACLOCAL_M4)
|
||||
cd $(top_srcdir) && \
|
||||
$(AUTOMAKE) --gnu Makefile
|
||||
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
|
||||
cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)
|
||||
|
||||
$(top_builddir)/config.status: $(srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
|
||||
$(SHELL) ./config.status --recheck
|
||||
$(srcdir)/configure: $(srcdir)/configure.in $(ACLOCAL_M4) $(CONFIGURE_DEPENDENCIES)
|
||||
cd $(srcdir) && $(AUTOCONF)
|
||||
|
||||
$(ACLOCAL_M4): configure.in
|
||||
cd $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS)
|
||||
uninstall-info-am:
|
||||
|
||||
# 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):
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
dot_seen=no; \
|
||||
target=`echo $@ | sed s/-recursive//`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
echo "Making $$target in $$subdir"; \
|
||||
if test "$$subdir" = "."; then \
|
||||
dot_seen=yes; \
|
||||
local_target="$$target-am"; \
|
||||
else \
|
||||
local_target="$$target"; \
|
||||
fi; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done; \
|
||||
if test "$$dot_seen" = "no"; then \
|
||||
$(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
|
||||
fi; test -z "$$fail"
|
||||
|
||||
mostlyclean-recursive clean-recursive distclean-recursive \
|
||||
maintainer-clean-recursive:
|
||||
@set fnord $$MAKEFLAGS; amf=$$2; \
|
||||
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; \
|
||||
(cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
|
||||
|| case "$$amf" in *=*) exit 1;; *k*) fail=yes;; *) exit 1;; esac; \
|
||||
done && test -z "$$fail"
|
||||
tags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
|
||||
done
|
||||
ctags-recursive:
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
test "$$subdir" = . || (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
|
||||
done
|
||||
|
||||
ETAGS = etags
|
||||
ETAGSFLAGS =
|
||||
|
||||
CTAGS = ctags
|
||||
CTAGSFLAGS =
|
||||
|
||||
tags: TAGS
|
||||
|
||||
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; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
mkid -fID $$unique
|
||||
|
||||
TAGS: tags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
here=`pwd`; \
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -f $$subdir/TAGS && tags="$$tags -i $$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; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(ETAGS_ARGS)$$tags$$unique" \
|
||||
|| $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
ctags: CTAGS
|
||||
CTAGS: ctags-recursive $(HEADERS) $(SOURCES) $(TAGS_DEPENDENCIES) \
|
||||
$(TAGS_FILES) $(LISP)
|
||||
tags=; \
|
||||
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; } \
|
||||
END { for (i in files) print i; }'`; \
|
||||
test -z "$(CTAGS_ARGS)$$tags$$unique" \
|
||||
|| $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
|
||||
$$tags $$unique
|
||||
|
||||
GTAGS:
|
||||
here=`$(am__cd) $(top_builddir) && pwd` \
|
||||
&& cd $(top_srcdir) \
|
||||
&& gtags -i $(GTAGS_ARGS) $$here
|
||||
|
||||
distclean-tags:
|
||||
-rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
|
||||
DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
|
||||
|
||||
top_distdir = .
|
||||
distdir = $(PACKAGE)-$(VERSION)
|
||||
|
||||
am__remove_distdir = \
|
||||
{ test ! -d $(distdir) \
|
||||
|| { find $(distdir) -type d ! -perm -200 -exec chmod u+w {} ';' \
|
||||
&& rm -fr $(distdir); }; }
|
||||
|
||||
GZIP_ENV = --best
|
||||
distuninstallcheck_listfiles = find . -type f -print
|
||||
distcleancheck_listfiles = find . -type f -print
|
||||
|
||||
distdir: $(DISTFILES)
|
||||
$(am__remove_distdir)
|
||||
mkdir $(distdir)
|
||||
@srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
|
||||
topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
|
||||
list='$(DISTFILES)'; for file in $$list; do \
|
||||
case $$file in \
|
||||
$(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
|
||||
$(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
|
||||
esac; \
|
||||
if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
|
||||
dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
|
||||
if test "$$dir" != "$$file" && test "$$dir" != "."; then \
|
||||
dir="/$$dir"; \
|
||||
$(mkinstalldirs) "$(distdir)$$dir"; \
|
||||
else \
|
||||
dir=''; \
|
||||
fi; \
|
||||
if test -d $$d/$$file; then \
|
||||
if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
|
||||
cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
|
||||
fi; \
|
||||
cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
|
||||
else \
|
||||
test -f $(distdir)/$$file \
|
||||
|| cp -p $$d/$$file $(distdir)/$$file \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
list='$(SUBDIRS)'; for subdir in $$list; do \
|
||||
if test "$$subdir" = .; then :; else \
|
||||
test -d $(distdir)/$$subdir \
|
||||
|| mkdir $(distdir)/$$subdir \
|
||||
|| exit 1; \
|
||||
(cd $$subdir && \
|
||||
$(MAKE) $(AM_MAKEFLAGS) \
|
||||
top_distdir="$(top_distdir)" \
|
||||
distdir=../$(distdir)/$$subdir \
|
||||
distdir) \
|
||||
|| exit 1; \
|
||||
fi; \
|
||||
done
|
||||
-find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
|
||||
! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -400 -exec chmod a+r {} \; -o \
|
||||
! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
|
||||
|| chmod -R a+r $(distdir)
|
||||
dist-gzip: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__remove_distdir)
|
||||
|
||||
dist dist-all: distdir
|
||||
$(AMTAR) chof - $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
|
||||
$(am__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
|
||||
# tarfile.
|
||||
distcheck: dist
|
||||
$(am__remove_distdir)
|
||||
GZIP=$(GZIP_ENV) gunzip -c $(distdir).tar.gz | $(AMTAR) xf -
|
||||
chmod -R a-w $(distdir); chmod a+w $(distdir)
|
||||
mkdir $(distdir)/=build
|
||||
mkdir $(distdir)/=inst
|
||||
chmod a-w $(distdir)
|
||||
dc_install_base=`$(am__cd) $(distdir)/=inst && pwd` \
|
||||
&& dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
|
||||
&& cd $(distdir)/=build \
|
||||
&& ../configure --srcdir=.. --prefix="$$dc_install_base" \
|
||||
$(DISTCHECK_CONFIGURE_FLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dvi \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) check \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) installcheck \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \
|
||||
distuninstallcheck \
|
||||
&& chmod -R a-w "$$dc_install_base" \
|
||||
&& ({ \
|
||||
(cd ../.. && $(mkinstalldirs) "$$dc_destdir") \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \
|
||||
distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \
|
||||
} || { rm -rf "$$dc_destdir"; exit 1; }) \
|
||||
&& rm -rf "$$dc_destdir" \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) dist-gzip \
|
||||
&& rm -f $(distdir).tar.gz \
|
||||
&& $(MAKE) $(AM_MAKEFLAGS) distcleancheck
|
||||
$(am__remove_distdir)
|
||||
@echo "$(distdir).tar.gz is ready for distribution" | \
|
||||
sed 'h;s/./=/g;p;x;p;x'
|
||||
distuninstallcheck:
|
||||
cd $(distuninstallcheck_dir) \
|
||||
&& test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
|
||||
|| { echo "ERROR: files left after uninstall:" ; \
|
||||
if test -n "$(DESTDIR)"; then \
|
||||
echo " (check DESTDIR support)"; \
|
||||
fi ; \
|
||||
$(distuninstallcheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
distcleancheck: distclean
|
||||
if test '$(srcdir)' = . ; then \
|
||||
echo "ERROR: distcleancheck can only run from a VPATH build" ; \
|
||||
exit 1 ; \
|
||||
fi
|
||||
test `$(distcleancheck_listfiles) | wc -l` -eq 0 \
|
||||
|| { echo "ERROR: files left in build directory after distclean:" ; \
|
||||
$(distcleancheck_listfiles) ; \
|
||||
exit 1; } >&2
|
||||
check-am: all-am
|
||||
check: check-recursive
|
||||
all-am: Makefile
|
||||
installdirs: installdirs-recursive
|
||||
installdirs-am:
|
||||
|
||||
install: install-recursive
|
||||
install-exec: install-exec-recursive
|
||||
install-data: install-data-recursive
|
||||
uninstall: uninstall-recursive
|
||||
|
||||
install-am: all-am
|
||||
@$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
|
||||
|
||||
installcheck: installcheck-recursive
|
||||
install-strip:
|
||||
$(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
|
||||
INSTALL_STRIP_FLAG=-s \
|
||||
`test -z '$(STRIP)' || \
|
||||
echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
|
||||
mostlyclean-generic:
|
||||
|
||||
clean-generic:
|
||||
|
||||
distclean-generic:
|
||||
-rm -f Makefile $(CONFIG_CLEAN_FILES)
|
||||
|
||||
maintainer-clean-generic:
|
||||
@echo "This command is intended for maintainers to use"
|
||||
@echo "it deletes files that may require special tools to rebuild."
|
||||
clean: clean-recursive
|
||||
|
||||
clean-am: clean-generic mostlyclean-am
|
||||
|
||||
distclean: distclean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
distclean-am: clean-am distclean-generic distclean-tags
|
||||
|
||||
dvi: dvi-recursive
|
||||
|
||||
dvi-am:
|
||||
|
||||
info: info-recursive
|
||||
|
||||
info-am:
|
||||
|
||||
install-data-am:
|
||||
|
||||
install-exec-am:
|
||||
|
||||
install-info: install-info-recursive
|
||||
|
||||
install-man:
|
||||
|
||||
installcheck-am:
|
||||
|
||||
maintainer-clean: maintainer-clean-recursive
|
||||
-rm -f $(am__CONFIG_DISTCLEAN_FILES)
|
||||
-rm -rf autom4te.cache
|
||||
maintainer-clean-am: distclean-am maintainer-clean-generic
|
||||
|
||||
mostlyclean: mostlyclean-recursive
|
||||
|
||||
mostlyclean-am: mostlyclean-generic
|
||||
|
||||
pdf: pdf-recursive
|
||||
|
||||
pdf-am:
|
||||
|
||||
ps: ps-recursive
|
||||
|
||||
ps-am:
|
||||
|
||||
uninstall-am: uninstall-info-am
|
||||
|
||||
uninstall-info: uninstall-info-recursive
|
||||
|
||||
.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am check check-am clean \
|
||||
clean-generic clean-recursive ctags ctags-recursive dist \
|
||||
dist-all dist-gzip distcheck distclean distclean-generic \
|
||||
distclean-recursive distclean-tags distcleancheck distdir \
|
||||
distuninstallcheck dvi dvi-am dvi-recursive info info-am \
|
||||
info-recursive install install-am install-data install-data-am \
|
||||
install-data-recursive install-exec install-exec-am \
|
||||
install-exec-recursive install-info install-info-am \
|
||||
install-info-recursive install-man install-recursive \
|
||||
install-strip installcheck installcheck-am installdirs \
|
||||
installdirs-am installdirs-recursive maintainer-clean \
|
||||
maintainer-clean-generic maintainer-clean-recursive mostlyclean \
|
||||
mostlyclean-generic mostlyclean-recursive pdf pdf-am \
|
||||
pdf-recursive ps ps-am ps-recursive tags tags-recursive \
|
||||
uninstall uninstall-am uninstall-info-am \
|
||||
uninstall-info-recursive uninstall-recursive
|
||||
|
||||
# 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:
|
||||
@@ -0,0 +1,3 @@
|
||||
This file is required to keep autoconf/automake from complaining.
|
||||
|
||||
See the ChangeLog for what's new.
|
||||
@@ -0,0 +1,4 @@
|
||||
This file is required to keep autoconf/automake from complaining.
|
||||
|
||||
See the ChangeLog to see what's new.
|
||||
See the INSTALL file for instructions on how to build fs2_open.
|
||||
@@ -1,700 +0,0 @@
|
||||
TARGET = fs2
|
||||
|
||||
ifeq ($(USE_SOUND), 1)
|
||||
SOUND_DEF=
|
||||
SOUND_OBJS= \
|
||||
gamesnd/eventmusic.o \
|
||||
gamesnd/gamesnd.o \
|
||||
object/objectsnd.o \
|
||||
sound/acm.o \
|
||||
sound/audiostr.o \
|
||||
sound/ds.o \
|
||||
sound/ds3d.o \
|
||||
sound/dscap.o \
|
||||
sound/midifile.o \
|
||||
sound/rbaudio.o \
|
||||
sound/rtvoice.o \
|
||||
sound/sound.o \
|
||||
sound/winmidi.o \
|
||||
sound/winmidi_base.o \
|
||||
vcodec/codec1.o
|
||||
else
|
||||
SOUND_DEF=-DNO_SOUND
|
||||
SOUND_OBJS=
|
||||
endif # USE_SOUND
|
||||
|
||||
|
||||
ifeq ($(USE_JOYSTICK), 1)
|
||||
JOYSTICK_DEF=
|
||||
JOYSTICK_OBJS= \
|
||||
io/joy.o \
|
||||
io/joy_ff.o \
|
||||
io/swff_lib.o
|
||||
else
|
||||
JOYSTICK_DEF=-DNO_JOYSTICK
|
||||
JOYSTICK_OBJS=
|
||||
endif # USE_JOYSTICK
|
||||
|
||||
|
||||
ifeq ($(USE_NETWORK), 1)
|
||||
# no support for standalone server yet... (UI is Win32 specific)
|
||||
NETWORK_DEF=-DNO_STANDALONE
|
||||
NETWORK_OBJS= \
|
||||
hud/hudobserver.o \
|
||||
network/multi.o \
|
||||
network/multimsgs.o \
|
||||
network/multiteamselect.o \
|
||||
network/multiui.o \
|
||||
network/multiutil.o \
|
||||
network/multi_campaign.o \
|
||||
network/multi_data.o \
|
||||
network/multi_dogfight.o \
|
||||
network/multi_endgame.o \
|
||||
network/multi_ingame.o \
|
||||
network/multi_kick.o \
|
||||
network/multi_log.o \
|
||||
network/multi_obj.o \
|
||||
network/multi_observer.o \
|
||||
network/multi_options.o \
|
||||
network/multi_pause.o \
|
||||
network/multi_pinfo.o \
|
||||
network/multi_ping.o \
|
||||
network/multi_pmsg.o \
|
||||
network/multi_rate.o \
|
||||
network/multi_respawn.o \
|
||||
network/multi_team.o \
|
||||
network/multi_voice.o \
|
||||
network/multi_xfer.o \
|
||||
network/psnet.o \
|
||||
network/psnet2.o \
|
||||
menuui/optionsmenumulti.o \
|
||||
missionui/chatbox.o
|
||||
#
|
||||
# Network/stand_gui.o
|
||||
#
|
||||
else
|
||||
NETWORK_DEF=-DNO_NETWORK -DNO_STANDALONE
|
||||
NETWORK_OBJS=
|
||||
endif # USE_NETWORK
|
||||
|
||||
|
||||
ifeq ($(USE_OPENGL), 0)
|
||||
OPENGL_DEF=
|
||||
else
|
||||
OPENGL_DEF=-DUSE_OPENGL
|
||||
endif # USE_OPENGL
|
||||
|
||||
|
||||
LDFLAGS = -g
|
||||
LDLIBS = -L/usr/X11R6/lib -lSDL -lGL -lGLU -lpthread
|
||||
|
||||
CXXFLAGS = \
|
||||
-g \
|
||||
-I/usr/local/include/SDL \
|
||||
-I. \
|
||||
-fno-exceptions \
|
||||
-D_DEBUG -DNO_CD_CHECK -UNDEBUG \
|
||||
-DNO_DIRECT3D $(SOUND_DEF) $(JOYSTICK_DEF) $(NETWORK_DEF) $(OPENGL_DEF)
|
||||
|
||||
ANIM_OBJFILES = \
|
||||
anim/animplay.o \
|
||||
anim/packunpack.o
|
||||
|
||||
ASTEROID_OBJFILES = \
|
||||
asteroid/asteroid.o
|
||||
|
||||
BMPMAN_OBJFILES = \
|
||||
bmpman/bmpman.o
|
||||
|
||||
CFILE_OBJFILES = \
|
||||
cfile/cfile.o \
|
||||
cfile/cfilearchive.o \
|
||||
cfile/cfilelist.o \
|
||||
cfile/cfilesystem.o
|
||||
|
||||
CMDLINE_OBJFILES = \
|
||||
cmdline/cmdline.o
|
||||
|
||||
CMEASURE_OBJFILES = \
|
||||
cmeasure/cmeasure.o
|
||||
|
||||
CONTROLCONFIG_OBJFILES = \
|
||||
controlconfig/controlsconfig.o \
|
||||
controlconfig/controlsconfigcommon.o
|
||||
|
||||
CUTSCENE_OBJFILES = \
|
||||
cutscene/cutscenes.o
|
||||
|
||||
DEBRIS_OBJFILES = \
|
||||
debris/debris.o
|
||||
|
||||
DEBUGCONSOLE_OBJFILES = \
|
||||
debugconsole/console.o
|
||||
|
||||
DEMO_OBJFILES = \
|
||||
demo/demo.o
|
||||
|
||||
EXCEPTIONHANDLER_OBJFILES = \
|
||||
exceptionhandler/exceptionhandler.o
|
||||
|
||||
FIREBALL_OBJFILES = \
|
||||
fireball/fireballs.o \
|
||||
fireball/warpineffect.o
|
||||
|
||||
GAMEHELP_OBJFILES = \
|
||||
gamehelp/contexthelp.o \
|
||||
gamehelp/gameplayhelp.o
|
||||
|
||||
GAMESEQUENCE_OBJFILES = \
|
||||
gamesequence/gamesequence.o
|
||||
|
||||
# gamesnd/eventmusic.o
|
||||
# gamesnd/gamesnd.o
|
||||
GAMESND_OBJFILES =
|
||||
|
||||
# glide/glide.o
|
||||
GLIDE_OBJFILES =
|
||||
|
||||
# globalincs/windebug.o
|
||||
GLOBALINCS_OBJFILES = \
|
||||
globalincs/alphacolors.o \
|
||||
globalincs/crypt.o \
|
||||
globalincs/systemvars.o \
|
||||
globalincs/version.o
|
||||
|
||||
# graphics/grd3d.o
|
||||
# graphics/grd3drender.o
|
||||
# graphics/grd3dtexture.o
|
||||
# graphics/grdirectdraw.o
|
||||
# graphics/grglide.o
|
||||
# graphics/grglidetexture.o
|
||||
# graphics/grsoft.o
|
||||
# graphics/scaler.o
|
||||
# graphics/tmapgenericscans.o
|
||||
# graphics/tmapscantiled128x128.o
|
||||
# graphics/tmapscantiled16x16.o
|
||||
# graphics/tmapscantiled256x256.o
|
||||
# graphics/tmapscantiled32x32.o
|
||||
# graphics/tmapscantiled64x64.o
|
||||
# graphics/tmapscanline.o
|
||||
# graphics/tmapper.o
|
||||
GRAPHICS_OBJFILES = \
|
||||
graphics/2d.o \
|
||||
graphics/aaline.o \
|
||||
graphics/bitblt.o \
|
||||
graphics/circle.o \
|
||||
graphics/colors.o \
|
||||
graphics/font.o \
|
||||
graphics/gradient.o \
|
||||
graphics/gropengl.o \
|
||||
graphics/grzbuffer.o \
|
||||
graphics/line.o \
|
||||
graphics/pixel.o \
|
||||
graphics/rect.o \
|
||||
graphics/shade.o
|
||||
|
||||
# hud/hudobserver.o
|
||||
HUD_OBJFILES = \
|
||||
hud/hud.o \
|
||||
hud/hudartillery.o \
|
||||
hud/hudbrackets.o \
|
||||
hud/hudconfig.o \
|
||||
hud/hudescort.o \
|
||||
hud/hudets.o \
|
||||
hud/hudlock.o \
|
||||
hud/hudmessage.o \
|
||||
hud/hudreticle.o \
|
||||
hud/hudshield.o \
|
||||
hud/hudsquadmsg.o \
|
||||
hud/hudtarget.o \
|
||||
hud/hudtargetbox.o \
|
||||
hud/hudwingmanstatus.o
|
||||
|
||||
INETFILE_OBJFILES = \
|
||||
inetfile/cftp.o \
|
||||
inetfile/chttpget.o \
|
||||
inetfile/inetgetfile.o
|
||||
|
||||
# io/joy.o
|
||||
# io/joy_ff.o
|
||||
# io/swff_lib.o
|
||||
IO_OBJFILES = \
|
||||
io/key.o \
|
||||
io/keycontrol.o \
|
||||
io/mouse.o \
|
||||
io/timer.o \
|
||||
io/xmouse.o
|
||||
|
||||
JUMPNODE_OBJFILES = \
|
||||
jumpnode/jumpnode.o
|
||||
|
||||
LIGHTING_OBJFILES = \
|
||||
lighting/lighting.o
|
||||
|
||||
LOCALIZATION_OBJFILES = \
|
||||
localization/fhash.o \
|
||||
localization/localize.o
|
||||
|
||||
MATH_OBJFILES = \
|
||||
math/fix.o \
|
||||
math/floating.o \
|
||||
math/fvi.o \
|
||||
math/spline.o \
|
||||
math/staticrand.o \
|
||||
math/vecmat.o
|
||||
|
||||
# menuui/optionsmenumulti.o
|
||||
MENUUI_OBJFILES = \
|
||||
menuui/barracks.o \
|
||||
menuui/credits.o \
|
||||
menuui/fishtank.o \
|
||||
menuui/mainhallmenu.o \
|
||||
menuui/mainhalltemp.o \
|
||||
menuui/optionsmenu.o \
|
||||
menuui/playermenu.o \
|
||||
menuui/readyroom.o \
|
||||
menuui/snazzyui.o \
|
||||
menuui/techmenu.o \
|
||||
menuui/trainingmenu.o
|
||||
|
||||
MISSION_OBJFILES = \
|
||||
mission/missionbriefcommon.o \
|
||||
mission/missioncampaign.o \
|
||||
mission/missiongoals.o \
|
||||
mission/missiongrid.o \
|
||||
mission/missionhotkey.o \
|
||||
mission/missionload.o \
|
||||
mission/missionlog.o \
|
||||
mission/missionmessage.o \
|
||||
mission/missionparse.o \
|
||||
mission/missiontraining.o
|
||||
|
||||
# missionui/chatbox.o
|
||||
MISSIONUI_OBJFILES = \
|
||||
missionui/missionbrief.o \
|
||||
missionui/missioncmdbrief.o \
|
||||
missionui/missiondebrief.o \
|
||||
missionui/missionloopbrief.o \
|
||||
missionui/missionpause.o \
|
||||
missionui/missionrecommend.o \
|
||||
missionui/missionscreencommon.o \
|
||||
missionui/missionshipchoice.o \
|
||||
missionui/missionstats.o \
|
||||
missionui/missionweaponchoice.o \
|
||||
missionui/redalert.o
|
||||
|
||||
MODEL_OBJFILES = \
|
||||
model/modelcollide.o \
|
||||
model/modelinterp.o \
|
||||
model/modeloctant.o \
|
||||
model/modelread.o
|
||||
|
||||
NEBULA_OBJFILES = \
|
||||
nebula/neb.o \
|
||||
nebula/neblightning.o
|
||||
|
||||
# network/multi.o
|
||||
# network/multi_campaign.o
|
||||
# network/multi_data.o
|
||||
# network/multi_dogfight.o
|
||||
# network/multi_endgame.o
|
||||
# network/multi_ingame.o
|
||||
# network/multi_kick.o
|
||||
# network/multi_log.o
|
||||
# network/multimsgs.o
|
||||
# network/multi_obj.o
|
||||
# network/multi_observer.o
|
||||
# network/multi_oo.o
|
||||
# network/multi_options.o
|
||||
# network/multi_pause.o
|
||||
# network/multi_pinfo.o
|
||||
# network/multi_ping.o
|
||||
# network/multi_pmsg.o
|
||||
# network/multi_rate.o
|
||||
# network/multi_respawn.o
|
||||
# network/multi_team.o
|
||||
# network/multi_update.o
|
||||
# network/multi_voice.o
|
||||
# network/multi_xfer.o
|
||||
# network/multilag.o
|
||||
# network/multiteamselect.o
|
||||
# network/multiui.o
|
||||
# network/psnet.o
|
||||
# network/psnet2.o
|
||||
# network/stand_gui.o
|
||||
NETWORK_OBJFILES = \
|
||||
network/multiutil.o
|
||||
|
||||
# object/objectsnd.o
|
||||
OBJECT_OBJFILES = \
|
||||
object/collidedebrisship.o \
|
||||
object/collidedebrisweapon.o \
|
||||
object/collideshipship.o \
|
||||
object/collideshipweapon.o \
|
||||
object/collideweaponweapon.o \
|
||||
object/objcollide.o \
|
||||
object/object.o \
|
||||
object/objectsort.o
|
||||
|
||||
OBSERVER_OBJFILES = \
|
||||
observer/observer.o
|
||||
|
||||
OSAPI_OBJFILES = \
|
||||
osapi/osapi_unix.o \
|
||||
osapi/osregistry_unix.o \
|
||||
osapi/outwnd_unix.o
|
||||
|
||||
PALMAN_OBJFILES = \
|
||||
palman/palman.o
|
||||
|
||||
PARSE_OBJFILES = \
|
||||
parse/encrypt.o \
|
||||
parse/parselo.o \
|
||||
parse/sexp.o
|
||||
|
||||
PARTICLE_OBJFILES = \
|
||||
particle/particle.o
|
||||
|
||||
PCXUTILS_OBJFILES = \
|
||||
pcxutils/pcxutils.o
|
||||
|
||||
PHYSICS_OBJFILES = \
|
||||
physics/physics.o
|
||||
|
||||
PLAYERMAN_OBJFILES = \
|
||||
playerman/managepilot.o \
|
||||
playerman/playercontrol.o
|
||||
|
||||
POPUP_OBJFILES = \
|
||||
popup/popup.o \
|
||||
popup/popupdead.o
|
||||
|
||||
RADAR_OBJFILES = \
|
||||
radar/radar.o
|
||||
|
||||
RENDER_OBJFILES = \
|
||||
render/3dclipper.o \
|
||||
render/3ddraw.o \
|
||||
render/3dlaser.o \
|
||||
render/3dmath.o \
|
||||
render/3dsetup.o
|
||||
|
||||
SHIP_OBJFILES = \
|
||||
ship/afterburner.o \
|
||||
ship/ai.o \
|
||||
ship/aibig.o \
|
||||
ship/aicode.o \
|
||||
ship/aigoals.o \
|
||||
ship/awacs.o \
|
||||
ship/shield.o \
|
||||
ship/ship.o \
|
||||
ship/shipcontrails.o \
|
||||
ship/shipfx.o \
|
||||
ship/shiphit.o
|
||||
|
||||
SOUND_OBJFILES = \
|
||||
sound/acm.o \
|
||||
sound/audiostr.o \
|
||||
sound/ds.o \
|
||||
sound/ds3d.o \
|
||||
sound/dscap.o \
|
||||
sound/midifile.o \
|
||||
sound/rbaudio.o \
|
||||
sound/rtvoice.o \
|
||||
sound/sound.o \
|
||||
sound/winmidi.o \
|
||||
sound/winmidi_base.o
|
||||
|
||||
STARFIELD_OBJFILES = \
|
||||
starfield/nebula.o \
|
||||
starfield/starfield.o \
|
||||
starfield/supernova.o
|
||||
|
||||
STATS_OBJFILES = \
|
||||
stats/medals.o \
|
||||
stats/scoring.o \
|
||||
stats/stats.o
|
||||
|
||||
TGAUTILS_OBJFILES = \
|
||||
tgautils/tgautils.o
|
||||
|
||||
UI_OBJFILES = \
|
||||
ui/button.o \
|
||||
ui/checkbox.o \
|
||||
ui/gadget.o \
|
||||
ui/icon.o \
|
||||
ui/inputbox.o \
|
||||
ui/keytrap.o \
|
||||
ui/listbox.o \
|
||||
ui/radio.o \
|
||||
ui/scroll.o \
|
||||
ui/slider.o \
|
||||
ui/slider2.o \
|
||||
ui/uidraw.o \
|
||||
ui/uimouse.o \
|
||||
ui/window.o
|
||||
|
||||
VCODEC_OBJFILES = \
|
||||
vcodec/codec1.o
|
||||
|
||||
WEAPON_OBJFILES = \
|
||||
weapon/beam.o \
|
||||
weapon/corkscrew.o \
|
||||
weapon/emp.o \
|
||||
weapon/flak.o \
|
||||
weapon/muzzleflash.o \
|
||||
weapon/shockwave.o \
|
||||
weapon/swarm.o \
|
||||
weapon/trails.o \
|
||||
weapon/weapons.o
|
||||
|
||||
# SOUND_OBJFILES
|
||||
# INETFILE_OBJFILES
|
||||
# EXCEPTIONHANDLER_OBJFILES
|
||||
OBJFILES = \
|
||||
ANIM_OBJFILES \
|
||||
ASTEROID_OBJFILES \
|
||||
BMPMAN_OBJFILES \
|
||||
CFILE_OBJFILES \
|
||||
CMDLINE_OBJFILES \
|
||||
CMEASURE_OBJFILES \
|
||||
CONTROLCONFIG_OBJFILES \
|
||||
CUTSCENE_OBJFILES \
|
||||
DEBRIS_OBJFILES \
|
||||
DEBUGCONSOLE_OBJFILES \
|
||||
FIREBALL_OBJFILES \
|
||||
GAMEHELP_OBJFILES \
|
||||
GAMESEQUENCE_OBJFILES \
|
||||
GAMESND_OBJFILES \
|
||||
GLIDE_OBJFILES \
|
||||
GLOBALINCS_OBJFILES \
|
||||
GRAPHICS_OBJFILES \
|
||||
HUD_OBJFILES \
|
||||
IO_OBJFILES \
|
||||
JUMPNODE_OBJFILES \
|
||||
LIGHTING_OBJFILES \
|
||||
MATH_OBJFILES \
|
||||
MENUUI_OBJFILES \
|
||||
MISSION_OBJFILES \
|
||||
MISSIONUI_OBJFILES \
|
||||
MODEL_OBJFILES \
|
||||
NETWORK_OBJFILES \
|
||||
OBJECT_OBJFILES \
|
||||
OBSERVER_OBJFILES \
|
||||
OSAPI_OBJFILES \
|
||||
PALMAN_OBJFILES \
|
||||
PARSE_OBJFILES \
|
||||
PARTICLE_OBJFILES \
|
||||
PCXUTILS_OBJFILES \
|
||||
PHYSICS_OBJFILES \
|
||||
PLAYERMAN_OBJFILES \
|
||||
POPUP_OBJFILES \
|
||||
RADAR_OBJFILES \
|
||||
RENDER_OBJFILES \
|
||||
SHIP_OBJFILES \
|
||||
STARFIELD_OBJFILES \
|
||||
STATS_OBJFILES \
|
||||
UI_OBJFILES \
|
||||
VCODEC_OBJFILES \
|
||||
WEAPON_OBJFILES \
|
||||
NEBULA_OBJFILES \
|
||||
LOCALIZATION_OBJFILES \
|
||||
TGAUTILS_OBJFILES \
|
||||
DEMO_OBJFILES
|
||||
|
||||
# SOUND_OBJFILES
|
||||
# INETFILE_OBJFILES
|
||||
# EXCEPTIONHANDLER_OBJFILES
|
||||
LIB_OBJFILES = \
|
||||
$(ANIM_OBJFILES) \
|
||||
$(ASTEROID_OBJFILES) \
|
||||
$(BMPMAN_OBJFILES) \
|
||||
$(CFILE_OBJFILES) \
|
||||
$(CMDLINE_OBJFILES) \
|
||||
$(CMEASURE_OBJFILES) \
|
||||
$(CONTROLCONFIG_OBJFILES) \
|
||||
$(CUTSCENE_OBJFILES) \
|
||||
$(DEBRIS_OBJFILES) \
|
||||
$(DEBUGCONSOLE_OBJFILES) \
|
||||
$(FIREBALL_OBJFILES) \
|
||||
$(GAMEHELP_OBJFILES) \
|
||||
$(GAMESEQUENCE_OBJFILES) \
|
||||
$(GAMESND_OBJFILES) \
|
||||
$(GLIDE_OBJFILES) \
|
||||
$(GLOBALINCS_OBJFILES) \
|
||||
$(GRAPHICS_OBJFILES) \
|
||||
$(HUD_OBJFILES) \
|
||||
$(IO_OBJFILES) \
|
||||
$(JUMPNODE_OBJFILES) \
|
||||
$(LIGHTING_OBJFILES) \
|
||||
$(MATH_OBJFILES) \
|
||||
$(MENUUI_OBJFILES) \
|
||||
$(MISSION_OBJFILES) \
|
||||
$(MISSIONUI_OBJFILES) \
|
||||
$(MODEL_OBJFILES) \
|
||||
$(NETWORK_OBJFILES) \
|
||||
$(OBJECT_OBJFILES) \
|
||||
$(OBSERVER_OBJFILES) \
|
||||
$(OSAPI_OBJFILES) \
|
||||
$(PALMAN_OBJFILES) \
|
||||
$(PARSE_OBJFILES) \
|
||||
$(PARTICLE_OBJFILES) \
|
||||
$(PCXUTILS_OBJFILES) \
|
||||
$(PHYSICS_OBJFILES) \
|
||||
$(PLAYERMAN_OBJFILES) \
|
||||
$(POPUP_OBJFILES) \
|
||||
$(RADAR_OBJFILES) \
|
||||
$(RENDER_OBJFILES) \
|
||||
$(SHIP_OBJFILES) \
|
||||
$(STARFIELD_OBJFILES) \
|
||||
$(STATS_OBJFILES) \
|
||||
$(UI_OBJFILES) \
|
||||
$(VCODEC_OBJFILES) \
|
||||
$(WEAPON_OBJFILES) \
|
||||
$(NEBULA_OBJFILES) \
|
||||
$(LOCALIZATION_OBJFILES) \
|
||||
$(TGAUTILS_OBJFILES) \
|
||||
$(DEMO_OBJFILES) \
|
||||
$(SOUND_OBJS) \
|
||||
$(JOYSTICK_OBJS) \
|
||||
$(NETWORK_OBJS)
|
||||
|
||||
FREESPACE2_OBJFILES = \
|
||||
freespace2/freespace.o \
|
||||
freespace2/levelpaging.o
|
||||
|
||||
STUB_OBJFILES = \
|
||||
windows_stub/stubs.o
|
||||
|
||||
# ==============================
|
||||
.PHONY: all clean code \
|
||||
ANIM_OBJFILES \
|
||||
ASTEROID_OBJFILES \
|
||||
BMPMAN_OBJFILES \
|
||||
CMDLINE_OBJFILES \
|
||||
CMEASURE_OBJFILES \
|
||||
CONTROLCONFIG_OBJFILES \
|
||||
CUTSCENE_OBJFILES \
|
||||
DEBRIS_OBJFILES \
|
||||
DEBUGCONSOLE_OBJFILES \
|
||||
FIREBALL_OBJFILES \
|
||||
GAMEHELP_OBJFILES \
|
||||
GAMESEQUENCE_OBJFILES \
|
||||
GAMESND_OBJFILES \
|
||||
GLIDE_OBJFILES \
|
||||
GLOBALINCS_OBJFILES \
|
||||
GRAPHICS_OBJFILES \
|
||||
HUD_OBJFILES \
|
||||
IO_OBJFILES \
|
||||
JUMPNODE_OBJFILES \
|
||||
LIGHTING_OBJFILES \
|
||||
MATH_OBJFILES \
|
||||
MENUUI_OBJFILES \
|
||||
MISSION_OBJFILES \
|
||||
MISSIONUI_OBJFILES \
|
||||
MODEL_OBJFILES \
|
||||
OBJECT_OBJFILES \
|
||||
OBSERVER_OBJFILES \
|
||||
OSAPI_OBJFILES \
|
||||
PALMAN_OBJFILES \
|
||||
PARSE_OBJFILES \
|
||||
PARTICLE_OBJFILES \
|
||||
PCXUTILS_OBJFILES \
|
||||
PHYSICS_OBJFILES \
|
||||
PLAYERMAN_OBJFILES \
|
||||
POPUP_OBJFILES \
|
||||
RADAR_OBJFILES \
|
||||
RENDER_OBJFILES \
|
||||
SHIP_OBJFILES \
|
||||
SOUND_OBJFILES \
|
||||
STARFIELD_OBJFILES \
|
||||
STATS_OBJFILES \
|
||||
UI_OBJFILES \
|
||||
VCODEC_OBJFILES \
|
||||
WEAPON_OBJFILES \
|
||||
NEBULA_OBJFILES \
|
||||
LOCALIZATION_OBJFILES \
|
||||
TGAUTILS_OBJFILES \
|
||||
DEMO_OBJFILES \
|
||||
INETFILE_OBJFILES \
|
||||
EXCEPTIONHANDLER_OBJFILES \
|
||||
NETWORK_OBJFILES
|
||||
|
||||
.cpp.o:
|
||||
$(CXX) $(CXXFLAGS) -c -o $@ $<
|
||||
|
||||
|
||||
all: $(TARGET)
|
||||
|
||||
clean:
|
||||
rm -f $(TARGET) libcode.a core *.o *~
|
||||
find -name *.o -exec rm {} \;
|
||||
find -name *~ -exec rm {} \;
|
||||
|
||||
code: libcode.a
|
||||
|
||||
|
||||
# ==============================
|
||||
libcode.a: $(LIB_OBJFILES)
|
||||
$(AR) -r $@ $(LIB_OBJFILES)
|
||||
# $(CXX) -o $@ $(LIB_OBJFILES)
|
||||
|
||||
fs2: libcode.a $(FREESPACE2_OBJFILES) $(STUB_OBJFILES)
|
||||
$(CXX) $(LDFLAGS) -o $@ $(FREESPACE2_OBJFILES) $(STUB_OBJFILES) $(LDLIBS) -L. -lcode
|
||||
|
||||
|
||||
# exceptions to the rule...
|
||||
freespace2/freespace.o: freespace2/freespace.cpp
|
||||
$(CXX) $(CXXFLAGS) -fexceptions -c -o $@ $<
|
||||
|
||||
ANIM_OBJFILES: $(ANIM_OBJFILES)
|
||||
ASTEROID_OBJFILES: $(ASTEROID_OBJFILES)
|
||||
BMPMAN_OBJFILES: $(BMPMAN_OBJFILES)
|
||||
CMDLINE_OBJFILES: $(CMDLINE_OBJFILES)
|
||||
CMEASURE_OBJFILES: $(CMEASURE_OBJFILES)
|
||||
CONTROLCONFIG_OBJFILES: $(CONTROLCONFIG_OBJFILES)
|
||||
CUTSCENE_OBJFILES: $(CUTSCENE_OBJFILES)
|
||||
DEBRIS_OBJFILES: $(DEBRIS_OBJFILES)
|
||||
DEBUGCONSOLE_OBJFILES: $(DEBUGCONSOLE_OBJFILES)
|
||||
FIREBALL_OBJFILES: $(FIREBALL_OBJFILES)
|
||||
GAMEHELP_OBJFILES: $(GAMEHELP_OBJFILES)
|
||||
GAMESEQUENCE_OBJFILES: $(GAMESEQUENCE_OBJFILES)
|
||||
GAMESND_OBJFILES: $(GAMESND_OBJFILES)
|
||||
GLIDE_OBJFILES: $(GLIDE_OBJFILES)
|
||||
GLOBALINCS_OBJFILES: $(GLOBALINCS_OBJFILES)
|
||||
GRAPHICS_OBJFILES: $(GRAPHICS_OBJFILES)
|
||||
HUD_OBJFILES: $(HUD_OBJFILES)
|
||||
IO_OBJFILES: $(IO_OBJFILES)
|
||||
JUMPNODE_OBJFILES: $(JUMPNODE_OBJFILES)
|
||||
LIGHTING_OBJFILES: $(LIGHTING_OBJFILES)
|
||||
MATH_OBJFILES: $(MATH_OBJFILES)
|
||||
MENUUI_OBJFILES: $(MENUUI_OBJFILES)
|
||||
MISSION_OBJFILES: $(MISSION_OBJFILES)
|
||||
MISSIONUI_OBJFILES: $(MISSIONUI_OBJFILES)
|
||||
MODEL_OBJFILES: $(MODEL_OBJFILES)
|
||||
OBJECT_OBJFILES: $(OBJECT_OBJFILES)
|
||||
OBSERVER_OBJFILES: $(OBSERVER_OBJFILES)
|
||||
OSAPI_OBJFILES: $(OSAPI_OBJFILES)
|
||||
PALMAN_OBJFILES: $(PALMAN_OBJFILES)
|
||||
PARSE_OBJFILES: $(PARSE_OBJFILES)
|
||||
PARTICLE_OBJFILES: $(PARTICLE_OBJFILES)
|
||||
PCXUTILS_OBJFILES: $(PCXUTILS_OBJFILES)
|
||||
PHYSICS_OBJFILES: $(PHYSICS_OBJFILES)
|
||||
PLAYERMAN_OBJFILES: $(PLAYERMAN_OBJFILES)
|
||||
POPUP_OBJFILES: $(POPUP_OBJFILES)
|
||||
RADAR_OBJFILES: $(RADAR_OBJFILES)
|
||||
RENDER_OBJFILES: $(RENDER_OBJFILES)
|
||||
SHIP_OBJFILES: $(SHIP_OBJFILES)
|
||||
SOUND_OBJFILES: $(SOUND_OBJFILES)
|
||||
STARFIELD_OBJFILES: $(STARFIELD_OBJFILES)
|
||||
STATS_OBJFILES: $(STATS_OBJFILES)
|
||||
UI_OBJFILES: $(UI_OBJFILES)
|
||||
VCODEC_OBJFILES: $(VCODEC_OBJFILES)
|
||||
WEAPON_OBJFILES: $(WEAPON_OBJFILES)
|
||||
NEBULA_OBJFILES: $(NEBULA_OBJFILES)
|
||||
LOCALIZATION_OBJFILES: $(LOCALIZATION_OBJFILES)
|
||||
TGAUTILS_OBJFILES: $(TGAUTILS_OBJFILES)
|
||||
DEMO_OBJFILES: $(DEMO_OBJFILES)
|
||||
INETFILE_OBJFILES: $(INETFILE_OBJFILES)
|
||||
EXCEPTIONHANDLER_OBJFILES: $(EXCEPTIONHANDLER_OBJFILES)
|
||||
NETWORK_OBJFILES: $(NETWORK_OBJFILES)
|
||||
@@ -0,0 +1,305 @@
|
||||
# code/Makefile.am for fs2_open
|
||||
#
|
||||
# $Id: Makefile.am,v 1.2 2003-03-11 19:00:05 penguin Exp $
|
||||
|
||||
noinst_PROGRAMS = fs2
|
||||
|
||||
fs2_SOURCES = \
|
||||
anim/animplay.cpp \
|
||||
anim/packunpack.cpp \
|
||||
asteroid/asteroid.cpp \
|
||||
bmpman/bmpman.cpp \
|
||||
cfile/cfile.cpp \
|
||||
cfile/cfilearchive.cpp \
|
||||
cfile/cfilelist.cpp \
|
||||
cfile/cfilesystem.cpp \
|
||||
cmdline/cmdline.cpp \
|
||||
cmeasure/cmeasure.cpp \
|
||||
controlconfig/controlsconfig.cpp \
|
||||
controlconfig/controlsconfigcommon.cpp \
|
||||
cutscene/cutscenes.cpp \
|
||||
debris/debris.cpp \
|
||||
debugconsole/console.cpp \
|
||||
decals/decals.cpp \
|
||||
demo/demo.cpp \
|
||||
exceptionhandler/exceptionhandler.cpp \
|
||||
fireball/fireballs.cpp \
|
||||
fireball/warpineffect.cpp \
|
||||
freespace2/freespace.cpp \
|
||||
freespace2/levelpaging.cpp \
|
||||
gamehelp/contexthelp.cpp \
|
||||
gamehelp/gameplayhelp.cpp \
|
||||
gamesequence/gamesequence.cpp \
|
||||
globalincs/alphacolors.cpp \
|
||||
globalincs/crypt.cpp \
|
||||
globalincs/systemvars.cpp \
|
||||
globalincs/version.cpp \
|
||||
graphics/2d.cpp \
|
||||
graphics/aaline.cpp \
|
||||
graphics/bitblt.cpp \
|
||||
graphics/circle.cpp \
|
||||
graphics/colors.cpp \
|
||||
graphics/font.cpp \
|
||||
graphics/gradient.cpp \
|
||||
graphics/gropengl.cpp \
|
||||
graphics/grzbuffer.cpp \
|
||||
graphics/line.cpp \
|
||||
graphics/pixel.cpp \
|
||||
graphics/rect.cpp \
|
||||
graphics/scaler.cpp \
|
||||
graphics/shade.cpp \
|
||||
hud/hud.cpp \
|
||||
hud/hudartillery.cpp \
|
||||
hud/hudbrackets.cpp \
|
||||
hud/hudconfig.cpp \
|
||||
hud/hudescort.cpp \
|
||||
hud/hudets.cpp \
|
||||
hud/hudlock.cpp \
|
||||
hud/hudmessage.cpp \
|
||||
hud/hudreticle.cpp \
|
||||
hud/hudshield.cpp \
|
||||
hud/hudsquadmsg.cpp \
|
||||
hud/hudtarget.cpp \
|
||||
hud/hudtargetbox.cpp \
|
||||
hud/hudwingmanstatus.cpp \
|
||||
io/key.cpp \
|
||||
io/keycontrol.cpp \
|
||||
io/mouse.cpp \
|
||||
io/timer.cpp \
|
||||
jumpnode/jumpnode.cpp \
|
||||
lighting/lighting.cpp \
|
||||
localization/fhash.cpp \
|
||||
localization/localize.cpp \
|
||||
math/fix.cpp \
|
||||
math/floating.cpp \
|
||||
math/fvi.cpp \
|
||||
math/spline.cpp \
|
||||
math/staticrand.cpp \
|
||||
math/vecmat.cpp \
|
||||
menuui/barracks.cpp \
|
||||
menuui/credits.cpp \
|
||||
menuui/fishtank.cpp \
|
||||
menuui/mainhallmenu.cpp \
|
||||
menuui/mainhalltemp.cpp \
|
||||
menuui/optionsmenu.cpp \
|
||||
menuui/playermenu.cpp \
|
||||
menuui/readyroom.cpp \
|
||||
menuui/snazzyui.cpp \
|
||||
menuui/techmenu.cpp \
|
||||
menuui/trainingmenu.cpp \
|
||||
mission/missionbriefcommon.cpp \
|
||||
mission/missioncampaign.cpp \
|
||||
mission/missiongoals.cpp \
|
||||
mission/missiongrid.cpp \
|
||||
mission/missionhotkey.cpp \
|
||||
mission/missionload.cpp \
|
||||
mission/missionlog.cpp \
|
||||
mission/missionmessage.cpp \
|
||||
mission/missionparse.cpp \
|
||||
mission/missiontraining.cpp \
|
||||
missionui/missionbrief.cpp \
|
||||
missionui/missioncmdbrief.cpp \
|
||||
missionui/missiondebrief.cpp \
|
||||
missionui/missionloopbrief.cpp \
|
||||
missionui/missionpause.cpp \
|
||||
missionui/missionrecommend.cpp \
|
||||
missionui/missionscreencommon.cpp \
|
||||
missionui/missionshipchoice.cpp \
|
||||
missionui/missionstats.cpp \
|
||||
missionui/missionweaponchoice.cpp \
|
||||
missionui/redalert.cpp \
|
||||
model/modelcollide.cpp \
|
||||
model/modelinterp.cpp \
|
||||
model/modeloctant.cpp \
|
||||
model/modelread.cpp \
|
||||
nebula/neb.cpp \
|
||||
nebula/neblightning.cpp \
|
||||
object/collidedebrisship.cpp \
|
||||
object/collidedebrisweapon.cpp \
|
||||
object/collideshipship.cpp \
|
||||
object/collideshipweapon.cpp \
|
||||
object/collideweaponweapon.cpp \
|
||||
object/objcollide.cpp \
|
||||
object/object.cpp \
|
||||
object/objectsort.cpp \
|
||||
observer/observer.cpp \
|
||||
palman/palman.cpp \
|
||||
parse/encrypt.cpp \
|
||||
parse/parselo.cpp \
|
||||
parse/sexp.cpp \
|
||||
particle/particle.cpp \
|
||||
pcxutils/pcxutils.cpp \
|
||||
physics/physics.cpp \
|
||||
playerman/managepilot.cpp \
|
||||
playerman/playercontrol.cpp \
|
||||
popup/popup.cpp \
|
||||
popup/popupdead.cpp \
|
||||
radar/radar.cpp \
|
||||
render/3dclipper.cpp \
|
||||
render/3ddraw.cpp \
|
||||
render/3dlaser.cpp \
|
||||
render/3dmath.cpp \
|
||||
render/3dsetup.cpp \
|
||||
ship/afterburner.cpp \
|
||||
ship/ai.cpp \
|
||||
ship/aibig.cpp \
|
||||
ship/aicode.cpp \
|
||||
ship/aigoals.cpp \
|
||||
ship/awacs.cpp \
|
||||
ship/shield.cpp \
|
||||
ship/ship.cpp \
|
||||
ship/shipcontrails.cpp \
|
||||
ship/shipfx.cpp \
|
||||
ship/shiphit.cpp \
|
||||
starfield/nebula.cpp \
|
||||
starfield/starfield.cpp \
|
||||
starfield/supernova.cpp \
|
||||
stats/medals.cpp \
|
||||
stats/scoring.cpp \
|
||||
stats/stats.cpp \
|
||||
tgautils/tgautils.cpp \
|
||||
ui/button.cpp \
|
||||
ui/checkbox.cpp \
|
||||
ui/gadget.cpp \
|
||||
ui/icon.cpp \
|
||||
ui/inputbox.cpp \
|
||||
ui/keytrap.cpp \
|
||||
ui/listbox.cpp \
|
||||
ui/radio.cpp \
|
||||
ui/scroll.cpp \
|
||||
ui/slider.cpp \
|
||||
ui/slider2.cpp \
|
||||
ui/uidraw.cpp \
|
||||
ui/uimouse.cpp \
|
||||
ui/window.cpp \
|
||||
weapon/beam.cpp \
|
||||
weapon/corkscrew.cpp \
|
||||
weapon/emp.cpp \
|
||||
weapon/flak.cpp \
|
||||
weapon/muzzleflash.cpp \
|
||||
weapon/shockwave.cpp \
|
||||
weapon/swarm.cpp \
|
||||
weapon/trails.cpp \
|
||||
weapon/weapons.cpp
|
||||
|
||||
|
||||
## conditional includes follow:
|
||||
|
||||
## joystic support sources
|
||||
if FS2_JOYSTICK
|
||||
fs2_SOURCES += \
|
||||
io/joy.cpp \
|
||||
io/joy_ff.cpp \
|
||||
io/swff_lib.cpp
|
||||
endif # FS2_JOYSTICK
|
||||
|
||||
## networking support sources
|
||||
if FS2_NETWORKING
|
||||
fs2_SOURCES += \
|
||||
hud/hudobserver.cpp \
|
||||
network/multi.cpp \
|
||||
network/multimsgs.cpp \
|
||||
network/multiteamselect.cpp \
|
||||
network/multiui.cpp \
|
||||
network/multiutil.cpp \
|
||||
network/multi_campaign.cpp \
|
||||
network/multi_data.cpp \
|
||||
network/multi_dogfight.cpp \
|
||||
network/multi_endgame.cpp \
|
||||
network/multi_ingame.cpp \
|
||||
network/multi_kick.cpp \
|
||||
network/multi_log.cpp \
|
||||
network/multi_obj.cpp \
|
||||
network/multi_observer.cpp \
|
||||
network/multi_options.cpp \
|
||||
network/multi_pause.cpp \
|
||||
network/multi_pinfo.cpp \
|
||||
network/multi_ping.cpp \
|
||||
network/multi_pmsg.cpp \
|
||||
network/multi_rate.cpp \
|
||||
network/multi_respawn.cpp \
|
||||
network/multi_team.cpp \
|
||||
network/multi_voice.cpp \
|
||||
network/multi_xfer.cpp \
|
||||
network/psnet.cpp \
|
||||
network/psnet2.cpp \
|
||||
menuui/optionsmenumulti.cpp \
|
||||
missionui/chatbox.cpp
|
||||
endif # FS2_NETWORKING
|
||||
|
||||
## sound support sources
|
||||
if FS2_SOUND
|
||||
fs2_SOURCES += \
|
||||
gamesnd/eventmusic.cpp \
|
||||
gamesnd/gamesnd.cpp \
|
||||
object/objectsnd.cpp \
|
||||
sound/acm.cpp \
|
||||
sound/audiostr.cpp \
|
||||
sound/ds.cpp \
|
||||
sound/ds3d.cpp \
|
||||
sound/dscap.cpp \
|
||||
sound/midifile.cpp \
|
||||
sound/rbaudio.cpp \
|
||||
sound/rtvoice.cpp \
|
||||
sound/sound.cpp \
|
||||
sound/winmidi.cpp \
|
||||
sound/winmidi_base.cpp \
|
||||
vcodec/codec1.cpp
|
||||
endif # FS2_SOUND
|
||||
|
||||
## software-rendering support sources
|
||||
if FS2_GRSOFT
|
||||
fs2_SOURCES += \
|
||||
graphics/grsoft.cpp \
|
||||
graphics/tmapper.cpp
|
||||
endif # FS2_GRSOFT
|
||||
|
||||
## Win32-specific sources
|
||||
if FS2_OS_WIN32
|
||||
fs2_SOURCES += \
|
||||
cutscene/movie.cpp \
|
||||
directx/dx8show.cpp \
|
||||
ddsutils/ddsutils.cpp \
|
||||
globalincs/windebug.cpp \
|
||||
glide/glide.cpp \
|
||||
graphics/grd3d.cpp \
|
||||
graphics/grd3drender.cpp \
|
||||
graphics/grd3dtexture.cpp \
|
||||
graphics/grdirectdraw.cpp \
|
||||
graphics/grglide.cpp \
|
||||
graphics/grglidetexture.cpp \
|
||||
network/stand_gui.cpp \
|
||||
osapi/osapi.cpp \
|
||||
osapi/osregistry.cpp \
|
||||
osapi/outwnd.cpp
|
||||
endif # FS2_OS_WIN32
|
||||
|
||||
## Unix-specific sources
|
||||
if FS2_OS_UNIX
|
||||
fs2_SOURCES += \
|
||||
io/xmouse.cpp \
|
||||
osapi/osapi_unix.cpp \
|
||||
osapi/osregistry_unix.cpp \
|
||||
osapi/outwnd_unix.cpp
|
||||
endif # FS2_OS_UNIX
|
||||
|
||||
|
||||
## compiler flags
|
||||
# INCLUDES = -I.
|
||||
AM_CXXFLAGS = -fno-exceptions @DX8_INCLUDE@
|
||||
AM_LDFLAGS = -L/c/dx8/lib @DX8_LIB@
|
||||
|
||||
LDADD =
|
||||
|
||||
if FS2_OS_WIN32
|
||||
## Win32 libraries needed
|
||||
LDADD += \
|
||||
-lgdi32 -lole32 -lwsock32 -lwinmm -lmsacm32 -lopengl32 \
|
||||
-lcomctl32 -lstrmiids -ldxguid -lddraw -ldinput
|
||||
endif
|
||||
|
||||
|
||||
if FS2_OS_UNIX
|
||||
## Unix libraries needed
|
||||
## -- TODO --
|
||||
endif
|
||||
File diff suppressed because it is too large.
Load diff
@@ -9,13 +9,31 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Anim/AnimPlay.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-03-18 10:07:00 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* C module for playing back anim files
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1.2.3 2002/11/04 21:24:59 randomtiger
|
||||
*
|
||||
* When running in D3D all ani's are memory mapped for speed, this takes up more memory but stops gametime locking of textures which D3D8 hates.
|
||||
* Added new command line tag Cmdline_d3dlowmem for people who dont want to make use of this because they have no memory.
|
||||
* Cleaned up some more texture stuff enabled console debug for D3D.
|
||||
*
|
||||
* Revision 2.1.2.2 2002/09/28 22:13:42 randomtiger
|
||||
* Sorted out some bits and pieces. The background nebula blends now which is nice. – RT
|
||||
*
|
||||
* Revision 2.1.2.1 2002/09/24 18:56:40 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:21 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -191,6 +209,8 @@
|
||||
#include "pcxutils/pcxutils.h"
|
||||
#include "anim/packunpack.h"
|
||||
#include "cfile/cfile.h"
|
||||
#include "cmdline/cmdline.h"
|
||||
#include "debugconsole/dbugfile.h"
|
||||
|
||||
static color Color_xparent;
|
||||
|
||||
@@ -448,6 +468,7 @@ anim_instance *anim_play(anim_play_struct *aps)
|
||||
// input: instance => pointer to animation instance
|
||||
// frametime => time elapsed since last call, in seconds
|
||||
//
|
||||
|
||||
int anim_show_next_frame(anim_instance *instance, float frametime)
|
||||
{
|
||||
int bitmap_id, bitmap_flags=0, new_frame_num, frame_diff=0, i, n_frames=0,frame_save;
|
||||
@@ -465,6 +486,7 @@ int anim_show_next_frame(anim_instance *instance, float frametime)
|
||||
n_frames = instance->stop_at - instance->start_at + 1;
|
||||
else if(instance->direction == ANIM_DIRECT_REVERSE)
|
||||
n_frames = instance->start_at - instance->stop_at + 1;
|
||||
|
||||
time = n_frames / i2fl(instance->parent->fps);
|
||||
|
||||
percent_through = instance->time_elapsed / time;
|
||||
@@ -891,7 +913,11 @@ anim *anim_load(char *real_filename, int file_mapped)
|
||||
int count,idx;
|
||||
char name[_MAX_PATH];
|
||||
|
||||
// file_mapped = 0;
|
||||
// Unless told otherwise in D3D everything is loaded for speed, lets make use of all that memory
|
||||
// people have
|
||||
if(gr_screen.mode == GR_DIRECT3D && Cmdline_d3dlowmem == 0) {
|
||||
file_mapped = 0;
|
||||
}
|
||||
|
||||
Assert ( real_filename != NULL );
|
||||
|
||||
|
||||
@@ -9,15 +9,33 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Anim/PackUnpack.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-03-18 10:07:00 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Code for handling packing and unpacking in Hoffoss's RLE format, used for
|
||||
* Anim files. Also handles Anim loading, creating Anim instances (for
|
||||
* utilizing an Anim), and getting getting frames of the Anim.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1.2.1 2002/11/04 03:02:27 randomtiger
|
||||
*
|
||||
* I have made some fairly drastic changes to the bumpman system. Now functionality can be engine dependant.
|
||||
* This is so D3D8 can call its own loading code that will allow good efficient loading and use of textures that it desparately needs without
|
||||
* turning bumpman.cpp into a total hook infested nightmare. Note the new bumpman code is still relying on a few of the of the old functions and all of the old bumpman arrays.
|
||||
*
|
||||
* I have done this by adding to the gr_screen list of function pointers that are set up by the engines init functions.
|
||||
* I have named the define calls the same name as the original 'bm_' functions so that I havent had to change names all through the code.
|
||||
*
|
||||
* Rolled back to an old version of bumpman and made a few changes.
|
||||
* Added new files: grd3dbumpman.cpp and .h
|
||||
* Moved the bitmap init function to after the 3D engine is initialised
|
||||
* Added includes where needed
|
||||
* Disabled (for now) the D3D8 TGA loading - RT
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:21 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -158,6 +176,7 @@
|
||||
#include "graphics/2d.h"
|
||||
#include "anim/animplay.h"
|
||||
#include "anim/packunpack.h"
|
||||
#include "graphics/2d.h"
|
||||
|
||||
int packer_code = PACKER_CODE;
|
||||
int transparent_code = 254;
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Asteroid/Asteroid.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-04-29 01:03:22 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* C module for asteroid code
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:21 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -644,7 +647,7 @@ object *asteroid_create(asteroid_field *asfieldp, int asteroid_type, int asteroi
|
||||
objp->phys_info.I_body_inv.vec.rvec.xyz.x = 1.0f / (objp->phys_info.mass*asip->modelp[asteroid_subtype]->rad);
|
||||
objp->phys_info.I_body_inv.vec.uvec.xyz.y = objp->phys_info.I_body_inv.vec.rvec.xyz.x;
|
||||
objp->phys_info.I_body_inv.vec.fvec.xyz.z = objp->phys_info.I_body_inv.vec.rvec.xyz.x;
|
||||
objp->hull_strength = asip->initial_hull_strength * (0.8f + (float)Game_skill_level/NUM_SKILL_LEVELS)/2.0f;
|
||||
objp->hull_strength = asip->initial_asteroid_strength * (0.8f + (float)Game_skill_level/NUM_SKILL_LEVELS)/2.0f;
|
||||
|
||||
// ensure vel is valid
|
||||
Assert( !vm_is_vec_nan(&objp->phys_info.vel) );
|
||||
@@ -2022,7 +2025,7 @@ void asteroid_parse_section()
|
||||
stuff_float(&asip->blast);
|
||||
|
||||
required_string("$Hitpoints:");
|
||||
stuff_float(&asip->initial_hull_strength);
|
||||
stuff_float(&asip->initial_asteroid_strength);
|
||||
}
|
||||
|
||||
// read in data from asteroid.tbl into Asteroid_info[] array
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Asteroid/Asteroid.h $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-04-29 01:03:22 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* Header file for asteroids
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:21 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -182,7 +185,7 @@ typedef struct asteroid_info {
|
||||
float outer_rad; // radius at which no area effect damage is applied
|
||||
float damage; // maximum damage applied from area effect explosion
|
||||
float blast; // maximum blast impulse from area effect explosion
|
||||
float initial_hull_strength; // starting strength of asteroid
|
||||
float initial_asteroid_strength; // starting strength of asteroid
|
||||
polymodel *modelp[MAX_ASTEROID_POFS];
|
||||
int model_num[MAX_ASTEROID_POFS];
|
||||
} asteroid_info;
|
||||
|
||||
@@ -9,13 +9,42 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Bmpman/BmpMan.cpp $
|
||||
* $Revision: 2.11 $
|
||||
* $Date: 2003-01-19 01:07:41 $
|
||||
*
|
||||
* $Revision: 2.15 $
|
||||
* $Date: 2003-08-16 03:52:22 $
|
||||
* $Author: bobboau $
|
||||
*
|
||||
* Code to load and manage all bitmaps for the game
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.14 2003/08/12 03:18:32 bobboau
|
||||
* Specular 'shine' mapping;
|
||||
* useing a phong lighting model I have made specular highlights
|
||||
* that are mapped to the model,
|
||||
* rendering them is still slow, but they look real purdy
|
||||
*
|
||||
* also 4 new (untested) comand lines, the XX is a floating point value
|
||||
* -spec_exp XX
|
||||
* the n value, you can set this from 0 to 200 (actualy more than that, but this is the recomended range), it will make the highlights bigger or smaller, defalt is 16.0 so start playing around there
|
||||
* -spec_point XX
|
||||
* -spec_static XX
|
||||
* -spec_tube XX
|
||||
* these are factors for the three diferent types of lights that FS uses, defalt is 1.0,
|
||||
* static is the local stars,
|
||||
* point is weapons/explosions/warp in/outs,
|
||||
* tube is beam weapons,
|
||||
* for thouse of you who think any of these lights are too bright you can configure them you're self for personal satisfaction
|
||||
*
|
||||
* Revision 2.13 2003/06/07 21:08:09 phreak
|
||||
* bmp_gfx_get_components now works with 32 bit opengl
|
||||
*
|
||||
* Revision 2.12 2003/03/18 10:07:00 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
*
|
||||
* Revision 2.11 2003/01/19 01:07:41 bobboau
|
||||
* redid the way glowmaps are handeled, you now must set the global int GLOWMAP (no longer an array) before you render a poly that uses a glow map then set GLOWMAP to -1 when you're done with, fixed a few other misc bugs it
|
||||
*
|
||||
* Revision 2.10 2003/01/18 19:55:16 phreak
|
||||
* fixed around the bmpman system to now accept compressed textures
|
||||
*
|
||||
@@ -42,6 +71,27 @@
|
||||
* Revision 2.3 2002/11/18 21:27:13 phreak
|
||||
* added bm_select_components functions for OpenGL -phreak
|
||||
*
|
||||
*
|
||||
* Revision 2.2.2.12 2002/11/04 16:04:20 randomtiger
|
||||
*
|
||||
* Tided up some bumpman stuff and added a few function points to gr_screen. - RT
|
||||
*
|
||||
* Revision 2.2.2.11 2002/11/04 03:02:28 randomtiger
|
||||
*
|
||||
* I have made some fairly drastic changes to the bumpman system. Now functionality can be engine dependant.
|
||||
* This is so D3D8 can call its own loading code that will allow good efficient loading and use of textures that it desparately needs without
|
||||
* turning bumpman.cpp into a total hook infested nightmare. Note the new bumpman code is still relying on a few of the of the old functions and all of the old bumpman arrays.
|
||||
*
|
||||
* I have done this by adding to the gr_screen list of function pointers that are set up by the engines init functions.
|
||||
* I have named the define calls the same name as the original 'bm_' functions so that I havent had to change names all through the code.
|
||||
*
|
||||
* Rolled back to an old version of bumpman and made a few changes.
|
||||
* Added new files: grd3dbumpman.cpp and .h
|
||||
* Moved the bitmap init function to after the 3D engine is initialised
|
||||
* Added includes where needed
|
||||
* Disabled (for now) the D3D8 TGA loading - RT
|
||||
*
|
||||
*
|
||||
* Revision 2.2 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -529,7 +579,10 @@
|
||||
extern int Texture_compression_enabled;
|
||||
|
||||
int GLOWMAP = -1;
|
||||
int SPECMAP = -1;
|
||||
int ENVMAP = -1;
|
||||
|
||||
#define MAX_BMAP_SECTION_SIZE 256
|
||||
|
||||
// keep this defined to use per-ship nondarkening pixels
|
||||
#define BMPMAN_SPECIAL_NONDARK
|
||||
@@ -545,53 +598,6 @@ int bm_inited = 0;
|
||||
#define BM_TYPE_DXT3 6 // 32 bit with 4 bit alpha (compressed)
|
||||
#define BM_TYPE_DXT5 7 // 32 bit with 8 bit alpha (compressed)
|
||||
|
||||
typedef union bm_extra_info {
|
||||
struct {
|
||||
// Stuff needed for animations
|
||||
int first_frame; // used for animations -- points to index of first frame
|
||||
ubyte num_frames; // used for animation -- number of frames in the animation
|
||||
ubyte fps; // used for animation -- frames per second
|
||||
} ani;
|
||||
struct {
|
||||
// Stuff needed for user bitmaps
|
||||
void *data; // For user bitmaps, this is where the data comes from
|
||||
ubyte bpp; // For user bitmaps, this is what format the data is
|
||||
ubyte flags; // Flags passed to bm_create
|
||||
} user;
|
||||
} bm_extra_info;
|
||||
|
||||
typedef struct bitmap_entry {
|
||||
// identification
|
||||
char filename[MAX_FILENAME_LEN]; // filename for this bitmap
|
||||
|
||||
uint signature; // a unique signature identifying the data
|
||||
uint palette_checksum; // checksum used to be sure bitmap is in current palette
|
||||
int handle; // Handle = id*MAX_BITMAPS + bitmapnum
|
||||
int last_used; // When this bitmap was last used
|
||||
|
||||
ubyte type; // PCX, USER, ANI, etc
|
||||
signed char ref_count; // Number of locks on bitmap. Can't unload unless ref_count is 0.
|
||||
|
||||
// Stuff to keep track of usage
|
||||
ubyte preloaded; // If set, then this was loaded from the lst file
|
||||
ubyte used_flags; // What flags it was accessed thru
|
||||
|
||||
// Bitmap info
|
||||
bitmap bm;
|
||||
|
||||
// Data for animations and user bitmaps
|
||||
bm_extra_info info;
|
||||
|
||||
int mem_taken; //how much memory it takes up
|
||||
#ifdef BMPMAN_NDEBUG
|
||||
// bookeeping
|
||||
ubyte used_last_frame; // If set, then it was used last frame
|
||||
ubyte used_this_frame; // If set, then it was used this frame
|
||||
int data_size; // How much data this bitmap uses
|
||||
int used_count; // How many times it was accessed
|
||||
#endif
|
||||
} bitmap_entry;
|
||||
|
||||
uint Bm_next_signature = 0x1234;
|
||||
|
||||
bitmap_entry bm_bitmaps[MAX_BITMAPS];
|
||||
@@ -638,7 +644,7 @@ void bm_set_low_mem( int mode )
|
||||
}
|
||||
|
||||
|
||||
static int bm_get_next_handle()
|
||||
int bm_gfx_get_next_handle()
|
||||
{
|
||||
int n = bm_next_handle;
|
||||
bm_next_handle++;
|
||||
@@ -752,7 +758,7 @@ static void *bm_malloc( int n, int size )
|
||||
return malloc(size);
|
||||
}
|
||||
|
||||
void bm_close()
|
||||
void bm_gfx_close()
|
||||
{
|
||||
int i;
|
||||
if ( bm_inited ) {
|
||||
@@ -764,7 +770,7 @@ void bm_close()
|
||||
}
|
||||
|
||||
|
||||
void bm_init()
|
||||
void bm_gfx_init()
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -797,7 +803,7 @@ void bm_init()
|
||||
// Returns number of bytes of bitmaps locked this frame
|
||||
// ntotal = number of bytes of bitmaps locked this frame
|
||||
// nnew = number of bytes of bitmaps locked this frame that weren't locked last frame
|
||||
void bm_get_frame_usage(int *ntotal, int *nnew)
|
||||
void bm_gfx_get_frame_usage(int *ntotal, int *nnew)
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -817,7 +823,7 @@ void bm_get_frame_usage(int *ntotal, int *nnew)
|
||||
|
||||
}
|
||||
#else
|
||||
void bm_get_frame_usage(int *ntotal, int *nnew)
|
||||
void bm_gfx_get_frame_usage(int *ntotal, int *nnew)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
@@ -852,7 +858,7 @@ void bm_calc_sections(bitmap *be)
|
||||
// bpp you can pass in is 32 or 8. On success, it returns the
|
||||
// bitmap number. You cannot free that RAM until bm_release
|
||||
// is called on that bitmap.
|
||||
int bm_create( int bpp, int w, int h, void * data, int flags )
|
||||
int bm_gfx_create( int bpp, int w, int h, void * data, int flags )
|
||||
{
|
||||
int i, n, first_slot = MAX_BITMAPS;
|
||||
|
||||
@@ -952,7 +958,7 @@ int bm_load_sub(char *real_filename, char *ext, int *handle)
|
||||
// the bitmap. On success, it returns the bitmap
|
||||
// number. Function doesn't acutally load the data, only
|
||||
// width, height, and possibly flags.
|
||||
int bm_load( char * real_filename )
|
||||
int bm_gfx_load( char * real_filename )
|
||||
{
|
||||
int i, n, first_slot = MAX_BITMAPS;
|
||||
int w, h, bpp;
|
||||
@@ -1143,7 +1149,7 @@ int bm_load( char * real_filename )
|
||||
// special load function. basically allows you to load a bitmap which already exists (by filename).
|
||||
// this is useful because in some cases we need to have a bitmap which is locked in screen format
|
||||
// _and_ texture format, such as pilot pics and squad logos
|
||||
int bm_load_duplicate(char *filename)
|
||||
int bm_gfx_load_duplicate(char *filename)
|
||||
{
|
||||
int ret;
|
||||
|
||||
@@ -1227,7 +1233,7 @@ static int find_block_of(int n)
|
||||
//
|
||||
// returns: bitmap number of first frame in the animation
|
||||
//
|
||||
int bm_load_animation( char *real_filename, int *nframes, int *fps, int can_drop_frames)
|
||||
int bm_gfx_load_animation( char *real_filename, int *nframes, int *fps, int can_drop_frames)
|
||||
{
|
||||
int i, n;
|
||||
anim the_anim;
|
||||
@@ -1336,7 +1342,7 @@ int bm_load_animation( char *real_filename, int *nframes, int *fps, int can_drop
|
||||
}
|
||||
|
||||
// Gets info. w,h,or flags,nframes or fps can be NULL if you don't care.
|
||||
void bm_get_info( int handle, int *w, int * h, ubyte * flags, int *nframes, int *fps, bitmap_section_info **sections )
|
||||
void bm_gfx_get_info( int handle, int *w, int * h, ubyte * flags, int *nframes, int *fps, bitmap_section_info **sections )
|
||||
{
|
||||
bitmap * bmp;
|
||||
|
||||
@@ -1805,7 +1811,7 @@ MONITOR( SizeBitmapPage );
|
||||
// that can be accessed until you call bm_unlock. Only lock
|
||||
// a bitmap when you need it! This will convert it into the
|
||||
// appropriate format also.
|
||||
bitmap * bm_lock( int handle, ubyte bpp, ubyte flags )
|
||||
bitmap * bm_gfx_lock( int handle, ubyte bpp, ubyte flags )
|
||||
{
|
||||
bitmap *bmp;
|
||||
bitmap_entry *be;
|
||||
@@ -1973,7 +1979,7 @@ bitmap * bm_lock( int handle, ubyte bpp, ubyte flags )
|
||||
// Decrements the ref_count member of the bitmap_entry struct. A bitmap can only be unloaded
|
||||
// when the ref_count is 0.
|
||||
//
|
||||
void bm_unlock( int handle )
|
||||
void bm_gfx_unlock( int handle )
|
||||
{
|
||||
bitmap_entry *be;
|
||||
bitmap *bmp;
|
||||
@@ -2006,7 +2012,7 @@ char *bm_get_filename(int handle)
|
||||
return bm_bitmaps[n].filename;
|
||||
}
|
||||
|
||||
void bm_get_palette(int handle, ubyte *pal, char *name)
|
||||
void bm_gfx_get_palette(int handle, ubyte *pal, char *name)
|
||||
{
|
||||
char *filename;
|
||||
int w,h;
|
||||
@@ -2033,7 +2039,7 @@ void bm_get_palette(int handle, ubyte *pal, char *name)
|
||||
//
|
||||
// returns: nothing
|
||||
|
||||
void bm_release(int handle)
|
||||
void bm_gfx_release(int handle)
|
||||
{
|
||||
bitmap_entry *be;
|
||||
|
||||
@@ -2104,7 +2110,7 @@ void bm_release(int handle)
|
||||
// returns: 0 => unload failed
|
||||
// 1 => unload successful
|
||||
//
|
||||
int bm_unload( int handle )
|
||||
int bm_gfx_unload( int handle )
|
||||
{
|
||||
bitmap_entry *be;
|
||||
bitmap *bmp;
|
||||
@@ -2135,7 +2141,7 @@ int bm_unload( int handle )
|
||||
|
||||
|
||||
// unload all used bitmaps
|
||||
void bm_unload_all()
|
||||
void bm_gfx_unload_all()
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -2197,7 +2203,7 @@ DCF(bmpman,"Shows/changes bitmap caching parameters and usage")
|
||||
extern int OGL_inited;
|
||||
|
||||
// Marks a texture as being used for this level
|
||||
void bm_page_in_texture( int bitmapnum, int nframes )
|
||||
void bm_gfx_page_in_texture( int bitmapnum, int nframes )
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<nframes;i++ ) {
|
||||
@@ -2235,7 +2241,7 @@ void bm_page_in_texture( int bitmapnum, int nframes )
|
||||
|
||||
// Marks a texture as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_page_in_nondarkening_texture( int bitmapnum, int nframes )
|
||||
void bm_gfx_page_in_nondarkening_texture( int bitmapnum, int nframes )
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<nframes;i++ ) {
|
||||
@@ -2254,7 +2260,7 @@ void bm_page_in_nondarkening_texture( int bitmapnum, int nframes )
|
||||
// marks a texture as being a transparent textyre used for this level
|
||||
// Marks a texture as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_page_in_xparent_texture( int bitmapnum, int nframes)
|
||||
void bm_gfx_page_in_xparent_texture( int bitmapnum, int nframes)
|
||||
{
|
||||
int i;
|
||||
for (i=0; i<nframes;i++ ) {
|
||||
@@ -2291,7 +2297,7 @@ void bm_page_in_xparent_texture( int bitmapnum, int nframes)
|
||||
}
|
||||
|
||||
// Marks an aabitmap as being used for this level
|
||||
void bm_page_in_aabitmap( int bitmapnum, int nframes )
|
||||
void bm_gfx_page_in_aabitmap( int bitmapnum, int nframes )
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -2311,7 +2317,7 @@ void bm_page_in_aabitmap( int bitmapnum, int nframes )
|
||||
|
||||
|
||||
// Tell the bitmap manager to start keeping track of what bitmaps are used where.
|
||||
void bm_page_in_start()
|
||||
void bm_gfx_page_in_start()
|
||||
{
|
||||
int i;
|
||||
|
||||
@@ -2336,7 +2342,7 @@ extern void gr_d3d_preload_init();
|
||||
extern int gr_d3d_preload(int bitmap_num, int is_aabitmap );
|
||||
#endif
|
||||
|
||||
void bm_page_in_stop()
|
||||
void bm_gfx_page_in_stop()
|
||||
{
|
||||
int i;
|
||||
int ship_info_index;
|
||||
@@ -2419,7 +2425,7 @@ void bm_page_in_stop()
|
||||
Bm_paging = 0;
|
||||
}
|
||||
|
||||
int bm_get_cache_slot( int bitmap_id, int separate_ani_frames )
|
||||
int bm_gfx_get_cache_slot( int bitmap_id, int separate_ani_frames )
|
||||
{
|
||||
int n = bitmap_id % MAX_BITMAPS;
|
||||
|
||||
@@ -2439,7 +2445,7 @@ int bm_get_cache_slot( int bitmap_id, int separate_ani_frames )
|
||||
}
|
||||
|
||||
// convert a 24 bit value to a 16 bit value
|
||||
void bm_24_to_16(int bit_24, ushort *bit_16)
|
||||
void bm_gfx_24_to_16(int bit_24, ushort *bit_16)
|
||||
{
|
||||
ubyte *pixel = (ubyte*)&bit_24;
|
||||
ubyte alpha = 1;
|
||||
@@ -2726,16 +2732,14 @@ void bm_set_components(ubyte *pixel, ubyte *rv, ubyte *gv, ubyte *bv, ubyte *av)
|
||||
*/
|
||||
|
||||
// get the rgba components of a pixel, any of the parameters can be NULL
|
||||
void bm_get_components(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a)
|
||||
void bm_gfx_get_components(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a)
|
||||
{
|
||||
int bit_32 = 0;
|
||||
|
||||
#ifndef NO_DIRECT3D
|
||||
// pick a byte size - 32 bits only if 32 bit mode d3d and screen format
|
||||
if(D3D_32bit && (Gr_current_red == &Gr_red)){
|
||||
if((gr_screen.bits_per_pixel==32) && (Gr_current_red == &Gr_red)){
|
||||
bit_32 = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
if(r != NULL){
|
||||
if(bit_32){
|
||||
@@ -2816,7 +2820,7 @@ void bm_get_filename(int bitmapnum, char *filename)
|
||||
}
|
||||
|
||||
// given a bitmap and a section, return the size (w, h)
|
||||
void bm_get_section_size(int bitmapnum, int sx, int sy, int *w, int *h)
|
||||
void bm_gfx_get_section_size(int bitmapnum, int sx, int sy, int *w, int *h)
|
||||
{
|
||||
int bw, bh;
|
||||
bitmap_section_info *sections;
|
||||
|
||||
+168
-30
@@ -9,13 +9,38 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Bmpman/BmpMan.h $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-01-19 01:07:41 $
|
||||
*
|
||||
* $Revision: 2.6 $
|
||||
* $Date: 2003-08-16 03:52:22 $
|
||||
* $Author: bobboau $
|
||||
*
|
||||
* Prototypes for Bitmap Manager functions
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.5 2003/08/12 03:18:32 bobboau
|
||||
* Specular 'shine' mapping;
|
||||
* useing a phong lighting model I have made specular highlights
|
||||
* that are mapped to the model,
|
||||
* rendering them is still slow, but they look real purdy
|
||||
*
|
||||
* also 4 new (untested) comand lines, the XX is a floating point value
|
||||
* -spec_exp XX
|
||||
* the n value, you can set this from 0 to 200 (actualy more than that, but this is the recomended range), it will make the highlights bigger or smaller, defalt is 16.0 so start playing around there
|
||||
* -spec_point XX
|
||||
* -spec_static XX
|
||||
* -spec_tube XX
|
||||
* these are factors for the three diferent types of lights that FS uses, defalt is 1.0,
|
||||
* static is the local stars,
|
||||
* point is weapons/explosions/warp in/outs,
|
||||
* tube is beam weapons,
|
||||
* for thouse of you who think any of these lights are too bright you can configure them you're self for personal satisfaction
|
||||
*
|
||||
* Revision 2.4 2003/03/18 10:07:00 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.3 2003/01/19 01:07:41 bobboau
|
||||
* redid the way glowmaps are handeled, you now must set the global int GLOWMAP (no longer an array) before you render a poly that uses a glow map then set GLOWMAP to -1 when you're done with, fixed a few other misc bugs it
|
||||
*
|
||||
* Revision 2.2 2003/01/18 19:55:16 phreak
|
||||
* fixed around the bmpman system to now accept compressed textures
|
||||
*
|
||||
@@ -24,6 +49,52 @@
|
||||
* made some better error mesages while parseing weapons and ships tbls,
|
||||
* and... oh ya, added glow mapping
|
||||
*
|
||||
* Revision 2.0.2.10 2002/11/04 21:24:59 randomtiger
|
||||
*
|
||||
* When running in D3D all ani's are memory mapped for speed, this takes up more memory but stops gametime locking of textures which D3D8 hates.
|
||||
* Added new command line tag Cmdline_d3dlowmem for people who dont want to make use of this because they have no memory.
|
||||
* Cleaned up some more texture stuff enabled console debug for D3D.
|
||||
*
|
||||
* Revision 2.0.2.9 2002/11/04 16:04:20 randomtiger
|
||||
*
|
||||
* Tided up some bumpman stuff and added a few function points to gr_screen. - RT
|
||||
*
|
||||
* Revision 2.0.2.8 2002/11/04 03:02:28 randomtiger
|
||||
*
|
||||
* I have made some fairly drastic changes to the bumpman system. Now functionality can be engine dependant.
|
||||
* This is so D3D8 can call its own loading code that will allow good efficient loading and use of textures that it desparately needs without
|
||||
* turning bumpman.cpp into a total hook infested nightmare. Note the new bumpman code is still relying on a few of the of the old functions and all of the old bumpman arrays.
|
||||
*
|
||||
* I have done this by adding to the gr_screen list of function pointers that are set up by the engines init functions.
|
||||
* I have named the define calls the same name as the original 'bm_' functions so that I havent had to change names all through the code.
|
||||
*
|
||||
* Rolled back to an old version of bumpman and made a few changes.
|
||||
* Added new files: grd3dbumpman.cpp and .h
|
||||
* Moved the bitmap init function to after the 3D engine is initialised
|
||||
* Added includes where needed
|
||||
* Disabled (for now) the D3D8 TGA loading - RT
|
||||
*
|
||||
* Revision 2.0.2.7 2002/10/26 01:24:22 randomtiger
|
||||
* Fixed debug bitmap compiling bug.
|
||||
* Fixed tga bug. - RT
|
||||
*
|
||||
* Revision 2.0.2.6 2002/10/22 17:46:17 randomtiger
|
||||
* Fixed new TGA code texturing bug. - RT
|
||||
*
|
||||
* Revision 2.0.2.5 2002/10/21 16:33:40 randomtiger
|
||||
* Added D3D only 32 bit TGA functionality. Will load a texture as big as your graphics card allows. Code not finished yet and will forge the beginnings of the new texture system. - RT
|
||||
*
|
||||
* Revision 2.0.2.4 2002/10/19 23:56:39 randomtiger
|
||||
* Changed generic bitmap code to allow maximum dimensions to be determined by 3D's engines maximum texture size query.
|
||||
* Defaults to 256 as it was before. Also added base code for reworking the texture code to be more efficient. - RT
|
||||
*
|
||||
* Revision 2.0.2.3 2002/10/02 11:40:19 randomtiger
|
||||
* Bmpmap has been reverted to an old non d3d8 version.
|
||||
* All d3d8 code is now in the proper place.
|
||||
* PCX code is now working to an extent. Problems with alpha though.
|
||||
* Ani's work slowly with alpha problems.
|
||||
* Also I have done a bit of tidying - RT
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:21 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -165,17 +236,82 @@
|
||||
#ifndef _BMPMAN_H
|
||||
#define _BMPMAN_H
|
||||
|
||||
#ifdef FS2_DEMO
|
||||
#define MAX_BITMAPS 3500
|
||||
#else
|
||||
#define MAX_BITMAPS 3500 // How many bitmaps the game can handle
|
||||
#ifndef NDEBUG
|
||||
#define BMPMAN_NDEBUG
|
||||
#endif
|
||||
|
||||
#define MAX_BITMAPS 3500 // How many bitmaps the game can handle
|
||||
|
||||
// 16 bit pixel formats
|
||||
#define BM_PIXEL_FORMAT_ARGB 0 // for glide - can assume certain things, like 1555 LFB writes, whee!
|
||||
#define BM_PIXEL_FORMAT_D3D 1 // d3d - card dependant. booo!
|
||||
#define BM_PIXEL_FORMAT_ARGB_D3D 2 // this card has nice 1555 textures like Glide - ahhhhh!
|
||||
|
||||
#define BM_TYPE_NONE 0
|
||||
#define BM_TYPE_PCX 1
|
||||
#define BM_TYPE_USER 2
|
||||
#define BM_TYPE_ANI 3 // in-house ANI format
|
||||
#define BM_TYPE_TGA 4 // 16 bit targa
|
||||
|
||||
/// Moved from cpp file ///////////////////
|
||||
// Consider these 'protected' structures and functions that should only be used by special bitmap functions
|
||||
|
||||
typedef union bm_extra_info {
|
||||
struct {
|
||||
// Stuff needed for animations
|
||||
int first_frame; // used for animations -- points to index of first frame
|
||||
ubyte num_frames; // used for animation -- number of frames in the animation
|
||||
ubyte fps; // used for animation -- frames per second
|
||||
} ani;
|
||||
struct {
|
||||
// Stuff needed for user bitmaps
|
||||
void *data; // For user bitmaps, this is where the data comes from
|
||||
ubyte bpp; // For user bitmaps, this is what format the data is
|
||||
ubyte flags; // Flags passed to bm_create
|
||||
} user;
|
||||
} bm_extra_info;
|
||||
|
||||
typedef struct bitmap_entry {
|
||||
// identification
|
||||
char filename[MAX_FILENAME_LEN]; // filename for this bitmap
|
||||
|
||||
uint signature; // a unique signature identifying the data
|
||||
uint palette_checksum; // checksum used to be sure bitmap is in current palette
|
||||
int handle; // Handle = id*MAX_BITMAPS + bitmapnum
|
||||
int last_used; // When this bitmap was last used
|
||||
|
||||
ubyte type; // PCX, USER, ANI, etc
|
||||
signed char ref_count; // Number of locks on bitmap. Can't unload unless ref_count is 0.
|
||||
|
||||
// compressed bitmap stuff (.dds) - RT please take a look at this and tell me if we really need it
|
||||
int mem_taken; // How much memory does this bitmap use? - UnknownPlayer
|
||||
|
||||
// Stuff to keep track of usage
|
||||
ubyte preloaded; // If set, then this was loaded from the lst file
|
||||
ubyte used_flags; // What flags it was accessed thru
|
||||
|
||||
// Bitmap info
|
||||
bitmap bm;
|
||||
|
||||
// Data for animations and user bitmaps
|
||||
bm_extra_info info;
|
||||
|
||||
#ifdef BMPMAN_NDEBUG
|
||||
// bookeeping
|
||||
ubyte used_last_frame; // If set, then it was used last frame
|
||||
ubyte used_this_frame; // If set, then it was used this frame
|
||||
int data_size; // How much data this bitmap uses
|
||||
int used_count; // How many times it was accessed
|
||||
#endif
|
||||
|
||||
} bitmap_entry;
|
||||
|
||||
void bm_gfx_init();
|
||||
void bm_gfx_close();
|
||||
int bm_gfx_get_cache_slot( int bitmap_id, int separate_ani_frames );
|
||||
|
||||
int bm_gfx_get_next_handle();
|
||||
|
||||
// 16 bit pixel formats
|
||||
extern int Bm_pixel_format;
|
||||
|
||||
@@ -188,12 +324,12 @@ extern int bm_texture_ram;
|
||||
// It returns a negative number if it couldn't load
|
||||
// the bitmap. On success, it returns the bitmap
|
||||
// number.
|
||||
int bm_load(char * filename);
|
||||
int bm_gfx_load(char * filename);
|
||||
|
||||
// special load function. basically allows you to load a bitmap which already exists (by filename).
|
||||
// this is useful because in some cases we need to have a bitmap which is locked in screen format
|
||||
// _and_ texture format, such as pilot pics and squad logos
|
||||
int bm_load_duplicate(char *filename);
|
||||
int bm_gfx_load_duplicate(char *filename);
|
||||
|
||||
// Creates a bitmap that exists in RAM somewhere, instead
|
||||
// of coming from a disk file. You pass in a pointer to a
|
||||
@@ -203,29 +339,29 @@ int bm_load_duplicate(char *filename);
|
||||
// On success, it returns the bitmap number. You cannot
|
||||
// free that RAM until bm_release is called on that bitmap.
|
||||
// See example at bottom of this file
|
||||
int bm_create( int bpp, int w, int h, void * data, int flags = 0);
|
||||
int bm_gfx_create( int bpp, int w, int h, void * data, int flags = 0);
|
||||
|
||||
// Frees up a bitmap's data, but bitmap number 'n' can
|
||||
// still be used, it will just have to be paged in next
|
||||
// time it is locked.
|
||||
int bm_unload( int n );
|
||||
int bm_gfx_unload( int n );
|
||||
|
||||
// Frees up a bitmap's data, and it's slot, so bitmap
|
||||
// number 'n' cannot be used anymore, and bm_load or
|
||||
// bm_create might reuse the slot.
|
||||
void bm_release(int n);
|
||||
void bm_gfx_release(int n);
|
||||
|
||||
// This loads a bitmap sequence so we can draw with it later.
|
||||
// It returns a negative number if it couldn't load
|
||||
// the bitmap. On success, it returns the bitmap
|
||||
// number of the first frame and nframes is set.
|
||||
extern int bm_load_animation( char * filename, int * nframes, int *fps = NULL, int can_drop_frames = 0 );
|
||||
extern int bm_gfx_load_animation( char * filename, int * nframes, int *fps = NULL, int can_drop_frames = 0 );
|
||||
|
||||
// This locks down a bitmap and returns a pointer to a bitmap
|
||||
// that can be accessed until you call bm_unlock. Only lock
|
||||
// a bitmap when you need it! This will convert it into the
|
||||
// appropriate format also.
|
||||
extern bitmap * bm_lock( int bitmapnum, ubyte bpp, ubyte flags );
|
||||
extern bitmap * bm_gfx_lock( int bitmapnum, ubyte bpp, ubyte flags );
|
||||
|
||||
// The signature is a field that gets filled in with
|
||||
// a unique signature for each bitmap. The signature for each bitmap
|
||||
@@ -233,32 +369,32 @@ extern bitmap * bm_lock( int bitmapnum, ubyte bpp, ubyte flags );
|
||||
extern uint bm_get_signature( int bitmapnum);
|
||||
|
||||
// Unlocks a bitmap
|
||||
extern void bm_unlock( int bitmapnum );
|
||||
extern void bm_gfx_unlock( int bitmapnum );
|
||||
|
||||
// Gets info. w,h,or flags,nframes or fps can be NULL if you don't care.
|
||||
extern void bm_get_info( int bitmapnum, int *w=NULL, int * h=NULL, ubyte * flags=NULL, int *nframes=NULL, int *fps=NULL, bitmap_section_info **sections = NULL );
|
||||
extern void bm_gfx_get_info( int bitmapnum, int *w=NULL, int * h=NULL, ubyte * flags=NULL, int *nframes=NULL, int *fps=NULL, bitmap_section_info **sections = NULL );
|
||||
|
||||
// get filename
|
||||
extern void bm_get_filename(int bitmapnum, char *filename);
|
||||
extern void bm_get_filename(int bitmapnum, char *filename);
|
||||
|
||||
// resyncs all the bitmap palette
|
||||
extern void bm_update();
|
||||
|
||||
// call to load all data for all bitmaps that have been requested to be loaded
|
||||
extern void bm_load_all();
|
||||
extern void bm_unload_all();
|
||||
extern void bm_gfx_load_all();
|
||||
extern void bm_gfx_unload_all();
|
||||
|
||||
// call to get the palette for a bitmap
|
||||
extern void bm_get_palette(int n, ubyte *pal, char *name);
|
||||
void bm_gfx_get_palette(int n, ubyte *pal, char *name);
|
||||
|
||||
// Hacked function to get a pixel from a bitmap.
|
||||
// Only works good in 8bpp mode.
|
||||
void bm_get_pixel( int bitmap, float u, float v, ubyte *r, ubyte *g, ubyte *b );
|
||||
void bm_gfx_get_pixel( int bitmap, float u, float v, ubyte *r, ubyte *g, ubyte *b );
|
||||
|
||||
// Returns number of bytes of bitmaps locked this frame
|
||||
// ntotal = number of bytes of bitmaps locked this frame
|
||||
// nnew = number of bytes of bitmaps locked this frame that weren't locked last frame
|
||||
void bm_get_frame_usage(int *ntotal, int *nnew);
|
||||
void bm_gfx_get_frame_usage(int *ntotal, int *nnew);
|
||||
|
||||
/*
|
||||
* Example on using bm_create
|
||||
@@ -305,28 +441,28 @@ void bm_get_frame_usage(int *ntotal, int *nnew);
|
||||
// Paging stuff
|
||||
//============================================================================
|
||||
|
||||
void bm_page_in_start();
|
||||
void bm_page_in_stop();
|
||||
void bm_gfx_page_in_start();
|
||||
void bm_gfx_page_in_stop();
|
||||
|
||||
// Paging code in a library should call these functions
|
||||
// in its page in function.
|
||||
|
||||
// Marks a texture as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_page_in_texture( int bitmapnum, int num_frames=1 );
|
||||
void bm_gfx_page_in_texture( int bitmapnum, int num_frames=1 );
|
||||
|
||||
// Marks a texture as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_page_in_nondarkening_texture( int bitmap, int num_frames=1 );
|
||||
void bm_gfx_page_in_nondarkening_texture( int bitmap, int num_frames=1 );
|
||||
|
||||
// marks a texture as being a transparent textyre used for this level
|
||||
// Marks a texture as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_page_in_xparent_texture( int bitmapnum, int num_frames=1 );
|
||||
void bm_gfx_page_in_xparent_texture( int bitmapnum, int num_frames=1 );
|
||||
|
||||
// Marks an aabitmap as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_page_in_aabitmap( int bitmapnum, int num_frames=1 );
|
||||
void bm_gfx_page_in_aabitmap( int bitmapnum, int num_frames=1 );
|
||||
|
||||
//
|
||||
// Mode: 0 = High memory
|
||||
@@ -341,7 +477,7 @@ void BM_SELECT_TEX_FORMAT();
|
||||
void BM_SELECT_ALPHA_TEX_FORMAT();
|
||||
|
||||
// convert a 24 bit value to a 16 bit value
|
||||
void bm_24_to_16(int bit_24, ushort *bit_16);
|
||||
void bm_gfx_24_to_16(int bit_24, ushort *bit_16);
|
||||
|
||||
// set the rgba components of a pixel, any of the parameters can be NULL
|
||||
extern void (*bm_set_components)(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
|
||||
@@ -353,16 +489,18 @@ void bm_set_components_argb_d3d_16_tex(ubyte *pixel, ubyte *r, ubyte *g, ubyte *
|
||||
void bm_set_components_argb_d3d_32_tex(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
|
||||
|
||||
// get the rgba components of a pixel, any of the parameters can be NULL
|
||||
void bm_get_components(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
|
||||
void bm_gfx_get_components(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
|
||||
|
||||
//============================================================================
|
||||
// section info stuff
|
||||
//============================================================================
|
||||
|
||||
// given a bitmap and a section, return the size (w, h)
|
||||
void bm_get_section_size(int bitmapnum, int sx, int sy, int *w, int *h);
|
||||
void bm_gfx_get_section_size(int bitmapnum, int sx, int sy, int *w, int *h);
|
||||
|
||||
extern int GLOWMAP; //this holds a reference to a map that is a fully lit version of it's index -Bobboau
|
||||
extern int SPECMAP; //this holds a reference to a map that is for specular mapping -Bobboau
|
||||
extern int ENVMAP; //this holds a reference to a map that is for environment mapping -Bobboau
|
||||
|
||||
int bm_is_compressed(int num);
|
||||
int bm_get_size(int num);
|
||||
|
||||
@@ -9,13 +9,31 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/CFile/cfile.cpp $
|
||||
* $Revision: 2.7 $
|
||||
* $Date: 2002-11-10 16:29:53 $
|
||||
* $Author: DTP $
|
||||
* $Revision: 2.12 $
|
||||
* $Date: 2003-08-27 01:36:22 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* Utilities for operating on files
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.11 2003/08/25 04:39:17 Goober5000
|
||||
* fixed unreachable code
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.10 2003/08/22 07:35:07 bobboau
|
||||
* specular code should be bugless now,
|
||||
* cell shadeing has been added activated via the comand line '-cell',
|
||||
* 3D shockwave models, and a transparency method I'm calling edge and center alpha that could be usefull for other things, ask for details
|
||||
*
|
||||
* Revision 2.9 2003/08/20 08:12:08 wmcoolmon
|
||||
* Made cfile_delete return 0 on failure, 1 on success
|
||||
*
|
||||
* Revision 2.8 2003/03/18 10:07:00 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.7 2002/11/10 16:29:53 DTP
|
||||
* -DTP reworked mod support,
|
||||
*
|
||||
* Revision 2.6 2002/11/04 08:32:38 DTP
|
||||
* Made sure, that VP and Plain files dont get added twice to the search order. Side-effect of Mod support.
|
||||
*
|
||||
@@ -26,6 +44,12 @@
|
||||
* DTP; started basic implementation of mod-support
|
||||
* plain files only for now. fs2_open.exe -mod X will look for files in fs2/ X /all-legal-subdirectories. no checking/creating dirs yet. directories must be there.
|
||||
*
|
||||
* Revision 2.3.2.1 2002/09/24 18:56:41 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.3 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -624,8 +648,8 @@ char *cf_add_ext(char *filename, char *ext)
|
||||
return path;
|
||||
}
|
||||
|
||||
// Deletes a file.
|
||||
void cf_delete( char *filename, int dir_type )
|
||||
// Deletes a file. Returns 0 if an error occurs, 1 on success
|
||||
int cf_delete( char *filename, int dir_type )
|
||||
{
|
||||
char longname[MAX_PATH_LEN];
|
||||
|
||||
@@ -637,9 +661,21 @@ void cf_delete( char *filename, int dir_type )
|
||||
if (fp) {
|
||||
// delete the file
|
||||
fclose(fp);
|
||||
_unlink(longname);
|
||||
if(_unlink(longname) == -1)
|
||||
{
|
||||
//ERROR - file is probably read only
|
||||
return 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//ERROR - file doesn't exist
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -667,8 +703,9 @@ int cf_exist( char *filename, int dir_type )
|
||||
|
||||
FILE *fp = fopen(longname, "rb");
|
||||
if (fp) {
|
||||
return 1;
|
||||
// Goober5000 - these were switched, causing the fclose to be unreachable
|
||||
fclose(fp);
|
||||
return 1;
|
||||
}
|
||||
|
||||
return 0;
|
||||
@@ -776,18 +813,12 @@ extern int game_cd_changed();
|
||||
|
||||
CFILE *cfopen(char *file_path, char *mode, int type, int dir_type, bool localize)
|
||||
{
|
||||
/* Bobboau, what is this doing here? 31 is way too short... - Goober5000
|
||||
if( strlen(file_path) > 31 )
|
||||
Error(LOCATION, "file name %s too long, \nmust be less than 31 charicters", file_path);*/
|
||||
|
||||
char longname[_MAX_PATH];
|
||||
|
||||
// nprintf(("CFILE", "CFILE -- trying to open %s\n", file_path ));
|
||||
// #if !defined(MULTIPLAYER_BETA_BUILD) && !defined(FS2_DEMO)
|
||||
|
||||
// we no longer need to do this, and on machines with crappy-ass drivers it can slow things down horribly.
|
||||
#if 0
|
||||
if ( game_cd_changed() ) {
|
||||
cfile_refresh();
|
||||
}
|
||||
#endif
|
||||
|
||||
//================================================
|
||||
// Check that all the parameters make sense
|
||||
Assert(file_path && strlen(file_path));
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/CFile/cfile.h $
|
||||
* $Revision: 2.6 $
|
||||
* $Date: 2002-11-10 16:29:53 $
|
||||
* $Author: DTP $
|
||||
* $Revision: 2.7 $
|
||||
* $Date: 2003-08-20 08:12:08 $
|
||||
* $Author: wmcoolmon $
|
||||
*
|
||||
* <insert description of file here>
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.6 2002/11/10 16:29:53 DTP
|
||||
* -DTP reworked mod support,
|
||||
*
|
||||
* Revision 2.5 2002/11/02 23:06:59 DTP
|
||||
* DOh,uhmm, define error again, this is getting to me.
|
||||
*
|
||||
@@ -479,8 +482,8 @@ int cflush(CFILE *cfile);
|
||||
// open a file. Once set, you can use minimum version numbers with the read functions.
|
||||
void cf_set_version( CFILE * cfile, int version );
|
||||
|
||||
// Deletes a file.
|
||||
void cf_delete( char *filename, int dir_type );
|
||||
// Deletes a file. Returns 0 on error, 1 if successful
|
||||
int cf_delete( char *filename, int dir_type );
|
||||
|
||||
// Same as _access function to read a file's access bits
|
||||
int cf_access( char *filename, int dir_type, int mode );
|
||||
|
||||
@@ -9,14 +9,17 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/CFile/CfileArchive.cpp $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-03-19 09:05:25 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* Low-level code for reading data out of large archive files or normal files. All
|
||||
* reads/seeks come through here.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.2 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.1 2002/07/29 19:17:21 penguin
|
||||
* added #ifdef _WIN32 around windows-specific system headers
|
||||
*
|
||||
@@ -119,7 +122,8 @@ void cf_init_lowlevel_read_code( CFILE * cfile, int offset, int size )
|
||||
}
|
||||
|
||||
#if defined(CHECK_POSITION) && !defined(NDEBUG)
|
||||
int raw_position = ftell(cb->fp) - cb->lib_offset;
|
||||
int raw_position;
|
||||
raw_position = ftell(cb->fp) - cb->lib_offset;
|
||||
Assert(raw_position == cb->raw_position);
|
||||
#endif
|
||||
}
|
||||
@@ -151,8 +155,9 @@ int cfeof(CFILE *cfile)
|
||||
Assert(cb->fp != NULL);
|
||||
|
||||
#if defined(CHECK_POSITION) && !defined(NDEBUG)
|
||||
int raw_position = ftell(cb->fp) - cb->lib_offset;
|
||||
Assert(raw_position == cb->raw_position);
|
||||
int raw_position;
|
||||
raw_position = ftell(cb->fp) - cb->lib_offset;
|
||||
Assert(raw_position == cb->raw_position);
|
||||
#endif
|
||||
|
||||
if (cb->raw_position >= cb->size ) {
|
||||
@@ -182,8 +187,9 @@ int cftell( CFILE * cfile )
|
||||
Assert(cb->fp != NULL);
|
||||
|
||||
#if defined(CHECK_POSITION) && !defined(NDEBUG)
|
||||
int raw_position = ftell(cb->fp) - cb->lib_offset;
|
||||
Assert(raw_position == cb->raw_position);
|
||||
int raw_position;
|
||||
raw_position = ftell(cb->fp) - cb->lib_offset;
|
||||
Assert(raw_position == cb->raw_position);
|
||||
#endif
|
||||
|
||||
return cb->raw_position;
|
||||
@@ -231,7 +237,8 @@ int cfseek( CFILE *cfile, int offset, int where )
|
||||
cb->raw_position = goal_position - cb->lib_offset;
|
||||
|
||||
#if defined(CHECK_POSITION) && !defined(NDEBUG)
|
||||
int tmp_offset = ftell(cb->fp) - cb->lib_offset;
|
||||
int tmp_offset;
|
||||
tmp_offset = ftell(cb->fp) - cb->lib_offset;
|
||||
Assert(tmp_offset==cb->raw_position);
|
||||
#endif
|
||||
|
||||
@@ -277,7 +284,8 @@ int cfread(void *buf, int elsize, int nelem, CFILE *cfile)
|
||||
}
|
||||
|
||||
#if defined(CHECK_POSITION) && !defined(NDEBUG)
|
||||
int tmp_offset = ftell(cb->fp) - cb->lib_offset;
|
||||
int tmp_offset;
|
||||
tmp_offset = ftell(cb->fp) - cb->lib_offset;
|
||||
Assert(tmp_offset==cb->raw_position);
|
||||
#endif
|
||||
|
||||
|
||||
@@ -9,9 +9,9 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/CFile/CfileSystem.cpp $
|
||||
* $Revision: 2.6 $
|
||||
* $Date: 2002-11-10 16:28:08 $
|
||||
* $Author: DTP $
|
||||
* $Revision: 2.8 $
|
||||
* $Date: 2003-09-14 18:32:41 $
|
||||
* $Author: wmcoolmon $
|
||||
*
|
||||
* Functions to keep track of and find files that can exist
|
||||
* on the harddrive, cd-rom, or in a pack file on either of those.
|
||||
@@ -20,6 +20,12 @@
|
||||
* all those locations, inherently enforcing precedence orders.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.7 2003/08/20 08:14:50 wmcoolmon
|
||||
* Modified find_file_location to speed up file loading.
|
||||
*
|
||||
* Revision 2.6 2002/11/10 16:28:08 DTP
|
||||
* -DTP reworked mod support,
|
||||
*
|
||||
* Revision 2.5 2002/10/30 06:29:45 DTP
|
||||
* doh!, used upper case in include, dont know how much it matters for *nix systems, but here it is
|
||||
*
|
||||
@@ -619,8 +625,7 @@ void cf_search_root_pack(int root_index)
|
||||
|
||||
//mprintf(( "Searching root pack '%s'\n", root->path ));
|
||||
|
||||
// Open data
|
||||
|
||||
// Open data
|
||||
FILE *fp = fopen( root->path, "rb" );
|
||||
// Read the file header
|
||||
if (!fp) {
|
||||
@@ -832,29 +837,70 @@ int cf_find_file_location( char *filespec, int pathtype, char *pack_filename, in
|
||||
}
|
||||
}
|
||||
|
||||
#if defined WIN32
|
||||
long findhandle;
|
||||
_finddata_t findstruct;
|
||||
#endif
|
||||
|
||||
for (i=0; i<num_search_dirs; i++ ) {
|
||||
char longname[MAX_PATH_LEN];
|
||||
|
||||
cf_create_default_path_string( longname, search_order[i], filespec, localize );
|
||||
|
||||
FILE *fp = fopen(longname, "rb" );
|
||||
if (fp) {
|
||||
if ( size ) {
|
||||
#if defined _WIN32
|
||||
*size = filelength(fileno(fp));
|
||||
|
||||
if(!Cmdline_safeloading)
|
||||
{
|
||||
findhandle = _findfirst(longname, &findstruct);
|
||||
if (findhandle != -1) {
|
||||
if ( size ) {
|
||||
*size = findstruct.size;
|
||||
}
|
||||
|
||||
_findclose(findhandle);
|
||||
|
||||
if ( offset ) *offset = 0;
|
||||
if ( pack_filename ) {
|
||||
strcpy( pack_filename, longname );
|
||||
};
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
FILE *fp = fopen(longname, "rb" );
|
||||
if(fp) {
|
||||
if( size ) {
|
||||
*size = filelength( fileno(fp) );
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
|
||||
if(offset) *offset = 0;
|
||||
if( pack_filename ) {
|
||||
strcpy(pack_filename, longname);
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
#elif defined unix
|
||||
FILE *fp = fopen(longname, "rb" );
|
||||
if (fp) {
|
||||
if ( size ) {
|
||||
struct stat statbuf;
|
||||
fstat(fileno(fp), &statbuf);
|
||||
*size = statbuf.st_size;
|
||||
#endif
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
|
||||
if ( offset ) *offset = 0;
|
||||
if ( pack_filename ) {
|
||||
strcpy( pack_filename, longname );
|
||||
}
|
||||
fclose(fp);
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Search the pak files and CD-ROM.
|
||||
|
||||
@@ -9,11 +9,72 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Cmdline/cmdline.cpp $
|
||||
* $Revision: 2.17 $
|
||||
* $Date: 2003-02-22 04:13:17 $
|
||||
* $Author: wmcoolmon $
|
||||
* $Revision: 2.29.2.1 $
|
||||
* $Date: 2003-09-18 23:40:16 $
|
||||
* $Author: argv $
|
||||
* $Revision: 2.29.2.1 $
|
||||
* $Date: 2003-09-18 23:40:16 $
|
||||
* $Author: argv $
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.29 2003/09/14 19:00:02 wmcoolmon
|
||||
* Changed "nospec" and "cell" to "Cmdline_nospec" and "Cmdline_cell"
|
||||
*
|
||||
* Revision 2.28 2003/09/14 18:32:24 wmcoolmon
|
||||
* Added "-safeloading" command line parameter, which uses old fs2_retail-style loading code -C
|
||||
*
|
||||
* Revision 2.27 2003/09/13 06:02:05 Goober5000
|
||||
* clean rollback of all of argv's stuff
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.25 2003/09/09 17:10:54 matt
|
||||
* Added -nospec cmd line param to disable specular -Sticks
|
||||
*
|
||||
* Revision 2.24 2003/08/22 07:35:08 bobboau
|
||||
* specular code should be bugless now,
|
||||
* cell shadeing has been added activated via the comand line '-cell',
|
||||
* 3D shockwave models, and a transparency method I'm calling edge and center alpha that could be usefull for other things, ask for details
|
||||
*
|
||||
* Revision 2.23 2003/08/21 20:54:37 randomtiger
|
||||
* Fixed switching - RT
|
||||
*
|
||||
* Revision 2.22 2003/08/12 03:18:33 bobboau
|
||||
* Specular 'shine' mapping;
|
||||
* useing a phong lighting model I have made specular highlights
|
||||
* that are mapped to the model,
|
||||
* rendering them is still slow, but they look real purdy
|
||||
*
|
||||
* also 4 new (untested) comand lines, the XX is a floating point value
|
||||
* -spec_exp XX
|
||||
* the n value, you can set this from 0 to 200 (actualy more than that, but this is the recomended range), it will make the highlights bigger or smaller, defalt is 16.0 so start playing around there
|
||||
* -spec_point XX
|
||||
* -spec_static XX
|
||||
* -spec_tube XX
|
||||
* these are factors for the three diferent types of lights that FS uses, defalt is 1.0,
|
||||
* static is the local stars,
|
||||
* point is weapons/explosions/warp in/outs,
|
||||
* tube is beam weapons,
|
||||
* for thouse of you who think any of these lights are too bright you can configure them you're self for personal satisfaction
|
||||
*
|
||||
* Revision 2.21 2003/08/09 06:07:23 bobboau
|
||||
* slightly better implementation of the new zbuffer thing, it now checks only three diferent formats defalting to the 16 bit if neither the 24 or 32 bit versions are suported
|
||||
*
|
||||
* Revision 2.20 2003/03/29 09:42:05 Goober5000
|
||||
* made beams default shield piercing again
|
||||
* also added a beam no pierce command line flag
|
||||
* and fixed something else which I forgot :P
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.19 2003/03/20 08:24:45 unknownplayer
|
||||
* Modified the command line options so they are all in lower-case characters.
|
||||
* Made a slight AI adjustment to how ships choose to attack turrets (they now have a 25% chance of attacking a beam turret which has fired at them from another ship)
|
||||
*
|
||||
* Revision 2.18 2003/03/18 10:07:00 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.17 2003/02/22 04:13:17 wmcoolmon
|
||||
* Added "-dshowvid" command-line option, which must be set in order for movies to play.
|
||||
*
|
||||
* Revision 2.16 2002/12/21 13:39:25 DTP
|
||||
* did bit more house keeping. modfied Phreaks fps cmdline a bit, so that we dont have to specific build code.libs for fred, but can use the same code.lib for both fs2_open.exe and fred2_open.exe
|
||||
*
|
||||
@@ -51,6 +112,32 @@
|
||||
* Revision 2.6 2002/08/27 13:38:57 penguin
|
||||
* Moved DirectX8 stuff to directx8 branch; reverted to previous
|
||||
*
|
||||
* Revision 2.4.2.4 2002/11/10 11:32:29 randomtiger
|
||||
*
|
||||
* Made D3D8 mipmapping optional on command line flag -d3dmipmip, off by default.
|
||||
* When on is now less blury. - RT
|
||||
*
|
||||
* Revision 2.4.2.3 2002/11/04 23:53:24 randomtiger
|
||||
*
|
||||
* Added new command line parameter -d3dlauncher which brings up the launcher.
|
||||
* This is needed since FS2 DX8 now stores the last successful details in the registry and
|
||||
* uses them to choose the adapter and mode to run in unless its windowed or they are not set.
|
||||
* Added some code for Antialiasing but it messes up the font but hopefully that can be fixed later. - RT
|
||||
*
|
||||
* Revision 2.4.2.2 2002/11/04 21:24:59 randomtiger
|
||||
*
|
||||
* When running in D3D all ani's are memory mapped for speed, this takes up more memory but stops gametime locking of textures which D3D8 hates.
|
||||
* Added new command line tag Cmdline_d3dlowmem for people who dont want to make use of this because they have no memory.
|
||||
* Cleaned up some more texture stuff enabled console debug for D3D.
|
||||
*
|
||||
* Revision 2.4.2.1 2002/08/27 13:19:02 penguin
|
||||
* Moved to directx8 branch
|
||||
*
|
||||
* Revision 2.5 2002/08/18 19:48:28 randomtiger
|
||||
* Added new lib files: strmiids and ddraw to get dshow working
|
||||
* Added new command line parameter to active direct show movie play: -dshowvid
|
||||
* Uncommented movie_play calls and includes
|
||||
*
|
||||
* Revision 2.4 2002/08/07 00:44:13 DTP
|
||||
* Implented -GF4FIX commandline switch
|
||||
*
|
||||
@@ -294,12 +381,29 @@ cmdline_parm mouse_coords("-coords", NULL);
|
||||
cmdline_parm timeout("-timeout", NULL);
|
||||
cmdline_parm d3d_window("-window", NULL);
|
||||
cmdline_parm almission_arg("-almission", NULL); //DTP for autoload Multi mission
|
||||
cmdline_parm gf4fix_arg("-GF4FIX", NULL); //DTP for random tigers GF4fix
|
||||
cmdline_parm allslev_arg("-ALLSLEV", NULL); //Give access to all single player missions
|
||||
cmdline_parm gf4fix_arg("-gf4fix", NULL); //DTP for random tigers GF4fix
|
||||
cmdline_parm allslev_arg("-allslev", NULL); //Give access to all single player missions
|
||||
cmdline_parm phreak_arg("-phreak", NULL); // Change to phreaks options including new targetting code
|
||||
cmdline_parm dshowvid_arg("-dshowvid", NULL); // Allows video streaming
|
||||
cmdline_parm dnoshowvid_arg("-dnoshowvid", NULL); // Allows video streaming
|
||||
cmdline_parm mod_arg("-mod", NULL); //DTP modsupport
|
||||
cmdline_parm fps_arg("-fps", NULL);
|
||||
cmdline_parm d3dlowmem_arg("-d3dlowmem", NULL); //DTP for random tigers GF4fix
|
||||
cmdline_parm d3dmipmap_arg("-d3dmipmap", NULL);
|
||||
cmdline_parm beams_no_pierce_shields_arg("-nobeampierce", NULL); // beams do not pierce shields - Goober5000
|
||||
cmdline_parm fov_arg("-fov", NULL); // comand line FOV -Bobboau
|
||||
cmdline_parm spec_exp_arg("-spec_exp", NULL); // comand line FOV -Bobboau
|
||||
cmdline_parm spec_point_arg("-spec_point", NULL); // comand line FOV -Bobboau
|
||||
cmdline_parm spec_static_arg("-spec_static", NULL); // comand line FOV -Bobboau
|
||||
cmdline_parm spec_tube_arg("-spec_tube", NULL); // comand line FOV -Bobboau
|
||||
cmdline_parm safeloading_arg("-safeloading", NULL); //Uses old loading method -C
|
||||
cmdline_parm nospec_arg("-nospec", NULL); // skip specular highlighting -Sticks
|
||||
cmdline_parm auto_ets_arg("-auto-ets", NULL); // _argv[-1] - auto ETS.
|
||||
cmdline_parm no_implicit_disable_auto_target("-no-implicit-disable-auto-target", NULL); // _argv[-1] - don't disable auto targeting when 'target nothing' command is used.
|
||||
cmdline_parm no_auto_target_turret("-no-auto-target-turret", NULL); // _argv[-1] - don't auto-target turrets.
|
||||
cmdline_parm sound_from_own_turrets("-sound-from-own-turrets", NULL); // _argv[-1] - play sounds when own turrets fire.
|
||||
cmdline_parm singular_shields("-singular-shields", NULL); // _argv[-1] - turn on singular shields for all ships.
|
||||
|
||||
cmdline_parm cell_arg("-cell", NULL);
|
||||
|
||||
int Cmdline_multi_stream_chat_to_file = 0;
|
||||
int Cmdline_freespace_no_sound = 0;
|
||||
@@ -331,15 +435,26 @@ int Cmdline_window = 0;
|
||||
int Cmdline_gf4fix = 0; // DTP for randomstigers GF4 fix.
|
||||
int Cmdline_allslev = 0;
|
||||
int Cmdline_phreak = 0;
|
||||
int Cmdline_dshowvid = 0;
|
||||
int Cmdline_dnoshowvid = 0;
|
||||
int Cmdline_show_fps = 0;
|
||||
int Cmdline_safeloading = 0;
|
||||
int Cmdline_nospec = 0;
|
||||
|
||||
int Cmdline_d3dlowmem = 0;
|
||||
int Cmdline_d3dmipmap = 0;
|
||||
|
||||
int Cmdline_beams_no_pierce_shields = 0; // Goober5000
|
||||
|
||||
struct argv_options Argv_options; // _argv[-1] - options struct for my stuff, and maybe other people's too.
|
||||
|
||||
static cmdline_parm Parm_list(NULL, NULL);
|
||||
static int Parm_list_inited = 0;
|
||||
|
||||
float Cmdline_fov = 0.75f;
|
||||
extern float VIEWER_ZOOM_DEFAULT;
|
||||
extern float Viewer_zoom;
|
||||
|
||||
int Cmdline_cell = 0;
|
||||
|
||||
// Return true if this character is an extra char (white space and quotes)
|
||||
int is_extra_space(char ch)
|
||||
@@ -711,8 +826,8 @@ int parse_cmdline(int argc, char *argv[])
|
||||
Cmdline_phreak = 1;
|
||||
}
|
||||
|
||||
if(dshowvid_arg.found() ) {
|
||||
Cmdline_dshowvid = 1;
|
||||
if(dnoshowvid_arg.found() ) {
|
||||
Cmdline_dnoshowvid = 1;
|
||||
}
|
||||
|
||||
if(mod_arg.found() ) {
|
||||
@@ -725,6 +840,78 @@ int parse_cmdline(int argc, char *argv[])
|
||||
Cmdline_show_fps = 1;
|
||||
}
|
||||
|
||||
if ( safeloading_arg.found() ) {
|
||||
Cmdline_safeloading = 1;
|
||||
}
|
||||
|
||||
if( d3dlowmem_arg.found() ) {
|
||||
Cmdline_d3dlowmem = 1;
|
||||
}
|
||||
|
||||
if( d3dmipmap_arg.found() ) {
|
||||
Cmdline_d3dmipmap = 1;
|
||||
}
|
||||
|
||||
if ( beams_no_pierce_shields_arg.found() ) {
|
||||
Cmdline_beams_no_pierce_shields = 1;
|
||||
}
|
||||
|
||||
memset(&Argv_options, 0, sizeof(Argv_options));
|
||||
|
||||
// _argv[-1] - auto ETS.
|
||||
if ( auto_ets_arg.found() ) {
|
||||
Argv_options.auto_ets = 1;
|
||||
}
|
||||
|
||||
// _argv[-1] - don't disable auto targeting when 'target nothing' command is used.
|
||||
if ( no_implicit_disable_auto_target.found() ) {
|
||||
Argv_options.no_implicit_disable_auto_target = 1;
|
||||
}
|
||||
|
||||
// _argv[-1] - don't auto-target turrets.
|
||||
if ( no_auto_target_turret.found() ) {
|
||||
Argv_options.no_auto_target_turret = 1;
|
||||
}
|
||||
|
||||
// _argv[-1] - play sounds when own turrets fire.
|
||||
if ( sound_from_own_turrets.found() ) {
|
||||
Argv_options.sound_from_own_turrets = 1;
|
||||
}
|
||||
|
||||
// _argv[-1] - turn on singular shields for all ships.
|
||||
if ( singular_shields.found() ) {
|
||||
Argv_options.singular_shields = 1;
|
||||
}
|
||||
|
||||
if ( fov_arg.found() ) {
|
||||
Viewer_zoom = VIEWER_ZOOM_DEFAULT = Cmdline_fov = fov_arg.get_float();
|
||||
}
|
||||
|
||||
|
||||
//specular comand lines
|
||||
if ( spec_exp_arg.found() ) {
|
||||
specular_exponent_value = spec_exp_arg.get_float();
|
||||
}
|
||||
|
||||
if ( spec_point_arg.found() ) {
|
||||
static_point_factor = spec_point_arg.get_float();
|
||||
}
|
||||
|
||||
if ( spec_static_arg.found() ) {
|
||||
static_light_factor = spec_static_arg.get_float();
|
||||
}
|
||||
|
||||
if ( spec_tube_arg.found() ) {
|
||||
static_tube_factor = spec_tube_arg.get_float();
|
||||
}
|
||||
|
||||
if ( cell_arg.found() ) {
|
||||
Cmdline_cell = 1;
|
||||
}
|
||||
|
||||
if ( nospec_arg.found() ) {
|
||||
Cmdline_nospec = 1;
|
||||
}
|
||||
return 1;
|
||||
}
|
||||
|
||||
@@ -10,11 +10,62 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Cmdline/cmdline.h $
|
||||
* $Revision: 2.17 $
|
||||
* $Date: 2003-02-22 04:13:17 $
|
||||
* $Author: wmcoolmon $
|
||||
* $Revision: 2.27.2.1 $
|
||||
* $Date: 2003-09-18 23:40:16 $
|
||||
* $Author: argv $
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.27 2003/09/14 19:00:02 wmcoolmon
|
||||
* Changed "nospec" and "cell" to "Cmdline_nospec" and "Cmdline_cell"
|
||||
*
|
||||
* Revision 2.26 2003/09/14 18:32:24 wmcoolmon
|
||||
* Added "-safeloading" command line parameter, which uses old fs2_retail-style loading code -C
|
||||
*
|
||||
* Revision 2.25 2003/09/13 06:02:05 Goober5000
|
||||
* clean rollback of all of argv's stuff
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.23 2003/08/22 07:35:08 bobboau
|
||||
* specular code should be bugless now,
|
||||
* cell shadeing has been added activated via the comand line '-cell',
|
||||
* 3D shockwave models, and a transparency method I'm calling edge and center alpha that could be usefull for other things, ask for details
|
||||
*
|
||||
* Revision 2.22 2003/08/21 20:54:37 randomtiger
|
||||
* Fixed switching - RT
|
||||
*
|
||||
* Revision 2.21 2003/08/12 03:18:33 bobboau
|
||||
* Specular 'shine' mapping;
|
||||
* useing a phong lighting model I have made specular highlights
|
||||
* that are mapped to the model,
|
||||
* rendering them is still slow, but they look real purdy
|
||||
*
|
||||
* also 4 new (untested) comand lines, the XX is a floating point value
|
||||
* -spec_exp XX
|
||||
* the n value, you can set this from 0 to 200 (actualy more than that, but this is the recomended range), it will make the highlights bigger or smaller, defalt is 16.0 so start playing around there
|
||||
* -spec_point XX
|
||||
* -spec_static XX
|
||||
* -spec_tube XX
|
||||
* these are factors for the three diferent types of lights that FS uses, defalt is 1.0,
|
||||
* static is the local stars,
|
||||
* point is weapons/explosions/warp in/outs,
|
||||
* tube is beam weapons,
|
||||
* for thouse of you who think any of these lights are too bright you can configure them you're self for personal satisfaction
|
||||
*
|
||||
* Revision 2.20 2003/08/09 06:07:23 bobboau
|
||||
* slightly better implementation of the new zbuffer thing, it now checks only three diferent formats defalting to the 16 bit if neither the 24 or 32 bit versions are suported
|
||||
*
|
||||
* Revision 2.19 2003/03/29 09:42:05 Goober5000
|
||||
* made beams default shield piercing again
|
||||
* also added a beam no pierce command line flag
|
||||
* and fixed something else which I forgot :P
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.18 2003/03/18 10:07:00 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.17 2003/02/22 04:13:17 wmcoolmon
|
||||
* Added "-dshowvid" command-line option, which must be set in order for movies to play.
|
||||
*
|
||||
* Revision 2.16 2002/12/21 13:39:25 DTP
|
||||
* did bit more house keeping. modfied Phreaks fps cmdline a bit, so that we dont have to specific build code.libs for fred, but can use the same code.lib for both fs2_open.exe and fred2_open.exe
|
||||
*
|
||||
@@ -47,6 +98,32 @@
|
||||
* Revision 2.5 2002/08/27 13:38:57 penguin
|
||||
* Moved DirectX8 stuff to directx8 branch; reverted to previous
|
||||
*
|
||||
* Revision 2.3.2.4 2002/11/10 11:32:29 randomtiger
|
||||
*
|
||||
* Made D3D8 mipmapping optional on command line flag -d3dmipmip, off by default.
|
||||
* When on is now less blury. - RT
|
||||
*
|
||||
* Revision 2.3.2.3 2002/11/04 23:53:24 randomtiger
|
||||
*
|
||||
* Added new command line parameter -d3dlauncher which brings up the launcher.
|
||||
* This is needed since FS2 DX8 now stores the last successful details in the registry and
|
||||
* uses them to choose the adapter and mode to run in unless its windowed or they are not set.
|
||||
* Added some code for Antialiasing but it messes up the font but hopefully that can be fixed later. - RT
|
||||
*
|
||||
* Revision 2.3.2.2 2002/11/04 21:24:59 randomtiger
|
||||
*
|
||||
* When running in D3D all ani's are memory mapped for speed, this takes up more memory but stops gametime locking of textures which D3D8 hates.
|
||||
* Added new command line tag Cmdline_d3dlowmem for people who dont want to make use of this because they have no memory.
|
||||
* Cleaned up some more texture stuff enabled console debug for D3D.
|
||||
*
|
||||
* Revision 2.3.2.1 2002/08/27 13:19:02 penguin
|
||||
* Moved to directx8 branch
|
||||
*
|
||||
* Revision 2.4 2002/08/18 19:48:28 randomtiger
|
||||
* Added new lib files: strmiids and ddraw to get dshow working
|
||||
* Added new command line parameter to active direct show movie play: -dshowvid
|
||||
* Uncommented movie_play calls and includes
|
||||
*
|
||||
* Revision 2.3 2002/08/07 00:44:13 DTP
|
||||
* Implented -GF4FIX commandline switch
|
||||
*
|
||||
@@ -240,10 +317,36 @@ extern char *Cmdline_almission; //DTP for autoload mission
|
||||
extern int Cmdline_gf4fix; //DTP for Random tigers GF4fix.
|
||||
extern int Cmdline_allslev;
|
||||
extern int Cmdline_phreak;
|
||||
extern int Cmdline_dshowvid; //WMC Toggles movie playing support
|
||||
extern int Cmdline_dnoshowvid; //WMC Toggles movie playing support
|
||||
extern char *Cmdline_mod; //DTP for mod support
|
||||
extern int Cmdline_show_fps;//DTP moved here because it is the correct place for it to be.
|
||||
extern int Cmdline_safeloading;
|
||||
extern int Cmdline_nospec;
|
||||
|
||||
extern int Cmdline_d3dlowmem;
|
||||
extern int Cmdline_d3dmipmap;
|
||||
|
||||
extern int Cmdline_beams_no_pierce_shields; // Goober5000
|
||||
extern float Cmdline_fov;
|
||||
|
||||
extern float static_light_factor;
|
||||
extern float static_tube_factor;
|
||||
extern float static_point_factor;
|
||||
extern double specular_exponent_value;
|
||||
|
||||
extern int Cmdline_cell;
|
||||
|
||||
// _argv[-1] - use a struct with bitfields to avoid wasting memory.
|
||||
// Yes, I know this deviates from the usual Volition #define flags.
|
||||
// This is intentional. Structs with bitfields waste less memory and are easier to understand.
|
||||
// Also, the ':1' etc is not an initializer; it is a specification of how many bits to use.
|
||||
struct argv_options {
|
||||
int auto_ets:1;
|
||||
int no_implicit_disable_auto_target:1;
|
||||
int no_auto_target_turret:1;
|
||||
int sound_from_own_turrets:1;
|
||||
int singular_shields:1;
|
||||
};
|
||||
extern struct argv_options Argv_options;
|
||||
|
||||
#endif
|
||||
@@ -9,13 +9,22 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/CMeasure/CMeasure.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-03-18 10:07:00 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Counter measures. Created by Mike Kulas, May 12, 1997.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1.2.1 2002/09/24 18:56:41 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:21 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -243,27 +252,9 @@ void cmeasure_init()
|
||||
{
|
||||
int i;
|
||||
|
||||
if ( !Cmeasure_inited ) {
|
||||
if ( !Cmeasure_inited )
|
||||
Cmeasure_inited = 1;
|
||||
|
||||
/* // Do all the processing that happens only once
|
||||
if ( Debris_model < 0 ) {
|
||||
if (Debris_model>-1) {
|
||||
polymodel * pm;
|
||||
pm = model_get(Debris_model);
|
||||
Debris_num_submodels = pm->n_models;
|
||||
}
|
||||
}
|
||||
|
||||
for (i=0; i<MAX_SPECIES_NAMES; i++ ) {
|
||||
Debris_textures[i] = bm_load( Debris_texture_files[i] );
|
||||
if ( Debris_textures[i] < 0 ) {
|
||||
Warning( LOCATION, "Couldn't load species %d debris\ntexture, '%s'\n", i, Debris_texture_files[i] );
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
// Reset everything between levels
|
||||
Num_cmeasures = 0;
|
||||
|
||||
|
||||
+134
-102
@@ -64,7 +64,7 @@ LIB32=link.exe -lib
|
||||
# PROP Intermediate_Dir "..\Debug\Profile"
|
||||
# PROP Target_Dir ""
|
||||
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_MBCS" /D "_LIB" /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /G5 /MTd /W4 /Gm /Gi /GX /ZI /Od /I "." /D "_WINDOWS" /D "WIN32" /D "_DEBUG" /D "USE_OPENGL" /U "NDEBUG" /FR /YX /FD /GZ /c
|
||||
# ADD CPP /nologo /G5 /MTd /W4 /Gm /Gi /GX /ZI /Od /I "." /D "_WINDOWS" /D "WIN32" /D "_DEBUG" /D "DBUGFILE_ACTIVE" /D "USE_OPENGL" /U "NDEBUG" /FR /YX /FD /GZ /c
|
||||
# ADD BASE RSC /l 0x409 /d "_DEBUG"
|
||||
# ADD RSC /l 0x409 /d "_DEBUG"
|
||||
BSC32=bscmake.exe
|
||||
@@ -156,18 +156,6 @@ SOURCE=.\CFile\CfileSystem.cpp
|
||||
SOURCE=.\CFile\CfileSystem.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Cmdline"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Cmdline\cmdline.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Cmdline\cmdline.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "CMeasure"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
@@ -269,22 +257,10 @@ SOURCE=.\DirectX\vasync.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DirectX\vD3d.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DirectX\vD3dcaps.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DirectX\vd3di.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DirectX\vd3drm.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DirectX\vd3drmdef.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -297,10 +273,6 @@ SOURCE=.\DirectX\vd3drmwin.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DirectX\vD3dtypes.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\DirectX\vd3dvec.inl
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -345,11 +317,11 @@ SOURCE=.\directx\ddraw.lib
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\directx\dxguid.lib
|
||||
SOURCE=.\directx\strmiids.lib
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\directx\strmiids.lib
|
||||
SOURCE=.\directx\dxguid.lib
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Fireball"
|
||||
@@ -511,18 +483,9 @@ SOURCE=.\GlobalIncs\WinDebug.cpp
|
||||
# Begin Group "Graphics"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
# Begin Group "SoftwareGr"
|
||||
|
||||
SOURCE=.\Graphics\2d.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\2d.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\aaline.cpp
|
||||
# End Source File
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\Bitblt.cpp
|
||||
@@ -565,62 +528,6 @@ SOURCE=.\Graphics\Gradient.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3D.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3D.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3DInternal.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3DRender.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3DTexture.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrDirectDraw.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrDirectDraw.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrGlide.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrGlide.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrGlideInternal.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrGlideTexture.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrInternal.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrOpenGL.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrOpenGL.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrSoft.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -677,10 +584,6 @@ SOURCE=.\Graphics\Shade.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\TmapGenericScans.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\Tmapper.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -716,6 +619,107 @@ SOURCE=.\Graphics\TmapScanTiled32x32.cpp
|
||||
SOURCE=.\Graphics\TmapScanTiled64x64.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "GlideGr"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrGlide.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrGlide.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrGlideInternal.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrGlideTexture.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "D3D8Gr"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3D.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3D.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\graphics\GrD3DBmpman.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\graphics\GrD3DBmpman.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\graphics\GrD3DCalls.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3DInternal.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3DRender.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrD3DTexture.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "DDrawGr"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrDirectDraw.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrDirectDraw.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "OpenGLGr"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrOpenGL.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrOpenGL.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\2d.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\2d.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\aaline.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\GrInternal.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Graphics\TmapGenericScans.cpp
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Hud"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
@@ -1895,6 +1899,14 @@ SOURCE=.\Sound\dscap.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\sound\fsspeech.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\sound\fsspeech.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Sound\midifile.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -1931,6 +1943,14 @@ SOURCE=.\Sound\Sound.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\sound\speech.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\sound\speech.h
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Sound\WinMIDI.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
@@ -2535,5 +2555,17 @@ SOURCE=.\ddsutils\ddsutils.cpp
|
||||
SOURCE=.\ddsutils\ddsutils.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# Begin Group "Cmdline"
|
||||
|
||||
# PROP Default_Filter ""
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Cmdline\cmdline.cpp
|
||||
# End Source File
|
||||
# Begin Source File
|
||||
|
||||
SOURCE=.\Cmdline\cmdline.h
|
||||
# End Source File
|
||||
# End Group
|
||||
# End Target
|
||||
# End Project
|
||||
@@ -9,13 +9,25 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/ControlConfig/ControlsConfig.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-04-05 11:09:21 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* C module for keyboard, joystick and mouse configuration
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.2 2003/03/18 10:07:00 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.1.2.1 2002/09/24 18:56:41 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:21 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -326,6 +338,7 @@
|
||||
#include "popup/popup.h"
|
||||
#include "ui/uidefs.h"
|
||||
#include "globalincs/alphacolors.h"
|
||||
#include "debugconsole/dbugfile.h"
|
||||
|
||||
#ifndef NO_NETWORK
|
||||
#include "network/multi_pmsg.h"
|
||||
@@ -415,7 +428,7 @@ int Conflict_warning_coords[GR_NUM_RESOLUTIONS][2] = {
|
||||
int Conflict_stamp = -1;
|
||||
int Conflict_bright = 0;
|
||||
|
||||
#define LIST_BUTTONS_MAX 40
|
||||
#define LIST_BUTTONS_MAX 42
|
||||
#define JOY_AXIS 0x80000
|
||||
|
||||
static int Num_cc_lines;
|
||||
|
||||
@@ -9,13 +9,50 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Cutscene/Cutscenes.cpp $
|
||||
* $Revision: 2.4 $
|
||||
* $Date: 2002-08-27 13:38:57 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.7 $
|
||||
* $Date: 2003-08-21 20:54:38 $
|
||||
* $Author: randomtiger $
|
||||
* $Revision: 2.7 $
|
||||
* $Date: 2003-08-21 20:54:38 $
|
||||
* $Author: randomtiger $
|
||||
*
|
||||
* Code for the cutscenes viewer screen
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.6 2003/07/15 02:58:08 phreak
|
||||
* the cutscene section in the techroom does not append *.mve onto a filename
|
||||
*
|
||||
* Revision 2.5 2003/03/18 10:07:01 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.4 2002/08/27 13:38:57 penguin
|
||||
* Moved DirectX8 stuff to directx8 branch; reverted to previous
|
||||
*
|
||||
* Revision 2.2.2.4 2002/09/24 18:56:41 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.2.2.3 2002/08/28 21:47:02 randomtiger
|
||||
* Tiny change to DX branch to keep movie code optional (default off)
|
||||
*
|
||||
* Revision 2.2.2.2 2002/08/28 12:39:35 randomtiger
|
||||
* OK, this should be a commit to the DX branch or Im going to be in a lot of trouble.
|
||||
* The movie and dx8show files have been cleaned up big time.
|
||||
* My debug system is in but has NO EFFECT at all unless a compiler flag is turned on, check h file for details.
|
||||
* Aside from that a few changes to help the movie code work properly.
|
||||
* Works on most things including GF4 and Voodoo 3. However may not work properly on a voodoo 2.
|
||||
* Im going to leave this as a bug for now, serves you right for buying voodoo!
|
||||
*
|
||||
* Revision 2.2.2.1 2002/08/27 13:19:26 penguin
|
||||
* Moved to directx8 branch
|
||||
*
|
||||
* Revision 2.3 2002/08/18 19:48:29 randomtiger
|
||||
* Added new lib files: strmiids and ddraw to get dshow working
|
||||
* Added new command line parameter to active direct show movie play: -dshowvid
|
||||
* Uncommented movie_play calls and includes
|
||||
*
|
||||
* Revision 2.2 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -161,11 +198,12 @@
|
||||
#include "freespace2/freespace.h"
|
||||
#include "io/key.h"
|
||||
#include "bmpman/bmpman.h"
|
||||
// #include "movie.h"
|
||||
#include "movie.h"
|
||||
#include "popup/popup.h"
|
||||
#include "menuui/mainhallmenu.h"
|
||||
#include "globalincs/alphacolors.h"
|
||||
#include "localization/localize.h"
|
||||
#include "debugconsole/dbugfile.h"
|
||||
|
||||
char *Cutscene_bitmap_name[GR_NUM_RESOLUTIONS] = {
|
||||
"ViewFootage",
|
||||
@@ -425,7 +463,7 @@ int cutscenes_validate_cd(char *mve_name, int prompt_for_cd)
|
||||
if ( num_attempts++ > 5 ) {
|
||||
cd_present = 0;
|
||||
break;
|
||||
}
|
||||
}
|
||||
#else
|
||||
cd_present = 0;
|
||||
break;
|
||||
@@ -436,30 +474,40 @@ int cutscenes_validate_cd(char *mve_name, int prompt_for_cd)
|
||||
return cd_present;
|
||||
#else // !WIN32
|
||||
return 0;
|
||||
#endif // ifdef WIN32
|
||||
#endif // ifdef WIN32
|
||||
}
|
||||
|
||||
void cutscenes_screen_play()
|
||||
{
|
||||
char name[MAX_FILENAME_LEN], *full_name;
|
||||
char name[MAX_FILENAME_LEN]; // *full_name
|
||||
int which_cutscene;
|
||||
|
||||
Assert( (Selected_line >= 0) && (Selected_line < Num_files) );
|
||||
which_cutscene = Cutscene_list[Selected_line];
|
||||
|
||||
strcpy(name, Cutscenes[which_cutscene].filename );
|
||||
full_name = cf_add_ext(name, NOX(".mve"));
|
||||
// full_name = cf_add_ext(name, NOX(".mve"));
|
||||
|
||||
// no soup for you!
|
||||
/*
|
||||
int rval = movie_play(full_name);
|
||||
if(gr_screen.mode != GR_DIRECT3D )
|
||||
{
|
||||
gr_activate(0);
|
||||
}
|
||||
|
||||
int rval = movie_play(name);
|
||||
|
||||
if(gr_screen.mode != GR_DIRECT3D )
|
||||
{
|
||||
gr_activate(1);
|
||||
}
|
||||
|
||||
if ( !rval ) {
|
||||
char str[256];
|
||||
|
||||
sprintf(str, XSTR( "Unable to play movie %s.", 204), Cutscenes[which_cutscene].name );
|
||||
popup(0, 1, POPUP_OK, str );
|
||||
}
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
void cutscenes_screen_scroll_line_up()
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
#include "cmdline/cmdline.h"
|
||||
#include "graphics/2d.h"
|
||||
#include "debugconsole/dbugfile.h"
|
||||
#include "graphics/gropengl.h"
|
||||
|
||||
bool movie_shutdown_fgx = false;
|
||||
|
||||
@@ -17,21 +18,27 @@ void movie_set_shutdown_fgx(bool state)
|
||||
bool movie_play(char *name, int unknown_value)
|
||||
{
|
||||
// This should not be uncommented
|
||||
if(!Cmdline_dshowvid)
|
||||
if(Cmdline_dnoshowvid)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
char full_name[MAX_PATH];
|
||||
GetCurrentDirectory(MAX_PATH, full_name);
|
||||
strcat(full_name, "\\");
|
||||
strcat(full_name, name);
|
||||
|
||||
/*
|
||||
** Check file exists
|
||||
*/
|
||||
FILE *fp = fopen(name,"rb");
|
||||
DBUGFILE_OUTPUT_1("About to play: %s",name);
|
||||
// Ok - this should be replaced with FS2 cfopen or something - UP
|
||||
FILE *fp = fopen(full_name,"rb");
|
||||
DBUGFILE_OUTPUT_1("About to play: %s",full_name);
|
||||
|
||||
if(fp == NULL)
|
||||
{
|
||||
DBUGFILE_OUTPUT_0("MOVIE ERROR: Cant open movie file");
|
||||
return true;
|
||||
DBUGFILE_OUTPUT_1("MOVIE ERROR: Cant open movie file %s",full_name);
|
||||
return false;
|
||||
}
|
||||
|
||||
fclose(fp);
|
||||
@@ -39,10 +46,16 @@ bool movie_play(char *name, int unknown_value)
|
||||
if(movie_shutdown_fgx == true)
|
||||
{
|
||||
gr_activate(0);
|
||||
|
||||
if (gr_screen.mode==GR_OPENGL)
|
||||
{
|
||||
gr_opengl_cleanup(0);
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
os_app_activate_set(false);
|
||||
|
||||
os_app_activate_set(false);
|
||||
|
||||
dx8show_set_hwnd((void *) os_get_window());
|
||||
|
||||
@@ -56,6 +69,7 @@ bool movie_play(char *name, int unknown_value)
|
||||
|
||||
os_app_activate_set(true);
|
||||
|
||||
|
||||
/*
|
||||
// Comment this back in if the freespace window isnt coming back after the movie ends
|
||||
|
||||
@@ -74,6 +88,10 @@ bool movie_play(char *name, int unknown_value)
|
||||
if(movie_shutdown_fgx == true)
|
||||
{
|
||||
gr_activate(1);
|
||||
if (gr_screen.mode==GR_OPENGL)
|
||||
{
|
||||
gr_opengl_init(1);
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -84,7 +102,7 @@ bool movie_play_two(char *name1, char *name2, int unknown_value)
|
||||
bool result = true;
|
||||
|
||||
// This should not be uncommented
|
||||
if(!Cmdline_dshowvid)
|
||||
if(Cmdline_dnoshowvid)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
@@ -122,6 +140,12 @@ bool movie_play_two(char *name1, char *name2, int unknown_value)
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
if (gr_screen.mode==GR_OPENGL)
|
||||
{
|
||||
gr_opengl_cleanup();
|
||||
}
|
||||
|
||||
os_app_activate_set(false);
|
||||
|
||||
dx8show_play_cutscene(name1);
|
||||
@@ -138,6 +162,12 @@ bool movie_play_two(char *name1, char *name2, int unknown_value)
|
||||
dx8show_play_cutscene(name2);
|
||||
|
||||
os_app_activate_set(true);
|
||||
|
||||
if (gr_screen.mode==GR_OPENGL)
|
||||
{
|
||||
gr_opengl_init(1);
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
if(movie_shutdown_fgx == true)
|
||||
|
||||
@@ -9,13 +9,20 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Debris/Debris.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-04-29 01:03:22 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* Code for the pieces of exploding object debris.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.2 2003/03/19 12:29:01 unknownplayer
|
||||
* Woohoo! Killed two birds with one stone!
|
||||
* Fixed the 'black screen around dialog boxes' problem and also the much more serious freezing problem experienced by Goober5000. It wasn't a crash, just an infinite loop. DX8 merge is GO! once again :)
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:21 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -235,6 +242,7 @@
|
||||
#include "freespace2/freespace.h"
|
||||
#include "object/objcollide.h"
|
||||
#include "io/timer.h"
|
||||
#include "fireball/fireballs.h"
|
||||
|
||||
#ifndef NO_NETWORK
|
||||
#include "network/multi.h"
|
||||
@@ -803,7 +811,7 @@ object *debris_create(object *source_obj, int model_num, int submodel_num, vecto
|
||||
// -- No long need shield: bset_shield_strength(obj, 100.0f); // Hey! Set to some meaningful value!
|
||||
|
||||
if (source_obj->type == OBJ_SHIP) {
|
||||
obj->hull_strength = Ship_info[Ships[source_obj->instance].ship_info_index].initial_hull_strength/8.0f;
|
||||
obj->hull_strength = Ships[source_obj->instance].ship_initial_hull_strength/8.0f;
|
||||
} else
|
||||
obj->hull_strength = 10.0f;
|
||||
|
||||
|
||||
@@ -9,13 +9,22 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/DebugConsole/Console.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-03-18 10:07:01 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Routines for managing the debug console window.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1.2.1 2002/09/24 18:56:41 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:21 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -112,6 +121,7 @@
|
||||
#include "io/key.h"
|
||||
#include "globalincs/alphacolors.h"
|
||||
#include "osapi/osapi.h"
|
||||
#include "debugconsole/dbugfile.h"
|
||||
|
||||
#define MAX_COMMANDS 300
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
|
||||
#include "dbugfile.h"
|
||||
|
||||
int dbugfile_counters[MAX_COUNTERS];
|
||||
bool dbugfile_init_var = false;
|
||||
|
||||
char dbugfile_filename[512];
|
||||
@@ -29,15 +30,38 @@ void dbugfile_output(char *buffer)
|
||||
}
|
||||
|
||||
fwrite(buffer, sizeof(char) * strlen(buffer), 1, fp);
|
||||
|
||||
fclose(fp);
|
||||
}
|
||||
|
||||
void dbugfile_init()
|
||||
{
|
||||
// Clear the counters
|
||||
memset(dbugfile_counters, 0, sizeof(int) * MAX_COUNTERS);
|
||||
|
||||
char big_buffer[1000];
|
||||
char temp_buff[512];
|
||||
|
||||
strcpy(dbugfile_filename, "DBUG-");
|
||||
dbugfile_filename[0] = '\0';
|
||||
|
||||
#ifdef _WIN32
|
||||
|
||||
char path[MAX_PATH];
|
||||
|
||||
GetCurrentDirectory(MAX_PATH, path);
|
||||
|
||||
int path_len = strlen(path);
|
||||
if(path[path_len - 1] != '\\')
|
||||
{
|
||||
path[path_len] = '\\';
|
||||
path[path_len + 1] = '\0';
|
||||
}
|
||||
|
||||
strcpy(dbugfile_filename, path);
|
||||
|
||||
#endif
|
||||
|
||||
strcat(dbugfile_filename, "DBUG-");
|
||||
strcpy(big_buffer, "DBUGFILE Active: ");
|
||||
|
||||
#ifdef _WIN32
|
||||
@@ -56,14 +80,15 @@ void dbugfile_init()
|
||||
_tzset();
|
||||
|
||||
// Display operating system-style date and time.
|
||||
_strtime( temp_buff);
|
||||
strcat(dbugfile_filename, "(");
|
||||
_strdate( temp_buff);
|
||||
strcat(dbugfile_filename, "D(");
|
||||
strcat(dbugfile_filename,temp_buff);
|
||||
strcat(big_buffer,temp_buff);
|
||||
|
||||
strcat(dbugfile_filename, ")-(");
|
||||
strcat(dbugfile_filename, ") T(");
|
||||
strcat(big_buffer, " ");
|
||||
_strdate( temp_buff);
|
||||
|
||||
_strtime( temp_buff);
|
||||
strcat(dbugfile_filename,temp_buff);
|
||||
strcat(big_buffer,temp_buff);
|
||||
|
||||
@@ -72,7 +97,7 @@ void dbugfile_init()
|
||||
|
||||
// Remove invalid slash chars
|
||||
int len = strlen(dbugfile_filename);
|
||||
while(len >= 0)
|
||||
while(len >= 2)
|
||||
{
|
||||
if(dbugfile_filename[len] == '/' || dbugfile_filename[len] == ':')
|
||||
{
|
||||
@@ -82,6 +107,8 @@ void dbugfile_init()
|
||||
}
|
||||
|
||||
// open file
|
||||
// Uncomment this to see where the file is going
|
||||
//MessageBox(NULL, dbugfile_filename, "das", MB_OK);
|
||||
FILE *fp = fopen(dbugfile_filename, "w");
|
||||
|
||||
if(fp == NULL)
|
||||
@@ -141,11 +168,18 @@ void dbugfile_init()
|
||||
#else
|
||||
release_type = "Release";
|
||||
#endif
|
||||
sprintf(big_buffer, "OS: %s %s\n", version, release_type);
|
||||
sprintf(big_buffer, "OS: %s %s, ", version, release_type);
|
||||
}
|
||||
|
||||
fwrite(big_buffer, sizeof(char) * strlen(big_buffer), 1, fp);
|
||||
|
||||
char exe_name[MAX_PATH];
|
||||
|
||||
GetModuleFileName(NULL, exe_name, MAX_PATH);
|
||||
strcat(exe_name, "\n");
|
||||
fwrite(exe_name, sizeof(char) * strlen(exe_name), 1, fp);
|
||||
|
||||
|
||||
#endif
|
||||
|
||||
fclose(fp);
|
||||
@@ -251,4 +285,120 @@ void dbugfile_sprintf(int line, char *file, const char *format, ...)
|
||||
dbugfile_output(buffer);
|
||||
}
|
||||
|
||||
void dbugfile_print_matrix_4x4(int line, char *file, float *matrix, char *text)
|
||||
{
|
||||
if(dbugfile_init_var == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(matrix == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// find last slash (for PC) to crop file path
|
||||
char *ptr = strrchr(file, '\\');
|
||||
|
||||
if(ptr == NULL)
|
||||
{
|
||||
ptr = file;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr++;
|
||||
}
|
||||
|
||||
if(text == NULL)
|
||||
{
|
||||
text = "";
|
||||
}
|
||||
|
||||
char buffer[1000];
|
||||
|
||||
sprintf(buffer,"[%s,%4d] Matrix %s:\n"
|
||||
"%f %f %f %f\n"
|
||||
"%f %f %f %f\n"
|
||||
"%f %f %f %f\n"
|
||||
"%f %f %f %f\n",
|
||||
ptr,line, text,
|
||||
matrix[0],
|
||||
matrix[1],
|
||||
matrix[2],
|
||||
matrix[3],
|
||||
matrix[4],
|
||||
matrix[5],
|
||||
matrix[6],
|
||||
matrix[7],
|
||||
matrix[8],
|
||||
matrix[9],
|
||||
matrix[10],
|
||||
matrix[11],
|
||||
matrix[12],
|
||||
matrix[13],
|
||||
matrix[14],
|
||||
matrix[15]);
|
||||
|
||||
dbugfile_output(buffer);
|
||||
}
|
||||
|
||||
void dbugfile_print_matrix_3x3(int line, char *file, float *matrix, char *text)
|
||||
{
|
||||
if(dbugfile_init_var == false)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if(matrix == NULL)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
// find last slash (for PC) to crop file path
|
||||
char *ptr = strrchr(file, '\\');
|
||||
|
||||
if(ptr == NULL)
|
||||
{
|
||||
ptr = file;
|
||||
}
|
||||
else
|
||||
{
|
||||
ptr++;
|
||||
}
|
||||
|
||||
if(text == NULL)
|
||||
{
|
||||
text = "";
|
||||
}
|
||||
|
||||
char buffer[1000];
|
||||
|
||||
sprintf(buffer,"[%s,%4d] Matrix %s:\n"
|
||||
"%f %f %f\n"
|
||||
"%f %f %f\n"
|
||||
"%f %f %f\n",
|
||||
ptr,line, text,
|
||||
matrix[0],
|
||||
matrix[1],
|
||||
matrix[2],
|
||||
matrix[3],
|
||||
matrix[4],
|
||||
matrix[5],
|
||||
matrix[6],
|
||||
matrix[7],
|
||||
matrix[8]);
|
||||
|
||||
dbugfile_output(buffer);
|
||||
}
|
||||
|
||||
void dbugfile_print_counter(int line, char *file, int counter_num, char *string)
|
||||
{
|
||||
char buffer[1000];
|
||||
strcpy(buffer, string);
|
||||
strcat(buffer, " %d");
|
||||
|
||||
dbugfile_sprintf(line, file, buffer, dbugfile_counters[counter_num]);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -1,9 +1,14 @@
|
||||
#ifndef _DBUGFILE_HEADER_
|
||||
#define _DBUGFILE_HEADER_
|
||||
|
||||
#define MAX_COUNTERS 10
|
||||
|
||||
void dbugfile_init();
|
||||
void dbugfile_deinit();
|
||||
void dbugfile_sprintf(int line, char *file, const char *format, ...);
|
||||
void dbugfile_print_matrix_3x3(int line, char *file, float *matrix, char *text);
|
||||
void dbugfile_print_matrix_4x4(int line, char *file, float *matrix, char *text);
|
||||
void dbugfile_print_counter(int line, char *file, int counter_num, char *string);
|
||||
|
||||
#ifdef DBUGFILE_ACTIVE
|
||||
|
||||
@@ -16,9 +21,19 @@ void dbugfile_sprintf(int line, char *file, const char *format, ...);
|
||||
#define DBUGFILE_OUTPUT_3(t,a,b,c) dbugfile_sprintf(__LINE__, __FILE__, t,a,b,c);
|
||||
#define DBUGFILE_OUTPUT_4(t,a,b,c,d) dbugfile_sprintf(__LINE__, __FILE__, t,a,b,c,d);
|
||||
#define DBUGFILE_OUTPUT_5(t,a,b,c,d,e) dbugfile_sprintf(__LINE__, __FILE__, t,a,b,c,d,e);
|
||||
#define DBUGFILE_OUTPUT_6(t,a,b,c,d,e,f) dbugfile_sprintf(__LINE__, __FILE__, t,a,b,c,d,e,f;
|
||||
#define DBUGFILE_OUTPUT_6(t,a,b,c,d,e,f) dbugfile_sprintf(__LINE__, __FILE__, t,a,b,c,d,e,f);
|
||||
#define DBUGFILE_OUTPUT_7(t,a,b,c,d,e,f,g) dbugfile_sprintf(__LINE__, __FILE__, t,a,b,c,d,e,f,g);
|
||||
#define DBUGFILE_OUTPUT_9(t,a,b,c,d,e,f,g,h) dbugfile_sprintf(__LINE__, __FILE__, t,a,b,c,d,e,f,g,h);
|
||||
#define DBUGFILE_OUTPUT_8(t,a,b,c,d,e,f,g,h) dbugfile_sprintf(__LINE__, __FILE__, t,a,b,c,d,e,f,g,h);
|
||||
#define DBUGFILE_OUTPUT_9(t,a,b,c,d,e,f,g,h,i) dbugfile_sprintf(__LINE__, __FILE__, t,a,b,c,d,e,f,g,h,i);
|
||||
|
||||
#define DBUGFILE_OUTPUT_MATRIX_3X3(m,t) dbugfile_print_matrix_3x3(__LINE__, __FILE__, m,t);
|
||||
#define DBUGFILE_OUTPUT_MATRIX_4X4(m,t) dbugfile_print_matrix_4x4(__LINE__, __FILE__, m,t);
|
||||
|
||||
extern int dbugfile_counters[MAX_COUNTERS];
|
||||
#define DBUGFILE_INC_COUNTER(n) if(n < MAX_COUNTERS) dbugfile_counters[n]++;
|
||||
#define DBUGFILE_DEC_COUNTER(n) if(n < MAX_COUNTERS) dbugfile_counters[n]--;
|
||||
|
||||
#define DBUGFILE_OUTPUT_COUNTER(n,s) dbugfile_print_counter(__LINE__, __FILE__, n, s);
|
||||
|
||||
#else
|
||||
|
||||
@@ -33,7 +48,16 @@ void dbugfile_sprintf(int line, char *file, const char *format, ...);
|
||||
#define DBUGFILE_OUTPUT_5(t,a,b,c,d,e) ;
|
||||
#define DBUGFILE_OUTPUT_6(t,a,b,c,d,e,f) ;
|
||||
#define DBUGFILE_OUTPUT_7(t,a,b,c,d,e,f,g) ;
|
||||
#define DBUGFILE_OUTPUT_9(t,a,b,c,d,e,f,g,h) ;
|
||||
#define DBUGFILE_OUTPUT_8(t,a,b,c,d,e,f,g,h) ;
|
||||
#define DBUGFILE_OUTPUT_9(t,a,b,c,d,e,f,g,h,i) ;
|
||||
|
||||
#define DBUGFILE_OUTPUT_MATRIX_3X3(m,t) ;
|
||||
#define DBUGFILE_OUTPUT_MATRIX_4X4(m,t) ;
|
||||
|
||||
#define DBUGFILE_INC_COUNTER(n) ;
|
||||
#define DBUGFILE_DEC_COUNTER(n) ;
|
||||
|
||||
#define DBUGFILE_OUTPUT_COUNTER(n,s) ;
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -57,7 +57,8 @@ static int back_faceing;
|
||||
int decal_find_next(object *obj){
|
||||
ship *shipp = &Ships[obj->instance];
|
||||
int oldest = shipp->decals[0].timestamp;
|
||||
for(int i = 0; i < MAX_SHIP_DECALS; i++){
|
||||
int i;
|
||||
for(i = 0; i < MAX_SHIP_DECALS; i++){
|
||||
if(shipp->decals[i].is_valid != 1){ //use up all the unused decals first
|
||||
return i%MAX_SHIP_DECALS;
|
||||
}
|
||||
@@ -475,7 +476,8 @@ void decal_create_tmappoly(ubyte * p)
|
||||
}
|
||||
|
||||
//this is for faster testing, I'm not sure if it's realy makeing it faster or not
|
||||
for(int k = 0; k<6; k++){
|
||||
int k;
|
||||
for(k = 0; k<6; k++){
|
||||
int first_good = -1;
|
||||
for(i = 0; ((i< nv) && (first_good == -1)); i++){
|
||||
if(fvi_point_dist_plane(&decal_cube_plane[k][0], &decal_cube_plane[k][1], decal_point_list[decal_poly[i]]) > 0){
|
||||
@@ -757,11 +759,12 @@ void decal_render_all(object * obj){
|
||||
decal *dec = &shipp->decals[h];
|
||||
if(dec->is_valid){
|
||||
mprintf(("decal %d is valid, and has %d polys\n",h,dec->n_poly));
|
||||
vector g_pos;
|
||||
vm_vec_add(&g_pos, &dec->position, &obj->pos);
|
||||
float dist = vm_vec_dist_quick(&g_pos, &View_position);
|
||||
// vector g_pos;
|
||||
// vm_vec_add(&g_pos, &dec->position, &obj->pos);
|
||||
float dist = vm_vec_dist(&dec->position, &View_position);
|
||||
if(dist < (dec->radius*10)){
|
||||
mprintf(("decal %d too far away to be drawn %0.2f\n", h, dist));
|
||||
// HUD_printf("decal %d too far away to be drawn %0.2f\n", h, dist);
|
||||
continue;
|
||||
}
|
||||
for(int i = 0; i<dec->n_poly; i++){
|
||||
@@ -773,6 +776,7 @@ void decal_render_all(object * obj){
|
||||
// vector pos;
|
||||
// vm_vert2vec(&vecs[j], &pos);
|
||||
// vm_vec_add2(&pos, &obj->pos);
|
||||
if(dec->poly[i].point[j]<0 || dec->poly[i].point[j]>1000)break;
|
||||
vector pnt = dec->vert[dec->poly[i].point[j]];
|
||||
if(dec->submodel_parent != pm->detail[0]){
|
||||
matrix m;
|
||||
@@ -805,6 +809,8 @@ mprintf(("vert %d at x %0.2f y %0.2f z %0.2f u %0.2f v %0.2f\n", j, vecs[j].x, v
|
||||
*/
|
||||
}
|
||||
|
||||
if(dec->poly[i].point[j]<0 || dec->poly[i].point[j]>1000)break;
|
||||
|
||||
gr_set_bitmap(dec->texture, 0, GR_BITBLT_MODE_NORMAL, 1.0f );
|
||||
if((dec->poly[i].backfaced == 1) && (dec->backfaced_texture > -1)){
|
||||
gr_set_bitmap(dec->backfaced_texture, 0, GR_BITBLT_MODE_NORMAL, 1.0f );
|
||||
|
||||
@@ -77,4 +77,4 @@ int decal_create_sub(void *model_ptr);
|
||||
/*
|
||||
|
||||
int decal_is_in_face(int n, vertex vertlist[n]);//sees if a poly is inside a decal: 0 is yes, 1 is sort of, -1 is no
|
||||
*/
|
||||
*/
|
||||
Binary file not shown.
@@ -64,9 +64,6 @@ bool dx8show_play_cutscene(char *movie_file)
|
||||
{
|
||||
HRESULT hr;
|
||||
|
||||
// Initialize COM
|
||||
RUN_FUNCTION_ROF(CoInitialize(NULL));
|
||||
|
||||
// Get DirectShow interfaces
|
||||
RUN_FUNCTION_ROF(get_interfaces());
|
||||
|
||||
@@ -90,7 +87,6 @@ bool dx8show_play_cutscene(char *movie_file)
|
||||
|
||||
// Release DirectShow interfaces
|
||||
cleanup_interfaces();
|
||||
CoUninitialize();
|
||||
|
||||
return true;
|
||||
}
|
||||
@@ -141,7 +137,7 @@ bool play_media(LPTSTR movie_filename)
|
||||
//
|
||||
RUN_FUNCTION(pVW->put_MessageDrain((OAHWND) internal_hwnd));
|
||||
|
||||
if(set_fullscreen() == false)
|
||||
if(set_fullscreen() == false)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
Binary file not shown.
Binary file not shown.
@@ -305,6 +305,14 @@ typedef struct _D3DTLVERTEX {
|
||||
D3DVALUE tv;
|
||||
D3DVALUE dvTV;
|
||||
};
|
||||
union {
|
||||
D3DVALUE env_u; /* Texture coordinates */
|
||||
D3DVALUE dvenv_U;
|
||||
};
|
||||
union {
|
||||
D3DVALUE env_v;
|
||||
D3DVALUE dvenv_V;
|
||||
};
|
||||
#if (defined __cplusplus) && (defined D3D_OVERLOADS)
|
||||
_D3DTLVERTEX() { }
|
||||
_D3DTLVERTEX(const D3DVECTOR& v, float _rhw,
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/ExceptionHandler/ExceptionHandler.cpp $
|
||||
* $Revision: 2.0 $
|
||||
* $Date: 2002-06-03 04:02:22 $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2003-03-02 05:10:42 $
|
||||
* $Author: penguin $
|
||||
*
|
||||
* Main file for dealing with exception handling
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.0 2002/06/03 04:02:22 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
* Revision 1.1 2002/05/02 18:03:05 mharris
|
||||
* Initial checkin - converted filenames and includes to lower case
|
||||
*
|
||||
@@ -139,7 +142,9 @@ static void PrintTime(char *output, FILETIME TimeToPrint)
|
||||
static void ShowModuleInfo(HANDLE LogFile, HINSTANCE ModuleHandle)
|
||||
{
|
||||
char ModName[MAX_PATH];
|
||||
#ifdef _MSC_VER
|
||||
__try {
|
||||
#endif
|
||||
if (GetModuleFileName(ModuleHandle, ModName, sizeof(ModName)) > 0) {
|
||||
// If GetModuleFileName returns greater than zero then this must
|
||||
// be a valid code module address. Therefore we can try to walk
|
||||
@@ -174,11 +179,13 @@ static void ShowModuleInfo(HANDLE LogFile, HINSTANCE ModuleHandle)
|
||||
ModName, ModuleHandle, FileSize,
|
||||
NTHeader->FileHeader.TimeDateStamp, TimeBuffer);
|
||||
}
|
||||
#ifdef _MSC_VER
|
||||
}
|
||||
// Handle any exceptions by continuing from this point.
|
||||
__except(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
// Scan memory looking for code modules (DLLs or EXEs). VirtualQuery is used
|
||||
@@ -436,15 +443,19 @@ int __cdecl RecordExceptionInfo(PEXCEPTION_POINTERS data, const char *Message)
|
||||
// exception handler will print '??'.
|
||||
unsigned char *code = (unsigned char*)Context->Eip;
|
||||
for (int codebyte = 0; codebyte < NumCodeBytes; codebyte++) {
|
||||
#ifdef _MSC_VER
|
||||
__try {
|
||||
#endif
|
||||
hprintf(LogFile, "%02x ", code[codebyte]);
|
||||
|
||||
#ifdef _MSC_VER
|
||||
}
|
||||
__except(EXCEPTION_EXECUTE_HANDLER) {
|
||||
hprintf(LogFile, "?? ");
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
#ifdef _MSC_VER
|
||||
// Time to print part or all of the stack to the error log. This allows
|
||||
// us to figure out the call stack, parameters, local variables, etc.
|
||||
hprintf(LogFile, "\r\n"
|
||||
@@ -500,6 +511,7 @@ int __cdecl RecordExceptionInfo(PEXCEPTION_POINTERS data, const char *Message)
|
||||
__except(EXCEPTION_EXECUTE_HANDLER) {
|
||||
hprintf(LogFile, "Exception encountered during stack dump.\r\n");
|
||||
}
|
||||
#endif
|
||||
|
||||
RecordModuleList(LogFile);
|
||||
|
||||
|
||||
@@ -9,13 +9,23 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Fireball/FireBalls.cpp $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2002-12-07 01:37:41 $
|
||||
* $Author: bobboau $
|
||||
* $Revision: 2.5 $
|
||||
* $Date: 2003-03-19 06:23:27 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* Code to move, render and otherwise deal with fireballs.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.4 2003/03/18 01:44:30 Goober5000
|
||||
* fixed some misspellings
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.3 2002/12/07 01:37:41 bobboau
|
||||
* inital decals code, if you are worried a bug is being caused by the decals code it's only references are in,
|
||||
* collideshipweapon.cpp line 262, beam.cpp line 2771, and modelinterp.cpp line 2949.
|
||||
* it needs a better renderer, but is in prety good shape for now,
|
||||
* I also (think) I squashed a bug in the warpmodel code
|
||||
*
|
||||
* Revision 2.2 2002/11/14 04:18:16 bobboau
|
||||
* added warp model and type 1 glow points
|
||||
* and well as made the new glow file type,
|
||||
@@ -126,7 +136,7 @@
|
||||
* Made warp in glow page in
|
||||
*
|
||||
* 67 3/27/98 2:17p Lawrance
|
||||
* Don't play warphole closing for non-captial sized warp effects
|
||||
* Don't play warphole closing for non-capital sized warp effects
|
||||
*
|
||||
* 66 3/26/98 5:44p Lawrance
|
||||
* take out debug comments for warphole sounds playing
|
||||
@@ -357,34 +367,6 @@ int wm;
|
||||
|
||||
#define MAX_FIREBALL_LOD 4
|
||||
|
||||
typedef struct fireball_lod {
|
||||
char filename[MAX_FILENAME_LEN];
|
||||
int bitmap_id;
|
||||
int num_frames;
|
||||
int fps;
|
||||
} fireball_lod;
|
||||
|
||||
typedef struct fireball_info {
|
||||
int lod_count;
|
||||
fireball_lod lod[4];
|
||||
} fireball_info;
|
||||
|
||||
// flag values for fireball struct flags member
|
||||
#define FBF_WARP_CLOSE_SOUND_PLAYED (1<<0)
|
||||
#define FBF_WARP_CAPTIAL_SIZE (1<<1)
|
||||
#define FBF_WARP_CRUISER_SIZE (1<<2)
|
||||
|
||||
typedef struct fireball {
|
||||
int objnum; // If -1 this object is unused
|
||||
int fireball_info_index; // Index into Fireball_info array
|
||||
int current_bitmap;
|
||||
int orient; // For fireballs, which orientation. For warps, 0 is warpin, 1 is warpout
|
||||
int flags; // see #define FBF_*
|
||||
char lod; // current LOD
|
||||
float time_elapsed; // in seconds
|
||||
float total_time; // total lifetime of animation in seconds
|
||||
} fireball;
|
||||
|
||||
#define MAX_FIREBALLS 200
|
||||
|
||||
fireball Fireballs[MAX_FIREBALLS];
|
||||
@@ -417,12 +399,16 @@ void fireball_play_warphole_open_sound(int ship_class, fireball *fb)
|
||||
if((ship_class >= 0) && (ship_class < Num_ship_types)){
|
||||
if ( Ship_info[ship_class].flags & SIF_HUGE_SHIP ) {
|
||||
sound_index = SND_CAPITAL_WARP_IN;
|
||||
fb->flags |= FBF_WARP_CAPTIAL_SIZE;
|
||||
fb->flags |= FBF_WARP_CAPITAL_SIZE;
|
||||
} else if ( Ship_info[ship_class].flags & SIF_BIG_SHIP ) {
|
||||
range_multiplier = 6.0f;
|
||||
fb->flags |= FBF_WARP_CRUISER_SIZE;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
sound_index = fb->warp_open_sound_index;
|
||||
}
|
||||
|
||||
snd_play_3d(&Snds[sound_index], &fireball_objp->pos, &Eye_position, fireball_objp->radius, NULL, 0, 1.0f, SND_PRIORITY_DOUBLE_INSTANCE, NULL, range_multiplier); // play warp sound effect
|
||||
}
|
||||
@@ -438,10 +424,12 @@ void fireball_play_warphole_close_sound(fireball *fb)
|
||||
|
||||
sound_index = SND_WARP_OUT;
|
||||
|
||||
if ( fb->flags & FBF_WARP_CAPTIAL_SIZE ) {
|
||||
if ( fb->flags & FBF_WARP_CAPITAL_SIZE ) {
|
||||
sound_index = SND_CAPITAL_WARP_OUT;
|
||||
} else if ( fb->flags & FBF_WARP_VIA_SEXP ) {
|
||||
sound_index = fb->warp_close_sound_index;
|
||||
} else {
|
||||
// AL 27-3-98: Decided that warphole closing is only required for captial ship sized warp effects.
|
||||
// AL 27-3-98: Decided that warphole closing is only required for capital ship sized warp effects.
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -650,7 +638,7 @@ void fireball_render(object * obj)
|
||||
// obj->alt_rad = rad;
|
||||
|
||||
|
||||
warpin_render(&obj->orient, &obj->pos, Fireballs[num].current_bitmap, rad, percent_life, obj->radius );
|
||||
warpin_render(&obj->orient, &obj->pos, Fireballs[num].current_bitmap, rad, percent_life, obj->radius, (Fireballs[num].flags & FBF_WARP_FORCE_OLD) );
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -995,7 +983,7 @@ int fireball_get_lod(vector *pos, fireball_info *fd, float size)
|
||||
}
|
||||
|
||||
// Create a fireball, return object index.
|
||||
int fireball_create( vector * pos, int fireball_type, int parent_obj, float size, int reverse, vector *velocity, float warp_lifetime, int ship_class, matrix *orient_override, int low_res)
|
||||
int fireball_create( vector * pos, int fireball_type, int parent_obj, float size, int reverse, vector *velocity, float warp_lifetime, int ship_class, matrix *orient_override, int low_res, int extra_flags, int warp_open_sound, int warp_close_sound)
|
||||
{
|
||||
int n, objnum, fb_lod;
|
||||
object *obj;
|
||||
@@ -1064,7 +1052,11 @@ int fireball_create( vector * pos, int fireball_type, int parent_obj, float size
|
||||
fl = &fd->lod[fb_lod];
|
||||
|
||||
fb->lod = (char)fb_lod;
|
||||
fb->flags = 0;
|
||||
|
||||
fb->flags = extra_flags;
|
||||
fb->warp_open_sound_index = warp_open_sound;
|
||||
fb->warp_close_sound_index = warp_close_sound;
|
||||
|
||||
matrix orient;
|
||||
if(orient_override != NULL){
|
||||
orient = *orient_override;
|
||||
|
||||
@@ -9,13 +9,22 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Fireball/FireBalls.h $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2002-11-14 04:18:16 $
|
||||
* $Author: bobboau $
|
||||
* $Revision: 2.4 $
|
||||
* $Date: 2003-03-19 06:23:27 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* Prototypes for fireball functions
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.3 2003/03/02 05:12:39 penguin
|
||||
* Moved "extern int wm" declaration inside the header #ifdef block
|
||||
* - penguin
|
||||
*
|
||||
* Revision 2.2 2002/11/14 04:18:16 bobboau
|
||||
* added warp model and type 1 glow points
|
||||
* and well as made the new glow file type,
|
||||
* some general improvement to fighter beams,
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -178,6 +187,40 @@
|
||||
|
||||
#define FIREBALL_NUM_LARGE_EXPLOSIONS 2
|
||||
|
||||
// all this moved here by Goober5000 because it makes more sense in the H file
|
||||
typedef struct fireball_lod {
|
||||
char filename[MAX_FILENAME_LEN];
|
||||
int bitmap_id;
|
||||
int num_frames;
|
||||
int fps;
|
||||
} fireball_lod;
|
||||
|
||||
typedef struct fireball_info {
|
||||
int lod_count;
|
||||
fireball_lod lod[4];
|
||||
} fireball_info;
|
||||
|
||||
// flag values for fireball struct flags member
|
||||
#define FBF_WARP_CLOSE_SOUND_PLAYED (1<<0)
|
||||
#define FBF_WARP_CAPITAL_SIZE (1<<1)
|
||||
#define FBF_WARP_CRUISER_SIZE (1<<2)
|
||||
#define FBF_WARP_FORCE_OLD (1<<3) // Goober5000
|
||||
#define FBF_WARP_VIA_SEXP (1<<4) // Goober5000
|
||||
|
||||
typedef struct fireball {
|
||||
int objnum; // If -1 this object is unused
|
||||
int fireball_info_index; // Index into Fireball_info array
|
||||
int current_bitmap;
|
||||
int orient; // For fireballs, which orientation. For warps, 0 is warpin, 1 is warpout
|
||||
int flags; // see #define FBF_*
|
||||
char lod; // current LOD
|
||||
float time_elapsed; // in seconds
|
||||
float total_time; // total lifetime of animation in seconds
|
||||
int warp_open_sound_index; // for warp-effect - Goober5000
|
||||
int warp_close_sound_index; // for warp-effect - Goober5000
|
||||
} fireball;
|
||||
// end move
|
||||
|
||||
void fireball_init();
|
||||
void fireball_render(object * obj);
|
||||
void fireball_delete( object * obj );
|
||||
@@ -187,7 +230,7 @@ void fireball_process_post(object * obj, float frame_time);
|
||||
// reversed is for warp_in/out effects
|
||||
// Velocity: If not NULL, the fireball will move at a constant velocity.
|
||||
// warp_lifetime: If warp_lifetime > 0.0f then makes the explosion loop so it lasts this long. Only works for warp effect
|
||||
int fireball_create(vector *pos, int fireball_type, int parent_obj, float size, int reversed=0, vector *velocity=NULL, float warp_lifetime=0.0f, int ship_class=-1, matrix *orient=NULL, int low_res=0);
|
||||
int fireball_create(vector *pos, int fireball_type, int parent_obj, float size, int reversed=0, vector *velocity=NULL, float warp_lifetime=0.0f, int ship_class=-1, matrix *orient=NULL, int low_res=0, int extra_flags=0, int warp_open_sound=0, int warp_close_sound=0);
|
||||
void fireball_render_plane(int plane);
|
||||
void fireball_close();
|
||||
void fireball_level_close();
|
||||
@@ -206,9 +249,9 @@ float fireball_lifeleft( object *obj );
|
||||
float fireball_lifeleft_percent( object *obj );
|
||||
|
||||
// internal function to draw warp grid.
|
||||
extern void warpin_render(matrix *orient, vector *pos, int texture_bitmap_num, float radius, float life_percent, float max_radius );
|
||||
extern void warpin_render(matrix *orient, vector *pos, int texture_bitmap_num, float radius, float life_percent, float max_radius, int force_old = 0 );
|
||||
extern int Warp_glow_bitmap; // Internal
|
||||
|
||||
#endif /* _FIREBALLS_H */
|
||||
extern int wm;
|
||||
|
||||
extern int wm;
|
||||
#endif /* _FIREBALLS_H */
|
||||
@@ -9,13 +9,34 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Fireball/WarpInEffect.cpp $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-01-05 23:41:50 $
|
||||
* $Revision: 2.8 $
|
||||
* $Date: 2003-08-31 06:00:41 $
|
||||
* $Author: bobboau $
|
||||
*
|
||||
* Code for rendering the warp in effects for ships
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.7 2003/03/19 23:06:40 Goober5000
|
||||
* bit o' housecleaning
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.6 2003/03/19 22:49:32 Goober5000
|
||||
* added some mission flags
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.5 2003/03/19 06:23:27 Goober5000
|
||||
* added warp-effect sexp
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.4 2003/03/18 01:44:30 Goober5000
|
||||
* fixed some misspellings
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.3 2003/01/05 23:41:50 bobboau
|
||||
* disabled decals (for now), removed the warp ray thingys,
|
||||
* made some better error mesages while parseing weapons and ships tbls,
|
||||
* and... oh ya, added glow mapping
|
||||
*
|
||||
* Revision 2.2 2002/11/14 04:18:16 bobboau
|
||||
* added warp model and type 1 glow points
|
||||
* and well as made the new glow file type,
|
||||
@@ -143,7 +164,8 @@
|
||||
#include "fireball/fireballs.h"
|
||||
#include "globalincs/linklist.h"
|
||||
#include "io/timer.h"
|
||||
#include "Weapon/Beam.h"
|
||||
#include "weapon/beam.h"
|
||||
#include "mission/missionparse.h"
|
||||
|
||||
extern int wm;
|
||||
|
||||
@@ -179,9 +201,8 @@ void draw_face( vertex *v1, vertex *v2, vertex *v3 )
|
||||
#define wR_VERTICES() do { g3_rotate_vertex(verts[0], &bottom1); g3_rotate_vertex(verts[1], &bottom2); g3_rotate_vertex(verts[2], &top2); g3_rotate_vertex(verts[3], &top1); } while(0);
|
||||
#define wP_VERTICES() do { for(idx=0; idx<4; idx++){ g3_project_vertex(verts[idx]); } } while(0);
|
||||
|
||||
void warpin_render(matrix *orient, vector *pos, int texture_bitmap_num, float radius, float life_percent, float max_radius )
|
||||
void warpin_render(matrix *orient, vector *pos, int texture_bitmap_num, float radius, float life_percent, float max_radius, int force_old)
|
||||
{
|
||||
|
||||
int i;
|
||||
|
||||
int saved_gr_zbuffering = gr_zbuffer_get();
|
||||
@@ -199,12 +220,12 @@ void warpin_render(matrix *orient, vector *pos, int texture_bitmap_num, float ra
|
||||
vector vecs[5];
|
||||
vertex verts[5];
|
||||
|
||||
if(wm > -1){
|
||||
if(wm > -1 && !force_old && !(The_mission.flags & MISSION_FLAG_OLD_WARP_EFFECT)){
|
||||
float model_Interp_scale_x = radius /20;
|
||||
float model_Interp_scale_y = radius /20;
|
||||
float model_Interp_scale_z = max_radius /20;
|
||||
float model_Interp_scale_z = radius /20;
|
||||
|
||||
set_warp_gloabals(model_Interp_scale_x, model_Interp_scale_y, model_Interp_scale_z, texture_bitmap_num, (radius/max_radius) );
|
||||
set_warp_globals(model_Interp_scale_x, model_Interp_scale_y, model_Interp_scale_z, texture_bitmap_num, (radius/max_radius) );
|
||||
|
||||
float dist = vm_vec_dist_quick( pos, &Eye_position );
|
||||
|
||||
@@ -219,7 +240,7 @@ void warpin_render(matrix *orient, vector *pos, int texture_bitmap_num, float ra
|
||||
model_Interp_scale_y = 1.0f;
|
||||
model_Interp_scale_z = 1.0f;
|
||||
|
||||
set_warp_gloabals(model_Interp_scale_x, model_Interp_scale_y, model_Interp_scale_z, -1, 0.0f);
|
||||
set_warp_globals(model_Interp_scale_x, model_Interp_scale_y, model_Interp_scale_z, -1, 0.0f);
|
||||
|
||||
gr_set_cull(0);
|
||||
/*
|
||||
|
||||
@@ -9,13 +9,117 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Freespace2/FreeSpace.cpp $
|
||||
* $Revision: 2.26 $
|
||||
* $Date: 2003-02-23 20:55:57 $
|
||||
* $Revision: 2.42 $
|
||||
* $Date: 2003-09-14 19:01:16 $
|
||||
* $Author: wmcoolmon $
|
||||
*
|
||||
* Freespace main body
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.41 2003/09/07 18:14:52 randomtiger
|
||||
* Checked in new speech code and calls from relevent modules to make it play.
|
||||
* Should all work now if setup properly with version 2.4 of the launcher.
|
||||
* FS2_SPEECH can be used to make the speech code compile if you have SAPI 5.1 SDK installed.
|
||||
* Otherwise the compile flag should not be set and it should all compile OK.
|
||||
*
|
||||
* - RT
|
||||
*
|
||||
* Revision 2.40 2003/09/05 04:25:29 Goober5000
|
||||
* well, let's see here...
|
||||
*
|
||||
* * persistent variables
|
||||
* * rotating gun barrels
|
||||
* * positive/negative numbers fixed
|
||||
* * sexps to trigger whether the player is controlled by AI
|
||||
* * sexp for force a subspace jump
|
||||
*
|
||||
* I think that's it :)
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.39 2003/08/22 07:35:08 bobboau
|
||||
* specular code should be bugless now,
|
||||
* cell shadeing has been added activated via the comand line '-cell',
|
||||
* 3D shockwave models, and a transparency method I'm calling edge and center alpha that could be usefull for other things, ask for details
|
||||
*
|
||||
* Revision 2.38 2003/08/21 20:54:38 randomtiger
|
||||
* Fixed switching - RT
|
||||
*
|
||||
* Revision 2.37 2003/08/16 03:52:23 bobboau
|
||||
* update for the specmapping code includeing
|
||||
* suport for seperate specular levels on lights and
|
||||
* optional strings for the stars table
|
||||
* code has been made more organised,
|
||||
* though there seems to be a bug in the state selecting code
|
||||
* resulting in the HUD being rendered incorectly
|
||||
* and specmapping failing ocasionaly
|
||||
*
|
||||
* Revision 2.36 2003/08/12 03:18:33 bobboau
|
||||
* Specular 'shine' mapping;
|
||||
* useing a phong lighting model I have made specular highlights
|
||||
* that are mapped to the model,
|
||||
* rendering them is still slow, but they look real purdy
|
||||
*
|
||||
* also 4 new (untested) comand lines, the XX is a floating point value
|
||||
* -spec_exp XX
|
||||
* the n value, you can set this from 0 to 200 (actualy more than that, but this is the recomended range), it will make the highlights bigger or smaller, defalt is 16.0 so start playing around there
|
||||
* -spec_point XX
|
||||
* -spec_static XX
|
||||
* -spec_tube XX
|
||||
* these are factors for the three diferent types of lights that FS uses, defalt is 1.0,
|
||||
* static is the local stars,
|
||||
* point is weapons/explosions/warp in/outs,
|
||||
* tube is beam weapons,
|
||||
* for thouse of you who think any of these lights are too bright you can configure them you're self for personal satisfaction
|
||||
*
|
||||
* Revision 2.35 2003/08/09 06:07:23 bobboau
|
||||
* slightly better implementation of the new zbuffer thing, it now checks only three diferent formats defalting to the 16 bit if neither the 24 or 32 bit versions are suported
|
||||
*
|
||||
* Revision 2.34 2003/08/06 17:42:47 phreak
|
||||
* since the launcher has a space between 1024 and 768 for the videocard string, i changed the detection to reflect this
|
||||
* also changed intro.mve to intro.avi since we can't use MVEs
|
||||
*
|
||||
* Revision 2.33 2003/07/06 00:19:24 randomtiger
|
||||
* Random Tiger 6/7/2003
|
||||
*
|
||||
* fs2_open now uses the registry entry 'VideocardFs2open' instead of 'Videocard' to store its video settings. To run fs2_open now you MUST use the launcher I have provided.
|
||||
*
|
||||
* Launcher binary: http://mysite.freeserve.com/thomaswhittaker/c_code/freespace/Launcher.rar
|
||||
* Launcher source code: http://mysite.freeserve.com/thomaswhittaker/c_code/freespace/Launcher_code.rar
|
||||
*
|
||||
* I have also taken the opertunity to fix a few bugs in the launcher and add a new feature to make selecting mods a bit easier.
|
||||
*
|
||||
* The launcher now uses some files in the freespace project so it should be put into CVS with the rest of the code inside the 'code' directory (still in its 'Launcher' dir of course). Currently the launcher wont compile since speech.cpp and speech.h arent in cvs yet. But once Roee has checked in that will be sorted.
|
||||
*
|
||||
* I have also removed the internal launcher from the D3D8 module.
|
||||
* Please contact me if you have any problems.
|
||||
*
|
||||
* When trying to run the exe after updating I get an error parsing 'rank.tbl' but im fairly sure thats nothing to do with me so I'll just have to leave it for now because I'm still using a 56K modem and cant afford to find out.
|
||||
*
|
||||
* Revision 2.32 2003/05/21 20:26:07 phreak
|
||||
* improved chase camera code.. you can now fight using this camera
|
||||
*
|
||||
* Revision 2.31 2003/05/09 23:54:59 phreak
|
||||
* game_loading_callback_init() now displays a user-defined loading screen
|
||||
*
|
||||
* Revision 2.30 2003/03/29 08:52:59 sesquipedalian
|
||||
* Added is-missile-locked sexp
|
||||
*
|
||||
* Revision 2.29 2003/03/22 06:11:51 Goober5000
|
||||
* added play-sound-from-table, play-sound-from-file, and close-sound-from-file
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.28 2003/03/18 10:07:01 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.27 2003/03/02 05:23:34 penguin
|
||||
* 1. Renamed or, og, ob vars to o_r, o_g, o_b ("or" caused gcc to choke).
|
||||
* 2. Added #ifndef NO_SOFTWARE_RENDERING around software rendering code
|
||||
* 3. Added #ifdef _MSC_VER around MSVC-specific exception handing code
|
||||
* - penguin
|
||||
*
|
||||
* Revision 2.26 2003/02/23 20:55:57 wmcoolmon
|
||||
* Refixed the splash screen loading code so that it still works with the demo VPs (Loading "2_PreLoad" and "PreLoad") and put logo support back in. Logo support does nothing unless "PreLoadLogo" and/or"2_PreLoadLogo" exist within the search path.
|
||||
*
|
||||
* Revision 2.25 2003/02/16 19:00:56 phreak
|
||||
* stupid typo -- my bad
|
||||
*
|
||||
@@ -75,7 +179,6 @@
|
||||
* Revision 2.10 2002/09/20 20:09:01 phreak
|
||||
* did glare stuff in game_sunspot_process()
|
||||
*
|
||||
<<<<<<< freespace.cpp
|
||||
*
|
||||
*
|
||||
* Revision 2.51 2002/08/04 2`:08:55 PhReAk
|
||||
@@ -84,7 +187,6 @@
|
||||
* Revision 2.51 2002/08/04 20:04:35 PhReAk
|
||||
* Draw FPS when running debug build
|
||||
*
|
||||
=======
|
||||
* Revision 2.9 2002/08/28 10:51:04 randomtiger
|
||||
* Woh! I sure as hell didnt modify all these files it says I did.
|
||||
* I will put this down to the branch! Note: I did start from a fresh checkout!
|
||||
@@ -92,11 +194,53 @@
|
||||
* Revision 2.8 2002/08/27 13:38:57 penguin
|
||||
* Moved DirectX8 stuff to directx8 branch; reverted to previous
|
||||
*
|
||||
* Revision 2.6.2.6 2002/11/04 03:02:28 randomtiger
|
||||
*
|
||||
* I have made some fairly drastic changes to the bumpman system. Now functionality can be engine dependant.
|
||||
* This is so D3D8 can call its own loading code that will allow good efficient loading and use of textures that it desparately needs without
|
||||
* turning bumpman.cpp into a total hook infested nightmare. Note the new bumpman code is still relying on a few of the of the old functions and all of the old bumpman arrays.
|
||||
*
|
||||
* I have done this by adding to the gr_screen list of function pointers that are set up by the engines init functions.
|
||||
* I have named the define calls the same name as the original 'bm_' functions so that I havent had to change names all through the code.
|
||||
*
|
||||
* Rolled back to an old version of bumpman and made a few changes.
|
||||
* Added new files: grd3dbumpman.cpp and .h
|
||||
* Moved the bitmap init function to after the 3D engine is initialised
|
||||
* Added includes where needed
|
||||
* Disabled (for now) the D3D8 TGA loading - RT
|
||||
*
|
||||
* Revision 2.6.2.5 2002/10/26 09:55:41 unknownplayer
|
||||
*
|
||||
* Fixed the nebula flicker bug. Check the NO_DIRECT3D conditional compile
|
||||
* sections in the future for bits of code which may cause problems due to hacks
|
||||
* correcting for DirectX5 that no longer apply.
|
||||
*
|
||||
* Revision 2.6.2.4 2002/09/24 18:56:42 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.6.2.2 2002/08/28 12:39:36 randomtiger
|
||||
* OK, this should be a commit to the DX branch or Im going to be in a lot of trouble.
|
||||
* The movie and dx8show files have been cleaned up big time.
|
||||
* My debug system is in but has NO EFFECT at all unless a compiler flag is turned on, check h file for details.
|
||||
* Aside from that a few changes to help the movie code work properly.
|
||||
* Works on most things including GF4 and Voodoo 3. However may not work properly on a voodoo 2.
|
||||
* Im going to leave this as a bug for now, serves you right for buying voodoo!
|
||||
*
|
||||
* Revision 2.6.2.1 2002/08/27 13:21:45 penguin
|
||||
* Moved to directx8 branch
|
||||
*
|
||||
* Revision 2.7 2002/08/18 19:48:29 randomtiger
|
||||
* Added new lib files: strmiids and ddraw to get dshow working
|
||||
* Added new command line parameter to active direct show movie play: -dshowvid
|
||||
* Uncommented movie_play calls and includes
|
||||
*
|
||||
* Revision 2.6 2002/08/13 03:34:00 penguin
|
||||
* 1. Disable CD checking
|
||||
* 2. Add CVS tag to version string
|
||||
*
|
||||
>>>>>>> 2.9
|
||||
* Revision 2.5 2002/08/04 05:11:05 penguin
|
||||
* Don't write version to registry; change way version string is formatted
|
||||
*
|
||||
@@ -698,7 +842,7 @@ static const char RCS_Name[] = "$Name: not supported by cvs2svn $";
|
||||
#include "freespace2/levelpaging.h"
|
||||
#include "observer/observer.h"
|
||||
#include "cutscene/cutscenes.h"
|
||||
// #include "movie.h"
|
||||
#include "cutscene/movie.h"
|
||||
#include "weapon/emp.h"
|
||||
#include "localization/localize.h"
|
||||
#include "osapi/osregistry.h"
|
||||
@@ -724,9 +868,11 @@ static const char RCS_Name[] = "$Name: not supported by cvs2svn $";
|
||||
#include "hud/hudshield.h"
|
||||
#include "ship/shiphit.h"
|
||||
#include "missionui/missionloopbrief.h"
|
||||
#include "sound/fsspeech.h"
|
||||
#include "debugconsole/dbugfile.h"
|
||||
#include "debugconsole/timerbar.h"
|
||||
|
||||
|
||||
#ifdef NDEBUG
|
||||
#ifdef FRED
|
||||
#error macro FRED is defined when trying to build release Fred. Please undefine FRED macro in build settings
|
||||
@@ -764,6 +910,7 @@ void common_play_highlight_sound()
|
||||
}
|
||||
#endif
|
||||
|
||||
extern bool frame_rate_display;
|
||||
|
||||
void game_level_init(int seed = -1);
|
||||
void game_post_level_init();
|
||||
@@ -788,15 +935,12 @@ typedef struct big_expl_flash {
|
||||
#define DEFAULT_SKILL_LEVEL 1
|
||||
int Game_skill_level = DEFAULT_SKILL_LEVEL;
|
||||
|
||||
#define VIEWER_ZOOM_DEFAULT 0.75f // Default viewer zoom, 0.625 as per multi-lateral agreement on 3/24/97
|
||||
float VIEWER_ZOOM_DEFAULT = 0.75f; // Default viewer zoom, 0.625 as per multi-lateral agreement on 3/24/97
|
||||
float Viewer_zoom = VIEWER_ZOOM_DEFAULT;
|
||||
|
||||
#define EXE_FNAME ("fs2.exe")
|
||||
|
||||
#if 0 // no launcher for fs2_open
|
||||
#define LAUNCHER_FNAME ("freespace2.exe")
|
||||
#endif
|
||||
|
||||
#define LAUNCHER_FNAME ("Launcher.exe")
|
||||
|
||||
// JAS: Code for warphole camera.
|
||||
// Needs to be cleaned up.
|
||||
@@ -1529,7 +1673,7 @@ void game_flash_diminish(float frametime)
|
||||
|
||||
if ( Use_palette_flash ) {
|
||||
int r,g,b;
|
||||
static int or=0, og=0, ob=0;
|
||||
static int o_r=0, o_g=0, o_b=0;
|
||||
|
||||
// Change the 200 to change the color range of colors.
|
||||
r = fl2i( Game_flash_red*128.0f );
|
||||
@@ -1557,9 +1701,9 @@ void game_flash_diminish(float frametime)
|
||||
|
||||
//mprintf(( "Flash! %d,%d,%d\n", r, g, b ));
|
||||
|
||||
or = r;
|
||||
og = g;
|
||||
ob = b;
|
||||
o_r = r;
|
||||
o_g = g;
|
||||
o_b = b;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1568,7 +1712,11 @@ void game_flash_diminish(float frametime)
|
||||
|
||||
void game_level_close()
|
||||
{
|
||||
// save player-persistent variables
|
||||
mission_campaign_save_player_persistent_variables(); // Goober5000
|
||||
|
||||
// De-Initialize the game subsystems
|
||||
sexp_music_close(); // Goober5000
|
||||
message_mission_shutdown();
|
||||
event_music_level_close();
|
||||
game_stop_looped_sounds();
|
||||
@@ -1763,6 +1911,10 @@ void game_post_level_init()
|
||||
mission_hotkey_set_defaults(); // set up the default hotkeys (from mission file)
|
||||
|
||||
stars_level_init();
|
||||
|
||||
// While trying to track down the nebula bug I encountered a cool effect -
|
||||
// comment this out to fly a mission in a void. Maybe we should develop this
|
||||
// into a full effect or something, because it is seriously cool.
|
||||
neb2_level_init();
|
||||
|
||||
#ifndef NDEBUG
|
||||
@@ -1826,7 +1978,7 @@ void game_loading_callback(int count)
|
||||
Game_loading_frame++;
|
||||
cbitmap = anim_get_next_frame(Game_loading_ani_instance);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ( cbitmap > -1 ) {
|
||||
if ( Game_loading_background > -1 ) {
|
||||
@@ -1848,7 +2000,12 @@ void game_loading_callback_init()
|
||||
{
|
||||
Assert( Game_loading_callback_inited==0 );
|
||||
|
||||
Game_loading_background = bm_load(Game_loading_bground_fname[gr_screen.res]);
|
||||
Game_loading_background = bm_load(The_mission.loading_screen[gr_screen.res]);
|
||||
|
||||
if (Game_loading_background < 0)
|
||||
{
|
||||
Game_loading_background = bm_load(Game_loading_bground_fname[gr_screen.res]);
|
||||
}
|
||||
//common_set_interface_palette("InterfacePalette"); // set the interface palette
|
||||
|
||||
|
||||
@@ -2034,7 +2191,7 @@ int game_start_mission()
|
||||
game_post_level_init();
|
||||
load_post_level_init = time(NULL) - load_post_level_init;
|
||||
|
||||
#ifndef NDEBUG
|
||||
#if (!defined(NDEBUG)) && (!defined(NO_SOFTWARE_RENDERING))
|
||||
{
|
||||
void Do_model_timings_test();
|
||||
Do_model_timings_test();
|
||||
@@ -2235,9 +2392,6 @@ void game_init()
|
||||
load_filter_info();
|
||||
#endif
|
||||
|
||||
extern void bm_init();
|
||||
bm_init();
|
||||
|
||||
// encrypt stuff
|
||||
encrypt_init();
|
||||
|
||||
@@ -2291,10 +2445,6 @@ void game_init()
|
||||
// we probably need our own registry key (and a launcher to write them)
|
||||
|
||||
// // Output version numbers to registry for auto patching purposes
|
||||
// os_config_write_uint(NOX("Version"), NOX("Major"), FS_VERSION_MAJOR);
|
||||
// os_config_write_uint(NOX("Version"), NOX("Minor"), FS_VERSION_MINOR);
|
||||
// os_config_write_uint(NOX("Version"), NOX("Build"), FS_VERSION_BUILD);
|
||||
|
||||
Use_joy_mouse = 0; //os_config_read_uint( NULL, NOX("JoystickMovesCursor"), 1 );
|
||||
//Use_palette_flash = os_config_read_uint( NULL, NOX("PaletteFlash"), 0 );
|
||||
Use_low_mem = os_config_read_uint( NULL, NOX("LowMem"), 0 );
|
||||
@@ -2307,6 +2457,12 @@ void game_init()
|
||||
Asteroids_enabled = 1;
|
||||
#endif
|
||||
|
||||
#ifdef _WIN32
|
||||
movie_play( NOX("intro.avi"));
|
||||
movie_set_shutdown_fgx(true);
|
||||
|
||||
#endif
|
||||
|
||||
/////////////////////////////
|
||||
// SOUND INIT START
|
||||
/////////////////////////////
|
||||
@@ -2328,18 +2484,35 @@ void game_init()
|
||||
}
|
||||
|
||||
if (!Is_standalone) {
|
||||
|
||||
snd_init(use_a3d, use_eax);
|
||||
}
|
||||
|
||||
if(fsspeech_init() == false) {
|
||||
mprintf(("Failed to init speech\n"));
|
||||
}
|
||||
|
||||
/////////////////////////////
|
||||
// SOUND INIT END
|
||||
/////////////////////////////
|
||||
|
||||
ptr = os_config_read_string(NULL, NOX("Videocard"), NULL);
|
||||
if (ptr == NULL) {
|
||||
#ifdef _WIN32
|
||||
MessageBox((HWND)os_get_window(), XSTR("Please configure your system in the Launcher before running FS2.", 1446), XSTR("Attention!", 1447), MB_OK);
|
||||
ptr = os_config_read_string(NULL, NOX("VideocardFs2open"), NULL);
|
||||
|
||||
#if 0 // no launcher in fs2_open
|
||||
if (ptr == NULL )Error( LOCATION, "error reading registry, registry string 'VideocardFs2open' not present,\n this is why you are crashing,\n be sure to use the NEW launcher to set up you're registry,\n make sure you run it without internet explorer or windows explorer running" );
|
||||
|
||||
if (ptr == NULL || strstr(ptr, NOX("Direct 3D -") )) {
|
||||
#ifdef _WIN32
|
||||
if(strstr(ptr, NOX("Direct 3D -")))
|
||||
{
|
||||
MessageBox((HWND)os_get_window(),
|
||||
"Direct3D5 not supported in this build, please use launcher to set D3D8 or OGL settings",
|
||||
XSTR("Attention!", 1447), MB_OK);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
MessageBox((HWND)os_get_window(), XSTR("Please configure your system in the Launcher before running FS2.", 1446), XSTR("Attention!", 1447), MB_OK);
|
||||
}
|
||||
|
||||
// fire up the UpdateLauncher executable
|
||||
STARTUPINFO si;
|
||||
@@ -2364,7 +2537,6 @@ void game_init()
|
||||
if (!ret) {
|
||||
MessageBox((HWND)os_get_window(), XSTR("The Launcher could not be restarted.", 1450), XSTR("Error", 1451), MB_OK);
|
||||
}
|
||||
#endif
|
||||
|
||||
exit(1);
|
||||
|
||||
@@ -2423,15 +2595,15 @@ void game_init()
|
||||
|
||||
if (!Is_standalone && ptr && (strstr(ptr, NOX("3DFX Glide")))) {
|
||||
// regular or hi-res ?
|
||||
if(has_sparky_hi && strstr(ptr, NOX("(1024x768)"))){
|
||||
if(has_sparky_hi && strstr(ptr, NOX("(1024 x 768)"))){
|
||||
gr_init(GR_1024, GR_GLIDE);
|
||||
} else {
|
||||
gr_init(GR_640, GR_GLIDE);
|
||||
}
|
||||
|
||||
} else if (!Is_standalone && ptr && (strstr(ptr, NOX("Direct 3D -") ))) {
|
||||
} else if (!Is_standalone && ptr && (strstr(ptr, NOX("D3D8-") ))) {
|
||||
// regular or hi-res ?
|
||||
if(has_sparky_hi && strstr(ptr, NOX("(1024x768)"))){
|
||||
if(has_sparky_hi && strstr(ptr, NOX("(1024 x 768)"))){
|
||||
// Direct 3D
|
||||
trying_d3d = 1;
|
||||
gr_init(GR_1024, GR_DIRECT3D, depth);
|
||||
@@ -2443,7 +2615,7 @@ void game_init()
|
||||
|
||||
}
|
||||
} else if (!Is_standalone && ptr && (strstr(ptr, NOX("OpenGL -") ))){
|
||||
if (has_sparky_hi && strstr(ptr,NOX("1024x768"))){
|
||||
if (has_sparky_hi && strstr(ptr,NOX("1024 x 768"))){
|
||||
gr_init(GR_1024, GR_OPENGL, depth);
|
||||
} else {
|
||||
gr_init(GR_640, GR_OPENGL, depth);
|
||||
@@ -2490,6 +2662,9 @@ void game_init()
|
||||
#error unknown operating system
|
||||
#endif // ifdef WIN32
|
||||
|
||||
bm_init();
|
||||
// ENVMAP = bm_load("environment");
|
||||
|
||||
// Set the gamma
|
||||
ptr = os_config_read_string(NULL,NOX("Gamma"),NOX("1.80"));
|
||||
Freespace_gamma = (float)atof(ptr);
|
||||
@@ -2567,6 +2742,7 @@ void game_init()
|
||||
gamesnd_parse_soundstbl();
|
||||
radar_init();
|
||||
gameseq_init();
|
||||
|
||||
#ifndef NO_NETWORK
|
||||
multi_init();
|
||||
#endif // ifndef NO_NETWORK
|
||||
@@ -2579,9 +2755,7 @@ void game_init()
|
||||
player_controls_init();
|
||||
model_init();
|
||||
|
||||
//if(!Is_standalone){
|
||||
event_music_init();
|
||||
//}
|
||||
event_music_init();
|
||||
|
||||
obj_init();
|
||||
mflash_game_init();
|
||||
@@ -2591,9 +2765,9 @@ void game_init()
|
||||
player_init();
|
||||
mission_campaign_init(); // load in the default campaign
|
||||
anim_init();
|
||||
// navmap_init(); // init the navigation map system
|
||||
context_help_init();
|
||||
techroom_intel_init(); // parse species.tbl, load intel info
|
||||
techroom_intel_init(); // parse species.tbl, load intel info
|
||||
|
||||
#ifndef NO_NETWORK
|
||||
// initialize psnet
|
||||
psnet_init( Multi_options_g.protocol, Multi_options_g.port ); // initialize the networking code
|
||||
@@ -2619,6 +2793,7 @@ void game_init()
|
||||
// initialize alpha colors
|
||||
alpha_colors_init();
|
||||
|
||||
if(Cmdline_cell)cell_shaded_lightmap = bm_load("cellmap");
|
||||
Viewer_mode = 0;
|
||||
// Game_music_paused = 0;
|
||||
Game_paused = 0;
|
||||
@@ -2697,6 +2872,11 @@ void game_show_framerate()
|
||||
}
|
||||
|
||||
//mprintf(( "%s\n", text ));
|
||||
/* if(frame_rate_display && (flFrametime != 0.0f)){
|
||||
gr_set_color( 128, 255, 192 );
|
||||
gr_printf(15, 500, "fps: %f", 1.0f / flFrametime);
|
||||
}
|
||||
*/
|
||||
|
||||
#ifndef NDEBUG
|
||||
if ( Debug_dump_frames )
|
||||
@@ -2707,7 +2887,6 @@ void game_show_framerate()
|
||||
control_check_indicate();
|
||||
|
||||
// int bitmaps_used_this_frame, bitmaps_new_this_frame;
|
||||
// bm_get_frame_usage(&bitmaps_used_this_frame,&bitmaps_new_this_frame);
|
||||
// MONITOR_INC(BmpUsed, bitmaps_used_this_frame);
|
||||
// MONITOR_INC(BmpNew, bitmaps_new_this_frame);
|
||||
|
||||
@@ -3682,6 +3861,9 @@ void game_render_frame_setup(vector *eye_pos, matrix *eye_orient)
|
||||
|
||||
} else if ( Viewer_mode & VM_CHASE ) {
|
||||
vector move_dir;
|
||||
vector aim_pt;
|
||||
|
||||
|
||||
|
||||
if ( Viewer_obj->phys_info.speed < 0.1 )
|
||||
move_dir = Viewer_obj->orient.vec.fvec;
|
||||
@@ -3690,11 +3872,26 @@ void game_render_frame_setup(vector *eye_pos, matrix *eye_orient)
|
||||
vm_vec_normalize(&move_dir);
|
||||
}
|
||||
|
||||
vm_vec_scale_add(eye_pos, &Viewer_obj->pos, &move_dir, -3.0f * Viewer_obj->radius - Viewer_chase_info.distance);
|
||||
vm_vec_scale_add2(eye_pos, &Viewer_obj->orient.vec.uvec, 0.75f * Viewer_obj->radius);
|
||||
vm_vec_sub(&eye_dir, &Viewer_obj->pos, eye_pos);
|
||||
vm_vec_normalize(&eye_dir);
|
||||
//create a better 3rd person view if this is the player ship
|
||||
if (Viewer_obj==Player_obj)
|
||||
{
|
||||
//get a point 1000m forward of ship
|
||||
vm_vec_copy_scale(&aim_pt,&Viewer_obj->orient.vec.fvec,1000.0f);
|
||||
vm_vec_add2(&aim_pt,&Viewer_obj->pos);
|
||||
|
||||
vm_vec_scale_add(eye_pos, &Viewer_obj->pos, &move_dir, -2.25f * Viewer_obj->radius - Viewer_chase_info.distance);
|
||||
vm_vec_scale_add2(eye_pos, &Viewer_obj->orient.vec.uvec, .625f * Viewer_obj->radius);
|
||||
vm_vec_sub(&eye_dir, &aim_pt, eye_pos);
|
||||
vm_vec_normalize(&eye_dir);
|
||||
}
|
||||
else
|
||||
{
|
||||
vm_vec_scale_add(eye_pos, &Viewer_obj->pos, &move_dir, -3.0f * Viewer_obj->radius - Viewer_chase_info.distance);
|
||||
vm_vec_scale_add2(eye_pos, &Viewer_obj->orient.vec.uvec, 0.75f * Viewer_obj->radius);
|
||||
vm_vec_sub(&eye_dir, &Viewer_obj->pos, eye_pos);
|
||||
vm_vec_normalize(&eye_dir);
|
||||
}
|
||||
|
||||
// JAS: I added the following code because if you slew up using
|
||||
// Descent-style physics, eye_dir and Viewer_obj->orient.vec.uvec are
|
||||
// equal, which causes a zero-length vector in the vm_vector_2_matrix
|
||||
@@ -3799,14 +3996,14 @@ void game_render_frame( vector * eye_pos, matrix * eye_orient )
|
||||
nebl_render_all();
|
||||
|
||||
// render local player nebula
|
||||
neb2_render_player();
|
||||
neb2_render_player();
|
||||
|
||||
#ifndef NDEBUG
|
||||
ai_debug_render_stuff();
|
||||
#endif
|
||||
|
||||
#ifndef RELEASE_REAL
|
||||
// game_framerate_check();
|
||||
// game_framerate_check();
|
||||
#endif
|
||||
|
||||
#ifndef NDEBUG
|
||||
@@ -3828,6 +4025,7 @@ void game_render_frame( vector * eye_pos, matrix * eye_orient )
|
||||
hud_maybe_clear_head_area();
|
||||
anim_render_all(0, flFrametime);
|
||||
}
|
||||
|
||||
|
||||
#ifndef NO_NETWORK
|
||||
extern int Multi_display_netinfo;
|
||||
@@ -5738,6 +5936,7 @@ void game_leave_state( int old_state, int new_state )
|
||||
case GS_STATE_DEBRIEF:
|
||||
if ( (new_state != GS_STATE_VIEW_MEDALS) && (new_state != GS_STATE_OPTIONS_MENU) ) {
|
||||
debrief_close();
|
||||
fsspeech_stop();
|
||||
}
|
||||
break;
|
||||
|
||||
@@ -7127,7 +7326,6 @@ int WinMainSub(int argc, char *argv[])
|
||||
parse_cmdline(argc, argv);
|
||||
#endif
|
||||
|
||||
|
||||
#ifndef NO_NETWORK
|
||||
#ifdef STANDALONE_ONLY_BUILD
|
||||
Is_standalone = 1;
|
||||
@@ -7154,6 +7352,12 @@ int WinMainSub(int argc, char *argv[])
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
||||
// Windows code now plays the intro movie in game_init
|
||||
#ifndef _WIN32
|
||||
|
||||
// Intro playing code has been moved above before graphics are set up to
|
||||
// avoid switching and other glitches
|
||||
// non-demo, non-standalone, play the intro movie
|
||||
if(!Is_standalone){
|
||||
#ifndef DEMO
|
||||
@@ -7179,13 +7383,13 @@ int WinMainSub(int argc, char *argv[])
|
||||
|
||||
// in RELEASE_REAL builds make the user stick in CD2 if there are no pilots on disk so that we guarantee he plays the movie
|
||||
// no soup for you!
|
||||
// movie_play( NOX("intro.mve"), 0 );
|
||||
movie_play( NOX("intro.mve"), 0 );
|
||||
|
||||
// debug version, movie will only play with -showmovies
|
||||
#else if !defined(NDEBUG)
|
||||
#elif !defined(NDEBUG)
|
||||
|
||||
// no soup for you!
|
||||
// movie_play( NOX("intro.mve"), 0);
|
||||
movie_play( NOX("intro.mve"), 0);
|
||||
/*
|
||||
#ifndef NDEBUG
|
||||
if ( Cmdline_show_movies )
|
||||
@@ -7196,6 +7400,7 @@ int WinMainSub(int argc, char *argv[])
|
||||
}
|
||||
|
||||
#endif // ifndef DEMO
|
||||
#endif
|
||||
|
||||
if (Is_standalone){
|
||||
gameseq_post_event(GS_EVENT_STANDALONE_MAIN);
|
||||
@@ -7236,29 +7441,39 @@ int PASCAL WinMain(HINSTANCE hInst, HINSTANCE hPrev, LPSTR szCmdLine, int nCmdSh
|
||||
int main(int argc, char *argv[])
|
||||
#endif
|
||||
{
|
||||
::CoInitialize(NULL);
|
||||
|
||||
DBUGFILE_INIT();
|
||||
int result = -1;
|
||||
|
||||
#ifdef _WIN32
|
||||
#if defined(_MSC_VER)
|
||||
__try {
|
||||
#endif
|
||||
result = WinMainSub(hInst, hPrev, szCmdLine, nCmdShow);
|
||||
#if defined(_MSC_VER)
|
||||
} __except(RecordExceptionInfo(GetExceptionInformation(), "Freespace 2 Main Thread")) {
|
||||
|
||||
// Do nothing here - RecordExceptionInfo() has already done
|
||||
// everything that is needed. Actually this code won't even
|
||||
// get called unless you return EXCEPTION_EXECUTE_HANDLER from
|
||||
// the __except clause.
|
||||
}
|
||||
#endif
|
||||
|
||||
#else
|
||||
try {
|
||||
result = WinMainSub(argc, argv);
|
||||
} catch ( ... ) {
|
||||
fprintf(stderr, "Caught exception in main\n");
|
||||
// RecordExceptionInfo(GetExceptionInformation(), "Freespace 2 Main Thread");
|
||||
result = 1;
|
||||
}
|
||||
#endif
|
||||
|
||||
DBUGFILE_DEINIT()
|
||||
|
||||
::CoUninitialize();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -7310,6 +7525,8 @@ void game_shutdown(void)
|
||||
timeEndPeriod(1);
|
||||
#endif
|
||||
|
||||
fsspeech_deinit();
|
||||
|
||||
// don't ever flip a page on the standalone!
|
||||
if(!(Game_mode & GM_STANDALONE_SERVER)){
|
||||
gr_reset_clip();
|
||||
@@ -7580,6 +7797,12 @@ void game_do_training_checks()
|
||||
Players_targeted_subsys = Player_ai->targeted_subsys;
|
||||
Players_target_timestamp = timestamp();
|
||||
}
|
||||
// following added by Sesquipedalian for is_missile_locked
|
||||
if ((Players_mlocked == UNINITIALIZED) || (Player_ai->current_target_is_locked != Players_mlocked)) {
|
||||
Players_mlocked = Player_ai->current_target_is_locked;
|
||||
Players_mlocked_timestamp = timestamp();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/////////// Following is for event debug view screen
|
||||
@@ -7735,7 +7958,7 @@ void game_show_event_debug(float frametime)
|
||||
|
||||
#endif // NDEBUG
|
||||
|
||||
#ifndef NDEBUG
|
||||
#if (!defined(NDEBUG)) && (!defined(NO_SOFTWARE_RENDERING))
|
||||
FILE * Time_fp;
|
||||
FILE * Texture_fp;
|
||||
|
||||
@@ -7847,7 +8070,6 @@ void Time_model( int modelnum )
|
||||
fix t2 = timer_get_fixed_seconds();
|
||||
|
||||
bm_get_frame_usage(&bitmaps_used_this_frame,&bitmaps_new_this_frame);
|
||||
//bitmaps_used_this_frame /= framecount;
|
||||
|
||||
modelstats_num_polys /= framecount;
|
||||
modelstats_num_verts /= framecount;
|
||||
@@ -7857,10 +8079,6 @@ void Time_model( int modelnum )
|
||||
|
||||
mprintf(( "'%s' is %.2f FPS\n", pof_file, i2fl(framecount)/f2fl(t2-t1) ));
|
||||
fprintf( Time_fp, "\"%s\"\t%.0f\t%d\t%d\t%d\t%d\n", pof_file, i2fl(framecount)/f2fl(t2-t1), bitmaps_used_this_frame, modelstats_num_polys, modelstats_num_verts, Tmap_npixels );
|
||||
// fprintf( Time_fp, "%.0f\t%d\t%d\t%d\t%d\n", i2fl(framecount)/f2fl(t2-t1), bitmaps_used_this_frame, modelstats_num_polys, modelstats_num_verts, Tmap_npixels );
|
||||
|
||||
|
||||
// key_getch();
|
||||
}
|
||||
|
||||
int Time_models = 0;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
//Microsoft Developer Studio generated resource script.
|
||||
//
|
||||
#include "freespaceresource.h"
|
||||
#include "FreespaceResource.h"
|
||||
|
||||
#define APSTUDIO_READONLY_SYMBOLS
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -17,6 +17,7 @@
|
||||
#define IDB_GOAL_FAIL 122
|
||||
#define IDI_APP_ICON 124
|
||||
#define IDD_GEN 127
|
||||
#define IDD_RT_VSELECT 128
|
||||
#define IDC_LIST_DEBUG 1000
|
||||
#define IDC_DEBUG_TEXT1 1001
|
||||
#define IDC_DEBUG_TEXT2 1002
|
||||
@@ -73,6 +74,11 @@
|
||||
#define IDC_FIELD2 1065
|
||||
#define IDC_FIELD3 1066
|
||||
#define IDC_PXO_REFRESH 1067
|
||||
#define IDC_COMBO_VCARD 1069
|
||||
#define IDC_COMBO_VMODE 1070
|
||||
#define IDC_COMBO_AATYPE 1071
|
||||
#define ID_CANCEL 1072
|
||||
#define ID_OK 1073
|
||||
#define IDC_CON_COUNT 2000
|
||||
#define IDC_FRAMECAP_STATIC 2001
|
||||
#define IDC_GODSTUFF_FPS 2002
|
||||
@@ -85,9 +91,9 @@
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NO_MFC 1
|
||||
#define _APS_3D_CONTROLS 1
|
||||
#define _APS_NEXT_RESOURCE_VALUE 128
|
||||
#define _APS_NEXT_RESOURCE_VALUE 129
|
||||
#define _APS_NEXT_COMMAND_VALUE 40001
|
||||
#define _APS_NEXT_CONTROL_VALUE 1068
|
||||
#define _APS_NEXT_CONTROL_VALUE 1074
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
@@ -9,13 +9,22 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/GameHelp/GameplayHelp.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-03-18 10:07:02 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Module for displaying in-game help
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1.2.1 2002/09/24 18:56:42 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:22 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -134,6 +143,7 @@
|
||||
#include "globalincs/alphacolors.h"
|
||||
#include "weapon/beam.h"
|
||||
#include "sound/audiostr.h"
|
||||
#include "debugconsole/dbugfile.h"
|
||||
|
||||
// text positioning constats
|
||||
#define TITLE_Y 35
|
||||
|
||||
@@ -9,13 +9,25 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Gamesnd/EventMusic.cpp $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-01-25 04:17:39 $
|
||||
* $Revision: 2.5 $
|
||||
* $Date: 2003-08-25 04:46:53 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* C module for high-level control of event driven music
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.4 2003/04/29 01:03:23 Goober5000
|
||||
* implemented the custom hitpoints mod
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.3 2003/03/22 06:06:22 Goober5000
|
||||
* changed event_sexp_change_music to event_change_sexp_soundtrack
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.2 2003/01/25 04:17:39 Goober5000
|
||||
* added change-music sexp and bumped MAX_SOUNDTRACKS from 10 to 25
|
||||
* --Ian Warfield
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -175,6 +187,7 @@ int Current_soundtrack_num; // Active soundtrack for the current mission.. index
|
||||
int Current_pattern = -1; // currently playing part of track
|
||||
int Pending_pattern = -1;
|
||||
int Pattern_timer_id = 0;
|
||||
int Current_nrml = SONG_NRML_1;
|
||||
|
||||
// File Globals
|
||||
static int Num_enemy_arrivals;
|
||||
@@ -207,8 +220,10 @@ char* Pattern_names[MAX_PATTERNS] =
|
||||
"EARV_2", // Enemy Arrival 2
|
||||
"VICT_1", // Victory Song 1
|
||||
"VICT_2", // Victory Song 2
|
||||
"FAIL_1" // Goal Failed 1
|
||||
"DEAD_1" // Death Song 1
|
||||
"FAIL_1", // Goal Failed 1
|
||||
"DEAD_1", // Death Song 1
|
||||
"NRML_2", // Normal Song 2
|
||||
"NRML_3" // Normal Song 3
|
||||
//XSTR:ON
|
||||
};
|
||||
|
||||
@@ -225,8 +240,10 @@ char* Pattern_description[MAX_PATTERNS] =
|
||||
"enemey arrival 2",
|
||||
"victory 1",
|
||||
"victory 2",
|
||||
"goal failed 1"
|
||||
"death "
|
||||
"goal failed 1",
|
||||
"death",
|
||||
"normal 2",
|
||||
"normal 3"
|
||||
//XSTR:ON
|
||||
};
|
||||
|
||||
@@ -242,8 +259,10 @@ int Pattern_loop_for[MAX_PATTERNS] =
|
||||
1, // Enemy Arrival 2
|
||||
1, // Victory Song 1
|
||||
1, // Victory Song 2
|
||||
1, // Goal Failed 1
|
||||
1 // Death Song 1
|
||||
1, // Goal Failed 1
|
||||
1, // Death Song 1
|
||||
1, // Normal Song 2
|
||||
1 // Normal Song 3
|
||||
};
|
||||
|
||||
int Pattern_default_next[MAX_PATTERNS] =
|
||||
@@ -259,7 +278,9 @@ int Pattern_default_next[MAX_PATTERNS] =
|
||||
SONG_NRML_1, // VICT_1 progresses to NRML_1 by default
|
||||
SONG_NRML_1, // VICT_2 progresses to NRML_1 by default
|
||||
SONG_NRML_1, // FAIL_1 progresses to NRML_1 by default
|
||||
-1 // no music plays after dead
|
||||
-1, // no music plays after dead
|
||||
SONG_NRML_1, // NRML_2 progresses to NRML_1 by default (but we intercept this)
|
||||
SONG_NRML_1 // NRML_3 progresses to NRML_1 by default (but we intercept this)
|
||||
};
|
||||
|
||||
|
||||
@@ -278,7 +299,9 @@ int Pattern_can_force[MAX_PATTERNS] =
|
||||
FALSE, // VICT_1
|
||||
TRUE, // VICT_2
|
||||
FALSE, // FAIL_1
|
||||
TRUE // DEAD_1
|
||||
TRUE, // DEAD_1
|
||||
TRUE, // NRML_2
|
||||
TRUE // NRML_3
|
||||
};
|
||||
|
||||
|
||||
@@ -300,6 +323,42 @@ int Num_music_files; // Number of spooled music files
|
||||
// Array that holds indicies into Spooled_music[], these specify which music is played in breifing/debriefing
|
||||
int Mission_music[NUM_SCORES];
|
||||
|
||||
// Goober5000
|
||||
int maybe_cycle_nrml(int pattern)
|
||||
{
|
||||
if ((pattern == SONG_NRML_1) || (pattern == SONG_NRML_2) || (pattern == SONG_NRML_3))
|
||||
{
|
||||
Current_nrml = maybe_get_next_nrml_no_cycle(Current_nrml);
|
||||
pattern = Current_nrml;
|
||||
}
|
||||
|
||||
return pattern;
|
||||
}
|
||||
// Goober5000
|
||||
int maybe_get_next_nrml_no_cycle(int pattern)
|
||||
{
|
||||
switch (pattern)
|
||||
{
|
||||
case SONG_NRML_1:
|
||||
if (Patterns[SONG_NRML_2].handle == -1)
|
||||
return SONG_NRML_1;
|
||||
else
|
||||
return SONG_NRML_2;
|
||||
|
||||
case SONG_NRML_2:
|
||||
if (Patterns[SONG_NRML_3].handle == -1)
|
||||
return SONG_NRML_1;
|
||||
else
|
||||
return SONG_NRML_3;
|
||||
|
||||
case SONG_NRML_3:
|
||||
return SONG_NRML_1;
|
||||
|
||||
default:
|
||||
return pattern;
|
||||
}
|
||||
}
|
||||
|
||||
// -------------------------------------------------------------------------------------------------
|
||||
// event_music_init()
|
||||
//
|
||||
@@ -356,8 +415,11 @@ void event_music_force_switch()
|
||||
|
||||
new_pattern = Patterns[Current_pattern].next_pattern;
|
||||
|
||||
if ( (new_pattern == SONG_BTTL_3) && (Patterns[SONG_BTTL_3].handle == -1) ) {
|
||||
if ( Current_pattern == SONG_BTTL_2 ) {
|
||||
// make sure we have a valid track to switch to
|
||||
if ( (new_pattern == SONG_BTTL_2) && (Patterns[SONG_BTTL_2].handle == -1) ) {
|
||||
new_pattern = SONG_BTTL_1;
|
||||
} else if ( (new_pattern == SONG_BTTL_3) && (Patterns[SONG_BTTL_3].handle == -1) ) {
|
||||
if ( (Current_pattern == SONG_BTTL_2) || (Patterns[SONG_BTTL_2].handle == -1) ) {
|
||||
new_pattern = SONG_BTTL_1;
|
||||
} else {
|
||||
new_pattern = SONG_BTTL_2;
|
||||
@@ -367,8 +429,8 @@ void event_music_force_switch()
|
||||
// AL 06-24-99: maybe switch to battle 2 if hull is less than 70%
|
||||
if (Player_obj != NULL && Player_ship != NULL) {
|
||||
Assert(Player_ship->ship_info_index >= 0);
|
||||
Assert(Ship_info[Player_ship->ship_info_index].initial_hull_strength != 0);
|
||||
float integrity = Player_obj->hull_strength / Ship_info[Player_ship->ship_info_index].initial_hull_strength;
|
||||
Assert(Player_ship->ship_initial_hull_strength != 0);
|
||||
float integrity = Player_obj->hull_strength / Player_ship->ship_initial_hull_strength;
|
||||
if (integrity < HULL_VALUE_TO_PLAY_INTENSE_BATTLE_MUSIC) {
|
||||
new_pattern = SONG_BTTL_2;
|
||||
}
|
||||
@@ -376,6 +438,9 @@ void event_music_force_switch()
|
||||
}
|
||||
}
|
||||
|
||||
// set up switching
|
||||
new_pattern = maybe_cycle_nrml(new_pattern);
|
||||
|
||||
if ( new_pattern == -1 ) {
|
||||
return;
|
||||
}
|
||||
@@ -389,6 +454,8 @@ void event_music_force_switch()
|
||||
Patterns[Current_pattern].next_pattern = Patterns[Current_pattern].default_next_pattern;
|
||||
Patterns[Current_pattern].force_pattern = FALSE;
|
||||
nprintf(("EVENTMUSIC", "EVENTMUSIC => switching to %s from %s\n", Pattern_names[new_pattern], Pattern_names[Current_pattern]));
|
||||
|
||||
// actually switch the pattern
|
||||
Current_pattern = new_pattern;
|
||||
}
|
||||
|
||||
@@ -470,7 +537,7 @@ void event_music_do_frame()
|
||||
}
|
||||
|
||||
if (Event_Music_battle_started == 0) {
|
||||
if (Current_pattern == SONG_NRML_1) {
|
||||
if (Current_pattern == SONG_NRML_1 || Current_pattern == SONG_NRML_2 || Current_pattern == SONG_NRML_3 ) {
|
||||
if (timestamp_elapsed(Check_for_battle_music)) {
|
||||
Check_for_battle_music = timestamp(1000);
|
||||
if (hostile_ships_present() == TRUE) {
|
||||
@@ -519,6 +586,7 @@ void event_music_level_init(int force_soundtrack)
|
||||
return;
|
||||
|
||||
Current_pattern = -1;
|
||||
Current_nrml = SONG_NRML_1;
|
||||
|
||||
if ( Event_music_inited == FALSE )
|
||||
return;
|
||||
@@ -734,7 +802,7 @@ int event_music_enemy_arrival()
|
||||
next_pattern = SONG_EARV_1;
|
||||
}
|
||||
|
||||
if ( Current_pattern == next_pattern )
|
||||
if ( Current_pattern == maybe_get_next_nrml_no_cycle(next_pattern) )
|
||||
return 0; // already playing
|
||||
|
||||
if ( Current_pattern == SONG_DEAD_1 )
|
||||
@@ -752,8 +820,8 @@ int event_music_enemy_arrival()
|
||||
bool play_intense_battle_music = false;
|
||||
if (Player_obj != NULL && Player_ship != NULL) {
|
||||
Assert(Player_ship->ship_info_index >= 0);
|
||||
Assert(Ship_info[Player_ship->ship_info_index].initial_hull_strength != 0);
|
||||
float integrity = Player_obj->hull_strength / Ship_info[Player_ship->ship_info_index].initial_hull_strength;
|
||||
Assert(Player_ship->ship_initial_hull_strength != 0);
|
||||
float integrity = Player_obj->hull_strength / Player_ship->ship_initial_hull_strength;
|
||||
if (integrity < HULL_VALUE_TO_PLAY_INTENSE_BATTLE_MUSIC) {
|
||||
play_intense_battle_music = true;
|
||||
}
|
||||
@@ -824,7 +892,7 @@ int event_music_friendly_arrival()
|
||||
next_pattern = SONG_AARV_1;
|
||||
}
|
||||
|
||||
if ( Current_pattern == next_pattern )
|
||||
if ( Current_pattern == maybe_get_next_nrml_no_cycle(next_pattern) )
|
||||
return 0; // already playing
|
||||
|
||||
if ( Current_pattern == SONG_DEAD_1 )
|
||||
@@ -841,16 +909,21 @@ int event_music_friendly_arrival()
|
||||
|
||||
if ( Current_pattern != -1 ) {
|
||||
// AL 06-24-99: always overlay allied arrivals
|
||||
/*
|
||||
if (next_pattern == SONG_AARV_1) {
|
||||
// Goober5000 - bah, this screws up the FS1 music... so this is a hack to *not* overlay
|
||||
// *if* the soundtrack is greater than 6 (all the FS2 tracks are 0-6)
|
||||
|
||||
// don't overlay
|
||||
if (Current_soundtrack_num > 6) {
|
||||
Patterns[Current_pattern].next_pattern = next_pattern;
|
||||
Patterns[Current_pattern].force_pattern = TRUE;
|
||||
// overlay
|
||||
} else {
|
||||
*/
|
||||
// Goober5000 - I didn't touch this part... for some reason, FS2 only has one
|
||||
// arrival music pattern, and this is it
|
||||
Assert(Patterns[SONG_AARV_1].handle >= 0 );
|
||||
audiostream_play(Patterns[SONG_AARV_1].handle, Master_event_music_volume, 0); // no looping
|
||||
audiostream_set_byte_cutoff(Patterns[SONG_AARV_1].handle, fl2i(Patterns[SONG_AARV_1].num_measures * Patterns[SONG_AARV_1].bytes_per_measure) );
|
||||
//}
|
||||
}
|
||||
}
|
||||
|
||||
Next_arrival_timestamp = timestamp(ARRIVAL_INTERVAL_TIMESTAMP);
|
||||
@@ -1041,10 +1114,20 @@ void event_music_parse_musictbl()
|
||||
{
|
||||
char fname[MAX_FILENAME_LEN];
|
||||
char line_buf[128];
|
||||
int rval;
|
||||
int rval, i, j;
|
||||
|
||||
int num_patterns = 0;
|
||||
|
||||
// clear all the filenames, so we're compatible with the extra NRMLs in FS1 music
|
||||
for (i = 0; i < MAX_SOUNDTRACKS; i++)
|
||||
{
|
||||
for (j = 0; j < MAX_PATTERNS; j++)
|
||||
{
|
||||
strcpy(Soundtracks[i].pattern_fnames[j], "none.wav");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Num_music_files = 0;
|
||||
Num_soundtracks = 0; // Global
|
||||
event_music_reset_choices();
|
||||
@@ -1149,7 +1232,7 @@ void event_music_change_pattern(int new_pattern)
|
||||
return;
|
||||
}
|
||||
|
||||
if ( Current_pattern == new_pattern )
|
||||
if ( Current_pattern == maybe_get_next_nrml_no_cycle(new_pattern) );
|
||||
return; // already playing
|
||||
|
||||
if ( Current_pattern != -1 ) {
|
||||
@@ -1243,11 +1326,15 @@ void event_music_start_default()
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
next_pattern = SONG_NRML_1;
|
||||
|
||||
if ( Current_pattern == -1 ) {
|
||||
Current_pattern = next_pattern;
|
||||
}
|
||||
|
||||
// switch now
|
||||
if ( Current_pattern == -1 ) {
|
||||
Current_pattern = maybe_cycle_nrml(next_pattern);
|
||||
}
|
||||
// switch later
|
||||
else {
|
||||
Patterns[Current_pattern].next_pattern = next_pattern;
|
||||
Patterns[Current_pattern].force_pattern = TRUE;
|
||||
@@ -1419,7 +1506,7 @@ int event_music_next_soundtrack(int delta)
|
||||
}
|
||||
|
||||
// Goober5000 - along the same lines; this is for the sexp
|
||||
void event_sexp_change_music(char *name)
|
||||
void event_sexp_change_soundtrack(char *name)
|
||||
{
|
||||
Assert(name);
|
||||
|
||||
|
||||
@@ -9,13 +9,26 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Gamesnd/EventMusic.h $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-01-25 04:17:39 $
|
||||
* $Revision: 2.5 $
|
||||
* $Date: 2003-08-25 04:46:53 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* Header file for high-level control of event driven music
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.4 2003/03/29 05:18:17 Goober5000
|
||||
* yay for limit bumping!
|
||||
* bumped number of battle tracks and briefing/mainhall/credits tracks, both to 30
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.3 2003/03/22 06:06:22 Goober5000
|
||||
* changed event_sexp_change_music to event_change_sexp_soundtrack
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.2 2003/01/25 04:17:39 Goober5000
|
||||
* added change-music sexp and bumped MAX_SOUNDTRACKS from 10 to 25
|
||||
* --Ian Warfield
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -146,8 +159,10 @@
|
||||
#define SONG_VICT_2 9 // Victory Song 2
|
||||
#define SONG_FAIL_1 10 // Goal Failed
|
||||
#define SONG_DEAD_1 11 // Death Song 1
|
||||
#define SONG_NRML_2 12 // Normal Song 2 - for FS1
|
||||
#define SONG_NRML_3 13 // Normal Song 3 - for FS1
|
||||
|
||||
#define MAX_PATTERNS 12
|
||||
#define MAX_PATTERNS 14
|
||||
|
||||
// if player targets a hostile ship at less than this range, switch to battle track
|
||||
#define BATTLE_START_MIN_TARGET_DIST 500
|
||||
@@ -176,7 +191,7 @@ typedef struct menu_music {
|
||||
char filename[MAX_FILENAME_LEN]; // name music is stored on disk as
|
||||
} menu_music;
|
||||
|
||||
#define MAX_SPOOLED_MUSIC 20
|
||||
#define MAX_SPOOLED_MUSIC 30 // max number of briefing/mainhall/credits tracks
|
||||
|
||||
extern menu_music Spooled_music[MAX_SPOOLED_MUSIC];
|
||||
extern int Num_music_files;
|
||||
@@ -188,13 +203,17 @@ typedef struct tagSOUNDTRACK_INFO {
|
||||
char pattern_fnames[MAX_PATTERNS][MAX_FILENAME_LEN];
|
||||
} SOUNDTRACK_INFO;
|
||||
|
||||
#define MAX_SOUNDTRACKS 25
|
||||
#define MAX_SOUNDTRACKS 30 // max number of battle tracks
|
||||
|
||||
extern SOUNDTRACK_INFO Soundtracks[MAX_SOUNDTRACKS];
|
||||
extern int Num_soundtracks;
|
||||
|
||||
#ifndef NO_SOUND
|
||||
|
||||
// Goober5000 - for handling NRML tracks from FS1
|
||||
int maybe_get_next_nrml_no_cycle(int pattern);
|
||||
int maybe_cycle_nrml(int pattern);
|
||||
|
||||
void event_music_init();
|
||||
void event_music_close();
|
||||
void event_music_level_init(int force_soundtrack = -1);
|
||||
@@ -220,7 +239,7 @@ void event_music_start_default();
|
||||
void event_music_get_info(char *outbuf);
|
||||
void event_music_get_soundtrack_name(char *outbuf);
|
||||
int event_music_next_soundtrack(int delta);
|
||||
void event_sexp_change_music(char *name);
|
||||
void event_sexp_change_soundtrack(char *name);
|
||||
void event_music_set_soundtrack(char *name);
|
||||
void event_music_set_score(int score_index, char *name);
|
||||
int event_music_get_spooled_music_index(char *name);
|
||||
@@ -231,6 +250,10 @@ void event_music_hostile_ship_destroyed();
|
||||
|
||||
#else
|
||||
|
||||
// Goober5000 - for NO_SOUND
|
||||
#define maybe_get_next_nrml_no_cycle(int pattern) (0)
|
||||
#define maybe_cycle_nrml(int pattern) (0)
|
||||
|
||||
#define event_music_init()
|
||||
#define event_music_close()
|
||||
#define event_music_level_init(force_soundtrack) ((void)(force_soundtrack))
|
||||
|
||||
@@ -9,13 +9,20 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Gamesnd/GameSnd.h $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2002-12-10 05:43:35 $
|
||||
* $Revision: 2.4 $
|
||||
* $Date: 2003-03-20 22:58:43 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* Routines to keep track of which sound files go where
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.3 2003/03/18 01:44:31 Goober5000
|
||||
* fixed some misspellings
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.2 2002/12/10 05:43:35 Goober5000
|
||||
* Full-fledged ballistic primary support added! Try it and see! :)
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -96,7 +103,7 @@
|
||||
* Added sound hooks for Shivan flyby sound, subspace ambient effect
|
||||
*
|
||||
* 71 3/23/98 4:13p Lawrance
|
||||
* Add hooks for captial ship specific warp sounds
|
||||
* Add hooks for capital ship specific warp sounds
|
||||
*
|
||||
* 70 3/21/98 3:34p Lawrance
|
||||
* Added highlight icon sound, added static sound for briefing cut
|
||||
@@ -534,8 +541,8 @@ extern game_snd Snds_flyby[MAX_SPECIES_NAMES][2];
|
||||
#define SND_COPILOT 162
|
||||
|
||||
// added for ballistic primaries - Goober5000
|
||||
#define SND_BALLISTIC_START_LOAD 165
|
||||
#define SND_BALLISTIC_LOAD 166
|
||||
#define SND_BALLISTIC_START_LOAD 171
|
||||
#define SND_BALLISTIC_LOAD 172
|
||||
|
||||
// supernova 1 and supernova 2
|
||||
#define SND_SUPERNOVA_1 173
|
||||
|
||||
@@ -62,6 +62,9 @@ typedef struct { float r, g, b, a; } FxColor4;
|
||||
#elif defined(__unix__)
|
||||
#define FX_ENTRY extern
|
||||
#define FX_CALL
|
||||
#elif defined(__GNUC__)
|
||||
#define FX_ENTRY extern
|
||||
#define FX_CALL
|
||||
#else
|
||||
#warning define FX_ENTRY & FX_CALL for your compiler
|
||||
#define FX_ENTRY extern
|
||||
|
||||
@@ -9,19 +9,65 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/GlobalIncs/PsTypes.h $
|
||||
* $Revision: 2.7 $
|
||||
* $Date: 2003-01-18 19:48:19 $
|
||||
* $Author: phreak $
|
||||
* $Revision: 2.12 $
|
||||
* $Date: 2003-08-16 03:52:23 $
|
||||
* $Author: bobboau $
|
||||
* $Revision: 2.12 $
|
||||
* $Date: 2003-08-16 03:52:23 $
|
||||
* $Author: bobboau $
|
||||
*
|
||||
* Header file containg global typedefs, constants and macros
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.11 2003/08/12 03:18:33 bobboau
|
||||
* Specular 'shine' mapping;
|
||||
* useing a phong lighting model I have made specular highlights
|
||||
* that are mapped to the model,
|
||||
* rendering them is still slow, but they look real purdy
|
||||
*
|
||||
* also 4 new (untested) comand lines, the XX is a floating point value
|
||||
* -spec_exp XX
|
||||
* the n value, you can set this from 0 to 200 (actualy more than that, but this is the recomended range), it will make the highlights bigger or smaller, defalt is 16.0 so start playing around there
|
||||
* -spec_point XX
|
||||
* -spec_static XX
|
||||
* -spec_tube XX
|
||||
* these are factors for the three diferent types of lights that FS uses, defalt is 1.0,
|
||||
* static is the local stars,
|
||||
* point is weapons/explosions/warp in/outs,
|
||||
* tube is beam weapons,
|
||||
* for thouse of you who think any of these lights are too bright you can configure them you're self for personal satisfaction
|
||||
*
|
||||
* Revision 2.10 2003/06/08 17:38:21 phreak
|
||||
* added a vector in the vertex struct that stores the real world position
|
||||
* the x,y,z variables do not accurately reflect the real position
|
||||
* this is for opengl fogging
|
||||
*
|
||||
* Revision 2.9 2003/03/18 10:07:02 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.8 2003/03/02 05:27:44 penguin
|
||||
* only define min() and max() if they're not already defined
|
||||
* - penguin
|
||||
*
|
||||
* Revision 2.7 2003/01/18 19:48:19 phreak
|
||||
* added some defines that deal with mages using DXTC
|
||||
*
|
||||
* Revision 2.6 2002/12/02 23:56:12 Goober5000
|
||||
* fixed misspelling
|
||||
*
|
||||
* Revision 2.5 2002/12/02 20:49:14 Goober5000
|
||||
* fixed misspelling of "category" as "catagory"
|
||||
*
|
||||
* Revision 2.4.2.3 2002/10/19 23:56:40 randomtiger
|
||||
* Changed generic bitmap code to allow maximum dimensions to be determined by 3D's engines maximum texture size query.
|
||||
* Defaults to 256 as it was before. Also added base code for reworking the texture code to be more efficient. - RT
|
||||
*
|
||||
* Revision 2.4.2.2 2002/09/24 18:56:42 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.4 2002/08/06 01:49:08 penguin
|
||||
* Renamed ccode members to cc_or and cc_and
|
||||
*
|
||||
@@ -328,15 +374,28 @@ typedef struct uv_pair {
|
||||
// Used to store rotated points for mines.
|
||||
// Has flag to indicate if projected.
|
||||
typedef struct vertex {
|
||||
vertex(){
|
||||
x=0.0f;y=0.0f;z=0.0f;
|
||||
u=0.0f;v=0.0f;
|
||||
sx=0.0f;sy=0.0f;sw=0.0f;
|
||||
env_u=0.0f;env_v=0.0f;
|
||||
spec_r=0;spec_g=0;spec_b=0;
|
||||
r=0;g=0;b=0;a=0;
|
||||
}
|
||||
float x, y, z; // world space position
|
||||
float sx, sy, sw; // screen space position (sw == 1/z)
|
||||
float u, v; // texture position
|
||||
vector real_pos; // _real_ world position
|
||||
ubyte spec_r, spec_b, spec_g; //specular highlights -Bobboau
|
||||
float env_u, env_v;
|
||||
ubyte r, g, b, a; // color. Use b for darkening;
|
||||
ubyte codes; // what sides of view pyramid this point is on/off. 0 = Inside view pyramid.
|
||||
ubyte flags; // Projection flags. Indicates whether it is projected or not or if projection overflowed.
|
||||
ubyte pad[2]; // pad structure to be 4 byte aligned.
|
||||
} vertex;
|
||||
|
||||
extern int spec;
|
||||
|
||||
#define BMP_AABITMAP (1<<0) // antialiased bitmap
|
||||
#define BMP_TEX_XPARENT (1<<1) // transparent texture
|
||||
#define BMP_TEX_NONDARK (1<<2) // nondarkening texture
|
||||
@@ -357,7 +416,7 @@ typedef struct vertex {
|
||||
// max res == 1024x768. max texture size == 256
|
||||
#define MAX_BMAP_SECTIONS_X 4
|
||||
#define MAX_BMAP_SECTIONS_Y 3
|
||||
#define MAX_BMAP_SECTION_SIZE 256
|
||||
|
||||
typedef struct bitmap_section_info {
|
||||
ushort sx[MAX_BMAP_SECTIONS_X]; // x offset of each section
|
||||
ushort sy[MAX_BMAP_SECTIONS_Y]; // y offset of each section
|
||||
@@ -434,8 +493,12 @@ extern void _cdecl Warning( char * filename, int line, char * format, ... );
|
||||
#endif // NDEBUG && DEMO
|
||||
#endif // INTERPLAYQA
|
||||
|
||||
#ifndef min
|
||||
#define min(a,b) (((a) < (b)) ? (a) : (b))
|
||||
#endif
|
||||
#ifndef max
|
||||
#define max(a,b) (((a) > (b)) ? (a) : (b))
|
||||
#endif
|
||||
|
||||
#define PI 3.141592654f
|
||||
#define PI2 (3.141592654f*2.0f) // PI*2
|
||||
|
||||
@@ -9,12 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/GlobalIncs/version.h $
|
||||
* $Revision: 2.6 $
|
||||
* $Date: 2003-02-05 07:04:31 $
|
||||
* $Revision: 2.7 $
|
||||
* $Date: 2003-08-30 20:55:09 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.6 2003/02/05 07:04:31 Goober5000
|
||||
* fixed version bumpage... the version is 3.5.0, not 3.50.0 ;)
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.5 2003/01/30 23:24:34 phreak
|
||||
* bumped to 3.50
|
||||
*
|
||||
@@ -140,7 +144,7 @@
|
||||
|
||||
#define FS_VERSION_MAJOR 3 // major version
|
||||
#define FS_VERSION_MINOR 5 // increase by 1 for minor revs
|
||||
#define FS_VERSION_BUILD 0 // bugfix release
|
||||
#define FS_VERSION_BUILD 5 // bugfix release
|
||||
|
||||
#define VERSION_LOC_FNAME "version.nfo"
|
||||
#define MOTD_LOC_FNAME "motd.txt"
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/GlobalIncs/WinDebug.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:04 $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-03-02 05:30:26 $
|
||||
* $Author: penguin $
|
||||
*
|
||||
* Debug stuff
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:22 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -116,12 +119,26 @@
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
#include <stdio.h>
|
||||
#include <crtdbg.h>
|
||||
|
||||
#include "globalincs/pstypes.h"
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <crtdbg.h>
|
||||
|
||||
//Uncomment SHOW_CALL_STACK to show the call stack in Asserts, Warnings, and Errors
|
||||
#define SHOW_CALL_STACK
|
||||
#endif // _MSC_VER
|
||||
|
||||
|
||||
#ifndef __ASSERT
|
||||
#ifndef _DEBUG
|
||||
#define _ASSERT(expr) ((void)0)
|
||||
#else
|
||||
#define _ASSERT(expr) (assert(expr))
|
||||
// #error _ASSERT is not defined yet for debug mode with non-MSVC compilers
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef SHOW_CALL_STACK
|
||||
|
||||
@@ -1006,8 +1023,6 @@ void getmem()
|
||||
|
||||
#ifndef NDEBUG
|
||||
|
||||
#include <crtdbg.h>
|
||||
|
||||
int TotalRam = 0;
|
||||
|
||||
#define nNoMansLandSize 4
|
||||
@@ -1030,6 +1045,9 @@ typedef struct _CrtMemBlockHeader
|
||||
|
||||
#define pHdr(pbData) (((_CrtMemBlockHeader *)pbData)-1)
|
||||
|
||||
|
||||
// this block of code is never referenced...
|
||||
#if 0
|
||||
int __cdecl MyAllocHook(
|
||||
int nAllocType,
|
||||
void * pvData,
|
||||
@@ -1067,6 +1085,9 @@ int __cdecl MyAllocHook(
|
||||
|
||||
return( TRUE ); // Allow the memory operation to proceed
|
||||
}
|
||||
#endif // #if 0
|
||||
|
||||
|
||||
|
||||
void windebug_memwatch_init()
|
||||
{
|
||||
@@ -1120,7 +1141,7 @@ void *vm_malloc( int size, char *filename, int line )
|
||||
void *vm_malloc( int size )
|
||||
#endif
|
||||
{
|
||||
#ifndef NDEBUG
|
||||
#if (!defined(NDEBUG)) && defined(_MSC_VER)
|
||||
if ( !Heap ) {
|
||||
TotalRam += size;
|
||||
|
||||
@@ -1179,27 +1200,23 @@ void vm_free( void *ptr )
|
||||
return;
|
||||
}
|
||||
|
||||
#ifndef NDEBUG
|
||||
#if (!defined(NDEBUG)) && defined(_MSC_VER)
|
||||
if ( !Heap ) {
|
||||
#ifndef NDEBUG
|
||||
_CrtMemBlockHeader *phd = pHdr(ptr);
|
||||
int nSize = phd->nDataSize;
|
||||
|
||||
TotalRam -= nSize;
|
||||
#endif
|
||||
|
||||
_free_dbg(ptr,_NORMAL_BLOCK);
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef NDEBUG
|
||||
int actual_size = HeapSize(Heap, HEAP_FLAG, ptr);
|
||||
if ( Watch_malloc ) {
|
||||
mprintf(( "Free %d bytes [%s(%d)]\n", actual_size, clean_filename(filename), line ));
|
||||
}
|
||||
TotalRam -= actual_size;
|
||||
#endif
|
||||
int actual_size = HeapSize(Heap, HEAP_FLAG, ptr);
|
||||
if ( Watch_malloc ) {
|
||||
mprintf(( "Free %d bytes [%s(%d)]\n", actual_size, clean_filename(filename), line ));
|
||||
}
|
||||
TotalRam -= actual_size;
|
||||
#endif
|
||||
HeapFree( Heap, HEAP_FLAG, ptr );
|
||||
HeapCompact(Heap, HEAP_FLAG);
|
||||
}
|
||||
|
||||
+155
-105
@@ -9,13 +9,50 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/2d.cpp $
|
||||
* $Revision: 2.4 $
|
||||
* $Date: 2002-11-18 21:32:11 $
|
||||
* $Author: phreak $
|
||||
* $Revision: 2.6 $
|
||||
* $Date: 2003-03-18 10:07:02 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Main file for 2d primitives.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.5 2003/03/02 05:41:52 penguin
|
||||
* Added some #ifndef NO_SOFTWARE_RENDERING
|
||||
* - penguin
|
||||
*
|
||||
* Revision 2.4 2002/11/18 21:32:11 phreak
|
||||
* added some ogl functionality - phreak
|
||||
*
|
||||
* Revision 2.3.2.9 2002/11/09 19:28:15 randomtiger
|
||||
*
|
||||
* Fixed small gfx initialisation bug that wasnt actually causing any problems.
|
||||
* Tided DX code, shifted stuff around, removed some stuff and documented some stuff.
|
||||
*
|
||||
* Revision 2.3.2.8 2002/10/16 00:41:38 randomtiger
|
||||
* Fixed small bug that was stopping unactive text from displaying greyed out
|
||||
* Also added ability to run FS2 DX8 in 640x480, however I needed to make a small change to 2d.cpp
|
||||
* which invloved calling the resolution processing code after initialising the device for D3D only.
|
||||
* This is because D3D8 for the moment has its own internal launcher.
|
||||
* Also I added a fair bit of documentation and tidied some stuff up. - RT
|
||||
*
|
||||
* Revision 2.3.2.7 2002/10/11 18:50:54 randomtiger
|
||||
* Checked in fix for 16 bit problem, thanks to Righteous1
|
||||
* Removed a fair bit of code that was used by the 16 bit code path which no longer exists.
|
||||
* 32 bit and 16 bit should now work in exactly the same way. - RT
|
||||
*
|
||||
* Revision 2.3.2.6 2002/10/02 11:40:19 randomtiger
|
||||
* Bmpmap has been reverted to an old non d3d8 version.
|
||||
* All d3d8 code is now in the proper place.
|
||||
* PCX code is now working to an extent. Problems with alpha though.
|
||||
* Ani's work slowly with alpha problems.
|
||||
* Also I have done a bit of tidying - RT
|
||||
*
|
||||
* Revision 2.3.2.5 2002/09/24 18:56:42 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.3 2002/08/01 01:41:04 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -467,6 +504,7 @@
|
||||
#include "graphics/grinternal.h"
|
||||
#include "globalincs/systemvars.h"
|
||||
#include "cmdline/cmdline.h"
|
||||
#include "debugconsole/dbugfile.h"
|
||||
|
||||
// 3dnow stuff
|
||||
// #include "amd3d.h"
|
||||
@@ -516,9 +554,6 @@ void gr_close()
|
||||
|
||||
switch( gr_screen.mode ) {
|
||||
#ifdef _WIN32
|
||||
case GR_SOFTWARE:
|
||||
gr_soft_cleanup();
|
||||
break;
|
||||
case GR_DIRECTDRAW:
|
||||
Int3();
|
||||
gr_directdraw_cleanup();
|
||||
@@ -531,6 +566,12 @@ void gr_close()
|
||||
break;
|
||||
#endif
|
||||
|
||||
#ifndef NO_SOFTWARE_RENDERING
|
||||
case GR_SOFTWARE:
|
||||
gr_soft_cleanup();
|
||||
break;
|
||||
#endif // ifndef NO_SOFTWARE_RENDERING
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
case GR_OPENGL:
|
||||
gr_opengl_cleanup();
|
||||
@@ -872,42 +913,89 @@ void gr_detect_cpu(int *cpu, int *mmx, int *amd3d, int *katmai )
|
||||
|
||||
// --------------------------------------------------------------------------
|
||||
|
||||
// RT Created because D3D8 resolution is chosen in the D3D init function not from the launcher
|
||||
// Everything but D3D calls this before device initialisation
|
||||
void gr_init_res(int res, int mode, int fred_x, int fred_y)
|
||||
{
|
||||
int max_w, max_h;
|
||||
|
||||
max_w = -1;
|
||||
max_h = -1;
|
||||
if(!Fred_running && !Pofview_running){
|
||||
// set resolution based on the res type
|
||||
switch(res){
|
||||
case GR_640:
|
||||
max_w = 640;
|
||||
max_h = 480;
|
||||
break;
|
||||
|
||||
case GR_1024:
|
||||
max_w = 1024;
|
||||
max_h = 768;
|
||||
break;
|
||||
|
||||
default :
|
||||
Int3();
|
||||
}
|
||||
} else {
|
||||
max_w = fred_x;
|
||||
max_h = fred_y;
|
||||
|
||||
// Make w a multiple of 8
|
||||
max_w = ( max_w / 8 )*8;
|
||||
if ( max_w < 8 ) max_w = 8;
|
||||
if ( max_h < 8 ) max_h = 8;
|
||||
}
|
||||
|
||||
gr_screen.signature = Gr_signature++;
|
||||
gr_screen.mode = mode;
|
||||
gr_screen.res = res;
|
||||
gr_screen.max_w = max_w;
|
||||
gr_screen.max_h = max_h;
|
||||
gr_screen.aspect = 1.0f; // Normal PC screen
|
||||
gr_screen.offset_x = 0;
|
||||
gr_screen.offset_y = 0;
|
||||
gr_screen.clip_left = 0;
|
||||
gr_screen.clip_top = 0;
|
||||
gr_screen.clip_right = gr_screen.max_w - 1;
|
||||
gr_screen.clip_bottom = gr_screen.max_h - 1;
|
||||
gr_screen.clip_width = gr_screen.max_w;
|
||||
gr_screen.clip_height = gr_screen.max_h;
|
||||
}
|
||||
|
||||
int gr_init(int res, int mode, int depth, int fred_x, int fred_y)
|
||||
{
|
||||
int first_time = 0;
|
||||
int max_w, max_h;
|
||||
|
||||
gr_detect_cpu(&Gr_cpu, &Gr_mmx, &Gr_amd3d, &Gr_katmai );
|
||||
|
||||
mprintf(( "GR_CPU: Family %d, MMX=%s\n", Gr_cpu, (Gr_mmx?"Yes":"No") ));
|
||||
|
||||
// gr_test();
|
||||
|
||||
if ( !Gr_inited )
|
||||
atexit(gr_close);
|
||||
|
||||
// If already inited, shutdown the previous graphics
|
||||
if ( Gr_inited ) {
|
||||
DBUGFILE_OUTPUT_0("Shutting dwon previous gfx system");
|
||||
switch( gr_screen.mode ) {
|
||||
#ifdef _WIN32
|
||||
case GR_SOFTWARE:
|
||||
gr_soft_cleanup();
|
||||
break;
|
||||
case GR_DIRECTDRAW:
|
||||
Int3();
|
||||
gr_directdraw_cleanup();
|
||||
break;
|
||||
case GR_DIRECT3D:
|
||||
#ifdef USE_DX81
|
||||
// TODO: Add Dx8.1 clean up call here - unknownplayer
|
||||
#else
|
||||
gr_d3d_cleanup();
|
||||
#endif // USE_DX81 //
|
||||
break;
|
||||
case GR_GLIDE:
|
||||
gr_glide_cleanup();
|
||||
break;
|
||||
#endif
|
||||
#endif // ifdef _WIN32
|
||||
|
||||
#ifndef NO_SOFTWARE_RENDERING
|
||||
case GR_SOFTWARE:
|
||||
gr_soft_cleanup();
|
||||
break;
|
||||
#endif // ifndef NO_SOFTWARE_RENDERING
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
case GR_OPENGL:
|
||||
@@ -934,57 +1022,14 @@ int gr_init(int res, int mode, int depth, int fred_x, int fred_y)
|
||||
D3D_enabled = 0;
|
||||
Gr_inited = 1;
|
||||
|
||||
max_w = -1;
|
||||
max_h = -1;
|
||||
if(!Fred_running && !Pofview_running){
|
||||
// set resolution based on the res type
|
||||
switch(res){
|
||||
case GR_640:
|
||||
max_w = 640;
|
||||
max_h = 480;
|
||||
break;
|
||||
|
||||
case GR_1024:
|
||||
max_w = 1024;
|
||||
max_h = 768;
|
||||
break;
|
||||
|
||||
default :
|
||||
Int3();
|
||||
}
|
||||
} else {
|
||||
max_w = fred_x;
|
||||
max_h = fred_y;
|
||||
}
|
||||
|
||||
// Make w a multiple of 8
|
||||
max_w = ( max_w / 8 )*8;
|
||||
if ( max_w < 8 ) max_w = 8;
|
||||
if ( max_h < 8 ) max_h = 8;
|
||||
|
||||
// Moved memset to out here so its not all scrubbed when D3D8 needs to call it again to revise
|
||||
// the mode selection through its own launcher
|
||||
memset( &gr_screen, 0, sizeof(screen) );
|
||||
gr_init_res(res, mode, fred_x, fred_y);
|
||||
|
||||
gr_screen.signature = Gr_signature++;
|
||||
gr_screen.mode = mode;
|
||||
gr_screen.res = res;
|
||||
gr_screen.max_w = max_w;
|
||||
gr_screen.max_h = max_h;
|
||||
gr_screen.aspect = 1.0f; // Normal PC screen
|
||||
gr_screen.offset_x = 0;
|
||||
gr_screen.offset_y = 0;
|
||||
gr_screen.clip_left = 0;
|
||||
gr_screen.clip_top = 0;
|
||||
gr_screen.clip_right = gr_screen.max_w - 1;
|
||||
gr_screen.clip_bottom = gr_screen.max_h - 1;
|
||||
gr_screen.clip_width = gr_screen.max_w;
|
||||
gr_screen.clip_height = gr_screen.max_h;
|
||||
|
||||
switch( gr_screen.mode ) {
|
||||
DBUGFILE_OUTPUT_1("About to init %d", mode);
|
||||
switch( mode ) {
|
||||
#ifdef _WIN32
|
||||
case GR_SOFTWARE:
|
||||
Assert(Fred_running || Pofview_running || Is_standalone || Nebedit_running);
|
||||
gr_soft_init();
|
||||
break;
|
||||
// directdraw, direct3d,
|
||||
case GR_DIRECTDRAW:
|
||||
Int3();
|
||||
@@ -993,9 +1038,6 @@ int gr_init(int res, int mode, int depth, int fred_x, int fred_y)
|
||||
case GR_DIRECT3D:
|
||||
// Check if we want to use the DX8.1 routines - unknownplayer
|
||||
// This is here so we can revert to the old ones if necessary
|
||||
#ifdef USE_DX81
|
||||
// TODO: Insert new initialization for DX8.1 here - unknownplayer
|
||||
#else
|
||||
// we only care about possible 32 bit stuff here
|
||||
Cmdline_force_32bit = 0;
|
||||
if(depth == 32)
|
||||
@@ -1003,16 +1045,12 @@ int gr_init(int res, int mode, int depth, int fred_x, int fred_y)
|
||||
Cmdline_force_32bit = 1;
|
||||
}
|
||||
|
||||
gr_d3d_init();
|
||||
|
||||
// bad startup - stupid D3D
|
||||
extern int D3D_inited;
|
||||
if(!D3D_inited)
|
||||
if(gr_d3d_init() == false)
|
||||
{
|
||||
DBUGFILE_OUTPUT_0("Bad startup");
|
||||
Gr_inited = 0;
|
||||
return 1;
|
||||
}
|
||||
#endif // USE_DX81 //
|
||||
break;
|
||||
case GR_GLIDE:
|
||||
// if we're in high-res. force polygon interface
|
||||
@@ -1023,6 +1061,13 @@ int gr_init(int res, int mode, int depth, int fred_x, int fred_y)
|
||||
break;
|
||||
#endif // ifdef WIN32
|
||||
|
||||
#ifndef NO_SOFTWARE_RENDERING
|
||||
case GR_SOFTWARE:
|
||||
Assert(Fred_running || Pofview_running || Is_standalone || Nebedit_running);
|
||||
gr_soft_init();
|
||||
break;
|
||||
#endif // ifndef NO_SOFTWARE_RENDERING
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
case GR_OPENGL:
|
||||
Gr_bitmap_poly=1;
|
||||
@@ -1069,12 +1114,6 @@ void gr_force_windowed()
|
||||
|
||||
switch( gr_screen.mode ) {
|
||||
#ifdef _WIN32
|
||||
case GR_SOFTWARE:
|
||||
{
|
||||
extern void gr_soft_force_windowed();
|
||||
gr_soft_force_windowed();
|
||||
}
|
||||
break;
|
||||
case GR_DIRECTDRAW:
|
||||
{
|
||||
Int3();
|
||||
@@ -1092,6 +1131,15 @@ void gr_force_windowed()
|
||||
break;
|
||||
#endif // ifdef WIN32
|
||||
|
||||
#ifndef NO_SOFTWARE_RENDERING
|
||||
case GR_SOFTWARE:
|
||||
{
|
||||
extern void gr_soft_force_windowed();
|
||||
gr_soft_force_windowed();
|
||||
}
|
||||
break;
|
||||
#endif // ifndef NO_SOFTWARE_RENDERING
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
case GR_OPENGL:
|
||||
extern void opengl_minimize();
|
||||
@@ -1115,13 +1163,6 @@ void gr_activate(int active)
|
||||
|
||||
switch( gr_screen.mode ) {
|
||||
#ifdef _WIN32
|
||||
case GR_SOFTWARE:
|
||||
{
|
||||
extern void gr_soft_activate(int active);
|
||||
gr_soft_activate(active);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
case GR_DIRECTDRAW:
|
||||
{
|
||||
Int3();
|
||||
@@ -1146,6 +1187,16 @@ void gr_activate(int active)
|
||||
break;
|
||||
#endif // ifdef WIN32
|
||||
|
||||
#ifndef NO_SOFTWARE_RENDERING
|
||||
case GR_SOFTWARE:
|
||||
{
|
||||
extern void gr_soft_activate(int active);
|
||||
gr_soft_activate(active);
|
||||
return;
|
||||
}
|
||||
break;
|
||||
#endif // ifndef NO_SOFTWARE_RENDERING
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
case GR_OPENGL:
|
||||
extern void gr_opengl_activate(int active);
|
||||
@@ -1221,11 +1272,14 @@ void gr_bitmap(int x, int y)
|
||||
|
||||
// render all sections
|
||||
bm_get_info(gr_screen.current_bitmap, &w, &h, NULL, NULL, NULL, §ions);
|
||||
|
||||
y_line = 0;
|
||||
section_y = 0;
|
||||
|
||||
for(idx=0; idx<sections->num_y; idx++){
|
||||
x_line = 0;
|
||||
for(s_idx=0; s_idx<sections->num_x; s_idx++){
|
||||
|
||||
// get the section as a texture in vram
|
||||
gr_set_bitmap(gr_screen.current_bitmap, gr_screen.current_alphablend_mode, gr_screen.current_bitblt_mode, gr_screen.current_alpha, s_idx, idx);
|
||||
|
||||
@@ -1233,7 +1287,8 @@ void gr_bitmap(int x, int y)
|
||||
bm_get_section_size(gr_screen.current_bitmap, s_idx, idx, §ion_x, §ion_y);
|
||||
|
||||
// draw as a poly
|
||||
g3_draw_2d_poly_bitmap(x + x_line, y + y_line, section_x, section_y, TMAP_FLAG_BITMAP_SECTION);
|
||||
// RT draws all hall interface stuff
|
||||
g3_draw_2d_poly_bitmap(x + x_line, y + y_line, section_x, section_y, TMAP_FLAG_BITMAP_SECTION);
|
||||
x_line += section_x;
|
||||
}
|
||||
y_line += section_y;
|
||||
@@ -1246,24 +1301,21 @@ void gr_bitmap(int x, int y)
|
||||
// old school bitmaps
|
||||
switch(gr_screen.mode){
|
||||
#ifdef _WIN32
|
||||
case GR_SOFTWARE:
|
||||
grx_bitmap(x, y);
|
||||
break;
|
||||
|
||||
case GR_DIRECTDRAW:
|
||||
grx_bitmap(x, y);
|
||||
break;
|
||||
|
||||
case GR_DIRECT3D:
|
||||
gr_d3d_bitmap(x, y);
|
||||
break;
|
||||
|
||||
case GR_GLIDE:
|
||||
gr_glide_bitmap(x, y);
|
||||
break;
|
||||
|
||||
#endif // ifdef WIN32
|
||||
|
||||
#ifndef NO_SOFTWARE_RENDERING
|
||||
case GR_SOFTWARE:
|
||||
grx_bitmap(x, y);
|
||||
break;
|
||||
#endif // ifndef NO_SOFTWARE_RENDERING
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
case GR_OPENGL:
|
||||
gr_opengl_bitmap(x, y);
|
||||
@@ -1277,23 +1329,21 @@ void gr_bitmap_ex(int x, int y, int w, int h, int sx, int sy)
|
||||
{
|
||||
switch(gr_screen.mode){
|
||||
#ifdef _WIN32
|
||||
case GR_SOFTWARE:
|
||||
grx_bitmap_ex(x, y, w, h, sx, sy);
|
||||
break;
|
||||
|
||||
case GR_DIRECTDRAW:
|
||||
grx_bitmap_ex(x, y, w, h, sx, sy);
|
||||
break;
|
||||
|
||||
case GR_DIRECT3D:
|
||||
gr_d3d_bitmap_ex(x, y, w, h, sx, sy);
|
||||
break;
|
||||
|
||||
case GR_GLIDE:
|
||||
gr_glide_bitmap_ex(x, y, w, h, sx, sy);
|
||||
break;
|
||||
#endif // ifdef WIN32
|
||||
|
||||
#ifndef NO_SOFTWARE_RENDERING
|
||||
case GR_SOFTWARE:
|
||||
grx_bitmap_ex(x, y, w, h, sx, sy);
|
||||
break;
|
||||
#endif // ifndef NO_SOFTWARE_RENDERING
|
||||
|
||||
#ifdef USE_OPENGL
|
||||
case GR_OPENGL:
|
||||
gr_opengl_bitmap_ex(x, y, w, h, sx, sy);
|
||||
|
||||
+118
-6
@@ -9,13 +9,55 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/2d.h $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-07-04 02:27:48 $
|
||||
* $Author: phreak $
|
||||
*
|
||||
* Header file for 2d primitives.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.2 2003/03/18 10:07:02 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.1.2.5 2002/11/09 19:28:15 randomtiger
|
||||
*
|
||||
* Fixed small gfx initialisation bug that wasnt actually causing any problems.
|
||||
* Tided DX code, shifted stuff around, removed some stuff and documented some stuff.
|
||||
*
|
||||
* Revision 2.1.2.4 2002/11/04 16:04:20 randomtiger
|
||||
*
|
||||
* Tided up some bumpman stuff and added a few function points to gr_screen. - RT
|
||||
*
|
||||
* Revision 2.1.2.3 2002/11/04 03:02:28 randomtiger
|
||||
*
|
||||
* I have made some fairly drastic changes to the bumpman system. Now functionality can be engine dependant.
|
||||
* This is so D3D8 can call its own loading code that will allow good efficient loading and use of textures that it desparately needs without
|
||||
* turning bumpman.cpp into a total hook infested nightmare. Note the new bumpman code is still relying on a few of the of the old functions and all of the old bumpman arrays.
|
||||
*
|
||||
* I have done this by adding to the gr_screen list of function pointers that are set up by the engines init functions.
|
||||
* I have named the define calls the same name as the original 'bm_' functions so that I havent had to change names all through the code.
|
||||
*
|
||||
* Rolled back to an old version of bumpman and made a few changes.
|
||||
* Added new files: grd3dbumpman.cpp and .h
|
||||
* Moved the bitmap init function to after the 3D engine is initialised
|
||||
* Added includes where needed
|
||||
* Disabled (for now) the D3D8 TGA loading - RT
|
||||
*
|
||||
* Revision 2.1.2.2 2002/10/16 00:41:38 randomtiger
|
||||
* Fixed small bug that was stopping unactive text from displaying greyed out
|
||||
* Also added ability to run FS2 DX8 in 640x480, however I needed to make a small change to 2d.cpp
|
||||
* which invloved calling the resolution processing code after initialising the device for D3D only.
|
||||
* This is because D3D8 for the moment has its own internal launcher.
|
||||
* Also I added a fair bit of documentation and tidied some stuff up. - RT
|
||||
*
|
||||
* Revision 2.1.2.1 2002/10/11 18:50:54 randomtiger
|
||||
* Checked in fix for 16 bit problem, thanks to Righteous1
|
||||
* Removed a fair bit of code that was used by the 16 bit code path which no longer exists.
|
||||
* 32 bit and 16 bit should now work in exactly the same way. - RT
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:22 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -556,6 +598,41 @@ typedef struct screen {
|
||||
|
||||
// set the color to be used when clearing the background
|
||||
void (*gf_set_clear_color)(int r, int g, int b);
|
||||
|
||||
// Here be the bitmap functions
|
||||
void (*gf_bm_set_max_bitmap_size)(int size);
|
||||
int (*gf_bm_get_next_handle)();
|
||||
void (*gf_bm_close)();
|
||||
void (*gf_bm_init)();
|
||||
void (*gf_bm_get_frame_usage)(int *ntotal, int *nnew);
|
||||
int (*gf_bm_create)( int bpp, int w, int h, void * data, int flags = 0);
|
||||
int (*gf_bm_load)( char * real_filename );
|
||||
int (*gf_bm_load_duplicate)(char *filename);
|
||||
int (*gf_bm_load_animation)( char *real_filename, int *nframes, int *fps = NULL, int can_drop_frames = 0);
|
||||
void (*gf_bm_get_info)( int bitmapnum, int *w=NULL, int * h=NULL, ubyte * flags=NULL, int *nframes=NULL, int *fps=NULL, bitmap_section_info **sections = NULL);
|
||||
bitmap * (*gf_bm_lock)( int handle, ubyte bpp, ubyte flags );
|
||||
void (*gf_bm_unlock)( int handle );
|
||||
void (*gf_bm_get_palette)(int handle, ubyte *pal, char *name);
|
||||
void (*gf_bm_release)(int handle);
|
||||
int (*gf_bm_unload)( int handle );
|
||||
void (*gf_bm_unload_all)();
|
||||
void (*gf_bm_page_in_texture)( int bitmapnum, int nframes = 1);
|
||||
void (*gf_bm_page_in_start)();
|
||||
void (*gf_bm_page_in_stop)();
|
||||
int (*gf_bm_get_cache_slot)( int bitmap_id, int separate_ani_frames );
|
||||
void (*gf_bm_24_to_16)(int bit_24, ushort *bit_16);
|
||||
void (*gf_bm_get_components)(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
|
||||
void (*gf_bm_get_section_size)(int bitmapnum, int sx, int sy, int *w, int *h);
|
||||
|
||||
void (*gf_bm_page_in_nondarkening_texture)( int bitmapnum, int nframes = 1);
|
||||
void (*gf_bm_page_in_xparent_texture)( int bitmapnum, int nframes = 1);
|
||||
void (*gf_bm_page_in_aabitmap)( int bitmapnum, int nframes = 1);
|
||||
|
||||
void (*gf_translate_texture_matrix)(int unit, vector *shift);
|
||||
void (*gf_push_texture_matrix)(int unit);
|
||||
void (*gf_pop_texture_matrix)(int unit);
|
||||
|
||||
|
||||
} screen;
|
||||
|
||||
// cpu types
|
||||
@@ -629,6 +706,9 @@ extern int Web_cursor_bitmap;
|
||||
// Called by OS when application gets/looses focus
|
||||
extern void gr_activate(int active);
|
||||
|
||||
// Sets up resolution
|
||||
void gr_init_res(int res, int mode, int fredx = -1, int fredy = -1);
|
||||
|
||||
#define GR_CALL(x) (*x)
|
||||
|
||||
// These macros make the function indirection look like the
|
||||
@@ -654,8 +734,6 @@ extern void gr_activate(int active);
|
||||
#define gr_create_shader GR_CALL(gr_screen.gf_create_shader)
|
||||
#define gr_set_shader GR_CALL(gr_screen.gf_set_shader)
|
||||
#define gr_clear GR_CALL(gr_screen.gf_clear)
|
||||
// #define gr_bitmap GR_CALL(gr_screen.gf_bitmap)
|
||||
// #define gr_bitmap_ex GR_CALL(gr_screen.gf_bitmap_ex)
|
||||
#define gr_aabitmap GR_CALL(gr_screen.gf_aabitmap)
|
||||
#define gr_aabitmap_ex GR_CALL(gr_screen.gf_aabitmap_ex)
|
||||
#define gr_rect GR_CALL(gr_screen.gf_rect)
|
||||
@@ -711,7 +789,41 @@ extern void gr_activate(int active);
|
||||
|
||||
#define gr_set_clear_color GR_CALL(gr_screen.gf_set_clear_color)
|
||||
|
||||
// new bitmap functions
|
||||
#define gr_translate_texture_matrix GR_CALL(gr_screen.gf_translate_texture_matrix)
|
||||
#define gr_push_texture_matrix GR_CALL(gr_screen.gf_push_texture_matrix)
|
||||
#define gr_pop_texture_matrix GR_CALL(gr_screen.gf_pop_texture_matrix)
|
||||
|
||||
|
||||
// Here be the bitmap functions
|
||||
#define bm_set_max_bitmap_size GR_CALL(*gr_screen.gf_bm_set_max_bitmap_size)
|
||||
#define bm_get_next_handle GR_CALL(*gr_screen.gf_bm_get_next_handle)
|
||||
#define bm_close GR_CALL(*gr_screen.gf_bm_close)
|
||||
#define bm_init GR_CALL(*gr_screen.gf_bm_init)
|
||||
#define bm_get_frame_usage GR_CALL(*gr_screen.gf_bm_get_frame_usage)
|
||||
#define bm_create GR_CALL(*gr_screen.gf_bm_create)
|
||||
#define bm_load GR_CALL(*gr_screen.gf_bm_load)
|
||||
#define bm_load_duplicate GR_CALL(*gr_screen.gf_bm_load_duplicate)
|
||||
#define bm_load_animation GR_CALL(*gr_screen.gf_bm_load_animation)
|
||||
#define bm_get_info GR_CALL(*gr_screen.gf_bm_get_info)
|
||||
#define bm_lock GR_CALL(*gr_screen.gf_bm_lock)
|
||||
#define bm_unlock GR_CALL(*gr_screen.gf_bm_unlock)
|
||||
#define bm_get_palette GR_CALL(*gr_screen.gf_bm_get_palette)
|
||||
#define bm_release GR_CALL(*gr_screen.gf_bm_release)
|
||||
#define bm_unload GR_CALL(*gr_screen.gf_bm_unload)
|
||||
#define bm_unload_all GR_CALL(*gr_screen.gf_bm_unload_all)
|
||||
#define bm_page_in_texture GR_CALL(*gr_screen.gf_bm_page_in_texture)
|
||||
#define bm_page_in_start GR_CALL(*gr_screen.gf_bm_page_in_start)
|
||||
#define bm_page_in_stop GR_CALL(*gr_screen.gf_bm_page_in_stop)
|
||||
#define bm_get_cache_slot GR_CALL(*gr_screen.gf_bm_get_cache_slot)
|
||||
#define bm_24_to_16 GR_CALL(*gr_screen.gf_bm_24_to_16)
|
||||
#define bm_get_components GR_CALL(*gr_screen.gf_bm_get_components)
|
||||
#define bm_get_section_size GR_CALL(*gr_screen.gf_bm_get_section_size)
|
||||
|
||||
#define bm_page_in_nondarkening_texture GR_CALL(*gr_screen.gf_bm_page_in_nondarkening_texture)
|
||||
#define bm_page_in_xparent_texture GR_CALL(*gr_screen.gf_bm_page_in_xparent_texture)
|
||||
#define bm_page_in_aabitmap GR_CALL(*gr_screen.gf_bm_page_in_aabitmap)
|
||||
|
||||
// new bitmap functions
|
||||
extern int Gr_bitmap_poly;
|
||||
void gr_bitmap(int x, int y);
|
||||
void gr_bitmap_ex(int x, int y, int w, int h, int sx, int sy);
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/aaline.cpp $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-03-02 05:42:25 $
|
||||
* $Author: penguin $
|
||||
*
|
||||
* Code to draw antialiased lines
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.2 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.1 2002/07/07 19:55:59 penguin
|
||||
* Back-port to MSVC
|
||||
*
|
||||
@@ -246,11 +249,12 @@ void aaline_init_tables()
|
||||
// less than 1.0 and less total bits are sufficient.
|
||||
// Some of the steps here are not needed. This was originally
|
||||
// written to simulate exact hardware behavior.
|
||||
#if defined( _WIN32 ) && defined( _MSC_VER )
|
||||
#if defined _WIN32
|
||||
long int fix_xy_mult(long int oa, fix_xy ob)
|
||||
{
|
||||
int retval;
|
||||
|
||||
#if defined _MSC_VER
|
||||
_asm {
|
||||
mov edx, oa
|
||||
mov eax, ob
|
||||
@@ -258,11 +262,26 @@ long int fix_xy_mult(long int oa, fix_xy ob)
|
||||
shrd eax,edx,20
|
||||
mov retval, eax
|
||||
}
|
||||
#elif defined __GNUC__
|
||||
asm(
|
||||
"mov %1,%%edx;"
|
||||
"mov %2,%%eax;"
|
||||
"imul %%edx;"
|
||||
"shrd $20,%%eax,%%edx;"
|
||||
"mov %%eax,%0"
|
||||
: "=g" (retval) // outputs
|
||||
: "g" (oa), "g" (ob) // inputs
|
||||
: "eax", "edx" // clobbered registers
|
||||
);
|
||||
#else
|
||||
#error unknown compiler
|
||||
#endif
|
||||
return retval;
|
||||
}
|
||||
#else
|
||||
#error unknown OS
|
||||
long int fix_xy_mult(long int oa, fix_xy ob);
|
||||
#endif // if defined( _WIN32 ) && defined( _MSC_VER )
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -9,13 +9,22 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/Bitblt.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-03-18 10:07:02 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Code to do software bitblt type stuff
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1.2.1 2002/09/24 18:56:42 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:22 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -338,9 +347,6 @@ void gr8_bitmap_ex(int x,int y,int w,int h,int sx,int sy)
|
||||
bmp = bm_lock( gr_screen.current_bitmap, 8, 0 );
|
||||
sptr = (ubyte *)( bmp->data + (sy*bmp->w+sx) );
|
||||
|
||||
//mprintf(( "x=%d, y=%d, w=%d, h=%d\n", x, y, w, h ));
|
||||
//mprintf(( "sx=%d, sy=%d, bw=%d, bh=%d\n", sx, sy, bmp->w, bmp->h ));
|
||||
|
||||
if ( bmp->flags & BMP_XPARENT ) {
|
||||
for (i=0; i<h; i++ ) {
|
||||
int j;
|
||||
|
||||
@@ -21,126 +21,676 @@
|
||||
##UnknownPlayer##
|
||||
*/
|
||||
|
||||
// Commented out includes are those awaiting rewriting
|
||||
#include <math.h>
|
||||
|
||||
#include "graphics/directx8/grd3d81internal.h" // Updated to point to the correct include file
|
||||
|
||||
#include "graphics/directx8/grd3d81.h"
|
||||
#include "osapi/osapi.h"
|
||||
#include "graphics/2d.h"
|
||||
#include "bmpman/bmpman.h"
|
||||
#include "io/key.h"
|
||||
#include "math/floating.h"
|
||||
#include "palman/palman.h"
|
||||
#include "osapi/osregistry.h"
|
||||
#include "grd3d81.h" // Updated to point to the include for this file
|
||||
#include "graphics/line.h"
|
||||
#include "graphics/font.h"
|
||||
#include "graphics/grinternal.h"
|
||||
#include "io/mouse.h"
|
||||
#include "globalincs/alphacolors.h"
|
||||
#include "globalincs/systemvars.h"
|
||||
#include "cfile/cfile.h"
|
||||
#include "cmdline/cmdline.h"
|
||||
|
||||
bool D3D8_inited = false;
|
||||
|
||||
void gr_d3d8_init()
|
||||
{
|
||||
|
||||
int depth;
|
||||
// Initialize the D3DRENDER object and InitD3D
|
||||
if (Cmdline_force_32bit)
|
||||
{
|
||||
depth = 32;
|
||||
}
|
||||
else
|
||||
{
|
||||
depth = 16;
|
||||
}
|
||||
if (FAILED((D3D8RENDER::Instance())->InitD3D(gr_screen.max_w, gr_screen.max_h, depth ))
|
||||
{
|
||||
D3D8_inited = false;
|
||||
gr_d3d8_cleanup();
|
||||
return;
|
||||
}
|
||||
D3D8_inited = true;
|
||||
(D3D8RENDER::Instance())->AssignFunctions(); // Fill out the gr_screen structure with function pointers
|
||||
}
|
||||
|
||||
void gr_d3d8_cleanup()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void gr_d3d8_get_tex_format(int alpha)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void gr_d3d8_bitmap(int x, int y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void gr_d3d8_bitmap_ex(int x, int y, int w, int h, int sx, int sy)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int gr_d3d8_create_rendering_objects(int clear)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void gr_d3d8_release_rendering_objects()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
|
||||
void gr_d3d8_set_initial_render_state()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
char* d3d8_error_string(HRESULT error)
|
||||
{
|
||||
switch(error)
|
||||
if (!D3D8_inited)
|
||||
{
|
||||
case D3DERR_BADMAJORVERSION:
|
||||
return "D3DERR_BADMAJORVERSION\0";
|
||||
case D3DERR_BADMINORVERSION:
|
||||
return "D3DERR_BADMINORVERSION\0";
|
||||
case D3DERR_EXECUTE_LOCKED:
|
||||
return "D3DERR_EXECUTE_LOCKED\0";
|
||||
case D3DERR_EXECUTE_NOT_LOCKED:
|
||||
return "D3DERR_EXECUTE_NOT_LOCKED\0";
|
||||
case D3DERR_EXECUTE_CREATE_FAILED:
|
||||
return "D3DERR_EXECUTE_CREATE_FAILED\0";
|
||||
case D3DERR_EXECUTE_DESTROY_FAILED:
|
||||
return "D3DERR_EXECUTE_DESTROY_FAILED\0";
|
||||
case D3DERR_EXECUTE_LOCK_FAILED:
|
||||
return "D3DERR_EXECUTE_LOCK_FAILED\0";
|
||||
case D3DERR_EXECUTE_UNLOCK_FAILED:
|
||||
return "D3DERR_EXECUTE_UNLOCK_FAILED\0";
|
||||
case D3DERR_EXECUTE_FAILED:
|
||||
return "D3DERR_EXECUTE_FAILED\0";
|
||||
case D3DERR_EXECUTE_CLIPPED_FAILED:
|
||||
return "D3DERR_EXECUTE_CLIPPED_FAILED\0";
|
||||
case D3DERR_TEXTURE_NO_SUPPORT:
|
||||
return "D3DERR_TEXTURE_NO_SUPPORT\0";
|
||||
case D3DERR_TEXTURE_NOT_LOCKED:
|
||||
return "D3DERR_TEXTURE_NOT_LOCKED\0";
|
||||
case D3DERR_TEXTURE_LOCKED:
|
||||
return "D3DERR_TEXTURELOCKED\0";
|
||||
case D3DERR_TEXTURE_CREATE_FAILED:
|
||||
return "D3DERR_TEXTURE_CREATE_FAILED\0";
|
||||
case D3DERR_TEXTURE_DESTROY_FAILED:
|
||||
return "D3DERR_TEXTURE_DESTROY_FAILED\0";
|
||||
case D3DERR_TEXTURE_LOCK_FAILED:
|
||||
return "D3DERR_TEXTURE_LOCK_FAILED\0";
|
||||
case D3DERR_TEXTURE_UNLOCK_FAILED:
|
||||
return "D3DERR_TEXTURE_UNLOCK_FAILED\0";
|
||||
case D3DERR_TEXTURE_LOAD_FAILED:
|
||||
return "D3DERR_TEXTURE_LOAD_FAILED\0";
|
||||
case D3DERR_MATRIX_CREATE_FAILED:
|
||||
return "D3DERR_MATRIX_CREATE_FAILED\0";
|
||||
case D3DERR_MATRIX_DESTROY_FAILED:
|
||||
return "D3DERR_MATRIX_DESTROY_FAILED\0";
|
||||
case D3DERR_MATRIX_SETDATA_FAILED:
|
||||
return "D3DERR_MATRIX_SETDATA_FAILED\0";
|
||||
case D3DERR_SETVIEWPORTDATA_FAILED:
|
||||
return "D3DERR_SETVIEWPORTDATA_FAILED\0";
|
||||
case D3DERR_MATERIAL_CREATE_FAILED:
|
||||
return "D3DERR_MATERIAL_CREATE_FAILED\0";
|
||||
case D3DERR_MATERIAL_DESTROY_FAILED:
|
||||
return "D3DERR_MATERIAL_DESTROY_FAILED\0";
|
||||
case D3DERR_MATERIAL_SETDATA_FAILED:
|
||||
return "D3DERR_MATERIAL_SETDATA_FAILED\0";
|
||||
case D3DERR_LIGHT_SET_FAILED:
|
||||
return "D3DERR_LIGHT_SET_FAILED\0";
|
||||
default:
|
||||
return "Unrecognized error value.\0";
|
||||
}
|
||||
return;
|
||||
}
|
||||
// Go ahead and delete the singleton - this must be invoked or we're going to get funkiness
|
||||
D3D8RENDER* prender = (D3D8RENDER::Instance());
|
||||
delete prender;
|
||||
D3D8_inited = false;
|
||||
}
|
||||
|
||||
D3D8RENDER* D3D8RENDER::pInstance = 0; // Initialize pointer
|
||||
D3D8RENDER* D3D8RENDER::Instance()
|
||||
{
|
||||
if (pInstance == 0) // Is this the first call?
|
||||
{
|
||||
pInstance = new D3D8RENDER; // Make a new object then.
|
||||
}
|
||||
return pInstance; // Return a pointer to the object
|
||||
}
|
||||
|
||||
D3D8RENDER::D3D8RENDER()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
D3D8RENDER::~D3D8RENDER()
|
||||
{
|
||||
lpD3DDevice->Release();
|
||||
lpD3D->Release();
|
||||
}
|
||||
|
||||
/*
|
||||
* This function initializes D3D - it is the equivalent of gr_d3d_initdevice
|
||||
* This is the function in which to initialize features of D3D.
|
||||
* For example, if we add an option for anti-aliasing, initialize it here.
|
||||
* I have made some assumptions about what formats freespace expects and
|
||||
* this code will explicitely search for formats with equal pixel allocation
|
||||
*/
|
||||
HRESULT D3D8RENDER::InitD3D(int screenx, int screeny, int depth)
|
||||
{
|
||||
if (D3D8_inited)
|
||||
{
|
||||
return D3D_OK;
|
||||
}
|
||||
HWND hwnd; // Stores the main window handle
|
||||
hwnd = (HWND)os_get_window();
|
||||
|
||||
// Create the D3D8 object
|
||||
if (NULL == (lpD3D = Direct3DCreate8(D3D_SDK_VERSION)))
|
||||
{
|
||||
MessageBox(NULL, "Failed to create a D3D object", "##UnknownPlayer##", MB_OK);
|
||||
return E_FAIL;
|
||||
}
|
||||
|
||||
// Check for windowed mode
|
||||
if (D3D_window)
|
||||
{
|
||||
// SetWindowPos(hwnd, HWND_TOP, 0, 0, gr_screen.max_w, gr_screen.max_h, SWP_SHOWWINDOW | SWP_NOMOVE | SWP_NOSIZE | SWP_DRAWFRAME);
|
||||
SetForegroundWindow(hwnd);
|
||||
SetActiveWindow(hwnd);
|
||||
}
|
||||
else
|
||||
{
|
||||
SetWindowLong( hwnd, GWL_EXSTYLE, 0 );
|
||||
SetWindowLong( hwnd, GWL_STYLE, WS_POPUP );
|
||||
ShowWindow(hwnd, SW_SHOWNORMAL );
|
||||
// The next line seems to hang my debugger, so its out for now
|
||||
// SetWindowPos( hwnd, HWND_TOPMOST, 0, 0, gr_screen.max_w, gr_screen.max_h, 0 );
|
||||
SetActiveWindow(hwnd);
|
||||
SetForegroundWindow(hwnd);
|
||||
}
|
||||
|
||||
// Maybe delete this ???
|
||||
D3D_cursor_clip_rect.left = 0;
|
||||
D3D_cursor_clip_rect.top = 0;
|
||||
D3D_cursor_clip_rect.right = gr_screen.max_w-1;
|
||||
D3D_cursor_clip_rect.bottom = gr_screen.max_h-1;
|
||||
|
||||
D3DDISPLAYMODE d3ddm; // D3D display mode structure
|
||||
D3DPRESENT_PARAMETERS d3dpp; // Used to set the way D3D will display what we render
|
||||
ZeroMemory(&d3dpp, sizeof(d3dpp));
|
||||
|
||||
// It's here that we setup what type of display we want using d3dpp
|
||||
if (D3D_window)
|
||||
{
|
||||
// We must grab the current display settings here if we render to a window
|
||||
lpD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm);
|
||||
|
||||
d3dpp.Windowed = true;
|
||||
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||
d3dpp.hDeviceWindow = hwnd;
|
||||
d3dpp.BackBufferFormat = d3ddm.Format;
|
||||
}
|
||||
else
|
||||
{
|
||||
// TODO: This needs some way of setting the window to be fullscreen I think
|
||||
|
||||
// Here we need to enumerate modes and find a match for the type of mode we want
|
||||
// Currently we look for matches to screenx, screeny, depth and then get the fastest refresh rate
|
||||
uint modecount = lpD3D->GetAdapterModeCount(D3DADAPTER_DEFAULT);
|
||||
uint goodmode = NULL; // Stores the mode we want to use in the end
|
||||
|
||||
if (depth == 32)
|
||||
{
|
||||
// Search for a mode that's above 60hz and 32 bit
|
||||
for (uint i = 0; i < modecount; i++)
|
||||
{
|
||||
lpD3D->EnumAdapterModes(D3DADAPTER_DEFAULT, i, &d3ddm);
|
||||
if ((d3ddm.Height == screeny) && (d3ddm.Width == screenx) && (d3ddm.RefreshRate > 60) && (d3ddm.Format = D3DFMT_A8R8B8G8)
|
||||
{
|
||||
goodmode = i;
|
||||
}
|
||||
}
|
||||
|
||||
// Just try and get a mode then...
|
||||
if (goodmode == NULL)
|
||||
{
|
||||
for (uint i = 0; i < modecount; i++)
|
||||
{
|
||||
lpD3D->EnumAdapterModes(D3DADAPTER_DEFAULT, i, &d3ddm);
|
||||
if ((d3ddm.Height == screeny) && (d3ddm.Width == screenx) && (d3ddm.Format = D3DFMT_A8R8B8G8)
|
||||
{
|
||||
goodmode = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
// Search for a mode that's above 60hz and 32 bit
|
||||
for (uint i = 0; i < modecount; i++)
|
||||
{
|
||||
lpD3D->EnumAdapterModes(D3DADAPTER_DEFAULT, i, &d3ddm);
|
||||
if ((d3ddm.Height == screeny) && (d3ddm.Width == screenx) && (d3ddm.RefreshRate > 60) && (d3ddm.Format = D3DFMT_A4R4G4B4)
|
||||
{
|
||||
goodmode = i;
|
||||
}
|
||||
}
|
||||
|
||||
// Just try and get a mode then...
|
||||
if (goodmode == NULL)
|
||||
{
|
||||
for (uint i = 0; i < modecount; i++)
|
||||
{
|
||||
lpD3D->EnumAdapterModes(D3DADAPTER_DEFAULT, i, &d3ddm);
|
||||
if ((d3ddm.Height == screeny) && (d3ddm.Width == screenx) && (d3ddm.Format = D3DFMT_A4R4G4B4)
|
||||
{
|
||||
goodmode = i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Did we fail to find a mode at all?
|
||||
if (goodmode == NULL)
|
||||
{
|
||||
MessageBox(NULL, "Could not find an appropriate full screen mode!", "Unknown Player", MB_OK);
|
||||
return D3DERR_NOTAVAILABLE;
|
||||
}
|
||||
|
||||
// Get the properties of the mode we settled on
|
||||
lpD3D->EnumAdapterModes(D3DADAPTER_DEFAULT, goodmode, &d3ddm);
|
||||
|
||||
// Assign the mode to the properties it should be
|
||||
d3dpp.BackBufferFormat = d3ddm.Format;
|
||||
d3dpp.FullScreen_RefreshRateInHz = d3ddm.RefreshRate;
|
||||
d3dpp.Windowed = false;
|
||||
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
|
||||
d3dpp.hDeviceWindow = hwnd;
|
||||
}
|
||||
// Let D3D manage the depth and stencil buffers
|
||||
d3dpp.AutoDepthStencilFormat = D3DFMT_16; // 16-bit z-buffer
|
||||
d3dpp.EnableAutoDepthStencil = true;
|
||||
|
||||
// Create the D3D device here
|
||||
lpD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hwnd, D3DCREATE_HARDWARE_VERTEXPROCESSING, &d3dpp,
|
||||
&lpD3DDevice);
|
||||
|
||||
lpD3DDevice->GetDeviceCaps(&D3DCaps); // Grab the device capabilities now
|
||||
|
||||
// Viewport Stuff
|
||||
|
||||
// Old Viewport Code
|
||||
/*
|
||||
this sets up W data so the fogging can work
|
||||
extern float z_mult;
|
||||
set_wbuffer_planes(lpD3DDevice, 0.0f, z_mult);
|
||||
|
||||
viewdata.dwSize = sizeof( viewdata );
|
||||
viewdata.dwX = viewdata.dwY = 0;
|
||||
viewdata.dwWidth = gr_screen.max_w;
|
||||
viewdata.dwHeight = gr_screen.max_h;
|
||||
viewdata.dvScaleX = largest_side / 2.0f;
|
||||
viewdata.dvScaleY = largest_side / 2.0f;
|
||||
viewdata.dvMaxX = ( float ) ( viewdata.dwWidth / ( 2.0F * viewdata.dvScaleX ) );
|
||||
viewdata.dvMaxY = ( float ) ( viewdata.dwHeight / ( 2.0F * viewdata.dvScaleY ) );
|
||||
viewdata.dvMinZ = 0.0f;
|
||||
viewdata.dvMaxZ = 1.0f; // choose something appropriate here!
|
||||
*/
|
||||
ZeroMemory(&viewdata, sizeof(viewdata));
|
||||
viewdata.MaxZ = 1.0f;
|
||||
viewdata.MinZ = 0.0f;
|
||||
viewdata.Height = gr_screen.max_h;
|
||||
viewdata.Width = gr_screen.max_w;
|
||||
|
||||
lpD3DDevice->SetViewport(&viewdata);
|
||||
|
||||
return D3D_OK;
|
||||
}
|
||||
|
||||
void D3D8RENDER::AssignFunctions()
|
||||
{
|
||||
// All functions here should be encapsulated into the D3D8RENDER class as public
|
||||
// You need these stubs though to access them properly through the normal channels
|
||||
|
||||
Gr_current_red = &Gr_red;
|
||||
Gr_current_blue = &Gr_blue;
|
||||
Gr_current_green = &Gr_green;
|
||||
Gr_current_alpha = &Gr_alpha;
|
||||
|
||||
gr_screen.gf_flip = gr_d3d8e_flip;
|
||||
gr_screen.gf_flip_window = gr_d3d8e_flip_window;
|
||||
gr_screen.gf_set_clip = gr_d3d8e_set_clip;
|
||||
gr_screen.gf_reset_clip = gr_d3d8e_reset_clip;
|
||||
gr_screen.gf_set_font = grx_set_font;
|
||||
|
||||
gr_screen.gf_get_color = gr_d3d8e_get_color;
|
||||
gr_screen.gf_init_color = gr_d3d8e_init_color;
|
||||
gr_screen.gf_set_color_fast = gr_d3d8e_set_color_fast;
|
||||
gr_screen.gf_set_color = gr_d3d8e_set_color;
|
||||
gr_screen.gf_init_color = gr_d3d8e_init_color;
|
||||
gr_screen.gf_init_alphacolor = gr_d3d8e_init_alphacolor;
|
||||
|
||||
gr_screen.gf_set_bitmap = gr_d3d8e_set_bitmap;
|
||||
gr_screen.gf_create_shader = gr_d3d8e_create_shader;
|
||||
gr_screen.gf_set_shader = gr_d3d8e_set_shader;
|
||||
gr_screen.gf_clear = gr_d3d8e_clear;
|
||||
// gr_screen.gf_bitmap = gr_d3d8e_bitmap;
|
||||
// gr_screen.gf_bitmap_ex = gr_d3d8e_bitmap_ex;
|
||||
gr_screen.gf_aabitmap = gr_d3d8e_aabitmap;
|
||||
gr_screen.gf_aabitmap_ex = gr_d3d8e_aabitmap_ex;
|
||||
|
||||
gr_screen.gf_rect = gr_d3d8e_rect;
|
||||
gr_screen.gf_shade = gr_d3d8e_shade;
|
||||
gr_screen.gf_string = gr_d3d8e_string;
|
||||
gr_screen.gf_circle = gr_d3d8e_circle;
|
||||
|
||||
gr_screen.gf_line = gr_d3d8e_line;
|
||||
gr_screen.gf_aaline = gr_d3d8e_aaline;
|
||||
gr_screen.gf_pixel = gr_d3d8e_pixel;
|
||||
gr_screen.gf_scaler = gr_d3d8e_scaler;
|
||||
gr_screen.gf_aascaler = gr_d3d8e_aascaler;
|
||||
gr_screen.gf_tmapper = gr_d3d8e_tmapper;
|
||||
|
||||
gr_screen.gf_gradient = gr_d3d8e_gradient;
|
||||
|
||||
gr_screen.gf_set_palette = gr_d3d8e_set_palette;
|
||||
gr_screen.gf_print_screen = gr_d3d8e_print_screen;
|
||||
|
||||
gr_screen.gf_fade_in = gr_d3d8e_fade_in;
|
||||
gr_screen.gf_fade_out = gr_d3d8e_fade_out;
|
||||
gr_screen.gf_flash = gr_d3d8e_flash;
|
||||
|
||||
gr_screen.gf_zbuffer_get = gr_d3d8e_zbuffer_get;
|
||||
gr_screen.gf_zbuffer_set = gr_d3d8e_zbuffer_set;
|
||||
gr_screen.gf_zbuffer_clear = gr_d3d8e_zbuffer_clear;
|
||||
|
||||
gr_screen.gf_save_screen = gr_d3d8e_save_screen;
|
||||
gr_screen.gf_restore_screen = gr_d3d8e_restore_screen;
|
||||
gr_screen.gf_free_screen = gr_d3d8e_free_screen;
|
||||
|
||||
// Screen dumping stuff
|
||||
gr_screen.gf_dump_frame_start = gr_d3d8e_dump_frame_start;
|
||||
gr_screen.gf_dump_frame_stop = gr_d3d8e_dump_frame_stop;
|
||||
gr_screen.gf_dump_frame = gr_d3d8e_dump_frame;
|
||||
|
||||
gr_screen.gf_set_gamma = gr_d3d8e_set_gamma;
|
||||
|
||||
// Lock/unlock stuff
|
||||
gr_screen.gf_lock = gr_d3d8e_lock;
|
||||
gr_screen.gf_unlock = gr_d3d8e_unlock;
|
||||
|
||||
// screen region
|
||||
gr_screen.gf_get_region = gr_d3d8e_get_region;
|
||||
|
||||
// fog stuff
|
||||
gr_screen.gf_fog_set = gr_d3d8e_fog_set;
|
||||
|
||||
// pixel get
|
||||
gr_screen.gf_get_pixel = gr_d3d8e_get_pixel;
|
||||
|
||||
// poly culling
|
||||
gr_screen.gf_set_cull = gr_d3d8e_set_cull;
|
||||
|
||||
// cross fade
|
||||
gr_screen.gf_cross_fade = gr_d3d8e_cross_fade;
|
||||
|
||||
// filtering
|
||||
gr_screen.gf_filter_set = gr_d3d8e_filter_set;
|
||||
|
||||
// texture cache
|
||||
gr_screen.gf_tcache_set = d3d8e_tcache_set;
|
||||
|
||||
// set clear color
|
||||
gr_screen.gf_set_clear_color = gr_d3d8e_set_clear_color;
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_flash(int r, int g, int b)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_zbuffer_clear(int mode)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int D3D8RENDER::gr_d3d8_zbuffer_get()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
int D3D8RENDER::gr_d3d8_zbuffer_set(int mode)
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_tmapper( int nverts, vertex **verts, uint flags )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_scaler(vertex *va, vertex *vb )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_aascaler(vertex *va, vertex *vb )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_pixel(int x, int y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_clear()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_set_clip(int x,int y,int w,int h)
|
||||
{
|
||||
|
||||
}
|
||||
void D3D8RENDER::gr_d3d8_reset_clip()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_init_color(color *c, int r, int g, int b)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_init_alphacolor( color *clr, int r, int g, int b, int alpha, int type )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_set_color( int r, int g, int b )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_get_color( int * r, int * g, int * b )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_set_color_fast(color *dst)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_set_bitmap( int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha, int sx, int sy )
|
||||
{
|
||||
|
||||
}
|
||||
void D3D8RENDER::gr_d3d8_bitmap_ex(int x,int y,int w,int h,int sx,int sy)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_bitmap(int x, int y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_aabitmap_ex(int x,int y,int w,int h,int sx,int sy)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_aabitmap(int x, int y)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_rect(int x,int y,int w,int h)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_create_shader(shader * shade, float r, float g, float b, float c )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_set_shader( shader * shade )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_shade(int x,int y,int w,int h)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_create_font_bitmap()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_char(int x,int y,int letter)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_string( int sx, int sy, char *s )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_circle( int xc, int yc, int d )
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_line(int x1,int y1,int x2,int y2)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_aaline(vertex *v1, vertex *v2)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_gradient(int x1,int y1,int x2,int y2)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_set_palette(ubyte *new_palette, int restrict_alphacolor)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_diamond(int x, int y, int width, int height)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_print_screen(char *filename)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::d3d8_tcache_init(int use_sections)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::d3d8_tcache_cleanup()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::d3d8_tcache_flush()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::d3d8_tcache_frame()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::d3d8_flush()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int D3D8RENDER::d3d8_tcache_set(int bitmap_id, int bitmap_type, float *u_ratio, float *v_ratio, int fail_on_full, int sx, int sy, int force )
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
void D3D8RENDER::d3d8_dump_frame()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_flip()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_flip_cleanup()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_flip_window(uint _hdc, int x, int y, int w, int h)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_fade_out(int instantaneous)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_fade_in(int instantaneous)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
int D3D8RENDER::gr_d3d8_save_screen()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_restore_screen(int id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_free_screen(int id)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_dump_frame_start(int first_frame, int frames_between_dumps)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_dump_frame_stop()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_set_gamma(float gamma)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
uint D3D8RENDER::gr_d3d8_lock()
|
||||
{
|
||||
return 1;
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_unlock()
|
||||
{/* VOID FUNCTION */}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_get_region(int front, int w, int h, ubyte *data)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_fog_set(int fog_mode, int r, int g, int b, float fog_near, float fog_far)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_get_pixel(int x, int y, int *r, int *g, int *b)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_set_cull(int cull)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_cross_fade(int bmap1, int bmap2, int x1, int y1, int x2, int y2, float pct)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_filter_set(int filter)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::gr_d3d8_set_clear_color(int r, int g, int b)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
void D3D8RENDER::StartD3D8Frame()
|
||||
{
|
||||
if (!D3D8_inited)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (in_frame)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
lpD3DDevice->BeginScene();
|
||||
}
|
||||
|
||||
void D3D8RENDER::EndD3D8Frame()
|
||||
{
|
||||
if (!D3D8_inited)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
if (!in_frame)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
||||
lpD3DDevice->EndScene();
|
||||
}
|
||||
@@ -1,27 +1,199 @@
|
||||
/*
|
||||
Main header file for the DX8.1 graphics routines.
|
||||
See the .cpp for more info.
|
||||
This is going to essentially resemble the original [V] one.
|
||||
|
||||
This class is in fact a singleton pattern, but it depends upon being manually destroyed
|
||||
through the destroyer god function. For safety's sake, we need to ensure this isn't invoked
|
||||
before it should be, and is owned before we try to create some other graphics interface.
|
||||
|
||||
As such used gr_d3d8_init() as the first time its called, and gr_d3d8_cleanup to destroy it.
|
||||
|
||||
Access to the class is through Instance() - i.e. (D3D8RENDER::Instance)-><whatever you want>
|
||||
is acceptable to get to it.
|
||||
*/
|
||||
|
||||
#ifndef _GRD3D81_H
|
||||
#define _GRD3D81_H
|
||||
|
||||
void gr_d3d8_init();
|
||||
void gr_d3d8_cleanup();
|
||||
// DX8.1 header files
|
||||
#include <d3d8.h>
|
||||
#include <d3dx8.h>
|
||||
#include "graphics/2d.h"
|
||||
#include "graphics/grinternal.h"
|
||||
|
||||
// call this to safely fill in the texture shift and scale values for the specified texture type (Gr_t_*)
|
||||
void gr_d3d8_get_tex_format(int alpha);
|
||||
void gr_d3d8_init(); // Creation god function
|
||||
void gr_d3d8_cleanup(); // Destruction god function
|
||||
|
||||
// bitmap functions
|
||||
void gr_d3d8_bitmap(int x, int y);
|
||||
void gr_d3d8_bitmap_ex(int x, int y, int w, int h, int sx, int sy);
|
||||
extern int D3D_window;
|
||||
extern int Cmdline_force_32bit;
|
||||
|
||||
// create all rendering objects (surfaces, d3d device, viewport, etc)
|
||||
int gr_d3d8_create_rendering_objects(int clear);
|
||||
void gr_d3d8_release_rendering_objects();
|
||||
extern color_gun *Gr_current_red, *Gr_current_green, *Gr_current_blue, *Gr_current_alpha;
|
||||
extern color_gun Gr_red, Gr_green, Gr_blue, Gr_alpha;
|
||||
|
||||
extern bool D3D8_init;
|
||||
|
||||
// Officially C++'d!
|
||||
class D3D8RENDER
|
||||
{
|
||||
public:
|
||||
static D3D8RENDER* Instance(); // Accessor Function
|
||||
|
||||
~D3D8RENDER();
|
||||
|
||||
HRESULT InitD3D(int screenx, int screeny, int depth); // Self-explanatory
|
||||
void AssignFunctions(void); // Fill out the gr_screen structure with function pointers
|
||||
void StartD3D8Frame(); // Starts a frame
|
||||
void EndD3D8Frame();
|
||||
|
||||
// Public D3D8 Structures
|
||||
LPDIRECT3D8 lpD3D;
|
||||
LPDIRECT3DDEVICE8 lpD3DDevice;
|
||||
D3DCAPS8 D3DCaps; // Holds info about the D3D device
|
||||
D3DVIEWPORT8 viewdata; // Holds info about the current device viewport
|
||||
|
||||
// gr_screen functions - the way I do this is probably inefficient, but it is consistent
|
||||
// we'll fix it up later
|
||||
void gr_d3d8_flash(int r, int g, int b);
|
||||
void gr_d3d8_zbuffer_clear(int mode);
|
||||
int gr_d3d8_zbuffer_get();
|
||||
int gr_d3d8_zbuffer_set(int mode);
|
||||
void gr_d3d8_tmapper( int nverts, vertex **verts, uint flags );
|
||||
void gr_d3d8_scaler(vertex *va, vertex *vb );
|
||||
void gr_d3d8_aascaler(vertex *va, vertex *vb );
|
||||
void gr_d3d8_pixel(int x, int y);
|
||||
void gr_d3d8_clear();
|
||||
void gr_d3d8_set_clip(int x,int y,int w,int h);
|
||||
void gr_d3d8_reset_clip();
|
||||
void gr_d3d8_init_color(color *c, int r, int g, int b);
|
||||
void gr_d3d8_init_alphacolor( color *clr, int r, int g, int b, int alpha, int type );
|
||||
void gr_d3d8_set_color( int r, int g, int b );
|
||||
void gr_d3d8_get_color( int * r, int * g, int * b );
|
||||
void gr_d3d8_set_color_fast(color *dst);
|
||||
void gr_d3d8_set_bitmap( int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha, int sx=-1, int sy=-1 );
|
||||
void gr_d3d8_bitmap_ex(int x,int y,int w,int h,int sx,int sy);
|
||||
void gr_d3d8_bitmap(int x, int y);
|
||||
void gr_d3d8_aabitmap_ex(int x,int y,int w,int h,int sx,int sy);
|
||||
void gr_d3d8_aabitmap(int x, int y);
|
||||
void gr_d3d8_rect(int x,int y,int w,int h);
|
||||
void gr_d3d8_create_shader(shader * shade, float r, float g, float b, float c );
|
||||
void gr_d3d8_set_shader( shader * shade );
|
||||
void gr_d3d8_shade(int x,int y,int w,int h);
|
||||
void gr_d3d8_create_font_bitmap();
|
||||
void gr_d3d8_char(int x,int y,int letter);
|
||||
void gr_d3d8_string( int sx, int sy, char *s );
|
||||
void gr_d3d8_circle( int xc, int yc, int d );
|
||||
void gr_d3d8_line(int x1,int y1,int x2,int y2);
|
||||
void gr_d3d8_aaline(vertex *v1, vertex *v2);
|
||||
void gr_d3d8_gradient(int x1,int y1,int x2,int y2);
|
||||
void gr_d3d8_set_palette(ubyte *new_palette, int restrict_alphacolor);
|
||||
void gr_d3d8_diamond(int x, int y, int width, int height);
|
||||
void gr_d3d8_print_screen(char *filename);
|
||||
|
||||
void d3d8_tcache_init(int use_sections);
|
||||
void d3d8_tcache_cleanup();
|
||||
void d3d8_tcache_flush();
|
||||
void d3d8_tcache_frame();
|
||||
void d3d8_flush();
|
||||
int d3d8_tcache_set(int bitmap_id, int bitmap_type, float *u_ratio, float *v_ratio, int fail_on_full=0, int sx = -1, int sy = -1, int force = 0);
|
||||
|
||||
void d3d8_dump_frame();
|
||||
void gr_d3d8_flip();
|
||||
void gr_d3d8_flip_cleanup();
|
||||
void gr_d3d8_flip_window(uint _hdc, int x, int y, int w, int h);
|
||||
void gr_d3d8_fade_out(int instantaneous);
|
||||
void gr_d3d8_fade_in(int instantaneous);
|
||||
int gr_d3d8_save_screen();
|
||||
void gr_d3d8_restore_screen(int id);
|
||||
void gr_d3d8_free_screen(int id);
|
||||
void gr_d3d8_dump_frame_start(int first_frame, int frames_between_dumps);
|
||||
void gr_d3d8_dump_frame_stop();
|
||||
void gr_d3d8_set_gamma(float gamma);
|
||||
uint gr_d3d8_lock();
|
||||
void gr_d3d8_unlock();
|
||||
void gr_d3d8_get_region(int front, int w, int h, ubyte *data);
|
||||
void gr_d3d8_fog_set(int fog_mode, int r, int g, int b, float fog_near, float fog_far);
|
||||
void gr_d3d8_get_pixel(int x, int y, int *r, int *g, int *b);
|
||||
void gr_d3d8_set_cull(int cull);
|
||||
void gr_d3d8_cross_fade(int bmap1, int bmap2, int x1, int y1, int x2, int y2, float pct);
|
||||
void gr_d3d8_filter_set(int filter);
|
||||
void gr_d3d8_set_clear_color(int r, int g, int b);
|
||||
|
||||
protected:
|
||||
D3D8RENDER(); // Constructor function - called by the Instance function
|
||||
|
||||
private:
|
||||
static D3D8RENDER* pInstance; // Singleton pointer
|
||||
RECT D3D_cursor_clip_rect; // Area where the cursor is clipped - possibly quite pointless right now
|
||||
bool in_frame; // Are we rendering a frame currently?
|
||||
|
||||
};
|
||||
|
||||
// Stub Functions which call the in class functions
|
||||
// This is because I don't want to edit gr_screen, but if we do more replacementr of the functions
|
||||
// then these will probably become obsolete
|
||||
void gr_d3d8e_flash(int r, int g, int b);
|
||||
void gr_d3d8e_zbuffer_clear(int mode);
|
||||
int gr_d3d8e_zbuffer_get();
|
||||
int gr_d3d8e_zbuffer_set(int mode);
|
||||
void gr_d3d8e_tmapper( int nverts, vertex **verts, uint flags );
|
||||
void gr_d3d8e_scaler(vertex *va, vertex *vb );
|
||||
void gr_d3d8e_aascaler(vertex *va, vertex *vb );
|
||||
void gr_d3d8e_pixel(int x, int y);
|
||||
void gr_d3d8e_clear();
|
||||
void gr_d3d8e_set_clip(int x,int y,int w,int h);
|
||||
void gr_d3d8e_reset_clip();
|
||||
void gr_d3d8e_init_color(color *c, int r, int g, int b);
|
||||
void gr_d3d8e_init_alphacolor( color *clr, int r, int g, int b, int alpha, int type );
|
||||
void gr_d3d8e_set_color( int r, int g, int b );
|
||||
void gr_d3d8e_get_color( int * r, int * g, int * b );
|
||||
void gr_d3d8e_set_color_fast(color *dst);
|
||||
void gr_d3d8e_set_bitmap( int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha, int sx=-1, int sy=-1 );
|
||||
void gr_d3d8e_bitmap_ex(int x,int y,int w,int h,int sx,int sy);
|
||||
void gr_d3d8e_bitmap(int x, int y);
|
||||
void gr_d3d8e_aabitmap_ex(int x,int y,int w,int h,int sx,int sy);
|
||||
void gr_d3d8e_aabitmap(int x, int y);
|
||||
void gr_d3d8e_rect(int x,int y,int w,int h);
|
||||
void gr_d3d8e_create_shader(shader * shade, float r, float g, float b, float c );
|
||||
void gr_d3d8e_set_shader( shader * shade );
|
||||
void gr_d3d8e_shade(int x,int y,int w,int h);
|
||||
void gr_d3d8e_create_font_bitmap();
|
||||
void gr_d3d8e_char(int x,int y,int letter);
|
||||
void gr_d3d8e_string( int sx, int sy, char *s );
|
||||
void gr_d3d8e_circle( int xc, int yc, int d );
|
||||
void gr_d3d8e_line(int x1,int y1,int x2,int y2);
|
||||
void gr_d3d8e_aaline(vertex *v1, vertex *v2);
|
||||
void gr_d3d8e_gradient(int x1,int y1,int x2,int y2);
|
||||
void gr_d3d8e_set_palette(ubyte *new_palette, int restrict_alphacolor);
|
||||
void gr_d3d8e_diamond(int x, int y, int width, int height);
|
||||
void gr_d3d8e_print_screen(char *filename);
|
||||
|
||||
void d3d8e_tcache_init(int use_sections);
|
||||
void d3d8e_tcache_cleanup();
|
||||
void d3d8e_tcache_flush();
|
||||
void d3d8e_tcache_frame();
|
||||
void d3d8e_flush();
|
||||
int d3d8e_tcache_set(int bitmap_id, int bitmap_type, float *u_ratio, float *v_ratio, int fail_on_full=0, int sx = -1, int sy = -1, int force = 0);
|
||||
|
||||
void gr_d3d8e_dump_frame();
|
||||
void gr_d3d8e_flip();
|
||||
void gr_d3d8e_flip_cleanup();
|
||||
void gr_d3d8e_flip_window(uint _hdc, int x, int y, int w, int h);
|
||||
void gr_d3d8e_fade_out(int instantaneous);
|
||||
void gr_d3d8e_fade_in(int instantaneous);
|
||||
int gr_d3d8e_save_screen();
|
||||
void gr_d3d8e_restore_screen(int id);
|
||||
void gr_d3d8e_free_screen(int id);
|
||||
void gr_d3d8e_dump_frame_start(int first_frame, int frames_between_dumps);
|
||||
void gr_d3d8e_dump_frame_stop();
|
||||
void gr_d3d8e_set_gamma(float gamma);
|
||||
uint gr_d3d8e_lock();
|
||||
void gr_d3d8e_unlock();
|
||||
void gr_d3d8e_get_region(int front, int w, int h, ubyte *data);
|
||||
void gr_d3d8e_fog_set(int fog_mode, int r, int g, int b, float fog_near, float fog_far);
|
||||
void gr_d3d8e_get_pixel(int x, int y, int *r, int *g, int *b);
|
||||
void gr_d3d8e_set_cull(int cull);
|
||||
void gr_d3d8e_cross_fade(int bmap1, int bmap2, int x1, int y1, int x2, int y2, float pct);
|
||||
void gr_d3d8e_filter_set(int filter);
|
||||
void gr_d3d8e_set_clear_color(int r, int g, int b);
|
||||
|
||||
void gr_d3d8_set_initial_render_state();
|
||||
|
||||
#endif // _GRD3D81_H
|
||||
@@ -0,0 +1,318 @@
|
||||
/*
|
||||
Stores stub functions for the D3D8RENDER class so we can access it through gr_screen
|
||||
*/
|
||||
|
||||
#include "graphics/directx8/grd3d81.h"
|
||||
|
||||
#define d3d8 (D3D8RENDER::Instance())
|
||||
|
||||
void gr_d3d8e_flash(int r, int g, int b)
|
||||
{
|
||||
d3d8->gr_d3d8_flash(r, g, b);
|
||||
}
|
||||
|
||||
void gr_d3d8e_zbuffer_clear(int mode)
|
||||
{
|
||||
d3d8->gr_d3d8_zbuffer_clear(mode);
|
||||
}
|
||||
|
||||
int gr_d3d8e_zbuffer_get()
|
||||
{
|
||||
return d3d8->gr_d3d8_zbuffer_get();
|
||||
}
|
||||
|
||||
int gr_d3d8e_zbuffer_set(int mode)
|
||||
{
|
||||
return d3d8->gr_d3d8_zbuffer_set(mode);
|
||||
}
|
||||
|
||||
void gr_d3d8e_tmapper( int nverts, vertex **verts, uint flags )
|
||||
{
|
||||
d3d8->gr_d3d8_tmapper( nverts, verts, flags );
|
||||
}
|
||||
|
||||
void gr_d3d8e_scaler(vertex *va, vertex *vb )
|
||||
{
|
||||
d3d8->gr_d3d8_scaler(va, vb );
|
||||
}
|
||||
|
||||
void gr_d3d8e_aascaler(vertex *va, vertex *vb )
|
||||
{
|
||||
d3d8->gr_d3d8_aascaler(va, vb );
|
||||
}
|
||||
|
||||
void gr_d3d8e_pixel(int x, int y)
|
||||
{
|
||||
d3d8->gr_d3d8_pixel(x, y);
|
||||
}
|
||||
|
||||
void gr_d3d8e_clear()
|
||||
{
|
||||
d3d8->gr_d3d8_clear();
|
||||
}
|
||||
|
||||
void gr_d3d8e_set_clip(int x,int y,int w,int h)
|
||||
{
|
||||
d3d8->gr_d3d8_set_clip(x, y, w, h);
|
||||
}
|
||||
void gr_d3d8e_reset_clip()
|
||||
{
|
||||
d3d8->gr_d3d8_reset_clip();
|
||||
}
|
||||
|
||||
void gr_d3d8e_init_color(color *c, int r, int g, int b)
|
||||
{
|
||||
d3d8->gr_d3d8_init_color(c, r, g, b);
|
||||
}
|
||||
|
||||
void gr_d3d8e_init_alphacolor( color *clr, int r, int g, int b, int alpha, int type )
|
||||
{
|
||||
d3d8->gr_d3d8_init_alphacolor( clr, r, g, b, alpha, type );
|
||||
}
|
||||
|
||||
void gr_d3d8e_set_color( int r, int g, int b )
|
||||
{
|
||||
d3d8->gr_d3d8_set_color( r, g, b );
|
||||
}
|
||||
|
||||
void gr_d3d8e_get_color( int * r, int * g, int * b )
|
||||
{
|
||||
d3d8->gr_d3d8_get_color(r, g, b );
|
||||
}
|
||||
|
||||
void gr_d3d8e_set_color_fast(color *dst)
|
||||
{
|
||||
d3d8->gr_d3d8_set_color_fast(dst);
|
||||
}
|
||||
|
||||
void gr_d3d8e_set_bitmap( int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha, int sx, int sy )
|
||||
{
|
||||
d3d8->gr_d3d8_set_bitmap( bitmap_num, alphablend_mode, bitblt_mode, alpha, sx, sy );
|
||||
}
|
||||
|
||||
void gr_d3d8e_bitmap_ex(int x,int y,int w,int h,int sx,int sy)
|
||||
{
|
||||
d3d8->gr_d3d8_bitmap_ex( x, y, w, h, sx,sy);
|
||||
}
|
||||
|
||||
void gr_d3d8e_bitmap( int x, int y)
|
||||
{
|
||||
d3d8->gr_d3d8_bitmap( x, y);
|
||||
}
|
||||
|
||||
void gr_d3d8e_aabitmap_ex(int x,int y,int w,int h,int sx,int sy)
|
||||
{
|
||||
d3d8->gr_d3d8_aabitmap_ex(x, y, w, h, sx, sy);
|
||||
}
|
||||
|
||||
void gr_d3d8e_aabitmap(int x, int y)
|
||||
{
|
||||
d3d8->gr_d3d8_aabitmap( x, y);
|
||||
}
|
||||
|
||||
void gr_d3d8e_rect(int x,int y,int w,int h)
|
||||
{
|
||||
d3d8->gr_d3d8_rect( x, y, w, h);
|
||||
}
|
||||
|
||||
void gr_d3d8e_create_shader(shader * shade, float r, float g, float b, float c )
|
||||
{
|
||||
d3d8->gr_d3d8_create_shader(shade, r, g, b, c );
|
||||
}
|
||||
|
||||
void gr_d3d8e_set_shader( shader * shade )
|
||||
{
|
||||
d3d8->gr_d3d8_set_shader( shade );
|
||||
}
|
||||
|
||||
void gr_d3d8e_shade(int x,int y,int w,int h)
|
||||
{
|
||||
d3d8->gr_d3d8_shade(x, y, w, h);
|
||||
}
|
||||
|
||||
void gr_d3d8e_create_font_bitmap()
|
||||
{
|
||||
d3d8->gr_d3d8_create_font_bitmap();
|
||||
}
|
||||
|
||||
void gr_d3d8e_char(int x,int y,int letter)
|
||||
{
|
||||
d3d8->gr_d3d8_char( x, y, letter);
|
||||
}
|
||||
|
||||
void gr_d3d8e_string( int sx, int sy, char *s )
|
||||
{
|
||||
d3d8->gr_d3d8_string( sx, sy, s );
|
||||
}
|
||||
|
||||
void gr_d3d8e_circle( int xc, int yc, int d )
|
||||
{
|
||||
d3d8->gr_d3d8_circle( xc, yc, d );
|
||||
}
|
||||
|
||||
void gr_d3d8e_line(int x1,int y1,int x2,int y2)
|
||||
{
|
||||
d3d8->gr_d3d8_line( x1, y1, x2, y2);
|
||||
}
|
||||
|
||||
void gr_d3d8e_aaline(vertex *v1, vertex *v2)
|
||||
{
|
||||
d3d8->gr_d3d8_aaline(v1,v2);
|
||||
}
|
||||
|
||||
void gr_d3d8e_gradient(int x1,int y1,int x2,int y2)
|
||||
{
|
||||
d3d8->gr_d3d8_gradient(x1,y1,x2,y2);
|
||||
}
|
||||
|
||||
void gr_d3d8e_set_palette(ubyte *new_palette, int restrict_alphacolor)
|
||||
{
|
||||
d3d8->gr_d3d8_set_palette(new_palette, restrict_alphacolor);
|
||||
}
|
||||
|
||||
void gr_d3d8e_diamond(int x, int y, int width, int height)
|
||||
{
|
||||
d3d8->gr_d3d8_diamond(x, y, width, height);
|
||||
}
|
||||
|
||||
void gr_d3d8e_print_screen(char *filename)
|
||||
{
|
||||
d3d8->gr_d3d8_print_screen(filename);
|
||||
}
|
||||
|
||||
void d3d8e_tcache_init(int use_sections)
|
||||
{
|
||||
d3d8->d3d8_tcache_init(use_sections);
|
||||
}
|
||||
|
||||
void d3d8e_tcache_cleanup()
|
||||
{
|
||||
d3d8->d3d8_tcache_cleanup();
|
||||
}
|
||||
|
||||
void d3d8e_tcache_flush()
|
||||
{
|
||||
d3d8->d3d8_tcache_flush();
|
||||
}
|
||||
|
||||
void d3d8e_tcache_frame()
|
||||
{
|
||||
d3d8->d3d8_tcache_frame();
|
||||
}
|
||||
|
||||
void d3d8e_flush()
|
||||
{
|
||||
d3d8->d3d8_flush();
|
||||
}
|
||||
|
||||
int d3d8e_tcache_set(int bitmap_id, int bitmap_type, float *u_ratio, float *v_ratio, int fail_on_full, int sx, int sy, int force)
|
||||
{
|
||||
return d3d8->d3d8_tcache_set(bitmap_id, bitmap_type, u_ratio, v_ratio, fail_on_full, sx, sy, force);
|
||||
}
|
||||
|
||||
void gr_d3d8e_dump_frame()
|
||||
{
|
||||
d3d8->d3d8_dump_frame();
|
||||
}
|
||||
|
||||
void gr_d3d8e_flip()
|
||||
{
|
||||
d3d8->gr_d3d8_flip();
|
||||
}
|
||||
|
||||
void gr_d3d8e_flip_cleanup()
|
||||
{
|
||||
d3d8->gr_d3d8_flip_cleanup();
|
||||
}
|
||||
|
||||
void gr_d3d8e_flip_window(uint _hdc, int x, int y, int w, int h)
|
||||
{
|
||||
d3d8->gr_d3d8_flip_window(_hdc, x, y, w, h);
|
||||
}
|
||||
|
||||
void gr_d3d8e_fade_out(int instantaneous)
|
||||
{
|
||||
d3d8->gr_d3d8_fade_out(instantaneous);
|
||||
}
|
||||
|
||||
void gr_d3d8e_fade_in(int instantaneous)
|
||||
{
|
||||
d3d8->gr_d3d8_fade_in(instantaneous);
|
||||
}
|
||||
|
||||
int gr_d3d8e_save_screen()
|
||||
{
|
||||
return d3d8->gr_d3d8_save_screen();
|
||||
}
|
||||
|
||||
void gr_d3d8e_restore_screen(int id)
|
||||
{
|
||||
d3d8->gr_d3d8_restore_screen(id);
|
||||
}
|
||||
|
||||
void gr_d3d8e_free_screen(int id)
|
||||
{
|
||||
d3d8->gr_d3d8_free_screen(id);
|
||||
}
|
||||
|
||||
void gr_d3d8e_dump_frame_start(int first_frame, int frames_between_dumps)
|
||||
{
|
||||
d3d8->gr_d3d8_dump_frame_start(first_frame, frames_between_dumps);
|
||||
}
|
||||
|
||||
void gr_d3d8e_dump_frame_stop()
|
||||
{
|
||||
d3d8->gr_d3d8_dump_frame_stop();
|
||||
}
|
||||
|
||||
void gr_d3d8e_set_gamma(float gamma)
|
||||
{
|
||||
d3d8->gr_d3d8_set_gamma(gamma);
|
||||
}
|
||||
|
||||
uint gr_d3d8e_lock()
|
||||
{
|
||||
return d3d8->gr_d3d8_lock();
|
||||
}
|
||||
|
||||
void gr_d3d8e_unlock()
|
||||
{
|
||||
d3d8->gr_d3d8_unlock();
|
||||
}
|
||||
|
||||
void gr_d3d8e_get_region(int front, int w, int h, ubyte *data)
|
||||
{
|
||||
d3d8->gr_d3d8_get_region(front, w, h, data);
|
||||
}
|
||||
|
||||
void gr_d3d8e_fog_set(int fog_mode, int r, int g, int b, float fog_near, float fog_far)
|
||||
{
|
||||
d3d8->gr_d3d8_fog_set(fog_mode, r, g, b, fog_near, fog_far);
|
||||
}
|
||||
|
||||
void gr_d3d8e_get_pixel(int x, int y, int *r, int *g, int *b)
|
||||
{
|
||||
d3d8->gr_d3d8_get_pixel(x, y, r, g, b);
|
||||
}
|
||||
|
||||
void gr_d3d8e_set_cull(int cull)
|
||||
{
|
||||
d3d8->gr_d3d8_set_cull(cull);
|
||||
}
|
||||
|
||||
void gr_d3d8e_cross_fade(int bmap1, int bmap2, int x1, int y1, int x2, int y2, float pct)
|
||||
{
|
||||
d3d8->gr_d3d8_cross_fade(bmap1, bmap2, x1, y1, x2, y2, pct);
|
||||
}
|
||||
|
||||
void gr_d3d8e_filter_set(int filter)
|
||||
{
|
||||
d3d8->gr_d3d8_filter_set(filter);
|
||||
}
|
||||
|
||||
void gr_d3d8e_set_clear_color(int r, int g, int b)
|
||||
{
|
||||
d3d8->gr_d3d8_set_clear_color(r, g, b);
|
||||
}
|
||||
|
||||
#undef d3d
|
||||
@@ -10,8 +10,8 @@
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
|
||||
#include <d3d8.h>
|
||||
#include <d3dx8.h> // This is the Dx8.1 utility library. Automates some functions and
|
||||
#include "d3d8.h"
|
||||
#include "d3dx8.h" // This is the Dx8.1 utility library. Automates some functions and
|
||||
// provides the D3D_OVERLOADS functionality
|
||||
#include "graphics/2d.h"
|
||||
#include "graphics/grinternal.h"
|
||||
@@ -38,9 +38,11 @@ extern LPD3DDEVICEDESC lpDevDesc;
|
||||
extern DDCAPS DD_driver_caps;
|
||||
extern DDCAPS DD_hel_caps;
|
||||
*/
|
||||
extern int D3D8_texture_divider;
|
||||
|
||||
extern int D3D8_32bit;
|
||||
extern LPDIRECT3D8 lpd3d;
|
||||
extern LPDIRECT3DDEVICE8 lpd3ddevice;
|
||||
|
||||
extern int D3D_32bit;
|
||||
|
||||
extern char* d3d8_error_string(HRESULT error);
|
||||
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/Font.cpp $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Revision: 2.4 $
|
||||
* $Date: 2003-03-02 05:41:52 $
|
||||
* $Author: penguin $
|
||||
*
|
||||
* source file for font stuff
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.3 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.2 2002/07/29 20:12:31 penguin
|
||||
* added #ifdef _WIN32 around windows-specific system headers
|
||||
*
|
||||
@@ -644,6 +647,7 @@ void gr8_string(int sx, int sy, char *s )
|
||||
gr_unlock();
|
||||
}
|
||||
|
||||
#ifndef NO_SOFTWARE_RENDERING
|
||||
#ifdef _WIN32
|
||||
HFONT MyhFont = NULL;
|
||||
extern HDC hDibDC;
|
||||
@@ -733,7 +737,8 @@ void gr_get_string_size_win(int *w, int *h, char *text)
|
||||
if (h)
|
||||
*h += size.cy;
|
||||
}
|
||||
#endif
|
||||
#endif // ifdef _WIN32
|
||||
#endif // ifndef NO_SOFTWARE_RENDERING
|
||||
|
||||
char grx_printf_text[2048];
|
||||
|
||||
|
||||
+1498
-1712
File diff suppressed because it is too large.
Load diff
@@ -9,13 +9,46 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/GrD3D.h $
|
||||
* $Revision: 2.0 $
|
||||
* $Date: 2002-06-03 04:02:22 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2003-03-18 10:07:02 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Include file for our Direct3D renderer
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.0.2.5 2002/11/09 19:28:15 randomtiger
|
||||
*
|
||||
* Fixed small gfx initialisation bug that wasnt actually causing any problems.
|
||||
* Tided DX code, shifted stuff around, removed some stuff and documented some stuff.
|
||||
*
|
||||
* Revision 2.0.2.4 2002/10/16 00:41:38 randomtiger
|
||||
* Fixed small bug that was stopping unactive text from displaying greyed out
|
||||
* Also added ability to run FS2 DX8 in 640x480, however I needed to make a small change to 2d.cpp
|
||||
* which invloved calling the resolution processing code after initialising the device for D3D only.
|
||||
* This is because D3D8 for the moment has its own internal launcher.
|
||||
* Also I added a fair bit of documentation and tidied some stuff up. - RT
|
||||
*
|
||||
* Revision 2.0.2.3 2002/10/11 18:50:54 randomtiger
|
||||
* Checked in fix for 16 bit problem, thanks to Righteous1
|
||||
* Removed a fair bit of code that was used by the 16 bit code path which no longer exists.
|
||||
* 32 bit and 16 bit should now work in exactly the same way. - RT
|
||||
*
|
||||
* Revision 2.0.2.2 2002/10/02 11:40:19 randomtiger
|
||||
* Bmpmap has been reverted to an old non d3d8 version.
|
||||
* All d3d8 code is now in the proper place.
|
||||
* PCX code is now working to an extent. Problems with alpha though.
|
||||
* Ani's work slowly with alpha problems.
|
||||
* Also I have done a bit of tidying - RT
|
||||
*
|
||||
* Revision 2.0.2.1 2002/09/24 18:56:42 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:22 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
* Revision 1.1 2002/05/02 18:03:07 mharris
|
||||
* Initial checkin - converted filenames and includes to lower case
|
||||
*
|
||||
@@ -48,18 +81,11 @@
|
||||
#ifndef _GRD3D_H
|
||||
#define _GRD3D_H
|
||||
|
||||
void gr_d3d_init();
|
||||
bool gr_d3d_init();
|
||||
void gr_d3d_cleanup();
|
||||
|
||||
// call this to safely fill in the texture shift and scale values for the specified texture type (Gr_t_*)
|
||||
void gr_d3d_get_tex_format(int alpha);
|
||||
|
||||
// bitmap functions
|
||||
void gr_d3d_bitmap(int x, int y);
|
||||
void gr_d3d_bitmap_ex(int x, int y, int w, int h, int sx, int sy);
|
||||
|
||||
// create all rendering objects (surfaces, d3d device, viewport, etc)
|
||||
int gr_d3d_create_rendering_objects(int clear);
|
||||
void gr_d3d_release_rendering_objects();
|
||||
|
||||
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,152 @@
|
||||
/*
|
||||
* Copyright (C) Volition, Inc. 1999. All rights reserved.
|
||||
*
|
||||
* All source code herein is the property of Volition, Inc. You may not sell
|
||||
* or otherwise commercially exploit the source or things you created based on the
|
||||
* source.
|
||||
*
|
||||
*/
|
||||
|
||||
#ifndef _GRD3DBMPMAN_H
|
||||
#define _GRD3DBMPMAN_H
|
||||
|
||||
#ifndef NDEBUG
|
||||
#define BMPMAN_NDEBUG
|
||||
#endif
|
||||
|
||||
#define MAX_BITMAPS 3500 // How many bitmaps the game can handle
|
||||
|
||||
int bm_d3d_get_next_handle();
|
||||
|
||||
// 16 bit pixel formats
|
||||
extern int Bm_pixel_format;
|
||||
|
||||
#define BYTES_PER_PIXEL(x) ((x+7)/8)
|
||||
|
||||
void bm_d3d_init();
|
||||
|
||||
int bm_d3d_get_cache_slot( int bitmap_id, int separate_ani_frames );
|
||||
|
||||
// how many bytes of textures are used.
|
||||
extern int bm_d3d_texture_ram;
|
||||
|
||||
// This loads a bitmap so we can draw with it later.
|
||||
// It returns a negative number if it couldn't load
|
||||
// the bitmap. On success, it returns the bitmap
|
||||
// number.
|
||||
int bm_d3d_load(char * filename);
|
||||
|
||||
// special load function. basically allows you to load a bitmap which already exists (by filename).
|
||||
// this is useful because in some cases we need to have a bitmap which is locked in screen format
|
||||
// _and_ texture format, such as pilot pics and squad logos
|
||||
int bm_d3d_load_duplicate(char *filename);
|
||||
|
||||
// Creates a bitmap that exists in RAM somewhere, instead
|
||||
// of coming from a disk file. You pass in a pointer to a
|
||||
// block of data. The data can be in the following formats:
|
||||
// 8 bpp (mapped into game palette)
|
||||
// 32 bpp
|
||||
// On success, it returns the bitmap number. You cannot
|
||||
// free that RAM until bm_d3d_release is called on that bitmap.
|
||||
// See example at bottom of this file
|
||||
int bm_d3d_create( int bpp, int w, int h, void * data, int flags = 0);
|
||||
|
||||
void bm_d3d_close();
|
||||
|
||||
// Frees up a bitmap's data, but bitmap number 'n' can
|
||||
// still be used, it will just have to be paged in next
|
||||
// time it is locked.
|
||||
int bm_d3d_unload( int n );
|
||||
|
||||
// Frees up a bitmap's data, and it's slot, so bitmap
|
||||
// number 'n' cannot be used anymore, and bm_d3d_load or
|
||||
// bm_d3d_create might reuse the slot.
|
||||
void bm_d3d_release(int n);
|
||||
|
||||
// This loads a bitmap sequence so we can draw with it later.
|
||||
// It returns a negative number if it couldn't load
|
||||
// the bitmap. On success, it returns the bitmap
|
||||
// number of the first frame and nframes is set.
|
||||
extern int bm_d3d_load_animation( char * filename, int * nframes, int *fps = NULL, int can_drop_frames = 0 );
|
||||
|
||||
// This locks down a bitmap and returns a pointer to a bitmap
|
||||
// that can be accessed until you call bm_d3d_unlock. Only lock
|
||||
// a bitmap when you need it! This will convert it into the
|
||||
// appropriate format also.
|
||||
extern bitmap * bm_d3d_lock( int bitmapnum, ubyte bpp, ubyte flags );
|
||||
|
||||
// The signature is a field that gets filled in with
|
||||
// a unique signature for each bitmap. The signature for each bitmap
|
||||
// will also change when the bitmap's data changes.
|
||||
extern uint bm_d3d_get_signature( int bitmapnum);
|
||||
|
||||
// Unlocks a bitmap
|
||||
extern void bm_d3d_unlock( int bitmapnum );
|
||||
|
||||
// Gets info. w,h,or flags,nframes or fps can be NULL if you don't care.
|
||||
extern void bm_d3d_get_info( int bitmapnum, int *w=NULL, int * h=NULL, ubyte * flags=NULL, int *nframes=NULL, int *fps=NULL, bitmap_section_info **sections = NULL );
|
||||
|
||||
// call to load all data for all bitmaps that have been requested to be loaded
|
||||
extern void bm_d3d_load_all();
|
||||
extern void bm_d3d_unload_all();
|
||||
|
||||
// call to get the palette for a bitmap
|
||||
extern void bm_d3d_get_palette(int n, ubyte *pal, char *name);
|
||||
|
||||
// Hacked function to get a pixel from a bitmap.
|
||||
// Only works good in 8bpp mode.
|
||||
void bm_d3d_get_pixel( int bitmap, float u, float v, ubyte *r, ubyte *g, ubyte *b );
|
||||
|
||||
// Returns number of bytes of bitmaps locked this frame
|
||||
// ntotal = number of bytes of bitmaps locked this frame
|
||||
// nnew = number of bytes of bitmaps locked this frame that weren't locked last frame
|
||||
void bm_d3d_get_frame_usage(int *ntotal, int *nnew);
|
||||
|
||||
//============================================================================
|
||||
// Paging stuff
|
||||
//============================================================================
|
||||
|
||||
void bm_d3d_page_in_start();
|
||||
void bm_d3d_page_in_stop();
|
||||
|
||||
// Paging code in a library should call these functions
|
||||
// in its page in function.
|
||||
|
||||
// Marks a texture as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_d3d_page_in_texture( int bitmapnum, int num_frames=1 );
|
||||
|
||||
// Marks a texture as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_d3d_page_in_nondarkening_texture( int bitmap, int num_frames=1 );
|
||||
|
||||
// marks a texture as being a transparent textyre used for this level
|
||||
// Marks a texture as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_d3d_page_in_xparent_texture( int bitmapnum, int num_frames=1 );
|
||||
|
||||
// Marks an aabitmap as being used for this level
|
||||
// If num_frames is passed, assume this is an animation
|
||||
void bm_d3d_page_in_aabitmap( int bitmapnum, int num_frames=1 );
|
||||
|
||||
//
|
||||
// Mode: 0 = High memory
|
||||
// 1 = Low memory ( every other frame of ani's)
|
||||
// 2 = Debug low memory ( only use first frame of each ani )
|
||||
void bm_d3d_set_low_mem( int mode );
|
||||
|
||||
// convert a 24 bit value to a 16 bit value
|
||||
void bm_d3d_24_to_16(int bit_24, ushort *bit_16);
|
||||
|
||||
// get the rgba components of a pixel, any of the parameters can be NULL
|
||||
void bm_d3d_get_components(ubyte *pixel, ubyte *r, ubyte *g, ubyte *b, ubyte *a);
|
||||
|
||||
//============================================================================
|
||||
// section info stuff
|
||||
//============================================================================
|
||||
|
||||
// given a bitmap and a section, return the size (w, h)
|
||||
void bm_d3d_get_section_size(int bitmapnum, int sx, int sy, int *w, int *h);
|
||||
void bm_d3d_set_max_bitmap_size(int size);
|
||||
|
||||
#endif
|
||||
@@ -0,0 +1,378 @@
|
||||
/*
|
||||
* Copyright (C) Volition, Inc. 1999. All rights reserved.
|
||||
*
|
||||
* All source code herein is the property of Volition, Inc. You may not sell
|
||||
* or otherwise commercially exploit the source or things you created based on the
|
||||
* source.
|
||||
*
|
||||
*/
|
||||
|
||||
#include <d3d8.h>
|
||||
#include "graphics/grd3dinternal.h"
|
||||
|
||||
// Uncomment this to disable checking if states are already set, slower but useful for searching for bugs
|
||||
#define D3D_CALLS_CHECK 1
|
||||
|
||||
// Heres the internal vertex information that DX need to know to render them
|
||||
VertexTypeInfo vertex_types[D3DVT_MAX] =
|
||||
{
|
||||
(D3DFVF_XYZRHW | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX2), sizeof(D3DTLVERTEX),
|
||||
(D3DFVF_XYZ | D3DFVF_DIFFUSE | D3DFVF_SPECULAR | D3DFVF_TEX1), sizeof(D3DLVERTEX),
|
||||
(D3DFVF_XYZ | D3DFVF_NORMAL | D3DFVF_TEX1), sizeof(D3DVERTEX),
|
||||
};
|
||||
|
||||
// This is all stuff needed for set render state calls
|
||||
const float fone = 1.0f;
|
||||
const float fzero = 0.0f;
|
||||
const float fsixtyfour = 64.0f;
|
||||
|
||||
|
||||
DWORD *pfone = (DWORD *) &fone;
|
||||
DWORD *pfzero = (DWORD *) &fzero;
|
||||
DWORD *pfsixtyfour = (DWORD *) &fsixtyfour;
|
||||
|
||||
const int NUM_STATES = 174;
|
||||
unsigned long current_render_states[NUM_STATES];
|
||||
|
||||
// These are the default states that D3D8 starts with an returns to on a reset
|
||||
const unsigned long default_render_states[NUM_STATES] =
|
||||
{
|
||||
0,0,0,0,0,0,0, // not used
|
||||
D3DZB_TRUE, // D3DRS_ZENABLE = 7,
|
||||
D3DFILL_SOLID, // D3DRS_FILLMODE = 8,
|
||||
D3DSHADE_GOURAUD, // D3DRS_SHADEMODE = 9,
|
||||
0, // D3DRS_LINEPATTERN = 10,
|
||||
0,0,0,
|
||||
TRUE, // D3DRS_ZWRITEENABLE = 14,
|
||||
FALSE, // D3DRS_ALPHATESTENABLE = 15,
|
||||
TRUE, // D3DRS_LASTPIXEL = 16,
|
||||
0,0,
|
||||
D3DBLEND_ONE, // D3DRS_SRCBLEND = 19,
|
||||
D3DBLEND_ZERO, // D3DRS_DESTBLEND = 20,
|
||||
0,
|
||||
D3DCULL_CCW, // D3DRS_CULLMODE = 22,
|
||||
D3DCMP_LESSEQUAL, // D3DRS_ZFUNC = 23,
|
||||
0x00000000, // D3DRS_ALPHAREF = 24, ?????????????????????
|
||||
D3DCMP_ALWAYS, // D3DRS_ALPHAFUNC = 25,
|
||||
FALSE, // D3DRS_DITHERENABLE = 26,
|
||||
FALSE, // D3DRS_ALPHABLENDENABLE = 27,
|
||||
FALSE, // D3DRS_FOGENABLE = 28,
|
||||
FALSE, // D3DRS_SPECULARENABLE = 29,
|
||||
0, // D3DRS_ZVISIBLE (not supported) = 30,
|
||||
0,0,0,
|
||||
0, // D3DRS_FOGCOLOR = 34,
|
||||
D3DFOG_NONE, // D3DRS_FOGTABLEMODE = 35,
|
||||
*pfzero, // D3DRS_FOGSTART = 36,
|
||||
*pfone, // D3DRS_FOGEND = 37,
|
||||
*pfone, // D3DRS_FOGDENSITY = 38,
|
||||
0,
|
||||
FALSE, // D3DRS_EDGEANTIALIAS = 40,
|
||||
0,0,0,0,0,0,
|
||||
0, // D3DRS_ZBIAS = 47,
|
||||
FALSE, // D3DRS_RANGEFOGENABLE = 48,
|
||||
0,0,0,
|
||||
FALSE, // D3DRS_STENCILENABLE = 52,
|
||||
D3DSTENCILOP_KEEP, // D3DRS_STENCILFAIL = 53,
|
||||
D3DSTENCILOP_KEEP, // D3DRS_STENCILZFAIL = 54,
|
||||
D3DSTENCILOP_KEEP, // D3DRS_STENCILPASS = 55,
|
||||
D3DCMP_ALWAYS, // D3DRS_STENCILFUNC = 56,
|
||||
0, // D3DRS_STENCILREF = 57,
|
||||
0xFFFFFFFF, // D3DRS_STENCILMASK = 58,
|
||||
0xFFFFFFFF, // D3DRS_STENCILWRITEMASK = 59,
|
||||
0xFFFFFFFF, // D3DRS_TEXTUREFACTOR = 60,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,0,0,0,
|
||||
0,0,0,0,0,0,0,
|
||||
0, // D3DRS_WRAP0 = 128,
|
||||
0, // D3DRS_WRAP1 = 129,
|
||||
0, // D3DRS_WRAP2 = 130,
|
||||
0, // D3DRS_WRAP3 = 131,
|
||||
0, // D3DRS_WRAP4 = 132,
|
||||
0, // D3DRS_WRAP5 = 133,
|
||||
0, // D3DRS_WRAP6 = 134,
|
||||
0, // D3DRS_WRAP7 = 135,
|
||||
TRUE, // D3DRS_CLIPPING = 136,
|
||||
TRUE, // D3DRS_LIGHTING = 137,
|
||||
0,
|
||||
0, // D3DRS_AMBIENT = 139,
|
||||
0,
|
||||
D3DFOG_NONE, // D3DRS_FOGVERTEXMODE = 140,
|
||||
TRUE, // D3DRS_COLORVERTEX = 141,
|
||||
TRUE, // D3DRS_LOCALVIEWER = 142,
|
||||
FALSE, // D3DRS_NORMALIZENORMALS = 143,
|
||||
0,
|
||||
D3DMCS_COLOR1, // D3DRS_DIFFUSEMATERIALSOURCE = 145,
|
||||
D3DMCS_COLOR2, // D3DRS_SPECULARMATERIALSOURCE = 146,
|
||||
D3DMCS_COLOR2, // D3DRS_AMBIENTMATERIALSOURCE = 147,
|
||||
D3DMCS_MATERIAL, // D3DRS_EMISSIVEMATERIALSOURCE = 148,
|
||||
0,0,
|
||||
D3DVBF_DISABLE, // D3DRS_VERTEXBLEND = 151,
|
||||
0, // D3DRS_CLIPPLANEENABLE = 152,
|
||||
TRUE, // D3DRS_SOFTWAREVERTEXPROCESSING = 153, RT, never us this!
|
||||
*pfone, // D3DRS_POINTSIZE = 154,
|
||||
*pfzero, // D3DRS_POINTSIZE_MIN = 155,
|
||||
FALSE, // D3DRS_POINTSPRITEENABLE = 156,
|
||||
FALSE, // D3DRS_POINTSCALEENABLE = 157,
|
||||
*pfone, // D3DRS_POINTSCALE_A = 158,
|
||||
*pfzero, // D3DRS_POINTSCALE_B = 159,
|
||||
*pfzero, // D3DRS_POINTSCALE_C = 160,
|
||||
TRUE, // D3DRS_MULTISAMPLEANTIALIAS = 161,
|
||||
0xFFFFFFFF, // D3DRS_MULTISAMPLEMASK = 162,
|
||||
D3DPATCHEDGE_DISCRETE, // D3DRS_PATCHEDGESTYLE = 163,
|
||||
*pfone, // D3DRS_PATCHSEGMENTS = 164,
|
||||
D3DDMT_ENABLE, // D3DRS_DEBUGMONITORTOKEN = 165,
|
||||
*pfsixtyfour, // D3DRS_POINTSIZE_MAX = 166,
|
||||
FALSE, // D3DRS_INDEXEDVERTEXBLENDENABLE = 167,
|
||||
0x0000000F, // D3DRS_COLORWRITEENABLE = 168,
|
||||
*pfzero, // D3DRS_TWEENFACTOR = 170,
|
||||
D3DBLENDOP_ADD, // D3DRS_BLENDOP = 171,
|
||||
D3DORDER_CUBIC, // D3DRS_POSITIONORDER = 172,
|
||||
D3DORDER_LINEAR // D3DRS_NORMALORDER = 173,
|
||||
};
|
||||
|
||||
/**
|
||||
* Resets all render states to defaults,
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
void d3d_reset_render_states()
|
||||
{
|
||||
memcpy(current_render_states, default_render_states, sizeof(unsigned long) * NUM_STATES);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a wrapper function for the D3D8.1 call SetRenderState,
|
||||
*
|
||||
* @param D3DRENDERSTATETYPE render_state_type - Check DX docs
|
||||
* @param DWORD render_state - Check DX docs
|
||||
*
|
||||
* @return HRESULT - directx error code
|
||||
*/
|
||||
HRESULT d3d_SetRenderState( D3DRENDERSTATETYPE render_state_type, DWORD render_state )
|
||||
{
|
||||
Assert(render_state_type < NUM_STATES);
|
||||
|
||||
#ifdef D3D_CALLS_CHECK
|
||||
// If the state is already set to that parameter
|
||||
if(current_render_states[render_state_type] == render_state) {
|
||||
// Leave without setting
|
||||
return S_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
HRESULT hr = lpD3DDevice->SetRenderState(render_state_type, render_state );
|
||||
|
||||
// A set render state should never fail because we should always know the caps.
|
||||
if(FAILED(hr)) {
|
||||
mprintf(("Failed set render state %d!", render_state_type));
|
||||
} else {
|
||||
current_render_states[render_state_type] = render_state;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
|
||||
// This is all stuff needed for draw primitive call
|
||||
int D3D_vertex_type = -1;
|
||||
|
||||
/**
|
||||
* This is a wrapper function for the D3D8.1 call DrawPrimitveUP, it also handles the vertex shader
|
||||
*
|
||||
* @param int vertex_type - This should be one of D3DVT_TLVERTEX, D3DVT_LVERTEX or D3DVT_VERTEX,
|
||||
* @param D3DPRIMITIVETYPE prim_type - Look at DX docs
|
||||
* @param LPVOID pvertices - Pointer to the vertex data, must match the vertex_type chosen
|
||||
* @param DWORD vertex_count - Number of vertices in the array to render
|
||||
*
|
||||
* @return HRESULT - directx error code
|
||||
*/
|
||||
HRESULT d3d_DrawPrimitive(int vertex_type, D3DPRIMITIVETYPE prim_type, LPVOID pvertices, DWORD vertex_count)
|
||||
{
|
||||
HRESULT hr;
|
||||
Assert( vertex_type < D3DVT_MAX);
|
||||
int prim_count = 0;
|
||||
|
||||
switch( prim_type)
|
||||
{
|
||||
case D3DPT_POINTLIST:
|
||||
prim_count = vertex_count;
|
||||
break;
|
||||
case D3DPT_LINELIST:
|
||||
prim_count = vertex_count / 2;
|
||||
break;
|
||||
case D3DPT_LINESTRIP:
|
||||
prim_count = vertex_count - 1;
|
||||
break;
|
||||
case D3DPT_TRIANGLELIST:
|
||||
prim_count = vertex_count / 3;
|
||||
break;
|
||||
case D3DPT_TRIANGLESTRIP:
|
||||
case D3DPT_TRIANGLEFAN:
|
||||
prim_count = vertex_count - 2;
|
||||
break;
|
||||
default:
|
||||
mprintf(("Prim type not known, primitive will not be drawn"));
|
||||
return !S_OK;
|
||||
}
|
||||
|
||||
#ifdef D3D_CALLS_CHECK
|
||||
if(D3D_vertex_type != vertex_type)
|
||||
#endif
|
||||
{
|
||||
hr = lpD3DDevice->SetVertexShader( vertex_types[vertex_type].fvf );
|
||||
|
||||
if(FAILED(hr)) {
|
||||
mprintf(("Failed to set vertex shader"));
|
||||
return hr;
|
||||
}
|
||||
|
||||
D3D_vertex_type = vertex_type;
|
||||
}
|
||||
|
||||
hr = lpD3DDevice->DrawPrimitiveUP(prim_type, prim_count, pvertices, vertex_types[vertex_type].size);
|
||||
|
||||
if(FAILED(hr)) {
|
||||
mprintf(("Failed to draw primitive"));
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
// This is all stuff needed for set texture stage state
|
||||
const int NUM_STAGE_TYPES = 29;
|
||||
unsigned long current_stages_zero[NUM_STAGE_TYPES];
|
||||
const unsigned long default_stages_zero[NUM_STAGE_TYPES] =
|
||||
{
|
||||
0,
|
||||
D3DTOP_MODULATE, // D3DTSS_COLOROP = 1,
|
||||
D3DTA_TEXTURE, // D3DTSS_COLORARG1 = 2,
|
||||
D3DTA_CURRENT, // D3DTSS_COLORARG2 = 3,
|
||||
D3DTOP_SELECTARG1, // D3DTSS_ALPHAOP = 4,
|
||||
D3DTA_DIFFUSE, // D3DTSS_ALPHAARG1 = 5,
|
||||
D3DTA_CURRENT, // D3DTSS_ALPHAARG2 = 6,
|
||||
*pfzero, // D3DTSS_BUMPENVMAT00 = 7,
|
||||
*pfzero, // D3DTSS_BUMPENVMAT01 = 8,
|
||||
*pfzero, // D3DTSS_BUMPENVMAT10 = 9,
|
||||
*pfzero, // D3DTSS_BUMPENVMAT11 = 10,
|
||||
0, // D3DTSS_TEXCOORDINDEX = 11,
|
||||
0,
|
||||
D3DTADDRESS_WRAP, // D3DTSS_ADDRESSU = 13,
|
||||
D3DTADDRESS_WRAP, // D3DTSS_ADDRESSV = 14,
|
||||
0x00000000, // D3DTSS_BORDERCOLOR = 15,
|
||||
D3DTEXF_POINT, // D3DTSS_MAGFILTER = 16,
|
||||
D3DTEXF_POINT, // D3DTSS_MINFILTER = 17,
|
||||
D3DTEXF_NONE, // D3DTSS_MIPFILTER = 18,
|
||||
*pfzero, // D3DTSS_MIPMAPLODBIAS = 19,
|
||||
0, // D3DTSS_MAXMIPLEVEL = 20,
|
||||
1, // D3DTSS_MAXANISOTROPY = 21,
|
||||
*pfzero, // D3DTSS_BUMPENVLSCALE = 22,
|
||||
*pfzero, // D3DTSS_BUMPENVLOFFSET = 23,
|
||||
D3DTTFF_DISABLE, // D3DTSS_TEXTURETRANSFORMFLAGS = 24,
|
||||
D3DTADDRESS_WRAP, // D3DTSS_ADDRESSW = 25,
|
||||
D3DTA_CURRENT, // D3DTSS_COLORARG0 = 26,
|
||||
D3DTA_CURRENT, // D3DTSS_ALPHAARG0 = 27,
|
||||
D3DTA_CURRENT // D3DTSS_RESULTARG = 28,
|
||||
};
|
||||
|
||||
/**
|
||||
* Set current texture states to default, stage 0 only
|
||||
* @return void
|
||||
*/
|
||||
void d3d_reset_texture_stage_states()
|
||||
{
|
||||
memcpy( current_stages_zero, default_stages_zero, sizeof(unsigned long) * NUM_STAGE_TYPES);
|
||||
}
|
||||
|
||||
/**
|
||||
* This is a wrapper function for the D3D8.1 call SetTextureStageState, consult DX documentation
|
||||
* for parameter options
|
||||
*
|
||||
* @param DWORD stage - Texture state, currently only 0 is supported
|
||||
* @param D3DTEXTURESTAGESTATETYPE type - Type to attemp to change
|
||||
* @param DWORD value - New value to attempt to set
|
||||
*
|
||||
* @return HRESULT - DirectX error code
|
||||
*/
|
||||
HRESULT d3d_SetTextureStageState(DWORD stage, D3DTEXTURESTAGESTATETYPE type, DWORD value)
|
||||
{
|
||||
// Only for first stage because it has different default properties to the others but
|
||||
// since they are not even in use, who cares!
|
||||
#ifdef D3D_CALLS_CHECK
|
||||
if(stage == 0 && current_stages_zero[type] == value) {
|
||||
return S_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
HRESULT hr = lpD3DDevice->SetTextureStageState(stage, type, value);
|
||||
|
||||
if(FAILED(hr)) {
|
||||
mprintf(("Failed to set TextureStageState %d for stage %d", type, stage));
|
||||
} else if (stage == 0) {
|
||||
current_stages_zero[type] = value;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
// Texture set call
|
||||
const int MAX_TSTAGES = 8;
|
||||
IDirect3DBaseTexture8 *tinterfaces[MAX_TSTAGES] = {NULL,NULL,NULL,NULL,NULL,NULL,NULL,NULL};
|
||||
|
||||
/**
|
||||
* This should be called if the device is lost, this will ensure all state default are properly reset
|
||||
*
|
||||
* @param int stage - Can only be in range 0 - 7, only 0 is currently supported by vertex coords
|
||||
* @param IDirect3DBaseTexture8* texture_ptr - Pointer to texture to be used
|
||||
* @return HRESULT
|
||||
*
|
||||
*/
|
||||
HRESULT d3d_SetTexture(int stage, IDirect3DBaseTexture8* texture_ptr)
|
||||
{
|
||||
#ifdef D3D_CALLS_CHECK
|
||||
if( texture_ptr == tinterfaces[stage]) {
|
||||
return S_OK;
|
||||
}
|
||||
#endif
|
||||
|
||||
HRESULT hr = lpD3DDevice->SetTexture(stage, texture_ptr);
|
||||
//changed from this -Bobboau
|
||||
// HRESULT hr = lpD3DDevice->SetTexture(0, texture_ptr);
|
||||
|
||||
if(FAILED(hr)) {
|
||||
mprintf(("Failed to set texture"));
|
||||
} else {
|
||||
tinterfaces[stage] = texture_ptr;
|
||||
}
|
||||
|
||||
return hr;
|
||||
}
|
||||
|
||||
/**
|
||||
* This should be called if the device is lost, this will ensure all state default are properly reset
|
||||
*
|
||||
* @return void
|
||||
*
|
||||
*/
|
||||
void d3d_lost_device()
|
||||
{
|
||||
// Set states to what they will be after reset
|
||||
gr_d3d_set_state(TEXTURE_SOURCE_NONE, ALPHA_BLEND_NONE, ZBUFFER_TYPE_DEFAULT);
|
||||
|
||||
// Calling Reset causes all texture memory surfaces to be lost, managed textures to be flushed
|
||||
// from video memory, and all state information to be lost. Before calling the Reset method for a
|
||||
// device, an application should release any explicit render targets, depth stencil surfaces,
|
||||
// additional swap chains and D3DPOOL_DEFAULT resources associated with the device.
|
||||
lpD3DDevice->Reset(&d3dpp);
|
||||
|
||||
d3d_reset_render_states();
|
||||
d3d_reset_texture_stage_states();
|
||||
|
||||
memset(tinterfaces, 0, sizeof(IDirect3DBaseTexture8 *) * MAX_TSTAGES);
|
||||
d3d_set_initial_render_state();
|
||||
|
||||
D3D_vertex_type = -1;
|
||||
}
|
||||
@@ -9,13 +9,82 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/GrD3DInternal.h $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2002-10-05 16:46:09 $
|
||||
* $Author: randomtiger $
|
||||
* $Revision: 2.6 $
|
||||
* $Date: 2003-08-22 07:35:08 $
|
||||
* $Author: bobboau $
|
||||
*
|
||||
* Prototypes for the variables used internally by the Direct3D renderer
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.5 2003/08/16 03:52:23 bobboau
|
||||
* update for the specmapping code includeing
|
||||
* suport for seperate specular levels on lights and
|
||||
* optional strings for the stars table
|
||||
* code has been made more organised,
|
||||
* though there seems to be a bug in the state selecting code
|
||||
* resulting in the HUD being rendered incorectly
|
||||
* and specmapping failing ocasionaly
|
||||
*
|
||||
* Revision 2.4 2003/07/04 02:27:48 phreak
|
||||
* added support for cloaking.
|
||||
* i will need to contact someone who knows d3d to get this to work
|
||||
*
|
||||
* Revision 2.3 2003/03/18 10:07:02 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.2 2002/10/05 16:46:09 randomtiger
|
||||
* Added us fs2_open people to the credits. Worth looking at just for that.
|
||||
* Added timer bar code, by default its not compiled in.
|
||||
* Use TIMEBAR_ACTIVE in project and dependancy code settings to activate.
|
||||
* Added the new timebar files with the new code.
|
||||
*
|
||||
* Revision 2.1.2.9 2002/11/11 21:26:04 randomtiger
|
||||
*
|
||||
* Tided up D3DX8 calls, did some documentation and add new file: grd3dcalls.cpp. - RT
|
||||
*
|
||||
* Revision 2.1.2.8 2002/11/04 21:24:59 randomtiger
|
||||
*
|
||||
* When running in D3D all ani's are memory mapped for speed, this takes up more memory but stops gametime locking of textures which D3D8 hates.
|
||||
* Added new command line tag Cmdline_d3dlowmem for people who dont want to make use of this because they have no memory.
|
||||
* Cleaned up some more texture stuff enabled console debug for D3D.
|
||||
*
|
||||
* Revision 2.1.2.7 2002/10/30 22:57:21 randomtiger
|
||||
*
|
||||
* Changed DX8 code to not use set render and texture states if they are already set to that value.
|
||||
* Disabled buffer saving and restoring code when windowed to stop DX8 debug runs from crashing. - RT
|
||||
*
|
||||
* Revision 2.1.2.6 2002/10/21 16:33:41 randomtiger
|
||||
* Added D3D only 32 bit TGA functionality. Will load a texture as big as your graphics card allows. Code not finished yet and will forge the beginnings of the new texture system. - RT
|
||||
*
|
||||
* Revision 2.1.2.5 2002/10/11 18:50:54 randomtiger
|
||||
* Checked in fix for 16 bit problem, thanks to Righteous1
|
||||
* Removed a fair bit of code that was used by the 16 bit code path which no longer exists.
|
||||
* 32 bit and 16 bit should now work in exactly the same way. - RT
|
||||
*
|
||||
* Revision 2.1.2.4 2002/10/04 00:48:42 randomtiger
|
||||
* Fixed video memory leaks
|
||||
* Added code to cope with lost device, not tested
|
||||
* Got rid of some DX5 stuff we definately dont need
|
||||
* Moved some enum's into internal,h because gr_d3d_set_state should be able to be called from any dx file
|
||||
* Cleaned up some stuff - RT
|
||||
*
|
||||
* Revision 2.1.2.3 2002/10/02 11:40:19 randomtiger
|
||||
* Bmpmap has been reverted to an old non d3d8 version.
|
||||
* All d3d8 code is now in the proper place.
|
||||
* PCX code is now working to an extent. Problems with alpha though.
|
||||
* Ani's work slowly with alpha problems.
|
||||
* Also I have done a bit of tidying - RT
|
||||
*
|
||||
* Revision 2.1.2.2 2002/09/28 22:13:43 randomtiger
|
||||
* Sorted out some bits and pieces. The background nebula blends now which is nice. – RT
|
||||
*
|
||||
* Revision 2.1.2.1 2002/09/24 18:56:42 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
>>>>>>> 2.1.2.9
|
||||
* Revision 2.1 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -133,46 +202,37 @@
|
||||
#include <windows.h>
|
||||
#include <windowsx.h>
|
||||
|
||||
#define D3D_OVERLOADS
|
||||
#include "directx/vddraw.h"
|
||||
|
||||
// To remove an otherwise well-lodged compiler error
|
||||
// 4201 nonstandard extension used : nameless struct/union (happens a lot in Windows include headers)
|
||||
#pragma warning(disable: 4201)
|
||||
|
||||
#include "directx/vd3d.h"
|
||||
#include <d3d8.h>
|
||||
#include "graphics/2d.h"
|
||||
#include "graphics/grinternal.h"
|
||||
|
||||
|
||||
extern LPDIRECTDRAW lpDD1;
|
||||
extern LPDIRECTDRAW2 lpDD;
|
||||
extern LPDIRECT3D2 lpD3D;
|
||||
extern LPDIRECT3DDEVICE lpD3DDeviceEB;
|
||||
extern LPDIRECT3DDEVICE2 lpD3DDevice;
|
||||
extern LPDIRECTDRAWSURFACE lpBackBuffer;
|
||||
extern LPDIRECTDRAWSURFACE lpFrontBuffer;
|
||||
extern LPDIRECTDRAWSURFACE lpZBuffer;
|
||||
|
||||
extern LPDIRECT3DVIEWPORT2 lpViewport;
|
||||
extern LPDIRECTDRAWPALETTE lpPalette;
|
||||
|
||||
extern DDPIXELFORMAT AlphaTextureFormat;
|
||||
extern DDPIXELFORMAT NonAlphaTextureFormat;
|
||||
extern DDPIXELFORMAT ScreenFormat;
|
||||
|
||||
extern D3DDEVICEDESC D3DHWDevDesc, D3DHELDevDesc;
|
||||
extern LPD3DDEVICEDESC lpDevDesc;
|
||||
extern DDCAPS DD_driver_caps;
|
||||
extern DDCAPS DD_hel_caps;
|
||||
extern IDirect3D8 *lpD3D;
|
||||
extern IDirect3DDevice8 *lpD3DDevice;
|
||||
extern D3DVIEWPORT8 viewport;
|
||||
extern D3DCAPS8 d3d_caps;
|
||||
extern D3DPRESENT_PARAMETERS d3dpp;
|
||||
|
||||
extern int D3D_texture_divider;
|
||||
|
||||
extern int D3D_32bit;
|
||||
|
||||
extern char* d3d_error_string(HRESULT error);
|
||||
extern const char* d3d_error_string(HRESULT error);
|
||||
|
||||
void d3d_tcache_init(int use_sections);
|
||||
void set_stage_for_defuse();
|
||||
void set_stage_for_glow_mapped_defuse();
|
||||
void set_stage_for_defuse_and_non_mapped_spec();
|
||||
void set_stage_for_glow_mapped_defuse_and_non_mapped_spec();
|
||||
bool set_stage_for_spec_mapped();
|
||||
void set_stage_for_cell_shaded();
|
||||
void set_stage_for_cell_glowmapped_shaded();
|
||||
void set_stage_for_additive_glowmapped();
|
||||
|
||||
void d3d_tcache_init();
|
||||
void d3d_tcache_cleanup();
|
||||
void d3d_tcache_flush();
|
||||
void d3d_tcache_frame();
|
||||
@@ -181,9 +241,9 @@ void d3d_tcache_frame();
|
||||
void d3d_flush();
|
||||
|
||||
int d3d_tcache_set(int bitmap_id, int bitmap_type, float *u_ratio, float *v_ratio, int fail_on_full=0, int sx = -1, int sy = -1, int force = 0);
|
||||
int d3d_tcache_set_internal(int bitmap_id, int bitmap_type, float *u_ratio, float *v_ratio, int fail_on_full=0, int sx = -1, int sy = -1, int force = 0, int stage = 0);
|
||||
|
||||
// Functions in GrD3DRender.cpp stuffed into gr_screen structure
|
||||
|
||||
void gr_d3d_flash(int r, int g, int b);
|
||||
void gr_d3d_zbuffer_clear(int mode);
|
||||
int gr_d3d_zbuffer_get();
|
||||
@@ -201,7 +261,6 @@ void gr_d3d_set_color( int r, int g, int b );
|
||||
void gr_d3d_get_color( int * r, int * g, int * b );
|
||||
void gr_d3d_set_color_fast(color *dst);
|
||||
void gr_d3d_set_bitmap( int bitmap_num, int alphablend_mode, int bitblt_mode, float alpha, int sx=-1, int sy=-1 );
|
||||
void gr_d3d_bitmap_ex(int x,int y,int w,int h,int sx,int sy);
|
||||
void gr_d3d_bitmap(int x, int y);
|
||||
void gr_d3d_aabitmap_ex(int x,int y,int w,int h,int sx,int sy);
|
||||
void gr_d3d_aabitmap(int x, int y);
|
||||
@@ -219,11 +278,111 @@ void gr_d3d_gradient(int x1,int y1,int x2,int y2);
|
||||
void gr_d3d_set_palette(ubyte *new_palette, int restrict_alphacolor);
|
||||
void gr_d3d_diamond(int x, int y, int width, int height);
|
||||
void gr_d3d_print_screen(char *filename);
|
||||
void gr_d3d_push_texture_matrix(int unit);
|
||||
void gr_d3d_pop_texture_matrix(int unit);
|
||||
void gr_d3d_translate_texture_matrix(int unit, vector *shift);
|
||||
|
||||
void d3d_render_timer_bar(int colour, float x, float y, float w, float h);
|
||||
|
||||
// Functions used to render. Calls either DrawPrim or Execute buffer code
|
||||
HRESULT d3d_SetRenderState( D3DRENDERSTATETYPE dwRenderStateType, DWORD dwRenderState );
|
||||
HRESULT d3d_DrawPrimitive( D3DPRIMITIVETYPE dptPrimitiveType, D3DVERTEXTYPE dvtVertexType, LPVOID lpvVertices, DWORD dwVertexCount, DWORD dwFlags );
|
||||
enum
|
||||
{
|
||||
D3DVT_TLVERTEX,
|
||||
D3DVT_LVERTEX,
|
||||
D3DVT_VERTEX,
|
||||
D3DVT_MAX
|
||||
};
|
||||
|
||||
// This vertex type tells D3D that it has already been transformed an lit
|
||||
// D3D will simply display the polygon with no extra processing
|
||||
typedef struct {
|
||||
float sx, sy, sz;
|
||||
float rhw;
|
||||
|
||||
DWORD color;
|
||||
DWORD specular;
|
||||
float tu, tv;
|
||||
float env_u, env_v;
|
||||
|
||||
} D3DTLVERTEX;
|
||||
|
||||
// This vertex type should be used for vertices that have already been lit
|
||||
// make sure lighting is set to off while these polygons are rendered
|
||||
typedef struct {
|
||||
float sx, sy, sz;
|
||||
|
||||
DWORD color;
|
||||
DWORD specular;
|
||||
float tu, tv;
|
||||
|
||||
} D3DLVERTEX;
|
||||
|
||||
// Renders a normal polygon that is to be transformed and lit by D3D
|
||||
typedef struct {
|
||||
float sx, sy, sz;
|
||||
float nx, ny, nz;
|
||||
|
||||
float tu, tv;
|
||||
|
||||
} D3DVERTEX;
|
||||
|
||||
typedef struct {
|
||||
int fvf;
|
||||
int size;
|
||||
|
||||
} VertexTypeInfo;
|
||||
|
||||
typedef float D3DVALUE;
|
||||
|
||||
// 32 bit formats, only for use in a 32 bit mode.
|
||||
extern D3DFORMAT default_32_non_alpha_tformat;
|
||||
extern D3DFORMAT default_32_alpha_tformat;
|
||||
|
||||
// 16 bit formats for pcx media
|
||||
extern D3DFORMAT default_non_alpha_tformat;
|
||||
extern D3DFORMAT default_alpha_tformat;
|
||||
|
||||
extern DDPIXELFORMAT AlphaTextureFormat;
|
||||
extern DDPIXELFORMAT NonAlphaTextureFormat;
|
||||
|
||||
typedef enum gr_texture_source {
|
||||
TEXTURE_SOURCE_NONE,
|
||||
TEXTURE_SOURCE_DECAL,
|
||||
TEXTURE_SOURCE_NO_FILTERING,
|
||||
} gr_texture_source;
|
||||
|
||||
typedef enum gr_alpha_blend {
|
||||
ALPHA_BLEND_NONE, // 1*SrcPixel + 0*DestPixel
|
||||
ALPHA_BLEND_ALPHA_ADDITIVE, // Alpha*SrcPixel + 1*DestPixel
|
||||
ALPHA_BLEND_ALPHA_BLEND_ALPHA, // Alpha*SrcPixel + (1-Alpha)*DestPixel
|
||||
ALPHA_BLEND_ALPHA_BLEND_SRC_COLOR, // Alpha*SrcPixel + (1-SrcPixel)*DestPixel
|
||||
} gr_alpha_blend;
|
||||
|
||||
typedef enum gr_zbuffer_type {
|
||||
ZBUFFER_TYPE_NONE,
|
||||
ZBUFFER_TYPE_READ,
|
||||
ZBUFFER_TYPE_WRITE,
|
||||
ZBUFFER_TYPE_FULL,
|
||||
ZBUFFER_TYPE_DEFAULT,
|
||||
} gr_zbuffer_type;
|
||||
|
||||
// INTERNAL D3D Functions
|
||||
|
||||
// GrD3D functions
|
||||
void d3d_set_initial_render_state();
|
||||
int d3d_get_mode_bit(D3DFORMAT type);
|
||||
|
||||
// GrD3DRender functions
|
||||
void gr_d3d_set_state( gr_texture_source ts, gr_alpha_blend ab, gr_zbuffer_type zt );
|
||||
|
||||
// GrD3DTexture functions
|
||||
|
||||
// GrD3DCall functions
|
||||
void d3d_reset_render_states();
|
||||
HRESULT d3d_SetRenderState( D3DRENDERSTATETYPE render_state_type, DWORD render_state );
|
||||
HRESULT d3d_DrawPrimitive(int vertex_type, D3DPRIMITIVETYPE prim_type, LPVOID pvertices, DWORD vertex_count);
|
||||
void d3d_reset_texture_stage_states();
|
||||
HRESULT d3d_SetTextureStageState(DWORD stage, D3DTEXTURESTAGESTATETYPE type, DWORD value);
|
||||
void d3d_lost_device();
|
||||
HRESULT d3d_SetTexture(int stage, IDirect3DBaseTexture8* texture_ptr);
|
||||
|
||||
#endif //_GRD3DINTERNAL_H
|
||||
+1167
-560
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -9,13 +9,42 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/GrDirectDraw.cpp $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-01-14 05:53:58 $
|
||||
* $Author: Goober5000 $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-03-18 10:07:02 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Code for software 8-bpp rendering using DirectDraw
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.2 2003/01/14 05:53:58 Goober5000
|
||||
* commented out some mprintfs that were clogging up the debug spew
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.1.2.4 2002/11/04 16:04:21 randomtiger
|
||||
*
|
||||
* Tided up some bumpman stuff and added a few function points to gr_screen. - RT
|
||||
*
|
||||
* Revision 2.1.2.3 2002/11/04 03:02:29 randomtiger
|
||||
*
|
||||
* I have made some fairly drastic changes to the bumpman system. Now functionality can be engine dependant.
|
||||
* This is so D3D8 can call its own loading code that will allow good efficient loading and use of textures that it desparately needs without
|
||||
* turning bumpman.cpp into a total hook infested nightmare. Note the new bumpman code is still relying on a few of the of the old functions and all of the old bumpman arrays.
|
||||
*
|
||||
* I have done this by adding to the gr_screen list of function pointers that are set up by the engines init functions.
|
||||
* I have named the define calls the same name as the original 'bm_' functions so that I havent had to change names all through the code.
|
||||
*
|
||||
* Rolled back to an old version of bumpman and made a few changes.
|
||||
* Added new files: grd3dbumpman.cpp and .h
|
||||
* Moved the bitmap init function to after the 3D engine is initialised
|
||||
* Added includes where needed
|
||||
* Disabled (for now) the D3D8 TGA loading - RT
|
||||
*
|
||||
* Revision 2.1.2.2 2002/09/24 18:56:43 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -1286,6 +1315,34 @@ NoDDError:
|
||||
// set clear color
|
||||
gr_screen.gf_set_clear_color = gr_directdraw_set_clear_color;
|
||||
|
||||
// now for the bitmap functions
|
||||
gr_screen.gf_bm_get_next_handle = bm_gfx_get_next_handle;
|
||||
gr_screen.gf_bm_close = bm_gfx_close;
|
||||
gr_screen.gf_bm_init = bm_gfx_init;
|
||||
gr_screen.gf_bm_get_frame_usage = bm_gfx_get_frame_usage;
|
||||
gr_screen.gf_bm_create = bm_gfx_create;
|
||||
gr_screen.gf_bm_load = bm_gfx_load;
|
||||
gr_screen.gf_bm_load_duplicate = bm_gfx_load_duplicate;
|
||||
gr_screen.gf_bm_load_animation = bm_gfx_load_animation;
|
||||
gr_screen.gf_bm_get_info = bm_gfx_get_info;
|
||||
gr_screen.gf_bm_lock = bm_gfx_lock;
|
||||
gr_screen.gf_bm_unlock = bm_gfx_unlock;
|
||||
gr_screen.gf_bm_get_palette = bm_gfx_get_palette;
|
||||
gr_screen.gf_bm_release = bm_gfx_release;
|
||||
gr_screen.gf_bm_unload = bm_gfx_unload;
|
||||
gr_screen.gf_bm_unload_all = bm_gfx_unload_all;
|
||||
gr_screen.gf_bm_page_in_texture = bm_gfx_page_in_texture;
|
||||
gr_screen.gf_bm_page_in_start = bm_gfx_page_in_start;
|
||||
gr_screen.gf_bm_page_in_stop = bm_gfx_page_in_stop;
|
||||
gr_screen.gf_bm_get_cache_slot = bm_gfx_get_cache_slot;
|
||||
gr_screen.gf_bm_24_to_16 = bm_gfx_24_to_16;
|
||||
gr_screen.gf_bm_get_components = bm_gfx_get_components;
|
||||
gr_screen.gf_bm_get_section_size = bm_gfx_get_section_size;
|
||||
|
||||
gr_screen.gf_bm_page_in_nondarkening_texture = bm_gfx_page_in_nondarkening_texture;
|
||||
gr_screen.gf_bm_page_in_xparent_texture = bm_gfx_page_in_xparent_texture;
|
||||
gr_screen.gf_bm_page_in_aabitmap = bm_gfx_page_in_aabitmap;
|
||||
|
||||
gr_lock();
|
||||
|
||||
mprintf(( "Surfaces locked...\n" ));
|
||||
|
||||
@@ -9,13 +9,42 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/GrGlide.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.4 $
|
||||
* $Date: 2003-07-04 02:27:48 $
|
||||
* $Author: phreak $
|
||||
*
|
||||
* Code that uses 3DFX's Glide graphics library
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.3 2003/03/18 10:07:02 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.2 2003/03/02 05:43:49 penguin
|
||||
* ANSI C++ - fixed non-compliant casts to unsigned short and unsigned char
|
||||
* - penguin
|
||||
*
|
||||
* Revision 2.1.2.2 2002/11/04 16:04:21 randomtiger
|
||||
*
|
||||
* Tided up some bumpman stuff and added a few function points to gr_screen. - RT
|
||||
*
|
||||
* Revision 2.1.2.1 2002/11/04 03:02:29 randomtiger
|
||||
*
|
||||
* I have made some fairly drastic changes to the bumpman system. Now functionality can be engine dependant.
|
||||
* This is so D3D8 can call its own loading code that will allow good efficient loading and use of textures that it desparately needs without
|
||||
* turning bumpman.cpp into a total hook infested nightmare. Note the new bumpman code is still relying on a few of the of the old functions and all of the old bumpman arrays.
|
||||
*
|
||||
* I have done this by adding to the gr_screen list of function pointers that are set up by the engines init functions.
|
||||
* I have named the define calls the same name as the original 'bm_' functions so that I havent had to change names all through the code.
|
||||
*
|
||||
* Rolled back to an old version of bumpman and made a few changes.
|
||||
* Added new files: grd3dbumpman.cpp and .h
|
||||
* Moved the bitmap init function to after the 3D engine is initialised
|
||||
* Added includes where needed
|
||||
* Disabled (for now) the D3D8 TGA loading - RT
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:22 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -2170,9 +2199,9 @@ void gr_glide_set_palette(ubyte *new_palette, int force_flag )
|
||||
void gr_glide_init_color(color *c, int r, int g, int b)
|
||||
{
|
||||
c->screen_sig = gr_screen.signature;
|
||||
c->red = unsigned char(r);
|
||||
c->green = unsigned char(g);
|
||||
c->blue = unsigned char(b);
|
||||
c->red = (unsigned char)(r);
|
||||
c->green = (unsigned char)(g);
|
||||
c->blue = (unsigned char)(b);
|
||||
c->alpha = 255;
|
||||
c->ac_type = AC_TYPE_NONE;
|
||||
c->alphacolor = -1;
|
||||
@@ -2189,7 +2218,7 @@ void gr_glide_init_alphacolor( color *clr, int r, int g, int b, int alpha, int t
|
||||
|
||||
gr_glide_init_color( clr, r, g, b );
|
||||
|
||||
clr->alpha = unsigned char(alpha);
|
||||
clr->alpha = (unsigned char)(alpha);
|
||||
clr->ac_type = (ubyte)type;
|
||||
clr->alphacolor = -1;
|
||||
clr->is_alphacolor = 1;
|
||||
@@ -3533,6 +3562,13 @@ void gr_glide_cross_fade(int bmap1, int bmap2, int x1, int y1, int x2, int y2, f
|
||||
|
||||
GrHwConfiguration hwconfig;
|
||||
|
||||
void gr_glide_push_texture_matrix(int unit)
|
||||
{}
|
||||
void gr_glide_pop_texture_matrix(int unit)
|
||||
{}
|
||||
void gr_glide_translate_texture_matrix(int unit, vector *shift)
|
||||
{}
|
||||
|
||||
void gr_glide_init()
|
||||
{
|
||||
D3D_enabled = 1;
|
||||
@@ -3756,6 +3792,39 @@ void gr_glide_init()
|
||||
// set clear color
|
||||
gr_screen.gf_set_clear_color = gr_glide_set_clear_color;
|
||||
|
||||
// now for the bitmap functions
|
||||
gr_screen.gf_bm_get_next_handle = bm_gfx_get_next_handle;
|
||||
gr_screen.gf_bm_close = bm_gfx_close;
|
||||
gr_screen.gf_bm_init = bm_gfx_init;
|
||||
gr_screen.gf_bm_get_frame_usage = bm_gfx_get_frame_usage;
|
||||
gr_screen.gf_bm_create = bm_gfx_create;
|
||||
gr_screen.gf_bm_load = bm_gfx_load;
|
||||
gr_screen.gf_bm_load_duplicate = bm_gfx_load_duplicate;
|
||||
gr_screen.gf_bm_load_animation = bm_gfx_load_animation;
|
||||
gr_screen.gf_bm_get_info = bm_gfx_get_info;
|
||||
gr_screen.gf_bm_lock = bm_gfx_lock;
|
||||
gr_screen.gf_bm_unlock = bm_gfx_unlock;
|
||||
gr_screen.gf_bm_get_palette = bm_gfx_get_palette;
|
||||
gr_screen.gf_bm_release = bm_gfx_release;
|
||||
gr_screen.gf_bm_unload = bm_gfx_unload;
|
||||
gr_screen.gf_bm_unload_all = bm_gfx_unload_all;
|
||||
gr_screen.gf_bm_page_in_texture = bm_gfx_page_in_texture;
|
||||
gr_screen.gf_bm_page_in_start = bm_gfx_page_in_start;
|
||||
gr_screen.gf_bm_page_in_stop = bm_gfx_page_in_stop;
|
||||
gr_screen.gf_bm_get_cache_slot = bm_gfx_get_cache_slot;
|
||||
gr_screen.gf_bm_24_to_16 = bm_gfx_24_to_16;
|
||||
gr_screen.gf_bm_get_components = bm_gfx_get_components;
|
||||
gr_screen.gf_bm_get_section_size = bm_gfx_get_section_size;
|
||||
|
||||
gr_screen.gf_bm_page_in_nondarkening_texture = bm_gfx_page_in_nondarkening_texture;
|
||||
gr_screen.gf_bm_page_in_xparent_texture = bm_gfx_page_in_xparent_texture;
|
||||
gr_screen.gf_bm_page_in_aabitmap = bm_gfx_page_in_aabitmap;
|
||||
|
||||
gr_screen.gf_push_texture_matrix = gr_glide_push_texture_matrix;
|
||||
gr_screen.gf_pop_texture_matrix = gr_glide_pop_texture_matrix;
|
||||
gr_screen.gf_translate_texture_matrix = gr_glide_translate_texture_matrix;
|
||||
|
||||
|
||||
Glide_running=1;
|
||||
|
||||
// default linear fog table
|
||||
|
||||
@@ -9,13 +9,31 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/GrGlideTexture.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-03-18 10:07:02 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Code to manage Glide texture RAM
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1.2.1 2002/11/04 03:02:29 randomtiger
|
||||
*
|
||||
* I have made some fairly drastic changes to the bumpman system. Now functionality can be engine dependant.
|
||||
* This is so D3D8 can call its own loading code that will allow good efficient loading and use of textures that it desparately needs without
|
||||
* turning bumpman.cpp into a total hook infested nightmare. Note the new bumpman code is still relying on a few of the of the old functions and all of the old bumpman arrays.
|
||||
*
|
||||
* I have done this by adding to the gr_screen list of function pointers that are set up by the engines init functions.
|
||||
* I have named the define calls the same name as the original 'bm_' functions so that I havent had to change names all through the code.
|
||||
*
|
||||
* Rolled back to an old version of bumpman and made a few changes.
|
||||
* Added new files: grd3dbumpman.cpp and .h
|
||||
* Moved the bitmap init function to after the 3D engine is initialised
|
||||
* Added includes where needed
|
||||
* Disabled (for now) the D3D8 TGA loading - RT
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:22 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -947,8 +965,6 @@ DCF(exp_flush, "")
|
||||
Glide_explosion_vram = 0;
|
||||
}
|
||||
|
||||
extern int bm_get_cache_slot( int bitmap_id, int separate_ani_frames );
|
||||
|
||||
// Returns FALSE if error
|
||||
int glide_tcache_set( int bitmap_id, int bitmap_type, float *u_ratio, float *v_ratio, int fail_on_full, int sx, int sy, int force )
|
||||
{
|
||||
|
||||
+1138
-310
File diff suppressed because it is too large.
Load diff
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/GrOpenGL.h $
|
||||
* $Revision: 2.0 $
|
||||
* $Date: 2002-06-03 04:02:23 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2003-03-07 00:15:45 $
|
||||
* $Author: phreak $
|
||||
*
|
||||
* Include file for OpenGL renderer
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.0 2002/06/03 04:02:23 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
* Revision 1.1 2002/05/02 18:03:07 mharris
|
||||
* Initial checkin - converted filenames and includes to lower case
|
||||
*
|
||||
@@ -36,8 +39,8 @@
|
||||
#ifndef _GROPENGL_H
|
||||
#define _GROPENGL_H
|
||||
|
||||
void gr_opengl_init();
|
||||
void gr_opengl_cleanup();
|
||||
void gr_opengl_init(int reinit=0);
|
||||
void gr_opengl_cleanup(int minimize=1);
|
||||
|
||||
void gr_opengl_bitmap(int x, int y);
|
||||
void gr_opengl_bitmap_ex(int x, int y, int w, int h, int sx, int sy);
|
||||
|
||||
@@ -9,13 +9,42 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/GrSoft.cpp $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.5 $
|
||||
* $Date: 2003-07-04 02:27:48 $
|
||||
* $Author: phreak $
|
||||
*
|
||||
* Code for our software renderer using standard Win32 functions. (Dibsections, etc)
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.4 2003/03/18 10:07:02 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.3 2003/03/02 05:43:49 penguin
|
||||
* ANSI C++ - fixed non-compliant casts to unsigned short and unsigned char
|
||||
* - penguin
|
||||
*
|
||||
* Revision 2.2.2.2 2002/11/04 16:04:21 randomtiger
|
||||
*
|
||||
* Tided up some bumpman stuff and added a few function points to gr_screen. - RT
|
||||
*
|
||||
* Revision 2.2.2.1 2002/11/04 03:02:29 randomtiger
|
||||
*
|
||||
* I have made some fairly drastic changes to the bumpman system. Now functionality can be engine dependant.
|
||||
* This is so D3D8 can call its own loading code that will allow good efficient loading and use of textures that it desparately needs without
|
||||
* turning bumpman.cpp into a total hook infested nightmare. Note the new bumpman code is still relying on a few of the of the old functions and all of the old bumpman arrays.
|
||||
*
|
||||
* I have done this by adding to the gr_screen list of function pointers that are set up by the engines init functions.
|
||||
* I have named the define calls the same name as the original 'bm_' functions so that I havent had to change names all through the code.
|
||||
*
|
||||
* Rolled back to an old version of bumpman and made a few changes.
|
||||
* Added new files: grd3dbumpman.cpp and .h
|
||||
* Moved the bitmap init function to after the 3D engine is initialised
|
||||
* Added includes where needed
|
||||
* Disabled (for now) the D3D8 TGA loading - RT
|
||||
*
|
||||
* Revision 2.2 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.1 2002/07/07 19:55:59 penguin
|
||||
* Back-port to MSVC
|
||||
*
|
||||
@@ -392,6 +421,7 @@
|
||||
#include "io/timer.h"
|
||||
#include "graphics/colors.h"
|
||||
#include "graphics/bitblt.h"
|
||||
#include "bmpman/bmpman.h"
|
||||
|
||||
#ifdef _WIN32
|
||||
// Windows specific
|
||||
@@ -567,7 +597,7 @@ void gr_buffer_create( int w, int h, int bpp )
|
||||
Gr_blue.mask = 0xff;
|
||||
|
||||
DibInfo.Header.biCompression = BI_RGB;
|
||||
DibInfo.Header.biBitCount = unsigned short(bpp);
|
||||
DibInfo.Header.biBitCount = (unsigned short)(bpp);
|
||||
break;
|
||||
|
||||
default:
|
||||
@@ -1524,6 +1554,13 @@ void gr8_set_gamma(float gamma)
|
||||
gr_screen.signature = Gr_signature++;
|
||||
}
|
||||
|
||||
void gr_grx_push_texture_matrix(int unit)
|
||||
{}
|
||||
void gr_grx_pop_texture_matrix(int unit)
|
||||
{}
|
||||
void gr_grx_translate_texture_matrix(int unit, vector *shift)
|
||||
{}
|
||||
|
||||
void gr_soft_init()
|
||||
{
|
||||
// int i;
|
||||
@@ -1684,6 +1721,38 @@ void gr_soft_init()
|
||||
// set clear color
|
||||
gr_screen.gf_set_clear_color = gr_soft_set_clear_color;
|
||||
|
||||
// now for the bitmap functions
|
||||
gr_screen.gf_bm_get_next_handle = bm_gfx_get_next_handle;
|
||||
gr_screen.gf_bm_close = bm_gfx_close;
|
||||
gr_screen.gf_bm_init = bm_gfx_init;
|
||||
gr_screen.gf_bm_get_frame_usage = bm_gfx_get_frame_usage;
|
||||
gr_screen.gf_bm_create = bm_gfx_create;
|
||||
gr_screen.gf_bm_load = bm_gfx_load;
|
||||
gr_screen.gf_bm_load_duplicate = bm_gfx_load_duplicate;
|
||||
gr_screen.gf_bm_load_animation = bm_gfx_load_animation;
|
||||
gr_screen.gf_bm_get_info = bm_gfx_get_info;
|
||||
gr_screen.gf_bm_lock = bm_gfx_lock;
|
||||
gr_screen.gf_bm_unlock = bm_gfx_unlock;
|
||||
gr_screen.gf_bm_get_palette = bm_gfx_get_palette;
|
||||
gr_screen.gf_bm_release = bm_gfx_release;
|
||||
gr_screen.gf_bm_unload = bm_gfx_unload;
|
||||
gr_screen.gf_bm_unload_all = bm_gfx_unload_all;
|
||||
gr_screen.gf_bm_page_in_texture = bm_gfx_page_in_texture;
|
||||
gr_screen.gf_bm_page_in_start = bm_gfx_page_in_start;
|
||||
gr_screen.gf_bm_page_in_stop = bm_gfx_page_in_stop;
|
||||
gr_screen.gf_bm_get_cache_slot = bm_gfx_get_cache_slot;
|
||||
gr_screen.gf_bm_24_to_16 = bm_gfx_24_to_16;
|
||||
gr_screen.gf_bm_get_components = bm_gfx_get_components;
|
||||
gr_screen.gf_bm_get_section_size = bm_gfx_get_section_size;
|
||||
|
||||
gr_screen.gf_bm_page_in_nondarkening_texture = bm_gfx_page_in_nondarkening_texture;
|
||||
gr_screen.gf_bm_page_in_xparent_texture = bm_gfx_page_in_xparent_texture;
|
||||
gr_screen.gf_bm_page_in_aabitmap = bm_gfx_page_in_aabitmap;
|
||||
|
||||
gr_screen.gf_push_texture_matrix = gr_grx_push_texture_matrix;
|
||||
gr_screen.gf_pop_texture_matrix = gr_grx_pop_texture_matrix;
|
||||
gr_screen.gf_translate_texture_matrix = gr_grx_translate_texture_matrix;
|
||||
|
||||
gr_reset_clip();
|
||||
gr_clear();
|
||||
gr_flip();
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/Scaler.cpp $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-03-02 05:45:04 $
|
||||
* $Author: penguin $
|
||||
*
|
||||
* Routines to scale a bitmap.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.2 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.1 2002/07/07 19:55:59 penguin
|
||||
* Back-port to MSVC
|
||||
*
|
||||
@@ -817,8 +820,9 @@ void gr8_scaler(vertex *va, vertex *vb )
|
||||
spixels = (ubyte *)bp->data;
|
||||
|
||||
gr_lock();
|
||||
#ifndef NO_SOFTWARE_RENDERING
|
||||
Tmap.pScreenBits = (uint)gr_screen.offscreen_buffer_base;
|
||||
|
||||
#endif
|
||||
uint *zbuf;
|
||||
|
||||
for (y=dy0; y<=dy1; v += dv, y++ ) {
|
||||
@@ -836,7 +840,8 @@ void gr8_scaler(vertex *va, vertex *vb )
|
||||
}
|
||||
|
||||
if ( Gr_scaler_zbuffering && gr_zbuffering ) {
|
||||
zbuf = (uint *)&gr_zbuffer[(uint)dbits-(uint)Tmap.pScreenBits];
|
||||
// zbuf = (uint *)&gr_zbuffer[(uint)dbits-(uint)Tmap.pScreenBits];
|
||||
zbuf = (uint *)&gr_zbuffer[(uint)dbits-(uint)gr_screen.offscreen_buffer_base];
|
||||
}
|
||||
|
||||
#ifdef USE_COMPILED_CODE
|
||||
@@ -876,7 +881,7 @@ void gr8_scaler(vertex *va, vertex *vb )
|
||||
}
|
||||
*/
|
||||
|
||||
#ifdef _WIN32
|
||||
#if defined _WIN32 && defined _MSC_VER
|
||||
_asm push esi
|
||||
_asm push edi
|
||||
_asm push edx
|
||||
@@ -898,8 +903,33 @@ void gr8_scaler(vertex *va, vertex *vb )
|
||||
_asm pop edx
|
||||
_asm pop edi
|
||||
_asm pop esi
|
||||
#elif defined __GNUC__
|
||||
asm(
|
||||
"push %%esi;"
|
||||
"push %%edi;"
|
||||
"push %%edx;"
|
||||
"push %%ecx;"
|
||||
"push %%ebx;"
|
||||
"push %%eax;"
|
||||
"mov %0,%%ecx;" // lookup
|
||||
"mov %1,%%esi;" // sbits
|
||||
"mov %2,%%edi;" // dbits
|
||||
"mov %3,%%eax;" // cc
|
||||
"mov %4,%%edx;" // zbuf
|
||||
"push %%ebp;"
|
||||
"mov %5,%%ebp;" // Gr_global_z
|
||||
"call *%%eax;"
|
||||
"pop %%ebp;"
|
||||
"pop %%eax;"
|
||||
"pop %%ebx;"
|
||||
"pop %%ecx;"
|
||||
"pop %%edx;"
|
||||
"pop %%edi;"
|
||||
"pop %%esi;"
|
||||
: /* no outputs */
|
||||
: "g" (lookup), "g" (sbits), "g" (dbits), "g" (cc), "g" (zbuf), "g" (Gr_global_z));
|
||||
#else
|
||||
#warning not implemented
|
||||
#error asm not implemented
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
@@ -1100,7 +1130,8 @@ void gr8_aascaler(vertex *va, vertex *vb )
|
||||
int x, tmp_u;
|
||||
tmp_u = u;
|
||||
|
||||
uint *zbuf = (uint *)&gr_zbuffer[(uint)dbits-(uint)Tmap.pScreenBits];
|
||||
// uint *zbuf = (uint *)&gr_zbuffer[(uint)dbits-(uint)Tmap.pScreenBits];
|
||||
uint *zbuf = (uint *)&gr_zbuffer[(uint)dbits-(uint)gr_screen.offscreen_buffer_base];
|
||||
|
||||
for (x=0; x<w; x++ ) {
|
||||
if ( fx_w > *zbuf ) {
|
||||
@@ -1113,7 +1144,7 @@ void gr8_aascaler(vertex *va, vertex *vb )
|
||||
tmp_u += du;
|
||||
}
|
||||
} else {
|
||||
#ifdef _WIN32
|
||||
#if defined _WIN32 && defined _MSC_VER
|
||||
_asm push esi
|
||||
_asm push edi
|
||||
_asm push ecx
|
||||
@@ -1129,8 +1160,27 @@ void gr8_aascaler(vertex *va, vertex *vb )
|
||||
_asm pop ecx
|
||||
_asm pop edi
|
||||
_asm pop esi
|
||||
#elif defined __GNUC__
|
||||
asm(
|
||||
"push %%esi;"
|
||||
"push %%edi;"
|
||||
"push %%ecx;"
|
||||
"push %%ebx;"
|
||||
"push %%eax;"
|
||||
"mov %0,%%ecx;" // lookup
|
||||
"mov %1,%%esi;" // sbits
|
||||
"mov %2,%%edi;" // dbits
|
||||
"mov %3,%%eax;" // cc
|
||||
"call *%%eax;"
|
||||
"pop %%eax;"
|
||||
"pop %%ebx;"
|
||||
"pop %%ecx;"
|
||||
"pop %%edi;"
|
||||
"pop %%esi;"
|
||||
: /* no outputs */
|
||||
: "g" (lookup), "g" (sbits), "g" (dbits), "g" (cc));
|
||||
#else
|
||||
#warning not implemented
|
||||
#error asm not implemented
|
||||
#endif
|
||||
}
|
||||
#else
|
||||
@@ -1138,7 +1188,8 @@ void gr8_aascaler(vertex *va, vertex *vb )
|
||||
int x, tmp_u;
|
||||
tmp_u = u;
|
||||
|
||||
uint *zbuf = (uint *)&gr_zbuffer[(uint)dbits-(uint)Tmap.pScreenBits];
|
||||
// uint *zbuf = (uint *)&gr_zbuffer[(uint)dbits-(uint)Tmap.pScreenBits];
|
||||
uint *zbuf = (uint *)&gr_zbuffer[(uint)dbits-(uint)gr_screen.offscreen_buffer_base];
|
||||
|
||||
for (x=0; x<w; x++ ) {
|
||||
if ( fx_w > *zbuf ) {
|
||||
|
||||
@@ -9,13 +9,16 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/Shade.cpp $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-03-02 05:40:28 $
|
||||
* $Author: penguin $
|
||||
*
|
||||
* Routines to shade an area.
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.2 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.1 2002/07/07 19:55:59 penguin
|
||||
* Back-port to MSVC
|
||||
*
|
||||
@@ -197,7 +200,7 @@ void gr8_shade(int x,int y,int w,int h)
|
||||
int left_over = w1 % 4;
|
||||
|
||||
if ( wd4 > 0 ) {
|
||||
#ifdef _WIN32
|
||||
#if defined _WIN32 && !defined __GNUC__
|
||||
_asm push eax
|
||||
_asm push ebx
|
||||
_asm push ecx
|
||||
@@ -248,7 +251,8 @@ void gr8_shade(int x,int y,int w,int h)
|
||||
_asm pop ebx
|
||||
_asm pop eax
|
||||
#else
|
||||
#warning not implemented
|
||||
#warning asm not implemented
|
||||
Error(LOCATION, "asm not implemented");
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
@@ -9,13 +9,20 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Graphics/TMAPPER.H $
|
||||
* $Revision: 2.0 $
|
||||
* $Date: 2002-06-03 04:02:23 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2003-03-18 10:07:02 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* Header file for Tmapper.h
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.0.2.1 2002/11/11 21:26:04 randomtiger
|
||||
*
|
||||
* Tided up D3DX8 calls, did some documentation and add new file: grd3dcalls.cpp. - RT
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:23 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
* Revision 1.1 2002/05/02 18:03:07 mharris
|
||||
* Initial checkin - converted filenames and includes to lower case
|
||||
*
|
||||
@@ -127,4 +134,14 @@ extern void grx_tmapper( int nv, vertex * verts[], uint flags );
|
||||
// bitmap section
|
||||
#define TMAP_FLAG_BITMAP_SECTION (1<<11)
|
||||
|
||||
// RT Flags added to determine whats being drawn for HT&L
|
||||
#define TMAP_FLAG_TYPE_2D_HUD (1<<12)
|
||||
#define TMAP_FLAG_TYPE_3D (1<<13)
|
||||
#define TMAP_FLAG_TYPE_2D_3D (1<<14)
|
||||
#define TMAP_FLAG_TYPE_2D_2D (1<<15)
|
||||
|
||||
#define TMAP_FLAG_TYPE_SUN (1<<16)
|
||||
#define TMAP_FLAG_TYPE_PARTICLE (1<<17)
|
||||
#define TMAP_FLAG_TYPE_THRUSTPNT (1<<18)
|
||||
|
||||
#endif
|
||||
+58
-13
@@ -9,13 +9,38 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Hud/HUD.cpp $
|
||||
* $Revision: 2.4 $
|
||||
* $Date: 2003-01-19 07:02:15 $
|
||||
* $Revision: 2.10 $
|
||||
* $Date: 2003-09-13 20:59:54 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* C module that contains all the HUD functions at a high level
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.9 2003/08/21 08:31:24 Goober5000
|
||||
* fixed turret text display for non-laser weapons
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.8 2003/06/11 02:59:48 phreak
|
||||
* local ssm stuff for hud.
|
||||
* they are always in lock range due to the subspace drive on them
|
||||
* they also can't be targeted when in stage 3.
|
||||
*
|
||||
* Revision 2.7 2003/05/21 20:27:07 phreak
|
||||
* hud is drawn when in chase camera for player
|
||||
*
|
||||
* Revision 2.6 2003/04/29 01:03:23 Goober5000
|
||||
* implemented the custom hitpoints mod
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.5 2003/03/18 10:07:03 unknownplayer
|
||||
* The big DX/main line merge. This has been uploaded to the main CVS since I can't manage to get it to upload to the DX branch. Apologies to all who may be affected adversely, but I'll work to debug it as fast as I can.
|
||||
*
|
||||
* Revision 2.4 2003/01/19 07:02:15 Goober5000
|
||||
* fixed a bunch of bugs - "no-subspace-drive" should now work properly for
|
||||
* all ships, and all ships who have their departure anchor set to a capital ship
|
||||
* should exit to that ship when told to depart
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.3 2003/01/17 07:59:09 Goober5000
|
||||
* fixed some really strange behavior with strings not being truncated at the
|
||||
* # symbol
|
||||
@@ -25,6 +50,11 @@
|
||||
* Added ability to remove HUD ingame on keypress shift O
|
||||
* So I've added a new key to the bind list and made use of already existing hud removal code.
|
||||
*
|
||||
* Revision 2.1.2.1 2002/11/09 19:28:15 randomtiger
|
||||
*
|
||||
* Fixed small gfx initialisation bug that wasnt actually causing any problems.
|
||||
* Tided DX code, shifted stuff around, removed some stuff and documented some stuff.
|
||||
*
|
||||
* Revision 2.1 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -1179,7 +1209,7 @@ void hud_update_frame()
|
||||
// frame, only calculate once here
|
||||
if ( target_shipp ) {
|
||||
float initial_hull;
|
||||
initial_hull = Ship_info[target_shipp->ship_info_index].initial_hull_strength;
|
||||
initial_hull = target_shipp->ship_initial_hull_strength;
|
||||
if ( initial_hull <= 0 ) {
|
||||
Int3(); // illegal initial hull strength
|
||||
Pl_target_integrity = 0.0f;
|
||||
@@ -1226,7 +1256,7 @@ void hud_show_radar()
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(Viewer_mode & (VM_EXTERNAL | VM_SLEWED | VM_CHASE | VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY ))) {
|
||||
if (!(Viewer_mode & (VM_EXTERNAL | VM_SLEWED | /*VM_CHASE |*/ VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY ))) {
|
||||
if ( Game_detail_flags & DETAIL_FLAG_HUD ) {
|
||||
if ( hud_gauge_active(HUD_RADAR) ) {
|
||||
HUD_reset_clip();
|
||||
@@ -1244,8 +1274,9 @@ void hud_show_target_model()
|
||||
}
|
||||
|
||||
// display the miniature model of the target in the target box and shade
|
||||
// RT Might be faster to use full detail model
|
||||
if ( Game_detail_flags & DETAIL_FLAG_HUD ) {
|
||||
if (!(Viewer_mode & (VM_EXTERNAL | VM_SLEWED | VM_CHASE | VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY)))
|
||||
if (!(Viewer_mode & (VM_EXTERNAL | VM_SLEWED | /*VM_CHASE |*/ VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY)))
|
||||
hud_render_target_model();
|
||||
}
|
||||
}
|
||||
@@ -1277,7 +1308,7 @@ void HUD_render_3d(float frametime)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(Viewer_mode & (VM_EXTERNAL | VM_SLEWED | VM_CHASE | VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY))) {
|
||||
if (!(Viewer_mode & (VM_EXTERNAL | VM_SLEWED |/* VM_CHASE |*/ VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY))) {
|
||||
|
||||
hud_show_common_3d_gauges(frametime, 1);
|
||||
|
||||
@@ -1287,7 +1318,7 @@ void HUD_render_3d(float frametime)
|
||||
hud_show_homing_missiles();
|
||||
}
|
||||
|
||||
} else if ( Viewer_mode & (VM_CHASE | VM_EXTERNAL | VM_WARP_CHASE | VM_PADLOCK_ANY ) ) {
|
||||
} else if ( Viewer_mode & (/*VM_CHASE |*/ VM_EXTERNAL | VM_WARP_CHASE | VM_PADLOCK_ANY ) ) {
|
||||
// If the player is warping out, don't draw the targeting gauges
|
||||
Assert(Player != NULL);
|
||||
if ( Player->control_mode != PCM_NORMAL ) {
|
||||
@@ -1322,7 +1353,7 @@ void hud_maybe_show_damage()
|
||||
if ( hud_gauge_active(HUD_DAMAGE_GAUGE) ) {
|
||||
int show_gauge_flag;
|
||||
|
||||
if ( (Ship_info[Player_ship->ship_info_index].initial_hull_strength - Player_obj->hull_strength) > 1.0f ) {
|
||||
if ( (Player_ship->ship_initial_hull_strength - Player_obj->hull_strength) > 1.0f ) {
|
||||
show_gauge_flag = 1;
|
||||
} else {
|
||||
show_gauge_flag = 0;
|
||||
@@ -1354,7 +1385,7 @@ void hud_damage_popup_toggle()
|
||||
|
||||
// if gauge is popup, turn it off if it is current up, otherwise force it to be up
|
||||
if ( hud_gauge_is_popup(HUD_DAMAGE_GAUGE) ) {
|
||||
if ( Player_obj->hull_strength == Ship_info[Player_ship->ship_info_index].initial_hull_strength ) {
|
||||
if ( Player_obj->hull_strength == Player_ship->ship_initial_hull_strength ) {
|
||||
hud_config_set_gauge_flags(HUD_DAMAGE_GAUGE,1,0);
|
||||
} else {
|
||||
hud_config_set_gauge_flags(HUD_DAMAGE_GAUGE,0,0);
|
||||
@@ -1447,7 +1478,7 @@ void hud_maybe_display_supernova()
|
||||
}
|
||||
|
||||
gr_set_color_fast(&Color_bright_red);
|
||||
gr_printf(Supernova_coords[gr_screen.res][0], Supernova_coords[gr_screen.res][1], "Supernova Warning : %.2f s", time_left);
|
||||
gr_printf(Supernova_coords[gr_screen.res][0], Supernova_coords[gr_screen.res][1], "Supernova Warning: %.2f s", time_left);
|
||||
}
|
||||
|
||||
#ifndef NO_NETWORK
|
||||
@@ -1488,6 +1519,19 @@ void HUD_render_2d(float frametime)
|
||||
|
||||
HUD_reset_clip();
|
||||
|
||||
//make sure that the player isn't targeting a 3rd stage local ssm
|
||||
if (Player_ai->target_objnum > -1)
|
||||
{
|
||||
if (Objects[Player_ai->target_objnum].type == OBJ_WEAPON)
|
||||
{
|
||||
if (Weapons[Objects[Player_ai->target_objnum].instance].lssm_stage==3)
|
||||
{
|
||||
set_target_objnum( Player_ai, -1 );
|
||||
hud_lock_reset();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
// show some scoring debug stuff
|
||||
{
|
||||
@@ -1499,7 +1543,8 @@ void HUD_render_2d(float frametime)
|
||||
return;
|
||||
}
|
||||
|
||||
if (!(Viewer_mode & (VM_EXTERNAL | VM_SLEWED | VM_CHASE | VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY ))) {
|
||||
if (!(Viewer_mode & (VM_EXTERNAL | VM_SLEWED |/* VM_CHASE |*/ VM_DEAD_VIEW | VM_WARP_CHASE | VM_PADLOCK_ANY ))) {
|
||||
|
||||
// display Energy Transfer System gauges
|
||||
if ( hud_gauge_active(HUD_ETS_GAUGE) ) {
|
||||
show_gauge_flag=1;
|
||||
@@ -2087,7 +2132,7 @@ void hud_start_text_flash(char *txt, int t)
|
||||
}
|
||||
|
||||
// HACK. don't override EMP if its still going :)
|
||||
if(!strcmp(Hud_text_flash, NOX("Emp")) && !hud_targetbox_flash_expired(TBOX_FLASH_CMEASURE)){
|
||||
if(!stricmp(Hud_text_flash, NOX("Emp")) && !hud_targetbox_flash_expired(TBOX_FLASH_CMEASURE)){
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2466,7 +2511,7 @@ void hud_support_view_blit()
|
||||
|
||||
show_time = 0;
|
||||
if ( Player_ai->ai_flags & AIF_BEING_REPAIRED ) {
|
||||
Assert(Ship_info[Player_ship->ship_info_index].initial_hull_strength > 0);
|
||||
Assert(Player_ship->ship_initial_hull_strength > 0);
|
||||
if ( (ship_get_subsystem_strength(Player_ship, SUBSYSTEM_ENGINE) < 1.0 ) ||
|
||||
(ship_get_subsystem_strength(Player_ship, SUBSYSTEM_SENSORS) < 1.0 ) ||
|
||||
(ship_get_subsystem_strength(Player_ship, SUBSYSTEM_WEAPONS) < 1.0 ) ||
|
||||
|
||||
@@ -9,12 +9,15 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Hud/HudArtillery.cpp $
|
||||
* $Revision: 2.1 $
|
||||
* $Date: 2002-08-01 01:41:05 $
|
||||
* $Author: penguin $
|
||||
* $Revision: 2.2 $
|
||||
* $Date: 2003-03-19 12:29:02 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.1 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
* Revision 2.0 2002/06/03 04:02:23 penguin
|
||||
* Warpcore CVS sync
|
||||
*
|
||||
@@ -53,6 +56,7 @@
|
||||
#include "playerman/player.h"
|
||||
#include "graphics/2d.h"
|
||||
#include "globalincs/alphacolors.h"
|
||||
#include "fireball/fireballs.h"
|
||||
|
||||
// -----------------------------------------------------------------------------------------------------------------------
|
||||
// ARTILLERY DEFINES/VARS
|
||||
|
||||
@@ -9,13 +9,22 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Hud/HUDconfig.cpp $
|
||||
* $Revision: 2.3 $
|
||||
* $Date: 2003-01-15 21:29:04 $
|
||||
* $Author: anonymous $
|
||||
* $Revision: 2.4 $
|
||||
* $Date: 2003-03-18 10:07:03 $
|
||||
* $Author: unknownplayer $
|
||||
*
|
||||
* C module to handle HUD configuration
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.3 2003/01/15 21:29:04 anonymous
|
||||
* fixed the demo compilation. Define FS2_DEMO globally to compile as a demo. Make sure warp.pof is in your data/models directory.
|
||||
*
|
||||
* Revision 2.2.2.1 2002/09/24 18:56:43 randomtiger
|
||||
* DX8 branch commit
|
||||
*
|
||||
* This is the scub of UP's previous code with the more up to date RT code.
|
||||
* For full details check previous dev e-mails
|
||||
*
|
||||
* Revision 2.2 2002/08/01 01:41:05 penguin
|
||||
* The big include file move
|
||||
*
|
||||
@@ -274,6 +283,7 @@
|
||||
#include "gamesnd/gamesnd.h"
|
||||
#include "globalincs/alphacolors.h"
|
||||
#include "popup/popup.h"
|
||||
#include "debugconsole/dbugfile.h"
|
||||
|
||||
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
@@ -9,13 +9,18 @@
|
||||
|
||||
/*
|
||||
* $Logfile: /Freespace2/code/Hud/HUDescort.cpp $
|
||||
* $Revision: 2.4 $
|
||||
* $Date: 2003-01-18 09:25:41 $
|
||||
* $Revision: 2.5 $
|
||||
* $Date: 2003-04-29 01:03:23 $
|
||||
* $Author: Goober5000 $
|
||||
*
|
||||
* C module for managing and displaying ships that are in an escort
|
||||
*
|
||||
* $Log: not supported by cvs2svn $
|
||||
* Revision 2.4 2003/01/18 09:25:41 Goober5000
|
||||
* fixed bug I inadvertently introduced by modifying SIF_ flags with sexps rather
|
||||
* than SF_ flags
|
||||
* --Goober5000
|
||||
*
|
||||
* Revision 2.3 2002/12/31 07:26:40 Goober5000
|
||||
* added damaged-escort-priority-all sexp
|
||||
* --Goober5000
|
||||
@@ -732,7 +737,7 @@ void hud_escort_show_icon_dogfight(int index)
|
||||
return;
|
||||
}
|
||||
|
||||
hull_integrity = (int)(((float)objp->hull_strength / (float)sip->initial_hull_strength) * 100.0f);
|
||||
hull_integrity = (int)(((float)objp->hull_strength / (float)Ships[objp->instance].ship_initial_hull_strength) * 100.0f);
|
||||
if(hull_integrity < 0){
|
||||
hull_integrity = 0;
|
||||
}
|
||||
|
||||
Loaded 100 of 245 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user